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]); | |
| } | |
| } |