clone tasks

This commit is contained in:
maty-arch 2019-10-24 21:31:35 +02:00
parent 0fccf69e62
commit dc62abd766
7 changed files with 45 additions and 4 deletions

33
app/Http/Controllers/TaskController.php Normal file → Executable file
View File

@ -140,6 +140,12 @@ class TaskController extends BaseController
return View::make('tasks.edit', $data);
}
public function cloneTask(TaskRequest $request, $publicId)
{
return self::edit($request, $publicId, true);
}
/**
* Show the form for editing the specified resource.
*
@ -147,7 +153,7 @@ class TaskController extends BaseController
*
* @return \Illuminate\Contracts\View\View
*/
public function edit(TaskRequest $request)
public function edit(TaskRequest $request, $publicId, $clone = false)
{
$this->checkTimezone();
$task = $request->entity();
@ -172,19 +178,35 @@ class TaskController extends BaseController
$actions[] = DropdownButton::DIVIDER;
if (! $task->trashed()) {
if (! $clone) {
$actions[] = ['url' => 'javascript:submitAction("clone")', 'label' => trans("texts.clone_task")];
}
$actions[] = ['url' => 'javascript:submitAction("archive")', 'label' => trans('texts.archive_task')];
$actions[] = ['url' => 'javascript:onDeleteClick()', 'label' => trans('texts.delete_task')];
} else {
$actions[] = ['url' => 'javascript:submitAction("restore")', 'label' => trans('texts.restore_task')];
}
if ($clone) {
$task->id = null;
$task->public_id = null;
$task->deleted_at = null;
$method = 'POST';
$url = 'tasks';
}
else{
$method = 'PUT';
$url = 'tasks/'.$task->public_id;
}
$data = [
'task' => $task,
'entity' => $task,
'clientPublicId' => $task->client ? $task->client->public_id : 0,
'projectPublicId' => $task->project ? $task->project->public_id : 0,
'method' => 'PUT',
'url' => 'tasks/'.$task->public_id,
'method' => $method,
'url' => $url,
'title' => trans('texts.edit_task'),
'actions' => $actions,
'timezone' => Auth::user()->account->timezone ? Auth::user()->account->timezone->name : DEFAULT_TIMEZONE,
@ -229,8 +251,13 @@ class TaskController extends BaseController
*/
private function save($request, $publicId = null)
{
$action = Input::get('action');
if ( in_array($action, ['clone'])) {
return redirect()->to(sprintf('tasks/%s/clone', $publicId));
}
if (in_array($action, ['archive', 'delete', 'restore'])) {
return self::bulk();
}

View File

@ -85,6 +85,15 @@ class TaskDatatable extends EntityDatatable
return (! $model->deleted_at || $model->deleted_at == '0000-00-00') && Auth::user()->can('view', [ENTITY_TASK, $model]);
},
],
[
trans('texts.clone_task'),
function ($model) {
return URL::to("tasks/{$model->public_id}/clone");
},
function ($model) {
return Auth::user()->can('create', ENTITY_TASK);
},
],
[
trans('texts.view_invoice'),
function ($model) {

View File

@ -549,6 +549,7 @@ $LANG = array(
'created_task' => 'Successfully created task',
'updated_task' => 'Successfully updated task',
'edit_task' => 'Edit Task',
'clone_task' => 'Clone Task',
'archive_task' => 'Archive Task',
'restore_task' => 'Restore Task',
'delete_task' => 'Delete Task',

View File

@ -549,6 +549,7 @@ $LANG = array(
'created_task' => 'Successfully created task',
'updated_task' => 'Successfully updated task',
'edit_task' => 'Edit Task',
'clone_task' => 'Clone Task',
'archive_task' => 'Archive Task',
'restore_task' => 'Restore Task',
'delete_task' => 'Delete Task',

View File

@ -549,6 +549,7 @@ $LANG = array(
'created_task' => 'Successfully created task',
'updated_task' => 'Successfully updated task',
'edit_task' => 'Edit Task',
'clone_task' => 'Clone Task',
'archive_task' => 'Archive Task',
'restore_task' => 'Restore Task',
'delete_task' => 'Delete Task',

View File

@ -40,6 +40,7 @@
@endif
{!! Former::text('action') !!}
{!! Former::text('time_log') !!}
{!! Former::text('is_running') !!}
</div>
<div class="row" onkeypress="formEnterClick(event)">

View File

@ -183,6 +183,7 @@ Route::group(['middleware' => ['lookup:user', 'auth:user']], function () {
Route::delete('task_statuses/{task_status_id}', 'TaskKanbanController@deleteStatus');
Route::put('task_status_order/{task_id}', 'TaskKanbanController@updateTask');
Route::resource('tasks', 'TaskController');
Route::get('tasks/{tasks}/clone', 'TaskController@cloneTask');
Route::get('api/tasks/{client_id?}/{project_id?}', 'TaskController@getDatatable');
Route::get('tasks/create/{client_id?}/{project_id?}', 'TaskController@create');
Route::post('tasks/bulk', 'TaskController@bulk');