From 6ea815f13eab6f4feae2ee1df452b3ee04a12d4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B9=BF=E6=98=8E?= Date: Tue, 14 Dec 2021 16:22:24 +0800 Subject: [PATCH 1/9] * Fix create card view. --- module/kanban/js/view.js | 2 +- module/kanban/lang/en.php | 1 + module/kanban/lang/zh-cn.php | 1 + module/kanban/model.php | 1 + module/kanban/view/createcard.html.php | 50 +++++++++++------------- module/kanban/view/createcolumn.html.php | 6 ++- 6 files changed, 31 insertions(+), 30 deletions(-) diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 8bad6a2826..258c311888 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -238,7 +238,7 @@ function renderKanbanItem(item, $item) var end = $.zui.createDate(item.end); var today = $.zui.createDate(today); var isExpired = end.getTime() < today.getTime(); - var dateFormat = (today.getFullYear() === end.getFullYear() ? 'MM-dd ' : 'yyyy-MM-dd ') + kanbancardLang.end; + var dateFormat = (today.getFullYear() === end.getFullYear() ? 'MM-dd ' : 'yyyy-MM-dd ') + kanbancardLang.deadlineAB; $time.text($.zui.formatDate(end, dateFormat)) .toggleClass('text-red', isExpired) .show(); diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php index 8a085bf61a..a618179261 100644 --- a/module/kanban/lang/en.php +++ b/module/kanban/lang/en.php @@ -244,6 +244,7 @@ $lang->kanbancard->lastEditedBy = 'Last Edited By'; $lang->kanbancard->lastEditedDate = 'Last Edited Date'; $lang->kanbancard->lblHour = 'h'; $lang->kanbancard->noAssigned = 'No Assigned'; +$lang->kanbancard->deadlineAB = 'DL'; $lang->kanbancard->priList[1] = 1; $lang->kanbancard->priList[2] = 2; diff --git a/module/kanban/lang/zh-cn.php b/module/kanban/lang/zh-cn.php index 58e816e2ba..c066859c1e 100644 --- a/module/kanban/lang/zh-cn.php +++ b/module/kanban/lang/zh-cn.php @@ -248,6 +248,7 @@ $lang->kanbancard->archivedBy = '由谁归档'; $lang->kanbancard->archivedDate = '归档时间'; $lang->kanbancard->lblHour = 'h'; $lang->kanbancard->noAssigned = '未指派'; +$lang->kanbancard->deadlineAB = '截止'; $lang->kanbancard->priList[1] = 1; $lang->kanbancard->priList[2] = 2; diff --git a/module/kanban/model.php b/module/kanban/model.php index 41a1deff07..f8ac03392e 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -316,6 +316,7 @@ class kanbanModel extends model ->add('createdDate', $now) ->add('assignedDate', $now) ->setDefault('estimate', 0) + ->join('assignedTo', ',') ->setIF(is_numeric($this->post->estimate), 'estimate', (float)$this->post->estimate) ->remove('uid') ->get(); diff --git a/module/kanban/view/createcard.html.php b/module/kanban/view/createcard.html.php index fe5697ef80..12969bb369 100644 --- a/module/kanban/view/createcard.html.php +++ b/module/kanban/view/createcard.html.php @@ -19,37 +19,11 @@
- - - - - - - - - - - - + + + + + + + + diff --git a/module/kanban/view/createcolumn.html.php b/module/kanban/view/createcolumn.html.php index fa220caa6d..dafe2cc1e7 100644 --- a/module/kanban/view/createcolumn.html.php +++ b/module/kanban/view/createcolumn.html.php @@ -43,11 +43,13 @@ - +
kanbancard->estimate;?> -
- - kanbancard->lblHour;?> -
-
kanbancard->assignedTo;?> - user->account, "class='form-control chosen'");?> -
kanbancard->beginAndEnd;?> -
- kanbancard->begin}'");?> - ~ - kanbancard->end}'");?> -
-
kanbancard->name;?> -
- + kanbancard->pri;?>
+
+
+ kanbancard->estimate;?> + kanbancard->lblHour;?>> +
+
+ +
kanbancard->assignedTo;?> + user->account, "class='form-control chosen' multiple");?> +
kanbancard->beginAndEnd;?> +
+ kanbancard->begin}'");?> + ~ + kanbancard->end}'");?>
kanbancolumn->color;?>
+
+ +
- group);?> parent);?> From 530e7e55b0cb262878e9086deb1813bbb090d6ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B9=BF=E6=98=8E?= Date: Wed, 15 Dec 2021 10:10:11 +0800 Subject: [PATCH 2/9] * Merge code. --- module/kanban/js/view.js | 43 +++++++++++++----------------------- module/kanban/lang/en.php | 41 ++++++++++++++++++++-------------- module/kanban/lang/zh-cn.php | 4 ++++ module/kanban/model.php | 2 +- 4 files changed, 44 insertions(+), 46 deletions(-) diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 258c311888..4689dd832b 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -201,15 +201,14 @@ function renderKanbanItem(item, $item) .appendTo($item); } $title.text(item.name); - $title.attr('href', createLink('kanban', 'viewcard', 'taskID=' + item.id)); + $title.attr('href', createLink('kanban', 'viewCard', 'cardID=' + item.id)); - var $more = $item.children('.actions'); - if(!$more.length) + if(item.actions.length) { $( [ - '
', - '', '
' @@ -226,7 +225,7 @@ function renderKanbanItem(item, $item) '' ].join('')).appendTo($item); - $item.data('task', item); + $item.data('card', item); $info.children('.pri') .attr('class', 'pri label-pri label-pri-' + item.pri) @@ -613,31 +612,19 @@ function createLaneMenu(options) return items; } -function createTaskMenu(options) +function createCardMenu(options) { - var task = options.$trigger.closest('.kanban-item').data('task'); - var privs = task.actions; + var card = options.$trigger.closest('.kanban-item').data('item'); + var privs = card.actions; if(!privs.length) return []; - var actions = { - 'edit': {'label': taskLang.edit, 'icon': '', 'url': createLink('task', 'edit', "taskID=" + task.id + "&from=kanban"), 'attrs': {'data-toggle': 'modal', 'data-width': '1125px'}}, - 'move': {'label': taskLang.move, 'icon': '', 'url': createLink('task', 'move', "taskID=" + task.id + "&groupID=" + task.kanbanGroup), 'attrs': {'data-toggle': 'modal', 'data-width': 400}}, - 'copy': {'label': taskLang.copy, 'icon': '', 'url': createLink('task', 'copy', "taskID=" + task.id + "&from=kanban"), 'attrs': {'data-toggle': 'modal', 'data-width': '1000px'}}, - 'start': {'label': taskLang.start, 'icon': '', 'url': createLink('task', 'start', "taskID=" + task.id + "&from=kanban"), 'attrs': {'data-toggle': 'modal'}}, - 'finish': {'label': taskLang.finish, 'icon': '', 'url': createLink('task', 'finish', "taskID=" + task.id + "&from=kanban"), 'attrs': {'data-toggle': 'modal'}}, - 'activate': {'label': taskLang.activate, 'icon': '', 'url': createLink('task', 'activate', "taskID=" + task.id + "&from=kanban"), 'attrs': {'data-toggle': 'modal'}}, - 'cancel': {'label': taskLang.cancel, 'icon': '', 'url': createLink('task', 'cancel', "taskID=" + task.id + "&from=kanban"), 'attrs': {'data-toggle': 'modal'}}, - 'close': {'label': taskLang.close, 'icon': '', 'url': createLink('task', 'close', "taskID=" + task.id + "&from=kanban"), 'attrs': {'data-toggle': 'modal'}}, - 'archive': {'label': taskLang.archive, 'icon': '', 'url': createLink('task', 'archive', "taskID=" + task.id + "&from=kanban"), 'attrs': {'class': 'confirmer', 'data-confirmTitle': taskLang.confirmArchive, 'data-confirmDetail': taskLang.confirmArchiveDetail, 'data-confirmButton': taskLang.archive, 'data-confirming': taskLang.archiving}}, - 'delete': {'label': taskLang.delete, 'icon': '', 'url': createLink('task', 'delete', "taskID=" + task.id + '&from=kanban'), 'attrs': {'class': 'confirmer', 'data-confirmTitle': taskLang.confirmDelete, 'data-confirmDetail': taskLang.confirmDeleteDetail}}, - 'setColor': {'label': taskLang.setColor, 'icon': '', 'url': createLink('task', 'setColor', "taskID=" + task.id), 'attrs': {'data-toggle': 'modal', 'data-width': 400}}, - }; - var items = []; - $.each(actions, function(actionKey, actionItem) - { - if(privs.includes(actionKey)) items.push({label: actionItem.label, icon: '', url: actionItem.url, attrs: actionItem.attrs}); - }); + if(privs.includes('editCard')) items.push({label: kanbanLang.editCard, icon: 'edit', url: createLink('kanban', 'editCard', 'cardID=' + card.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}}); + if(privs.includes('archiveCard')) items.push({label: kanbanLang.archiveCard, icon: 'card-archive', url: createLink('kanban', 'archiveCard', 'cardID=' + card.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); + if(privs.includes('copyCard')) items.push({label: kanbanLang.copyCard, icon: 'copy', url: createLink('kanban', 'copyCard', 'cardID=' + card.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); + if(privs.includes('deleteCard')) items.push({label: kanbanLang.deleteCard, icon: 'trash', url: createLink('kanban', 'deleteCard', 'cardID=' + card.id), className: 'confirmer', attrs: {'data-confirmTitle': kanbancolumnLang.confirmDelete, 'data-confirmDetail': kanbancolumnLang.confirmDeleteDetail}}); + if(privs.includes('moveCard')) items.push({label: kanbanLang.moveCard, icon: 'move', url: createLink('kanban', 'moveCard', 'cardID=' + card.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); + if(privs.includes('setCardColor')) items.push({label: kanbanLang.cardColor, icon: 'color', url: createLink('kanban', 'setCardColor', 'cardID=' + card.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); var bounds = options.$trigger[0].getBoundingClientRect(); items.$options = {x: bounds.right, y: bounds.top}; @@ -672,7 +659,7 @@ function createColumnMenu(options) /* Define menu creators */ window.menuCreators = { - task: createTaskMenu, + card: createCardMenu, lane: createLaneMenu, column: createColumnMenu }; diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php index a618179261..ace297e82b 100644 --- a/module/kanban/lang/en.php +++ b/module/kanban/lang/en.php @@ -27,6 +27,10 @@ $lang->kanban->editCard = 'Edit Card'; $lang->kanban->viewCard = 'View Card'; $lang->kanban->archiveCard = 'Archive Card'; $lang->kanban->sortCard = 'Sort Card'; +$lang->kanban->copyCard = 'Copy Card'; +$lang->kanban->moveCard = 'Move Card'; +$lang->kanban->cardColor = 'Card Color'; +$lang->kanban->deleteCard = 'Delete Card'; $lang->kanban->setting = 'Setting'; $lang->kanban->splitColumn = 'Split Column'; $lang->kanban->createColumnOnLeft = 'Create Column On Left'; @@ -53,6 +57,7 @@ $lang->kanban->closedBy = 'Closed By'; $lang->kanban->closedDate = 'Closed Date'; $lang->kanban->empty = 'No Kanban'; $lang->kanban->teamSumCount = '%s people in total'; + $lang->kanban->createColumnOnLeft = 'Create Column On Left'; $lang->kanban->createColumnOnRight = 'Create Column On Right'; @@ -228,23 +233,25 @@ $lang->kanbancard->delete = 'Delete'; $lang->kanbancard->name = 'Card Name'; $lang->kanbancard->legendBasicInfo = 'Basic Info'; $lang->kanbancard->legendLifeTime = 'Card Life'; -$lang->kanbancard->space = 'Space'; -$lang->kanbancard->lane = 'Lane'; -$lang->kanbancard->column = 'Column'; -$lang->kanbancard->assignedTo = 'Assignee'; -$lang->kanbancard->beginAndEnd = 'Begin And End'; -$lang->kanbancard->begin = 'Begin'; -$lang->kanbancard->end = 'End'; -$lang->kanbancard->pri = 'Priority'; -$lang->kanbancard->desc = 'Description'; -$lang->kanbancard->estimate = 'Estimate'; -$lang->kanbancard->createdBy = 'Created By'; -$lang->kanbancard->createdDate = 'Created Date'; -$lang->kanbancard->lastEditedBy = 'Last Edited By'; -$lang->kanbancard->lastEditedDate = 'Last Edited Date'; -$lang->kanbancard->lblHour = 'h'; -$lang->kanbancard->noAssigned = 'No Assigned'; -$lang->kanbancard->deadlineAB = 'DL'; +$lang->kanbancard->space = 'Space'; +$lang->kanbancard->lane = 'Lane'; +$lang->kanbancard->column = 'Column'; +$lang->kanbancard->assignedTo = 'Assignee'; +$lang->kanbancard->beginAndEnd = 'Begin And End'; +$lang->kanbancard->begin = 'Begin'; +$lang->kanbancard->end = 'End'; +$lang->kanbancard->pri = 'Priority'; +$lang->kanbancard->desc = 'Description'; +$lang->kanbancard->estimate = 'Estimate'; +$lang->kanbancard->createdBy = 'Created By'; +$lang->kanbancard->createdDate = 'Created Date'; +$lang->kanbancard->lastEditedBy = 'Last Edited By'; +$lang->kanbancard->lastEditedDate = 'Last Edited Date'; +$lang->kanbancard->archivedBy = 'Archived By'; +$lang->kanbancard->archivedDate = 'Archived Date'; +$lang->kanbancard->lblHour = 'h'; +$lang->kanbancard->noAssigned = 'No Assigned'; +$lang->kanbancard->deadlineAB = 'DL'; $lang->kanbancard->priList[1] = 1; $lang->kanbancard->priList[2] = 2; diff --git a/module/kanban/lang/zh-cn.php b/module/kanban/lang/zh-cn.php index c066859c1e..7e9a6338fe 100644 --- a/module/kanban/lang/zh-cn.php +++ b/module/kanban/lang/zh-cn.php @@ -27,6 +27,10 @@ $lang->kanban->editCard = '编辑卡片'; $lang->kanban->viewCard = '查看卡片'; $lang->kanban->archiveCard = '归档卡片'; $lang->kanban->sortCard = '卡片排序'; +$lang->kanban->copyCard = '复制卡片'; +$lang->kanban->moveCard = '移动卡片'; +$lang->kanban->cardColor = '卡片颜色'; +$lang->kanban->deleteCard = '删除卡片'; $lang->kanban->setting = '设置'; $lang->kanban->splitColumn = '新增子看板列'; $lang->kanban->createColumnOnLeft = '左侧新增看板列'; diff --git a/module/kanban/model.php b/module/kanban/model.php index f8ac03392e..8b561d1373 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -570,7 +570,7 @@ class kanbanModel extends model //->orderBy('`order` asc') ->fetchAll('id'); - $actions = array('editcard', 'movecard', 'copycard', 'startcard', 'finishcard', 'activatecard', 'cancelcard', 'closecard', 'archivecard', 'deletecard', 'setcardcolor'); + $actions = array('editCard', 'archiveCard', 'copyCard', 'deleteCard', 'moveCard', 'setCardColor'); $cardGroup = array(); foreach($cards as $card) { From c6538afacc1bdab570303b5cd60874e049b413b9 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Tue, 14 Dec 2021 17:07:03 +0800 Subject: [PATCH 3/9] * Fix the display error of the board. --- module/kanban/js/view.js | 4 ++-- module/kanban/model.php | 15 +++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 4689dd832b..211103a36a 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -197,11 +197,11 @@ function renderKanbanItem(item, $item) var $title = $item.children('.title'); if(!$title.length) { - $title = $('') + $title = $('') .appendTo($item); } $title.text(item.name); - $title.attr('href', createLink('kanban', 'viewCard', 'cardID=' + item.id)); + $title.attr('href', createLink('kanban', 'viewCard', 'cardID=' + item.id, '', true)); if(item.actions.length) { diff --git a/module/kanban/model.php b/module/kanban/model.php index 8b561d1373..568a0840ec 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -734,7 +734,8 @@ class kanbanModel extends model ->page($pager) ->fetchAll('id'); - $kanbanGroup = $this->getGroupBySpaceList(array_keys($spaceList)); + $kanbanIdList = $this->getCanViewObjects(); + $kanbanGroup = $this->getGroupBySpaceList(array_keys($spaceList), $kanbanIdList); foreach($spaceList as $spaceID => $space) { if(isset($kanbanGroup[$spaceID])) $space->kanbans = $kanbanGroup[$spaceID]; @@ -858,6 +859,8 @@ class kanbanModel extends model ->remove('uid,contactListMenu') ->get(); + $space->whitelist = $space->acl == 'open' ? '' : $space->whitelist; + $space = $this->loadModel('file')->processImgURL($space, $this->config->kanban->editor->editspace['id'], $this->post->uid); $this->dao->update(TABLE_KANBANSPACE)->data($space) @@ -997,7 +1000,9 @@ class kanbanModel extends model ->remove('uid,contactListMenu') ->get(); - $kanban = $this->loadModel('file')->processImgURL($kanban, $this->config->kanban->editor->edit['id'], $this->post->uid); + $kanban->whitelist = $kanban->acl == 'open' ? '' : $kanban->whitelist; + + $kanban = $this->loadModel('file')->processImgURL($kanban, $this->config->kanban->editor->edit['id'], $this->post->uid); $this->dao->update(TABLE_KANBAN)->data($kanban) ->autoCheck() @@ -1771,15 +1776,17 @@ class kanbanModel extends model /** * Get kanban group by space id list. * - * @param int $spaceIdList + * @param array|string $spaceIdList + * @param array|string $kanbanIdList * @access public * @return array */ - public function getGroupBySpaceList($spaceIdList) + public function getGroupBySpaceList($spaceIdList, $kanbanIdList = '') { return $this->dao->select('*')->from(TABLE_KANBAN) ->where('deleted')->eq(0) ->andWhere('space')->in($spaceIdList) + ->beginIF($kanbanIdList)->andWhere('id')->in($kanbanIdList)->fi() ->fetchGroup('space', 'id'); } From 6b3bd72ef191599f3c99a42451feab711ee256a7 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Tue, 14 Dec 2021 17:24:03 +0800 Subject: [PATCH 4/9] * Fix card details style. --- module/kanban/view/viewcard.html.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/module/kanban/view/viewcard.html.php b/module/kanban/view/viewcard.html.php index 5816eb6edd..605d7a5edb 100644 --- a/module/kanban/view/viewcard.html.php +++ b/module/kanban/view/viewcard.html.php @@ -53,10 +53,10 @@
-
-
- kanbancard->legendBasicInfo;?> -
+
+ @@ -101,10 +101,10 @@
-
-
- kanbancard->legendLifeTime;?> -
+
kanbancard->assignedTo;?>
From 9096817ac5b756aad6782cd18fdd5fab67689e17 Mon Sep 17 00:00:00 2001 From: tanghucheng Date: Tue, 14 Dec 2021 19:02:48 +0800 Subject: [PATCH 5/9] * Fix bug #17535. --- module/my/control.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/module/my/control.php b/module/my/control.php index 2d6e55b845..ccd55eaa9b 100644 --- a/module/my/control.php +++ b/module/my/control.php @@ -719,12 +719,16 @@ class my extends control /* Set the pager. */ $this->app->loadClass('pager', $static = true); if($this->app->getViewType() == 'mhtml') $recPerPage = 10; - $pager = pager::init($recTotal, $recPerPage, $pageID); + $pager = pager::init($recTotal, $recPerPage, $pageID); + $ncList = $this->my->getNcList($browseType, $orderBy, $pager); + + foreach($ncList as $nc) $ncIdList[] = $nc->id; + $this->session->set('ncIdList', isset($ncIdList) ? $ncIdList : ''); $this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->nc; $this->view->position[] = $this->lang->my->nc; $this->view->browseType = $browseType; - $this->view->ncs = $this->my->getNcList($browseType, $orderBy, $pager); + $this->view->ncs = $ncList; $this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter'); $this->view->projects = $this->loadModel('project')->getPairsByProgram(0); $this->view->pager = $pager; From f1289a8d1a53320d1997986604610d1995ea5aae Mon Sep 17 00:00:00 2001 From: liumengyi Date: Wed, 15 Dec 2021 09:01:33 +0800 Subject: [PATCH 6/9] * Modify set wip method. --- module/kanban/js/setwip.js | 1 + module/kanban/model.php | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/module/kanban/js/setwip.js b/module/kanban/js/setwip.js index 57747bbe53..c1506dfd42 100644 --- a/module/kanban/js/setwip.js +++ b/module/kanban/js/setwip.js @@ -4,6 +4,7 @@ $(function() { if($(this).attr('checked') == 'checked') { + $('#WIPCount').val(''); $('#WIPCount').attr('disabled', true); } else diff --git a/module/kanban/model.php b/module/kanban/model.php index 568a0840ec..fe0c656305 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -221,10 +221,10 @@ class kanbanModel extends model if(!$column->limit && empty($column->noLimit)) dao::$errors['limit'][] = sprintf($this->lang->error->notempty, $this->lang->kanban->WIP); if(!preg_match("/^-?\d+$/", $column->limit)) - { + { dao::$errors['limit'] = $this->lang->kanban->error->mustBeInt; return false; - } + } if(dao::isError()) return false; $column->limit = (int)$column->limit; @@ -248,7 +248,7 @@ class kanbanModel extends model { $limit += (int)$childColumn->limit; if($limit > $parentColumn->limit) - { + { /* The total WIP of the child columns is greater than the WIP of the parent column. */ dao::$errors['limit'][] = $this->lang->kanban->error->childLimitNote; return false; @@ -299,8 +299,8 @@ class kanbanModel extends model return false; } - if($this->post->begin > $this->post->end) - { + if($this->post->begin > $this->post->end) + { dao::$errors[] = $this->lang->kanbancard->error->endSmall; return false; } @@ -790,7 +790,7 @@ class kanbanModel extends model if($object->owner == $account) $remove = false; if(strpos(",{$object->team},", ",$account,") !== false) $remove = false; if(strpos(",{$object->whitelist},", ",$account,") !== false) $remove = false; - if($objectType == 'kanban') + if($objectType == 'kanban') { $parentOwner = isset($spaceOwnerPairs[$object->space]) ? $spaceOwnerPairs[$object->space] : ''; if(strpos(",$parentOwner,", ",$account,") !== false) $remove = false; @@ -940,7 +940,7 @@ class kanbanModel extends model $laneID = $this->dao->lastInsertID(); return $laneID; } - + /* * Create a kanban. * @@ -1588,7 +1588,7 @@ class kanbanModel extends model { $oldColumn = $this->getColumnById($columnID); $column = fixer::input('post')->remove('WIPCount,noLimit')->get(); - if(!preg_match("/^-?\d+$/", $column->limit)) + if(!preg_match("/^-?\d+$/", $column->limit) or (!isset($_POST['noLimit']) and $column->limit < 0)) { dao::$errors['limit'] = $this->lang->kanban->error->mustBeInt; return false; From 610d12a632c2675f55722911092466bead300baf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B9=BF=E6=98=8E?= Date: Wed, 15 Dec 2021 10:09:07 +0800 Subject: [PATCH 7/9] * Code for card info. --- module/kanban/css/view.css | 19 ++++++++++--------- module/kanban/js/view.js | 9 +++++++-- module/kanban/view/view.html.php | 1 - 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/module/kanban/css/view.css b/module/kanban/css/view.css index 9362b65e3b..c2392a81c8 100644 --- a/module/kanban/css/view.css +++ b/module/kanban/css/view.css @@ -58,15 +58,16 @@ body {background-color: #fff} .region .kanban-lane-items {overflow: auto; padding-bottom: 10px;} .region .kanban-item {position: relative} -.region .kanban-item > .title {display: block; max-height: 38px; overflow: hidden; color: inherit; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;} -.region .kanban-item > .title:hover {color: #2272eb} -.region .kanban-item > .info {margin-top: 5px; position: relative;} -.region .kanban-item > .info > .pri {height: 14px; border-width: 1px; font-size: 12px; line-height: 12px; min-width: 14px; padding: 0 1px;} -.region .kanban-item > .info > .time {margin-left: 10px; font-size: 12px} -.region .kanban-item > .info > .user {position: absolute; right: 0; top: 0} -.region .kanban-item > .actions {position: absolute; top: 0px; right: 4px; opacity: 0;} -.region .kanban-item > .actions > a {display: block; float: left; width: 20px; height: 20px; line-height: 20px; text-align: center; border-radius: 4px; opacity: .7;} -.region .kanban-item > .actions > a:hover {background-color: rgba(0,0,0,.075); opacity: 1;} +.region .kanban-item > .kanban-card > .title {display: block; max-height: 38px; overflow: hidden; color: inherit; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;} +.region .kanban-item > .kanban-card > .title:hover {color: #2272eb} +.region .kanban-item > .kanban-card > .info {margin-top: 5px; position: relative;} +.region .kanban-item > .kanban-card > .info > .pri {height: 14px; border-width: 1px; font-size: 12px; line-height: 12px; min-width: 14px; padding: 0 1px;} +.region .kanban-item > .kanban-card > .info > .estimate{margin-left: 10px; color: #999} +.region .kanban-item > .kanban-card > .info > .time {margin-left: 10px; font-size: 12px; background: rgb(242, 242, 242)} +.region .kanban-item > .kanban-card > .info > .user {position: absolute; right: 0; top: 0} +.region .kanban-item > .kanban-card > .actions {position: absolute; top: 0px; right: 4px; opacity: 0;} +.region .kanban-item > .kanban-card > .actions > a {display: block; float: left; width: 20px; height: 20px; line-height: 20px; text-align: center; border-radius: 4px; opacity: .7;} +.region .kanban-item > .kanban-card > .actions > a:hover {background-color: rgba(0,0,0,.075); opacity: 1;} .region .kanban-item:hover > .actions {opacity: 1;} .region .kanban-item.has-color .title, .region .kanban-item.has-color .actions .icon-more-v, diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 211103a36a..67eeeaf726 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -26,7 +26,7 @@ function fullScreen() { var afterEnterFullscreen = function() { - $('#mainContent').addClass('scrollbar-hover'); + $('#kanban').css('background', '#fff'); $.cookie('isFullScreen', 1); }; @@ -200,6 +200,7 @@ function renderKanbanItem(item, $item) $title = $('') .appendTo($item); } + $title.attr('title',item.name); $title.text(item.name); $title.attr('href', createLink('kanban', 'viewCard', 'cardID=' + item.id, '', true)); @@ -220,6 +221,7 @@ function renderKanbanItem(item, $item) [ '
', '', + '', '', '
', '
' @@ -227,6 +229,9 @@ function renderKanbanItem(item, $item) $item.data('card', item); + $info.children('.estimate') + .text(item.estimate + kanbancardLang.lblHour); + $info.children('.pri') .attr('class', 'pri label-pri label-pri-' + item.pri) .text(item.pri); @@ -235,7 +240,7 @@ function renderKanbanItem(item, $item) if(item.end && item.end !== '0000-00-00') { var end = $.zui.createDate(item.end); - var today = $.zui.createDate(today); + var today = new Date(); var isExpired = end.getTime() < today.getTime(); var dateFormat = (today.getFullYear() === end.getFullYear() ? 'MM-dd ' : 'yyyy-MM-dd ') + kanbancardLang.deadlineAB; $time.text($.zui.formatDate(end, dateFormat)) diff --git a/module/kanban/view/view.html.php b/module/kanban/view/view.html.php index 4690afa988..5f5bef06f1 100644 --- a/module/kanban/view/view.html.php +++ b/module/kanban/view/view.html.php @@ -12,7 +12,6 @@ js::set('kanbancolumnLang', $lang->kanbancolumn); js::set('kanbancardLang', $lang->kanbancard); js::set('kanbanID', $kanban->id); js::set('laneCount', $laneCount); -js::set('today', helper::today()); js::set('userList', $userList); js::set('priv', From d97494e257f127ef91ada23ba7aa559c65ee3caa Mon Sep 17 00:00:00 2001 From: tanghucheng Date: Wed, 15 Dec 2021 11:14:15 +0800 Subject: [PATCH 8/9] * Code for stage. --- module/programplan/lang/en.php | 2 +- module/programplan/lang/zh-cn.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/module/programplan/lang/en.php b/module/programplan/lang/en.php index 3431b93611..5a6a4ed3ab 100644 --- a/module/programplan/lang/en.php +++ b/module/programplan/lang/en.php @@ -10,7 +10,7 @@ * @link http://www.zentao.net */ $lang->programplan->common = 'Program Plan'; -$lang->programplan->browse = 'Program Plan'; +$lang->programplan->browse = 'Gantt Chart'; $lang->programplan->gantt = 'Gantt Chart'; $lang->programplan->list = 'Stage List'; $lang->programplan->create = 'Create'; diff --git a/module/programplan/lang/zh-cn.php b/module/programplan/lang/zh-cn.php index 627a2e5d4b..ef8951ee19 100644 --- a/module/programplan/lang/zh-cn.php +++ b/module/programplan/lang/zh-cn.php @@ -10,7 +10,7 @@ * @link http://www.zentao.net */ $lang->programplan->common = '项目阶段'; -$lang->programplan->browse = '浏览阶段计划'; +$lang->programplan->browse = '浏览甘特图'; $lang->programplan->gantt = '甘特图'; $lang->programplan->list = '阶段列表'; $lang->programplan->create = '设置阶段'; From 0ab00d203763e9c0a6ca9328fe03106af3f0597f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B9=BF=E6=98=8E?= Date: Wed, 15 Dec 2021 13:13:07 +0800 Subject: [PATCH 9/9] * Code details. --- module/kanban/js/setwip.js | 2 +- module/kanban/js/view.js | 17 +++++++++++++++-- module/kanban/lang/en.php | 34 +++++++++++++++++----------------- 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/module/kanban/js/setwip.js b/module/kanban/js/setwip.js index c1506dfd42..766ae76518 100644 --- a/module/kanban/js/setwip.js +++ b/module/kanban/js/setwip.js @@ -23,7 +23,7 @@ $(function() function setWIPLimit() { var count = $('#WIPCount').val(); - if($('#noLimit').attr('checked') == 'checked') count = -1;; + if($('#noLimit').attr('checked') == 'checked') count = -1; $('#limit').val(count); } diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 67eeeaf726..9cc96cb498 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -229,8 +229,7 @@ function renderKanbanItem(item, $item) $item.data('card', item); - $info.children('.estimate') - .text(item.estimate + kanbancardLang.lblHour); + $info.children('.estimate').text(item.estimate + kanbancardLang.lblHour); $info.children('.pri') .attr('class', 'pri label-pri label-pri-' + item.pri) @@ -602,6 +601,13 @@ function processMinusBtn() } } +/** + * Create lane menu. + * + * @param object $options + * @access public + * @return void + */ function createLaneMenu(options) { var lane = options.$trigger.closest('.kanban-lane').data('lane'); @@ -617,6 +623,13 @@ function createLaneMenu(options) return items; } +/** + * Create card menu; + * + * @param object $options + * @access public + * @return void + */ function createCardMenu(options) { var card = options.$trigger.closest('.kanban-item').data('item'); diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php index ace297e82b..796c5f2ad4 100644 --- a/module/kanban/lang/en.php +++ b/module/kanban/lang/en.php @@ -40,23 +40,23 @@ $lang->kanban->archiveColumn = 'Archive Column'; $lang->kanban->spaceCommon = 'Kanban Space'; /* Fields. */ -$lang->kanban->space = 'Space'; -$lang->kanban->name = 'Name'; -$lang->kanban->owner = 'Owner'; -$lang->kanban->team = 'Team'; -$lang->kanban->desc = 'Description'; -$lang->kanban->acl = 'ACL'; -$lang->kanban->whitelist = 'White List'; -$lang->kanban->status = 'Status'; -$lang->kanban->createdBy = 'Created By'; -$lang->kanban->createdDate = 'Created Date'; -$lang->kanban->lastEditedBy = 'Edited By'; -$lang->kanban->lastEditedDate = 'Edited Date'; -$lang->kanban->closed = 'Closed'; -$lang->kanban->closedBy = 'Closed By'; -$lang->kanban->closedDate = 'Closed Date'; -$lang->kanban->empty = 'No Kanban'; -$lang->kanban->teamSumCount = '%s people in total'; +$lang->kanban->space = 'Space'; +$lang->kanban->name = 'Name'; +$lang->kanban->owner = 'Owner'; +$lang->kanban->team = 'Team'; +$lang->kanban->desc = 'Description'; +$lang->kanban->acl = 'ACL'; +$lang->kanban->whitelist = 'White List'; +$lang->kanban->status = 'Status'; +$lang->kanban->createdBy = 'Created By'; +$lang->kanban->createdDate = 'Created Date'; +$lang->kanban->lastEditedBy = 'Edited By'; +$lang->kanban->lastEditedDate = 'Edited Date'; +$lang->kanban->closed = 'Closed'; +$lang->kanban->closedBy = 'Closed By'; +$lang->kanban->closedDate = 'Closed Date'; +$lang->kanban->empty = 'No Kanban'; +$lang->kanban->teamSumCount = '%s people in total'; $lang->kanban->createColumnOnLeft = 'Create Column On Left'; $lang->kanban->createColumnOnRight = 'Create Column On Right';
kanbancard->createdBy;?>