コード例 #1
0
 /**
  * Update status for the task when dragging in the kanban view
  */
 public function actionUpdateStatusOnDragInKanbanView($type)
 {
     $getData = GetUtil::getData();
     $counter = 1;
     $response = array();
     if (count($getData['items']) > 0) {
         foreach ($getData['items'] as $taskId) {
             if ($taskId != '') {
                 $kanbanItem = KanbanItem::getByTask(intval($taskId));
                 $task = Task::getById(intval($taskId));
                 //if kanban type is completed
                 if ($type == KanbanItem::TYPE_COMPLETED) {
                     //kanban update has to be done first
                     $kanbanItem->sortOrder = TasksUtil::resolveAndGetSortOrderForTaskOnKanbanBoard($type, $task);
                     $kanbanItem->type = intval($type);
                     $kanbanItem->save();
                     //set the scenario
                     $task->setScenario('kanbanViewDrag');
                     $this->processStatusUpdateViaAjax($task, Task::STATUS_COMPLETED, false);
                     $response['button'] = '';
                     $response['status'] = Task::getStatusDisplayName($task->status);
                     $response['owner'] = $task->owner->getFullName();
                     $subscriptionContent = TasksUtil::resolveAndRenderTaskCardDetailsSubscribersContent($task);
                     $subscriptionContent .= TasksUtil::resolveSubscriptionLink($task, 'subscribe-task-link', 'unsubscribe-task-link');
                     $response['subscriptionContent'] = $subscriptionContent;
                 } else {
                     //When in the same column
                     if ($type == $kanbanItem->type) {
                         $kanbanItem->sortOrder = $counter;
                         $kanbanItem->save();
                     } else {
                         //This would be the one which is dragged across column
                         $targetStatus = TasksUtil::getDefaultTaskStatusForKanbanItemType(intval($type));
                         $this->processStatusUpdateViaAjax($task, $targetStatus, false);
                         $content = TasksUtil::resolveActionButtonForTaskByStatus($targetStatus, $this->getId(), $this->getModule()->getId(), intval($taskId));
                         $kanbanItem->sortOrder = $counter;
                         $kanbanItem->type = intval($type);
                         $kanbanItem->save();
                         $subscriptionContent = TasksUtil::resolveAndRenderTaskCardDetailsSubscribersContent($task);
                         $subscriptionContent .= TasksUtil::resolveSubscriptionLink($task, 'subscribe-task-link', 'unsubscribe-task-link');
                         $response['button'] = $content;
                         $response['status'] = Task::getStatusDisplayName($task->status);
                         $response['owner'] = $task->owner->getFullName();
                         $response['subscriptionContent'] = $subscriptionContent;
                     }
                 }
                 $counter++;
             }
         }
     }
     echo CJSON::encode($response);
 }
コード例 #2
0
 /**
  * Check kanban type for status and update if it is required, it is required
  * when user is changing the status from modal detail view
  * @param $task Task
  */
 public static function checkKanbanTypeByStatusAndUpdateIfRequired(Task $task)
 {
     $kanbanItem = KanbanItem::getByTask($task->id);
     //It should be created here but check for create as well here
     if ($kanbanItem == null) {
         TasksUtil::createKanbanItemFromTask($task);
     } else {
         if (!TasksUtil::isKanbanItemTypeValidBasedOnTaskStatus($kanbanItem->type, $task->status)) {
             $kanbanTypeByStatus = TasksUtil::resolveKanbanItemTypeForTaskStatus($task->status);
             if ($kanbanItem->type != $kanbanTypeByStatus) {
                 $sourceKanbanItemType = $kanbanItem->type;
                 //put the item at the end
                 $kanbanItem->sortOrder = TasksUtil::resolveAndGetSortOrderForTaskOnKanbanBoard($kanbanTypeByStatus, $task);
                 $kanbanItem->type = $kanbanTypeByStatus;
                 $kanbanItem->save();
                 //Resort the source column
                 if ($task->project->id > 0) {
                     TasksUtil::sortKanbanColumnItems($sourceKanbanItemType, $task->project);
                 } elseif ($task->activityItems->count() > 0) {
                     TasksUtil::sortKanbanColumnItems($sourceKanbanItemType, $task->activityItems->offsetGet(0));
                 }
             }
         }
     }
 }