From fdf4477718517fcb2b4ebd7277490eb85078ad84 Mon Sep 17 00:00:00 2001 From: qishiyao Date: Wed, 17 Jan 2024 10:52:28 +0800 Subject: [PATCH 01/22] * Update ext branchNames for ci.json --- ci.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci.json b/ci.json index a0f731b9bb..ccaddd050e 100644 --- a/ci.json +++ b/ci.json @@ -5,7 +5,7 @@ "version": "8.0" }, "zentaoext": { - "gitVersion": "release-18.10", + "gitVersion": "release-ipd1.2", "gitRepo": "easycorp/zentaoext" }, "zdoo": { @@ -15,7 +15,7 @@ "gitVersion": "master" }, "downgrade": { - "gitVersion": "release-18.10", + "gitVersion": "release-ipd1.2", "gitRepo": "devops/zentaopms-downgrade" } }, From e21d3aee4fce04928577771dfeec31a4fd202fcc Mon Sep 17 00:00:00 2001 From: zhouxin Date: Wed, 17 Jan 2024 11:17:16 +0800 Subject: [PATCH 02/22] * Compatible with php5.4. --- module/pivot/model.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/module/pivot/model.php b/module/pivot/model.php index d89b0e3f6b..9a19fa3b1e 100644 --- a/module/pivot/model.php +++ b/module/pivot/model.php @@ -1594,18 +1594,18 @@ class pivotModel extends model switch($stat) { case 'sum': - $sliceGroupRecord->$fieldKey[$stat] += $floatValue; + $sliceGroupRecord->{$fieldKey}[$stat] += $floatValue; break; case 'avg': case 'max': case 'min': - $sliceGroupRecord->$fieldKey[$stat][] = $floatValue; + $sliceGroupRecord->{$fieldKey}[$stat][] = $floatValue; break; case 'count': - $sliceGroupRecord->$fieldKey[$stat] += 1; + $sliceGroupRecord->{$fieldKey}[$stat] += 1; break; case 'distinct': - $sliceGroupRecord->$fieldKey[$stat][] = $value; + $sliceGroupRecord->{$fieldKey}[$stat][] = $value; break; } } @@ -1619,7 +1619,7 @@ class pivotModel extends model /* Skip the group field directly. */ if(in_array($sliceField, $groups)) continue; - $sliceStat = $sliceRecord->$sliceField[$stat]; + $sliceStat = $sliceRecord->{$sliceField}[$stat]; switch($stat) { case 'sum': From 1a49c4d84840372ccf46b9f369f1f02f14094e28 Mon Sep 17 00:00:00 2001 From: tanghucheng Date: Thu, 18 Jan 2024 11:07:16 +0800 Subject: [PATCH 03/22] * Finish task #110602. --- module/bug/control.php | 2 + module/execution/control.php | 4 ++ module/group/packagemanager.php | 84 +++++++++++++++++--------------- module/my/control.php | 4 ++ module/my/view/bug.html.php | 7 ++- module/my/view/story.html.php | 7 ++- module/my/view/task.html.php | 7 ++- module/my/view/testcase.html.php | 7 ++- module/project/control.php | 1 + module/story/control.php | 2 +- module/story/model.php | 77 +++++++++++++++++++++++++++++ module/task/control.php | 2 + module/testcase/control.php | 2 + 13 files changed, 161 insertions(+), 45 deletions(-) diff --git a/module/bug/control.php b/module/bug/control.php index 9efa33eed8..6fb228090f 100755 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -227,6 +227,7 @@ class bug extends control $branchTagOption[$branchInfo->id] = $branchInfo->name . ($branchInfo->status == 'closed' ? ' (' . $this->lang->branch->statusList['closed'] . ')' : ''); } } + if($this->config->edition == 'ipd') $bugs = $this->loadModel('story')->getAffectObject($bugs, 'bug'); /* Set view. */ $this->view->title = $productName . $this->lang->colon . $this->lang->bug->common; @@ -935,6 +936,7 @@ class bug extends control $this->session->set("project", key($projects), 'project'); $this->executeHooks($bugID); + if($this->config->edition == 'ipd') $bug = $this->loadModel('story')->getAffectObject('', 'bug', $bug); /* Header and positon. */ $this->view->title = "BUG #$bug->id $bug->title - " . $product->name; diff --git a/module/execution/control.php b/module/execution/control.php index e6b21bc307..760624a25c 100644 --- a/module/execution/control.php +++ b/module/execution/control.php @@ -232,6 +232,7 @@ class execution extends control $this->config->execution->search['onMenuBar'] = 'yes'; if(!$execution->multiple) unset($this->config->execution->search['fields']['execution']); $this->execution->buildTaskSearchForm($executionID, $this->executions, $queryID, $actionURL, $modules); + if($this->config->edition == 'ipd') $tasks = $this->loadModel('story')->getAffectObject($tasks, 'task'); /* Assign. */ $this->view->tasks = $tasks; @@ -1150,6 +1151,8 @@ class execution extends control $tree = $moduleID ? $this->tree->getByID($moduleID) : ''; $showModule = !empty($this->config->datatable->executionBug->showModule) ? $this->config->datatable->executionBug->showModule : ''; + if($this->config->edition == 'ipd') $bugs = $this->loadModel('story')->getAffectObject($bugs, 'bug'); + /* Assign. */ $this->view->title = $title; @@ -1244,6 +1247,7 @@ class execution extends control $moduleTree = $this->tree->getTreeMenu($productID, 'case', 0, array('treeModel', 'createCaseLink'), array('projectID' => $executionID, 'productID' => $productID), $branchID); } $tree = $moduleID ? $this->tree->getByID($moduleID) : ''; + if($this->config->edition == 'ipd') $cases = $this->loadModel('story')->getAffectObject($cases, 'case'); $this->view->title = $this->lang->execution->testcase; $this->view->executionID = $executionID; diff --git a/module/group/packagemanager.php b/module/group/packagemanager.php index a50cfa30a5..73aa8e7433 100644 --- a/module/group/packagemanager.php +++ b/module/group/packagemanager.php @@ -709,27 +709,28 @@ $config->group->package->manageStory = new stdclass(); $config->group->package->manageStory->order = 10; $config->group->package->manageStory->subset = 'story'; $config->group->package->manageStory->privs = array(); -$config->group->package->manageStory->privs['story-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 0, 'depend' => array(), 'recommend' => array('story-activate', 'story-assignTo', 'story-batchCreate', 'story-change', 'story-close', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relation', 'story-relieved', 'story-submitReview')); -$config->group->package->manageStory->privs['story-batchCreate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 1, 'depend' => array('product-browse'), 'recommend' => array('story-create')); -$config->group->package->manageStory->privs['story-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 2, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-batchEdit', 'story-change', 'story-close', 'story-create', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); -$config->group->package->manageStory->privs['story-change'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 4, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); -$config->group->package->manageStory->privs['story-submitReview'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 5, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved')); -$config->group->package->manageStory->privs['story-recall'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 6, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-relieved', 'story-submitReview')); -$config->group->package->manageStory->privs['story-close'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 7, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); -$config->group->package->manageStory->privs['story-batchClose'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 8, 'depend' => array('product-browse'), 'recommend' => array('story-close')); -$config->group->package->manageStory->privs['story-batchChangePlan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 9, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); -$config->group->package->manageStory->privs['story-batchChangeStage'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 10, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); -$config->group->package->manageStory->privs['story-assignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 11, 'depend' => array('product-browse'), 'recommend' => array('story-activate', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); -$config->group->package->manageStory->privs['story-batchAssignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 12, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); -$config->group->package->manageStory->privs['story-activate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 13, 'depend' => array('story-view'), 'recommend' => array('story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); -$config->group->package->manageStory->privs['story-linkStory'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 14, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); -$config->group->package->manageStory->privs['story-batchChangeBranch'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 15, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); -$config->group->package->manageStory->privs['story-batchChangeModule'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 16, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); -$config->group->package->manageStory->privs['story-processStoryChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 17, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-recall', 'story-relieved', 'story-submitReview')); -$config->group->package->manageStory->privs['story-linkStories'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 18, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); -$config->group->package->manageStory->privs['story-relieved'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-submitReview')); -$config->group->package->manageStory->privs['story-batchEdit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 3, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); -$config->group->package->manageStory->privs['story-relation'] = array('edition' => 'max,ipd', 'vision' => 'rnd', 'order' => 19, 'depend' => array('story-view'), 'recommend' => array()); +$config->group->package->manageStory->privs['story-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 0, 'depend' => array(), 'recommend' => array('story-activate', 'story-assignTo', 'story-batchCreate', 'story-change', 'story-close', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relation', 'story-relieved', 'story-submitReview')); +$config->group->package->manageStory->privs['story-batchCreate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 1, 'depend' => array('product-browse'), 'recommend' => array('story-create')); +$config->group->package->manageStory->privs['story-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 2, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-batchEdit', 'story-change', 'story-close', 'story-create', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); +$config->group->package->manageStory->privs['story-change'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 4, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); +$config->group->package->manageStory->privs['story-submitReview'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 5, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved')); +$config->group->package->manageStory->privs['story-recall'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 6, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-relieved', 'story-submitReview')); +$config->group->package->manageStory->privs['story-close'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 7, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); +$config->group->package->manageStory->privs['story-batchClose'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 8, 'depend' => array('product-browse'), 'recommend' => array('story-close')); +$config->group->package->manageStory->privs['story-batchChangePlan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 9, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); +$config->group->package->manageStory->privs['story-batchChangeStage'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 10, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); +$config->group->package->manageStory->privs['story-assignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 11, 'depend' => array('product-browse'), 'recommend' => array('story-activate', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); +$config->group->package->manageStory->privs['story-batchAssignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 12, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); +$config->group->package->manageStory->privs['story-activate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 13, 'depend' => array('story-view'), 'recommend' => array('story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); +$config->group->package->manageStory->privs['story-linkStory'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 14, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); +$config->group->package->manageStory->privs['story-batchChangeBranch'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 15, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); +$config->group->package->manageStory->privs['story-batchChangeModule'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 16, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); +$config->group->package->manageStory->privs['story-processStoryChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 17, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-recall', 'story-relieved', 'story-submitReview')); +$config->group->package->manageStory->privs['story-linkStories'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 18, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview')); +$config->group->package->manageStory->privs['story-relieved'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-submitReview')); +$config->group->package->manageStory->privs['story-batchEdit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 3, 'depend' => array('product-browse'), 'recommend' => array('story-edit')); +$config->group->package->manageStory->privs['story-relation'] = array('edition' => 'max,ipd', 'vision' => 'rnd', 'order' => 19, 'depend' => array('story-view'), 'recommend' => array()); +$config->group->package->manageStory->privs['story-confirmdemandretract'] = array('edition' => 'ipd', 'vision' => 'rnd', 'order' => 19, 'depend' => array('story-view'), 'recommend' => array()); $config->group->package->importStory = new stdclass(); $config->group->package->importStory->order = 20; @@ -1053,6 +1054,7 @@ $config->group->package->manageTask->privs['task-deleteEstimate'] = arra $config->group->package->manageTask->privs['task-batchChangeModule'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 23, 'depend' => array('execution-task'), 'recommend' => array('task-edit')); $config->group->package->manageTask->privs['task-batchCancel'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 11, 'depend' => array('execution-task'), 'recommend' => array('task-cancel')); $config->group->package->manageTask->privs['task-confirmdesignchange'] = array('edition' => 'max,ipd', 'vision' => 'rnd', 'order' => 19, 'depend' => array('execution-task'), 'recommend' => array('task-edit')); +$config->group->package->manageTask->privs['task-confirmdemandretract'] = array('edition' => 'ipd', 'vision' => 'rnd,or', 'order' => 24, 'depend' => array('execution-task'), 'recommend' => array('task-edit')); $config->group->package->deleteTask = new stdclass(); $config->group->package->deleteTask->order = 20; @@ -1769,25 +1771,26 @@ $config->group->package->manageBug = new stdclass(); $config->group->package->manageBug->order = 10; $config->group->package->manageBug->subset = 'bug'; $config->group->package->manageBug->privs = array(); -$config->group->package->manageBug->privs['bug-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 0, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchCreate', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); -$config->group->package->manageBug->privs['bug-batchCreate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 1, 'depend' => array(), 'recommend' => array('bug-create')); -$config->group->package->manageBug->privs['bug-batchEdit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 3, 'depend' => array(), 'recommend' => array('bug-edit')); -$config->group->package->manageBug->privs['bug-confirmBug'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 4, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchConfirm', 'bug-close', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); -$config->group->package->manageBug->privs['bug-batchConfirm'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 5, 'depend' => array(), 'recommend' => array('bug-confirmBug')); -$config->group->package->manageBug->privs['bug-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 2, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchEdit', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-linkBugs', 'bug-resolve')); -$config->group->package->manageBug->privs['bug-assignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 6, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-batchAssignTo', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); -$config->group->package->manageBug->privs['bug-batchAssignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 7, 'depend' => array(), 'recommend' => array('bug-assignTo')); -$config->group->package->manageBug->privs['bug-resolve'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 8, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchResolve', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs')); -$config->group->package->manageBug->privs['bug-batchResolve'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 9, 'depend' => array(), 'recommend' => array('bug-resolve')); -$config->group->package->manageBug->privs['bug-batchClose'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 11, 'depend' => array(), 'recommend' => array('bug-close')); -$config->group->package->manageBug->privs['bug-batchActivate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 13, 'depend' => array(), 'recommend' => array('bug-activate')); -$config->group->package->manageBug->privs['bug-activate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 12, 'depend' => array('bug-view'), 'recommend' => array('bug-assignTo', 'bug-batchActivate', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); -$config->group->package->manageBug->privs['bug-close'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchClose', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); -$config->group->package->manageBug->privs['bug-confirmStoryChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 14, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-close', 'bug-confirmBug', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); -$config->group->package->manageBug->privs['bug-linkBugs'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 15, 'depend' => array('bug-edit'), 'recommend' => array()); -$config->group->package->manageBug->privs['bug-batchChangeModule'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 16, 'depend' => array(), 'recommend' => array('bug-edit')); -$config->group->package->manageBug->privs['bug-batchChangeBranch'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 17, 'depend' => array(), 'recommend' => array('bug-edit')); -$config->group->package->manageBug->privs['bug-batchChangePlan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 18, 'depend' => array(), 'recommend' => array('bug-edit')); +$config->group->package->manageBug->privs['bug-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 0, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchCreate', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); +$config->group->package->manageBug->privs['bug-batchCreate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 1, 'depend' => array(), 'recommend' => array('bug-create')); +$config->group->package->manageBug->privs['bug-batchEdit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 3, 'depend' => array(), 'recommend' => array('bug-edit')); +$config->group->package->manageBug->privs['bug-confirmBug'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 4, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchConfirm', 'bug-close', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); +$config->group->package->manageBug->privs['bug-batchConfirm'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 5, 'depend' => array(), 'recommend' => array('bug-confirmBug')); +$config->group->package->manageBug->privs['bug-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 2, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchEdit', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-linkBugs', 'bug-resolve')); +$config->group->package->manageBug->privs['bug-assignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 6, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-batchAssignTo', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); +$config->group->package->manageBug->privs['bug-batchAssignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 7, 'depend' => array(), 'recommend' => array('bug-assignTo')); +$config->group->package->manageBug->privs['bug-resolve'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 8, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchResolve', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs')); +$config->group->package->manageBug->privs['bug-batchResolve'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 9, 'depend' => array(), 'recommend' => array('bug-resolve')); +$config->group->package->manageBug->privs['bug-batchClose'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 11, 'depend' => array(), 'recommend' => array('bug-close')); +$config->group->package->manageBug->privs['bug-batchActivate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 13, 'depend' => array(), 'recommend' => array('bug-activate')); +$config->group->package->manageBug->privs['bug-activate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 12, 'depend' => array('bug-view'), 'recommend' => array('bug-assignTo', 'bug-batchActivate', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); +$config->group->package->manageBug->privs['bug-close'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchClose', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); +$config->group->package->manageBug->privs['bug-confirmStoryChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 14, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-close', 'bug-confirmBug', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve')); +$config->group->package->manageBug->privs['bug-linkBugs'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 15, 'depend' => array('bug-edit'), 'recommend' => array()); +$config->group->package->manageBug->privs['bug-batchChangeModule'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 16, 'depend' => array(), 'recommend' => array('bug-edit')); +$config->group->package->manageBug->privs['bug-batchChangeBranch'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 17, 'depend' => array(), 'recommend' => array('bug-edit')); +$config->group->package->manageBug->privs['bug-batchChangePlan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 18, 'depend' => array(), 'recommend' => array('bug-edit')); +$config->group->package->manageBug->privs['bug-confirmdemandretract'] = array('edition' => 'ipd', 'vision' => 'rnd,or', 'order' => 19, 'depend' => array(), 'recommend' => array('bug-edit')); $config->group->package->deleteBug = new stdclass(); $config->group->package->deleteBug->order = 20; @@ -1834,6 +1837,7 @@ $config->group->package->manageCase->privs['testcase-confirmLibcaseChange'] = $config->group->package->manageCase->privs['testcase-ignoreLibcaseChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 15, 'depend' => array('testcase-view'), 'recommend' => array('testcase-confirmChange', 'testcase-confirmLibcaseChange', 'testcase-confirmStoryChange', 'testcase-create', 'testcase-edit')); $config->group->package->manageCase->privs['testcase-submit'] = array('edition' => 'max,ipd', 'vision' => 'rnd', 'order' => 4, 'depend' => array('testcase-view'), 'recommend' => array('testcase-confirmChange', 'testcase-confirmLibcaseChange', 'testcase-confirmStoryChange', 'testcase-create', 'testcase-edit', 'testcase-ignoreLibcaseChange', 'testcase-linkBugs', 'testcase-linkCases')); $config->group->package->manageCase->privs['testcase-updateOrder'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 30, 'depend' => array(), 'recommend' => array()); +$config->group->package->manageCase->privs['testcase-confirmdemandretract'] = array('edition' => 'ipd', 'vision' => 'rnd,or', 'order' => 30, 'depend' => array(), 'recommend' => array()); $config->group->package->importCase = new stdclass(); $config->group->package->importCase->order = 25; diff --git a/module/my/control.php b/module/my/control.php index f236387b75..c311396f9e 100755 --- a/module/my/control.php +++ b/module/my/control.php @@ -364,6 +364,7 @@ EOF; $currentMethod = $this->app->rawMethod; $actionURL = $this->createLink('my', $currentMethod, "mode=story&type=bysearch¶m=myQueryID&orderBy={$orderBy}&recTotal={$recTotal}&recPerPage={$recPerPage}&pageID={$pageID}"); $this->my->buildStorySearchForm($queryID, $actionURL, $currentMethod); + if($this->config->edition == 'ipd') $stories = $this->loadModel('story')->getAffectObject($stories, 'story'); /* Assign. */ $this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->story; @@ -520,6 +521,7 @@ EOF; $actionURL = $this->createLink('my', $this->app->rawMethod, "mode=task&browseType=bySearch&queryID=myQueryID"); $this->my->buildTaskSearchForm($queryID, $actionURL); + if($this->config->edition == 'ipd') $tasks = $this->loadModel('story')->getAffectObject($tasks, 'task'); /* Assign. */ $this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->task; @@ -585,6 +587,7 @@ EOF; $actionURL = $this->createLink('my', $this->app->rawMethod, "mode=bug&browseType=bySearch&queryID=myQueryID"); $this->my->buildBugSearchForm($queryID, $actionURL); + if($this->config->edition == 'ipd') $bugs = $this->loadModel('story')->getAffectObject($bugs, 'bug'); /* assign. */ $this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->bug; @@ -696,6 +699,7 @@ EOF; $currentMethod = $this->app->rawMethod; $actionURL = $this->createLink('my', $currentMethod, "mode=testcase&type=bysearch¶m=myQueryID&orderBy={$orderBy}&recTotal={$recTotal}&recPerPage={$recPerPage}&pageID={$pageID}"); $this->my->buildTestcaseSearchForm($queryID, $actionURL, $currentMethod); + if($this->config->edition == 'ipd') $cases = $this->loadModel('story')->getAffectObject($cases, 'case'); /* Assign. */ $this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->myTestCase; diff --git a/module/my/view/bug.html.php b/module/my/view/bug.html.php index 81a54dd107..c0dfe7d40c 100644 --- a/module/my/view/bug.html.php +++ b/module/my/view/bug.html.php @@ -145,7 +145,12 @@ bug->resolutionList, $bug->resolution);?> retractConfirm)) + { + $retractObject = join(',', $bug->retractObject); + common::printIcon('bug', 'confirmDemandRetract', "objectID=$bug->id&object=bug&extra=$retractObject", $bug, 'browse', 'search', '', 'iframe', true); + } + else if($canBeChanged) { $params = "bugID=$bug->id"; common::printIcon('bug', 'confirmBug', $params, $bug, 'list', 'ok', '', 'iframe', true, '', '', $bug->project); diff --git a/module/my/view/story.html.php b/module/my/view/story.html.php index fe7a73b288..307900a8b3 100644 --- a/module/my/view/story.html.php +++ b/module/my/view/story.html.php @@ -100,7 +100,12 @@ story->stageList, $story->stage);?> retractConfirm)) + { + $retractObject = join(',', $story->retractObject); + common::printIcon('story', 'confirmDemandRetract', "objectID=$story->id&object=story&extra=$retractObject", $story, 'browse', 'search', '', 'iframe', true); + } + else if($canBeChanged) { $vars = "story={$story->id}"; echo common::buildIconButton('story', 'change', $vars, $story, 'list', 'alter', '', 'iframe', true); diff --git a/module/my/view/task.html.php b/module/my/view/task.html.php index 7ef4b7bec6..40d8e8a9c7 100644 --- a/module/my/view/task.html.php +++ b/module/my/view/task.html.php @@ -138,7 +138,12 @@ needConfirm) + if(!empty($task->retractConfirm)) + { + $retractObject = join(',', $task->retractObject); + common::printIcon('task', 'confirmDemandRetract', "objectID=$task->id&object=task&extra=$retractObject", $task, 'browse', 'search', '', 'iframe', true); + } + else if($task->needConfirm) { $this->lang->task->confirmStoryChange = $this->lang->confirm; common::printIcon('task', 'confirmStoryChange', "taskid=$task->id", '', 'list', '', 'hiddenwin', '', '', '', '', $task->project); diff --git a/module/my/view/testcase.html.php b/module/my/view/testcase.html.php index 4e678a8276..a96d0f662d 100644 --- a/module/my/view/testcase.html.php +++ b/module/my/view/testcase.html.php @@ -112,7 +112,12 @@ lastRunResult ? $lang->testcase->resultList[$case->lastRunResult] : $lang->testcase->unexecuted;?> retractConfirm)) + { + $retractObject = join(',', $case->retractObject); + common::printIcon('testcase', 'confirmDemandRetract', "objectID=$case->id&object=case&extra=$retractObject", $case, 'browse', 'search', '', 'iframe', true); + } + else if($canBeChanged) { $disabled = (isset($case->lastRunResult) and $case->lastRunResult != 'fail') ? 'disabled' : ''; common::printIcon('testcase', 'createBug', "product=$case->product&branch=$case->branch&extra=caseID=$caseID,version=$case->version,runID=$runID", $case, 'list', 'bug', '', "iframe $disabled", 'true', "data-app='qa' data-toggle=''"); diff --git a/module/project/control.php b/module/project/control.php index 285b6a45c7..d4df9555ba 100755 --- a/module/project/control.php +++ b/module/project/control.php @@ -1285,6 +1285,7 @@ class project extends control $taskList = $taskIdList ? $this->loadModel('task')->getByList($taskIdList) : array(); $showModule = !empty($this->config->datatable->projectBug->showModule) ? $this->config->datatable->projectBug->showModule : ''; + if($this->config->edition == 'ipd') $bugs = $this->loadModel('story')->getAffectObject($bugs, 'bug'); /* Assign. */ $this->view->title = $title; diff --git a/module/story/control.php b/module/story/control.php index 3f7a91d147..99a3a37058 100755 --- a/module/story/control.php +++ b/module/story/control.php @@ -1435,7 +1435,7 @@ class story extends control public function view($storyID, $version = 0, $param = 0, $storyType = 'story') { $story = $this->story->getById($storyID, $version, true); - if($this->config->edition == 'ipd') $story = $this->story->getAffectObject('', $story->type, $story); + if($this->config->edition == 'ipd' and $story->type == 'story') $story = $this->story->getAffectObject('', $story->type, $story); $linkModuleName = $this->config->vision == 'lite' ? 'project' : 'product'; if(!$story) diff --git a/module/story/model.php b/module/story/model.php index 327e6fdad3..7adecb5007 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -6991,4 +6991,81 @@ class storyModel extends model return !dao::isError(); } + + /** + * Get affect objects. + * + * @param mixed $objects + * @param string $objectType + * @param string $object + * @access public + * @return void + */ + public function getAffectObject($objects = '', $objectType = '', $objectInfo = '') + { + if(empty($objects) and empty($objectInfo)) return $objects; + if(empty($objects) and $objectInfo) $objects = array($objectInfo->id => $objectInfo); + + $objectIDList = array(); + $storyIDList = array(); + foreach($objects as $object) + { + $objectIDList[] = $object->id; + if($objectType == 'story') $storyIDList[] = $object->id; + if($objectType != 'story') $storyIDList[] = $object->story; + $object->retractConfirm = false; + $object->retractObject = array(); + } + + /* 获取需要确认的用户需求id。 */ + $URs = $this->getStoryRelationByIds($storyIDList, 'story'); + $URIds = implode(',', $URs); + if(!$URIds) return $objects; + + /* 获取已经撤回的用户需求。*/ + $requirements = $this->dao->select('id')->from(TABLE_STORY) + ->where('id')->in($URIds) + ->andWhere('retractedBy')->ne('') + ->fetchPairs('id'); + if(!$requirements) return $objects; + + /* 获取已经确认过的对象。*/ + $actions = $this->dao->select('*')->from(TABLE_ACTION) + ->where('objectType')->eq($objectType) + ->andWhere('objectID')->in($objectIDList) + ->andWhere('action')->eq('confirmedretract') + ->fetchPairs('objectID', 'extra'); + foreach($actions as $objecyID => $action) $actions[$objecyID] = explode(',', $action); + + /* 获取需要进行确认操作的研发需求 => 用户需求。*/ + $confirmObjects = array(); + foreach($requirements as $requirement) + { + foreach($URs as $storyID => $UR) + { + if (strpos($UR, (string) $requirement) !== false) $confirmObjects[$storyID][$requirement] = $requirement; + } + } + + /* 将确认信息插入到objects中并且过滤掉已经确认的用户需求。*/ + foreach($objects as $object) + { + $confirmed = array(); + if(isset($actions[$object->id])) $confirmed = $actions[$object->id]; // 已经确认的用户需求 + + if($objectType == 'story' and isset($confirmObjects[$object->id])) + { + $object->retractObject = array_diff($confirmObjects[$object->id], $confirmed); + if($object->retractObject) $object->retractConfirm = true; + } + else if($objectType != 'story' and isset($confirmObjects[$object->story])) + { + $object->retractObject = array_diff($confirmObjects[$object->story], $confirmed); + if($object->retractObject) $object->retractConfirm = true; + } + } + + if($objectInfo) return $objects[$objectInfo->id]; + return $objects; + } } diff --git a/module/task/control.php b/module/task/control.php index b0e2be0518..c7c39d0afe 100755 --- a/module/task/control.php +++ b/module/task/control.php @@ -1003,6 +1003,8 @@ class task extends control $this->executeHooks($taskID); + if($this->config->edition == 'ipd') $task = $this->loadModel('story')->getAffectObject('', 'task', $task); + $title = "TASK#$task->id $task->name / $execution->name"; $position[] = html::a($this->createLink('execution', 'browse', "executionID=$task->execution"), $execution->name); $position[] = $this->lang->task->common; diff --git a/module/testcase/control.php b/module/testcase/control.php index 8f9a982d65..7179e308b6 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -183,6 +183,7 @@ class testcase extends control $sceneCount = count($scenes); $caseCount = 0; /* Process case for check story changed. */ + if($this->config->edition == 'ipd') $cases = $this->loadModel('story')->getAffectObject($cases, 'case'); $cases = $this->loadModel('story')->checkNeedConfirm($cases); $cases = $this->testcase->appendData($cases); foreach($cases as $case) @@ -906,6 +907,7 @@ class testcase extends control $case->caseFails = $caseFails; $this->executeHooks($caseID); + if($this->config->edition == 'ipd') $case = $this->loadModel('story')->getAffectObject('', 'case', $case); $this->view->position[] = $this->lang->testcase->common; $this->view->position[] = $this->lang->testcase->view; From 45b9989128b741b0e9c63493655ba013772eb87d Mon Sep 17 00:00:00 2001 From: chaideqing Date: Thu, 18 Jan 2024 11:09:40 +0800 Subject: [PATCH 04/22] * Fix bug #44258. --- module/story/control.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/module/story/control.php b/module/story/control.php index 99a3a37058..6bd73249e8 100755 --- a/module/story/control.php +++ b/module/story/control.php @@ -949,8 +949,10 @@ class story extends control if($this->app->tab == 'project' or $this->app->tab == 'execution') { - $objectID = $this->app->tab == 'project' ? $this->session->project : $this->session->execution; - $products = $this->product->getProductPairsByProject($objectID); + $objectID = $this->app->tab == 'project' ? $this->session->project : $this->session->execution; + $projectProducts = $this->product->getProductPairsByProject($objectID); + if(!isset($projectProducts[$story->product]) && isset($products[$story->product])) $projectProducts[$story->product] = $products[$story->product]; + $products = $projectProducts; $this->view->objectID = $objectID; } From c7d0d82863833cfd7e87b1fb62b657063b14f00c Mon Sep 17 00:00:00 2001 From: qishiyao Date: Thu, 18 Jan 2024 13:25:40 +0800 Subject: [PATCH 05/22] * Only build ipd images --- misc/ci/Jenkinsfile | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/misc/ci/Jenkinsfile b/misc/ci/Jenkinsfile index 70f6c1356f..1068293308 100644 --- a/misc/ci/Jenkinsfile +++ b/misc/ci/Jenkinsfile @@ -524,20 +524,20 @@ pipeline { sh "make markdown-init" } stage("docker build") { - sh 'make test-open' - sh 'make build' + //sh 'make test-open' + //sh 'make build' - sh 'make test-biz' - sh 'make build-biz' + //sh 'make test-biz' + //sh 'make build-biz' - sh 'make test-biz-k8s' - sh 'make build-biz-k8s' + //sh 'make test-biz-k8s' + //sh 'make build-biz-k8s' - sh 'make test-max' - sh 'make build-max' + //sh 'make test-max' + //sh 'make build-max' - sh 'make test-max-k8s' - sh 'make build-max-k8s' + //sh 'make test-max-k8s' + //sh 'make build-max-k8s' sh 'make test-ipd' sh 'make build-ipd' From 6f3075216cd271d4b9381b2e2d47372f1d9d987c Mon Sep 17 00:00:00 2001 From: tanghucheng Date: Thu, 18 Jan 2024 13:55:03 +0800 Subject: [PATCH 06/22] * Fix bug #43587. --- module/product/view/browse.html.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/product/view/browse.html.php b/module/product/view/browse.html.php index 2e5614be49..e999369716 100755 --- a/module/product/view/browse.html.php +++ b/module/product/view/browse.html.php @@ -265,7 +265,7 @@ js::set('pageSummary', $summary); $buttonTitle = $lang->execution->linkStoryByPlan; $dataToggle = 'data-toggle="modal"'; } - if(common::hasPriv('projectstory', 'importRoadmapStories') and $storyType == 'requirement' and $this->config->edition == 'ipd') + if(common::hasPriv('projectstory', 'importRoadmapStories') and $project->charter and $storyType == 'requirement' and $this->config->edition == 'ipd') { $buttonLink = empty($productID) ? '' : '#linkStoryByRoadmap'; $buttonTitle = $lang->product->linkStoryByRoadmap;; @@ -283,7 +283,7 @@ js::set('pageSummary', $summary); $hidden = empty($buttonLink) ? 'hidden' : ''; echo html::a($buttonLink, " $buttonTitle", '', "class='btn btn-primary $hidden' $dataToggle"); - if(!empty($productID) and common::hasPriv('projectstory', 'linkStory') and common::hasPriv('projectstory', 'importRoadmapStories') and $storyType == 'requirement' and $this->config->edition == 'ipd') + if(!empty($productID) and common::hasPriv('projectstory', 'linkStory') and common::hasPriv('projectstory', 'importRoadmapStories') and $project->charter and $storyType == 'requirement' and $this->config->edition == 'ipd') { echo ""; echo " + global->hideVisionTips)):?> +
+
+ visionTips;?> + +
+
+
+
+
+ {$app->tab}->menu->$activeMenu) and is_array($lang->{$app->tab}->menu->$activeMenu) and isset($lang->{$app->tab}->menu->{$activeMenu}['subMenu'])):?> @@ -65,6 +83,13 @@ if(window.navigator.userAgent.indexOf('xuanxuan') > 0) $('#subHeader').parent().parent().children('#main').css('top', '100px'); }); } + +function hideVisionTips() +{ + $('#visionTips').hide(); + var link = createLink('custom', 'ajaxSaveCustomFields', 'module=common§ion=global&key=hideVisionTips'); + $.post(link, {fields: 1}); +}
sso->redirect)) echo "class='ranzhiFixedTfootAction'";?> >
diff --git a/module/my/control.php b/module/my/control.php index c311396f9e..273a6f2751 100755 --- a/module/my/control.php +++ b/module/my/control.php @@ -1675,6 +1675,7 @@ EOF; { $_SESSION['vision'] = $vision; $this->loadModel('setting')->setItem("{$this->app->user->account}.common.global.vision", $vision); + if(($vision == 'lite' || $vision == 'or') && empty($this->config->hideVisionTips)) $this->setting->setItem("{$this->app->user->account}.common.global.hideVisionTips", 1); $this->config->vision = $vision; $_SESSION['user']->rights = $this->loadModel('user')->authorize($this->app->user->account); From 7ffa9ec35aa0dc09519474d64fa08dbef5d7b8e0 Mon Sep 17 00:00:00 2001 From: chaideqing Date: Fri, 19 Jan 2024 15:52:03 +0800 Subject: [PATCH 21/22] * Add user visions check. --- module/common/view/header.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/common/view/header.html.php b/module/common/view/header.html.php index c05b16fb55..a30c8366f0 100755 --- a/module/common/view/header.html.php +++ b/module/common/view/header.html.php @@ -33,7 +33,7 @@ include 'chosen.html.php';
- global->hideVisionTips)):?> + app->user->visions)) > 1 && empty($config->global->hideVisionTips)):?>
visionTips;?> From 3291d2ee1f8b183305fd8f1ee094a9b0f8d1ab7d Mon Sep 17 00:00:00 2001 From: chaideqing Date: Fri, 19 Jan 2024 16:13:11 +0800 Subject: [PATCH 22/22] * Remove vision check when save hideVisionTips. --- module/my/control.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/my/control.php b/module/my/control.php index 273a6f2751..4c93de6f1f 100755 --- a/module/my/control.php +++ b/module/my/control.php @@ -1675,7 +1675,7 @@ EOF; { $_SESSION['vision'] = $vision; $this->loadModel('setting')->setItem("{$this->app->user->account}.common.global.vision", $vision); - if(($vision == 'lite' || $vision == 'or') && empty($this->config->hideVisionTips)) $this->setting->setItem("{$this->app->user->account}.common.global.hideVisionTips", 1); + if(empty($this->config->hideVisionTips)) $this->setting->setItem("{$this->app->user->account}.common.global.hideVisionTips", 1); $this->config->vision = $vision; $_SESSION['user']->rights = $this->loadModel('user')->authorize($this->app->user->account);