Skip to content
Open
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
3 changes: 3 additions & 0 deletions messages/de/base.php
Original file line number Diff line number Diff line change
Expand Up @@ -178,4 +178,7 @@
'{userName} started working on Task {task} in space {spaceName}.' => '{userName} hat begonnen, an der Aufgabe {task} im Space {spaceName} zu arbeiten.',
'{userName} works on task {task}.' => '{userName} arbeitet an der Aufgabe {task}.',
'Task content ID' => '',
"Archived" => "Archiviert",
"List: {name}" => "Liste: {name}",
"Due Date" => "Fälligkeitsdatum"
];
20 changes: 15 additions & 5 deletions models/forms/TaskFilter.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class TaskFilter extends Model
public const FILTER_SPACE = 'spaces';
public const FILTER_DATE_START = 'date_start';
public const FILTER_DATE_END = 'date_end';
public const FILTER_ARCHIVED = "archived";

public $filters = [];

Expand Down Expand Up @@ -88,13 +89,19 @@ public function query()
{
$this->validate();

$query = Task::find()->readable()->andWhere('content.archived = 0');
$query = Task::find()->readable();

if ($this->isFilterActive(static::FILTER_ARCHIVED)) {
$query->andWhere("content.archived = 1");
} else {
$query->andWhere("content.archived = 0");
}


if ($this->contentContainer) {
$query->contentContainer($this->contentContainer);
} elseif (!empty($this->spaces)) {
$query->joinWith(['content', 'content.contentContainer', 'content.createdBy']);
$query->joinWith(['content.contentContainer', 'content.createdBy']);
$query->andWhere(['IN', 'contentcontainer.guid', $this->spaces]);
} else {
// exclude archived content from global view
Expand Down Expand Up @@ -134,12 +141,15 @@ public function query()

if (! empty($this->date_start) && ! empty($this->date_end)) {
$query->andWhere(
['or',
['and',
[
'or',
[
'and',
CalendarUtils::getStartCriteria($this->date_start, 'start_datetime', '>='),
CalendarUtils::getStartCriteria($this->date_end, 'start_datetime', '<='),
],
['and',
[
'and',
CalendarUtils::getEndCriteria($this->date_start, 'end_datetime', '>='),
CalendarUtils::getEndCriteria($this->date_end, 'end_datetime', '<='),
],
Expand Down
16 changes: 9 additions & 7 deletions models/lists/TaskList.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@

use humhub\modules\content\components\ActiveQueryContent;
use humhub\modules\content\components\ContentContainerActiveRecord;
use humhub\modules\content\models\ContentContainer;
use humhub\modules\content\models\ContentTag;
use humhub\modules\tasks\models\Sortable;
use humhub\modules\tasks\models\Task;
Expand Down Expand Up @@ -50,7 +49,7 @@ public function afterSave($insert, $changedAttributes)
*/
public function getTasks()
{
return Task::find()->andWhere(['task_list_id' => $this->id])->readable();
return Task::find()->where(['task_list_id' => $this->id])->andWhere(["content.archived" => 0])->readable();
}

public function load($data, $formName = null)
Expand All @@ -65,7 +64,7 @@ public function load($data, $formName = null)
*/
public function getNonCompletedTasks()
{
return $this->getTasks()->where(['!=', 'task.status', Task::STATUS_COMPLETED])->orderBy(['sort_order' => SORT_ASC, 'updated_at' => SORT_DESC]);
return $this->getTasks()->andWhere(['!=', 'task.status', Task::STATUS_COMPLETED])->orderBy(['sort_order' => SORT_ASC, 'updated_at' => SORT_DESC]);
}

/**
Expand All @@ -92,7 +91,7 @@ public function getCompletedTasks()
*/
public function getTasksByStatus($status)
{
return $this->getTasks()->where(['task.status' => $status]);
return $this->getTasks()->andWhere(['task.status' => $status]);
}

/**
Expand Down Expand Up @@ -129,7 +128,8 @@ public static function findByFilter($container, $filters = [])
$includes = is_array($filters[static::FILTER_STATUS_INCLUDE]) ? $filters[static::FILTER_STATUS_INCLUDE] : [$filters[static::FILTER_STATUS_INCLUDE]];

$query->andWhere(
['OR',
[
'OR',
['IS', 'task.id', new Expression("NULL")],
['IN', 'task.status', $includes],
],
Expand All @@ -152,7 +152,8 @@ public static function findOverviewLists(ContentContainerActiveRecord $container
$includes = [Task::STATUS_IN_PROGRESS, Task::STATUS_PENDING_REVIEW, Task::STATUS_PENDING];

$query->andWhere(
['OR',
[
'OR',
['IN', 'task.status', $includes],
['IS', 'task.id', new Expression("NULL")],
['task_list_setting.hide_if_completed' => '0'],
Expand All @@ -176,7 +177,8 @@ public static function findHiddenLists(ContentContainerActiveRecord $container)
$subQuery = Task::find()->where('task.task_list_id = content_tag.id')->andWhere(['IN', 'task.status', $includes]);

$query->andWhere(
['AND',
[
'AND',
['NOT EXISTS', $subQuery],
['IS NOT', 't.id', new Expression("NULL")],
['task_list_setting.hide_if_completed' => '1'],
Expand Down
2 changes: 1 addition & 1 deletion models/lists/UnsortedTaskList.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function getTasks()
*/
public function getNonCompletedTasks()
{
return $this->getTasks()->where(['!=', 'task.status', Task::STATUS_COMPLETED])->orderBy(['sort_order' => SORT_ASC, 'task.updated_at' => SORT_DESC]);
return $this->getTasks()->where(['!=', 'task.status', Task::STATUS_COMPLETED])->andWhere(["content.archived" => 0])->orderBy(['sort_order' => SORT_ASC, 'task.updated_at' => SORT_DESC]);
}

/**
Expand Down
43 changes: 19 additions & 24 deletions module.json
Original file line number Diff line number Diff line change
@@ -1,26 +1,21 @@
{
"id": "tasks",
"name": "Tasks",
"description": "Create tasks, assign users, set deadlines, and organize projects to keep your team on track.",
"keywords": [
"task",
"todo",
"project",
"management"
],
"version": "1.8.8",
"homepage": "https://github.com/humhub/tasks",
"humhub": {
"minVersion": "1.14"
},
"screenshots": [
"resources/screenshot1.png",
"resources/screenshot2.png",
"resources/screenshot3.png",
"resources/screenshot4.png",
"resources/screenshot5.png",
"resources/screenshot6.png",
"resources/screenshot7.png",
"resources/screenshot8.png"
]
"id": "tasks",
"name": "Tasks",
"description": "Create tasks, assign users, set deadlines, and organize projects to keep your team on track.",
"keywords": ["task", "todo", "project", "management"],
"version": "1.8.9",
"homepage": "https://github.com/humhub/tasks",
"humhub": {
"minVersion": "1.14"
},
"screenshots": [
"resources/screenshot1.png",
"resources/screenshot2.png",
"resources/screenshot3.png",
"resources/screenshot4.png",
"resources/screenshot5.png",
"resources/screenshot6.png",
"resources/screenshot7.png",
"resources/screenshot8.png"
]
}
4 changes: 1 addition & 3 deletions views/global/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
use humhub\modules\tasks\assets\Assets;
use humhub\modules\tasks\widgets\search\TaskSearchList;
use humhub\modules\tasks\widgets\search\TaskFilterNavigation;
use humhub\modules\tasks\models\forms\TaskFilter;

/* @var $this \humhub\modules\ui\view\components\View */
/* @var $filter TaskFilter */
Expand All @@ -24,5 +23,4 @@
<?= TaskSearchList::widget(['filter' => $filter]) ?>
</div>
</div>
</div>

</div>
23 changes: 12 additions & 11 deletions views/list/index.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
Expand Down Expand Up @@ -44,23 +45,23 @@
</div>

<?php if (TaskList::hasCompletedLists($contentContainer)): ?>
<div class="task-list-ul">
<div class="task-list-li">
<div class="closed-task-lists-container task-list-container" data-ui-widget="task.list.CompletedTaskListView" data-ui-init="1">
<div class="task-list-title-bar clearfix">
<div>
<i class="fa fa-check-square-o"></i> <span class="task-list-title-text"><?= Yii::t('TasksModule.base', 'Completed lists') ?></span>
<div class="task-list-ul">
<div class="task-list-li">
<div class="closed-task-lists-container task-list-container" data-ui-widget="task.list.CompletedTaskListView" data-ui-init="1">
<div class="task-list-title-bar clearfix">
<div>
<i class="fa fa-check-square-o"></i> <span class="task-list-title-text"><?= Yii::t('TasksModule.base', 'Completed lists') ?></span>
</div>
</div>
<div class="closed-task-list-view">
<?= CompletedTaskListView::widget(['contentContainer' => $contentContainer]) ?>
</div>
</div>
<div class="closed-task-list-view">
<?= CompletedTaskListView::widget(['contentContainer' => $contentContainer]) ?>
</div>
</div>
</div>
</div>
<?php endif; ?>

<div class="task-list-empty empty" style="display:none">
<?= Yii::t('TasksModule.base','No pending tasks found') ?>
<?= Yii::t('TasksModule.base', 'No pending tasks found') ?>
</div>
</div>
2 changes: 0 additions & 2 deletions widgets/lists/TaskListWidget.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@

namespace humhub\modules\tasks\widgets\lists;

use humhub\modules\content\components\ContentContainerActiveRecord;
use humhub\modules\tasks\helpers\TaskListUrl;
use humhub\modules\tasks\models\Task;
use humhub\modules\tasks\models\lists\TaskListInterface;
use humhub\widgets\JsWidget;
use Yii;

class TaskListWidget extends JsWidget
{
Expand Down
34 changes: 25 additions & 9 deletions widgets/search/TaskFilterNavigation.php
Original file line number Diff line number Diff line change
Expand Up @@ -104,33 +104,38 @@ protected function initFilters()
'data-action-keypress' => null,
'placeholder' => Yii::t('TasksModule.base', 'Filter by title'),
],
'sortOrder' => 100], static::FILTER_BLOCK_TITLE);
'sortOrder' => 100
], static::FILTER_BLOCK_TITLE);

$this->addFilter([
'id' => TaskFilter::FILTER_OVERDUE,
'checked' => $this->filter->isFilterActive(TaskFilter::FILTER_OVERDUE),
'title' => Yii::t('TasksModule.base', 'Overdue'),
'options' => ['label' => Yii::t('TasksModule.base', 'Filter')],
'sortOrder' => 100], static::FILTER_BLOCK_CHECKBOX);
'sortOrder' => 100
], static::FILTER_BLOCK_CHECKBOX);

if (!Yii::$app->user->isGuest && (!$this->filter->contentContainer || $this->filter->contentContainer instanceof Space)) {
$this->addFilter([
'id' => TaskFilter::FILTER_ASSIGNED,
'checked' => $this->filter->isFilterActive(TaskFilter::FILTER_ASSIGNED),
'title' => Yii::t('TasksModule.base', 'I\'m assigned'),
'sortOrder' => 200], static::FILTER_BLOCK_CHECKBOX);
'sortOrder' => 200
], static::FILTER_BLOCK_CHECKBOX);

$this->addFilter([
'id' => TaskFilter::FILTER_RESPONSIBLE,
'checked' => $this->filter->isFilterActive(TaskFilter::FILTER_RESPONSIBLE),
'title' => Yii::t('TasksModule.base', 'I\'m responsible'),
'sortOrder' => 300], static::FILTER_BLOCK_CHECKBOX);
'sortOrder' => 300
], static::FILTER_BLOCK_CHECKBOX);

