From 5eaa7bc277fe835761b59757a7277e56dc4d0cc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B9=BF=E6=98=8E?= Date: Wed, 8 Sep 2021 16:06:11 +0800 Subject: [PATCH 01/46] * Fix details. --- module/personnel/model.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/module/personnel/model.php b/module/personnel/model.php index a97a3a69bc..6fc1f3ddc1 100644 --- a/module/personnel/model.php +++ b/module/personnel/model.php @@ -87,7 +87,9 @@ class personnelModel extends model { foreach($userGroups[$account] as $groupID => $userGroup) { - $group = $groupInfo[$groupID]; + $group = isset($groupInfo[$groupID]) ? $groupInfo[$groupID] : ''; + if(!$group) continue; + if(!isset($group->programs)) { $programRight = true; From ccdfd0e09b7d1e3c0734ba4e32bdf8c7c9b8fd17 Mon Sep 17 00:00:00 2001 From: hufangzhou Date: Wed, 8 Sep 2021 16:08:34 +0800 Subject: [PATCH 02/46] * Fix bug #15000. --- module/story/control.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/story/control.php b/module/story/control.php index 5d0bae9360..00b0b366e6 100644 --- a/module/story/control.php +++ b/module/story/control.php @@ -48,7 +48,7 @@ class story extends control */ public function create($productID = 0, $branch = 0, $moduleID = 0, $storyID = 0, $objectID = 0, $bugID = 0, $planID = 0, $todoID = 0, $extra = '', $type = 'story') { - if($productID == 0) $this->locate($this->createLink('product', 'create')); + if($productID == 0 and $objectID == 0) $this->locate($this->createLink('product', 'create')); $this->story->replaceURLang($type); if($this->app->tab == 'product') From a83705f159982262bcc7dd12688c364203cbc6d4 Mon Sep 17 00:00:00 2001 From: Hao Sun Date: Wed, 8 Sep 2021 16:09:40 +0800 Subject: [PATCH 03/46] * fix show empty execution item in program kanban. --- module/program/js/kanban.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/program/js/kanban.js b/module/program/js/kanban.js index adf0bfa103..b63c42dede 100644 --- a/module/program/js/kanban.js +++ b/module/program/js/kanban.js @@ -67,7 +67,7 @@ function processKanbanData(key, programsData) $.each(doingProjects, function(_, project) { var projectID = project.id; - var projectItem = $.extend({}, project, {id: 'project-' + projectID, _id: projectID}); + var projectItem = $.extend({}, project, {id: 'project-' + projectID, _id: projectID, execution: null}); items.doingProject.push(projectItem); var execution = project.execution; From 4ba2c2d7f81a9d41ab1ccbb5ffda3af99e3de05b Mon Sep 17 00:00:00 2001 From: tianshujie Date: Wed, 8 Sep 2021 16:18:20 +0800 Subject: [PATCH 04/46] * Fix bug #15060. --- module/task/model.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/task/model.php b/module/task/model.php index 05c8928de7..0d4f6a220e 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -1423,7 +1423,7 @@ class taskModel extends model /* Record consumed and left. */ $estimate = new stdclass(); - $estimate->date = zget($task, 'realStarted', $now); + $estimate->date = helper::isZeroDate($task->realStarted) ? helper::today() : substr($task->realStarted, 0, 10); $estimate->task = $taskID; $estimate->consumed = zget($_POST, 'consumed', 0); $estimate->left = zget($_POST, 'left', 0); @@ -1681,7 +1681,7 @@ class taskModel extends model } $estimate = new stdclass(); - $estimate->date = zget($_POST, 'finishedDate', date(DT_DATE1)); + $estimate->date = helper::isZeroDate($task->finishedDate) ? helper::today() : substr($task->finishedDate, 0, 10); $estimate->task = $taskID; $estimate->left = 0; $estimate->work = zget($task, 'work', ''); From 870c3be96ea603f5f09d5293fc53010bce930b0e Mon Sep 17 00:00:00 2001 From: dingguodong Date: Wed, 8 Sep 2021 16:24:11 +0800 Subject: [PATCH 05/46] * Add lang for GitLab in MR creation. --- module/mr/lang/en.php | 1 + module/mr/lang/zh-cn.php | 1 + 2 files changed, 2 insertions(+) diff --git a/module/mr/lang/en.php b/module/mr/lang/en.php index b45a6dba32..bd971bb2ca 100644 --- a/module/mr/lang/en.php +++ b/module/mr/lang/en.php @@ -23,6 +23,7 @@ $lang->mr->reviewer = 'Reviewer'; $lang->mr->mergeStatus = 'Merge status'; $lang->mr->commits = 'commits'; $lang->mr->changes = 'changes'; +$lang->mr->gitlabID = 'GitLab'; $lang->mr->statusList = array(); $lang->mr->statusList['opened'] = 'opened'; diff --git a/module/mr/lang/zh-cn.php b/module/mr/lang/zh-cn.php index 49f3219081..d8f2992dec 100644 --- a/module/mr/lang/zh-cn.php +++ b/module/mr/lang/zh-cn.php @@ -23,6 +23,7 @@ $lang->mr->reviewer = '评审人'; $lang->mr->mergeStatus = '是否可合并'; $lang->mr->commits = '提交数'; $lang->mr->changes = '更改数'; +$lang->mr->gitlabID = 'GitLab'; $lang->mr->statusList = array(); $lang->mr->statusList['opened'] = '开放中'; From 47b838ddb5af10cc13cdd10c0f8df02de2108a3f Mon Sep 17 00:00:00 2001 From: dingguodong Date: Wed, 8 Sep 2021 16:33:05 +0800 Subject: [PATCH 06/46] * Merge code from ext to this branch for API(JIHU). --- module/action/lang/en.php | 96 ++++++++++++++++++++++++++++++++++++ module/action/lang/zh-cn.php | 96 ++++++++++++++++++++++++++++++++++++ module/action/model.php | 39 +++++++++++++++ 3 files changed, 231 insertions(+) diff --git a/module/action/lang/en.php b/module/action/lang/en.php index b3270ff3bf..3752cec2db 100755 --- a/module/action/lang/en.php +++ b/module/action/lang/en.php @@ -566,3 +566,99 @@ $lang->action->search->label['paused'] = $lang->action->label->pa $lang->action->search->label['verified'] = $lang->action->label->verified; $lang->action->search->label['login'] = $lang->action->label->login; $lang->action->search->label['logout'] = $lang->action->label->logout; + +/* Action language config for API(JIHU) */ +$lang->action->apiTitle = new stdclass(); +$lang->action->apiTitle->opened = 'Opened.'; +$lang->action->apiTitle->created = 'Created.'; +$lang->action->apiTitle->added = 'Added.'; +$lang->action->apiTitle->changed = 'Changed.'; +$lang->action->apiTitle->edited = 'Edited.'; +$lang->action->apiTitle->assigned = 'Assigned to %s.'; +$lang->action->apiTitle->closed = 'Closed.'; +$lang->action->apiTitle->deleted = 'Deleted.'; +$lang->action->apiTitle->deletedfile = 'Deleted: %s.'; +$lang->action->apiTitle->editfile = 'Edited: %s.'; +$lang->action->apiTitle->erased = 'Erased.'; +$lang->action->apiTitle->undeleted = 'Restored.'; +$lang->action->apiTitle->hidden = 'Hidden.'; +$lang->action->apiTitle->commented = 'Commented'; +$lang->action->apiTitle->activated = 'Activated.'; +$lang->action->apiTitle->confirmed = 'Confirmed.'; +$lang->action->apiTitle->caseconfirmed = '$actor confirmed the case change. The latest build is #$extra'; +$lang->action->apiTitle->bugconfirmed = '$actor confirmed Bug.'; +$lang->action->apiTitle->frombug = 'Converted from $actor. Its ID was $extra.'; +$lang->action->apiTitle->started = 'Started by $actor.'; +$lang->action->apiTitle->restarted = 'Continued by $actor.'; +$lang->action->apiTitle->delayed = 'Postponed by $actor.'; +$lang->action->apiTitle->suspended = 'Suspended by $actor.'; +$lang->action->apiTitle->recordestimate = 'Recorded by $actor and it cost $extra hours.'; +$lang->action->apiTitle->editestimate = '$actor edited Hour.'; +$lang->action->apiTitle->deleteestimate = '$actor deleted Hour.'; +$lang->action->apiTitle->canceled = 'Cancelled by $actor.'; +$lang->action->apiTitle->svncommited = '$actor committed and the build is #$extra.'; +$lang->action->apiTitle->gitcommited = '$actor committed and the build is #$extra.'; +$lang->action->apiTitle->finished = 'Finished by $actor.'; +$lang->action->apiTitle->paused = 'Paused by $actor.'; +$lang->action->apiTitle->linked2bug = 'Linked to $extra by $actor'; +$lang->action->apiTitle->linked2testtask = 'Linked to $extra by $actor'; +$lang->action->apiTitle->resolved = 'Resolved by $actor '; +$lang->action->apiTitle->managed = 'By $actor managed.'; +$lang->action->apiTitle->estimated = 'By $actor estimated.'; +$lang->action->apiTitle->run = 'By $actor executed.'; +$lang->action->apiTitle->tostory = "To story: {$lang->SRCommon}"; +$lang->action->apiTitle->createchildren = 'Create children %s.'; +$lang->action->apiTitle->linkchildtask = 'Link a child task %s.'; +$lang->action->apiTitle->unlinkchildrentask = 'Unlink a child task %s.'; +$lang->action->apiTitle->linkparenttask = 'Link a parent task %s.'; +$lang->action->apiTitle->unlinkparenttask = 'Unlink a parent task %s.'; +$lang->action->apiTitle->deletechildrentask = 'Delete a child task%s.'; +$lang->action->apiTitle->createchildrenstory = 'Create a child story %s.'; +$lang->action->apiTitle->linkchildstory = 'Link a child story %s.'; +$lang->action->apiTitle->unlinkchildrenstory = 'Unlink a child story %s.'; +$lang->action->apiTitle->linkparentstory = 'Link parent story %s.'; +$lang->action->apiTitle->unlinkparentstory = 'Unlink parent story from %s.'; +$lang->action->apiTitle->deletechildrenstory = 'Deleted a child story %s.'; +$lang->action->apiTitle->linkrelatedcase = 'Link related case %s.'; +$lang->action->apiTitle->unlinkrelatedcase = 'Unlink related case %s.'; +$lang->action->apiTitle->openedbysystem = 'Opened by system'; +$lang->action->apiTitle->closedbysystem = 'Closed by system'; +$lang->action->apiTitle->communicated = 'Communicated'; +$lang->action->apiTitle->blocked = 'Blocked'; +$lang->action->apiTitle->reviewed = 'Reviewed'; +$lang->action->apiTitle->recalled = 'Recalled'; +$lang->action->apiTitle->moved = 'Moved'; +$lang->action->apiTitle->fromlib = 'Import from lib'; +$lang->action->apiTitle->totask = 'To task'; +$lang->action->apiTitle->linked2plan = "Link to plan"; +$lang->action->apiTitle->unlinkedfromplan = "Unlinked from plan"; +$lang->action->apiTitle->changestatus = 'Changed status'; +$lang->action->apiTitle->marked = 'Marked'; +$lang->action->apiTitle->linked2execution = "Linked to {$lang->executionCommon}"; +$lang->action->apiTitle->unlinkedfromexecution = "Unlinked from {$lang->executionCommon}"; +$lang->action->apiTitle->linked2project = "Linked to project"; +$lang->action->apiTitle->unlinkedfromproject = "Unlinked from project"; +$lang->action->apiTitle->unlinkedfrombuild = "Unlinked from build"; +$lang->action->apiTitle->linked2release = "Linked to release"; +$lang->action->apiTitle->unlinkedfromrelease = "Unlinked from release"; +$lang->action->apiTitle->linkrelatedbug = "Linked related Bug"; +$lang->action->apiTitle->unlinkrelatedbug = "Unlinked related Bug"; +$lang->action->apiTitle->linkrelatedstory = "Link related story {$lang->SRCommon}"; +$lang->action->apiTitle->unlinkrelatedstory = "Unlink related story {$lang->SRCommon}"; +$lang->action->apiTitle->subdividestory = "Subdivided story: {$lang->SRCommon}"; +$lang->action->apiTitle->unlinkchildstory = "Unlink child story: {$lang->SRCommon}"; +$lang->action->apiTitle->verified = 'Verified'; +$lang->action->apiTitle->login = 'Login'; +$lang->action->apiTitle->logout = "Logout"; +$lang->action->apiTitle->linked2build = "Linked to build"; +$lang->action->apiTitle->unlinkedfromtesttask = "Unlinked from test task"; +$lang->action->apiTitle->batchcreate = "Batch create"; +$lang->action->apiTitle->managedteam = "Managed team"; +$lang->action->apiTitle->managedwhitelist = "Managed white list"; +$lang->action->apiTitle->tracked = 'Tracked'; +$lang->action->apiTitle->hangup = 'Hangup'; +$lang->action->apiTitle->reviewpassed = 'Review passed'; +$lang->action->apiTitle->reviewrejected = 'Review rejected'; +$lang->action->apiTitle->reviewclarified = 'Review clarified'; +$lang->action->apiTitle->commitsummary = 'Commit summary'; +$lang->action->apiTitle->updatetrainee = 'Update trainee'; diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index 92d862a010..e08238ef27 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -566,3 +566,99 @@ $lang->action->search->label['paused'] = $lang->action->label->pa $lang->action->search->label['verified'] = $lang->action->label->verified; $lang->action->search->label['login'] = $lang->action->label->login; $lang->action->search->label['logout'] = $lang->action->label->logout; + +/* Action language config for API(JIHU) */ +$lang->action->apiTitle = new stdclass(); +$lang->action->apiTitle->opened = '首次创建。'; +$lang->action->apiTitle->created = '首次创建。'; +$lang->action->apiTitle->added = '添加成功。'; +$lang->action->apiTitle->changed = '进行了需求变更。'; +$lang->action->apiTitle->edited = '编辑操作。'; +$lang->action->apiTitle->assigned = '指派给 %s。'; +$lang->action->apiTitle->closed = '执行了关闭操作。'; +$lang->action->apiTitle->deleted = '执行删除操作。'; +$lang->action->apiTitle->deletedfile = '删除了附件:%s。'; +$lang->action->apiTitle->editfile = '编辑了附件:%s。'; +$lang->action->apiTitle->erased = '执行了删除操作。'; +$lang->action->apiTitle->undeleted = '执行还原操作。'; +$lang->action->apiTitle->hidden = '进行隐藏操作。'; +$lang->action->apiTitle->commented = '添加了备注'; +$lang->action->apiTitle->activated = '执行激活操作。'; +$lang->action->apiTitle->confirmed = '确认' . $lang->SRCommon . '变动,最新版本为#%s。'; +$lang->action->apiTitle->caseconfirmed = '确认用例变动,最新版本为#%s。'; +$lang->action->apiTitle->bugconfirmed = '确认了Bug。'; +$lang->action->apiTitle->frombug = 'Bug转化而来,Bug编号为 %s。'; +$lang->action->apiTitle->started = '启动。'; +$lang->action->apiTitle->restarted = '继续。'; +$lang->action->apiTitle->delayed = '执行了延期操作。'; +$lang->action->apiTitle->suspended = '挂起。'; +$lang->action->apiTitle->recordestimate = '记录工时,消耗 %s 小时。'; +$lang->action->apiTitle->editestimate = '编辑了工时。'; +$lang->action->apiTitle->deleteestimate = '删除工时。'; +$lang->action->apiTitle->canceled = '执行取消操作。'; +$lang->action->apiTitle->svncommited = '提交代码,版本为#%s。'; +$lang->action->apiTitle->gitcommited = '提交代码,版本为#%s。'; +$lang->action->apiTitle->finished = '完成。'; +$lang->action->apiTitle->paused = '暂停。'; +$lang->action->apiTitle->linked2bug = '关联到版本 %s'; +$lang->action->apiTitle->linked2testtask = '关联到测试单 %s'; +$lang->action->apiTitle->resolved = '解决。'; +$lang->action->apiTitle->managed = '维护。'; +$lang->action->apiTitle->estimated = '估算。'; +$lang->action->apiTitle->run = '执行。'; +$lang->action->apiTitle->tostory = "转{$lang->SRCommon}"; +$lang->action->apiTitle->createchildren = '创建子任务 %s。'; +$lang->action->apiTitle->linkchildtask = '关联子任务 %s。'; +$lang->action->apiTitle->unlinkchildrentask = '移除子任务 %s。'; +$lang->action->apiTitle->linkparenttask = '关联到父任务 %s。'; +$lang->action->apiTitle->unlinkparenttask = '从父任务%s取消关联。'; +$lang->action->apiTitle->deletechildrentask = '删除子任务%s。'; +$lang->action->apiTitle->createchildrenstory = '创建子需求 %s。'; +$lang->action->apiTitle->linkchildstory = '关联子需求 %s。'; +$lang->action->apiTitle->unlinkchildrenstory = '移除子需求 %s。'; +$lang->action->apiTitle->linkparentstory = '关联到父需求 %s。'; +$lang->action->apiTitle->unlinkparentstory = '从父需求%s取消关联。'; +$lang->action->apiTitle->deletechildrenstory = '删除子需求%s。'; +$lang->action->apiTitle->linkrelatedcase = '关联相关用例 %s。'; +$lang->action->apiTitle->unlinkrelatedcase = '移除相关用例 %s。'; +$lang->action->apiTitle->openedbysystem = '系统创建'; +$lang->action->apiTitle->closedbysystem = '系统关闭'; +$lang->action->apiTitle->communicated = '沟通'; +$lang->action->apiTitle->blocked = '阻塞'; +$lang->action->apiTitle->reviewed = '评审'; +$lang->action->apiTitle->recalled = '撤销评审'; +$lang->action->apiTitle->moved = '移动'; +$lang->action->apiTitle->fromlib = '从用例库导入'; +$lang->action->apiTitle->totask = '转任务'; +$lang->action->apiTitle->linked2plan = "关联计划"; +$lang->action->apiTitle->unlinkedfromplan = "移除计划"; +$lang->action->apiTitle->changestatus = '修改状态'; +$lang->action->apiTitle->marked = '编辑'; +$lang->action->apiTitle->linked2execution = "关联{$lang->executionCommon}"; +$lang->action->apiTitle->unlinkedfromexecution = "移除{$lang->executionCommon}"; +$lang->action->apiTitle->linked2project = "关联项目"; +$lang->action->apiTitle->unlinkedfromproject = "移除项目"; +$lang->action->apiTitle->unlinkedfrombuild = "移除版本"; +$lang->action->apiTitle->linked2release = "关联发布"; +$lang->action->apiTitle->unlinkedfromrelease = "移除发布"; +$lang->action->apiTitle->linkrelatedbug = "关联了相关Bug"; +$lang->action->apiTitle->unlinkrelatedbug = "移除了相关Bug"; +$lang->action->apiTitle->linkrelatedstory = "关联了相关{$lang->SRCommon}"; +$lang->action->apiTitle->unlinkrelatedstory = "移除了相关{$lang->SRCommon}"; +$lang->action->apiTitle->subdividestory = "细分了{$lang->SRCommon}"; +$lang->action->apiTitle->unlinkchildstory = "移除了细分{$lang->SRCommon}"; +$lang->action->apiTitle->verified = '验收'; +$lang->action->apiTitle->login = '登录系统'; +$lang->action->apiTitle->logout = "退出登录"; +$lang->action->apiTitle->linked2build = "关联"; +$lang->action->apiTitle->unlinkedfromtesttask = "移除"; +$lang->action->apiTitle->batchcreate = "批量创建任务"; +$lang->action->apiTitle->managedteam = "维护"; +$lang->action->apiTitle->managedwhitelist = "维护"; +$lang->action->apiTitle->tracked = '跟踪'; +$lang->action->apiTitle->hangup = '挂起'; +$lang->action->apiTitle->reviewpassed = '确认通过'; +$lang->action->apiTitle->reviewrejected = '拒绝'; +$lang->action->apiTitle->reviewclarified = '有待明确'; +$lang->action->apiTitle->commitsummary = '提交培训总结'; +$lang->action->apiTitle->updatetrainee = '更新培训人员'; diff --git a/module/action/model.php b/module/action/model.php index 8b2ebe5258..c55cf1eb02 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -1511,4 +1511,43 @@ class actionModel extends model $this->search->saveIndex($objectType, $data); } + + /** + * Print actions of an object for API(JIHU). + * + * @param array $action + * @access public + * @return void + */ + public function printActionAPI($action) + { + if(!isset($action->objectType) or !isset($action->action)) return false; + + $objectType = $action->objectType; + $actionType = strtolower($action->action); + + if(isset($this->lang->action->apiTitle->$actionType) and isset($action->extra)) + { + /* If extra column is a username, then assemble link to that. */ + if($action->action == "assigned") + { + $userDetails = $this->loadModel('user')->getUserDetailsForAPI($action->extra); + if(isset($userDetails[$action->extra])) + { + $userDetail = $userDetails[$action->extra]; + $action->extra = "{$action->extra}"; + } + } + + echo sprintf($this->lang->action->apiTitle->$actionType, $action->extra); + } + elseif(isset($this->lang->action->apiTitle->$actionType) and !isset($action->extra)) + { + echo $this->lang->action->apiTitle->$actionType; + } + else + { + echo $actionType; + } + } } From 6ad4f813c48388565252856479c215e49fe9ca60 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Wed, 8 Sep 2021 16:43:25 +0800 Subject: [PATCH 07/46] * Fix bug #14711. --- module/group/control.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/module/group/control.php b/module/group/control.php index 68de141498..f303b89e2e 100644 --- a/module/group/control.php +++ b/module/group/control.php @@ -159,6 +159,8 @@ class group extends control foreach($this->lang->navGroup as $moduleName => $groupName) { if($groupName == $moduleName) continue; + if($moduleName == 'testcase') $moduleName = 'case'; + $navGroup[$groupName][$moduleName] = $moduleName; } $this->view->navGroup = $navGroup; From 270e485602debfc0d905f96ed768845c3daf4e65 Mon Sep 17 00:00:00 2001 From: hufangzhou Date: Wed, 8 Sep 2021 16:43:56 +0800 Subject: [PATCH 08/46] * Fix bug #14946. --- module/execution/view/ajaxgetdropmenu.html.php | 2 +- module/product/model.php | 2 +- module/product/view/ajaxgetdropmenu.html.php | 2 +- module/program/model.php | 2 +- module/program/view/ajaxgetdropmenu.html.php | 2 ++ module/project/view/ajaxgetdropmenu.html.php | 2 +- 6 files changed, 7 insertions(+), 5 deletions(-) diff --git a/module/execution/view/ajaxgetdropmenu.html.php b/module/execution/view/ajaxgetdropmenu.html.php index 7ae7f3bf3a..e5ac0900c0 100644 --- a/module/execution/view/ajaxgetdropmenu.html.php +++ b/module/execution/view/ajaxgetdropmenu.html.php @@ -91,7 +91,7 @@ foreach($executions as $projectID => $projectExecutions) } else if($execution->status == 'done' or $execution->status == 'closed') { - $closedExecutionsHtml .= '
  • ' . html::a(sprintf($link, $execution->id), $execution->name, '', "class='$selected' title='$execution->name' data-key='" . zget($executionsPinYin, $execution->name, '') . "' data-app='{$this->app->tab}'") . '
  • '; + $closedExecutionsHtml .= '
  • ' . html::a(sprintf($link, $execution->id), $execution->name, '', "class='$selected executionName' title='$execution->name' data-key='" . zget($executionsPinYin, $execution->name, '') . "' data-app='{$this->app->tab}'") . '
  • '; if($selected == 'selected') $tabActive = 'closed'; } diff --git a/module/product/model.php b/module/product/model.php index 54d363dcd5..2ba76b1433 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -1555,7 +1555,7 @@ class productModel extends model ->fetchGroup('product', 'id'); $executionListKey = $this->config->systemMode == 'new' ? 'project' : 'productID'; - $executionList = $this->dao->select('t1.product as productID,t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1') + $executionList = $this->dao->select('t1.product as productID,t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1') ->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.project=t2.id') ->where('type')->in('stage,sprint') ->beginIF($this->config->systemMode == 'new')->andWhere('t2.project')->in(array_keys($projectList))->fi() diff --git a/module/product/view/ajaxgetdropmenu.html.php b/module/product/view/ajaxgetdropmenu.html.php index 8d1560446a..67954d3a17 100644 --- a/module/product/view/ajaxgetdropmenu.html.php +++ b/module/product/view/ajaxgetdropmenu.html.php @@ -95,7 +95,7 @@ foreach($products as $programID => $programProducts) } else if($product->status == 'closed') { - $closedProductsHtml .= '
  • ' . html::a($linkHtml, $productName, '', "class='$selected' title='$productName' class='closed' data-key='" . zget($productsPinYin, $product->name, '') . "' data-app='$app->tab'") . '
  • '; + $closedProductsHtml .= '
  • ' . html::a($linkHtml, $productName, '', "class='$selected productName' title='$productName' class='closed' data-key='" . zget($productsPinYin, $product->name, '') . "' data-app='$app->tab'") . '
  • '; if($selected == 'selected') $tabActive = 'closed'; } diff --git a/module/program/model.php b/module/program/model.php index 8c4b96809b..ac484166a2 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -819,7 +819,7 @@ class programModel extends model while($program = $stmt->fetch()) { $link = $this->getLink($moduleName, $methodName, $program->id, $vars, $from); - $linkHtml = html::a($link, $program->name, '', "id='program$program->id' class='text-ellipsis' title=$program->name"); + $linkHtml = html::a($link, $program->name, '', "id='program$program->id' class='text-ellipsis programName' title=$program->name"); if(isset($programMenu[$program->id]) and !empty($programMenu[$program->id])) { diff --git a/module/program/view/ajaxgetdropmenu.html.php b/module/program/view/ajaxgetdropmenu.html.php index 38da2a55c0..47a7cf7534 100644 --- a/module/program/view/ajaxgetdropmenu.html.php +++ b/module/program/view/ajaxgetdropmenu.html.php @@ -54,6 +54,8 @@ $programsPinYin = common::convert2Pinyin($programNames); #programTree ul > li.has-list:after {width: 14px;} #programTree ul > li.item-meas a.selected{color: #0c64eb;} #showClosed1 + label{color: #3c4353} + +a.programName:focus, a.programName:hover {background: #0c64eb; color: #fff !important;}