diff --git a/module/action/config.php b/module/action/config.php index 7de0ac30d4..460ad0a6f3 100755 --- a/module/action/config.php +++ b/module/action/config.php @@ -32,6 +32,7 @@ $config->action->objectNameFields['job'] = 'name'; $config->action->objectNameFields['team'] = 'name'; $config->action->objectNameFields['opportunity'] = 'name'; $config->action->objectNameFields['trainplan'] = 'name'; +$config->action->objectNameFields['gapanalysis'] = 'account'; $config->action->commonImgSize = 870; @@ -45,4 +46,4 @@ $config->action->majorList['program'] = array('opened', 'edited'); $config->action->majorList['project'] = array('opened', 'edited'); $config->action->majorList['execution'] = array('opened', 'edited'); -$config->action->needGetProjectType = 'build,task,bug,case,testcase,caselib,testtask,testsuite,testreport,doc,issue,release,risk,design,opportunity,trainplan'; +$config->action->needGetProjectType = 'build,task,bug,case,testcase,caselib,testtask,testsuite,testreport,doc,issue,release,risk,design,opportunity,trainplan,gapanalysis'; diff --git a/module/action/lang/de.php b/module/action/lang/de.php index c2559df442..f64cfcded0 100644 --- a/module/action/lang/de.php +++ b/module/action/lang/de.php @@ -101,6 +101,7 @@ $lang->action->objectTypes['team'] = 'Team'; $lang->action->objectTypes['whitelist'] = 'Whitelist'; $lang->action->objectTypes['opportunity'] = 'Opportunity'; $lang->action->objectTypes['trainplan'] = 'Trainplan'; +$lang->action->objectTypes['gapanalysis'] = 'Gap Analysis'; /* 用来描述操作历史记录。*/ $lang->action->desc = new stdclass(); @@ -485,6 +486,7 @@ $lang->action->label->design = 'Design|design|view|designID=%s'; $lang->action->label->stakeholder = 'Stakeholder|stakeholder|view|userID=%s'; $lang->action->label->opportunity = 'Opportunity|opportunity|view|opportunityID=%s'; $lang->action->label->trainplan = 'Trainplan|trainplan|view|trainplanID=%s'; +$lang->action->label->gapanalysis = 'Gap Analysis|gapanalysis|view|gapanalysisID=%s'; /* Object type. */ $lang->action->search = new stdclass(); diff --git a/module/action/lang/en.php b/module/action/lang/en.php index 4cf8e0ce83..22304e017c 100755 --- a/module/action/lang/en.php +++ b/module/action/lang/en.php @@ -105,6 +105,7 @@ $lang->action->objectTypes['team'] = 'Team'; $lang->action->objectTypes['whitelist'] = 'Whitelist'; $lang->action->objectTypes['opportunity'] = 'Opportunity'; $lang->action->objectTypes['trainplan'] = 'Trainplan'; +$lang->action->objectTypes['gapanalysis'] = 'Gap Analysis'; /* Used to describe operation history. */ $lang->action->desc = new stdclass(); @@ -488,6 +489,7 @@ $lang->action->label->design = 'Design|design|view|designID=%s'; $lang->action->label->stakeholder = 'Stakeholder|stakeholder|view|userID=%s'; $lang->action->label->opportunity = 'Opportunity|opportunity|view|opportunityID=%s'; $lang->action->label->trainplan = 'Trainplan|trainplan|view|trainplanID=%s'; +$lang->action->label->gapanalysis = 'Gap Analysis|gapanalysis|view|gapanalysisID=%s'; /* Object type. */ $lang->action->search = new stdclass(); diff --git a/module/action/lang/fr.php b/module/action/lang/fr.php index b011379d09..ede7c8810c 100644 --- a/module/action/lang/fr.php +++ b/module/action/lang/fr.php @@ -101,6 +101,7 @@ $lang->action->objectTypes['team'] = 'Team'; $lang->action->objectTypes['whitelist'] = 'Whitelist'; $lang->action->objectTypes['opportunity'] = 'Opportunity'; $lang->action->objectTypes['trainplan'] = 'Trainplan'; +$lang->action->objectTypes['gapanalysis'] = 'Gap Analysis'; /* 用来描述操作历史记录。*/ $lang->action->desc = new stdclass(); @@ -497,6 +498,7 @@ $lang->action->label->design = 'Design|design|view|designID=%s'; $lang->action->label->stakeholder = 'Stakeholder|stakeholder|view|userID=%s'; $lang->action->label->opportunity = 'Opportunity|opportunity|view|opportunityID=%s'; $lang->action->label->trainplan = 'Trainplan|trainplan|view|trainplanID=%s'; +$lang->action->label->gapanalysis = 'Gap Analysis|gapanalysis|view|gapanalysisID=%s'; /* Object type. */ $lang->action->search = new stdclass(); diff --git a/module/action/lang/vi.php b/module/action/lang/vi.php index 6aad37474a..e7a5138a63 100644 --- a/module/action/lang/vi.php +++ b/module/action/lang/vi.php @@ -101,6 +101,7 @@ $lang->action->objectTypes['team'] = 'Team'; $lang->action->objectTypes['whitelist'] = 'Whitelist'; $lang->action->objectTypes['opportunity'] = 'Opportunity'; $lang->action->objectTypes['trainplan'] = 'Trainplan'; +$lang->action->objectTypes['gapanalysis'] = 'Gap Analysis'; /* Used to describe operation history. */ $lang->action->desc = new stdclass(); @@ -485,6 +486,7 @@ $lang->action->label->design = 'Design|design|view|designID=%s'; $lang->action->label->stakeholder = 'Stakeholder|stakeholder|view|userID=%s'; $lang->action->label->opportunity = 'Opportunity|opportunity|view|opportunityID=%s'; $lang->action->label->trainplan = 'Trainplan|trainplan|view|trainplanID=%s'; +$lang->action->label->gapanalysis = 'Gap Analysis|gapanalysis|view|gapanalysisID=%s'; /* Object type. */ $lang->action->search = new stdclass(); diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index 4acbe0ba99..c0e235f942 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -105,6 +105,7 @@ $lang->action->objectTypes['team'] = '团队'; $lang->action->objectTypes['whitelist'] = '白名单'; $lang->action->objectTypes['opportunity'] = '机会'; $lang->action->objectTypes['trainplan'] = '培训计划'; +$lang->action->objectTypes['gapanalysis'] = '能力差距分析'; /* 用来描述操作历史记录。*/ $lang->action->desc = new stdclass(); @@ -488,6 +489,7 @@ $lang->action->label->design = '设计|design|view|designID=%s'; $lang->action->label->stakeholder = '干系人|stakeholder|view|userID=%s'; $lang->action->label->opportunity = '机会|opportunity|view|opportunityID=%s'; $lang->action->label->trainplan = '培训计划|trainplan|view|trainplanID=%s'; +$lang->action->label->gapanalysis = '能力差距分析|gapanalysis|view|gapanalysisID=%s'; /* Object type. */ $lang->action->search = new stdclass(); diff --git a/module/action/model.php b/module/action/model.php index 31c133fe1a..9b723b2009 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -203,7 +203,7 @@ class actionModel extends model } /* Only process these object types. */ - if(strpos(',story,productplan,release,task,build,bug,case,testtask,testreport,doc,doclib,issue,risk,opportunity,trainplan,team,', ",{$objectType},") !== false) + if(strpos(',story,productplan,release,task,build,bug,case,testtask,testreport,doc,doclib,issue,risk,opportunity,trainplan,gapanalysis,team,', ",{$objectType},") !== false) { if(!isset($this->config->objectTables[$objectType])) return $emptyRecord; diff --git a/module/block/control.php b/module/block/control.php index b1b5837792..304916c007 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -1094,7 +1094,7 @@ class block extends control } /* Get bugs. */ - $bugs = $this->dao->select("project, status, count(status) as totalBugs, count(status = 'active' or null) as activeBugs, count(resolvedDate like '{$yesterday}%' or null) as yesterdayResolved")->from(TABLE_BUG) + $bugs = $this->dao->select("project, count(status) as totalBugs, count(status = 'active' or null) as activeBugs, count(resolvedDate like '{$yesterday}%' or null) as yesterdayResolved")->from(TABLE_BUG) ->where('project')->in($executionIdList) ->andWhere('deleted')->eq(0) ->groupBy('project') diff --git a/module/common/model.php b/module/common/model.php index 6ed4c2a3d8..8830bfa81a 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -1408,7 +1408,7 @@ EOD; $diff = ''; if(substr_count($value, "\n") > 1 or substr_count($old->$key, "\n") > 1 or - strpos('name,title,desc,spec,steps,content,digest,verify,report', strtolower($key)) !== false) + strpos('name,title,desc,spec,steps,content,digest,verify,report,analysis,prevention,resolution', strtolower($key)) !== false) { $diff = commonModel::diff($old->$key, $value); } diff --git a/module/project/model.php b/module/project/model.php index 8c36a86886..9fac539104 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1476,6 +1476,31 @@ class projectModel extends model ->fetchAll('account'); } + /** + * Get team member pairs by projectID. + * + * @param int $projectID + * @access public + * @return array + */ + public function getTeamMemberPairs($projectID) + { + if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getTeamMembers(); + + $project = $this->getByID($projectID); + $type = $this->config->systemMode == 'new' ? $project->type : 'project'; + if(empty($project)) return array(); + + $members = $this->dao->select("t1.account, if(t2.deleted='0', t2.realname, t1.account) as realname")->from(TABLE_TEAM)->alias('t1') + ->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account') + ->where('t1.root')->eq((int)$projectID) + ->andWhere('t1.type')->eq($type) + ->andWhere('t2.deleted')->eq('0') + ->fetchPairs('account', 'realname'); + + return array('' => '') + $members; + } + /** * Get project stats. * diff --git a/module/story/js/create.js b/module/story/js/create.js index e02e864943..761ef291f8 100644 --- a/module/story/js/create.js +++ b/module/story/js/create.js @@ -3,6 +3,15 @@ $(function() $('#needNotReview').on('change', function() { $('#reviewer').attr('disabled', $(this).is(':checked') ? 'disabled' : null).trigger('chosen:updated'); + if($(this).is(':checked')) + { + $('#reviewerTd').removeClass('required'); + } + else + { + $('#reviewerTd').addClass('required'); + } + getStatus('create', "product=" + $('#product').val() + ",execution=" + executionID + ",needNotReview=" + ($(this).prop('checked') ? 1 : 0)); }); $('#needNotReview').change(); diff --git a/module/story/view/create.html.php b/module/story/view/create.html.php index 406f7b12ff..bd288c529a 100644 --- a/module/story/view/create.html.php +++ b/module/story/view/create.html.php @@ -101,7 +101,7 @@ story->reviewedBy;?> - > + id='reviewerTd'>
PO : '', "class='form-control chosen' multiple");?> diff --git a/module/todo/control.php b/module/todo/control.php index 1d3808939d..7a06a3674b 100644 --- a/module/todo/control.php +++ b/module/todo/control.php @@ -377,7 +377,8 @@ class todo extends control $this->loadModel('user'); - $projects = $this->loadModel('project')->getPairsByModel('all'); + $model = $todo->type == 'opportunity' ? 'waterfall' : 'all'; + $projects = $this->loadModel('project')->getPairsByModel($model); if(!isset($this->session->project)) $this->session->set('project', key($projects)); $this->view->title = $this->app->user->account == $todo->account ? "{$this->lang->todo->common} #$todo->id $todo->name" : $this->lang->todo->common ;