| Code Coverage | ||||||||||
| Classes and Traits | Functions and Methods | Lines | ||||||||
| Total |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 13 | CRAP |  | 0.00% | 0 / 93 | 
| ListController |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 13 | 756 |  | 0.00% | 0 / 93 | 
| getAccessRules |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 6 | |||
| actionIndex |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 7 | |||
| actionEdit |  | 0.00% | 0 / 1 | 30 |  | 0.00% | 0 / 12 | |||
| actionDelete |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 5 | |||
| actionLoadClosedLists |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 3 | |||
| actionLoadCompleted |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 3 | |||
| getTaskListById |  | 0.00% | 0 / 1 | 6 |  | 0.00% | 0 / 7 | |||
| actionLoadTaskDetails |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 3 | |||
| actionDropTask |  | 0.00% | 0 / 1 | 12 |  | 0.00% | 0 / 9 | |||
| actionDropTaskList |  | 0.00% | 0 / 1 | 12 |  | 0.00% | 0 / 7 | |||
| actionShowMoreCompleted |  | 0.00% | 0 / 1 | 20 |  | 0.00% | 0 / 18 | |||
| actionLoadAjax |  | 0.00% | 0 / 1 | 12 |  | 0.00% | 0 / 10 | |||
| actionLoadAjaxTask |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 3 | |||
| <?php | |
| /** | |
| * @link https://www.humhub.org/ | |
| * @copyright Copyright (c) 2018 HumHub GmbH & Co. KG | |
| * @license https://www.humhub.com/licences | |
| * | |
| */ | |
| namespace humhub\modules\tasks\controllers; | |
| use humhub\modules\content\components\ContentContainerControllerAccess; | |
| use humhub\modules\space\models\Space; | |
| use humhub\modules\tasks\models\lists\TaskListItemDrop; | |
| use humhub\modules\tasks\models\lists\TaskListRootItemDrop; | |
| use humhub\modules\tasks\models\lists\TaskList; | |
| use humhub\modules\tasks\models\lists\TaskListInterface; | |
| use humhub\modules\tasks\models\lists\UnsortedTaskList; | |
| use humhub\modules\tasks\permissions\ManageTasks; | |
| use humhub\modules\tasks\widgets\lists\CompletedTaskListItem; | |
| use humhub\modules\tasks\widgets\lists\CompletedTaskListView; | |
| use humhub\modules\tasks\widgets\lists\TaskListDetails; | |
| use humhub\modules\tasks\widgets\lists\TaskListItem; | |
| use humhub\modules\tasks\widgets\lists\TaskListWidget; | |
| use humhub\modules\tasks\widgets\lists\UnsortedTaskListWidget; | |
| use humhub\widgets\ModalClose; | |
| use Yii; | |
| use yii\web\HttpException; | |
| class ListController extends AbstractTaskController | |
| { | |
| public function getAccessRules() | |
| { | |
| return [ | |
| [ContentContainerControllerAccess::RULE_USER_GROUP_ONLY => [Space::USERGROUP_MEMBER]], | |
| ['permission' => ManageTasks::class, 'actions' => ['edit', 'delete', 'drop-task', 'drop-task-list']], | |
| ]; | |
| } | |
| public function actionIndex() | |
| { | |
| return $this->render('index', [ | |
| 'contentContainer' => $this->contentContainer, | |
| 'canManage' => $this->canManageTasks(), | |
| 'canCreate' => $this->canCreateTask(), | |
| 'taskLists' => TaskList::findOverviewLists($this->contentContainer)->all()]); | |
| } | |
| public function actionEdit($id = null) | |
| { | |
| $taskList = ($id) ? $this->getTaskListById($id) : new TaskList($this->contentContainer); | |
| if(!$taskList) { | |
| throw new HttpException(404); | |
| } | |
| if($taskList->load(Yii::$app->request->post()) && $taskList->save()) { | |
| return ModalClose::widget(); | |
| } | |
| return $this->renderAjax('edit', [ | |
| 'model' => $taskList, | |
| ]); | |
| } | |
| public function actionDelete($id) | |
| { | |
| $this->forcePostRequest(); | |
| $this->getTaskListById($id)->delete(); | |
| return $this->asJson(['success' => true]); | |
| } | |
| public function actionLoadClosedLists() | |
| { | |
| return CompletedTaskListView::widget(['contentContainer' => $this->contentContainer]); | |
| } | |
| public function actionLoadCompleted($id) | |
| { | |
| return CompletedTaskListItem::widget(['contentContainer' => $this->contentContainer, 'taskList' => $this->getTaskListById($id)]); | |
| } | |
| public function getTaskListById($id) | |
| { | |
| $taskList = TaskList::findById($id, $this->contentContainer); | |
| if(!$taskList) { | |
| throw new HttpException(404); | |
| } | |
| return $taskList; | |
| } | |
| public function actionLoadTaskDetails($id) | |
| { | |
| return TaskListDetails::widget(['task' => $this->getTaskById($id)]); | |
| } | |
| public function actionDropTask() | |
| { | |
| $model = new TaskListItemDrop(['contentContainer' => $this->contentContainer]); | |
| if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| return $this->asJson([ | |
| 'success' => true | |
| ]); | |
| } | |
| return $this->asJson(['success' => false]); | |
| } | |
| public function actionDropTaskList() | |
| { | |
| $model = new TaskListRootItemDrop(['contentContainer' => $this->contentContainer]); | |
| if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
| return $this->asJson(['success' => true]); | |
| } | |
| return $this->asJson(['success' => false]); | |
| } | |
| public function actionShowMoreCompleted($id = null, $offset) | |
| { | |
| /** @var $taskList TaskListInterface */ | |
| $taskList = $id ? TaskList::findById($id, $this->contentContainer) : new UnsortedTaskList(['contentContainer' => $this->contentContainer]); | |
| if(!$taskList) { | |
| throw new HttpException(404); | |
| } | |
| $tasks = $taskList->getShowMoreCompletedTasks($offset, 10); | |
| $completedTaskCount = $taskList->getCompletedTasks()->count(); | |
| $result = []; | |
| foreach ($tasks as $task) { | |
| $result[] = TaskListItem::widget(['task' => $task]); | |
| } | |
| $remainingCount = $completedTaskCount - ($offset + count($result)); | |
| return $this->asJson([ | |
| 'tasks' => $result, | |
| 'remainingCount' => $remainingCount, | |
| 'showMoreMessage' => Yii::t('TasksModule.base','Show {count} more completed {n,plural,=1{task} other{tasks}}', ['n' => $remainingCount, 'count' => $remainingCount]) | |
| ]); | |
| } | |
| public function actionLoadAjax($id = null) | |
| { | |
| if(!$id) { | |
| return UnsortedTaskListWidget::widget(['canManage' => $this->canManageTasks(), 'canCreate' => $this->canCreateTask()]); | |
| } | |
| $taskList = TaskList::findById($id, $this->contentContainer); | |
| if(!$taskList) { | |
| throw new HttpException(404); | |
| } | |
| return TaskListWidget::widget(['list' => $taskList, 'canManage' => $this->canManageTasks(), 'canCreate' => $this->canCreateTask()]); | |
| } | |
| public function actionLoadAjaxTask($id) | |
| { | |
| return TaskListItem::widget(['task' => $this->getTaskById($id), 'details' => true]); | |
| } | |
| } |