From e21fb874ed1d2027d121fd22ad5a99022fda32dc Mon Sep 17 00:00:00 2001 From: liuhong Date: Sun, 9 Oct 2022 01:34:10 +0000 Subject: [PATCH 01/45] *Fix feedback #420. --- module/stage/model.php | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/module/stage/model.php b/module/stage/model.php index 9baa81b443..a967e38b48 100644 --- a/module/stage/model.php +++ b/module/stage/model.php @@ -72,9 +72,9 @@ class stageModel extends model ->batchCheck($this->config->stage->create->requiredFields, 'notempty') ->checkIF($stage->percent != '', 'percent', 'float') ->exec(); - - if(dao::isError()) return false; - + + if(dao::isError()) return false; + $stageID = $this->dao->lastInsertID(); $this->action->create('stage', $stageID, 'Opened'); } @@ -117,13 +117,24 @@ class stageModel extends model * Get stages. * * @param string $orderBy + * @param int $projectID * @access public * @return array */ - public function getStages($orderBy = 'id_desc') + public function getStages($orderBy = 'id_desc', $projectID = 0) { - return $this->dao->select('*')->from(TABLE_STAGE)->where('deleted')->eq(0)->orderBy($orderBy)->fetchAll('id'); - } + $stages = $this->dao->select('t1.id,name,type,percent,openedBy as createdBy,begin as createdDate,lastEditedBy as editedBy,end as editedDate,deleted') + ->from(TABLE_EXECUTION)->alias('t1') + ->where('t1.type')->in('sprint,stage,kanban') + ->andWhere('t1.deleted')->eq('0') + ->andWhere('t1.vision')->eq($this->config->vision) + ->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi() + ->beginIF($projectID)->andWhere('t1.project')->eq($projectID)->fi() + ->orderBy($orderBy) + ->fetchAll('id'); + $stages = !empty($stages) ? $stages : $this->dao->select('*')->from(TABLE_STAGE)->where('deleted')->eq(0)->orderBy($orderBy)->fetchAll('id'); + return $stages; + } /** * Get pairs of stage. From 54f94d95c02fed7524cd8aa64d45cd119db7d3a0 Mon Sep 17 00:00:00 2001 From: wangzemei Date: Sun, 9 Oct 2022 10:42:30 +0800 Subject: [PATCH 02/45] * finish task #71898 --- module/common/lang/zh-cn.php | 2 +- module/common/lang/zh-tw.php | 2 +- module/my/view/task.html.php | 50 ++++++++++++++++++------------------ 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index a27488d59e..f601c2df79 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -146,7 +146,7 @@ $lang->workingHour = '工时'; $lang->idAB = 'ID'; $lang->priAB = 'P'; $lang->statusAB = '状态'; -$lang->openedByAB = '创建'; +$lang->openedByAB = '创建者'; $lang->assignedToAB = '指派'; $lang->typeAB = '类型'; $lang->nameAB = '名称'; diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php index efb472f9ac..5330154fde 100644 --- a/module/common/lang/zh-tw.php +++ b/module/common/lang/zh-tw.php @@ -136,7 +136,7 @@ $lang->workingHour = '工時'; $lang->idAB = 'ID'; $lang->priAB = 'P'; $lang->statusAB = '狀態'; -$lang->openedByAB = '創建'; +$lang->openedByAB = '創建者'; $lang->assignedToAB = '指派'; $lang->typeAB = '類型'; $lang->nameAB = '名稱'; diff --git a/module/my/view/task.html.php b/module/my/view/task.html.php index 289ab3f422..f0a9ae1b27 100644 --- a/module/my/view/task.html.php +++ b/module/my/view/task.html.php @@ -67,28 +67,28 @@ idAB);?> - task->pri;?>>priAB);?> task->name);?> + task->pri;?>>priAB);?> + statusAB);?> systemMode == 'new'):?> my->projects);?> task->execution);?> my->executions);?> + task->deadlineAB);?> + task->estimateAB);?> + task->consumedAB);?> + task->leftAB);?> openedByAB);?> - task->deadlineAB);?> task->assignedTo);?> - task->finishedBy);?> + task->finishedByAB);?> - task->estimateAB);?> - task->consumedAB);?> - task->leftAB);?> - statusAB);?> actions;?> @@ -105,7 +105,6 @@ id);?> - pri;?>' title='task->priList, $task->pri);?>'>task->priList, $task->pri);?> ' title='name?>'> team)) echo '' . $this->lang->task->multipleAB . ' ';?> children)) echo '';?> + pri;?>' title='task->priList, $task->pri);?>'>task->priList, $task->pri);?> + + storyStatus) and $task->storyStatus == 'active' and $task->latestStoryVersion > $task->storyVersion and !in_array($task->status, array('cancel', 'closed')));?> + {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $task) . "");?> + systemMode == 'new'):?> execution]->name) ? $projects[$task->execution]->name : '';?> execution]->id) ? $projects[$task->execution]->id : 0;?> @@ -130,23 +134,19 @@ createLink('execution', 'task', "executionID=$task->execution"), $task->executionName, '');?> + deadline, 0, 4) > 0) echo substr($task->deadline, 5, 6);?> + estimate, 1) . $lang->execution->workHourUnit;?> + consumed, 1) . $lang->execution->workHourUnit;?> + left, 1) . $lang->execution->workHourUnit;?> openedBy);?> - deadline, 0, 4) > 0) echo substr($task->deadline, 5, 6);?> task->printAssignedHtml($task, $users);?> finishedBy);?> - estimate, 1) . $lang->execution->workHourUnit;?> - consumed, 1) . $lang->execution->workHourUnit;?> - left, 1) . $lang->execution->workHourUnit;?> - - storyStatus) and $task->storyStatus == 'active' and $task->latestStoryVersion > $task->storyVersion and !in_array($task->status, array('cancel', 'closed')));?> - {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $task) . "");?> - id);?> - pri;?>' title='task->priList, $child->pri);?>'>task->priList, $child->pri);?> parent > 0) echo '' . $this->lang->task->childrenAB . ' ';?> createLink('task', 'view', "taskID=$child->id", '', '', $child->project), $child->name, null, "style='color: $child->color'");?> + pri;?>' title='task->priList, $child->pri);?>'>task->priList, $child->pri);?> + + storyStatus) and $child->storyStatus == 'active' and $child->latestStoryVersion > $child->storyVersion and !in_array($child->status, array('cancel', 'closed')));?> + {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $child) . "");?> + systemMode == 'new'):?> execution]->name) ? $projects[$child->execution]->name : '';?> execution]->id) ? $projects[$child->execution]->id : 0;?> @@ -207,23 +211,19 @@ createLink('execution', 'task', "executionID=$child->project"), $child->executionName, '');?> + deadline, 0, 4) > 0) echo substr($child->deadline, 5, 6);?> + estimate, 1) . ' ' . $lang->execution->workHourUnit;?> + consumed, 1) . ' ' . $lang->execution->workHourUnit;?> + left, 1) . ' ' . $lang->execution->workHourUnit;?> openedBy);?> - deadline, 0, 4) > 0) echo substr($child->deadline, 5, 6);?> task->printAssignedHtml($child, $users);?> finishedBy);?> - estimate, 1) . ' ' . $lang->execution->workHourUnit;?> - consumed, 1) . ' ' . $lang->execution->workHourUnit;?> - left, 1) . ' ' . $lang->execution->workHourUnit;?> - - storyStatus) and $child->storyStatus == 'active' and $child->latestStoryVersion > $child->storyVersion and !in_array($child->status, array('cancel', 'closed')));?> - {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $child) . "");?> - Date: Sun, 9 Oct 2022 03:20:04 +0000 Subject: [PATCH 03/45] * The execution logic to which the update task belongs when it is newly created. --- module/task/control.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/module/task/control.php b/module/task/control.php index 6b4220d7cd..6f198e7b8e 100755 --- a/module/task/control.php +++ b/module/task/control.php @@ -291,7 +291,22 @@ class task extends control /* Set Custom*/ foreach(explode(',', $this->config->task->customCreateFields) as $field) $customFields[$field] = $this->lang->task->$field; - $executions = $this->config->systemMode == 'classic' ? $executions : $this->execution->getByProject($projectID, 'noclosed', 0, true); + $executionAll = array(); + if(!empty($projectID)) + { + $executionList = $this->execution->getByProject($projectID, 'noclosed', 0, true); + $project = $this->loadModel('project')->getByID($projectID); + $replace = substr(current($executionList), 0, strpos(current($executionList), '/')); + if(isset($project->model) and $project->model == 'waterfall') + { + foreach($executionList as $key => $val) + { + $values = str_replace($replace, $project->name, $val); + $executionAll[$key] = $values; + } + } + } + $executions = $this->config->systemMode == 'classic' ? $executions : $executionAll; $testStoryIdList = $this->loadModel('story')->getTestStories(array_keys($stories), $execution->id); /* Stories that can be used to create test tasks. */ From 6ea3c948a5b99a92037de5dd753632d9e1e19b3c Mon Sep 17 00:00:00 2001 From: wangzemei Date: Sun, 9 Oct 2022 17:23:05 +0800 Subject: [PATCH 04/45] * finish task #71897 --- module/testsuite/control.php | 15 +++++++++++++++ module/testsuite/lang/de.php | 1 + module/testsuite/lang/en.php | 1 + module/testsuite/lang/fr.php | 1 + module/testsuite/lang/vi.php | 1 + module/testsuite/lang/zh-cn.php | 1 + module/testsuite/lang/zh-tw.php | 2 ++ module/testsuite/view/browse.html.php | 5 ++++- 8 files changed, 26 insertions(+), 1 deletion(-) diff --git a/module/testsuite/control.php b/module/testsuite/control.php index f1db7cad12..7877cd34bf 100644 --- a/module/testsuite/control.php +++ b/module/testsuite/control.php @@ -81,6 +81,20 @@ class testsuite extends control $pager = pager::init(0, $recPerPage, 1); $suites = $this->testsuite->getSuites($productID, $sort, $pager, $type); } + $privateSuites = array(); + foreach($suites as $suiteItem) + { + $item = new stdclass(); + $item = $suiteItem; + if($suiteItem->type == 'private') + { + $privateSuites[] = $item; + } + } + $suitesNum = !empty(count($suites, 0)) ? count($suites, 0) : 0; + $privateNum = !empty(count($privateSuites, 0)) ? count($privateSuites, 0) : 0; + $publicNum = $suitesNum - $privateNum; + $summary = str_replace(array('%total%', '%public%', '%private%'), array($suitesNum, $publicNum, $privateNum), $this->lang->testsuite->summary); $this->view->title = $productName . $this->lang->testsuite->common; $this->view->position[] = html::a($this->createLink('testsuite', 'browse', "productID=$productID"), $productName); @@ -94,6 +108,7 @@ class testsuite extends control $this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter'); $this->view->pager = $pager; $this->view->product = $this->product->getByID($productID); + $this->view->summary = $summary; $this->display(); } diff --git a/module/testsuite/lang/de.php b/module/testsuite/lang/de.php index 87f5b051b0..d55cb07b14 100644 --- a/module/testsuite/lang/de.php +++ b/module/testsuite/lang/de.php @@ -56,3 +56,4 @@ $lang->testsuite->authorList['private'] = 'Privat'; $lang->testsuite->authorList['public'] = 'Öffentlich'; $lang->testsuite->featureBar['browse']['all'] = 'Suite List'; +$lang->testsuite->summary = "Total suites %total%, public %public%, private %private%."; diff --git a/module/testsuite/lang/en.php b/module/testsuite/lang/en.php index ad27dd4346..8ef30931ca 100644 --- a/module/testsuite/lang/en.php +++ b/module/testsuite/lang/en.php @@ -56,3 +56,4 @@ $lang->testsuite->authorList['private'] = 'Private'; $lang->testsuite->authorList['public'] = 'Public'; $lang->testsuite->featureBar['browse']['all'] = 'Suite List'; +$lang->testsuite->summary = "Total suites %total%, public %public%, private %private%."; diff --git a/module/testsuite/lang/fr.php b/module/testsuite/lang/fr.php index 40d8c6b906..ec426e9128 100644 --- a/module/testsuite/lang/fr.php +++ b/module/testsuite/lang/fr.php @@ -56,3 +56,4 @@ $lang->testsuite->authorList['private'] = 'Privé'; $lang->testsuite->authorList['public'] = 'Public'; $lang->testsuite->featureBar['browse']['all'] = 'Suite List'; +$lang->testsuite->summary = "Total suites %total%, public %public%, private %private%."; diff --git a/module/testsuite/lang/vi.php b/module/testsuite/lang/vi.php index f262b8932f..ca83b65da7 100644 --- a/module/testsuite/lang/vi.php +++ b/module/testsuite/lang/vi.php @@ -53,3 +53,4 @@ $lang->testsuite->authorList['private'] = 'Riêng tư'; $lang->testsuite->authorList['public'] = 'Công khai'; $lang->testsuite->featureBar['browse']['all'] = 'Suite List'; +$lang->testsuite->summary = "Tổng %total% suites nào, Công khai %public%, Riêng tư %private%."; \ No newline at end of file diff --git a/module/testsuite/lang/zh-cn.php b/module/testsuite/lang/zh-cn.php index 3ac13b0a20..945318be4f 100644 --- a/module/testsuite/lang/zh-cn.php +++ b/module/testsuite/lang/zh-cn.php @@ -56,3 +56,4 @@ $lang->testsuite->authorList['private'] = '私有'; $lang->testsuite->authorList['public'] = '公开'; $lang->testsuite->featureBar['browse']['all'] = '套件列表'; +$lang->testsuite->summary = "本页共 %total% 个套件,公开 %public% 个,私有 %private% 个。"; diff --git a/module/testsuite/lang/zh-tw.php b/module/testsuite/lang/zh-tw.php index f8e3006a1a..30112fc5e1 100644 --- a/module/testsuite/lang/zh-tw.php +++ b/module/testsuite/lang/zh-tw.php @@ -53,3 +53,5 @@ $lang->testsuite->lblUnlinkCase = '移除用例'; $lang->testsuite->authorList['private'] = '私有'; $lang->testsuite->authorList['public'] = '公開'; +$lang->testsuite->summary = "本頁共 %total% 個套件,公開 %public% 個,私有 %private% 個。"; + diff --git a/module/testsuite/view/browse.html.php b/module/testsuite/view/browse.html.php index 05d7aa1291..e319254273 100644 --- a/module/testsuite/view/browse.html.php +++ b/module/testsuite/view/browse.html.php @@ -82,7 +82,10 @@ - + From c0b01a95a8cd0cf2a904d32de69ca6a5bc83d415 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Mon, 10 Oct 2022 08:57:39 +0800 Subject: [PATCH 05/45] * Finish task #38397. --- module/my/view/requirement.html.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/module/my/view/requirement.html.php b/module/my/view/requirement.html.php index da432d2e25..5e7a85fe30 100644 --- a/module/my/view/requirement.html.php +++ b/module/my/view/requirement.html.php @@ -61,12 +61,12 @@ idAB);?> + URCommon . $lang->my->name);?> pri;?>>priAB);?> - my->name);?> - story->product);?> - openedByAB);?> - story->estimateAB);?> statusAB);?> + story->product);?> + story->openedByAB);?> + story->estimateAB);?> story->stageAB);?> actions;?> @@ -88,15 +88,15 @@ id);?> - pri;?>' title='story->priList, $story->pri, $story->pri);?>'>story->priList, $story->pri, $story->pri);?> title, null, "style='color: $story->color' data-group='product' title='$story->title'") : "$story->title";?> children)) echo '';?> + pri;?>' title='story->priList, $story->pri, $story->pri);?>'>story->priList, $story->pri, $story->pri);?> + processStatus('story', $story);?> productTitle;?> openedBy);?> estimate . $config->hourUnit;?> - processStatus('story', $story);?> story->stageList, $story->stage);?> "> id);?> - pri;?>' title='story->priList, $child->pri, $child->pri);?>'>story->priList, $child->pri, $child->pri);?> lang->story->children .'">SR ' . (common::hasPriv('story', 'view') ? html::a($storyLink, $child->title, null, "style='color: $child->color' data-group='product' title='$child->title'") : $child->title);?> + pri;?>' title='story->priList, $child->pri, $child->pri);?>'>story->priList, $child->pri, $child->pri);?> + URChanged ? "{$this->lang->story->URChanged}" : "" . $this->processStatus('story', $child) . ''?> productTitle;?> openedBy);?> estimate . $config->hourUnit;?> - URChanged ? "{$this->lang->story->URChanged}" : "" . $this->processStatus('story', $child) . ''?> story->stageList, $child->stage);?> Date: Mon, 10 Oct 2022 09:01:45 +0800 Subject: [PATCH 06/45] * Finish task #71902. --- module/my/view/bug.html.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/module/my/view/bug.html.php b/module/my/view/bug.html.php index 8872cc6b46..5503e70cdc 100644 --- a/module/my/view/bug.html.php +++ b/module/my/view/bug.html.php @@ -62,24 +62,24 @@ idAB);?> + bug->title);?> bug->severityAB);?> priAB);?> - bug->confirmedAB);?> - bug->title);?> + bug->type);?> bug->product);?> - typeAB);?> - openedByAB);?> + bug->openedByAB);?> + bug->confirmedAB);?> rawMethod == 'work'):?> - bug->deadlineAB);?> + bug->deadline);?> bug->assignedTo);?> - bug->resolvedByAB);?> + bug->resolvedBy);?> bug->resolutionAB);?> actions;?> @@ -109,6 +109,10 @@ id);?> + + createLink('bug', 'view', "bugID=$bug->id"), $bug->title, null, "style='color: $bug->color' title='{$bug->title}'");?> + case) echo html::a(helper::createLink('testcase', 'view', "caseID=$bug->case&version=$bug->caseVersion"), "[" . $this->lang->testcase->common . "#$bug->case]", '', "class='bug' title='$bug->case'");?> + ' title='bug->severityList, $bug->severity);?>' data-severity='severity;?>'>bug->severityList, $bug->severity, $bug->severity);?> @@ -117,22 +121,18 @@ pri?>' title='bug->priList, $bug->pri);?>'>bug->priList, $bug->pri)?> - ' title='bug->confirmedList, $bug->confirmed);?>'>bug->confirmedList, $bug->confirmed)?> - - createLink('bug', 'view', "bugID=$bug->id"), $bug->title, null, "style='color: $bug->color' title='{$bug->title}'");?> - case) echo html::a(helper::createLink('testcase', 'view', "caseID=$bug->case&version=$bug->caseVersion"), "[" . $this->lang->testcase->common . "#$bug->case]", '', "class='bug' title='$bug->case'");?> - productLink == 'product-all' ? '' : "productID=$bug->product";?> + bug->typeList, $bug->type, '');?> productLink); echo html::a($this->createLink('product', $productLink[1], $param), $bug->productName, null, "title={$bug->productName}"); ?> - bug->typeList, $bug->type, '');?> openedBy);?> + ' title='bug->confirmedList, $bug->confirmed);?>'>bug->confirmedList, $bug->confirmed)?> rawMethod == 'work'):?> deadline, 0, 4) > 0) echo substr($bug->deadline, 5, 6);?> From 2a2e17b0e25bedcbdc5442d3da62a0156aa7ebb6 Mon Sep 17 00:00:00 2001 From: wangzemei Date: Mon, 10 Oct 2022 09:02:10 +0800 Subject: [PATCH 07/45] * remove not empty check --- module/my/view/task.html.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/my/view/task.html.php b/module/my/view/task.html.php index f0a9ae1b27..6fe312a974 100644 --- a/module/my/view/task.html.php +++ b/module/my/view/task.html.php @@ -124,7 +124,7 @@ pri;?>' title='task->priList, $task->pri);?>'>task->priList, $task->pri);?> storyStatus) and $task->storyStatus == 'active' and $task->latestStoryVersion > $task->storyVersion and !in_array($task->status, array('cancel', 'closed')));?> - {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $task) . "");?> + {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $task) . "");?> systemMode == 'new'):?> execution]->name) ? $projects[$task->execution]->name : '';?> @@ -201,7 +201,7 @@ pri;?>' title='task->priList, $child->pri);?>'>task->priList, $child->pri);?> storyStatus) and $child->storyStatus == 'active' and $child->latestStoryVersion > $child->storyVersion and !in_array($child->status, array('cancel', 'closed')));?> - {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $child) . "");?> + {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $child) . "");?> systemMode == 'new'):?> execution]->name) ? $projects[$child->execution]->name : '';?> From 065893392369aafe89f0ee33aed7671d65f8151e Mon Sep 17 00:00:00 2001 From: tianshujie Date: Mon, 10 Oct 2022 09:06:55 +0800 Subject: [PATCH 08/45] * Finish task #71902. --- module/my/css/bug.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/my/css/bug.css b/module/my/css/bug.css index 2e23fc9a87..0bb5687061 100644 --- a/module/my/css/bug.css +++ b/module/my/css/bug.css @@ -1,3 +1,3 @@ td.delayed {color: #fff; background: #e84e0f !important;} .c-confirm {width:60px;} - +[lang^=en] .c-assignedTo {width: 105px !important;} From b81f00714ca92eff7b73da86737e24ff9740ef60 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Mon, 10 Oct 2022 09:13:13 +0800 Subject: [PATCH 09/45] * Finish task #71901. --- module/my/css/requirement.css | 1 + 1 file changed, 1 insertion(+) diff --git a/module/my/css/requirement.css b/module/my/css/requirement.css index c0389382d5..c21f9cb03d 100644 --- a/module/my/css/requirement.css +++ b/module/my/css/requirement.css @@ -11,3 +11,4 @@ .main-table tbody > tr.table-children > td:first-child::before {width: 3px;} @-moz-document url-prefix() {.main-table tbody > tr.table-children > td:first-child::before {width: 4px;};} .c-span {margin-left: 22px;} +[lang^=de] .c-hours{width: 105px;} From 383389a42accbf173f8775a0746a77cb4be59e3a Mon Sep 17 00:00:00 2001 From: wangzemei Date: Mon, 10 Oct 2022 09:23:15 +0800 Subject: [PATCH 10/45] * add a colon --- module/testsuite/lang/de.php | 2 +- module/testsuite/lang/en.php | 2 +- module/testsuite/lang/fr.php | 2 +- module/testsuite/lang/vi.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/module/testsuite/lang/de.php b/module/testsuite/lang/de.php index d55cb07b14..6c1fc44cb7 100644 --- a/module/testsuite/lang/de.php +++ b/module/testsuite/lang/de.php @@ -56,4 +56,4 @@ $lang->testsuite->authorList['private'] = 'Privat'; $lang->testsuite->authorList['public'] = 'Öffentlich'; $lang->testsuite->featureBar['browse']['all'] = 'Suite List'; -$lang->testsuite->summary = "Total suites %total%, public %public%, private %private%."; +$lang->testsuite->summary = "Total suites: %total%, public: %public%, private: %private%."; diff --git a/module/testsuite/lang/en.php b/module/testsuite/lang/en.php index 8ef30931ca..7128ec80d4 100644 --- a/module/testsuite/lang/en.php +++ b/module/testsuite/lang/en.php @@ -56,4 +56,4 @@ $lang->testsuite->authorList['private'] = 'Private'; $lang->testsuite->authorList['public'] = 'Public'; $lang->testsuite->featureBar['browse']['all'] = 'Suite List'; -$lang->testsuite->summary = "Total suites %total%, public %public%, private %private%."; +$lang->testsuite->summary = "Total suites: %total%, public: %public%, private: %private%."; diff --git a/module/testsuite/lang/fr.php b/module/testsuite/lang/fr.php index ec426e9128..99c4498967 100644 --- a/module/testsuite/lang/fr.php +++ b/module/testsuite/lang/fr.php @@ -56,4 +56,4 @@ $lang->testsuite->authorList['private'] = 'Privé'; $lang->testsuite->authorList['public'] = 'Public'; $lang->testsuite->featureBar['browse']['all'] = 'Suite List'; -$lang->testsuite->summary = "Total suites %total%, public %public%, private %private%."; +$lang->testsuite->summary = "Total suites: %total%, public: %public%, private: %private%."; diff --git a/module/testsuite/lang/vi.php b/module/testsuite/lang/vi.php index ca83b65da7..ec5a8292d0 100644 --- a/module/testsuite/lang/vi.php +++ b/module/testsuite/lang/vi.php @@ -53,4 +53,4 @@ $lang->testsuite->authorList['private'] = 'Riêng tư'; $lang->testsuite->authorList['public'] = 'Công khai'; $lang->testsuite->featureBar['browse']['all'] = 'Suite List'; -$lang->testsuite->summary = "Tổng %total% suites nào, Công khai %public%, Riêng tư %private%."; \ No newline at end of file +$lang->testsuite->summary = "Tổng %total% suites nào, Công khai: %public%, Riêng tư: %private%."; \ No newline at end of file From 87f5fb905a4f56cb06be5e6caeea5947de7a987e Mon Sep 17 00:00:00 2001 From: tianshujie Date: Mon, 10 Oct 2022 09:23:45 +0800 Subject: [PATCH 11/45] * Finish task #71900. --- module/my/css/story.css | 1 + module/my/view/requirement.html.php | 3 ++- module/my/view/story.html.php | 15 ++++++++------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/module/my/css/story.css b/module/my/css/story.css index 58b9c22c7d..be4c747589 100644 --- a/module/my/css/story.css +++ b/module/my/css/story.css @@ -11,3 +11,4 @@ .main-table tbody > tr.table-children > td:first-child::before {width: 3px;} @-moz-document url-prefix() {.main-table tbody > tr.table-children > td:first-child::before {width: 4px;};} .c-actions-6 {width: 185px;} +[lang^=de] .c-hours {width: 105px;} diff --git a/module/my/view/requirement.html.php b/module/my/view/requirement.html.php index 5e7a85fe30..615d55f51f 100644 --- a/module/my/view/requirement.html.php +++ b/module/my/view/requirement.html.php @@ -50,6 +50,7 @@ $canBatchReview = common::hasPriv('requirement', 'batchReview'); $canBatchAssignTo = common::hasPriv('requirement', 'batchAssignTo'); $canBatchAction = ($canBatchEdit or $canBatchClose or $canBatchReview or $canBatchAssignTo); + $URTitle = common::checkNotCN() ? $lang->URCommon . ' ' . $lang->my->name : $lang->URCommon . $lang->my->name; ?> @@ -61,7 +62,7 @@ idAB);?> - URCommon . $lang->my->name);?> + pri;?>>priAB);?> statusAB);?> story->product);?> diff --git a/module/my/view/story.html.php b/module/my/view/story.html.php index e9bb468757..5c2d710f6a 100644 --- a/module/my/view/story.html.php +++ b/module/my/view/story.html.php @@ -55,6 +55,7 @@ $canEdit = common::hasPriv('story', 'edit'); $canCreateCase = common::hasPriv('testcase', 'create'); $canClose = common::hasPriv('story', 'close'); + $SRTitle = common::checkNotCN() ? $lang->SRCommon . ' ' . $lang->my->name : $lang->SRCommon . $lang->my->name; ?> @@ -66,13 +67,13 @@ idAB);?> + my->pri;?>>priAB);?> - my->name);?> + statusAB);?> story->product);?> story->plan);?> - openedByAB);?> + story->openedByAB);?> story->estimateAB);?> - statusAB);?> story->stageAB);?> actions;?> @@ -93,16 +94,16 @@ id);?> - pri;?>' title='story->priList, $story->pri, $story->pri);?>'>story->priList, $story->pri, $story->pri);?> title, null, "style='color: $story->color' data-group='product'") : $story->title;?> children)) echo '';;?> + pri;?>' title='story->priList, $story->pri, $story->pri);?>'>story->priList, $story->pri, $story->pri);?> + processStatus('story', $story);?> productTitle;?> planTitle;?> openedBy);?> estimate . $config->hourUnit;?> - processStatus('story', $story);?> story->stageList, $story->stage);?> id);?> - pri;?>' title='story->priList, $child->pri, $child->pri);?>'>story->priList, $child->pri, $child->pri);?> lang->story->children .'">' . $this->lang->story->childrenAB . ' ' . html::a($storyLink, $child->title, null, "style='color: $child->color' data-group='product' title='$child->title'");?> + pri;?>' title='story->priList, $child->pri, $child->pri);?>'>story->priList, $child->pri, $child->pri);?> + processStatus('story', $child);?> productTitle;?> planTitle;?> openedBy);?> estimate . $config->hourUnit;?> - processStatus('story', $child);?> story->stageList, $child->stage);?> Date: Mon, 10 Oct 2022 01:28:39 +0000 Subject: [PATCH 12/45] * Merge code. --- module/story/control.php | 18 ------------------ module/story/js/common.js | 24 ++++++++++++++++++++++++ module/story/js/create.js | 24 ------------------------ module/story/view/header.html.php | 13 ------------- 4 files changed, 24 insertions(+), 55 deletions(-) diff --git a/module/story/control.php b/module/story/control.php index ccc9bc8d99..7a04436294 100644 --- a/module/story/control.php +++ b/module/story/control.php @@ -2466,24 +2466,6 @@ class story extends control echo json_encode($storyInfo); } - /** - * AJAX: get the user requirements of the product. - * - * @param int $productID - * @param string $labelName - * @param bool $isMultiple - * @param int $defaultID - * @access public - * @return string - */ - public function ajaxGetProductURS($productID, $labelName = '', $isMultiple = false, $defaultID = '') - { - $requirements = array('0' => '') + $this->story->getRequirements($productID); - $labelName = $isMultiple ? $labelName . '[]' : $labelName; - $misc = $isMultiple ? 'class="form-control" multiple' : 'class="form-control"'; - return print(html::select($labelName, $requirements, $defaultID, $misc)); - } - /** * AJAX: get the parent story. * diff --git a/module/story/js/common.js b/module/story/js/common.js index ce4a67d484..5e6525c4eb 100644 --- a/module/story/js/common.js +++ b/module/story/js/common.js @@ -62,3 +62,27 @@ function getStatus(method, params) $('form #status').val(status).change(); }); } + +/** + * Load URS. + * + * @access public + * @return void + */ +function loadURS() +{ + var productID = $('#product').val(); + var branchID = $('#branch').val(); + var moduleID = $('#module').val(); + var requirementList = $('#URS').val(); + requirementList = requirementList ? requirementList.join(',') : ''; + + var link = createLink('story', 'ajaxGetURS', 'productID=' + productID + '&branchID=' + branchID + '&moduleID=' + moduleID + '&requirementList=' + requirementList); + + $.post(link, function(data) + { + $('#URS').replaceWith(data); + $('#URS_chosen').remove(); + $('#URS').chosen(); + }); +} diff --git a/module/story/js/create.js b/module/story/js/create.js index f976714126..868dfd6a20 100644 --- a/module/story/js/create.js +++ b/module/story/js/create.js @@ -80,30 +80,6 @@ function loadAssignedTo() }); } -/** - * Load URS. - * - * @access public - * @return void - */ -function loadURS() -{ - var productID = $('#product').val(); - var branchID = $('#branch').val(); - var moduleID = $('#module').val(); - var requirementList = $('#URS').val(); - requirementList = requirementList ? requirementList.join(',') : ''; - - var link = createLink('story', 'ajaxGetURS', 'productID=' + productID + '&branchID=' + branchID + '&moduleID=' + moduleID + '&requirementList=' + requirementList); - - $.post(link, function(data) - { - $('#URS').replaceWith(data); - $('#URS_chosen').remove(); - $('#URS').chosen(); - }); -} - function refreshPlan() { loadProductPlans($('#product').val(), $('#branch').val()); diff --git a/module/story/view/header.html.php b/module/story/view/header.html.php index 0640d71d1b..5d84b1a6b8 100644 --- a/module/story/view/header.html.php +++ b/module/story/view/header.html.php @@ -40,15 +40,6 @@ function loadProduct(productID) if(typeof(storyType) == 'string' && storyType == 'story') { - var requirementLink = createLink('story', 'ajaxGetProductURS', 'productID=' + productID + '&labelName=URS' + '&isMultiple=1'); - $.get(requirementLink, function(data) - { - $('#URS').replaceWith(data); - $('#URS' + "_chosen").remove(); - $('#URS').next('.picker').remove(); - $('#URS').chosen(); - }); - var storyLink = createLink('story', 'ajaxGetParentStory', 'productID=' + productID + '&labelName=parent'); $.get(storyLink, function(data) { @@ -75,7 +66,6 @@ function loadBranch() loadProductModules(productID, branch); loadProductPlans(productID, branch); - loadURS(); } /** @@ -105,7 +95,6 @@ function loadProductBranches(productID) loadProductModules(productID, $('#branch').val()); loadProductPlans(productID, $('#branch').val()); - loadURS(); }) } @@ -136,8 +125,6 @@ function loadProductModules(productID, branch) if(typeof(storyModule) == 'string' && config.currentMethod != 'edit') $moduleIDBox.prepend("" + storyModule + ""); $moduleIDBox.fixInputGroup(); }); - - loadURS(); } /** From 209e38775da5548e476cac5289287f0ab428c653 Mon Sep 17 00:00:00 2001 From: wangzemei Date: Mon, 10 Oct 2022 09:32:56 +0800 Subject: [PATCH 13/45] * rm class --- module/project/css/execution.css | 1 - 1 file changed, 1 deletion(-) diff --git a/module/project/css/execution.css b/module/project/css/execution.css index 030c955446..014a197078 100644 --- a/module/project/css/execution.css +++ b/module/project/css/execution.css @@ -12,4 +12,3 @@ th.table-nest-title .check-all {position: absolute; left: 15px; top: 7px;} #executionTableList > tr:not(.has-nest-child) .table-nest-toggle {display: none;} #executionTableList > tr:not(.has-nest-child) .project-type-label {margin-left: 22px;} .table-statistic {padding-left: 10px;} -#executionTableList .table-nest-icon {top: 6px;} From f95cedc085a19e82ddb3e9a1516758a46a8dc5e4 Mon Sep 17 00:00:00 2001 From: denghongtao Date: Mon, 10 Oct 2022 01:45:57 +0000 Subject: [PATCH 14/45] * Add repo create unittest. --- test/class/repo.class.php | 15 ++++++++++++++- test/model/repo/create.php | 39 +++++++++++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/test/class/repo.class.php b/test/class/repo.class.php index 7ed1021ee4..c8acfe550e 100644 --- a/test/class/repo.class.php +++ b/test/class/repo.class.php @@ -32,6 +32,13 @@ class repoTest return $objects; } + /** + * Get switcher test. + * + * @param int $repoID + * @access public + * @return object + */ public function getSwitcherTest($repoID) { $objects = $this->objectModel->getSwitcher($repoID); @@ -59,8 +66,14 @@ class repoTest return $objects; } - public function createTest() + public function createTest($list) { + $create = array(); + $getCreate = array('SCM' => '', 'serviceHost' => '', 'serviceProject' => '', 'name' => '', 'path' => '', 'encoding' => '', 'client' => '', 'account' => '', 'password' => '', 'encrypt' => '', 'desc' => '', 'uid' => ''); + + foreach($getCreate as $filed => $defaultvalue) $_POST[$filed] = $defaultvalue; + foreach($list as $key => $value) $_POST[$key] = $value; + $objects = $this->objectModel->create(); if(dao::isError()) return dao::getError(); diff --git a/test/model/repo/create.php b/test/model/repo/create.php index 15feb6410d..a808c1aadc 100644 --- a/test/model/repo/create.php +++ b/test/model/repo/create.php @@ -14,4 +14,41 @@ pid=1 $repo = new repoTest(); -r($repo->createTest()) && p() && e(); \ No newline at end of file +$list = array( + 'product' => '1', + 'SCM' => 'Gitlab', + 'serviceHost' => '2', + 'serviceProject' => '971', + 'name' => 'zzxx', + 'path' => '', + 'encoding' => 'utf-8', + 'client' => '/usr/bin/git', + 'account' => '', + 'password' => '', + 'encrypt' => 'base64', + 'desc' => '', + 'uid' => '6321819c78be5' +); + +$listOne = array( + 'SCM' => 'Gitea', + 'serviceHost' => 2, + 'serviceProject' => 'root/Demo', + 'name' => 'Demo', + 'path' => '', + 'encoding' => 'utf-8', + 'client' => '/usr/bin/git', + 'account' => '', + 'password' => '', + 'encrypt' => 'base64', + 'desc' => '', + 'uid' => '6322b184f3a72' +); + +$resultOne = $repo->createTest($list); +$resultTwo = $repo->createTest($list); +$resultThree = $repo->createTest($listOne); + +r($resultOne) && p($resultOne) && e('1'); +r($resultTwo) && p('name:0') && e('『名称』已经有『jktest』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); +r($resultThree) && p($resultThree) && e('因为安全原因,需要检测客户端版本,请将版本号写入文件'); From 6c39ac6ba50d8dcaaee3b922c85e6720870b944a Mon Sep 17 00:00:00 2001 From: tianshujie Date: Mon, 10 Oct 2022 09:49:54 +0800 Subject: [PATCH 15/45] * Finish task #71899. --- module/my/css/task.css | 2 +- module/my/view/task.html.php | 66 ++++++++++++++++++------------------ module/task/lang/de.php | 1 + module/task/lang/en.php | 1 + module/task/lang/fr.php | 1 + module/task/lang/zh-cn.php | 1 + 6 files changed, 38 insertions(+), 34 deletions(-) diff --git a/module/my/css/task.css b/module/my/css/task.css index bb99a08527..91e377162c 100644 --- a/module/my/css/task.css +++ b/module/my/css/task.css @@ -28,7 +28,7 @@ html[lang="en"] .c-user-short {width: 88px;} [lang^=de] #taskTable .c-date {width: 78px;} [lang^=de] #taskTable .assigned-title {width: 123px !important;} [lang^=de] #taskTable .c-user {width: 118px;} -[lang^=de] #taskTable .c-hours {width: 86px;} +[lang^=de] #taskTable .estimate, [lang^=de] #taskTable .consumed {width: 86px;} [lang^=de] #taskTable .c-user-short {width: 75px;} [lang^=fr] #taskTable .c-name {width: 120px;} [lang^=fr] #taskTable .c-project {width: 100px;} diff --git a/module/my/view/task.html.php b/module/my/view/task.html.php index 289ab3f422..cae4c91b9a 100644 --- a/module/my/view/task.html.php +++ b/module/my/view/task.html.php @@ -67,28 +67,28 @@ idAB);?> - task->pri;?>>priAB);?> task->name);?> + task->pri;?>>priAB);?> + statusAB);?> systemMode == 'new'):?> my->projects);?> task->execution);?> my->executions);?> - - openedByAB);?> - - task->deadlineAB);?> task->assignedTo);?> - - task->finishedBy);?> - + task->deadlineAB);?> task->estimateAB);?> task->consumedAB);?> task->leftAB);?> - statusAB);?> + + task->openedByAB);?> + + + task->finishedByAB);?> + actions;?> @@ -105,7 +105,6 @@ id);?> - pri;?>' title='task->priList, $task->pri);?>'>task->priList, $task->pri);?> ' title='name?>'> team)) echo '' . $this->lang->task->multipleAB . ' ';?> children)) echo '';?> + pri;?>' title='task->priList, $task->pri);?>'>task->priList, $task->pri);?> + + storyStatus) and $task->storyStatus == 'active' and $task->latestStoryVersion > $task->storyVersion and !in_array($task->status, array('cancel', 'closed')));?> + {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $task) . "");?> + systemMode == 'new'):?> execution]->name) ? $projects[$task->execution]->name : '';?> execution]->id) ? $projects[$task->execution]->id : 0;?> @@ -130,23 +134,19 @@ createLink('execution', 'task', "executionID=$task->execution"), $task->executionName, '');?> - - openedBy);?> - - deadline, 0, 4) > 0) echo substr($task->deadline, 5, 6);?> task->printAssignedHtml($task, $users);?> + deadline, 0, 4) > 0) echo substr($task->deadline, 5, 6);?> + estimate, 1) . $lang->execution->workHourUnit;?> + consumed, 1) . $lang->execution->workHourUnit;?> + left, 1) . $lang->execution->workHourUnit;?> + + openedBy);?> + finishedBy);?> - estimate, 1) . $lang->execution->workHourUnit;?> - consumed, 1) . $lang->execution->workHourUnit;?> - left, 1) . $lang->execution->workHourUnit;?> - - storyStatus) and $task->storyStatus == 'active' and $task->latestStoryVersion > $task->storyVersion and !in_array($task->status, array('cancel', 'closed')));?> - {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $task) . "");?> - id);?> - pri;?>' title='task->priList, $child->pri);?>'>task->priList, $child->pri);?> parent > 0) echo '' . $this->lang->task->childrenAB . ' ';?> createLink('task', 'view', "taskID=$child->id", '', '', $child->project), $child->name, null, "style='color: $child->color'");?> + pri;?>' title='task->priList, $child->pri);?>'>task->priList, $child->pri);?> + + storyStatus) and $child->storyStatus == 'active' and $child->latestStoryVersion > $child->storyVersion and !in_array($child->status, array('cancel', 'closed')));?> + {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $child) . "");?> + systemMode == 'new'):?> execution]->name) ? $projects[$child->execution]->name : '';?> execution]->id) ? $projects[$child->execution]->id : 0;?> @@ -207,23 +211,19 @@ createLink('execution', 'task', "executionID=$child->project"), $child->executionName, '');?> - - openedBy);?> - - deadline, 0, 4) > 0) echo substr($child->deadline, 5, 6);?> task->printAssignedHtml($child, $users);?> + deadline, 0, 4) > 0) echo substr($child->deadline, 5, 6);?> + estimate, 1) . ' ' . $lang->execution->workHourUnit;?> + consumed, 1) . ' ' . $lang->execution->workHourUnit;?> + left, 1) . ' ' . $lang->execution->workHourUnit;?> + + openedBy);?> + finishedBy);?> - estimate, 1) . ' ' . $lang->execution->workHourUnit;?> - consumed, 1) . ' ' . $lang->execution->workHourUnit;?> - left, 1) . ' ' . $lang->execution->workHourUnit;?> - - storyStatus) and $child->storyStatus == 'active' and $child->latestStoryVersion > $child->storyVersion and !in_array($child->status, array('cancel', 'closed')));?> - {$this->lang->my->storyChanged}") : print(" " . $this->processStatus('task', $child) . "");?> - task->assignedTo = 'Zuständiger'; $lang->task->assignedToAB = 'Zuständiger'; $lang->task->assignedDate = 'Zugewisen am'; $lang->task->openedBy = 'Ersteller'; +$lang->task->openedByAB = 'Created'; $lang->task->openedDate = 'Erstellt am'; $lang->task->openedDateAB = 'Hinzufügen'; $lang->task->finishedBy = 'Abgeschlossen'; diff --git a/module/task/lang/en.php b/module/task/lang/en.php index 571fcd261e..ba1f6b3d72 100755 --- a/module/task/lang/en.php +++ b/module/task/lang/en.php @@ -116,6 +116,7 @@ $lang->task->assignedTo = 'AssignTo'; $lang->task->assignedToAB = 'AssignedTo'; $lang->task->assignedDate = 'AssignedDate'; $lang->task->openedBy = 'CreatedBy'; +$lang->task->openedByAB = 'Created'; $lang->task->openedDate = 'CreatedDate'; $lang->task->openedDateAB = 'CreatedOn'; $lang->task->finishedBy = 'FinishedBy'; diff --git a/module/task/lang/fr.php b/module/task/lang/fr.php index baa3e29cd1..75732a008f 100644 --- a/module/task/lang/fr.php +++ b/module/task/lang/fr.php @@ -116,6 +116,7 @@ $lang->task->assignedTo = 'Affectée à'; $lang->task->assignedToAB = 'Assigné à'; $lang->task->assignedDate = 'Date Assign.'; $lang->task->openedBy = 'Créé par'; +$lang->task->openedByAB = 'Créer'; $lang->task->openedDate = 'Date création'; $lang->task->openedDateAB = 'Date création'; $lang->task->finishedBy = 'Terminé par'; diff --git a/module/task/lang/zh-cn.php b/module/task/lang/zh-cn.php index fd840a99fa..fa9bfbae82 100755 --- a/module/task/lang/zh-cn.php +++ b/module/task/lang/zh-cn.php @@ -116,6 +116,7 @@ $lang->task->assignedTo = '指派给'; $lang->task->assignedToAB = '指派给'; $lang->task->assignedDate = '指派日期'; $lang->task->openedBy = '由谁创建'; +$lang->task->openedByAB = '创建者'; $lang->task->openedDate = '创建日期'; $lang->task->openedDateAB = '创建'; $lang->task->finishedBy = '由谁完成'; From 83a6a8ab53b048f2730d25bf714b1075802ad472 Mon Sep 17 00:00:00 2001 From: wangzemei Date: Mon, 10 Oct 2022 09:58:19 +0800 Subject: [PATCH 16/45] * finish task #71885 && #71893 --- module/my/view/testtask.html.php | 8 ++++---- module/testtask/view/browse.html.php | 13 +++++++------ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/module/my/view/testtask.html.php b/module/my/view/testtask.html.php index 9df1becf44..41ea4b2004 100644 --- a/module/my/view/testtask.html.php +++ b/module/my/view/testtask.html.php @@ -35,11 +35,11 @@ idAB);?> testtask->name);?> - testtask->execution);?> testtask->build);?> + testtask->execution);?> + statusAB);?> testtask->begin);?> testtask->end);?> - statusAB);?> actions;?> @@ -48,11 +48,11 @@ id);?> createLink('testtask', 'view', "taskID=$task->id"), $task->name);?> - executionName;?> trunk : $task->buildName;?>'>build == 'trunk' ? print($lang->trunk) : print(html::a($this->createLink('build', 'view', "buildID=$task->build"), $task->buildName));?> + executionName;?> + '>processStatus('testtask', $task);?> begin?> end?> - '>processStatus('testtask', $task);?> id", $task, 'list', 'sitemap', '', '', '', "data-app='qa'"); diff --git a/module/testtask/view/browse.html.php b/module/testtask/view/browse.html.php index 3006fdf351..f6c1afa48b 100644 --- a/module/testtask/view/browse.html.php +++ b/module/testtask/view/browse.html.php @@ -60,13 +60,13 @@ $status = $this->session->testTaskVersionStatus; idAB);?> testtask->name);?> + testtask->build);?> testtask->product);?> testtask->execution);?> - testtask->build);?> + statusAB);?> testtask->owner);?> testtask->begin);?> testtask->end);?> - statusAB);?> testtask->getFlowExtendFields(); foreach($extendFields as $extendField) echo "{$extendField->name}"; @@ -79,18 +79,19 @@ $status = $this->session->testTaskVersionStatus; id"), sprintf('%03d', $task->id));?> id"), $task->name);?> + build == 'trunk' || empty($task->buildName)) ? $lang->trunk : html::a($this->createLink('build', 'view', "buildID=$task->build"), $task->buildName, '', "data-group=execution");?> productName?> executionName?> - build == 'trunk' || empty($task->buildName)) ? $lang->trunk : html::a($this->createLink('build', 'view', "buildID=$task->build"), $task->buildName, '', "data-group=execution");?> - owner);?> - begin?> - end?> processStatus('testtask', $task);?> + owner);?> + begin?> + end?> + " . $this->loadModel('flow')->getFieldValue($extendField, $task) . "";?> testtask->buildOperateMenu($task, 'browse');?> From f4aa9517743a37f602387a9bda9a7c6706c9e257 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=BB=B6=E4=B9=89?= Date: Mon, 10 Oct 2022 09:59:14 +0800 Subject: [PATCH 17/45] * Finish task #71874. --- module/bug/config.php | 144 +++++++++++++++++++++--------------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/module/bug/config.php b/module/bug/config.php index 5ac6e7d586..a2dc0c6292 100644 --- a/module/bug/config.php +++ b/module/bug/config.php @@ -24,7 +24,7 @@ $config->bug->list->allFields = 'id, module, execution, story, task, lastEditedBy, lastEditedDate'; -$config->bug->list->defaultFields = 'id,severity,pri,title,openedBy,assignedTo,resolvedBy,resolution'; +$config->bug->list->defaultFields = 'id,title,severity,pri,openedBy,assignedTo,resolvedBy,resolution'; $config->bug->exportFields = 'id, product, branch, module, project, execution, story, task, title, keywords, severity, pri, type, os, browser, @@ -159,7 +159,7 @@ $config->bug->search['params']['deadline'] = array('operator' => '=', $config->bug->search['params']['activatedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date'); $config->bug->datatable = new stdclass(); -$config->bug->datatable->defaultField = array('id', 'severity', 'pri', 'confirmed', 'title', 'status', 'openedBy', 'openedDate', 'assignedTo', 'resolution', 'actions'); +$config->bug->datatable->defaultField = array('id', 'title', 'severity', 'pri', 'status', 'openedBy', 'openedDate', 'confirmed', 'assignedTo', 'resolution', 'actions'); $config->bug->datatable->fieldList['id']['title'] = 'idAB'; $config->bug->datatable->fieldList['id']['fixed'] = 'left'; @@ -174,6 +174,12 @@ $config->bug->datatable->fieldList['module']['control'] = 'select'; $config->bug->datatable->fieldList['module']['title'] = 'module'; $config->bug->datatable->fieldList['module']['dataSource'] = array('module' => 'tree', 'method' => 'getOptionMenu', 'params' => '$productID&bug'); +$config->bug->datatable->fieldList['title']['title'] = 'title'; +$config->bug->datatable->fieldList['title']['fixed'] = 'left'; +$config->bug->datatable->fieldList['title']['width'] = 'auto'; +$config->bug->datatable->fieldList['title']['required'] = 'yes'; +$config->bug->datatable->fieldList['title']['minWidth'] = '200'; + $config->bug->datatable->fieldList['severity']['title'] = 'severityAB'; $config->bug->datatable->fieldList['severity']['fixed'] = 'left'; $config->bug->datatable->fieldList['severity']['width'] = '50'; @@ -186,16 +192,10 @@ $config->bug->datatable->fieldList['pri']['width'] = '50'; $config->bug->datatable->fieldList['pri']['required'] = 'no'; $config->bug->datatable->fieldList['pri']['name'] = $lang->bug->pri; -$config->bug->datatable->fieldList['confirmed']['title'] = 'confirmedAB'; -$config->bug->datatable->fieldList['confirmed']['fixed'] = 'left'; -$config->bug->datatable->fieldList['confirmed']['width'] = '100'; -$config->bug->datatable->fieldList['confirmed']['required'] = 'no'; - -$config->bug->datatable->fieldList['title']['title'] = 'title'; -$config->bug->datatable->fieldList['title']['fixed'] = 'left'; -$config->bug->datatable->fieldList['title']['width'] = 'auto'; -$config->bug->datatable->fieldList['title']['required'] = 'yes'; -$config->bug->datatable->fieldList['title']['minWidth'] = '200'; +$config->bug->datatable->fieldList['status']['title'] = 'statusAB'; +$config->bug->datatable->fieldList['status']['fixed'] = 'left'; +$config->bug->datatable->fieldList['status']['width'] = '80'; +$config->bug->datatable->fieldList['status']['required'] = 'no'; $config->bug->datatable->fieldList['branch']['title'] = 'branch'; $config->bug->datatable->fieldList['branch']['fixed'] = 'left'; @@ -230,10 +230,66 @@ $config->bug->datatable->fieldList['plan']['fixed'] = 'no'; $config->bug->datatable->fieldList['plan']['width'] = '120'; $config->bug->datatable->fieldList['plan']['required'] = 'no'; -$config->bug->datatable->fieldList['status']['title'] = 'statusAB'; -$config->bug->datatable->fieldList['status']['fixed'] = 'no'; -$config->bug->datatable->fieldList['status']['width'] = '80'; -$config->bug->datatable->fieldList['status']['required'] = 'no'; +$config->bug->datatable->fieldList['openedBy']['title'] = 'openedByAB'; +$config->bug->datatable->fieldList['openedBy']['fixed'] = 'no'; +$config->bug->datatable->fieldList['openedBy']['width'] = '80'; +$config->bug->datatable->fieldList['openedBy']['required'] = 'no'; + +$config->bug->datatable->fieldList['openedDate']['title'] = 'openedDateAB'; +$config->bug->datatable->fieldList['openedDate']['fixed'] = 'no'; +$config->bug->datatable->fieldList['openedDate']['width'] = '90'; +$config->bug->datatable->fieldList['openedDate']['required'] = 'no'; + +$config->bug->datatable->fieldList['openedBuild']['title'] = 'openedBuild'; +$config->bug->datatable->fieldList['openedBuild']['fixed'] = 'no'; +$config->bug->datatable->fieldList['openedBuild']['width'] = '120'; +$config->bug->datatable->fieldList['openedBuild']['required'] = 'no'; +$config->bug->datatable->fieldList['openedBuild']['control'] = 'multiple'; +$config->bug->datatable->fieldList['openedBuild']['dataSource'] = array('module' => 'build', 'method' =>'getBuildPairs', 'params' => '$productID&$branch&noempty,noterminate,nodone,withbranch'); + +$config->bug->datatable->fieldList['confirmed']['title'] = 'confirmedAB'; +$config->bug->datatable->fieldList['confirmed']['fixed'] = 'no'; +$config->bug->datatable->fieldList['confirmed']['width'] = '100'; +$config->bug->datatable->fieldList['confirmed']['required'] = 'no'; + +$config->bug->datatable->fieldList['assignedTo']['title'] = 'assignedToAB'; +$config->bug->datatable->fieldList['assignedTo']['fixed'] = 'no'; +$config->bug->datatable->fieldList['assignedTo']['width'] = '120'; +$config->bug->datatable->fieldList['assignedTo']['required'] = 'no'; +$config->bug->datatable->fieldList['assignedTo']['dataSource'] = array('module' => 'user', 'method' =>'getPairs', 'params' => 'noclosed|noletter'); + +$config->bug->datatable->fieldList['assignedDate']['title'] = 'assignedDate'; +$config->bug->datatable->fieldList['assignedDate']['fixed'] = 'no'; +$config->bug->datatable->fieldList['assignedDate']['width'] = '90'; +$config->bug->datatable->fieldList['assignedDate']['required'] = 'no'; + +$config->bug->datatable->fieldList['deadline']['title'] = 'deadline'; +$config->bug->datatable->fieldList['deadline']['fixed'] = 'no'; +$config->bug->datatable->fieldList['deadline']['width'] = '90'; +$config->bug->datatable->fieldList['deadline']['required'] = 'no'; +$config->bug->datatable->fieldList['deadline']['control'] = 'date'; + +$config->bug->datatable->fieldList['resolvedBy']['title'] = 'resolvedBy'; +$config->bug->datatable->fieldList['resolvedBy']['fixed'] = 'no'; +$config->bug->datatable->fieldList['resolvedBy']['width'] = '100'; +$config->bug->datatable->fieldList['resolvedBy']['required'] = 'no'; + +$config->bug->datatable->fieldList['resolution']['title'] = 'resolutionAB'; +$config->bug->datatable->fieldList['resolution']['fixed'] = 'no'; +$config->bug->datatable->fieldList['resolution']['width'] = '110'; +$config->bug->datatable->fieldList['resolution']['required'] = 'no'; + +$config->bug->datatable->fieldList['resolvedDate']['title'] = 'resolvedDateAB'; +$config->bug->datatable->fieldList['resolvedDate']['fixed'] = 'no'; +$config->bug->datatable->fieldList['resolvedDate']['width'] = '120'; +$config->bug->datatable->fieldList['resolvedDate']['required'] = 'no'; + +$config->bug->datatable->fieldList['resolvedBuild']['title'] = 'resolvedBuild'; +$config->bug->datatable->fieldList['resolvedBuild']['fixed'] = 'no'; +$config->bug->datatable->fieldList['resolvedBuild']['width'] = '120'; +$config->bug->datatable->fieldList['resolvedBuild']['required'] = 'no'; +$config->bug->datatable->fieldList['resolvedBuild']['control'] = 'select'; +$config->bug->datatable->fieldList['resolvedBuild']['dataSource'] = array('module' => 'bug', 'method' =>'getRelatedObjects', 'params' => 'resolvedBuild&id,name'); $config->bug->datatable->fieldList['activatedCount']['title'] = 'activatedCountAB'; $config->bug->datatable->fieldList['activatedCount']['fixed'] = 'no'; @@ -283,62 +339,6 @@ $config->bug->datatable->fieldList['mailto']['fixed'] = 'no'; $config->bug->datatable->fieldList['mailto']['width'] = '100'; $config->bug->datatable->fieldList['mailto']['required'] = 'no'; -$config->bug->datatable->fieldList['openedBy']['title'] = 'openedByAB'; -$config->bug->datatable->fieldList['openedBy']['fixed'] = 'no'; -$config->bug->datatable->fieldList['openedBy']['width'] = '80'; -$config->bug->datatable->fieldList['openedBy']['required'] = 'no'; - -$config->bug->datatable->fieldList['openedDate']['title'] = 'openedDateAB'; -$config->bug->datatable->fieldList['openedDate']['fixed'] = 'no'; -$config->bug->datatable->fieldList['openedDate']['width'] = '90'; -$config->bug->datatable->fieldList['openedDate']['required'] = 'no'; - -$config->bug->datatable->fieldList['openedBuild']['title'] = 'openedBuild'; -$config->bug->datatable->fieldList['openedBuild']['fixed'] = 'no'; -$config->bug->datatable->fieldList['openedBuild']['width'] = '120'; -$config->bug->datatable->fieldList['openedBuild']['required'] = 'no'; -$config->bug->datatable->fieldList['openedBuild']['control'] = 'multiple'; -$config->bug->datatable->fieldList['openedBuild']['dataSource'] = array('module' => 'build', 'method' =>'getBuildPairs', 'params' => '$productID&$branch&noempty,noterminate,nodone,withbranch'); - -$config->bug->datatable->fieldList['assignedTo']['title'] = 'assignedToAB'; -$config->bug->datatable->fieldList['assignedTo']['fixed'] = 'no'; -$config->bug->datatable->fieldList['assignedTo']['width'] = '120'; -$config->bug->datatable->fieldList['assignedTo']['required'] = 'no'; -$config->bug->datatable->fieldList['assignedTo']['dataSource'] = array('module' => 'user', 'method' =>'getPairs', 'params' => 'noclosed|noletter'); - -$config->bug->datatable->fieldList['assignedDate']['title'] = 'assignedDate'; -$config->bug->datatable->fieldList['assignedDate']['fixed'] = 'no'; -$config->bug->datatable->fieldList['assignedDate']['width'] = '90'; -$config->bug->datatable->fieldList['assignedDate']['required'] = 'no'; - -$config->bug->datatable->fieldList['deadline']['title'] = 'deadline'; -$config->bug->datatable->fieldList['deadline']['fixed'] = 'no'; -$config->bug->datatable->fieldList['deadline']['width'] = '90'; -$config->bug->datatable->fieldList['deadline']['required'] = 'no'; -$config->bug->datatable->fieldList['deadline']['control'] = 'date'; - -$config->bug->datatable->fieldList['resolvedBy']['title'] = 'resolvedByAB'; -$config->bug->datatable->fieldList['resolvedBy']['fixed'] = 'no'; -$config->bug->datatable->fieldList['resolvedBy']['width'] = '100'; -$config->bug->datatable->fieldList['resolvedBy']['required'] = 'no'; - -$config->bug->datatable->fieldList['resolution']['title'] = 'resolutionAB'; -$config->bug->datatable->fieldList['resolution']['fixed'] = 'no'; -$config->bug->datatable->fieldList['resolution']['width'] = '110'; -$config->bug->datatable->fieldList['resolution']['required'] = 'no'; - -$config->bug->datatable->fieldList['resolvedDate']['title'] = 'resolvedDateAB'; -$config->bug->datatable->fieldList['resolvedDate']['fixed'] = 'no'; -$config->bug->datatable->fieldList['resolvedDate']['width'] = '120'; -$config->bug->datatable->fieldList['resolvedDate']['required'] = 'no'; - -$config->bug->datatable->fieldList['resolvedBuild']['title'] = 'resolvedBuild'; -$config->bug->datatable->fieldList['resolvedBuild']['fixed'] = 'no'; -$config->bug->datatable->fieldList['resolvedBuild']['width'] = '120'; -$config->bug->datatable->fieldList['resolvedBuild']['required'] = 'no'; -$config->bug->datatable->fieldList['resolvedBuild']['control'] = 'select'; -$config->bug->datatable->fieldList['resolvedBuild']['dataSource'] = array('module' => 'bug', 'method' =>'getRelatedObjects', 'params' => 'resolvedBuild&id,name'); - $config->bug->datatable->fieldList['closedBy']['title'] = 'closedBy'; $config->bug->datatable->fieldList['closedBy']['fixed'] = 'no'; $config->bug->datatable->fieldList['closedBy']['width'] = '80'; From 01fac13aeed7d7c24f581c51cb079547a5d56dea Mon Sep 17 00:00:00 2001 From: denghongtao Date: Mon, 10 Oct 2022 02:04:59 +0000 Subject: [PATCH 18/45] * Fix unittest note. --- test/model/repo/checkpriv.php | 4 +++- test/model/repo/create.php | 6 +++++- test/ztest | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) mode change 100644 => 100755 test/model/repo/checkpriv.php mode change 100644 => 100755 test/model/repo/create.php diff --git a/test/model/repo/checkpriv.php b/test/model/repo/checkpriv.php old mode 100644 new mode 100755 index c7308b0637..a7a980c74b --- a/test/model/repo/checkpriv.php +++ b/test/model/repo/checkpriv.php @@ -10,6 +10,8 @@ title=测试 repoModel->checkPriv(); cid=1 pid=1 + >> 0 + */ $checkPriv = new repoTest(); @@ -20,4 +22,4 @@ $repo->acl->user = 'admin'; $result = $checkPriv->checkPrivTest($repo); -r($result) && p($result) && e('0'); +r($result) && p($result) && e('0'); \ No newline at end of file diff --git a/test/model/repo/create.php b/test/model/repo/create.php old mode 100644 new mode 100755 index a808c1aadc..bc42977edc --- a/test/model/repo/create.php +++ b/test/model/repo/create.php @@ -10,6 +10,10 @@ title=测试 repoModel->create(); cid=1 pid=1 + >> 1 + >> 『名称』已经有『jktest』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。 + >> 因为安全原因,需要检测客户端版本,请将版本号写入文件 + */ $repo = new repoTest(); @@ -51,4 +55,4 @@ $resultThree = $repo->createTest($listOne); r($resultOne) && p($resultOne) && e('1'); r($resultTwo) && p('name:0') && e('『名称』已经有『jktest』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); -r($resultThree) && p($resultThree) && e('因为安全原因,需要检测客户端版本,请将版本号写入文件'); +r($resultThree) && p($resultThree) && e('因为安全原因,需要检测客户端版本,请将版本号写入文件'); \ No newline at end of file diff --git a/test/ztest b/test/ztest index 2febe0d248..be776ffd95 100755 --- a/test/ztest +++ b/test/ztest @@ -202,6 +202,9 @@ switch($argv[1]) case 'webhook': ztfRun('model/webhook'); break; + case 'repo': + ztfRun('model/repo'); + break; default: ztfExtract($argv[1]); From d6bd6c978b60a967cefb54c456d07a58a84b07d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=BB=B6=E4=B9=89?= Date: Mon, 10 Oct 2022 10:05:40 +0800 Subject: [PATCH 19/45] * Modify bug list style. --- module/user/view/bug.html.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module/user/view/bug.html.php b/module/user/view/bug.html.php index 3a92c71feb..d13f6c87f0 100644 --- a/module/user/view/bug.html.php +++ b/module/user/view/bug.html.php @@ -39,10 +39,10 @@ idAB);?> + bug->title);?> bug->severity;?>>bug->severityAB);?> priAB);?> typeAB);?> - bug->title);?> openedByAB);?> bug->resolvedBy);?> bug->resolutionAB);?> @@ -52,10 +52,10 @@ createLink('bug', 'view', "bugID=$bug->id"), $bug->id, '_blank');?> + createLink('bug', 'view', "bugID=$bug->id"), $bug->title);?> bug->severityList, $bug->severity, $bug->severity)?>'>bug->severityList, $bug->severity, $bug->severity)?> bug->priList, $bug->pri, $bug->pri)?>'>bug->priList, $bug->pri, $bug->pri)?> - bug->typeList[$bug->type]?> - createLink('bug', 'view', "bugID=$bug->id"), $bug->title);?> + bug->typeList, $bug->type, '');?> openedBy);?> resolvedBy);?> bug->resolutionList, $bug->resolution);?> From 46e14081095dc46b6cc08fcf659439f94fdd9a1e Mon Sep 17 00:00:00 2001 From: wangzemei Date: Mon, 10 Oct 2022 10:08:38 +0800 Subject: [PATCH 20/45] * modify privateNum --- module/testsuite/control.php | 7 ++----- module/testsuite/lang/de.php | 4 ++-- module/testsuite/lang/en.php | 4 ++-- module/testsuite/lang/fr.php | 4 ++-- module/testsuite/lang/vi.php | 4 ++-- module/testsuite/lang/zh-cn.php | 4 ++-- module/testsuite/lang/zh-tw.php | 3 +-- 7 files changed, 13 insertions(+), 17 deletions(-) diff --git a/module/testsuite/control.php b/module/testsuite/control.php index 7877cd34bf..9908481772 100644 --- a/module/testsuite/control.php +++ b/module/testsuite/control.php @@ -81,18 +81,15 @@ class testsuite extends control $pager = pager::init(0, $recPerPage, 1); $suites = $this->testsuite->getSuites($productID, $sort, $pager, $type); } - $privateSuites = array(); + $privateNum = 0; foreach($suites as $suiteItem) { - $item = new stdclass(); - $item = $suiteItem; if($suiteItem->type == 'private') { - $privateSuites[] = $item; + $privateNum++; } } $suitesNum = !empty(count($suites, 0)) ? count($suites, 0) : 0; - $privateNum = !empty(count($privateSuites, 0)) ? count($privateSuites, 0) : 0; $publicNum = $suitesNum - $privateNum; $summary = str_replace(array('%total%', '%public%', '%private%'), array($suitesNum, $publicNum, $privateNum), $this->lang->testsuite->summary); diff --git a/module/testsuite/lang/de.php b/module/testsuite/lang/de.php index 6c1fc44cb7..d5e3e7fe86 100644 --- a/module/testsuite/lang/de.php +++ b/module/testsuite/lang/de.php @@ -48,6 +48,7 @@ $lang->testsuite->confirmUnlinkCase = 'Möchten Sie diese Verknüpfung aufheben? $lang->testsuite->noticeNone = 'Sie haben noch keine Suite erstellt.'; $lang->testsuite->noModule = '
Sie haben keine Module
Jetzt verwalten
'; $lang->testsuite->noTestsuite = 'Keine Suite. '; +$lang->testsuite->summary = "Total suites: %total%, public: %public%, private: %private%."; $lang->testsuite->lblCases = 'Fälle'; $lang->testsuite->lblUnlinkCase = 'Unverknüpfte Fälle'; @@ -55,5 +56,4 @@ $lang->testsuite->lblUnlinkCase = 'Unverknüpfte Fälle'; $lang->testsuite->authorList['private'] = 'Privat'; $lang->testsuite->authorList['public'] = 'Öffentlich'; -$lang->testsuite->featureBar['browse']['all'] = 'Suite List'; -$lang->testsuite->summary = "Total suites: %total%, public: %public%, private: %private%."; +$lang->testsuite->featureBar['browse']['all'] = 'Suite List'; \ No newline at end of file diff --git a/module/testsuite/lang/en.php b/module/testsuite/lang/en.php index 7128ec80d4..cb4281af01 100644 --- a/module/testsuite/lang/en.php +++ b/module/testsuite/lang/en.php @@ -48,6 +48,7 @@ $lang->testsuite->confirmUnlinkCase = 'Do you want to unlink this Case?'; $lang->testsuite->noticeNone = 'You have not created any suite yet.'; $lang->testsuite->noModule = '
You have no modules.
Manage it now.
'; $lang->testsuite->noTestsuite = 'No suites yet.'; +$lang->testsuite->summary = "Total suites: %total%, public: %public%, private: %private%."; $lang->testsuite->lblCases = 'Cases'; $lang->testsuite->lblUnlinkCase = 'Unlink Case'; @@ -55,5 +56,4 @@ $lang->testsuite->lblUnlinkCase = 'Unlink Case'; $lang->testsuite->authorList['private'] = 'Private'; $lang->testsuite->authorList['public'] = 'Public'; -$lang->testsuite->featureBar['browse']['all'] = 'Suite List'; -$lang->testsuite->summary = "Total suites: %total%, public: %public%, private: %private%."; +$lang->testsuite->featureBar['browse']['all'] = 'Suite List'; \ No newline at end of file diff --git a/module/testsuite/lang/fr.php b/module/testsuite/lang/fr.php index 99c4498967..919364f957 100644 --- a/module/testsuite/lang/fr.php +++ b/module/testsuite/lang/fr.php @@ -48,6 +48,7 @@ $lang->testsuite->confirmUnlinkCase = 'Voulez-vous retirer ce CasTest ?'; $lang->testsuite->noticeNone = "Vous n'avez pas encore créé de Cahier de Recette pour l'instant."; $lang->testsuite->noModule = '
Vous avez aucun Module.
Gérer les Modules maintenant.
'; $lang->testsuite->noTestsuite = 'Aucun Cahier de Recette.'; +$lang->testsuite->summary = "Total suites: %total%, public: %public%, private: %private%."; $lang->testsuite->lblCases = 'CasTests'; $lang->testsuite->lblUnlinkCase = 'Retirer CasTest'; @@ -55,5 +56,4 @@ $lang->testsuite->lblUnlinkCase = 'Retirer CasTest'; $lang->testsuite->authorList['private'] = 'Privé'; $lang->testsuite->authorList['public'] = 'Public'; -$lang->testsuite->featureBar['browse']['all'] = 'Suite List'; -$lang->testsuite->summary = "Total suites: %total%, public: %public%, private: %private%."; +$lang->testsuite->featureBar['browse']['all'] = 'Suite List'; \ No newline at end of file diff --git a/module/testsuite/lang/vi.php b/module/testsuite/lang/vi.php index ec5a8292d0..457ea04a1d 100644 --- a/module/testsuite/lang/vi.php +++ b/module/testsuite/lang/vi.php @@ -45,6 +45,7 @@ $lang->testsuite->confirmUnlinkCase = 'Bạn có muốn hủy liên kết tình $lang->testsuite->noticeNone = 'Bạn chưa tạo suite nào'; $lang->testsuite->noModule = '
Chưa có Module.
Quản lý ngay.
'; $lang->testsuite->noTestsuite = 'Không có suites nào'; +$lang->testsuite->summary = "Tổng %total% suites nào, Công khai: %public%, Riêng tư: %private%."; $lang->testsuite->lblCases = 'Tình huống'; $lang->testsuite->lblUnlinkCase = 'Hủy liên kết tình huống'; @@ -52,5 +53,4 @@ $lang->testsuite->lblUnlinkCase = 'Hủy liên kết tình huống'; $lang->testsuite->authorList['private'] = 'Riêng tư'; $lang->testsuite->authorList['public'] = 'Công khai'; -$lang->testsuite->featureBar['browse']['all'] = 'Suite List'; -$lang->testsuite->summary = "Tổng %total% suites nào, Công khai: %public%, Riêng tư: %private%."; \ No newline at end of file +$lang->testsuite->featureBar['browse']['all'] = 'Suite List'; \ No newline at end of file diff --git a/module/testsuite/lang/zh-cn.php b/module/testsuite/lang/zh-cn.php index 945318be4f..245fded3ca 100644 --- a/module/testsuite/lang/zh-cn.php +++ b/module/testsuite/lang/zh-cn.php @@ -48,6 +48,7 @@ $lang->testsuite->confirmUnlinkCase = '您确认要移除该用例吗?'; $lang->testsuite->noticeNone = '您还没有创建套件'; $lang->testsuite->noModule = '
您现在还没有模块信息
请维护用例库模块
'; $lang->testsuite->noTestsuite = '暂时没有套件。'; +$lang->testsuite->summary = "本页共 %total% 个套件,公开 %public% 个,私有 %private% 个。"; $lang->testsuite->lblCases = '用例列表'; $lang->testsuite->lblUnlinkCase = '移除用例'; @@ -55,5 +56,4 @@ $lang->testsuite->lblUnlinkCase = '移除用例'; $lang->testsuite->authorList['private'] = '私有'; $lang->testsuite->authorList['public'] = '公开'; -$lang->testsuite->featureBar['browse']['all'] = '套件列表'; -$lang->testsuite->summary = "本页共 %total% 个套件,公开 %public% 个,私有 %private% 个。"; +$lang->testsuite->featureBar['browse']['all'] = '套件列表'; \ No newline at end of file diff --git a/module/testsuite/lang/zh-tw.php b/module/testsuite/lang/zh-tw.php index 30112fc5e1..bbf98e3817 100644 --- a/module/testsuite/lang/zh-tw.php +++ b/module/testsuite/lang/zh-tw.php @@ -47,11 +47,10 @@ $lang->testsuite->confirmUnlinkCase = '您確認要移除該用例嗎?'; $lang->testsuite->noticeNone = '您還沒有創建套件'; $lang->testsuite->noModule = '
您現在還沒有模組信息
請維護用例庫模組
'; $lang->testsuite->noTestsuite = '暫時沒有套件。'; +$lang->testsuite->summary = "本頁共 %total% 個套件,公開 %public% 個,私有 %private% 個。"; $lang->testsuite->lblCases = '用例列表'; $lang->testsuite->lblUnlinkCase = '移除用例'; $lang->testsuite->authorList['private'] = '私有'; $lang->testsuite->authorList['public'] = '公開'; -$lang->testsuite->summary = "本頁共 %total% 個套件,公開 %public% 個,私有 %private% 個。"; - From 20fdae4f1b98d5ce0615db96b7ce8b9352ad98f7 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Mon, 10 Oct 2022 10:11:28 +0800 Subject: [PATCH 21/45] * Finish task #71889. --- module/my/css/todo.css | 1 + module/my/view/todo.html.php | 24 ++++++++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/module/my/css/todo.css b/module/my/css/todo.css index 73c3524397..6ee004343a 100644 --- a/module/my/css/todo.css +++ b/module/my/css/todo.css @@ -10,3 +10,4 @@ .panel-actions .btn-icon {padding-left: 7px;} [lang^=de] .c-pri {width: 69px;} [lang^=fr] .c-pri {width: 82px;} +[lang^=en] .c-user, [lang^=fr] .c-user {width: 100px !important;} diff --git a/module/my/view/todo.html.php b/module/my/view/todo.html.php index 22533a65a5..b68cbd955c 100644 --- a/module/my/view/todo.html.php +++ b/module/my/view/todo.html.php @@ -87,15 +87,19 @@ idAB);?> - todo->date);?> - todo->type);?> + todo->name);?> app->clientLang == 'en' ? "style='width:80px'" : '';?> title=todo->pri;?>> priAB);?> - todo->name);?> + todo->date);?> + todo->status);?> + todo->type);?> + todo->assignedTo);?> + + todo->assignedBy);?> + todo->beginAB);?> todo->endAB);?> - todo->status);?> actions;?> @@ -111,14 +115,18 @@ id?> - date == '2030-01-01' ? $lang->todo->periods['future'] : $todo->date;?> - todo->typeList, $todo->type, '');?> - pri;?>' title='todo->priList, $todo->pri, $todo->pri);?>'>todo->priList, $todo->pri)?> createLink('todo', 'view', "id=$todo->id&from=my", '', true), $todo->name, '', "data-toggle='modal' data-width='80%' data-type='iframe' data-title='" . $lang->todo->view . "' data-icon='check'");?> + pri;?>' title='todo->priList, $todo->pri, $todo->pri);?>'>todo->priList, $todo->pri)?> + date == '2030-01-01' ? $lang->todo->periods['future'] : $todo->date;?> + todo->statusList[$todo->status];?> + todo->typeList, $todo->type, '');?> + assignedTo);?> + + assignedBy);?> + begin;?> end;?> - todo->statusList[$todo->status];?> id", $todo, 'list', 'play', 'hiddenwin'); From 3f980942cb7888d0418345b31f2abc23d411fcee Mon Sep 17 00:00:00 2001 From: wangzemei Date: Mon, 10 Oct 2022 10:27:13 +0800 Subject: [PATCH 22/45] * modify lines --- module/task/css/.create.css.swp | Bin 0 -> 12288 bytes module/testsuite/control.php | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 module/task/css/.create.css.swp diff --git a/module/task/css/.create.css.swp b/module/task/css/.create.css.swp new file mode 100644 index 0000000000000000000000000000000000000000..47a60a3709e54cbf4026101c42295141563734bf GIT binary patch literal 12288 zcmeI2&u<$=6vwBz@Uwv6*vo5OL@C*|9Ve-=Arh@BQKX&-h3j}{Y)`Yhv+Rs(CswHh zSN;f)xbz?3!e79dzo6pG3H|`Sv%B6nvD1WO(8T^`*WUN$z4^?Ww~DfZ)}sdxsT;N# ze%@j1>+kPH&u`siU;MJcraT=T$wVr5?Il08U680$Wzkut%_lr>PN&o6Y&Hm|M@gu4 z7DiF?NT!zSEHTYQi%Be-mYaiSWK1*4CATuf=~-j??>zxe-~t3Db{KT8vd&h!<*XYw zuG4$(esuvyZ{i7f0-k^;;0bsFo`5Id33vkk7XmiB!k%F=8`Xq9sE$`o9jlN2;0bsF zo`5Id33vjYfG6Mycmke)C*TQq0+)~g7mR)P3S+ykB6Xa;=)eF}X7 zU4#C74Svu==o<7F^7;+>5mHc*=OyIqQ}zTr0Z+ga@B}V7frjOHn}dDHllwwhos-2| zP#BH1k!fI5I*KLD$5M^Pw%6IsW>49Qi>M9AS@hSK2`BX zMq|l^%oq7tWgV9xf&$W!gl`AF6zN#!J!*8K?aof8Pq9j6P|>5U?K5((#$I5iZD&X| zur}sQt+kwl;;|kr^LKn`s)QZ)Xt$yj9!Qx5xt><3EZG+`W-N??@`=ru=9P2Xg+)+z zX%btN#d06DvT_{;WwGSaz|PPfW*v^X2~s%?tTZ+pqk3XjK@z31Kr|c2?46#M#k@~wh% zy+o*Iw?3ym1)h05_Sr6hu2^Nc+N70lk%UU%zvdE;+$2ps@|`mVPIq$o8(uV*WUDpEzu^d`#50tRcu@ck} zk$d&23>4%=YguD(n&)!xBHVw-wJOm_CmG-^D%SN3jvbmW8r|YT+4uJ9kCNxnnC3;3 zX!WT|8E56>ioLl8>&a$XM?+1WY_AtZe%wRL#bF^zConRWk?Y-i6pCDDLQm5mk?CZq z7cTblY5QWu>ncXKEV}Y_m1H`%JhgQzX}4PMqrzDOBhW|n436i7;A>~)I%`n_LC%Gm z7!(#Qk6%^6K%)Yaml&cNBAp!;`!Xn&zsH9b9eFO4$zp!kqd}~rgL-w!{zb)_mA8Sg z=-Oq)hPnK9qH;7OB)&L5XT+_KU2i>az?DH#oyr28%l~e%)9Rhubqh%Y9v!%Sl!~D4 oj_n~{ebT5`Wih!nZcMn3eI_1HjHRKwRl9E7*lzE@47aR*0k8%1q5uE@ literal 0 HcmV?d00001 diff --git a/module/testsuite/control.php b/module/testsuite/control.php index 9908481772..3bf999347f 100644 --- a/module/testsuite/control.php +++ b/module/testsuite/control.php @@ -89,9 +89,9 @@ class testsuite extends control $privateNum++; } } - $suitesNum = !empty(count($suites, 0)) ? count($suites, 0) : 0; - $publicNum = $suitesNum - $privateNum; - $summary = str_replace(array('%total%', '%public%', '%private%'), array($suitesNum, $publicNum, $privateNum), $this->lang->testsuite->summary); + $suitesNum = !empty(count($suites, 0)) ? count($suites, 0) : 0; + $publicNum = $suitesNum - $privateNum; + $summary = str_replace(array('%total%', '%public%', '%private%'), array($suitesNum, $publicNum, $privateNum), $this->lang->testsuite->summary); $this->view->title = $productName . $this->lang->testsuite->common; $this->view->position[] = html::a($this->createLink('testsuite', 'browse', "productID=$productID"), $productName); From 772395f37745fc14c7325987152a1f187c876cf7 Mon Sep 17 00:00:00 2001 From: wangzemei Date: Mon, 10 Oct 2022 10:28:50 +0800 Subject: [PATCH 23/45] * rm .swp --- module/task/css/.create.css.swp | Bin 12288 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 module/task/css/.create.css.swp diff --git a/module/task/css/.create.css.swp b/module/task/css/.create.css.swp deleted file mode 100644 index 47a60a3709e54cbf4026101c42295141563734bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2&u<$=6vwBz@Uwv6*vo5OL@C*|9Ve-=Arh@BQKX&-h3j}{Y)`Yhv+Rs(CswHh zSN;f)xbz?3!e79dzo6pG3H|`Sv%B6nvD1WO(8T^`*WUN$z4^?Ww~DfZ)}sdxsT;N# ze%@j1>+kPH&u`siU;MJcraT=T$wVr5?Il08U680$Wzkut%_lr>PN&o6Y&Hm|M@gu4 z7DiF?NT!zSEHTYQi%Be-mYaiSWK1*4CATuf=~-j??>zxe-~t3Db{KT8vd&h!<*XYw zuG4$(esuvyZ{i7f0-k^;;0bsFo`5Id33vkk7XmiB!k%F=8`Xq9sE$`o9jlN2;0bsF zo`5Id33vjYfG6Mycmke)C*TQq0+)~g7mR)P3S+ykB6Xa;=)eF}X7 zU4#C74Svu==o<7F^7;+>5mHc*=OyIqQ}zTr0Z+ga@B}V7frjOHn}dDHllwwhos-2| zP#BH1k!fI5I*KLD$5M^Pw%6IsW>49Qi>M9AS@hSK2`BX zMq|l^%oq7tWgV9xf&$W!gl`AF6zN#!J!*8K?aof8Pq9j6P|>5U?K5((#$I5iZD&X| zur}sQt+kwl;;|kr^LKn`s)QZ)Xt$yj9!Qx5xt><3EZG+`W-N??@`=ru=9P2Xg+)+z zX%btN#d06DvT_{;WwGSaz|PPfW*v^X2~s%?tTZ+pqk3XjK@z31Kr|c2?46#M#k@~wh% zy+o*Iw?3ym1)h05_Sr6hu2^Nc+N70lk%UU%zvdE;+$2ps@|`mVPIq$o8(uV*WUDpEzu^d`#50tRcu@ck} zk$d&23>4%=YguD(n&)!xBHVw-wJOm_CmG-^D%SN3jvbmW8r|YT+4uJ9kCNxnnC3;3 zX!WT|8E56>ioLl8>&a$XM?+1WY_AtZe%wRL#bF^zConRWk?Y-i6pCDDLQm5mk?CZq z7cTblY5QWu>ncXKEV}Y_m1H`%JhgQzX}4PMqrzDOBhW|n436i7;A>~)I%`n_LC%Gm z7!(#Qk6%^6K%)Yaml&cNBAp!;`!Xn&zsH9b9eFO4$zp!kqd}~rgL-w!{zb)_mA8Sg z=-Oq)hPnK9qH;7OB)&L5XT+_KU2i>az?DH#oyr28%l~e%)9Rhubqh%Y9v!%Sl!~D4 oj_n~{ebT5`Wih!nZcMn3eI_1HjHRKwRl9E7*lzE@47aR*0k8%1q5uE@ From aeb4bef5bc4036a9414c7c83052a4048346a69b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=BB=B6=E4=B9=89?= Date: Mon, 10 Oct 2022 10:33:40 +0800 Subject: [PATCH 24/45] * Modify execution page style. --- module/execution/model.php | 2 +- www/theme/default/style.css | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/module/execution/model.php b/module/execution/model.php index 8259a1d99c..09574ea842 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -4603,7 +4603,7 @@ class executionModel extends model $burns = join(',', $execution->burns); echo ""; - echo "id class='table-nest-icon icon table-nest-toggle'>"; + echo "id class='table-nest-icon icon table-nest-toggle'>"; if($this->config->systemMode == 'new') { $spanClass = $execution->type == 'stage' ? 'label-warning' : 'label-info'; diff --git a/www/theme/default/style.css b/www/theme/default/style.css index b31be160e3..43a9cb0ba7 100644 --- a/www/theme/default/style.css +++ b/www/theme/default/style.css @@ -139,12 +139,9 @@ body.xxc-embed.m-productplan-view,body.xxc-embed.m-bug-browse,body.xxc-embed.m-p #toggleFold > .icon {display: inline-block; color: #838a9d; font-size: 16px; transition: transform .2s; transform: rotate(-90deg);} #toggleFold.collapsed > .icon {transform: rotate(90deg);} +#executionTableList .c-name .label-danger {position: absolute; top: 8px; right: 0px;} #programTableList .c-name .label-danger {position: absolute; right: 4px; padding: 2px 4px;} -#projectForm .c-name, -#executionTableList .c-name, -#programTableList .c-name {padding-right: 64px;} - .table .table-children, .table .is-nest-child {background: #F8F8F8;} -.table tbody td.has-child .icon-angle-right {color: #838a9d;} \ No newline at end of file +.table tbody td.has-child .icon-angle-right {color: #838a9d;} From 9eac41d7e31209e99b00701c9e67c2aa1f3ad674 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Mon, 10 Oct 2022 10:36:39 +0800 Subject: [PATCH 25/45] * Finish task #71895. --- module/task/config.php | 98 +++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/module/task/config.php b/module/task/config.php index b0bca1614c..b458e3a55e 100644 --- a/module/task/config.php +++ b/module/task/config.php @@ -51,7 +51,7 @@ $config->task->custom->batchEditFields = 'module,assignedTo,status,pri,estimat $config->task->excludeCheckFileds = ',pri,estStartedDitto,deadlineDitto,parent,regions,lanes,vision,region,'; $config->task->datatable = new stdclass(); -$config->task->datatable->defaultField = array('id', 'pri', 'name', 'status', 'assignedTo', 'finishedBy', 'estimate', 'consumed', 'left', 'progress', 'deadline', 'actions'); +$config->task->datatable->defaultField = array('id', 'name', 'pri', 'assignedTo', 'status', 'finishedBy', 'deadline', 'estimate', 'consumed', 'left', 'progress', 'actions'); global $lang; $config->task->datatable->fieldList['id']['title'] = 'idAB'; @@ -59,19 +59,10 @@ $config->task->datatable->fieldList['id']['fixed'] = 'left'; $config->task->datatable->fieldList['id']['width'] = '70'; $config->task->datatable->fieldList['id']['required'] = 'yes'; -$config->task->datatable->fieldList['module']['title'] = 'idAB'; -$config->task->datatable->fieldList['module']['control'] = 'select'; -$config->task->datatable->fieldList['module']['dataSource'] = array('module' => 'tree', 'method' => 'getTaskOptionMenu', 'params' => '$executionID'); - -$config->task->datatable->fieldList['execution']['title'] = 'idAB'; -$config->task->datatable->fieldList['execution']['control'] = 'hidden'; -$config->task->datatable->fieldList['execution']['dataSource'] = array('module' => 'execution', 'method' => 'getPairs'); - -$config->task->datatable->fieldList['mode']['title'] = 'idAB'; -$config->task->datatable->fieldList['mode']['control'] = 'hidden'; - -$config->task->datatable->fieldList['desc']['title'] = 'idAB'; -$config->task->datatable->fieldList['desc']['control'] = 'textarea'; +$config->task->datatable->fieldList['name']['title'] = 'name'; +$config->task->datatable->fieldList['name']['fixed'] = 'left'; +$config->task->datatable->fieldList['name']['width'] = 'auto'; +$config->task->datatable->fieldList['name']['required'] = 'yes'; $config->task->datatable->fieldList['pri']['title'] = 'priAB'; $config->task->datatable->fieldList['pri']['fixed'] = 'left'; @@ -79,10 +70,17 @@ $config->task->datatable->fieldList['pri']['width'] = '35'; $config->task->datatable->fieldList['pri']['required'] = 'no'; $config->task->datatable->fieldList['pri']['name'] = $lang->task->pri; -$config->task->datatable->fieldList['name']['title'] = 'name'; -$config->task->datatable->fieldList['name']['fixed'] = 'left'; -$config->task->datatable->fieldList['name']['width'] = 'auto'; -$config->task->datatable->fieldList['name']['required'] = 'yes'; +$config->task->datatable->fieldList['assignedTo']['title'] = 'assignedTo'; +$config->task->datatable->fieldList['assignedTo']['fixed'] = 'no'; +$config->task->datatable->fieldList['assignedTo']['width'] = '100'; +$config->task->datatable->fieldList['assignedTo']['required'] = 'no'; +$config->task->datatable->fieldList['assignedTo']['control'] = 'select'; +$config->task->datatable->fieldList['assignedTo']['dataSource'] = array('module' => 'user', 'method' => 'getTeamMemberPairs', 'params' => '$executionID&execution'); + +$config->task->datatable->fieldList['assignedDate']['title'] = 'assignedDate'; +$config->task->datatable->fieldList['assignedDate']['fixed'] = 'no'; +$config->task->datatable->fieldList['assignedDate']['width'] = '110'; +$config->task->datatable->fieldList['assignedDate']['required'] = 'no'; $config->task->datatable->fieldList['type']['title'] = 'typeAB'; $config->task->datatable->fieldList['type']['fixed'] = 'no'; @@ -94,18 +92,17 @@ $config->task->datatable->fieldList['status']['fixed'] = 'no'; $config->task->datatable->fieldList['status']['width'] = '60'; $config->task->datatable->fieldList['status']['required'] = 'no'; -$config->task->datatable->fieldList['assignedTo']['title'] = 'assignedTo'; -$config->task->datatable->fieldList['assignedTo']['fixed'] = 'no'; -$config->task->datatable->fieldList['assignedTo']['width'] = '100'; -$config->task->datatable->fieldList['assignedTo']['required'] = 'no'; -$config->task->datatable->fieldList['assignedTo']['control'] = 'select'; -$config->task->datatable->fieldList['assignedTo']['dataSource'] = array('module' => 'user', 'method' => 'getTeamMemberPairs', 'params' => '$executionID&execution'); - $config->task->datatable->fieldList['finishedBy']['title'] = 'finishedByAB'; $config->task->datatable->fieldList['finishedBy']['fixed'] = 'no'; $config->task->datatable->fieldList['finishedBy']['width'] = '80'; $config->task->datatable->fieldList['finishedBy']['required'] = 'no'; +$config->task->datatable->fieldList['deadline']['title'] = 'deadlineAB'; +$config->task->datatable->fieldList['deadline']['fixed'] = 'no'; +$config->task->datatable->fieldList['deadline']['width'] = '65'; +$config->task->datatable->fieldList['deadline']['required'] = 'no'; +$config->task->datatable->fieldList['deadline']['control'] = 'date'; + $config->task->datatable->fieldList['estimate']['title'] = 'estimateAB'; $config->task->datatable->fieldList['estimate']['fixed'] = 'no'; $config->task->datatable->fieldList['estimate']['width'] = '55'; @@ -128,12 +125,6 @@ $config->task->datatable->fieldList['progress']['required'] = 'no'; $config->task->datatable->fieldList['progress']['sort'] = 'no'; $config->task->datatable->fieldList['progress']['name'] = $lang->task->progress; -$config->task->datatable->fieldList['deadline']['title'] = 'deadlineAB'; -$config->task->datatable->fieldList['deadline']['fixed'] = 'no'; -$config->task->datatable->fieldList['deadline']['width'] = '65'; -$config->task->datatable->fieldList['deadline']['required'] = 'no'; -$config->task->datatable->fieldList['deadline']['control'] = 'date'; - $config->task->datatable->fieldList['openedBy']['title'] = 'openedByAB'; $config->task->datatable->fieldList['openedBy']['fixed'] = 'no'; $config->task->datatable->fieldList['openedBy']['width'] = '90'; @@ -155,11 +146,6 @@ $config->task->datatable->fieldList['realStarted']['fixed'] = 'no'; $config->task->datatable->fieldList['realStarted']['width'] = '95'; $config->task->datatable->fieldList['realStarted']['required'] = 'no'; -$config->task->datatable->fieldList['assignedDate']['title'] = 'assignedDate'; -$config->task->datatable->fieldList['assignedDate']['fixed'] = 'no'; -$config->task->datatable->fieldList['assignedDate']['width'] = '110'; -$config->task->datatable->fieldList['assignedDate']['required'] = 'no'; - $config->task->datatable->fieldList['finishedDate']['title'] = 'finishedDateAB'; $config->task->datatable->fieldList['finishedDate']['fixed'] = 'no'; $config->task->datatable->fieldList['finishedDate']['width'] = '105'; @@ -191,19 +177,6 @@ $config->task->datatable->fieldList['closedReason']['width'] = '120'; $config->task->datatable->fieldList['closedReason']['required'] = 'no'; $config->task->datatable->fieldList['closedReason']['dataSource'] = array('lang' => 'reasonList'); -$config->task->datatable->fieldList['story']['title'] = "storyAB"; -$config->task->datatable->fieldList['story']['fixed'] = 'no'; -$config->task->datatable->fieldList['story']['width'] = '70'; -$config->task->datatable->fieldList['story']['required'] = 'no'; -$config->task->datatable->fieldList['story']['name'] = $lang->task->story; -$config->task->datatable->fieldList['story']['control'] = 'select'; -$config->task->datatable->fieldList['story']['dataSource'] = array('module' => 'story', 'method' => 'getExecutionStories', 'params' => '$executionID', 'pairs' => array('id', 'title')); - -$config->task->datatable->fieldList['mailto']['title'] = 'mailto'; -$config->task->datatable->fieldList['mailto']['fixed'] = 'no'; -$config->task->datatable->fieldList['mailto']['width'] = '100'; -$config->task->datatable->fieldList['mailto']['required'] = 'no'; - $config->task->datatable->fieldList['lastEditedBy']['title'] = 'lastEditedBy'; $config->task->datatable->fieldList['lastEditedBy']['fixed'] = 'no'; $config->task->datatable->fieldList['lastEditedBy']['width'] = '95'; @@ -219,6 +192,33 @@ $config->task->datatable->fieldList['activatedDate']['fixed'] = 'no'; $config->task->datatable->fieldList['activatedDate']['width'] = '90'; $config->task->datatable->fieldList['activatedDate']['required'] = 'no'; +$config->task->datatable->fieldList['story']['title'] = "storyAB"; +$config->task->datatable->fieldList['story']['fixed'] = 'no'; +$config->task->datatable->fieldList['story']['width'] = '70'; +$config->task->datatable->fieldList['story']['required'] = 'no'; +$config->task->datatable->fieldList['story']['name'] = $lang->task->story; +$config->task->datatable->fieldList['story']['control'] = 'select'; +$config->task->datatable->fieldList['story']['dataSource'] = array('module' => 'story', 'method' => 'getExecutionStories', 'params' => '$executionID', 'pairs' => array('id', 'title')); + +$config->task->datatable->fieldList['mailto']['title'] = 'mailto'; +$config->task->datatable->fieldList['mailto']['fixed'] = 'no'; +$config->task->datatable->fieldList['mailto']['width'] = '100'; +$config->task->datatable->fieldList['mailto']['required'] = 'no'; + +$config->task->datatable->fieldList['module']['title'] = 'idAB'; +$config->task->datatable->fieldList['module']['control'] = 'select'; +$config->task->datatable->fieldList['module']['dataSource'] = array('module' => 'tree', 'method' => 'getTaskOptionMenu', 'params' => '$executionID'); + +$config->task->datatable->fieldList['execution']['title'] = 'idAB'; +$config->task->datatable->fieldList['execution']['control'] = 'hidden'; +$config->task->datatable->fieldList['execution']['dataSource'] = array('module' => 'execution', 'method' => 'getPairs'); + +$config->task->datatable->fieldList['mode']['title'] = 'idAB'; +$config->task->datatable->fieldList['mode']['control'] = 'hidden'; + +$config->task->datatable->fieldList['desc']['title'] = 'idAB'; +$config->task->datatable->fieldList['desc']['control'] = 'textarea'; + $config->task->datatable->fieldList['actions']['title'] = 'actions'; $config->task->datatable->fieldList['actions']['fixed'] = 'right'; $config->task->datatable->fieldList['actions']['width'] = '180'; From 24cad9ceda65547b5fae88de55346aedc90f82ae Mon Sep 17 00:00:00 2001 From: denghongtao Date: Mon, 10 Oct 2022 03:00:41 +0000 Subject: [PATCH 26/45] * Fix checkpriv and create unittest. --- test/class/repo.class.php | 5 ++--- test/model/repo/checkpriv.php | 4 ++-- test/model/repo/create.php | 14 ++++++++------ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/test/class/repo.class.php b/test/class/repo.class.php index c8acfe550e..f883ab0e73 100644 --- a/test/class/repo.class.php +++ b/test/class/repo.class.php @@ -68,10 +68,9 @@ class repoTest public function createTest($list) { - $create = array(); - $getCreate = array('SCM' => '', 'serviceHost' => '', 'serviceProject' => '', 'name' => '', 'path' => '', 'encoding' => '', 'client' => '', 'account' => '', 'password' => '', 'encrypt' => '', 'desc' => '', 'uid' => ''); + $init = array('SCM' => '', 'serviceHost' => '', 'serviceProject' => '', 'name' => '', 'path' => '', 'encoding' => '', 'client' => '', 'account' => '', 'password' => '', 'encrypt' => '', 'desc' => '', 'uid' => ''); - foreach($getCreate as $filed => $defaultvalue) $_POST[$filed] = $defaultvalue; + foreach($init as $filed => $defaultvalue) $_POST[$filed] = $defaultvalue; foreach($list as $key => $value) $_POST[$key] = $value; $objects = $this->objectModel->create(); diff --git a/test/model/repo/checkpriv.php b/test/model/repo/checkpriv.php index a7a980c74b..5311237ab7 100755 --- a/test/model/repo/checkpriv.php +++ b/test/model/repo/checkpriv.php @@ -10,7 +10,7 @@ title=测试 repoModel->checkPriv(); cid=1 pid=1 - >> 0 +检查用户权限,返回布尔值 >> 0 */ @@ -22,4 +22,4 @@ $repo->acl->user = 'admin'; $result = $checkPriv->checkPrivTest($repo); -r($result) && p($result) && e('0'); \ No newline at end of file +r($result) && p($result) && e('0'); //检查用户权限,返回布尔值 \ No newline at end of file diff --git a/test/model/repo/create.php b/test/model/repo/create.php index bc42977edc..2e3b0a84c0 100755 --- a/test/model/repo/create.php +++ b/test/model/repo/create.php @@ -10,9 +10,9 @@ title=测试 repoModel->create(); cid=1 pid=1 - >> 1 - >> 『名称』已经有『jktest』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。 - >> 因为安全原因,需要检测客户端版本,请将版本号写入文件 +正常创建gitlab版本库 >> 1 +当已有版本库时提示已有记录 >> 『名称』已经有『jktest』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。 +当数据类型为Gitea时提示写版本号 >> 因为安全原因,需要检测客户端版本,请将版本号写入文件 */ @@ -53,6 +53,8 @@ $resultOne = $repo->createTest($list); $resultTwo = $repo->createTest($list); $resultThree = $repo->createTest($listOne); -r($resultOne) && p($resultOne) && e('1'); -r($resultTwo) && p('name:0') && e('『名称』已经有『jktest』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); -r($resultThree) && p($resultThree) && e('因为安全原因,需要检测客户端版本,请将版本号写入文件'); \ No newline at end of file +r($resultOne) && p($resultOne) && e('1'); //正常创建gitlab版本库 +r($resultTwo) && p('name:0') && e('『名称』已经有『jktest』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); //当已有版本库时提示已有记录 +r($resultThree) && p($resultThree) && e('因为安全原因,需要检测客户端版本,请将版本号写入文件'); //当数据类型为Gitea时提示写版本号 + +$db->restoreDB(); \ No newline at end of file From 20a77c481183e21e084ad250b32fd50e4e1d4bae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=BB=B6=E4=B9=89?= Date: Mon, 10 Oct 2022 11:05:49 +0800 Subject: [PATCH 27/45] * Modify language. --- module/execution/lang/de.php | 2 +- module/execution/lang/en.php | 6 +++--- module/execution/lang/zh-cn.php | 2 +- module/execution/view/all.html.php | 18 +++++++++++------- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/module/execution/lang/de.php b/module/execution/lang/de.php index 12ce2c0a86..7dd60f3ce2 100644 --- a/module/execution/lang/de.php +++ b/module/execution/lang/de.php @@ -419,7 +419,7 @@ $lang->execution->storyDragError = "The {$lang->SRCommon} is not ac $lang->execution->countTip = ' (%s member)'; $lang->execution->pleaseInput = "Enter"; $lang->execution->week = 'week'; -$lang->execution->checkedExecutions = 'Seleted %s executions.'; +$lang->execution->checkedExecutions = "Seleted %s {$lang->executionCommon}."; /* Statistics. */ $lang->execution->charts = new stdclass(); diff --git a/module/execution/lang/en.php b/module/execution/lang/en.php index 9f155eb2aa..8befda23c8 100644 --- a/module/execution/lang/en.php +++ b/module/execution/lang/en.php @@ -342,8 +342,8 @@ $lang->execution->stats = 'Available: %s(h). Est $lang->execution->taskSummary = "Total tasks on this page:%s. Waiting: %s. Doing: %s.     Estimates: %s(h). Cost: %s(h). Left: %s(h)."; $lang->execution->pageSummary = "Total tasks: %total%. Waiting: %wait%. Doing: %doing%. Estimates: %estimate%(h). Cost: %consumed%(h). Left: %left%(h)."; $lang->execution->checkedSummary = "Selected: %total%. Waiting: %wait%. Doing: %doing%. Estimates: %estimate%(h). Cost: %consumed%(h). Left: %left%(h)."; -$lang->execution->executionSummary = "Total executions: %s."; -$lang->execution->pageExecSummary = "Total executions: %total%. Waiting: %wait%. Doing: %doing%."; +$lang->execution->executionSummary = "Total {$lang->executionCommon}: %s."; +$lang->execution->pageExecSummary = "Total {$lang->executionCommon}: %total%. Waiting: %wait%. Doing: %doing%."; $lang->execution->checkedExecSummary = "Selected: %total%. Waiting: %wait%. Doing: %doing%."; $lang->execution->memberHoursAB = "%s has %s hours."; $lang->execution->memberHours = '
%s Available Hours
%s
'; @@ -419,7 +419,7 @@ $lang->execution->storyDragError = "The {$lang->SRCommon} is not ac $lang->execution->countTip = ' (%s member)'; $lang->execution->pleaseInput = "Enter"; $lang->execution->week = 'week'; -$lang->execution->checkedExecutions = 'Seleted %s executions.'; +$lang->execution->checkedExecutions = "Seleted %s {$lang->executionCommon}."; /* Statistics. */ $lang->execution->charts = new stdclass(); diff --git a/module/execution/lang/zh-cn.php b/module/execution/lang/zh-cn.php index e2b6c7b3c3..12a9d17a87 100644 --- a/module/execution/lang/zh-cn.php +++ b/module/execution/lang/zh-cn.php @@ -419,7 +419,7 @@ $lang->execution->storyDragError = "该{$lang->SRCommon}不是激 $lang->execution->countTip = '(%s人)'; $lang->execution->pleaseInput = "请输入"; $lang->execution->week = '周'; -$lang->execution->checkedExecutions = "共选中%s个{$lang->execution->common}。"; +$lang->execution->checkedExecutions = "共选中%s个{$lang->executionCommon}。"; /* 统计。*/ $lang->execution->charts = new stdclass(); diff --git a/module/execution/view/all.html.php b/module/execution/view/all.html.php index b072f3a78e..0e1283510f 100644 --- a/module/execution/view/all.html.php +++ b/module/execution/view/all.html.php @@ -16,13 +16,17 @@ $datatableId = $this->moduleName . ucfirst($this->methodName); $useDatatable = (isset($config->datatable->$datatableId->mode) and $config->datatable->$datatableId->mode == 'datatable'); ?> - - - -execution->checkedExecSummary);?> -execution->pageExecSummary);?> -execution->executionSummary);?> -execution->checkedExecutions);?> +executionCommon, $lang->execution->common, $lang->execution->checkedExecSummary)); +js::set('pageSummary', str_replace($lang->executionCommon, $lang->execution->common, $lang->execution->pageExecSummary)); +js::set('executionSummary', str_replace($lang->executionCommon, $lang->execution->common, $lang->execution->executionSummary)); +js::set('checkedExecutions', str_replace($lang->executionCommon, $lang->execution->common, $lang->execution->checkedExecutions)); +?> execution->treeLevel['all']); From 7571484ba72cd1acfecc100dce99a314171ac6ee Mon Sep 17 00:00:00 2001 From: liuhong Date: Mon, 10 Oct 2022 03:11:30 +0000 Subject: [PATCH 28/45] *Adjust code for bug #26245. --- module/task/control.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/task/control.php b/module/task/control.php index 6f198e7b8e..13a18581cc 100755 --- a/module/task/control.php +++ b/module/task/control.php @@ -301,7 +301,7 @@ class task extends control { foreach($executionList as $key => $val) { - $values = str_replace($replace, $project->name, $val); + $values = str_replace($replace, $project->name, $val); $executionAll[$key] = $values; } } From e9ebed5a6e332cb79e1816747d9998036d080254 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Mon, 10 Oct 2022 11:28:31 +0800 Subject: [PATCH 29/45] * Finish task #71904. --- module/bug/css/browse.css | 1 - module/bug/model.php | 5 ++++- module/execution/css/bug.css | 1 - module/execution/css/grouptask.css | 1 - module/execution/css/task.css | 1 - module/execution/view/grouptask.html.php | 2 +- module/execution/view/importtask.html.php | 2 +- module/my/css/bug.css | 1 - module/my/css/task.css | 2 -- module/my/view/bug.html.php | 2 +- module/my/view/task.html.php | 4 ++-- module/project/css/common.css | 1 - module/task/model.php | 2 +- module/user/css/task.css | 2 +- module/user/view/task.html.php | 2 +- www/theme/default/style.css | 1 + 16 files changed, 13 insertions(+), 17 deletions(-) diff --git a/module/bug/css/browse.css b/module/bug/css/browse.css index 55068d74be..8d9aac8543 100644 --- a/module/bug/css/browse.css +++ b/module/bug/css/browse.css @@ -2,7 +2,6 @@ .closed, .closed a {color: gray; text-decoration:line-through;} .resolved, .resolved a {color: #8EC21F; text-decoration: none;} .tree .closed, .tree .closed a {color: #003366; text-decoration: none;} -td.delayed {color: #fff; background: #e84e0f !important;} #bugForm .setting {height: 25px;} .datatable-wrapper .table-datatable .datatable-row td {height: 37px;} diff --git a/module/bug/model.php b/module/bug/model.php index 6a4c7ef4d4..7679e599ae 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -3297,6 +3297,9 @@ class bugModel extends model $class .= ' text-ellipsis'; $title = "title='" . $browser . "'"; break; + case 'deadline': + $class .= ' text-center'; + break; } if($id == 'deadline' && isset($bug->delay) && $bug->status == 'active') $class .= ' delayed'; @@ -3440,7 +3443,7 @@ class bugModel extends model echo helper::isZeroDate($bug->assignedDate) ? '' : substr($bug->assignedDate, 5, 11); break; case 'deadline': - echo helper::isZeroDate($bug->deadline) ? '' : substr($bug->deadline, 5, 11); + echo helper::isZeroDate($bug->deadline) ? '' : '' . substr($bug->deadline, 5, 11) . ''; break; case 'resolvedBy': echo zget($users, $bug->resolvedBy, $bug->resolvedBy); diff --git a/module/execution/css/bug.css b/module/execution/css/bug.css index 095e852326..e798bf6ccb 100644 --- a/module/execution/css/bug.css +++ b/module/execution/css/bug.css @@ -6,7 +6,6 @@ .dropdown-list > li > a {display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 1.53846154; color: #141414; white-space: nowrap;} .dropdown-list > li > a:hover, .dropdown-list > li > a:focus {color: #1a4f85; text-decoration: none; background-color: #ddd;} -td.delayed {color: #fff; background: #e84e0f !important;} .c-severity {width: 80px;} .c-confirmed {overflow: hidden;} diff --git a/module/execution/css/grouptask.css b/module/execution/css/grouptask.css index ff7b32c085..2e54857cc4 100644 --- a/module/execution/css/grouptask.css +++ b/module/execution/css/grouptask.css @@ -27,4 +27,3 @@ .c-hours {white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right;} .c-user, .c-type {width: 70px;} .c-progress {width: 60px;} -.delayed {background: #e84e0f !important; color: white;} diff --git a/module/execution/css/task.css b/module/execution/css/task.css index 20d6b20df0..f9081b4a59 100644 --- a/module/execution/css/task.css +++ b/module/execution/css/task.css @@ -1,4 +1,3 @@ -td.delayed {background: #e84e0f !important; color: white;} #int-dropdown {margin-left: -8px; border-radius: 4px; border: 1px solid #0c64eb;} #projectTaskForm table tbody tr td {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;} .table td.c-estimate, .table td.c-consumed, .table td.c-left {padding-right: 12px;} diff --git a/module/execution/view/grouptask.html.php b/module/execution/view/grouptask.html.php index 7e107fb0fa..0dad281b94 100644 --- a/module/execution/view/grouptask.html.php +++ b/module/execution/view/grouptask.html.php @@ -207,7 +207,7 @@ left . $lang->execution->workHourUnit;?> progress . '%';?> task->typeList, $task->type);?> - '>deadline, 0, 4) > 0) echo substr($task->deadline, 5, 6);?> + '>deadline, 0, 4) > 0) echo '' . substr($task->deadline, 5, 6) . '';?> execution&taskID=$task->id", $task, 'list', '', '', 'iframe', true);?> diff --git a/module/execution/view/importtask.html.php b/module/execution/view/importtask.html.php index 3eb2618aad..25e9f99197 100644 --- a/module/execution/view/importtask.html.php +++ b/module/execution/view/importtask.html.php @@ -63,7 +63,7 @@ id", $task->name, '', "class='preview iframe' data-width='90%'", true, true)) echo $task->name;?> >assignedToRealName;?> left . ' ' . $lang->execution->workHourUnit;?> - delay)) echo 'delayed';?>>deadline, 0, 4) > 0) echo $task->deadline;?> + deadline, 0, 4) > 0) echo '' . $task->deadline . '';?> processStatus('task', $task);?> tr.table-children.table-child-top {border-top: 2px solid #cbd0db;} .table tbody > tr.table-children.table-child-bottom {border-bottom: 2px solid #cbd0db;} diff --git a/module/my/view/bug.html.php b/module/my/view/bug.html.php index 5503e70cdc..599914d144 100644 --- a/module/my/view/bug.html.php +++ b/module/my/view/bug.html.php @@ -134,7 +134,7 @@ ' title='bug->confirmedList, $bug->confirmed);?>'>bug->confirmedList, $bug->confirmed)?> rawMethod == 'work'):?> - deadline, 0, 4) > 0) echo substr($bug->deadline, 5, 6);?> + deadline, 0, 4) > 0) echo '' . substr($bug->deadline, 5, 6) . '';?> bug->printAssignedHtml($bug, $users);?> diff --git a/module/my/view/task.html.php b/module/my/view/task.html.php index cae4c91b9a..cf93e51b67 100644 --- a/module/my/view/task.html.php +++ b/module/my/view/task.html.php @@ -137,7 +137,7 @@ task->printAssignedHtml($task, $users);?> - deadline, 0, 4) > 0) echo substr($task->deadline, 5, 6);?> + deadline, 0, 4) > 0) echo '' . substr($task->deadline, 5, 6) . '';?> estimate, 1) . $lang->execution->workHourUnit;?> consumed, 1) . $lang->execution->workHourUnit;?> left, 1) . $lang->execution->workHourUnit;?> @@ -214,7 +214,7 @@ task->printAssignedHtml($child, $users);?> - deadline, 0, 4) > 0) echo substr($child->deadline, 5, 6);?> + deadline, 0, 4) > 0) echo '' . substr($child->deadline, 5, 6) . '';?> estimate, 1) . ' ' . $lang->execution->workHourUnit;?> consumed, 1) . ' ' . $lang->execution->workHourUnit;?> left, 1) . ' ' . $lang->execution->workHourUnit;?> diff --git a/module/project/css/common.css b/module/project/css/common.css index e49281ec10..b884affa19 100644 --- a/module/project/css/common.css +++ b/module/project/css/common.css @@ -3,4 +3,3 @@ .text-remind {color: #ffa34d;} .text-remind p{float: left; margin-right: 5px;} #ignore {text-decoration: underline; cursor: pointer; color: #ef7b0f;} -td.delayed {color: #fff; background: #e84e0f !important;} diff --git a/module/task/model.php b/module/task/model.php index dcf2cb00df..34aaffe3ce 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -3777,7 +3777,7 @@ class taskModel extends model echo round($task->progress, 2) . '%'; break; case 'deadline': - if(substr($task->deadline, 0, 4) > 0) echo substr($task->deadline, 5, 6); + if(substr($task->deadline, 0, 4) > 0) echo '' . substr($task->deadline, 5, 6) . ''; break; case 'openedBy': echo zget($users, $task->openedBy); diff --git a/module/user/css/task.css b/module/user/css/task.css index f963fb9a73..fd9b0be634 100644 --- a/module/user/css/task.css +++ b/module/user/css/task.css @@ -1,2 +1,2 @@ -td.delayed {color: #fff; background: #e84e0f !important;} .hours {white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right;} +td.deadline > span {padding-left: 4px;} diff --git a/module/user/view/task.html.php b/module/user/view/task.html.php index bae1a1e8f8..35415f54f6 100644 --- a/module/user/view/task.html.php +++ b/module/user/view/task.html.php @@ -70,7 +70,7 @@ estimate . $lang->execution->workHourUnit;?> consumed . $lang->execution->workHourUnit;?> left . $lang->execution->workHourUnit;?> - delay)) echo 'delayed';?>>deadline, 0, 4) > 0) echo $task->deadline;?> + deadline, 0, 4) > 0) echo '' . $task->deadline . '';?> processStatus('task', $task);?> diff --git a/www/theme/default/style.css b/www/theme/default/style.css index 1cd8c999fa..782a5db3f2 100644 --- a/www/theme/default/style.css +++ b/www/theme/default/style.css @@ -139,3 +139,4 @@ body.xxc-embed.m-productplan-view,body.xxc-embed.m-bug-browse,body.xxc-embed.m-p #projectForm .c-name, #executionTableList .c-name, #programTableList .c-name {padding-right: 64px;} +td.delayed > span {display: block; height: 20px; line-height: 20px; background: #FFEBEB; color: #FB2B2B; border-radius: 20px;} From f9f8a11b901e2c714b8bd419a02e8f6d08292473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=BB=B6=E4=B9=89?= Date: Mon, 10 Oct 2022 13:57:56 +0800 Subject: [PATCH 30/45] * Finish task #71903. --- module/productplan/control.php | 3 ++ module/productplan/js/view.js | 42 +++++++++++++++++++++++++++ module/productplan/view/view.html.php | 7 +++-- 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/module/productplan/control.php b/module/productplan/control.php index 559c0d5c85..a7c42d0fbd 100644 --- a/module/productplan/control.php +++ b/module/productplan/control.php @@ -440,10 +440,12 @@ class productplan extends control if($plan->branch > 0) $this->view->branchStatus = $this->loadModel('branch')->getById($plan->branch, $plan->product, 'status'); + $storyIdList = array(); $modulePairs = $this->loadModel('tree')->getOptionMenu($plan->product, 'story', 0, 'all'); foreach($planStories as $story) { if(!isset($modulePairs[$story->module])) $modulePairs += $this->tree->getModulesName($story->module); + $storyIdList[] = $story->id; } $this->loadModel('datatable'); @@ -466,6 +468,7 @@ class productplan extends control $this->view->storyPager = $storyPager; $this->view->bugPager = $bugPager; $this->view->canBeChanged = $canBeChanged; + $this->view->storyCases = $storyCases = $this->loadModel('testcase')->getStoryCaseCounts($storyIdList);; if($this->app->getViewType() == 'json') { diff --git a/module/productplan/js/view.js b/module/productplan/js/view.js index 012a26ee42..2e551d56a4 100644 --- a/module/productplan/js/view.js +++ b/module/productplan/js/view.js @@ -84,4 +84,46 @@ $(function() history.pushState({}, 0, createLink('productplan', 'view', "planID=" + planID + '&type=story&orderBy=' + order)); }); }); + + $('.table-story').table( + { + statisticCreator: function(table) + { + var $checkedRows = table.getTable().find(table.isDataTable ? '.datatable-row-left.checked' : 'tbody>tr.checked'); + var $originTable = table.isDataTable ? table.$.find('.datatable-origin') : null; + var checkedTotal = $checkedRows.length; + if(!checkedTotal) return; + + var checkedEstimate = 0; + var checkedCase = 0; + var rateCount = checkedTotal; + $checkedRows.each(function() + { + var $row = $(this); + if($originTable) + { + $row = $originTable.find('tbody>tr[data-id="' + $row.data('id') + '"]'); + } + var data = $row.data(); + checkedEstimate += data.estimate; + + if(data.cases > 0) + { + checkedCase += 1; + } + else if(data.children != undefined && data.children > 0) + { + rateCount -= 1; + } + }); + + var rate = '0%'; + if(rateCount) rate = Math.round(checkedCase / rateCount * 10000 / 100) + '' + '%'; + + if(checkedTotal == 0) return storySummary; + return checkedSummary.replace('%total%', checkedTotal) + .replace('%estimate%', checkedEstimate.toFixed(1)) + .replace('%rate%', rate); + } + }); }); diff --git a/module/productplan/view/view.html.php b/module/productplan/view/view.html.php index dfc20fdf79..44f4e5c692 100644 --- a/module/productplan/view/view.html.php +++ b/module/productplan/view/view.html.php @@ -20,6 +20,9 @@ pageID);?> recPerPage);?> recTotal);?> + +SRCommon);?> +SRCommon, $lang->product->checkedSummary));?>