From 546ed93e743af3ffa83a91f8be6c058821d2b961 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 22 Jul 2021 09:42:30 +0800 Subject: [PATCH 01/35] * finish task #40477. --- config/zentaopms.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/zentaopms.php b/config/zentaopms.php index 807ec5189c..776e06860f 100644 --- a/config/zentaopms.php +++ b/config/zentaopms.php @@ -137,6 +137,8 @@ $config->openMethods[] = 'sso.gettodolist'; $config->openMethods[] = 'file.read'; $config->openMethods[] = 'index.changelog'; $config->openMethods[] = 'my.preference'; +$config->openMethods[] = 'my.changepassword'; +$config->openMethods[] = 'my.profile'; /* Define the tables. */ define('TABLE_COMPANY', '`' . $config->db->prefix . 'company`'); From cf9275cbaee2ad8fe5cd7982d72f28019fc44072 Mon Sep 17 00:00:00 2001 From: zenggang Date: Thu, 22 Jul 2021 13:27:43 +0800 Subject: [PATCH 02/35] * Finisth task #40426 --- module/block/view/projectblock.html.php | 2 +- module/block/view/projectstatisticblock.html.php | 4 ++-- module/my/view/project.html.php | 2 +- module/product/view/project.html.php | 2 +- module/program/view/browsebylist.html.php | 2 +- module/project/model.php | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/module/block/view/projectblock.html.php b/module/block/view/projectblock.html.php index 6f79a93be2..f02a58fa89 100644 --- a/module/block/view/projectblock.html.php +++ b/module/block/view/projectblock.html.php @@ -34,7 +34,7 @@ teamCount;?> consumed . $lang->execution->workHourUnit;?> - app->getClientLang(), ['zh-cn','zh-tw']) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2);?> + app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2);?> budget != 0 ? zget($lang->project->currencySymbol, $project->budgetUnit) . ' ' . $programBudget : $lang->project->future;?> leftStories;?> leftTasks;?> diff --git a/module/block/view/projectstatisticblock.html.php b/module/block/view/projectstatisticblock.html.php index fdf17551bb..fc32d4098f 100644 --- a/module/block/view/projectstatisticblock.html.php +++ b/module/block/view/projectstatisticblock.html.php @@ -221,7 +221,7 @@ $(function() project->budget . ':';?> app->getClientLang(), ['zh-cn','zh-tw']) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2); + $projectBudget = in_array($this->app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2); echo $project->budget != 0 ? $projectBudget : $this->lang->project->future; ?> @@ -229,7 +229,7 @@ $(function()
- app->getClientLang(), ['zh-cn','zh-tw']);?> + app->getClientLang(), array('zh-cn','zh-tw'));?>
project->pv . '(' . $lang->project->pvTitle . ')' : $lang->project->pv; ?>
project->ev . '(' . $lang->project->evTitle . ')' : $lang->project->ev;?>
project->ac . '(' . $lang->project->acTitle . ')' : $lang->project->ac;?>
diff --git a/module/my/view/project.html.php b/module/my/view/project.html.php index 56eadc4e81..ee130213a6 100644 --- a/module/my/view/project.html.php +++ b/module/my/view/project.html.php @@ -64,7 +64,7 @@ begin;?> end == LONG_TIME ? $this->lang->project->longTime : $project->end;?> - app->getClientLang(), ['zh-cn','zh-tw']) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2);?> + app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2);?> budget != 0 ? zget($lang->project->currencySymbol, $project->budgetUnit) . ' ' . $projectBudget : $lang->project->future;?> PM]) ? $PMList[$project->PM]->id : ''?> diff --git a/module/product/view/project.html.php b/module/product/view/project.html.php index 48e82067cb..567ac03de2 100644 --- a/module/product/view/project.html.php +++ b/module/product/view/project.html.php @@ -76,7 +76,7 @@ - app->getClientLang(), ['zh-cn','zh-tw']) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2);?> + app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2);?> budget != 0 ? zget($this->lang->project->currencySymbol, $project->budgetUnit) . ' ' . $projectBudget : $this->lang->project->future;?> budget != 0 ? 'text-right' : 'text-center';?> diff --git a/module/program/view/browsebylist.html.php b/module/program/view/browsebylist.html.php index aebfc2438d..be3e2844fe 100644 --- a/module/program/view/browsebylist.html.php +++ b/module/program/view/browsebylist.html.php @@ -57,7 +57,7 @@ PM]) ? $PMList[$program->PM]->id : ''?> PM)) echo html::a($this->createLink('user', 'profile', "userID=$userID", '', true), zget($users, $program->PM), '', "data-toggle='modal' data-type='iframe' data-width='600'");?> - app->getClientLang(), ['zh-cn','zh-tw']) ? round((float)$program->budget / 10000, 2) . $lang->project->tenThousand : round((float)$program->budget, 2);?> + app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$program->budget / 10000, 2) . $lang->project->tenThousand : round((float)$program->budget, 2);?> budget != 0 ? zget($lang->project->currencySymbol, $program->budgetUnit) . ' ' . $programBudget : $lang->project->future;?> project->statusList, $program->status, '');?> begin;?> diff --git a/module/project/model.php b/module/project/model.php index 3dc9101b06..034b5be454 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1324,7 +1324,7 @@ class projectModel extends model if($id == 'budget') { - $projectBudget = in_array($this->app->getClientLang(), ['zh-cn','zh-tw']) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2); + $projectBudget = in_array($this->app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2); $budgetTitle = $project->budget != 0 ? zget($this->lang->project->currencySymbol, $project->budgetUnit) . ' ' . $projectBudget : $this->lang->project->future; $title = "title='$budgetTitle'"; From 07cac61f4c5c6b100079f6f535862c668ddddefb Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 22 Jul 2021 15:08:57 +0800 Subject: [PATCH 03/35] * adjust for substatus. --- module/task/model.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/module/task/model.php b/module/task/model.php index 020133c482..2d493b3f58 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -670,6 +670,9 @@ class taskModel extends model if($parentTask->story) $this->loadModel('story')->setStage($parentTask->story); $newParentTask = $this->dao->select('*')->from(TABLE_TASK)->where('id')->eq($parentID)->fetch(); + + unset($oldParentTask->subStatus); + unset($newParentTask->subStatus); $changes = common::createChanges($oldParentTask, $newParentTask); $action = ''; if($status == 'done' and $parentTask->status != 'done') $action = 'Finished'; From e7ac26998e208d7d8cf50bc02e4e85dee0e0fdb8 Mon Sep 17 00:00:00 2001 From: zenggang Date: Thu, 22 Jul 2021 16:48:02 +0800 Subject: [PATCH 04/35] * Finish task #40470 --- module/action/model.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/module/action/model.php b/module/action/model.php index 670ba4be6e..706b7bb365 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -928,6 +928,7 @@ class actionModel extends model public function transformActions($actions) { $this->app->loadLang('todo'); + $this->app->loadLang('stakeholder'); $requirements = array(); /* Get commiters. */ @@ -989,6 +990,13 @@ class actionModel extends model if($object->type == 'project') $objectProject[$object->id] = $object->id; } } + elseif($objectType == 'stakeholder'){ + $objectName = $this->dao->select("t1.id, t2.realname")->from($table)->alias('t1') + ->leftJoin(TABLE_USER)->alias('t2')->on("t1.{$field} = t2.account") + ->where('t1.id')->in($objectIds) + ->fetchPairs(); + $objectProject = array(); + } else { $objectName = $this->dao->select("id, $field AS name")->from($table)->where('id')->in($objectIds)->fetchPairs(); @@ -1029,7 +1037,7 @@ class actionModel extends model $objectType = strtolower($action->objectType); $action->originalDate = $action->date; $action->date = date(DT_MONTHTIME2, strtotime($action->date)); - $action->actionLabel = isset($this->lang->action->label->$actionType) ? $this->lang->action->label->$actionType : $action->action; + $action->actionLabel = isset($this->lang->action->label->$actionType) ? $this->lang->action->label->$actionType : (isset($this->lang->$objectType->$actionType) ? $this->lang->$objectType->$actionType : $action->action); $action->objectLabel = $objectType; if(isset($this->lang->action->label->$objectType)) { From f333e1aa21e67ab746c8d70b318e6abd8a3386f9 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 23 Jul 2021 09:24:01 +0800 Subject: [PATCH 05/35] * adjust for flow in GET. --- framework/router.class.php | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/framework/router.class.php b/framework/router.class.php index 55b7f0f1b9..b24a71f998 100755 --- a/framework/router.class.php +++ b/framework/router.class.php @@ -513,11 +513,9 @@ class router extends baseRouter if($methodName == 'batchOperate') array_unshift($params, $this->rawMethod); // $params = array('close', 1); if($methodName == 'browse') { - if(!(isset($params[0]) and $params[0] == 'bysearch')) - { - array_unshift($params, 'browse'); - } + if(!(isset($params[0]) and $params[0] == 'bysearch')) array_unshift($params, 'browse'); } + array_unshift($params, $this->rawModule); // $params = array($module, 'close', 1); array_unshift($params, $methodName); // $params = array('operate', $module, 'close', 1); array_unshift($params, $moduleName); // $params = array('flow', 'operate', $module, 'close', 1); @@ -541,22 +539,23 @@ class router extends baseRouter /* Prepend other params. */ if($methodName == 'browse') { - if(isset($params['label']) and $params['label'] == 'bysearch') - { - $params['label'] = ''; - $params['mode'] = 'bysearch'; - } - else - { - $params['mode'] = 'browse'; - } + if(!(isset($params['mode']) and $params['mode'] == 'bysearch')) $params['mode'] = 'browse'; } + $params['module'] = $this->rawModule; // $param = array('label' => 1, 'mode' => 'search', 'module' => $module); $params[$this->config->methodVar] = $methodName; // $param = array('label' => 1, 'mode' => 'search', 'module' => $module, 'f' => 'browse'); $params[$this->config->moduleVar] = $moduleName; // $param = array('label' => 1, 'mode' => 'search', 'module' => $module, 'f' => 'browse', 'm' => 'flow'); $params = array_reverse($params); // $params = array('m' => 'flow', 'f' => 'browse', 'module' => $module, 'mode' => 'search', 'label' => 1); + /* Reset $_GET for setParamsByGET. */ + $get = $params; + foreach($_GET as $key => $value) + { + if(!isset($get[$key])) $get[$key] = $value; + } + $_GET = $get; + $this->URI = $path . '?' . http_build_query($params); // $this->URI = '/index.php?m=flow&f=browse&module=$module&mode=search&label=1'; } } From 750ef9fad315e8f24c065f2a4c690e83d78acb0b Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 23 Jul 2021 14:48:30 +0800 Subject: [PATCH 06/35] * finish task #40469. --- module/doc/view/edit.html.php | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/module/doc/view/edit.html.php b/module/doc/view/edit.html.php index e9ce3e1968..533e712fdf 100644 --- a/module/doc/view/edit.html.php +++ b/module/doc/view/edit.html.php @@ -24,17 +24,17 @@
save, '', 'id="top-submit" class="btn btn-primary"');?>
- +
- + - + @@ -45,16 +45,22 @@ - - + + type == 'url') echo "class='hidden'"?>> - + type != 'url') echo "class='hidden'"?>> - + From bfe3bcf3dda57a90cfe78767d9fb20d888ba7ad0 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 23 Jul 2021 15:10:39 +0800 Subject: [PATCH 07/35] * Code for task #40447. --- module/project/model.php | 1 + module/project/view/create.html.php | 2 +- module/project/view/edit.html.php | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/module/project/model.php b/module/project/model.php index 034b5be454..f4cc4dc8e2 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1335,6 +1335,7 @@ class projectModel extends model if($id == 'surplus') $title = "title='{$project->hours->totalLeft} {$this->lang->execution->workHour}'"; echo " - printExtendFields('', 'table');?> + printExtendFields('', 'table', 'columns=3');?> diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index bae7c19025..6937bce74f 100644 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -149,6 +149,7 @@ desc, "rows='6' class='form-control kindeditor' hidefocus='true'" . (strpos($requiredFields, 'desc') !== false ? ' required' : ''));?> + printExtendFields('', 'table', 'columns=3');?> From ccdb189af44e4f38d2d37ef730330c6438a275c7 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 23 Jul 2021 16:01:13 +0800 Subject: [PATCH 08/35] * Code for task #13559. --- module/project/config.php | 4 ++-- module/project/view/browse.html.php | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/module/project/config.php b/module/project/config.php index cea74baa0d..78c2f28e31 100644 --- a/module/project/config.php +++ b/module/project/config.php @@ -92,14 +92,14 @@ $config->project->datatable->fieldList['estimate']['pri'] = '8'; $config->project->datatable->fieldList['consume']['title'] = 'consume'; $config->project->datatable->fieldList['consume']['fixed'] = 'no'; -$config->project->datatable->fieldList['consume']['width'] = '70'; +$config->project->datatable->fieldList['consume']['width'] = '80'; $config->project->datatable->fieldList['consume']['maxWidth'] = '80'; $config->project->datatable->fieldList['consume']['required'] = 'no'; $config->project->datatable->fieldList['consume']['sort'] = 'no'; $config->project->datatable->fieldList['consume']['pri'] = '7'; $config->project->datatable->fieldList['progress']['title'] = 'progress'; -$config->project->datatable->fieldList['progress']['fixed'] = 'right'; +$config->project->datatable->fieldList['progress']['fixed'] = 'no'; $config->project->datatable->fieldList['progress']['width'] = '60'; $config->project->datatable->fieldList['progress']['required'] = 'no'; $config->project->datatable->fieldList['progress']['sort'] = 'no'; diff --git a/module/project/view/browse.html.php b/module/project/view/browse.html.php index 22a6f3e066..841168cc08 100644 --- a/module/project/view/browse.html.php +++ b/module/project/view/browse.html.php @@ -11,6 +11,7 @@ */ ?> +recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"; + $vars = "programID=$programID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"; + $datatableId = $this->moduleName . ucfirst($this->methodName); + $useDatatable = (isset($config->datatable->$datatableId->mode) and $config->datatable->$datatableId->mode == 'datatable'); + + if($useDatatable) include '../../common/view/datatable.html.php'; $setting = $this->datatable->getSetting('project'); ?> -
doc->lib;?> lib, "class='form-control chosen' onchange=loadDocModule(this.value)");?>
doc->module;?> module, "class='form-control chosen'");?>
doc->title;?> title, "class='form-control' required");?>
doc->type;?>doc->types, $doc->type);?>
+ doc->types; + if(!isset($lang->doc->types[$doc->type])) $typeList = $lang->doc->typeList; + echo html::radio('type', array($doc->type => zget($typeList, $doc->type)), $doc->type); + ?> +
doc->content;?> type == 'url' ? '' : htmlspecialchars($doc->content), "style='width:100%; height:200px'") . html::hidden('contentType', $doc->contentType);?>
doc->url;?> type == 'url' ? $doc->content : '', "class='form-control'");?>
doc->files;?> fetch('file', 'buildform');?>"; + if(isset($this->config->bizVersion)) $this->loadModel('flow')->printFlowCell('project', $project, $id); switch($id) { case 'id': diff --git a/module/project/view/create.html.php b/module/project/view/create.html.php index 5116b031bd..86780109a7 100644 --- a/module/project/view/create.html.php +++ b/module/project/view/create.html.php @@ -136,13 +136,13 @@
project->desc;?>
project->acl;?> project->aclList, $acl, "onclick='setWhite(this.value);'", 'block'));?>
project->acl;?> acl, "onclick='setWhite(this.value);'", 'block'));?>
+ ';?> +
'> config->systemMode == 'new' ? common::hasPriv('project', 'batchEdit') : common::hasPriv('project', 'batchEdit');?> @@ -106,6 +112,7 @@ js::set('browseType', $browseType);
+ ';?> recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"; - $datatableId = $this->moduleName . ucfirst($this->methodName); - $useDatatable = (isset($config->datatable->$datatableId->mode) and $config->datatable->$datatableId->mode == 'datatable'); - - if($useDatatable) include '../../common/view/datatable.html.php'; - $setting = $this->datatable->getSetting('project'); + $vars = "programID=$programID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"; + $datatableId = $this->moduleName . ucfirst($this->methodName); + $useDatatable = (isset($config->datatable->$datatableId->mode) and $config->datatable->$datatableId->mode == 'datatable'); + $setting = $this->datatable->getSetting('project'); + $widths = $this->datatable->setFixedFieldWidth($setting); + + if($useDatatable) include '../../common/view/datatable.html.php'; ?> ';?> - '> +
' data-fixed-left-width='' data-fixed-right-width=''> config->systemMode == 'new' ? common::hasPriv('project', 'batchEdit') : common::hasPriv('project', 'batchEdit');?> From 6fab61854b2b5c797ba4413137edf42050066061 Mon Sep 17 00:00:00 2001 From: zenggang Date: Sat, 24 Jul 2021 23:07:22 +0800 Subject: [PATCH 10/35] * Finish task #40413 --- module/testcase/control.php | 2 +- test.txt | 0 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 test.txt diff --git a/module/testcase/control.php b/module/testcase/control.php index 8deb6933b0..5ed65aa4ed 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -1505,7 +1505,7 @@ class testcase extends control $this->post->set('kind', 'testcase'); $this->post->set('rows', $rows); $this->post->set('extraNum', $num); - $this->post->set('fileName', 'template'); + $this->post->set('fileName', 'Template'); $this->fetch('file', 'export2csv', $_POST); } diff --git a/test.txt b/test.txt new file mode 100644 index 0000000000..e69de29bb2 From 12361696b2304e56df72e540f3e71fe763c60167 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 26 Jul 2021 11:45:13 +0800 Subject: [PATCH 11/35] * fix bug #13812. --- module/story/view/view.html.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/module/story/view/view.html.php b/module/story/view/view.html.php index 4e69d6c615..0f6a2c92f7 100644 --- a/module/story/view/view.html.php +++ b/module/story/view/view.html.php @@ -375,9 +375,16 @@ From effe28a36ee7a1af5019252d0b236dbe27ce3677 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 26 Jul 2021 11:46:06 +0800 Subject: [PATCH 12/35] * finish task #40466. --- module/story/control.php | 2 +- module/story/model.php | 62 +++++++++++++++++++++------ module/testtask/view/results.html.php | 3 +- 3 files changed, 53 insertions(+), 14 deletions(-) diff --git a/module/story/control.php b/module/story/control.php index a29a73e6f0..edc779da3f 100644 --- a/module/story/control.php +++ b/module/story/control.php @@ -1500,7 +1500,7 @@ class story extends control /* Load pager and get tracks. */ $this->app->loadClass('pager', $static = true); $pager = new pager($recTotal, $recPerPage, $pageID); - $tracks = $this->story->getTracks($productID, $branch, $pager); + $tracks = $this->story->getTracks($productID, $branch, $projectID, $pager); if($projectID) { diff --git a/module/story/model.php b/module/story/model.php index 7b67c5ea1f..811b5dcfe4 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -343,7 +343,7 @@ class storyModel extends model /* push this story to gitlab issue */ $object = $this->getByID($storyID); $this->loadModel('gitlab')->apiCreateIssue($this->post->gitlab, $this->post->gitlabProject, 'story', $storyID, $object); - + return array('status' => 'created', 'id' => $storyID); } return false; @@ -351,9 +351,9 @@ class storyModel extends model /** * Create story from gitlab issue. - * + * * @param object $story - * @param int $executionID + * @param int $executionID * @access public * @return int */ @@ -380,7 +380,7 @@ class storyModel extends model $data->spec = $story->spec; $data->verify = $story->spec; $this->dao->insert(TABLE_STORYSPEC)->data($data)->exec(); - + /* Link story to execution. */ $this->linkStory($executionID, $story->product, $storyID); @@ -1883,13 +1883,13 @@ class storyModel extends model $story->assignedDate = $now; $this->dao->update(TABLE_STORY)->data($story)->autoCheck()->where('id')->eq((int)$storyID)->exec(); - if(!dao::isError()) + if(!dao::isError()) { $this->loadModel('gitlab'); $relation = $this->gitlab->getRelationByObject('story', $storyID); $story->assignee_id = $this->gitlab->getGitlabUserID($relation->gitlabID, $story->assignedTo); if($story->assignee_id != '') $this->gitlab->apiUpdateIssue($relation->gitlabID, $relation->projectID, $relation->issueID, 'story', $story, $storyID); - + /* Push this story to gitlab issue. */ $this->loadModel('gitlab'); $relation = $this->gitlab->getRelationByObject('story', $storyID); @@ -3504,7 +3504,7 @@ class storyModel extends model $storyIdList = array(); if(isset($stories['id'])) { - $storyIdList = array($stories['id'] => $stories['id']); + $storyIdList = array($stories['id'] => $stories['id']); } else { @@ -3938,11 +3938,12 @@ class storyModel extends model * * @param int $productID * @param int $branch + * @param int $projectID * @param object $pager * @access public * @return bool|array */ - public function getTracks($productID = 0, $branch = 0, $pager = null) + public function getTracks($productID = 0, $branch = 0, $projectID = 0, $pager = null) { $tracks = array(); $sourcePageID = $pager->pageID; @@ -3950,7 +3951,24 @@ class storyModel extends model if($this->config->URAndSR) { - $requirements = $this->getProductStories($productID, $branch, 0, 'all', 'requirement', 'id_desc', true, '', $pager); + $projectStories = array(); + if($projectID) + { + $requirements = $this->dao->select('t3.*')->from(TABLE_PROJECTSTORY)->alias('t1') + ->leftJoin(TABLE_RELATION)->alias('t2')->on("t1.story=t2.AID && t2.AType='story'") + ->leftJoin(TABLE_STORY)->alias('t3')->on("t2.BID=t3.id && t2.BType='requirement'") + ->where('t1.project')->eq($projectID) + ->andWhere('t1.product')->eq($productID) + ->andWhere('t3.id')->ne('') + ->page($pager, 't3.id') + ->fetchAll('id'); + $projectStories = $this->getExecutionStories($projectID, $productID, $branch, '`order`_desc', 'all', 0, 'story'); + } + else + { + $requirements = $this->getProductStories($productID, $branch, 0, 'all', 'requirement', 'id_desc', true, '', $pager); + } + if($pager->pageID != $sourcePageID) { $requirements = array(); @@ -3963,6 +3981,12 @@ class storyModel extends model $stories = empty($stories) ? array() : $stories; foreach($stories as $id => $title) { + if($projectStories and !isset($projectStories[$id])) + { + unset($stories[$id]); + continue; + } + $stories[$id] = new stdclass(); $stories[$id]->title = $title; $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); @@ -3991,12 +4015,26 @@ class storyModel extends model ->andWhere('relation')->eq('subdivideinto') ->andWhere('product')->eq($productID) ->fetchPairs('BID', 'BID'); - $stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $excludeStories); - if($stories) $pager->recTotal += 1; + if($projectID) + { + $stories = $this->getExecutionStories($projectID, $productID, $branch, '`order`_desc', 'all', 0, 'story', $excludeStories); + } + else + { + $stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $excludeStories); + } + if($stories) $pager->recTotal += count($stories); } else { - $stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $excludeStories, $pager); + if($projectID) + { + $stories = $this->getExecutionStories($projectID, $productID, $branch, '`order`_desc', 'all', 0, 'story', $excludeStories, $pager); + } + else + { + $stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $excludeStories, $pager); + } } if(count($tracks) < $pager->recPerPage) diff --git a/module/testtask/view/results.html.php b/module/testtask/view/results.html.php index 963e272ffb..8ba8c46c69 100644 --- a/module/testtask/view/results.html.php +++ b/module/testtask/view/results.html.php @@ -51,7 +51,8 @@ app->openApp == 'execution' and isset($testtask)) ? "executionID=$testtask->execution" : "";?> - id,{$executionParam},buildID=$testtask->build" : ",$executionParam";?> + id,buildID=$testtask->build" : "";?> + URAndSR):?> - - + type != 'normal'):?> From 5c313eef531c00067cc4a42ecf6892e21267a4e4 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Mon, 26 Jul 2021 16:22:01 +0800 Subject: [PATCH 15/35] * Finish task #40431. --- module/product/lang/de.php | 2 +- module/product/lang/en.php | 2 +- module/product/lang/fr.php | 2 +- module/product/lang/vi.php | 2 +- module/product/lang/zh-cn.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/module/product/lang/de.php b/module/product/lang/de.php index c96d8e64a6..8b1cb9a2c3 100644 --- a/module/product/lang/de.php +++ b/module/product/lang/de.php @@ -26,7 +26,7 @@ $lang->product->other = 'Andere'; $lang->product->closed = 'Geschlossen'; $lang->product->updateOrder = 'Ranking'; $lang->product->orderAction = "Rank {$lang->productCommon}"; -$lang->product->all = "Alle {$lang->productCommon}"; +$lang->product->all = "{$lang->productCommon} List"; $lang->product->manageLine = "Manage {$lang->productCommon} Line"; $lang->product->newLine = "Create {$lang->productCommon} Line"; $lang->product->export = 'Exportiere Daten'; diff --git a/module/product/lang/en.php b/module/product/lang/en.php index 32afdb17ae..9830b23769 100644 --- a/module/product/lang/en.php +++ b/module/product/lang/en.php @@ -24,7 +24,7 @@ $lang->product->mine = 'Mine'; $lang->product->other = 'Others'; $lang->product->closed = 'Closed'; $lang->product->updateOrder = 'Order'; -$lang->product->all = "All {$lang->productCommon}s"; +$lang->product->all = "{$lang->productCommon} List"; $lang->product->manageLine = "Manage {$lang->productCommon} Line"; $lang->product->newLine = "Create {$lang->productCommon} Line"; $lang->product->export = 'Export'; diff --git a/module/product/lang/fr.php b/module/product/lang/fr.php index d8733d015e..e5e9f9a337 100644 --- a/module/product/lang/fr.php +++ b/module/product/lang/fr.php @@ -26,7 +26,7 @@ $lang->product->other = 'Autres'; $lang->product->closed = 'Fermés'; $lang->product->updateOrder = 'Ordre'; $lang->product->orderAction = "Rang {$lang->productCommon}"; -$lang->product->all = "Tous les {$lang->productCommon}s"; +$lang->product->all = "{$lang->productCommon} List"; $lang->product->manageLine = "Manage {$lang->productCommon} Line"; $lang->product->newLine = "Create {$lang->productCommon} Line"; $lang->product->export = 'Export'; diff --git a/module/product/lang/vi.php b/module/product/lang/vi.php index 270cda8ec6..99615645b8 100644 --- a/module/product/lang/vi.php +++ b/module/product/lang/vi.php @@ -26,7 +26,7 @@ $lang->product->other = 'Khác'; $lang->product->closed = 'Đã đóng'; $lang->product->updateOrder = 'Sắp xếp'; $lang->product->orderAction = "Đánh giá {$lang->productCommon}"; -$lang->product->all = "Tất cả {$lang->productCommon}"; +$lang->product->all = "{$lang->productCommon} List"; $lang->product->manageLine = "Manage {$lang->productCommon} Line"; $lang->product->newLine = "Create {$lang->productCommon} Line"; $lang->product->export = 'Xuất'; diff --git a/module/product/lang/zh-cn.php b/module/product/lang/zh-cn.php index 7d59a2f19a..934fa90cb4 100644 --- a/module/product/lang/zh-cn.php +++ b/module/product/lang/zh-cn.php @@ -24,7 +24,7 @@ $lang->product->mine = '我负责'; $lang->product->other = '其他'; $lang->product->closed = '已关闭'; $lang->product->updateOrder = '排序'; -$lang->product->all = "所有{$lang->productCommon}"; +$lang->product->all = "{$lang->productCommon}列表"; $lang->product->manageLine = "维护{$lang->productCommon}线"; $lang->product->newLine = "新建{$lang->productCommon}线"; $lang->product->export = '导出数据'; From 12fb7839b79a6e0d55118624f7c7ee5514555b4e Mon Sep 17 00:00:00 2001 From: zenggang Date: Mon, 26 Jul 2021 16:47:26 +0800 Subject: [PATCH 16/35] * Finish task #40461 --- module/execution/model.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/module/execution/model.php b/module/execution/model.php index f58abd70bd..9117c74865 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -442,7 +442,7 @@ class executionModel extends model $oldExecution = $this->dao->findById($executionID)->from(TABLE_EXECUTION)->fetch(); /* Judgment of required items. */ - if($this->post->code == '') + if($oldExecution->type != 'stage' and $this->post->code == '') { dao::$errors['code'] = sprintf($this->lang->error->notempty, $this->lang->execution->code); return false; @@ -502,7 +502,7 @@ class executionModel extends model ->checkIF($execution->begin != '', 'begin', 'date') ->checkIF($execution->end != '', 'end', 'date') ->checkIF($execution->end != '', 'end', 'gt', $execution->begin) - ->check('code', 'unique', "id!=$executionID and deleted='0'") + ->check('code', 'unique', "id!=$executionID and code!='' and deleted='0'") ->where('id')->eq($executionID) ->limit(1) ->exec(); @@ -609,11 +609,11 @@ class executionModel extends model $nameList[$executionName] = $executionName; /* Check unique code for edited executions. */ - if(empty($executionCode)) + if($projectModel == 'scrum' and empty($executionCode)) { dao::$errors['code'][] = 'execution#' . $executionID . sprintf($this->lang->error->notempty, $this->lang->project->code); } - else + elseif(!empty($executionCode)) { /* Check unique code for edited executions. */ if(isset($codeList[$executionCode])) dao::$errors['code'][] = 'execution#' . $executionID . sprintf($this->lang->error->unique, $this->lang->project->code, $executionCode); From 84f4723fb62c258f2cc8fcc74560923e7716697f Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 26 Jul 2021 17:41:35 +0800 Subject: [PATCH 17/35] * finish task #40452. --- module/todo/js/view.js | 19 ++++++++++++++++++- module/todo/view/view.html.php | 12 ++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/module/todo/js/view.js b/module/todo/js/view.js index f5919b9bbf..2bd2424d06 100644 --- a/module/todo/js/view.js +++ b/module/todo/js/view.js @@ -78,7 +78,24 @@ function createProject() var onlybody = config.onlybody; config.onlybody = 'no'; - var link = createLink('project', 'create'); + var link = createLink('project', 'create'); + + config.onlybody = onlybody; + parent.location.href = link; +} + +/** + * Create execution. + * + * @access public + * @return void + */ +function createExecution() +{ + var onlybody = config.onlybody; + config.onlybody = 'no'; + + var link = createLink('execution', 'create'); config.onlybody = onlybody; parent.location.href = link; diff --git a/module/todo/view/view.html.php b/module/todo/view/view.html.php index 7f1a2f0e9d..0d88e27385 100644 --- a/module/todo/view/view.html.php +++ b/module/todo/view/view.html.php @@ -201,21 +201,23 @@
reviewedBy, ',')); - foreach($reviewers as $reviewer) + if($reviewers) { - echo in_array($reviewer, $reviewedBy) ? ' ' . zget($users, $reviewer) . '' : ' ' . zget($users, $reviewer) . ''; + foreach($reviewers as $reviewer) + { + echo in_array($reviewer, $reviewedBy) ? ' ' . zget($users, $reviewer) . '' : ' ' . zget($users, $reviewer) . ''; + } + } + elseif($reviewedBy) + { + foreach($reviewedBy as $reviewer) echo ' ' . zget($users, $reviewer) . ''; } ?>
app->openApp == 'project' ? "projectID={$this->session->project}," : ''?> From 9ec3e847d97b5fec0454a858a34131470834e69b Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 26 Jul 2021 13:07:31 +0800 Subject: [PATCH 13/35] * code for task #40466. --- module/story/view/track.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/story/view/track.html.php b/module/story/view/track.html.php index 6eeb36a2ba..90ca4f0f08 100644 --- a/module/story/view/track.html.php +++ b/module/story/view/track.html.php @@ -58,7 +58,7 @@
story->statusList, $requirement->status);?> From 1fe958fd5fa04278a07e9b1bd805fbb7c4803e91 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Mon, 26 Jul 2021 14:13:00 +0800 Subject: [PATCH 14/35] * Finish task #40458. --- module/testcase/control.php | 3 +-- module/testcase/view/view.html.php | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/module/testcase/control.php b/module/testcase/control.php index 5ed65aa4ed..884299d67a 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -642,11 +642,10 @@ class testcase extends control if($this->app->openApp == 'qa') $this->testcase->setMenu($this->products, $productID, $case->branch); $this->view->title = "CASE #$case->id $case->title - " . $this->products[$productID]; - $this->view->position[] = html::a($this->createLink('testcase', 'browse', "productID=$productID"), $this->products[$productID]); $this->view->product = $product; $this->view->branches = $branches; - $this->view->productName = $this->products[$productID]; + $this->view->productName = isset($this->products[$productID]) ? $this->products[$productID] : ''; $this->view->branchName = $product->type == 'normal' ? '' : zget($branches, $case->branch, ''); } diff --git a/module/testcase/view/view.html.php b/module/testcase/view/view.html.php index 35a40d8326..c3707c1155 100644 --- a/module/testcase/view/view.html.php +++ b/module/testcase/view/view.html.php @@ -151,7 +151,7 @@
testcase->product;?>createLink('product', 'browse', "productID=$case->product"), $productName) : $productName;?>createLink('product', 'browse', "productID=$case->product"), $productName) : $productName;?>
+ systemMode == 'new'):?> + - + @@ -261,7 +263,7 @@
todo->project;?>
todo->execution;?>systemMode == 'new' ? $lang->todo->execution : $lang->todo->project;?>
+ systemMode == 'new'):?> + From d10c54fa2c4a71fd45d362b09d3dea416f6200f0 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 27 Jul 2021 09:50:38 +0800 Subject: [PATCH 18/35] * fix bug #13850. --- module/story/model.php | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/module/story/model.php b/module/story/model.php index 811b5dcfe4..c3d86a5c6c 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -198,13 +198,11 @@ class storyModel extends model $story = fixer::input('post') ->cleanInt('product,module,pri,plan') ->callFunc('title', 'trim') - ->add('assignedDate', 0) ->add('version', 1) ->add('status', 'draft') ->setDefault('plan,verify', '') ->setDefault('openedBy', $this->app->user->account) ->setDefault('openedDate', $now) - ->setIF($this->post->assignedTo != '', 'assignedDate', $now) ->setIF($this->post->needNotReview or $executionID > 0, 'status', 'active') ->setIF($this->post->plan > 0, 'stage', 'planned') ->setIF($this->post->estimate, 'estimate', (float)$this->post->estimate) @@ -254,14 +252,20 @@ class storyModel extends model /* Save the story reviewer to storyreview table. */ if(isset($_POST['reviewer'])) { + $assignedTo = ''; foreach($this->post->reviewer as $reviewer) { + if(empty($reviewer)) continue; + $reviewData = new stdclass(); $reviewData->story = $storyID; $reviewData->version = 1; $reviewData->reviewer = $reviewer; $this->dao->insert(TABLE_STORYREVIEW)->data($reviewData)->exec(); + + if(empty($assignedTo)) $assignedTo = $reviewer; } + if($assignedTo) $this->dao->update(TABLE_STORY)->set('assignedTo')->eq($assignedTo)->set('assignedDate')->eq(helper::now())->where('id')->eq($storyID)->exec(); } /* Project or execution linked story. */ @@ -551,14 +555,20 @@ class storyModel extends model /* Save the story reviewer to storyreview table. */ if(isset($_POST['reviewer'][$i])) { + $assignedTo = ''; foreach($_POST['reviewer'][$i] as $reviewer) { + if(empty($reviewer)) continue; + $reviewData = new stdclass(); $reviewData->story = $storyID; $reviewData->version = 1; $reviewData->reviewer = $reviewer; $this->dao->insert(TABLE_STORYREVIEW)->data($reviewData)->exec(); + + if(empty($assignedTo)) $assignedTo = $reviewer; } + if($assignedTo) $this->dao->update(TABLE_STORY)->set('assignedTo')->eq($assignedTo)->set('assignedDate')->eq($now)->where('id')->eq($storyID)->exec(); } $this->executeHooks($storyID); @@ -686,6 +696,7 @@ class storyModel extends model /* Update the reviewer. */ $oldReviewerList = $this->getReviewerPairs($storyID, $oldStory->version); + $assignedTo = ''; foreach($_POST['reviewer'] as $reviewer) { if(!$specChanged and in_array($reviewer, array_keys($oldReviewerList))) continue; @@ -695,7 +706,10 @@ class storyModel extends model $reviewData->version = $specChanged ? $story->version : $oldStory->version; $reviewData->reviewer = $reviewer; $this->dao->insert(TABLE_STORYREVIEW)->data($reviewData)->exec(); + + if(empty($assignedTo)) $assignedTo = $reviewer; } + if($assignedTo and $assignedTo != $oldStory->assignedTo) $this->dao->update(TABLE_STORY)->set('assignedTo')->eq($assignedTo)->set('assignedDate')->eq(helper::now())->where('id')->eq($storyID)->exec(); $this->file->updateObjectID($this->post->uid, $storyID, 'story'); @@ -3349,6 +3363,14 @@ class storyModel extends model } } + if(strtolower($actionType) == 'changed' or strtolower($actionType) == 'opened') + { + $reviewerList = $this->getReviewerPairs($story->id, $story->version); + unset($reviewerList[$story->assignedTo]); + + $ccList .= ',' . join(',', array_keys($reviewerList)) + } + if(empty($toList)) { if(empty($ccList)) return false; From 4f29e51ef0c16fbbf0cd913926cbd70cca7a9887 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 27 Jul 2021 13:30:38 +0800 Subject: [PATCH 19/35] * fix bug for create action when close story. --- module/action/model.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/module/action/model.php b/module/action/model.php index 706b7bb365..d20d43f87d 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -49,8 +49,7 @@ class actionModel extends model $action->date = helper::now(); $action->extra = $extra; - if($objectType == 'story' and $actionType !== 'reviewed' and strpos('reviewclosed,passreviewed,clarifyreviewed', $actionType) !== false) $action->actor = 'System'; - + if($objectType == 'story' and $actionType !== 'reviewed' and strpos(',reviewclosed,passreviewed,clarifyreviewed,', ",$actionType,") !== false) $action->actor = 'System'; /* Use purifier to process comment. Fix bug #2683. */ $action->comment = fixer::stripDataTags($comment); From 42588eabfe81b2eff60b6c4f44fb55fc14d9fb2a Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 27 Jul 2021 13:32:09 +0800 Subject: [PATCH 20/35] * adjust for flow. --- module/search/model.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/module/search/model.php b/module/search/model.php index 3c4d0db64f..a11b3ded2a 100644 --- a/module/search/model.php +++ b/module/search/model.php @@ -31,6 +31,8 @@ class searchModel extends model if($module == 'projectBug') $flowModule = 'bug'; $fields = $this->loadModel('workflowfield')->getList($flowModule); + $maxCount = $this->config->maxCount; + $this->config->maxCount = 0; foreach($fields as $field) { @@ -60,6 +62,7 @@ class searchModel extends model $searchConfig['fields'][$field->field] = $field->name; $searchConfig['params'][$field->field] = array('operator' => $operator, 'control' => $control, 'values' => $options, 'class' => $class); } + $this->config->maxCount = $maxCount; } $searchParams['module'] = $searchConfig['module']; @@ -263,7 +266,7 @@ class searchModel extends model if($hasUser) { - $users = $this->loadModel('user')->getPairs('realname|noclosed', $appendUsers, $this->config->maxCount); + $users = $this->loadModel('user')->getPairs('realname|noclosed', $appendUsers); $users['$@me'] = $this->lang->search->me; } if($hasProduct) $products = array('' => '') + $this->loadModel('product')->getPairs('', $this->session->project); From 61bff4552db14494e1b937e3fbe83a538bfa5c0d Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 27 Jul 2021 13:32:33 +0800 Subject: [PATCH 21/35] * fix error. --- module/story/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/story/model.php b/module/story/model.php index c3d86a5c6c..4f022b8fb3 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -3368,7 +3368,7 @@ class storyModel extends model $reviewerList = $this->getReviewerPairs($story->id, $story->version); unset($reviewerList[$story->assignedTo]); - $ccList .= ',' . join(',', array_keys($reviewerList)) + $ccList .= ',' . join(',', array_keys($reviewerList)); } if(empty($toList)) From ccf6ba717424393ac734893eefba5c90b8284831 Mon Sep 17 00:00:00 2001 From: zenggang Date: Wed, 28 Jul 2021 11:31:46 +0800 Subject: [PATCH 22/35] * Finish task #40443 --- module/product/config.php | 2 +- module/product/control.php | 19 ++++++++++++------- module/product/lang/de.php | 4 ++++ module/product/lang/en.php | 4 ++++ module/product/lang/fr.php | 4 ++++ module/product/lang/vi.php | 4 ++++ module/product/lang/zh-cn.php | 4 ++++ module/product/lang/zh-tw.php | 4 ++++ module/product/view/all.html.php | 1 + module/project/config.php | 2 +- module/project/control.php | 6 +++++- module/project/lang/zh-cn.php | 2 +- module/project/view/browse.html.php | 1 + 13 files changed, 46 insertions(+), 11 deletions(-) diff --git a/module/product/config.php b/module/product/config.php index 638ca8db21..acfdef1152 100644 --- a/module/product/config.php +++ b/module/product/config.php @@ -11,7 +11,7 @@ $config->product->custom->batchEditFields = 'line,PO,QD,RD'; if($config->systemMode == 'new') $config->product->custom->batchEditFields .= ',program'; $config->product->list = new stdclass(); -$config->product->list->exportFields = 'id,name,line,activeStories,changedStories,draftStories,closedStories,plans,releases,bugs,unResolvedBugs,assignToNullBugs'; +$config->product->list->exportFields = 'id,program,name,line,activeRequirements,changedRequirements,draftRequirements,closedRequirements,activeStories,changedStories,draftStories,closedStories,plans,releases,bugs,unResolvedBugs,assignToNullBugs'; global $lang, $app; $app->loadLang('story'); diff --git a/module/product/control.php b/module/product/control.php index 612d495d01..0b751953d7 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -1245,13 +1245,18 @@ class product extends control $productStats = $this->product->getStats($orderBy, null, $status); foreach($productStats as $i => $product) { - $product->line = zget($lines, $product->line, ''); - $product->activeStories = (int)$product->stories['active']; - $product->changedStories = (int)$product->stories['changed']; - $product->draftStories = (int)$product->stories['draft']; - $product->closedStories = (int)$product->stories['closed']; - $product->unResolvedBugs = (int)$product->unResolved; - $product->assignToNullBugs = (int)$product->assignToNull; + $product->line = zget($lines, $product->line, ''); + $product->activeRequirements = (int)$product->requirements['active']; + $product->changedRequirements = (int)$product->requirements['changed']; + $product->draftRequirements = (int)$product->requirements['draft']; + $product->closedRequirements = (int)$product->requirements['closed']; + $product->activeStories = (int)$product->stories['active']; + $product->changedStories = (int)$product->stories['changed']; + $product->draftStories = (int)$product->stories['draft']; + $product->closedStories = (int)$product->stories['closed']; + $product->unResolvedBugs = (int)$product->unResolved; + $product->assignToNullBugs = (int)$product->assignToNull; + $product->program = $product->programName; if($this->post->exportType == 'selected') { diff --git a/module/product/lang/de.php b/module/product/lang/de.php index 8b1cb9a2c3..ddc607bb7b 100644 --- a/module/product/lang/de.php +++ b/module/product/lang/de.php @@ -61,6 +61,10 @@ $lang->product->draftStories = 'Entwurf [S]'; $lang->product->draftStoriesTitle = 'Draft Stories'; $lang->product->closedStories = 'Geschlossene [S]'; $lang->product->closedStoriesTitle = 'Closed Stories'; +$lang->product->activeRequirements = "Active {$lang->URCommon}"; +$lang->product->changedRequirements = "Changed {$lang->URCommon}"; +$lang->product->draftRequirements = "Draft {$lang->URCommon}"; +$lang->product->closedRequirements = "Closed {$lang->URCommon}"; $lang->product->unResolvedBugs = 'Ungelöste [B]'; $lang->product->unResolvedBugsTitle = 'Active Bugs'; $lang->product->assignToNullBugs = 'Nicht zugewiesene [B]'; diff --git a/module/product/lang/en.php b/module/product/lang/en.php index 9830b23769..262bf7667e 100644 --- a/module/product/lang/en.php +++ b/module/product/lang/en.php @@ -65,6 +65,10 @@ $lang->product->draftStories = 'Draft [S]'; $lang->product->draftStoriesTitle = 'Draft Stories'; $lang->product->closedStories = 'Closed [S]'; $lang->product->closedStoriesTitle = 'Closed Stories'; +$lang->product->activeRequirements = "Active {$lang->URCommon}"; +$lang->product->changedRequirements = "Changed {$lang->URCommon}"; +$lang->product->draftRequirements = "Draft {$lang->URCommon}"; +$lang->product->closedRequirements = "Closed {$lang->URCommon}"; $lang->product->unResolvedBugs = 'Active [B]'; $lang->product->unResolvedBugsTitle = 'Active Bugs'; $lang->product->assignToNullBugs = 'Unassigned [B]'; diff --git a/module/product/lang/fr.php b/module/product/lang/fr.php index e5e9f9a337..3aece42b02 100644 --- a/module/product/lang/fr.php +++ b/module/product/lang/fr.php @@ -61,6 +61,10 @@ $lang->product->draftStories = 'Brouillon [S]'; $lang->product->draftStoriesTitle = 'Stories en Analyse'; $lang->product->closedStories = 'Fermées [S]'; $lang->product->closedStoriesTitle = 'Stories Fermées'; +$lang->product->activeRequirements = "Active {$lang->URCommon}"; +$lang->product->changedRequirements = "Changed {$lang->URCommon}"; +$lang->product->draftRequirements = "Draft {$lang->URCommon}"; +$lang->product->closedRequirements = "Closed {$lang->URCommon}"; $lang->product->unResolvedBugs = 'Ouverts [B]'; $lang->product->unResolvedBugsTitle = 'Bugs Ouverts'; $lang->product->assignToNullBugs = 'Orphelins [B]'; diff --git a/module/product/lang/vi.php b/module/product/lang/vi.php index 99615645b8..d7b61c160d 100644 --- a/module/product/lang/vi.php +++ b/module/product/lang/vi.php @@ -61,6 +61,10 @@ $lang->product->draftStories = 'Nháp [S]'; $lang->product->draftStoriesTitle = 'Câu chuyện nháp'; $lang->product->closedStories = 'Đã đóng [S]'; $lang->product->closedStoriesTitle = 'Câu chuyện đã đóng'; +$lang->product->activeRequirements = "Active {$lang->URCommon}"; +$lang->product->changedRequirements = "Changed {$lang->URCommon}"; +$lang->product->draftRequirements = "Draft {$lang->URCommon}"; +$lang->product->closedRequirements = "Closed {$lang->URCommon}"; $lang->product->unResolvedBugs = 'Kích hoạt [B]'; $lang->product->unResolvedBugsTitle = 'Kích hoạt Bugs'; $lang->product->assignToNullBugs = 'Chưa giao [B]'; diff --git a/module/product/lang/zh-cn.php b/module/product/lang/zh-cn.php index 934fa90cb4..c92e133a38 100644 --- a/module/product/lang/zh-cn.php +++ b/module/product/lang/zh-cn.php @@ -65,6 +65,10 @@ $lang->product->draftStories = "草稿{$lang->SRCommon}"; $lang->product->draftStoriesTitle = "草稿{$lang->SRCommon}"; $lang->product->closedStories = "已关闭{$lang->SRCommon}"; $lang->product->closedStoriesTitle = "已关闭{$lang->SRCommon}"; +$lang->product->activeRequirements = "激活{$lang->URCommon}"; +$lang->product->changedRequirements = "已变更{$lang->URCommon}"; +$lang->product->draftRequirements = "草稿{$lang->URCommon}"; +$lang->product->closedRequirements = "已关闭{$lang->URCommon}"; $lang->product->unResolvedBugs = '未解决Bug'; $lang->product->unResolvedBugsTitle = '未解决Bug'; $lang->product->assignToNullBugs = '未指派Bug'; diff --git a/module/product/lang/zh-tw.php b/module/product/lang/zh-tw.php index 503420764c..83d723ab14 100644 --- a/module/product/lang/zh-tw.php +++ b/module/product/lang/zh-tw.php @@ -65,6 +65,10 @@ $lang->product->draftStories = "草稿{$lang->SRCommon}"; $lang->product->draftStoriesTitle = "草稿{$lang->SRCommon}"; $lang->product->closedStories = "已關閉{$lang->SRCommon}"; $lang->product->closedStoriesTitle = "已關閉{$lang->SRCommon}"; +$lang->product->activeRequirements = "激活{$lang->URCommon}"; +$lang->product->changedRequirements = "已變更{$lang->URCommon}"; +$lang->product->draftRequirements = "草稿{$lang->URCommon}"; +$lang->product->closedRequirements = "已關閉{$lang->URCommon}"; $lang->product->unResolvedBugs = '未解決Bug'; $lang->product->unResolvedBugsTitle = '未解決Bug'; $lang->product->assignToNullBugs = '未指派Bug'; diff --git a/module/product/view/all.html.php b/module/product/view/all.html.php index 811ed917a8..56e3366940 100644 --- a/module/product/view/all.html.php +++ b/module/product/view/all.html.php @@ -20,6 +20,7 @@ product->line, '', 'class="btn btn-link"');?>
+ " . $lang->export, '', "class='btn btn-link export'")?> ' . $lang->product->create, '', 'class="btn btn-primary"');?>
diff --git a/module/project/config.php b/module/project/config.php index 78c2f28e31..e28c1dbbec 100644 --- a/module/project/config.php +++ b/module/project/config.php @@ -11,7 +11,7 @@ $config->project->editor->activate = array('id' => 'comment', 'tools' => 'simple $config->project->editor->view = array('id' => 'lastComment', 'tools' => 'simpleTools'); $config->project->list = new stdclass(); -$config->project->list->exportFields = 'id,name,code,template,product,status,begin,end,budget,PM,end,desc'; +$config->project->list->exportFields = 'id,parent,name,linkedProducts,status,begin,end,budget,PM,end,desc'; $config->project->create = new stdclass(); $config->project->edit = new stdclass(); diff --git a/module/project/control.php b/module/project/control.php index a55a8b610d..41d3b7d3ee 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -68,7 +68,7 @@ class project extends control unset($fields[$key]); } - $projects = $this->project->getList($status, $orderBy, null); + $projects = $this->project->getInfoList($status, 30, $orderBy, null); $users = $this->loadModel('user')->getPairs('noletter'); foreach($projects as $i => $project) { @@ -77,6 +77,10 @@ class project extends control $project->model = zget($projectLang->modelList, $project->model); $project->product = zget($projectLang->productList, $project->product); $project->budget = $project->budget . zget($projectLang->unitList, $project->budgetUnit); + $project->parent = $project->parentName; + + $linkedProducts = $this->project->getProducts($project->id, false); + $project->linkedProducts = implode(',', $linkedProducts); if($this->post->exportType == 'selected') { diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index 4fc6289d47..a344671d89 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -47,7 +47,7 @@ $lang->project->errorNoProducts = '最少关联一个产品'; $lang->project->copyNoProject = '没有可用的项目来复制'; $lang->project->searchByName = '输入项目名称进行检索'; $lang->project->deleted = '已删除'; -$lang->project->linkedProducts = '已关联'; +$lang->project->linkedProducts = '已关联产品'; $lang->project->unlinkedProducts = '未关联'; $lang->project->testreport = '测试报告'; diff --git a/module/project/view/browse.html.php b/module/project/view/browse.html.php index 6d6e8a97e8..590763b948 100644 --- a/module/project/view/browse.html.php +++ b/module/project/view/browse.html.php @@ -40,6 +40,7 @@ js::set('browseType', $browseType); $lang->project->mine), '', $this->cookie->involved ? 'checked=checked' : '');?>
+ " . $lang->export, '', "class='btn btn-link export'")?> config->maxVersion)):?> ' . $lang->project->create, '', 'class="btn btn-primary" data-toggle="modal" data-target="#guideDialog"');?> config->systemMode == 'new'):?> From d78d2cc3efaf911e8f2da6514d85f987134ef11e Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Wed, 28 Jul 2021 14:44:48 +0800 Subject: [PATCH 23/35] * Fix task #40454. --- module/report/lang/zh-cn.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/report/lang/zh-cn.php b/module/report/lang/zh-cn.php index 46ff54dbaa..8ae2b06d61 100644 --- a/module/report/lang/zh-cn.php +++ b/module/report/lang/zh-cn.php @@ -63,7 +63,7 @@ $lang->reportList->test->lists[13] = 'Bug指派表|report|bugassign'; $lang->reportList->staff->lists[10] = '员工负载表|report|workload'; $lang->report->id = '编号'; -$lang->report->execution = $lang->executionCommon; +$lang->report->execution = '执行'; $lang->report->product = $lang->productCommon; $lang->report->user = '姓名'; $lang->report->bugTotal = 'Bug'; From 8d37af5669bcfa15c1f3817efba20fd4bfadc23f Mon Sep 17 00:00:00 2001 From: wangyidong Date: Wed, 28 Jul 2021 17:49:03 +0800 Subject: [PATCH 24/35] * code for task #40451. --- module/program/lang/zh-cn.php | 86 +++++++++++++++++++++-------------- module/project/lang/zh-cn.php | 14 ++++++ module/user/model.php | 6 +-- 3 files changed, 70 insertions(+), 36 deletions(-) diff --git a/module/program/lang/zh-cn.php b/module/program/lang/zh-cn.php index b27a7048ce..a039b05d47 100644 --- a/module/program/lang/zh-cn.php +++ b/module/program/lang/zh-cn.php @@ -1,20 +1,30 @@ program->name = '项目集名称'; -$lang->program->template = '项目集模板'; -$lang->program->category = '项目集类型'; -$lang->program->desc = '项目集描述'; -$lang->program->copy = '复制项目集'; -$lang->program->status = '状态'; -$lang->program->PM = '负责人'; -$lang->program->budget = '预算'; -$lang->program->progress = '项目进度'; -$lang->program->children = '子项目集'; -$lang->program->parent = '父项目集'; -$lang->program->allInput = '项目集总投入'; -$lang->program->teamCount = '总人数'; -$lang->program->longTime = '长期'; -$lang->program->view = '项目集详情'; +$lang->program->id = '编号'; +$lang->program->name = '项目集名称'; +$lang->program->desc = '项目集描述'; +$lang->program->status = '状态'; +$lang->program->PM = '负责人'; +$lang->program->budget = '预算'; +$lang->program->budgetUnit = '预算单位'; +$lang->program->parent = '父项目集'; +$lang->program->begin = '计划开始'; +$lang->program->end = '计划完成'; +$lang->program->stage = '阶段'; +$lang->program->type = '类型'; +$lang->program->pri = '优先级'; +$lang->program->openedBy = '由谁创建'; +$lang->program->openedDate = '创建日期'; +$lang->program->closedBy = '由谁关闭'; +$lang->program->closedDate = '关闭日期'; +$lang->program->canceledBy = '由谁取消'; +$lang->program->canceledDate = '取消日期'; +$lang->program->team = '团队'; +$lang->program->order = '排序'; +$lang->program->days = '可用工作日'; +$lang->program->acl = '访问控制'; +$lang->program->whitelist = '白名单'; +$lang->program->deleted = '已删除'; /* Actions. */ $lang->program->common = '项目集'; @@ -23,6 +33,8 @@ $lang->program->create = '添加项目集'; $lang->program->createGuide = '选择项目模板'; $lang->program->edit = '编辑项目集'; $lang->program->browse = '项目集列表'; +$lang->program->view = '项目集详情'; +$lang->program->copy = '复制项目集'; $lang->program->product = '产品列表'; $lang->program->project = '项目集项目列表'; $lang->program->all = '所有项目集'; @@ -38,32 +50,40 @@ $lang->program->createStakeholder = '添加干系人'; $lang->program->unlinkStakeholder = '移除干系人'; $lang->program->batchUnlinkStakeholders = '批量移除干系人'; $lang->program->unlink = '移除'; -$lang->program->moreProgram = '更多项目集'; -$lang->program->confirmBatchUnlink = "您确定要批量移除这些干系人吗?"; -$lang->program->stakeholderType = '干系人类型'; -$lang->program->isStakeholderKey = '关键干系人'; $lang->program->importStakeholder = '从父项目集导入'; $lang->program->unbindWhitelist = '移除白名单'; $lang->program->importStakeholder = '从父项目集导入'; $lang->program->manageMembers = '项目集团队'; -$lang->program->beyondParentBudget = '已超出所属项目集的剩余预算'; -$lang->program->parentBudget = '所属项目集剩余预算:'; -$lang->program->beginLetterParent = "父项目集的开始日期:%s,开始日期不能小于父项目集的开始日期"; -$lang->program->endGreaterParent = "父项目集的完成日期:%s,完成日期不能大于父项目集的完成日期"; -$lang->program->beginGreateChild = "子项目集的最小开始日期:%s,父项目集的开始日期不能大于子项目集的最小开始日期"; -$lang->program->endLetterChild = "子项目的最大完成日期:%s,父项目的完成日期不能小于子项目的最大完成日期"; -$lang->program->closeErrorMessage = '存在子项目集或项目为未关闭状态'; -$lang->program->hasChildren = '该项目集有子项目集或项目存在,不能删除。'; -$lang->program->confirmDelete = "您确定要删除吗?"; -$lang->program->readjustTime = '重新调整项目集起止时间'; -$lang->program->accessDenied = '你无权访问该项目集'; + +$lang->program->template = '项目集模板'; +$lang->program->category = '项目集类型'; +$lang->program->progress = '项目进度'; +$lang->program->children = '子项目集'; +$lang->program->allInput = '项目集总投入'; +$lang->program->teamCount = '总人数'; +$lang->program->longTime = '长期'; +$lang->program->moreProgram = '更多项目集'; +$lang->program->stakeholderType = '干系人类型'; +$lang->program->parentBudget = '所属项目集剩余预算:'; +$lang->program->isStakeholderKey = '关键干系人'; $lang->program->stakeholderTypeList['inside'] = '内部'; $lang->program->stakeholderTypeList['outside'] = '外部'; -$lang->program->noProgram = '暂时没有项目集'; -$lang->program->showClosed = '显示已关闭'; -$lang->program->tips = '选择了父项目集,则可关联该父项目集下的产品。如果项目未选择任何项目集,则系统会默认创建一个和该项目同名的产品并关联该项目。'; +$lang->program->noProgram = '暂时没有项目集'; +$lang->program->showClosed = '显示已关闭'; +$lang->program->tips = '选择了父项目集,则可关联该父项目集下的产品。如果项目未选择任何项目集,则系统会默认创建一个和该项目同名的产品并关联该项目。'; +$lang->program->confirmBatchUnlink = "您确定要批量移除这些干系人吗?"; +$lang->program->beginLetterParent = "父项目集的开始日期:%s,开始日期不能小于父项目集的开始日期"; +$lang->program->endGreaterParent = "父项目集的完成日期:%s,完成日期不能大于父项目集的完成日期"; +$lang->program->beginGreateChild = "子项目集的最小开始日期:%s,父项目集的开始日期不能大于子项目集的最小开始日期"; +$lang->program->endLetterChild = "子项目的最大完成日期:%s,父项目的完成日期不能小于子项目的最大完成日期"; +$lang->program->closeErrorMessage = '存在子项目集或项目为未关闭状态'; +$lang->program->hasChildren = '该项目集有子项目集或项目存在,不能删除。'; +$lang->program->confirmDelete = "您确定要删除吗?"; +$lang->program->readjustTime = '重新调整项目集起止时间'; +$lang->program->accessDenied = '你无权访问该项目集'; +$lang->program->beyondParentBudget = '已超出所属项目集的剩余预算'; $lang->program->endList[31] = '一个月'; $lang->program->endList[93] = '三个月'; diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index a344671d89..b1556b77a2 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -53,7 +53,9 @@ $lang->project->testreport = '测试报告'; /* Fields. */ $lang->project->common = '项目'; +$lang->project->id = '项目编号'; $lang->project->stage = '阶段'; +$lang->project->model = '项目管理方式'; $lang->project->PM = '负责人'; $lang->project->name = '项目名称'; $lang->project->category = '项目类型'; @@ -63,7 +65,19 @@ $lang->project->copy = '复制项目'; $lang->project->begin = '计划开始'; $lang->project->end = '计划完成'; $lang->project->status = '状态'; +$lang->project->subStatus = '子状态'; +$lang->project->type = '项目类型'; +$lang->project->pri = '优先级'; +$lang->project->openedBy = '由谁创建'; +$lang->project->openedDate = '创建日期'; +$lang->project->closedBy = '由谁关闭'; +$lang->project->closedDate = '关闭日期'; +$lang->project->canceledBy = '由谁取消'; +$lang->project->canceledDate = '取消日期'; +$lang->project->team = '团队'; +$lang->project->order = '排序'; $lang->project->budget = '预算'; +$lang->project->budgetUnit = '预算单位'; $lang->project->template = '项目模板'; $lang->project->estimate = '预计'; $lang->project->consume = '消耗'; diff --git a/module/user/model.php b/module/user/model.php index 51ed604609..f6197b5949 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -1115,7 +1115,7 @@ class userModel extends model if($project->project) { $parentProject = zget($projectList, $project->project, ''); - if(empty($parentProject)) $parentProject = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->eq($project->project)->exec(); + if(empty($parentProject)) $parentProject = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->eq($project->project)->fetch(); $project->projectName = $parentProject ? $parentProject->name : ''; } $myProjects[$project->id] = $project; @@ -1887,7 +1887,7 @@ class userModel extends model { $stakeholders = zget($stakeholderGroup, $program->id, array()); $whiteList = zget($whiteListGroup, $program->id, array()); - if($program->acl == 'program') + if($program->acl == 'program') { $stakeholders += zget($parentStakeholderGroup, $program->id, array()); $stakeholders += zget($parentPMGroup, $program->id, array()); @@ -1911,7 +1911,7 @@ class userModel extends model { $stakeholders = zget($stakeholderGroup, $program->id, array()); $whiteList = zget($whiteListGroup, $program->id, array()); - if($program->acl == 'program') + if($program->acl == 'program') { $stakeholders += zget($parentStakeholderGroup, $program->id, array()); $stakeholders += zget($parentPMGroup, $program->id, array()); From 0a131fe8db8efc427743cdf1a3d99582bdbee841 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 29 Jul 2021 15:12:10 +0800 Subject: [PATCH 25/35] * finish task #40432. --- db/zentao.sql | 2 +- module/bug/control.php | 3 --- module/search/control.php | 3 ++- module/search/js/buildindex.js | 13 ++++++++++++- module/search/lang/de.php | 2 +- module/search/lang/en.php | 2 +- module/search/lang/fr.php | 2 +- module/search/lang/vi.php | 2 +- module/search/lang/zh-cn.php | 2 +- module/search/model.php | 18 +++++++++++++++--- 10 files changed, 35 insertions(+), 14 deletions(-) diff --git a/db/zentao.sql b/db/zentao.sql index 9457583bc7..a441950b55 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -858,7 +858,7 @@ CREATE TABLE IF NOT EXISTS `zt_searchdict` ( ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_searchindex`; CREATE TABLE IF NOT EXISTS `zt_searchindex` ( - `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `objectType` char(20) NOT NULL, `objectID` mediumint(9) NOT NULL, `title` text NOT NULL, diff --git a/module/bug/control.php b/module/bug/control.php index 0d64822484..ca709ddd2c 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -1298,9 +1298,6 @@ class bug extends control $this->qa->setMenu($this->products, $productID, $bug->branch); $this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->resolve; - $this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID"), $this->products[$productID]); - $this->view->position[] = $this->lang->bug->resolve; - $this->view->bug = $bug; $this->view->users = $users; $this->view->assignedTo = $assignedTo; diff --git a/module/search/control.php b/module/search/control.php index f4d6e5e5ab..e0baa17683 100644 --- a/module/search/control.php +++ b/module/search/control.php @@ -166,7 +166,8 @@ class search extends control } else { - return $this->send(array('result' => 'unfinished', 'message' => sprintf($this->lang->search->buildResult, zget($this->lang->searchObjects, ($result['type'] == 'case' ? 'testcase' : $result['type']), $result['type']), $result['count']),'next' => inlink('buildIndex', "type={$result['type']}&lastID={$result['lastID']}") )); + $type = zget($this->lang->searchObjects, ($result['type'] == 'case' ? 'testcase' : $result['type']), $result['type']); + return $this->send(array('result' => 'unfinished', 'message' => sprintf($this->lang->search->buildResult, $type, $type, $result['count']), 'type' => $type, 'count' => $result['count'], 'next' => inlink('buildIndex', "type={$result['type']}&lastID={$result['lastID']}") )); } } diff --git a/module/search/js/buildindex.js b/module/search/js/buildindex.js index 74df862ea4..7f9fdc4f60 100644 --- a/module/search/js/buildindex.js +++ b/module/search/js/buildindex.js @@ -13,8 +13,19 @@ $(document).ready(function() } else { + className = response.type + 'count'; + $typeCount = $('#resultBox .' + className) + if($typeCount.length == 0) + { + $('#resultBox').append("
  • " + response.message + "
  • "); + } + else + { + count = parseInt($typeCount.html()) + parseInt(response.count); + $typeCount.html(count); + } + $('#execButton').attr('href', response.next); - $('#resultBox').append("
  • " + response.message + "
  • "); return $('#execButton').click(); } }); diff --git a/module/search/lang/de.php b/module/search/lang/de.php index d37d7d28bc..6097774685 100644 --- a/module/search/lang/de.php +++ b/module/search/lang/de.php @@ -68,7 +68,7 @@ $lang->search->preview = 'Preview'; $lang->search->result = 'Search Results'; $lang->search->buildSuccessfully = 'Search index initialized.'; $lang->search->executeInfo = '%s search results for you in %s seconds.'; -$lang->search->buildResult = 'Created index %s and added %s records.'; +$lang->search->buildResult = "Create index %s and created %s records."; $lang->search->modules['all'] = 'All'; $lang->search->modules['task'] = 'Task'; diff --git a/module/search/lang/en.php b/module/search/lang/en.php index b35e74c92b..0ee2b29838 100644 --- a/module/search/lang/en.php +++ b/module/search/lang/en.php @@ -68,7 +68,7 @@ $lang->search->preview = 'Preview'; $lang->search->result = 'Search Results'; $lang->search->buildSuccessfully = 'Search index initialized.'; $lang->search->executeInfo = '%s search results for you in %s seconds.'; -$lang->search->buildResult = 'Created index %s and added %s records.'; +$lang->search->buildResult = "Create index %s and created %s records."; $lang->search->modules['all'] = 'All'; $lang->search->modules['task'] = 'Task'; diff --git a/module/search/lang/fr.php b/module/search/lang/fr.php index c385e47934..47970e082f 100644 --- a/module/search/lang/fr.php +++ b/module/search/lang/fr.php @@ -68,7 +68,7 @@ $lang->search->preview = 'Preview'; $lang->search->result = 'Search Results'; $lang->search->buildSuccessfully = 'Search index initialized.'; $lang->search->executeInfo = '%s search results for you in %s seconds.'; -$lang->search->buildResult = 'Created index %s and added %s records.'; +$lang->search->buildResult = "Create index %s and created %s records."; $lang->search->modules['all'] = 'All'; $lang->search->modules['task'] = 'Task'; diff --git a/module/search/lang/vi.php b/module/search/lang/vi.php index 4d8a3132eb..a2cb4d565b 100644 --- a/module/search/lang/vi.php +++ b/module/search/lang/vi.php @@ -68,7 +68,7 @@ $lang->search->preview = 'Preview'; $lang->search->result = 'Kết quả tìm kiếm'; $lang->search->buildSuccessfully = 'Tìm kiếm khởi tạo chỉ mục.'; $lang->search->executeInfo = '%s kết quả tìm kiếm trong %s giây'; -$lang->search->buildResult = 'Chỉ mục được tao %s và được thêm %s mục'; +$lang->search->buildResult = "Create index %s and created %s records."; $lang->search->modules['all'] = 'Tất cả'; $lang->search->modules['task'] = 'Nhiệm vụ'; diff --git a/module/search/lang/zh-cn.php b/module/search/lang/zh-cn.php index 9ec02c18d1..180076618f 100644 --- a/module/search/lang/zh-cn.php +++ b/module/search/lang/zh-cn.php @@ -68,7 +68,7 @@ $lang->search->preview = '预览'; $lang->search->result = '搜索结果'; $lang->search->buildSuccessfully = '初始化搜索索引成功'; $lang->search->executeInfo = '为您找到相关结果%s个,耗时%s秒'; -$lang->search->buildResult = '创建 %s 索引, 新增 %s 条记录;'; +$lang->search->buildResult = "创建 %s 索引, 已创建 %s 条记录;"; $lang->search->modules['all'] = '全部'; $lang->search->modules['task'] = '任务'; diff --git a/module/search/model.php b/module/search/model.php index a11b3ded2a..3d6ab911fd 100644 --- a/module/search/model.php +++ b/module/search/model.php @@ -684,7 +684,7 @@ class searchModel extends model $index->content = $contentSplited['words']; $this->saveDict($titleSplited['dict'] + $contentSplited['dict']); - $this->dao->replace(TABLE_SEARCHINDEX)->data($index)->exec(); + $this->dao->insert(TABLE_SEARCHINDEX)->data($index)->exec(); return true; } @@ -697,10 +697,15 @@ class searchModel extends model */ public function saveDict($dict) { + static $savedDict; + if(empty($savedDict)) $savedDict = $this->dao->select("`key`")->from(TABLE_SEARCHDICT)->fetchPairs('key', 'key'); foreach($dict as $key => $value) { if(!is_numeric($key) or empty($value) or strlen($key) != 5) continue; - $this->dao->replace(TABLE_SEARCHDICT)->data(array('key' => $key, 'value' => $value))->exec(); + if(isset($savedDict[$key])) continue; + + $this->dao->insert(TABLE_SEARCHDICT)->data(array('key' => $key, 'value' => $value))->exec(); + $savedDict[$key] = $key; } } @@ -1112,7 +1117,14 @@ class searchModel extends model } } - foreach($dataList as $data) $this->saveIndex($module, $data); + $savedIndex = $this->dao->select('*')->from(TABLE_SEARCHINDEX)->where('objectType')->eq($module)->andWhere('objectID')->in(array_keys($dataList))->fetchPairs('objectID', 'objectID'); + $fields = $this->config->search->fields->{$module}; + foreach($dataList as $data) + { + if(empty($fields)) continue; + if(isset($savedIndex[$data->{$fields->id}])) continue; + $this->saveIndex($module, $data); + } return array('type' => $module, 'count' => count($dataList), 'lastID' => max(array_keys($dataList))); } } From f46c5f507200dab0ff7630d6cb2f2fdf2dc48cda Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 29 Jul 2021 16:12:41 +0800 Subject: [PATCH 26/35] * fix for save index. --- module/search/model.php | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/module/search/model.php b/module/search/model.php index 3d6ab911fd..0ebe5792d5 100644 --- a/module/search/model.php +++ b/module/search/model.php @@ -684,7 +684,7 @@ class searchModel extends model $index->content = $contentSplited['words']; $this->saveDict($titleSplited['dict'] + $contentSplited['dict']); - $this->dao->insert(TABLE_SEARCHINDEX)->data($index)->exec(); + $this->dao->replace(TABLE_SEARCHINDEX)->data($index)->exec(); return true; } @@ -1117,14 +1117,7 @@ class searchModel extends model } } - $savedIndex = $this->dao->select('*')->from(TABLE_SEARCHINDEX)->where('objectType')->eq($module)->andWhere('objectID')->in(array_keys($dataList))->fetchPairs('objectID', 'objectID'); - $fields = $this->config->search->fields->{$module}; - foreach($dataList as $data) - { - if(empty($fields)) continue; - if(isset($savedIndex[$data->{$fields->id}])) continue; - $this->saveIndex($module, $data); - } + foreach($dataList as $data) $this->saveIndex($module, $data); return array('type' => $module, 'count' => count($dataList), 'lastID' => max(array_keys($dataList))); } } From 7055857a900dfec5006a4adba4ddbbc2eff3cf81 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 29 Jul 2021 16:47:56 +0800 Subject: [PATCH 27/35] * fix bug #13891. --- module/tree/view/browse.html.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/module/tree/view/browse.html.php b/module/tree/view/browse.html.php index 5e5b9e7b14..d66e5dbd8e 100644 --- a/module/tree/view/browse.html.php +++ b/module/tree/view/browse.html.php @@ -253,7 +253,10 @@ $(function() var item = $li.data(); orders['orders[' + item.id + ']'] = $li.attr('data-order') || item.order; }); - $.post('createLink('tree', 'updateOrder', "rootID=$rootID&viewType=$viewType");?>', orders).error(function() + $.post('createLink('tree', 'updateOrder', "rootID=$rootID&viewType=$viewType");?>', orders, function(data) + { + $('.main-col').load(location.href + ' .main-col .panel'); + }).error(function() { bootbox.alert(lang.timeout); }); From 3def2a471331301c13442f16e8e5362b92a54d03 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 29 Jul 2021 16:52:13 +0800 Subject: [PATCH 28/35] * adjust update userview for project involved execution. --- module/execution/model.php | 1 + module/project/model.php | 26 ++++++++++++++++++++++++-- module/stakeholder/control.php | 9 +-------- module/stakeholder/model.php | 27 ++------------------------- 4 files changed, 28 insertions(+), 35 deletions(-) diff --git a/module/execution/model.php b/module/execution/model.php index 9117c74865..fb82b0a869 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -3630,6 +3630,7 @@ class executionModel extends model public function updateUserView($executionID, $objectType = 'sprint', $users = array()) { $this->loadModel('user')->updateUserView($executionID, $objectType, $users); + $products = $this->getProducts($executionID, $withBranch = false); if(!empty($products)) $this->user->updateUserView(array_keys($products), 'product', $users); } diff --git a/module/project/model.php b/module/project/model.php index f4cc4dc8e2..5d5c2d63f6 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -771,7 +771,6 @@ class projectModel extends model $whitelist = explode(',', $project->whitelist); $this->loadModel('personnel')->updateWhitelist($whitelist, 'project', $projectID); - if($project->acl != 'open') $this->loadModel('user')->updateUserView($projectID, 'project'); /* Create doc lib. */ $this->app->loadLang('doc'); @@ -948,7 +947,13 @@ class projectModel extends model $whitelist = explode(',', $project->whitelist); $this->loadModel('personnel')->updateWhitelist($whitelist, 'project', $projectID); - if($project->acl != 'open') $this->loadModel('user')->updateUserView($projectID, 'project'); + if($project->acl != 'open') + { + $this->loadModel('user')->updateUserView($projectID, 'project'); + + $executions = $this->dao->select('id')->from(TABLE_EXECUTION)->where('project')->eq($projectID)->fetchPairs('id', 'id'); + if($executions) $this->user->updateUserView($executions, 'sprint'); + } if($oldProject->parent != $project->parent) $this->loadModel('program')->processNode($projectID, $project->parent, $oldProject->path, $oldProject->grade); @@ -1486,6 +1491,23 @@ class projectModel extends model if($needUpdate) $this->user->updateUserView($needUpdate, 'product', $members); } + /** + * Update userview for involved product and execution. + * + * @param int $projectID + * @param array $users + * @access public + * @return void + */ + public function updateInvolvedUserView($projectID, $users = array()) + { + $products = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($projectID)->fetchPairs('product', 'product'); + $this->loadModel('user')->updateUserView($products, 'product', $stakeholder); + + $executions = $this->dao->select('id')->from(TABLE_EXECUTION)->where('project')->eq($projectID)->fetchPairs('id', 'id'); + if($executions) $this->user->updateUserView($executions, 'sprint', $stakeholder); + } + /** * Get team members. * diff --git a/module/stakeholder/control.php b/module/stakeholder/control.php index aba15f42ed..8e99c6c13e 100644 --- a/module/stakeholder/control.php +++ b/module/stakeholder/control.php @@ -311,14 +311,7 @@ class stakeholder extends control $this->stakeholder->delete(TABLE_STAKEHOLDER, $userID); $this->loadModel('user')->updateUserView($this->session->project, 'project'); /* Update linked products view. */ - if($stakeholder->objectType == 'project' and $stakeholder->objectID) - { - $products = $this->loadModel('product')->getProductPairsByProject($stakeholder->objectID); - if(!empty($products)) - { - foreach($products as $productID => $productName) $this->user->updateUserView($productID, 'product',$stakeholder->user); - } - } + if($stakeholder->objectType == 'project' and $stakeholder->objectID) $this->loadModel('project')->updateInvolvedUserView($stakeholder->objectID, $stakeholder->user); die(js::reload('parent')); } } diff --git a/module/stakeholder/model.php b/module/stakeholder/model.php index 95f3834aa5..cdd51da6f1 100644 --- a/module/stakeholder/model.php +++ b/module/stakeholder/model.php @@ -105,11 +105,7 @@ class stakeholderModel extends model /* Update linked products view. */ if($stakeholder->objectType == 'project' and $stakeholder->objectID) { - $products = $this->loadModel('product')->getProductPairsByProject($stakeholder->objectID); - if(!empty($products)) - { - foreach($products as $productID => $productName) $this->user->updateUserView($productID, 'product', $stakeholder->user); - } + $this->loadModel('project')->updateInvolvedUserView($stakeholder->objectID, $stakeholder->user); } if($stakeholder->objectType == 'program' and $stakeholder->objectID) @@ -173,26 +169,7 @@ class stakeholderModel extends model $changedAccounts = array_unique($changedAccounts); $this->loadModel('user')->updateUserView($projectID, 'project', $changedAccounts); - - /* Update linked products view. */ - $products = $this->loadModel('product')->getProductPairsByProject($projectID); - if(!empty($products)) - { - foreach($products as $productID => $productName) $this->user->updateUserView($productID, 'product', $changedAccounts); - } - - if($stakeholder->objectType == 'program' and $stakeholder->objectID) - { - $programID = $stakeholder->objectID; - /* Update children user view. */ - $childPrograms = $this->dao->select('id')->from(TABLE_PROJECT)->where('path')->like("%,$programID,%")->andWhere('type')->eq('program')->fetchPairs(); - $childProjects = $this->dao->select('id')->from(TABLE_PROJECT)->where('path')->like("%,$programID,%")->andWhere('type')->eq('project')->fetchPairs(); - $childProducts = $this->dao->select('id')->from(TABLE_PRODUCT)->where('program')->eq($programID)->fetchPairs(); - - if(!empty($childPrograms)) $this->user->updateUserView($childPrograms, 'program', $stakeholder->user); - if(!empty($childProjects)) $this->user->updateUserView($childProjects, 'project', $stakeholder->user); - if(!empty($childProducts)) $this->user->updateUserView($childProducts, 'product', $stakeholder->user); - } + $this->loadModel('project')->updateInvolvedUserView($projectID, $changedAccounts); return $stakeholderList; } From 304f5416213c6eff2899f466b14104f7220a5656 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 29 Jul 2021 17:00:07 +0800 Subject: [PATCH 29/35] * code for task #13891. --- module/tree/view/browsetask.html.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/module/tree/view/browsetask.html.php b/module/tree/view/browsetask.html.php index ffcce3781a..d15b7856c6 100644 --- a/module/tree/view/browsetask.html.php +++ b/module/tree/view/browsetask.html.php @@ -205,7 +205,10 @@ $(function() var item = $li.data(); orders['orders[' + item.id + ']'] = $li.attr('data-order') || item.order; }); - $.post('createLink('tree', 'updateOrder', "root={$root->id}&viewType=task");?>', orders).error(function() + $.post('createLink('tree', 'updateOrder', "root={$root->id}&viewType=task");?>', orders, function(data) + { + $('.main-col').load(location.href + ' .main-col .panel'); + }).error(function() { bootbox.alert(lang.timeout); }); From 9d91f22f32e234cc46a36ba83604f52c8566b425 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 30 Jul 2021 08:42:23 +0800 Subject: [PATCH 30/35] * finish task #40115. --- xuanxuan/config/ext/xuanxuan.php | 2 ++ xuanxuan/module/group/ext/lang/en/xuanxuan.php | 4 +--- xuanxuan/module/group/ext/lang/zh-cn/xuanxuan.php | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/xuanxuan/config/ext/xuanxuan.php b/xuanxuan/config/ext/xuanxuan.php index e69de29bb2..73e07c8d47 100644 --- a/xuanxuan/config/ext/xuanxuan.php +++ b/xuanxuan/config/ext/xuanxuan.php @@ -0,0 +1,2 @@ +openMethods[] = 'setting.downloadxxd'; diff --git a/xuanxuan/module/group/ext/lang/en/xuanxuan.php b/xuanxuan/module/group/ext/lang/en/xuanxuan.php index caf4862b4b..4bd6677579 100644 --- a/xuanxuan/module/group/ext/lang/en/xuanxuan.php +++ b/xuanxuan/module/group/ext/lang/en/xuanxuan.php @@ -3,11 +3,9 @@ $lang->resource->admin->xuanxuan = 'xuanxuan'; $lang->admin->methodOrder[26] = 'xuanxuan'; if(!isset($lang->resource->setting)) $lang->resource->setting = new stdclass(); -$lang->resource->setting->xuanxuan = 'xuanxuan'; -$lang->resource->setting->downloadxxd = 'downloadXXD'; +$lang->resource->setting->xuanxuan = 'xuanxuan'; $lang->setting->methodOrder[26] = 'xuanxuan'; -$lang->setting->methodOrder[31] = 'downloadxxd'; $lang->resource->im = new stdclass(); $lang->resource->im->getChatUsers = 'getChatUsers'; diff --git a/xuanxuan/module/group/ext/lang/zh-cn/xuanxuan.php b/xuanxuan/module/group/ext/lang/zh-cn/xuanxuan.php index caf4862b4b..4bd6677579 100644 --- a/xuanxuan/module/group/ext/lang/zh-cn/xuanxuan.php +++ b/xuanxuan/module/group/ext/lang/zh-cn/xuanxuan.php @@ -3,11 +3,9 @@ $lang->resource->admin->xuanxuan = 'xuanxuan'; $lang->admin->methodOrder[26] = 'xuanxuan'; if(!isset($lang->resource->setting)) $lang->resource->setting = new stdclass(); -$lang->resource->setting->xuanxuan = 'xuanxuan'; -$lang->resource->setting->downloadxxd = 'downloadXXD'; +$lang->resource->setting->xuanxuan = 'xuanxuan'; $lang->setting->methodOrder[26] = 'xuanxuan'; -$lang->setting->methodOrder[31] = 'downloadxxd'; $lang->resource->im = new stdclass(); $lang->resource->im->getChatUsers = 'getChatUsers'; From 3bfa1df8469e190fe8d67e9f896b93846f0a374c Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 30 Jul 2021 10:48:14 +0800 Subject: [PATCH 31/35] * fix bug #13954. --- module/execution/control.php | 10 ++-------- module/execution/model.php | 2 +- module/productplan/model.php | 5 +---- module/project/control.php | 13 ++++--------- 4 files changed, 8 insertions(+), 22 deletions(-) diff --git a/module/execution/control.php b/module/execution/control.php index 5f50f66ce3..f54f68a9bc 100644 --- a/module/execution/control.php +++ b/module/execution/control.php @@ -1370,13 +1370,7 @@ class execution extends control if(!empty($_POST)) { - $oldPlans = $this->dao->select('plan')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($executionID)->andWhere('plan')->ne(0)->fetchPairs('plan'); - $oldPlanStories = $this->dao->select('t1.story')->from(TABLE_PROJECTSTORY)->alias('t1') - ->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.project=t2.project') - ->where('t1.project')->eq($executionID) - ->andWhere('t2.plan')->in(array_keys($oldPlans)) - ->fetchAll('story'); - + $oldPlans = $this->dao->select('plan')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($executionID)->andWhere('plan')->ne(0)->fetchPairs('plan'); $oldProducts = $this->execution->getProducts($executionID); $changes = $this->execution->update($executionID); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); @@ -1410,7 +1404,7 @@ class execution extends control if(!empty($newPlans) and !empty($diffResult)) { $projectID = $this->dao->select('project')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch('project'); - $this->loadModel('productplan')->linkProject($executionID, $_POST['plans'], $oldPlanStories); + $this->loadModel('productplan')->linkProject($executionID, $_POST['plans']); $this->productplan->linkProject($projectID, $_POST['plans']); } diff --git a/module/execution/model.php b/module/execution/model.php index fb82b0a869..b003735a46 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -2177,7 +2177,7 @@ class executionModel extends model $data->story = $storyID; $data->version = $versions[$storyID]; $data->order = ++$lastOrder; - $this->dao->insert(TABLE_PROJECTSTORY)->data($data)->exec(); + $this->dao->replace(TABLE_PROJECTSTORY)->data($data)->exec(); $this->story->setStage($storyID); $this->linkCases($executionID, (int)$products[$storyID], $storyID); diff --git a/module/productplan/model.php b/module/productplan/model.php index 3d78e0598a..d5a3e884b8 100644 --- a/module/productplan/model.php +++ b/module/productplan/model.php @@ -582,14 +582,11 @@ class productplanModel extends model * * @param int $projectID * @param array $newPlans - * @param array $oldPlanStories * @access public * @return void */ - public function linkProject($projectID, $newPlans, $oldPlanStories = '') + public function linkProject($projectID, $newPlans) { - if(!empty($oldPlanStories)) $this->dao->delete()->from(TABLE_PROJECTSTORY)->where('project')->eq($projectID)->andWhere('story')->in(array_keys($oldPlanStories))->exec(); - $this->loadModel('execution'); foreach($newPlans as $planID) { diff --git a/module/project/control.php b/module/project/control.php index 41d3b7d3ee..56042a9dd3 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -78,7 +78,7 @@ class project extends control $project->product = zget($projectLang->productList, $project->product); $project->budget = $project->budget . zget($projectLang->unitList, $project->budgetUnit); $project->parent = $project->parentName; - + $linkedProducts = $this->project->getProducts($project->id, false); $project->linkedProducts = implode(',', $linkedProducts); @@ -414,12 +414,7 @@ class project extends control if($_POST) { - $oldPlans = $this->dao->select('plan')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($projectID)->fetchPairs('plan'); - $oldPlanStories = $this->dao->select('t1.story')->from(TABLE_PROJECTSTORY)->alias('t1') - ->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.project=t2.project') - ->where('t1.project')->eq($projectID) - ->andWhere('t2.plan')->in(array_keys($oldPlans)) - ->fetchAll('story'); + $oldPlans = $this->dao->select('plan')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($projectID)->andWhere('plan')->ne(0)->fetchPairs('plan'); $changes = $this->project->update($projectID); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); @@ -434,7 +429,7 @@ class project extends control $diffResult = array_diff($oldPlans, $_POST['plans']); if(!empty($_POST['plans']) and !empty($diffResult)) { - $this->loadModel('productplan')->linkProject($projectID, $_POST['plans'], $oldPlanStories); + $this->loadModel('productplan')->linkProject($projectID, $_POST['plans']); } if(isonlybody()) return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent')); @@ -1618,7 +1613,7 @@ class project extends control $response = array(); $response['result'] = true; $response['message'] = $this->lang->project->changeProgramTip; - + /* Get new program products. */ $newProducts = $this->program->getProductPairs($programID, 'assign', 'noclosed'); $response['newProducts'] = html::select("newProducts", array('0' => '') + $newProducts, '', "class='form-control chosen' onchange='loadBranches(this)'"); From 08cea5a1119e88f47099ec5ea5903e15d53de172 Mon Sep 17 00:00:00 2001 From: zenggang Date: Fri, 30 Jul 2021 11:05:32 +0800 Subject: [PATCH 32/35] * Finish task #13100 --- lib/scm/gitlab.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/scm/gitlab.class.php b/lib/scm/gitlab.class.php index 82bf44ea1a..f5cda95f42 100644 --- a/lib/scm/gitlab.class.php +++ b/lib/scm/gitlab.class.php @@ -111,6 +111,7 @@ class gitlab if(!empty($commits)) { $commit = $commits[0]; + $file->revision = $commit->id; $file->committer = $commit->committer_name; $file->comment = $commit->message; $file->date = date('Y-m-d H:i:s', strtotime($commit->committed_date)); From 7f9e7623e15f6f7f04874a1d38b55d1873f773c6 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 2 Aug 2021 13:12:27 +0800 Subject: [PATCH 33/35] * add api in build. --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 86e59f379a..4e40ef2186 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ clean: rm -fr lampp common: mkdir zentaopms + cp -fr api zentaopms/ cp -fr bin zentaopms/ cp -fr config zentaopms/ && rm -fr zentaopms/config/my.php cp -fr db zentaopms/ From 0f231bbf80d239bb598a92af202e43aff2f5eb72 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 2 Aug 2021 13:47:28 +0800 Subject: [PATCH 34/35] * adjust for change subStatus when finish task by effort. --- module/common/model.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/module/common/model.php b/module/common/model.php index 525876f09e..7ba76c3968 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -1350,13 +1350,14 @@ EOD; /** * Create changes of one object. * - * @param mixed $old the old object - * @param mixed $new the new object + * @param mixed $old the old object + * @param mixed $new the new object + * @param string $moduleName * @static * @access public * @return array */ - public static function createChanges($old, $new) + public static function createChanges($old, $new, $moduleName = '') { global $app, $config; @@ -1373,7 +1374,7 @@ EOD; if($oldID && $oldStatus && $newStatus && !$newSubStatus && $oldStatus != $newStatus) { - $moduleName = $app->getModuleName(); + if(empty($moduleName)) $moduleName = $app->getModuleName(); $field = $app->dbh->query('SELECT options FROM ' . TABLE_WORKFLOWFIELD . " WHERE `module` = '$moduleName' AND `field` = 'subStatus'")->fetch(); if(!empty($field->options)) $field->options = json_decode($field->options, true); From 545d611d5619cb4c3647ef6c662c725f73b427a4 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 2 Aug 2021 14:31:59 +0800 Subject: [PATCH 35/35] - delete null row. --- module/repo/control.php | 1 - 1 file changed, 1 deletion(-) diff --git a/module/repo/control.php b/module/repo/control.php index 48b06b0b12..77df924bef 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -168,7 +168,6 @@ class repo extends control if($repo->SCM == 'Gitlab') { - $projects = $this->repo->getGitlabProjects($repo->client, $repo->password); $options = array(); foreach($projects as $project) $options[$project->id] = $project->name . ':' . $project->http_url_to_repo;
    todo->project;?>
    todo->product;?>