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