diff --git a/db/update16.5.sql b/db/update16.5.sql index cc8ec8e1e1..73162f6d57 100644 --- a/db/update16.5.sql +++ b/db/update16.5.sql @@ -90,6 +90,16 @@ DELETE FROM `zt_config` WHERE `section` = 'customMenu'; UPDATE `zt_story` SET `plan` = '' WHERE `plan` = 0; +UPDATE `zt_workflowfield` set `control` = 'datetime' WHERE `module` = 'testcase' and `field` IN ('openedDate','reviewedDate','lastEditedDate','lastRunDate'); + +UPDATE `zt_workflowfield` set `control` = 'date' WHERE `module` = 'testtask' and `field` IN ('begin','end'); +UPDATE `zt_workflowfield` set `control` = 'richtext' WHERE `module` = 'testtask' and `field` = 'desc'; + +UPDATE `zt_workflowfield` set `control` = 'datetime' WHERE `module` IN ('testsuite','caselib') and `field` IN ('addedDate','lastEditedDate'); +UPDATE `zt_workflowfield` set `control` = 'richtext' WHERE `module` = 'testsuite' and `field` = 'desc'; + +UPDATE `zt_workflowfield` set `control` = 'datetime' WHERE `module` = 'feedback' and `field` IN ('openedDate','reviewedDate','processedDate','closedDate','editedDate','assignedDate'); + UPDATE `zt_workflowfield` SET `control` = 'datetime' WHERE `module` = 'product' and `field` = 'createdDate'; UPDATE `zt_workflowfield` SET `control` = 'date' WHERE `module` = 'productplan' and `field` = 'begin'; UPDATE `zt_workflowfield` SET `control` = 'date' WHERE `module` = 'productplan' and `field` = 'end'; diff --git a/module/custom/model.php b/module/custom/model.php index aa725021d4..a8ffc88a32 100644 --- a/module/custom/model.php +++ b/module/custom/model.php @@ -251,7 +251,9 @@ class customModel extends model foreach($item['subMenu'] as $subMenu) { if(!isset($subMenu['link']) or strpos($subMenu['link'], '|') === false) continue; - list($subLabel, $module, $method, $vars) = explode('|', $subMenu['link']); + list($subLabel, $module, $method) = explode('|', $subMenu['link']); + if(count(explode('|', $subMenu['link'])) > 3) list($subLabel, $module, $method, $vars) = explode('|', $subMenu['link']); + $hasPriv = commonModel::hasPriv($module, $method); if($hasPriv) break; } diff --git a/module/execution/js/kanban.js b/module/execution/js/kanban.js index ff3a64f56c..b125445210 100644 --- a/module/execution/js/kanban.js +++ b/module/execution/js/kanban.js @@ -328,6 +328,10 @@ if(!window.kanbanDropRules) { backlog: ['ready', 'backlog'], ready: ['backlog', 'ready'], + tested: ['verified'], + verified: ['tested', 'released'], + released: ['verified', 'closed'], + closed: ['released'], }, bug: { @@ -957,7 +961,12 @@ function changeCardColType(cardID, fromColID, toColID, fromLaneID, toLaneID, car /* Story lane. */ if(cardType == 'story') { - if(toColType == 'ready' || toColType == 'backlog') + if(toColType == 'closed' && priv.canCloseStory) + { + var link = createLink('story', 'close', 'storyID=' + objectID, '', true); + showIframe = true; + } + else { if(toColType == 'ready' && typeof(reviewStoryParis[objectID]) != 'undefined') { diff --git a/module/execution/js/taskkanban.js b/module/execution/js/taskkanban.js index 8df8beb996..56a6cf5af4 100644 --- a/module/execution/js/taskkanban.js +++ b/module/execution/js/taskkanban.js @@ -480,6 +480,10 @@ if(!window.kanbanDropRules) { backlog: ['ready'], ready: ['backlog'], + tested: ['verified'], + verified: ['tested', 'released'], + released: ['verified', 'closed'], + closed: ['released'], }, bug: { @@ -495,7 +499,7 @@ if(!window.kanbanDropRules) { 'wait': ['developing', 'developed', 'canceled', 'closed'], 'developing': ['developed', 'pause', 'canceled'], - 'developed': ['closed'], + 'developed': ['developing', 'closed'], 'pause': ['developing'], 'canceled': ['developing'], 'closed': ['developing'], @@ -683,7 +687,12 @@ function changeCardColType(cardID, fromColID, toColID, fromLaneID, toLaneID, car /* Story lane. */ if(cardType == 'story') { - if(toColType == 'ready' || toColType == 'backlog') + if(toColType == 'closed' && priv.canCloseStory) + { + var link = createLink('story', 'close', 'storyID=' + objectID, '', true); + showIframe = true; + } + else { if(toColType == 'ready' && typeof(reviewStoryParis[objectID]) != 'undefined') { @@ -706,7 +715,7 @@ function changeCardColType(cardID, fromColID, toColID, fromLaneID, toLaneID, car updateKanban(browseType, kanbanGroup[groupBy]); } } - }) + }); } } diff --git a/module/execution/view/burn.html.php b/module/execution/view/burn.html.php index 71da19f850..2d0bd26ae7 100644 --- a/module/execution/view/burn.html.php +++ b/module/execution/view/burn.html.php @@ -22,7 +22,7 @@