Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 47 additions & 36 deletions Events.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,33 @@

namespace humhub\modules\tasks;

use humhub\commands\IntegrityController;
use humhub\helpers\ControllerHelper;
use humhub\modules\content\components\ContentContainerActiveRecord;
use humhub\modules\dashboard\widgets\Sidebar as DashboardSidebar;
use humhub\modules\notification\models\Notification;
use humhub\modules\rest\Module as RestModule;
use humhub\modules\space\models\Space;
use humhub\modules\space\widgets\Menu as SpaceMenu;
use humhub\modules\space\widgets\Sidebar as SpaceSidebar;
use humhub\modules\tasks\extensions\custom_pages\elements\TaskElement;
use humhub\modules\tasks\extensions\custom_pages\elements\TasksElement;
use humhub\modules\tasks\helpers\TaskListUrl;
use humhub\modules\tasks\helpers\TaskUrl;
use humhub\modules\user\models\User;
use Yii;
use humhub\modules\notification\models\Notification;
use humhub\modules\tasks\jobs\SendReminder;
use humhub\modules\tasks\models\SnippetModuleSettings;
use humhub\modules\tasks\models\Task;
use humhub\modules\tasks\models\checklist\TaskItem;
use humhub\modules\tasks\models\scheduling\TaskReminder;
use humhub\modules\tasks\models\user\TaskUser;
use humhub\modules\tasks\integration\calendar\TaskCalendar;
use humhub\modules\tasks\widgets\MyTasks;
use humhub\modules\tasks\models\user\TaskUser;
use humhub\modules\ui\menu\MenuLink;
use humhub\modules\user\models\User;
use humhub\modules\user\widgets\ProfileMenu;
use humhub\widgets\TopMenu;
use Yii;
use yii\db\Expression;

/* @var $user \humhub\modules\user\models\User */

/**
* Created by PhpStorm.
* User: davidborn
Expand All @@ -45,28 +50,29 @@ public static function onTopMenuInit($event)
/* @var $module Module */
$module = Yii::$app->getModule('tasks');


if (!$module->settings->get('showGlobalMenuItem', false) || Yii::$app->user->isGuest) {
return;
}

/* @var TopMenu $menu */
$menu = $event->sender;

// Is Module enabled on this workspace?
$event->sender->addItem([
$menu->addEntry(new MenuLink([
'label' => Yii::t('TasksModule.base', 'Tasks'),
'id' => 'tasks-global',
'icon' => 'tasks',
'url' => TaskUrl::globalView(),
'sortOrder' => $module->settings->get('menuSortOrder', 500),
'isActive' => (Yii::$app->controller->module && Yii::$app->controller->module->id == 'tasks' && Yii::$app->controller->id == 'global'),
]);
'isActive' => ControllerHelper::isActivePath('tasks', 'global'),
]));
} catch (\Throwable $e) {
Yii::error($e);
}
}

/**
* @param $event \humhub\modules\calendar\interfaces\CalendarItemTypesEvent
* @return mixed
* @param $event \humhub\modules\calendar\interfaces\event\CalendarItemTypesEvent
*/
public static function onGetCalendarItemTypes($event)
{
Expand All @@ -83,7 +89,7 @@ public static function onGetCalendarItemTypes($event)
}

/**
* @param $event \humhub\modules\calendar\interfaces\CalendarItemsEvent;
* @param $event \humhub\modules\calendar\interfaces\event\CalendarItemsEvent;
*/
public static function onFindCalendarItems($event)
{
Expand All @@ -109,7 +115,9 @@ public static function onDashboardSidebarInit($event)
$settings = SnippetModuleSettings::instantiate();

if ($settings->showMyTasksSnippet()) {
$event->sender->addWidget(MyTasks::class, ['limit' => $settings->myTasksSnippetMaxItems], ['sortOrder' => $settings->myTasksSnippetSortOrder]);
/* @var DashboardSidebar $sidebar */
$sidebar = $event->sender;
$sidebar->addWidget(MyTasks::class, ['limit' => $settings->myTasksSnippetMaxItems], ['sortOrder' => $settings->myTasksSnippetSortOrder]);
}
} catch (\Throwable $e) {
Yii::error($e);
Expand All @@ -123,15 +131,17 @@ public static function onSpaceSidebarInit($event)
return;
}

/* @var $space Space */
$space = $event->sender->space;
/* @var SpaceSidebar $sidebar */
$sidebar = $event->sender;

