%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/tasks/controllers/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/tasks/controllers/ListController.php |
<?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\modules\user\models\User;
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, User::USERGROUP_SELF]],
['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 $this->renderAjaxContent(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 = 0)
{
/** @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 {countTasks,plural,=1{task} other{tasks}}', ['count' => $remainingCount, 'countTasks' => $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]);
}
}