$this->addFilter([
'id' => TaskFilter::FILTER_MINE,
'checked' => $this->filter->isFilterActive(TaskFilter::FILTER_MINE),
'title' => Yii::t('TasksModule.base', 'Created by me'),
'sortOrder' => 400], static::FILTER_BLOCK_CHECKBOX);
'sortOrder' => 400
], static::FILTER_BLOCK_CHECKBOX);
}

$this->addFilter([
Expand All @@ -146,8 +151,16 @@ protected function initFilters()
'items' => TaskState::getStatusItems(),
'placeholderMore' => Yii::t('TasksModule.base', 'Filter by status'),
'name' => 'task-filter-state',
]], static::FILTER_BLOCK_PICKER);
]
], static::FILTER_BLOCK_PICKER);

$this->addFilter([
"id" => TaskFilter::FILTER_ARCHIVED,
"title" => Yii::t("TasksModule.base", "Archived"),
"options" => [
"label" => Yii::t("TasksModule.base", "Show archived?")
]
], static::FILTER_BLOCK_CHECKBOX);

if (!$this->filter->contentContainer) {
$memberships = MembershipSearch::findByUser(Yii::$app->user->identity)->all();
Expand All @@ -170,7 +183,8 @@ protected function initFilters()
'pickerOptions' => [
'name' => 'task-filter-spaces',
'defaultResults' => $spaces,
]], static::FILTER_BLOCK_PICKER);
]
], static::FILTER_BLOCK_PICKER);
}

$this->addFilter([
Expand All @@ -180,15 +194,17 @@ protected function initFilters()
'filterOptions' => [
'label' => Yii::t('TasksModule.base', 'Date'),
'placeholder' => Yii::t('TasksModule.base', 'Start date'),
]], static::FILTER_BLOCK_DATEPICKER);
]
], static::FILTER_BLOCK_DATEPICKER);

$this->addFilter([
'id' => TaskFilter::FILTER_DATE_END,
'category' => 'date_end',
'class' => DateFilter::class,
'filterOptions' => [
'placeholder' => Yii::t('TasksModule.base', 'End date'),
]], static::FILTER_BLOCK_DATEPICKER);
]
], static::FILTER_BLOCK_DATEPICKER);
}

public function getData()
Expand Down
Loading