if ($space->moduleManager->isEnabled('tasks') && $space->isMember()) {
if ($sidebar->space->moduleManager->isEnabled('tasks') && $sidebar->space->isMember()) {
$settings = SnippetModuleSettings::instantiate();
if ($settings->showMyTasksSnippetSpace()) {
$event->sender->addWidget(MyTasks::class, [
'contentContainer' => $space,
'limit' => $settings->myTasksSnippetMaxItems], ['sortOrder' => $settings->myTasksSnippetSortOrder]);
$sidebar->addWidget(
MyTasks::class,
['contentContainer' => $sidebar->space, 'limit' => $settings->myTasksSnippetMaxItems],
['sortOrder' => $settings->myTasksSnippetSortOrder],
);
}
}
} catch (\Throwable $e) {
Expand All @@ -142,17 +152,16 @@ public static function onSpaceSidebarInit($event)
public static function onSpaceMenuInit($event)
{
try {
/* @var $space Space */
$space = $event->sender->space;
/* @var SpaceMenu $menu */
$menu = $event->sender;

if ($space->moduleManager->isEnabled('tasks') && $space->isMember()) {
$event->sender->addItem([
if ($menu->space->moduleManager->isEnabled('tasks') && $menu->space->isMember()) {
$menu->addEntry(new MenuLink([
'label' => Yii::t('TasksModule.base', 'Tasks'),
'group' => 'modules',
'url' => TaskListUrl::taskListRoot($space),
'url' => TaskListUrl::taskListRoot($menu->space),
'icon' => 'tasks',
'isActive' => (Yii::$app->controller->module && Yii::$app->controller->module->id == 'tasks'),
]);
'isActive' => ControllerHelper::isActivePath('tasks'),
]));
}
} catch (\Throwable $e) {
Yii::error($e);
Expand All @@ -161,16 +170,17 @@ public static function onSpaceMenuInit($event)

public static function onProfileMenuInit($event)
{
/* @var $user User */
try {
$user = $event->sender->user;
if ($user->moduleManager->isEnabled('tasks')) {
$event->sender->addItem([
/* @var ProfileMenu $menu */
$menu = $event->sender;

if ($menu->user->moduleManager->isEnabled('tasks')) {
$menu->addEntry(new MenuLink([
'label' => Yii::t('TasksModule.base', 'Tasks'),
'url' => TaskListUrl::taskListRoot($user),
'url' => TaskListUrl::taskListRoot($menu->user),
'icon' => 'tasks',
'isActive' => (Yii::$app->controller->module && Yii::$app->controller->module->id == 'tasks'),
]);
'isActive' => ControllerHelper::isActivePath('tasks'),
]));
}
} catch (\Throwable $e) {
Yii::error($e);
Expand All @@ -186,6 +196,7 @@ public static function onProfileMenuInit($event)
*/
public static function onIntegrityCheck($event)
{
/* @var IntegrityController $integrityController */
$integrityController = $event->sender;
$integrityController->showTestHeadline("Tasks Module - Entries (" . Task::find()->count() . " entries)");

Expand Down
1 change: 0 additions & 1 deletion config.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?php

use humhub\modules\content\widgets\WallCreateContentMenu;
use humhub\widgets\TopMenu;
use humhub\modules\space\widgets\Menu;
use humhub\commands\IntegrityController;
Expand Down
2 changes: 1 addition & 1 deletion integration/calendar/TaskCalendar.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public static function addItemTypes($event)
}

/**
* @param $event \humhub\modules\calendar\interfaces\CalendarItemsEvent
* @param $event \humhub\modules\calendar\interfaces\event\CalendarItemsEvent
*/
public static function addItems($event)
{
Expand Down
33 changes: 21 additions & 12 deletions models/Task.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,29 +11,28 @@

use Colors\RandomColor;
use humhub\modules\content\components\ActiveQueryContent;
use humhub\modules\content\components\ContentActiveRecord;
use humhub\modules\content\components\ContentContainerActiveRecord;
use humhub\modules\content\components\ContentContainerPermissionManager;
use humhub\modules\notification\models\Notification;
use humhub\modules\space\models\Space;
use humhub\modules\tasks\helpers\TaskUrl;
use humhub\modules\tasks\permissions\CreateTask;
use humhub\modules\tasks\permissions\ProcessUnassignedTasks;
use Yii;
use yii\db\ActiveQuery;
use yii\db\Expression;
use humhub\modules\notification\models\Notification;
use humhub\modules\tasks\models\checklist\TaskCheckList;
use humhub\modules\tasks\models\checklist\TaskItem;
use humhub\modules\tasks\models\lists\TaskList;
use humhub\modules\tasks\models\scheduling\TaskReminder;
use humhub\modules\tasks\models\scheduling\TaskScheduling;
use humhub\modules\tasks\models\state\TaskState;
use humhub\modules\tasks\models\user\TaskUser;
use humhub\modules\content\components\ContentContainerActiveRecord;
use humhub\modules\content\components\ContentActiveRecord;
use humhub\modules\tasks\permissions\CreateTask;
use humhub\modules\tasks\permissions\ManageTasks;
use humhub\modules\tasks\permissions\ProcessUnassignedTasks;
use humhub\modules\tasks\widgets\WallEntry;
use humhub\modules\user\models\User;
use humhub\modules\search\interfaces\Searchable;
use humhub\widgets\bootstrap\Badge;
use humhub\modules\tasks\widgets\WallEntry;
use humhub\modules\tasks\permissions\ManageTasks;
use Yii;
use yii\db\ActiveQuery;
use yii\db\Expression;

/**
* This is the model class for table "task".
Expand Down Expand Up @@ -61,7 +60,7 @@
* @property User[] $taskResponsibleUsers
* @property User[] $taskAssignedUsers
*/
class Task extends ContentActiveRecord implements Searchable
class Task extends ContentActiveRecord
{
public const SCENARIO_EDIT = 'edit';

Expand Down Expand Up @@ -294,6 +293,16 @@ public function attributeLabels()
];
}

/**
* @inheritdoc
*/
public function attributeHints()
{
return [
'assignedUsers' => Yii::t('TasksModule.base', 'If empty any user can complete the task.'),
];
}

/**
* @inheritdoc
*/
Expand Down
9 changes: 3 additions & 6 deletions views/task/edit-assignment.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

use humhub\modules\user\widgets\UserPickerField;
use humhub\widgets\bootstrap\Button;
use humhub\widgets\bootstrap\Link;

/* @var $form \humhub\widgets\form\ActiveForm */
/* @var $taskForm \humhub\modules\tasks\models\forms\TaskForm */
Expand All @@ -24,9 +23,8 @@
'selection' => $taskForm->task->taskAssignedUsers,
'url' => $taskForm->getTaskAssignedPickerUrl(),
'placeholder' => Yii::t('TasksModule.base', 'Assign users'),
])->hint(Yii::t('TasksModule.base', 'If empty any user can complete the task.'), []) ?>

<?= Link::userPickerSelfSelect('#taskAssignedUserPicker', Yii::t('TasksModule.base', 'Assign myself')); ?>
'selfSelect' => Yii::t('TasksModule.base', 'Assign myself'),
]) ?>

<br>

Expand All @@ -35,10 +33,9 @@
'selection' => $responsible,
'url' => $taskForm->getTaskResponsiblePickerUrl(),
'placeholder' => Yii::t('TasksModule.base', 'Add responsible users'),
'selfSelect' => Yii::t('TasksModule.base', 'Assign myself'),
]) ?>

<?= Link::userPickerSelfSelect('#taskResponsibleUserPicker', Yii::t('TasksModule.base', 'Assign myself')); ?>

<br>

<?= $form->field($taskForm->task, 'review')->checkbox() ?>
Expand Down
6 changes: 3 additions & 3 deletions widgets/lists/views/completedTaskListItem.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* @var $options array */

use humhub\modules\tasks\helpers\TaskListUrl;
use humhub\widgets\bootstrap\Button;
use humhub\widgets\bootstrap\Link;
use humhub\helpers\Html;

?>
Expand All @@ -17,15 +17,15 @@
<?= Html::encode($taskList->title); ?>
</span>
<div class="float-end task-controls end">
<?= Button::asLink()
<?= Link::to()
->tooltip(Yii::t('TasksModule.base', 'Delete'))
->icon('trash')
->right()->sm()
->action('deleteList', TaskListUrl::deleteTaskList($taskList))
->loader(false)
->visible($canEdit)
->confirm() ?>
<?= Button::asLink()
<?= Link::to()
->tooltip(Yii::t('TasksModule.base', 'Edit'))
->icon('pencil')
->right()->sm()->cssClass('me-2')
Expand Down
7 changes: 4 additions & 3 deletions widgets/lists/views/taskList.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use humhub\modules\tasks\widgets\lists\TaskListItem;
use humhub\modules\ui\icon\widgets\Icon;
use humhub\widgets\bootstrap\Button;
use humhub\widgets\bootstrap\Link;

/* @var $this \humhub\components\View */
/* @var $list \humhub\modules\tasks\models\lists\TaskListInterface */
Expand Down Expand Up @@ -48,13 +49,13 @@
</span>

<?php if ($list instanceof TaskList) : ?>
<?= Button::asLink()->icon('pencil')->sm()
<?= Link::to()->icon('pencil')->sm()
->action('task.list.edit', TaskListUrl::editTaskList($list))
->loader(false)
->cssClass('task-list-edit task-toggled-color')
->tooltip(Yii::t('TasksModule.base', 'Edit list'))
->visible($canManage) ?>
<?= Button::asLink()->icon('trash')->sm()
<?= Link::to()->icon('trash')->sm()
->action('deleteList', TaskListUrl::deleteTaskList($list))->loader(false)
->cssClass('task-list-edit task-toggled-color')
->tooltip(Yii::t('TasksModule.base', 'Delete list'))
Expand Down Expand Up @@ -92,7 +93,7 @@
<?php if ($completedTasksCount > count($completedTasks)) : ?>
<?php $remainingCount = $completedTasksCount - count($completedTasks); ?>
<div class="task-list-task-completed-show-more">
<?= Button::asLink(Yii::t('TasksModule.base', 'Show {count} more completed {countTasks,plural,=1{task} other{tasks}}', ['count' => $remainingCount, 'countTasks' => $remainingCount]))
<?= Link::to(Yii::t('TasksModule.base', 'Show {count} more completed {countTasks,plural,=1{task} other{tasks}}', ['count' => $remainingCount, 'countTasks' => $remainingCount]))
->icon('chevron-down')->action('showMoreCompleted', TaskListUrl::showMore($list))->cssClass('showMoreCompleted')->loader(true) ?>
</div>
<?php endif; ?>
Expand Down
9 changes: 5 additions & 4 deletions widgets/views/changeStatusButton.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
use humhub\modules\tasks\models\Task;
use humhub\widgets\bootstrap\Button;
use humhub\modules\tasks\helpers\TaskUrl;
use humhub\widgets\bootstrap\Link;

/* @var $task Task */
/* @var $primaryStateConfig array */
Expand All @@ -13,7 +14,7 @@
?>

<div class="btn-group float-end task-change-state-button">
<?= Button::primary($primaryStateConfig['label'])->action('task.changeState', $primaryUrl)->sm()->icon($primaryStateConfig['icon'])->loader(true);?>
<?= Button::primary($primaryStateConfig['label'])->action('task.changeState', $primaryUrl)->sm()->icon($primaryStateConfig['icon']) ?>

<?php if(!empty($proceedConfig) || !empty($revertConfig)) : ?>
<button type="button" class="btn btn-primary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Expand All @@ -23,7 +24,7 @@
<?php foreach($proceedConfig as $status => $config) : ?>
<?php $status = $task->state->getStateInstance($status) ?>
<li class="dropdown-item">
<?= Button::asLink($config['label'])->action('task.changeState', $status->getProceedUrl())->icon($config['icon']);?>
<?= Link::to($config['label'])->action('task.changeState', $status->getProceedUrl())->icon($config['icon']);?>
</li>
<?php endforeach; ?>

Expand All @@ -34,7 +35,7 @@
<?php foreach($revertConfig as $status => $config) : ?>
<?php $status = $task->state->getStateInstance($status) ?>
<li class="dropdown-item">
<?= Button::asLink($config['label'])->action('task.changeState', $status->getRevertUrl())->icon($config['icon']);?>
<?= Link::to($config['label'])->action('task.changeState', $status->getRevertUrl())->icon($config['icon']);?>
</li>
<?php endforeach; ?>

Expand All @@ -43,7 +44,7 @@
<li role="separator" class="divider"></li>
<?php endif ?>
<li>
<?= Button::asLink(Yii::t('TasksModule.base', 'Request extension'))
<?= Link::to(Yii::t('TasksModule.base', 'Request extension'))
->icon('calendar-o')
->link(TaskUrl::requestExtension($task)) ?>
</li>
Expand Down
Loading