Merge branch 'sprint/zentaopms240' of https://gitlab.zcorp.cc/easycorp/zentaopms into sprint/zentaopms240_lanzongjun
This commit is contained in:
@@ -223,6 +223,7 @@ $lang->action->desc->reopen = '$date, reopened by <strong>$actor</
|
||||
$lang->action->desc->merged = '$date, merged by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->submitreview = '$date, submitted for review by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->ganttmove = '$date, sort by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->switchtolean = '$date, Switch from new mode to lean mode by <strong>'. $lang->admin->system .'</strong>.' . "\n";
|
||||
|
||||
/* Used to describe the history of operations related to parent-child tasks. */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
|
||||
@@ -390,6 +391,7 @@ $lang->action->label->tolib = 'imported';
|
||||
$lang->action->label->updatetolib = 'updated';
|
||||
$lang->action->label->ganttmove = 'sorted';
|
||||
$lang->action->label->submitreview = 'submitted';
|
||||
$lang->action->label->switchtolean = 'switch from new mode to lean mode';
|
||||
|
||||
/* Dynamic information is grouped by object. */
|
||||
$lang->action->dynamicAction = new stdclass;
|
||||
@@ -409,12 +411,13 @@ $lang->action->dynamicAction->program['activated'] = 'Activate Program';
|
||||
$lang->action->dynamicAction->program['deleted'] = 'Delete Program';
|
||||
$lang->action->dynamicAction->program['closed'] = 'Close Program';
|
||||
|
||||
$lang->action->dynamicAction->project['opened'] = 'Create Project';
|
||||
$lang->action->dynamicAction->project['edited'] = 'Edit Project';
|
||||
$lang->action->dynamicAction->project['started'] = 'Start Project';
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspend Project';
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activate Project';
|
||||
$lang->action->dynamicAction->project['closed'] = 'Close Project';
|
||||
$lang->action->dynamicAction->project['opened'] = 'Create Project';
|
||||
$lang->action->dynamicAction->project['edited'] = 'Edit Project';
|
||||
$lang->action->dynamicAction->project['started'] = 'Start Project';
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspend Project';
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activate Project';
|
||||
$lang->action->dynamicAction->project['closed'] = 'Close Project';
|
||||
$lang->action->dynamicAction->project['switchtolean'] = 'Switch Mode';
|
||||
|
||||
$lang->action->dynamicAction->product['opened'] = 'Create ' . $lang->productCommon;
|
||||
$lang->action->dynamicAction->product['edited'] = 'Edit ' . $lang->productCommon;
|
||||
|
||||
@@ -223,6 +223,7 @@ $lang->action->desc->reopen = '$date, reopened by <strong>$actor</
|
||||
$lang->action->desc->merged = '$date, merged by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->submitreview = '$date, submitted for review by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->ganttmove = '$date, sort by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->switchtolean = '$date, Switch from new mode to lean mode by <strong>'. $lang->admin->system .'</strong>.' . "\n";
|
||||
|
||||
/* Used to describe the history of operations related to parent-child tasks. */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
|
||||
@@ -390,6 +391,7 @@ $lang->action->label->tolib = 'imported';
|
||||
$lang->action->label->updatetolib = 'updated';
|
||||
$lang->action->label->ganttmove = 'sorted';
|
||||
$lang->action->label->submitreview = 'submitted';
|
||||
$lang->action->label->switchtolean = 'switch from new mode to lean mode';
|
||||
|
||||
/* Dynamic information is grouped by object. */
|
||||
$lang->action->dynamicAction = new stdclass;
|
||||
@@ -409,12 +411,13 @@ $lang->action->dynamicAction->program['activated'] = 'Activate Program';
|
||||
$lang->action->dynamicAction->program['deleted'] = 'Delete Program';
|
||||
$lang->action->dynamicAction->program['closed'] = 'Close Program';
|
||||
|
||||
$lang->action->dynamicAction->project['opened'] = 'Create Project';
|
||||
$lang->action->dynamicAction->project['edited'] = 'Edit Project';
|
||||
$lang->action->dynamicAction->project['started'] = 'Start Project';
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspend Project';
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activate Project';
|
||||
$lang->action->dynamicAction->project['closed'] = 'Close Project';
|
||||
$lang->action->dynamicAction->project['opened'] = 'Create Project';
|
||||
$lang->action->dynamicAction->project['edited'] = 'Edit Project';
|
||||
$lang->action->dynamicAction->project['started'] = 'Start Project';
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspend Project';
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activate Project';
|
||||
$lang->action->dynamicAction->project['closed'] = 'Close Project';
|
||||
$lang->action->dynamicAction->project['switchtolean'] = 'Switch Mode';
|
||||
|
||||
$lang->action->dynamicAction->product['opened'] = 'Create ' . $lang->productCommon;
|
||||
$lang->action->dynamicAction->product['edited'] = 'Edit ' . $lang->productCommon;
|
||||
|
||||
@@ -223,6 +223,7 @@ $lang->action->desc->reopen = '$date, reopened by <strong>$actor</
|
||||
$lang->action->desc->merged = '$date, merged by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->submitreview = '$date, submitted for review by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->ganttmove = '$date, sort by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->switchtolean = '$date, Switch from new mode to lean mode by <strong>'. $lang->admin->system .'</strong>.' . "\n";
|
||||
|
||||
/* Used to describe the history of operations related to parent-child tasks. */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> a créé un sous-tâche <strong>$extra</strong>。' . "\n";
|
||||
@@ -390,6 +391,7 @@ $lang->action->label->tolib = 'Importé';
|
||||
$lang->action->label->updatetolib = 'MàJ';
|
||||
$lang->action->label->ganttmove = 'sorted';
|
||||
$lang->action->label->submitreview = 'submitted';
|
||||
$lang->action->label->switchtolean = 'switch from new mode to lean mode';
|
||||
|
||||
/* Dynamic information is grouped by object. */
|
||||
$lang->action->dynamicAction = new stdclass();
|
||||
@@ -409,12 +411,13 @@ $lang->action->dynamicAction->program['activated'] = 'Activate Program';
|
||||
$lang->action->dynamicAction->program['deleted'] = 'Delete Program';
|
||||
$lang->action->dynamicAction->program['closed'] = 'Close Program';
|
||||
|
||||
$lang->action->dynamicAction->project['opened'] = 'Créer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['edited'] = 'Editer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['started'] = 'Commencer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspendre ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['closed'] = 'Fermer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['opened'] = 'Créer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['edited'] = 'Editer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['started'] = 'Commencer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspendre ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['closed'] = 'Fermer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['switchtolean'] = 'Switch Mode';
|
||||
|
||||
$lang->action->dynamicAction->product['opened'] = 'Créer ' . $lang->productCommon;
|
||||
$lang->action->dynamicAction->product['edited'] = 'Editer ' . $lang->productCommon;
|
||||
|
||||
@@ -223,6 +223,7 @@ $lang->action->desc->reopen = '$date, 由 <strong>$actor</strong>
|
||||
$lang->action->desc->merged = '$date, 由 <strong>$actor</strong> 合并。' . "\n";
|
||||
$lang->action->desc->submitreview = '$date, 由 <strong>$actor</strong> 提交评审。' . "\n";
|
||||
$lang->action->desc->ganttmove = '$date, 由 <strong>$actor</strong> 排序。' . "\n";
|
||||
$lang->action->desc->switchtolean = '$date, 由 <strong>'. $lang->admin->system .'</strong> 从综合模式切换为迅捷模式。' . "\n";
|
||||
|
||||
/* 用来描述和父子任务相关的操作历史记录。*/
|
||||
$lang->action->desc->createchildren = '$date, 由 <strong>$actor</strong> 创建子任务 <strong>$extra</strong>。' . "\n";
|
||||
@@ -390,6 +391,7 @@ $lang->action->label->tolib = '导入了';
|
||||
$lang->action->label->updatetolib = '更新了';
|
||||
$lang->action->label->ganttmove = '排序了';
|
||||
$lang->action->label->submitreview = '提交了评审';
|
||||
$lang->action->label->switchtolean = '从综合模式切换为迅捷模式';
|
||||
|
||||
/* 动态信息按照对象分组 */
|
||||
$lang->action->dynamicAction = new stdclass();
|
||||
@@ -409,12 +411,13 @@ $lang->action->dynamicAction->program['activated'] = '激活项目集';
|
||||
$lang->action->dynamicAction->program['deleted'] = '删除项目集';
|
||||
$lang->action->dynamicAction->program['closed'] = '关闭项目集';
|
||||
|
||||
$lang->action->dynamicAction->project['opened'] = '创建项目';
|
||||
$lang->action->dynamicAction->project['edited'] = '编辑项目';
|
||||
$lang->action->dynamicAction->project['started'] = '开始项目';
|
||||
$lang->action->dynamicAction->project['suspended'] = '延期项目';
|
||||
$lang->action->dynamicAction->project['activated'] = '激活项目';
|
||||
$lang->action->dynamicAction->project['closed'] = '关闭项目';
|
||||
$lang->action->dynamicAction->project['opened'] = '创建项目';
|
||||
$lang->action->dynamicAction->project['edited'] = '编辑项目';
|
||||
$lang->action->dynamicAction->project['started'] = '开始项目';
|
||||
$lang->action->dynamicAction->project['suspended'] = '延期项目';
|
||||
$lang->action->dynamicAction->project['activated'] = '激活项目';
|
||||
$lang->action->dynamicAction->project['closed'] = '关闭项目';
|
||||
$lang->action->dynamicAction->project['switchtolean'] = '切换模式';
|
||||
|
||||
$lang->action->dynamicAction->product['opened'] = '创建' . $lang->productCommon;
|
||||
$lang->action->dynamicAction->product['edited'] = '编辑' . $lang->productCommon;
|
||||
|
||||
@@ -640,15 +640,22 @@ class custom extends control
|
||||
/* 只有没有关联项目集的产品和项目关联到默认项目集下. */
|
||||
$this->loadModel('upgrade')->relationDefaultProgram($program);
|
||||
|
||||
if($this->post->mode == 'new') $this->loadModel('setting')->deleteItems('owner=system&module=common§ion=global&key=projectMode');
|
||||
if($mode == 'new') $this->loadModel('setting')->deleteItems('owner=system&module=common§ion=global&key=projectMode');
|
||||
if($mode == 'lean') $this->custom->processProjectAcl();
|
||||
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'top'));
|
||||
}
|
||||
|
||||
$this->app->loadLang('upgrade');
|
||||
|
||||
$hasMoreData = $this->custom->hasMoreData() ? 'yes' : 'no';
|
||||
$this->lang->custom->changeModeContentTips['lean'] = $this->lang->custom->hasMoreData[$hasMoreData];
|
||||
$this->lang->custom->changeModeContentTips['lean'] = $this->lang->custom->hasMoreData['yes'];
|
||||
|
||||
$counts = $this->custom->getCounts();
|
||||
foreach($counts as $function => $count)
|
||||
{
|
||||
if($count) unset($this->lang->custom->needClosedFunctions[$function]);
|
||||
}
|
||||
if(!empty($this->lang->custom->needClosedFunctions)) $this->lang->custom->changeModeContentTips['lean'] = sprintf($this->lang->custom->hasMoreData['no'], implode($this->lang->comma, $this->lang->custom->needClosedFunctions));
|
||||
|
||||
$this->view->title = $this->lang->custom->mode;
|
||||
$this->view->position[] = $this->lang->custom->common;
|
||||
|
||||
@@ -245,12 +245,16 @@ $lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
|
||||
$lang->custom->changeModeTitleTips['new'] = 'Are you sure you want to switch to the new mode?';
|
||||
$lang->custom->changeModeTitleTips['lean'] = 'Are you sure you want to switch to the lean mode?';
|
||||
$lang->custom->changeModeTitleTips['new'] = 'Please double confirm to switch to New mode.';
|
||||
$lang->custom->changeModeTitleTips['lean'] = 'Please double confirm to switch to Lean mode.';
|
||||
$lang->custom->changeModeContentTips['new'] = 'The new mode is suitable for medium and large R&D teams. After switching the new mode, the system will enable functions such as program sets.';
|
||||
|
||||
$lang->custom->hasMoreData['yes'] = 'After switching to lean mode, the system will close the program function, and the related functions of the program will be hidden.';
|
||||
$lang->custom->hasMoreData['no'] = 'After switching to lean mode, the system will close functions such as program sets, waterfall projects, asset libraries and user requirements.';
|
||||
$lang->custom->hasMoreData['no'] = 'After switching to lean mode, the system will close functions such as program sets, %s.';
|
||||
|
||||
$lang->custom->needClosedFunctions['waterfall'] = 'Waterfall';
|
||||
$lang->custom->needClosedFunctions['URStory'] = 'User Story';
|
||||
if($config->edition == 'max') $lang->custom->needClosedFunctions['assetLib'] = 'Assetlib';
|
||||
|
||||
$lang->custom->scoreStatus[1] = 'On';
|
||||
$lang->custom->scoreStatus[0] = 'Off';
|
||||
@@ -292,4 +296,4 @@ $lang->custom->scrum->setConcept = 'Set concept';
|
||||
$lang->custom->reviewRules['allpass'] = 'All passed';
|
||||
$lang->custom->reviewRules['halfpass'] = 'More than half passed';
|
||||
|
||||
$lang->custom->switchModeHelper = 'Select a default item set. Subsequent data added in the system will be associated with the default item set';
|
||||
$lang->custom->switchModeHelper = 'Select a default item set. Subsequent data added in the system will be associated with the default item set';
|
||||
|
||||
@@ -245,12 +245,16 @@ $lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
|
||||
$lang->custom->changeModeTitleTips['new'] = 'Are you sure you want to switch to the new mode?';
|
||||
$lang->custom->changeModeTitleTips['lean'] = 'Are you sure you want to switch to the lean mode?';
|
||||
$lang->custom->changeModeTitleTips['new'] = 'Please double confirm to switch to New mode.';
|
||||
$lang->custom->changeModeTitleTips['lean'] = 'Please double confirm to switch to Lean mode.';
|
||||
$lang->custom->changeModeContentTips['new'] = 'The new mode is suitable for medium and large R&D teams. After switching the new mode, the system will enable functions such as program sets.';
|
||||
|
||||
$lang->custom->hasMoreData['yes'] = 'After switching to lean mode, the system will close the program function, and the related functions of the program will be hidden.';
|
||||
$lang->custom->hasMoreData['no'] = 'After switching to lean mode, the system will close functions such as program sets, waterfall projects, asset libraries and user requirements.';
|
||||
$lang->custom->hasMoreData['no'] = 'After switching to lean mode, the system will close functions such as program sets, %s.';
|
||||
|
||||
$lang->custom->needClosedFunctions['waterfall'] = 'Waterfall';
|
||||
$lang->custom->needClosedFunctions['URStory'] = 'User Story';
|
||||
if($config->edition == 'max') $lang->custom->needClosedFunctions['assetLib'] = 'Assetlib';
|
||||
|
||||
$lang->custom->scoreStatus[1] = 'On';
|
||||
$lang->custom->scoreStatus[0] = 'Off';
|
||||
@@ -292,4 +296,4 @@ $lang->custom->scrum->setConcept = 'Set concept';
|
||||
$lang->custom->reviewRules['allpass'] = 'All passed';
|
||||
$lang->custom->reviewRules['halfpass'] = 'More than half passed';
|
||||
|
||||
$lang->custom->switchModeHelper = 'Select a default item set. Subsequent data added in the system will be associated with the default item set';
|
||||
$lang->custom->switchModeHelper = 'Select a default item set. Subsequent data added in the system will be associated with the default item set';
|
||||
|
||||
@@ -245,12 +245,16 @@ $lang->custom->saveFail = 'Echec de la sauvegarde !';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
|
||||
$lang->custom->changeModeTitleTips['new'] = 'Are you sure you want to switch to the new mode?';
|
||||
$lang->custom->changeModeTitleTips['lean'] = 'Are you sure you want to switch to the lean mode?';
|
||||
$lang->custom->changeModeTitleTips['new'] = 'Please double confirm to switch to New mode.';
|
||||
$lang->custom->changeModeTitleTips['lean'] = 'Please double confirm to switch to Lean mode.';
|
||||
$lang->custom->changeModeContentTips['new'] = 'The new mode is suitable for medium and large R&D teams. After switching the new mode, the system will enable functions such as program sets.';
|
||||
|
||||
$lang->custom->hasMoreData['yes'] = 'After switching to lean mode, the system will close the program function, and the related functions of the program will be hidden.';
|
||||
$lang->custom->hasMoreData['no'] = 'After switching to lean mode, the system will close functions such as program sets, waterfall projects, asset libraries and user requirements.';
|
||||
$lang->custom->hasMoreData['no'] = 'After switching to lean mode, the system will close functions such as program sets, %s.';
|
||||
|
||||
$lang->custom->needClosedFunctions['waterfall'] = 'Waterfall';
|
||||
$lang->custom->needClosedFunctions['URStory'] = 'User Story';
|
||||
if($config->edition == 'max') $lang->custom->needClosedFunctions['assetLib'] = 'Assetlib';
|
||||
|
||||
$lang->custom->scoreStatus[1] = 'On';
|
||||
$lang->custom->scoreStatus[0] = 'Off';
|
||||
@@ -292,4 +296,4 @@ $lang->custom->scrum->setConcept = 'Set concept';
|
||||
$lang->custom->reviewRules['allpass'] = 'All passed';
|
||||
$lang->custom->reviewRules['halfpass'] = 'More than half passed';
|
||||
|
||||
$lang->custom->switchModeHelper = 'Select a default item set. Subsequent data added in the system will be associated with the default item set';
|
||||
$lang->custom->switchModeHelper = 'Select a default item set. Subsequent data added in the system will be associated with the default item set';
|
||||
|
||||
@@ -250,7 +250,11 @@ $lang->custom->changeModeTitleTips['lean'] = '您确定要切换到迅捷模式
|
||||
$lang->custom->changeModeContentTips['new'] = '综合模式适用于中大型研发团队,切换综合模式后,系统将启用项目集等功能。';
|
||||
|
||||
$lang->custom->hasMoreData['yes'] = '切换到迅捷模式后,系统将关闭项目集功能,项目集的相关功能将会被隐藏。';
|
||||
$lang->custom->hasMoreData['no'] = '切换到迅捷模式后,系统将关闭项目集、瀑布项目、资产库、用户需求等功能。';
|
||||
$lang->custom->hasMoreData['no'] = '切换到迅捷模式后,系统将关闭项目集,%s等功能。';
|
||||
|
||||
$lang->custom->needClosedFunctions['waterfall'] = '瀑布项目';
|
||||
$lang->custom->needClosedFunctions['URStory'] = '用户需求';
|
||||
if($config->edition == 'max') $lang->custom->needClosedFunctions['assetLib'] = '资产库';
|
||||
|
||||
$lang->custom->scoreStatus[1] = '开启';
|
||||
$lang->custom->scoreStatus[0] = '关闭';
|
||||
@@ -292,4 +296,4 @@ $lang->custom->scrum->setConcept = '设置项目概念';
|
||||
$lang->custom->reviewRules['allpass'] = '全部通过通过';
|
||||
$lang->custom->reviewRules['halfpass'] = '半数以上通过通过';
|
||||
|
||||
$lang->custom->switchModeHelper = '请选择一个默认项目集,后续在系统中新增的数据将关联在默认项目集下';
|
||||
$lang->custom->switchModeHelper = '请选择一个默认项目集,后续在系统中新增的数据将关联在默认项目集下';
|
||||
|
||||
+65
-8
@@ -818,19 +818,76 @@ class customModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for waterfall, assetLib, URStory data in new mode.
|
||||
* Get waterfall, assetLib, URStory counts.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
* @return array
|
||||
*/
|
||||
public function hasMoreData()
|
||||
public function getCounts()
|
||||
{
|
||||
$assetLibCount = 0;
|
||||
if($this->config->edition == 'max') $assetLibCount = $this->dao->select('COUNT(*) AS assetLibCount')->from(TABLE_ASSETLIB)->where('deleted')->ne('0')->fetch('assetLibCount');
|
||||
$counts = array();
|
||||
$counts['waterfall'] = $this->dao->select('COUNT(*) AS waterfallCount')->from(TABLE_PROJECT)->where('model')->eq('waterfall')->andWhere('deleted')->eq('0')->fetch('waterfallCount');
|
||||
$counts['URStory'] = $this->dao->select('COUNT(*) AS URStoryCount')->from(TABLE_STORY)->where('type')->eq('requirement')->andWhere('deleted')->eq('0')->fetch('URStoryCount');
|
||||
if($this->config->edition == 'max') $count['assetLib'] = $this->dao->select('COUNT(*) AS assetLibCount')->from(TABLE_ASSETLIB)->where('deleted')->eq('0')->fetch('assetLibCount');
|
||||
|
||||
$waterfallCount = $this->dao->select('COUNT(*) AS waterfallCount')->from(TABLE_PROJECT)->where('model')->eq('waterfall')->andWhere('deleted')->ne('0')->fetch('waterfallCount');
|
||||
$URStoryCount = $this->dao->select('COUNT(*) AS URStoryCount')->from(TABLE_STORY)->where('type')->eq('requirement')->andWhere('deleted')->ne('0')->fetch('URStoryCount');
|
||||
return $counts;
|
||||
}
|
||||
|
||||
return $waterfallCount || $assetLibCount || $URStoryCount;
|
||||
/**
|
||||
* process project priv within a program set.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function processProjectAcl()
|
||||
{
|
||||
$projectGroup = $this->dao->select('id,parent,whitelist,acl')->from(TABLE_PROJECT)
|
||||
->where('parent')->ne('0')
|
||||
->andwhere('type')->eq('project')
|
||||
->andWhere('acl')->eq('program')
|
||||
->fetchGroup('parent', 'id');
|
||||
|
||||
$programs = $this->dao->select("id,CONCAT(PM,',',openedBy)")->from(TABLE_PROGRAM)
|
||||
->where('id')->in(array_keys($projectGroup))
|
||||
->andWhere('type')->eq('program')
|
||||
->fetchPairs();
|
||||
|
||||
$projectIDList = array();
|
||||
foreach($projectGroup as $projects) $projectIDList = array_merge($projectIDList, array_keys($projects));
|
||||
$executionGroup = $this->dao->select('project,id')->from(TABLE_EXECUTION)->where('project')->in($projectIDList)->fetchGroup('project', 'id');
|
||||
|
||||
$this->loadModel('user');
|
||||
$this->loadModel('action');
|
||||
$this->loadModel('personnel');
|
||||
foreach($projectGroup as $projects)
|
||||
{
|
||||
foreach($projects as $project)
|
||||
{
|
||||
$whitelist = rtrim($project->whitelist . ',' . zget($programs, $project->parent, ''));
|
||||
$whitelist = explode(',', $whitelist);
|
||||
$whitelist = array_filter(array_unique($whitelist));
|
||||
$whitelist = join(',', $whitelist);
|
||||
|
||||
$data = new stdclass();
|
||||
$data->acl = 'private';
|
||||
$data->whitelist = $whitelist;
|
||||
$this->dao->update(TABLE_PROJECT)->data($data)->where('id')->eq($project->id)->exec();
|
||||
|
||||
$whitelist = explode(',', $whitelist);
|
||||
$this->personnel->updateWhitelist($whitelist, 'project', $project->id);
|
||||
|
||||
$this->user->updateUserView($project->id, 'project');
|
||||
if(zget($executionGroup, $project->id, ''))
|
||||
{
|
||||
$executions = zget($executionGroup, $project->id);
|
||||
$executionPairs = array();
|
||||
foreach($executions as $executionID => $execution) $executionPairs[$executionID] = $executionID;
|
||||
$this->user->updateUserView($executionPairs, 'sprint');
|
||||
}
|
||||
$changes = common::createChanges($project, $data);
|
||||
$actionID = $this->action->create('project', $project->id, 'SwitchToLean');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ class execution extends control
|
||||
$recentExecutions = array_unique($recentExecutions);
|
||||
$recentExecutions = array_slice($recentExecutions, 0, 5);
|
||||
$recentExecutions = join(',', $recentExecutions);
|
||||
if(empty($this->config->projectMode))
|
||||
if($this->session->noSprint)
|
||||
{
|
||||
if(!isset($this->config->execution->recentExecutions) or $this->config->execution->recentExecutions != $recentExecutions) $this->setting->updateItem($this->app->user->account . 'common.execution.recentExecutions', $recentExecutions);
|
||||
if(!isset($this->config->execution->lastExecution) or $this->config->execution->lastExecution != $executionID) $this->setting->updateItem($this->app->user->account . 'common.execution.lastExecution', $executionID);
|
||||
|
||||
@@ -1269,6 +1269,7 @@ class executionModel extends model
|
||||
$executions = $this->dao->select('*, IF(INSTR("done,closed", status) < 2, 0, 1) AS isDone, INSTR("doing,wait,suspended,closed", status) AS sortStatus')->from(TABLE_EXECUTION)
|
||||
->where('deleted')->eq(0)
|
||||
->andWhere('vision')->eq($this->config->vision)
|
||||
->beginIF($this->session->noSprint and $this->app->tab == 'execution')->andWhere('noSprint')->eq('0')->fi()
|
||||
->beginIF($type == 'all')->andWhere('type')->in('stage,sprint,kanban')->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->beginIF($type != 'all')->andWhere('type')->eq($type)->fi()
|
||||
@@ -1488,6 +1489,7 @@ class executionModel extends model
|
||||
->where('t1.type')->in('sprint,stage,kanban')
|
||||
->andWhere('t1.deleted')->eq('0')
|
||||
->andWhere('t1.vision')->eq($this->config->vision)
|
||||
->andWhere('t1.noSprint')->eq('0')
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF(!empty($executionQuery))->andWhere($executionQuery)->fi()
|
||||
->beginIF($productID)->andWhere('t3.product')->eq($productID)->fi()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
url: manualUrl || $helpLink.attr('href'),
|
||||
external: true,
|
||||
text: manualText || $helpLink.text(),
|
||||
appUrl: config.webRoot + '#app=help'
|
||||
appUrl: config.webRoot + '#app=help'
|
||||
};
|
||||
var $menuMainNav = $('#menuMainNav').empty();
|
||||
window.appsMenuItems.forEach(function(item)
|
||||
|
||||
@@ -100,7 +100,7 @@ $lang->my->executionLink = '执行默认着陆页';
|
||||
$lang->my->programLinkList = array();
|
||||
$lang->my->programLinkList['program-browse'] = '默认进入项目集列表,可以查看所有的项目集';
|
||||
$lang->my->programLinkList['program-project'] = '默认进入最近一个项目集的项目列表,可以查看当前项目集下所有项目';
|
||||
$lang->my->programLinkList['program-kanban'] = '默认进入项目集看板,可以可视化的查看到所有项目集的进展情况';
|
||||
$lang->my->programLinkList['program-kanban'] = '默认进入项目集看板,可以可视化的查看到所有项目集的进展情况';
|
||||
|
||||
$lang->my->productLinkList = array();
|
||||
$lang->my->productLinkList['product-index'] = '默认进入产品主页,可以了解公司整体的产品状况';
|
||||
@@ -113,7 +113,7 @@ $lang->my->projectLinkList = array();
|
||||
$lang->my->projectLinkList['project-browse'] = '默认进入项目列表,可以查看所有的项目';
|
||||
$lang->my->projectLinkList['project-execution'] = '默认进入项目下所有执行列表,查看所有执行信息';
|
||||
$lang->my->projectLinkList['project-index'] = '默认进入最近一个项目仪表盘,可以查看当前项目概况';
|
||||
$lang->my->projectLinkList['project-kanban'] = '默认进入项目看板,可以可视化的查看到所有项目的进展情况';
|
||||
$lang->my->projectLinkList['project-kanban'] = '默认进入项目看板,可以可视化的查看到所有项目的进展情况';
|
||||
|
||||
$lang->my->executionLinkList = array();
|
||||
$lang->my->executionLinkList['execution-all'] = '默认进入执行列表,可以查看所有的执行';
|
||||
|
||||
@@ -2491,10 +2491,14 @@ class projectModel extends model
|
||||
$moduleName = $this->app->rawModule;
|
||||
$methodName = $this->app->rawMethod;
|
||||
|
||||
$this->session->set('noSprint', false);
|
||||
|
||||
$navGroup = zget($this->lang->navGroup, $moduleName);
|
||||
$this->config->resetNavGroup['execution'] = 'execution';
|
||||
$this->config->resetNavGroup['task'] = zget($this->lang->navGroup, 'task');
|
||||
$this->config->resetNavGroup['story'] = zget($this->lang->navGroup, 'story');
|
||||
$this->config->resetNavGroup[$moduleName] = $navGroup;
|
||||
$this->session->set('noSprint', false, 'project');
|
||||
|
||||
|
||||
$project = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($objectID)->andWhere('noSprint')->eq('1')->fetch();
|
||||
if(empty($project)) return;
|
||||
@@ -2519,7 +2523,7 @@ class projectModel extends model
|
||||
if(empty($projectID) or empty($executionID)) return;
|
||||
|
||||
$this->session->set('project', $projectID, 'project');
|
||||
$this->session->set('noSprint', true, 'project');
|
||||
$this->session->set('noSprint', true);
|
||||
|
||||
$this->app->tab = 'project';
|
||||
$_COOKIE['tab'] = 'project';
|
||||
@@ -2555,6 +2559,8 @@ class projectModel extends model
|
||||
}
|
||||
|
||||
$this->config->resetNavGroup['execution'] = 'project';
|
||||
$this->config->resetNavGroup['task'] = 'project';
|
||||
$this->config->resetNavGroup['story'] = 'project';
|
||||
$this->config->resetNavGroup[$moduleName] = 'project';
|
||||
|
||||
/* If objectID is set, cannot use homeMenu. */
|
||||
|
||||
@@ -236,6 +236,8 @@ class search extends control
|
||||
foreach($typeCount as $objectType => $count)
|
||||
{
|
||||
if(!isset($this->lang->search->modules[$objectType])) continue;
|
||||
if($this->config->systemMode != 'new' and $objectType == 'program') continue;
|
||||
if(!empty($this->config->projectMode) and $this->config->projectMode == 'noSprint' and $objectType == 'execution') continue;
|
||||
$typeList[$objectType] = $this->lang->search->modules[$objectType];
|
||||
}
|
||||
|
||||
|
||||
@@ -634,6 +634,9 @@ class searchModel extends model
|
||||
}
|
||||
else
|
||||
{
|
||||
if($this->config->systemMode != 'new') unset($this->config->search->fields->program);
|
||||
if(!empty($this->config->projectMode) and $this->config->projectMode == 'noSprint') unset($this->config->search->fields->execution);
|
||||
|
||||
foreach($this->config->search->fields as $objectType => $fields)
|
||||
{
|
||||
$module = $objectType;
|
||||
|
||||
@@ -64,7 +64,7 @@ class story extends control
|
||||
{
|
||||
$this->product->setMenu($productID);
|
||||
}
|
||||
else if($this->app->tab == 'project')
|
||||
elseif($this->app->tab == 'project')
|
||||
{
|
||||
$objects = $this->project->getPairsByProgram();
|
||||
|
||||
|
||||
@@ -4862,7 +4862,7 @@ class storyModel extends model
|
||||
echo $story->version;
|
||||
break;
|
||||
case 'actions':
|
||||
if($tab == 'execution')
|
||||
if($tab == 'execution' || $this->session->noSprint)
|
||||
{
|
||||
$menuType = 'execution';
|
||||
}
|
||||
|
||||
@@ -246,19 +246,6 @@ class upgrade extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge program tips.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function mergeTips()
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.upgradeStep', 'mergeProgram');
|
||||
$this->view->title = $this->lang->upgrade->mergeTips;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge program.
|
||||
*
|
||||
|
||||
@@ -59,45 +59,6 @@ $lang->upgrade->toPMS15Guide = 'ZenTao open source version 15 upgrade';
|
||||
$lang->upgrade->toPRO10Guide = 'ZenTao profession version 10 upgrade';
|
||||
$lang->upgrade->toBIZ5Guide = 'ZenTao enterprise version 5 upgrade';
|
||||
$lang->upgrade->toMAXGuide = 'ZenTao ultimate version upgrade';
|
||||
$lang->upgrade->to15Desc = <<<EOD
|
||||
<p>ZenTao version 15.0 has major upgrade of features, including:</p>
|
||||
<p><strong>1. Add the concept of Program</strong></p>
|
||||
<p>A program is a collection of interrelated and coordinated projects. It is at the highest level and belongs to the concept of a strategic level. It has multi-level project management, helping managers to form strategic directions and allocate resources at a macro level.</p>
|
||||
<p><strong>2. Clarify the concept of Product and Project</strong></p>
|
||||
<p>Product defines what should be done and focuses on requirement management. Project defines how to do it and focuses on finishing tasks of the project within the specified time, budget and quality objectives. A project can be done in Agile or Waterfall, which is the management of the campaign level.</p> <p><strong>3. Add the concept of Project Model</strong></p>
|
||||
<p>The new version 15.0 adds a Waterfall model (available in ZenTao Max) to help the project team choose the right project management method according to their needs. Kanban model will be coming soon.</p> <p><strong>4. Add the concept of Execution</strong></p>
|
||||
<p>In Version 15.0, depending on the management model, a project can have multiple iterations/sprints/ phases which are Executions in ZenTao. Through executions, the project tasks are completed and the final outcome is delivered.</p> <p><strong>5. Adjust the Navigation</strong></p>
|
||||
<p>The top level navigation is moved to the left, and multi-application switching is added as new UI/UX.</p>
|
||||
<br/>
|
||||
<p>You can try the online demo before you decide to enable new features: <a class='text-info' href='http://zentaomax.demo.zentao.net' target='_blank'>New Features Online Demo</a></p>
|
||||
<p>You can also download an introduction PPT to help you understand it:<a class='text-info' href='' target='_blank'> New Features Introduction PPT</a></p>
|
||||
<video src="https://dl.cnezsoft.com/vedio/zentaoconcepteng0716.mp4" width="100%" controls ="controls"></video>
|
||||
<p style="text-align:center"><small>ZenTao Version 15 Introduction</small></p>
|
||||
<br/>
|
||||
<p><strong>How do you like to use ZenTao?</strong></p>
|
||||
EOD;
|
||||
|
||||
|
||||
|
||||
|
||||
$lang->upgrade->mergeProgramDesc = <<<EOD
|
||||
<p>Next, ZenTao will migrate the existing data of {$lang->productCommon} and {$lang->projectCommon} to Program and Project. It will be one of the followings:</p><br />
|
||||
<h4>1. Manage {$lang->productCommon} and {$lang->projectCommon} by {$lang->productCommon} Line </h4>
|
||||
<p>Migrate the data of {$lang->productCommon} and {$lang->projectCommon} by {$lang->productCommon} Line to a Program. You can also migrate it separately.</p>
|
||||
<h4>2. Manage {$lang->projectCommon} by {$lang->productCommon}</h4>
|
||||
<p>You can migrate the data of several {$lang->productCommon}s and {$lang->projectCommon}s to one Program. Or select {$lang->projectCommon}s of a {$lang->productCommon} and {$lang->productCommon} to a Program.</p>
|
||||
<h4>2. Independent {$lang->projectCommon}</h4>
|
||||
<p>Choose several {$lang->projectCommon}s and migrate them to one Program, or migrate them separately.</p>
|
||||
<h4>4. Link {$lang->projectCommon}s of several {$lang->productCommon}s</h4>
|
||||
<p>After selecting a historical {$lang->projectCommon} as a project upgrade, the user can select the program to which this project belongs or create a new program.</p>
|
||||
<p>After selecting a historical {$lang->projectCommon} as the iterative upgrade, the user can select the project and program to which the execution belongs or create a new project and program.</p>
|
||||
EOD;
|
||||
|
||||
$lang->upgrade->to15Mode['classic'] = 'Keep the classic mode';
|
||||
$lang->upgrade->to15Mode['new'] = 'Use the program mode';
|
||||
|
||||
$lang->upgrade->selectedModeTips['classic'] = 'You can also switch to the Program mode in the Admin-Custom-Custom later.';
|
||||
$lang->upgrade->selectedModeTips['new'] = 'Switching to the program management mode requires merging the previous data, and the system will guide you to complete this operation.';
|
||||
|
||||
$lang->upgrade->line = 'Product Line';
|
||||
$lang->upgrade->allLines = "All Product Lines";
|
||||
@@ -128,10 +89,7 @@ $lang->upgrade->newProgram = 'Create';
|
||||
$lang->upgrade->editedName = 'New Name';
|
||||
$lang->upgrade->projectEmpty = 'Project must be not empty.';
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s {$lang->productCommon} and %s {$lang->projectCommon} in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED {$lang->projectCommon}: Consolidate the entire {$lang->productCommon} line and the {$lang->productCommon} and {$lang->projectCommon} below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED {$lang->projectCommon}: You can select multiple {$lang->productCommon} and their lower {$lang->projectCommon} to merge into a large project, or you can select a {$lang->productCommon} to merge its lower {$lang->projectCommon} into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent {$lang->projectCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeByMoreLink = "{$lang->projectCommon} that relates multiple {$lang->productCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently.";
|
||||
$lang->upgrade->mergeByProject = "Currently, the following two data migration methods are available. If the historical projects are long term, we suggest upgrading the historical projects as projects.</br>If the historical projects are short cycle, we suggest that the historical projects be upgraded as iterations.";
|
||||
$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product.";
|
||||
$lang->upgrade->needBuild4Add = 'Full text retrieval has been added in this upgrad. Please create an index.';
|
||||
$lang->upgrade->needChangeEngine = 'The table engine needs to be replaced in this upgrade, Please go [Admin->System->TableEngine] page to replace engine.';
|
||||
|
||||
@@ -59,45 +59,6 @@ $lang->upgrade->toPMS15Guide = 'ZenTao open source version 15 upgrade';
|
||||
$lang->upgrade->toPRO10Guide = 'ZenTao profession version 10 upgrade';
|
||||
$lang->upgrade->toBIZ5Guide = 'ZenTao enterprise version 5 upgrade';
|
||||
$lang->upgrade->toMAXGuide = 'ZenTao ultimate version upgrade';
|
||||
$lang->upgrade->to15Desc = <<<EOD
|
||||
<p>ZenTao version 15.0 has major upgrade of features, including:</p>
|
||||
<p><strong>1. Add the concept of Program</strong></p>
|
||||
<p>A program is a collection of interrelated and coordinated projects. It is at the highest level and belongs to the concept of a strategic level. It has multi-level project management, helping managers to form strategic directions and allocate resources at a macro level.</p>
|
||||
<p><strong>2. Clarify the concept of Product and Project</strong></p>
|
||||
<p>Product defines what should be done and focuses on requirement management. Project defines how to do it and focuses on finishing tasks of the project within the specified time, budget and quality objectives. A project can be done in Agile or Waterfall, which is the management of the campaign level.</p> <p><strong>3. Add the concept of Project Model</strong></p>
|
||||
<p>The new version 15.0 adds a Waterfall model (available in ZenTao Max) to help the project team choose the right project management method according to their needs. Kanban model will be coming soon.</p> <p><strong>4. Add the concept of Execution</strong></p>
|
||||
<p>In Version 15.0, depending on the management model, a project can have multiple iterations/sprints/ phases which are Executions in ZenTao. Through executions, the project tasks are completed and the final outcome is delivered.</p> <p><strong>5. Adjust the Navigation</strong></p>
|
||||
<p>The top level navigation is moved to the left, and multi-application switching is added as new UI/UX.</p>
|
||||
<br/>
|
||||
<p>You can try the online demo before you decide to enable new features: <a class='text-info' href='http://zentaomax.demo.zentao.net' target='_blank'>New Features Online Demo</a></p>
|
||||
<p>You can also download an introduction PPT to help you understand it:<a class='text-info' href='' target='_blank'> New Features Introduction PPT</a></p>
|
||||
<video src="https://dl.cnezsoft.com/vedio/zentaoconcepteng0716.mp4" width="100%" controls ="controls"></video>
|
||||
<p style="text-align:center"><small>ZenTao Version 15 Introduction</small></p>
|
||||
<br/>
|
||||
<p><strong>How do you like to use ZenTao?</strong></p>
|
||||
EOD;
|
||||
|
||||
|
||||
|
||||
|
||||
$lang->upgrade->mergeProgramDesc = <<<EOD
|
||||
<p>Next, ZenTao will migrate the existing data of {$lang->productCommon} and {$lang->projectCommon} to Program and Project. It will be one of the followings:</p><br />
|
||||
<h4>1. Manage {$lang->productCommon} and {$lang->projectCommon} by {$lang->productCommon} Line </h4>
|
||||
<p>Migrate the data of {$lang->productCommon} and {$lang->projectCommon} by {$lang->productCommon} Line to a Program. You can also migrate it separately.</p>
|
||||
<h4>2. Manage {$lang->projectCommon} by {$lang->productCommon}</h4>
|
||||
<p>You can migrate the data of several {$lang->productCommon}s and {$lang->projectCommon}s to one Program. Or select {$lang->projectCommon}s of a {$lang->productCommon} and {$lang->productCommon} to a Program.</p>
|
||||
<h4>2. Independent {$lang->projectCommon}</h4>
|
||||
<p>Choose several {$lang->projectCommon}s and migrate them to one Program, or migrate them separately.</p>
|
||||
<h4>4. Link {$lang->projectCommon}s of several {$lang->productCommon}s</h4>
|
||||
<p>After selecting a historical {$lang->projectCommon} as a project upgrade, the user can select the program to which this project belongs or create a new program.</p>
|
||||
<p>After selecting a historical {$lang->projectCommon} as the iterative upgrade, the user can select the project and program to which the execution belongs or create a new project and program.</p>
|
||||
EOD;
|
||||
|
||||
$lang->upgrade->to15Mode['classic'] = 'Keep the classic mode';
|
||||
$lang->upgrade->to15Mode['new'] = 'Use the program mode';
|
||||
|
||||
$lang->upgrade->selectedModeTips['classic'] = 'You can also switch to the Program mode in the Admin-Custom-Custom later.';
|
||||
$lang->upgrade->selectedModeTips['new'] = 'Switching to the program management mode requires merging the previous data, and the system will guide you to complete this operation.';
|
||||
|
||||
$lang->upgrade->line = 'Product Line';
|
||||
$lang->upgrade->allLines = "All Product Lines";
|
||||
@@ -128,10 +89,7 @@ $lang->upgrade->newProgram = 'Create';
|
||||
$lang->upgrade->editedName = 'New Name';
|
||||
$lang->upgrade->projectEmpty = 'Project must be not empty.';
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s {$lang->productCommon} and %s {$lang->projectCommon} in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED {$lang->projectCommon}: Consolidate the entire {$lang->productCommon} line and the {$lang->productCommon} and {$lang->projectCommon} below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED {$lang->projectCommon}: You can select multiple {$lang->productCommon} and their lower {$lang->projectCommon} to merge into a large project, or you can select a {$lang->productCommon} to merge its lower {$lang->projectCommon} into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent {$lang->projectCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeByMoreLink = "{$lang->projectCommon} that relates multiple {$lang->productCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently.";
|
||||
$lang->upgrade->mergeByProject = "Currently, the following two data migration methods are available. If the historical projects are long term, we suggest upgrading the historical projects as projects.</br>If the historical projects are short cycle, we suggest that the historical projects be upgraded as iterations.";
|
||||
$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product.";
|
||||
$lang->upgrade->needBuild4Add = 'Full text retrieval has been added in this upgrade. Need create index. Please go [Admin->System->BuildIndex] page to build index.';
|
||||
$lang->upgrade->needChangeEngine = 'The table engine needs to be replaced in this upgrade, Please go [Admin->System->TableEngine] page to replace engine.';
|
||||
|
||||
@@ -59,45 +59,6 @@ $lang->upgrade->toPMS15Guide = 'ZenTao open source version 15 upgrade';
|
||||
$lang->upgrade->toPRO10Guide = 'ZenTao profession version 10 upgrade';
|
||||
$lang->upgrade->toBIZ5Guide = 'ZenTao enterprise version 5 upgrade';
|
||||
$lang->upgrade->toMAXGuide = 'ZenTao ultimate version upgrade';
|
||||
$lang->upgrade->to15Desc = <<<EOD
|
||||
<p>ZenTao version 15.0 has major upgrade of features, including:</p>
|
||||
<p><strong>1. Add the concept of Program</strong></p>
|
||||
<p>A program is a collection of interrelated and coordinated projects. It is at the highest level and belongs to the concept of a strategic level. It has multi-level project management, helping managers to form strategic directions and allocate resources at a macro level.</p>
|
||||
<p><strong>2. Clarify the concept of Product and Project</strong></p>
|
||||
<p>Product defines what should be done and focuses on requirement management. Project defines how to do it and focuses on finishing tasks of the project within the specified time, budget and quality objectives. A project can be done in Agile or Waterfall, which is the management of the campaign level.</p> <p><strong>3. Add the concept of Project Model</strong></p>
|
||||
<p>The new version 15.0 adds a Waterfall model (available in ZenTao Max) to help the project team choose the right project management method according to their needs. Kanban model will be coming soon.</p> <p><strong>4. Add the concept of Execution</strong></p>
|
||||
<p>In Version 15.0, depending on the management model, a project can have multiple iterations/sprints/ phases which are Executions in ZenTao. Through executions, the project tasks are completed and the final outcome is delivered.</p> <p><strong>5. Adjust the Navigation</strong></p>
|
||||
<p>The top level navigation is moved to the left, and multi-application switching is added as new UI/UX.</p>
|
||||
<br/>
|
||||
<p>You can try the online demo before you decide to enable new features: <a class='text-info' href='http://zentaomax.demo.zentao.net' target='_blank'>New Features Online Demo</a></p>
|
||||
<p>You can also download an introduction PPT to help you understand it:<a class='text-info' href='' target='_blank'> New Features Introduction PPT</a></p>
|
||||
<video src="https://dl.cnezsoft.com/vedio/zentaoconcepteng0716.mp4" width="100%" controls ="controls"></video>
|
||||
<p style="text-align:center"><small>ZenTao Version 15 Introduction</small></p>
|
||||
<br/>
|
||||
<p><strong>How do you like to use ZenTao?</strong></p>
|
||||
EOD;
|
||||
|
||||
|
||||
|
||||
|
||||
$lang->upgrade->mergeProgramDesc = <<<EOD
|
||||
<p>Next, ZenTao will migrate the existing data of {$lang->productCommon} and {$lang->projectCommon} to Program and Project. It will be one of the followings:</p><br />
|
||||
<h4>1. Manage {$lang->productCommon} and {$lang->projectCommon} by {$lang->productCommon} Line </h4>
|
||||
<p>Migrate the data of {$lang->productCommon} and {$lang->projectCommon} by {$lang->productCommon} Line to a Program. You can also migrate it separately.</p>
|
||||
<h4>2. Manage {$lang->projectCommon} by {$lang->productCommon}</h4>
|
||||
<p>You can migrate the data of several {$lang->productCommon}s and {$lang->projectCommon}s to one Program. Or select {$lang->projectCommon}s of a {$lang->productCommon} and {$lang->productCommon} to a Program.</p>
|
||||
<h4>2. Independent {$lang->projectCommon}</h4>
|
||||
<p>Choose several {$lang->projectCommon}s and migrate them to one Program, or migrate them separately.</p>
|
||||
<h4>4. Link {$lang->projectCommon}s of several {$lang->productCommon}s</h4>
|
||||
<p>After selecting a historical {$lang->projectCommon} as a project upgrade, the user can select the program to which this project belongs or create a new program.</p>
|
||||
<p>After selecting a historical {$lang->projectCommon} as the iterative upgrade, the user can select the project and program to which the execution belongs or create a new project and program.</p>
|
||||
EOD;
|
||||
|
||||
$lang->upgrade->to15Mode['classic'] = 'Keep the classic mode';
|
||||
$lang->upgrade->to15Mode['new'] = 'Use the program mode';
|
||||
|
||||
$lang->upgrade->selectedModeTips['classic'] = 'You can also switch to the Program mode in the Admin-Custom-Custom later.';
|
||||
$lang->upgrade->selectedModeTips['new'] = 'Switching to the program management mode requires merging the previous data, and the system will guide you to complete this operation.';
|
||||
|
||||
$lang->upgrade->line = 'Product Line';
|
||||
$lang->upgrade->allLines = "All Product Lines";
|
||||
@@ -128,10 +89,7 @@ $lang->upgrade->newProgram = 'Create';
|
||||
$lang->upgrade->editedName = 'New Name';
|
||||
$lang->upgrade->projectEmpty = 'Project must be not empty.';
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s {$lang->productCommon} and %s {$lang->projectCommon} in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED {$lang->projectCommon}: Consolidate the entire {$lang->productCommon} line and the {$lang->productCommon} and {$lang->projectCommon} below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED {$lang->projectCommon}: You can select multiple {$lang->productCommon} and their lower {$lang->projectCommon} to merge into a large project, or you can select a {$lang->productCommon} to merge its lower {$lang->projectCommon} into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent {$lang->projectCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeByMoreLink = "{$lang->projectCommon} that relates multiple {$lang->productCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently.";
|
||||
$lang->upgrade->mergeByProject = "Currently, the following two data migration methods are available. If the historical projects are long term, we suggest upgrading the historical projects as projects.</br>If the historical projects are short cycle, we suggest that the historical projects be upgraded as iterations.";
|
||||
$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product.";
|
||||
$lang->upgrade->needBuild4Add = 'Full text retrieval has been added in this upgrade. Need create index. Please go [Admin->System->BuildIndex] page to build index.';
|
||||
$lang->upgrade->needChangeEngine = 'The table engine needs to be replaced in this upgrade, Please go [Admin->System->TableEngine] page to replace engine.';
|
||||
|
||||
@@ -57,44 +57,6 @@ $lang->upgrade->toPMS15Guide = 'ZenTao open source version 15 upgrade';
|
||||
$lang->upgrade->toPRO10Guide = 'ZenTao profession version 10 upgrade';
|
||||
$lang->upgrade->toBIZ5Guide = 'ZenTao enterprise version 5 upgrade';
|
||||
$lang->upgrade->toMAXGuide = 'ZenTao ultimate version upgrade';
|
||||
$lang->upgrade->to15Desc = <<<EOD
|
||||
<p>ZenTao version 15.0 has major upgrade of features, including:</p>
|
||||
<p><strong>1. Add the concept of Program</strong></p>
|
||||
<p>A program is a collection of interrelated and coordinated projects. It is at the highest level and belongs to the concept of a strategic level. It has multi-level project management, helping managers to form strategic directions and allocate resources at a macro level.</p>
|
||||
<p><strong>2. Clarify the concept of Product and Project</strong></p>
|
||||
<p>Product defines what should be done and focuses on requirement management. Project defines how to do it and focuses on finishing tasks of the project within the specified time, budget and quality objectives. A project can be done in Agile or Waterfall, which is the management of the campaign level.</p> <p><strong>3. Add the concept of Project Model</strong></p>
|
||||
<p>The new version 15.0 adds a Waterfall model (available in ZenTao Max) to help the project team choose the right project management method according to their needs. Kanban model will be coming soon.</p> <p><strong>4. Add the concept of Execution</strong></p>
|
||||
<p>In Version 15.0, depending on the management model, a project can have multiple iterations/sprints/ phases which are Executions in ZenTao. Through executions, the project tasks are completed and the final outcome is delivered.</p> <p><strong>5. Adjust the Navigation</strong></p>
|
||||
<p>The top level navigation is moved to the left, and multi-application switching is added as new UI/UX.</p>
|
||||
<br/>
|
||||
<p>You can try the online demo before you decide to enable new features: <a class='text-info' href='http://zentaomax.demo.zentao.net' target='_blank'>New Features Online Demo</a></p>
|
||||
<p>You can also download an introduction PPT to help you understand it:<a class='text-info' href='' target='_blank'> New Features Introduction PPT</a></p>
|
||||
<video src="https://dl.cnezsoft.com/vedio/zentaoconcepteng0716.mp4" width="100%" controls ="controls"></video>
|
||||
<p style="text-align:center"><small>ZenTao Version 15.0 Introduction</small></p>
|
||||
<br/>
|
||||
<p><strong>How do you like to use ZenTao?</strong></p>
|
||||
EOD;
|
||||
|
||||
|
||||
|
||||
|
||||
$lang->upgrade->mergeProgramDesc = <<<EOD
|
||||
<p>Next, ZenTao will migrate the existing data of {$lang->productCommon} and {$lang->projectCommon} to Program and Project. It will be one of the followings:</p><br />
|
||||
<h4>1. Manage {$lang->productCommon} and {$lang->projectCommon} by {$lang->productCommon} Line </h4>
|
||||
<p>Migrate the data of {$lang->productCommon} and {$lang->projectCommon} by {$lang->productCommon} Line to a Program. You can also migrate it separately.</p>
|
||||
<h4>2. Manage {$lang->projectCommon} by {$lang->productCommon}</h4>
|
||||
<p>You can migrate the data of several {$lang->productCommon}s and {$lang->projectCommon}s to one Program. Or select {$lang->projectCommon}s of a {$lang->productCommon} and {$lang->productCommon} to a Program.</p>
|
||||
<h4>2. Independent {$lang->projectCommon}</h4>
|
||||
<p>Choose several {$lang->projectCommon}s and migrate them to one Program, or migrate them separately.</p>
|
||||
<h4>4. Link {$lang->projectCommon}s of several {$lang->productCommon}s</h4>
|
||||
<p>You can set {$lang->projectCommon}s as one new project.</p>
|
||||
EOD;
|
||||
|
||||
$lang->upgrade->to15Mode['classic'] = 'Keep the classic mode';
|
||||
$lang->upgrade->to15Mode['new'] = 'Use the program mode';
|
||||
|
||||
$lang->upgrade->selectedModeTips['classic'] = 'You can also switch to the Program mode in the Admin-Custom-Custom later.';
|
||||
$lang->upgrade->selectedModeTips['new'] = 'Switching to the program management mode requires merging the previous data, and the system will guide you to complete this operation.';
|
||||
|
||||
$lang->upgrade->line = 'Product Line';
|
||||
$lang->upgrade->allLines = "All Product Lines";
|
||||
@@ -125,10 +87,7 @@ $lang->upgrade->newProgram = 'Create';
|
||||
$lang->upgrade->editedName = 'New Name';
|
||||
$lang->upgrade->projectEmpty = 'Project must be not empty.';
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s {$lang->productCommon} and %s {$lang->projectCommon} in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED {$lang->projectCommon}: Consolidate the entire {$lang->productCommon} line and the {$lang->productCommon} and {$lang->projectCommon} below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED {$lang->projectCommon}: You can select multiple {$lang->productCommon} and their lower {$lang->projectCommon} to merge into a large project, or you can select a {$lang->productCommon} to merge its lower {$lang->projectCommon} into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent {$lang->projectCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeByMoreLink = "{$lang->projectCommon} that relates multiple {$lang->productCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently.";
|
||||
$lang->upgrade->mergeByProject = "Currently, the following two data migration methods are available. If the historical projects are long term, we suggest upgrading the historical projects as projects.</br>If the historical projects are short cycle, we suggest that the historical projects be upgraded as iterations.";
|
||||
$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product.";
|
||||
$lang->upgrade->needBuild4Add = 'Full text retrieval has been added in this upgrade. Need create index. Please go [Admin->System->BuildIndex] page to build index.';
|
||||
$lang->upgrade->errorEngineInnodb = 'Your MySQL version is too low to support InnoDB data table engine. Please modify it to MyISAM and try again.';
|
||||
|
||||
@@ -59,45 +59,6 @@ $lang->upgrade->toPMS15Guide = '禅道开源版15版本升级';
|
||||
$lang->upgrade->toPRO10Guide = '禅道专业版10版本升级';
|
||||
$lang->upgrade->toBIZ5Guide = '禅道企业版5版本升级';
|
||||
$lang->upgrade->toMAXGuide = '禅道旗舰版版本升级';
|
||||
$lang->upgrade->to15Desc = <<<EOD
|
||||
<p>尊敬的用户,禅道从15版本开始系统功能做了重大升级,主要改动如下:</p>
|
||||
<p><strong>一、增加了项目集概念</strong></p>
|
||||
<p>项目集是一组相互关联,且被协调管理的项目集合,处于最高层级,属于战略层面的概念。它可以进行多层级管理,帮助管理者站在宏观的视角去制定战略方向和分配资源。</p>
|
||||
<p><strong>二、明确了产品和项目概念</strong></p>
|
||||
<p>产品是定义做什么,主要管理需求;项目是定义如何做,主要是在规定的时间、预算和质量目标范围内完成项目的各种工作,可以通过敏捷迭代的方式,也可以通过瀑布阶段的方式,属于战役层面的管理。</p>
|
||||
<p><strong>三、增加了项目模型概念</strong></p>
|
||||
<p>新版本在敏捷管理模型的基础上增加了瀑布管理模型(旗舰版提供),后续还会支持看板管理模型,帮助项目团队按需选择适合的项目管理方式。</p>
|
||||
<p><strong>四、增加了执行概念</strong></p>
|
||||
<p>新版本中,根据选择管理模型的不同,一个项目可以包含多个迭代/冲刺或阶段,我们把多个迭代/冲刺或阶段统称为执行,通过执行去完成项目的任务,交付最终的结果。</p>
|
||||
<p><strong>五、调整了导航结构</strong></p>
|
||||
<p>将一级导航调整到了界面左侧,同时增加了多应用切换的全新交互体验。</p>
|
||||
<br/>
|
||||
<p>您可以在线体验最新版本的功能,以决定是否启用新的模式:<a class='text-info' href='http://zentaomax.demo.zentao.net' target='_blank'>最新版演示demo</a></p>
|
||||
<p>您还可以下载新版本功能介绍PPT:<a class='text-info' href='https://dl.cnezsoft.com/zentao/zentaoconcept.pdf' target='_blank'>最新版功能介绍PPT</a></p>
|
||||
<video src="https://dl.cnezsoft.com/vedio/program0716.mp4" width="100%" controls ="controls"></video>
|
||||
<p style="text-align:center"><small>禅道15版本介绍</small></p>
|
||||
<br/>
|
||||
<p><strong>请问您计划如何使用禅道的新版本呢?</strong></p>
|
||||
EOD;
|
||||
|
||||
$lang->upgrade->mergeProgramDesc = <<<EOD
|
||||
<p>接下来我们会把之前历史{$lang->productCommon}和{$lang->projectCommon}数据迁移到项目集和项目下,迁移的情况如下:</p><br />
|
||||
<h4>情况一:以{$lang->productCommon}线组织的{$lang->productCommon}和{$lang->projectCommon} </h4>
|
||||
<p>可以将整个{$lang->productCommon}线及其下面的{$lang->productCommon}和{$lang->projectCommon}迁移到一个项目集中,当然您也可以根据需要分开迁移。</p>
|
||||
<h4>情况二:以{$lang->productCommon}组织的{$lang->projectCommon} </h4>
|
||||
<p>可以选择多个{$lang->productCommon}及其下面的{$lang->projectCommon}迁移到一个项目集中,也可以选择某一个{$lang->productCommon}和{$lang->productCommon}下面的{$lang->projectCommon}迁移到项目集中。</p>
|
||||
<h4>情况三:独立的{$lang->projectCommon}</h4>
|
||||
<p>可以选择若干个{$lang->projectCommon}迁移到一个项目集中,也可以独立迁移。</p>
|
||||
<h4>情况四:关联多个{$lang->productCommon}的{$lang->projectCommon}</h4>
|
||||
<p>选择历史{$lang->projectCommon}作为项目升级后,用户可以选择这个项目所属的项目集或新建项目集。</p>
|
||||
<p>选择历史{$lang->projectCommon}作为迭代升级后,用户可以选择这个执行所属的项目集、项目或新建项目集、项目。</p>
|
||||
EOD;
|
||||
|
||||
$lang->upgrade->to15Mode['classic'] = '经典管理模式';
|
||||
$lang->upgrade->to15Mode['new'] = '全新项目集管理模式';
|
||||
|
||||
$lang->upgrade->selectedModeTips['classic'] = '后续您还可以在后台-自定义里面切换为全新项目集管理的模式。';
|
||||
$lang->upgrade->selectedModeTips['new'] = '切换为项目集管理模式需要对之前的数据进行归并处理,系统会引导您完成这个操作。';
|
||||
|
||||
$lang->upgrade->line = '产品线';
|
||||
$lang->upgrade->allLines = "所有{$lang->productCommon}线";
|
||||
@@ -128,10 +89,7 @@ $lang->upgrade->newProgram = '新建';
|
||||
$lang->upgrade->editedName = '调整后名称';
|
||||
$lang->upgrade->projectEmpty = '所属项目不能为空!';
|
||||
$lang->upgrade->mergeSummary = "尊敬的用户,您的系统中共有%s个{$lang->productCommon},%s个{$lang->projectCommon}等待迁移。";
|
||||
$lang->upgrade->mergeByProductLine = "以{$lang->productCommon}线组织的{$lang->productCommon}和{$lang->projectCommon}:将整个{$lang->productCommon}线及其下面的{$lang->productCommon}和{$lang->projectCommon}归并到一个项目集和项目中,也可以分开归并。";
|
||||
$lang->upgrade->mergeByProduct = "以{$lang->productCommon}组织的{$lang->projectCommon}:可以选择多个{$lang->productCommon}及其下面的{$lang->projectCommon}归并到一个项目集和项目中,也可以选择某一个{$lang->productCommon}将其下面所属的{$lang->projectCommon}归并到项目集和项目中。";
|
||||
$lang->upgrade->mergeByProject = "独立的{$lang->projectCommon}:可以选择若干{$lang->projectCommon}归并到一个项目中,也可以独立归并。";
|
||||
$lang->upgrade->mergeByMoreLink = "关联多个{$lang->productCommon}的{$lang->projectCommon}:选择一个或多个{$lang->projectCommon}归并到一个项目集和项目中。";
|
||||
$lang->upgrade->mergeByProject = "当前提供如下2种数据迁移方式,如果历史的项目都是长周期的,那么我们建议把历史的项目作为项目升级。</br>如果历史的项目都是短周期的,那么我们建议把历史的项目作为迭代升级。";
|
||||
$lang->upgrade->mergeRepoTips = "将选中的版本库归并到所选产品下。";
|
||||
$lang->upgrade->needBuild4Add = '本次升级需要创建索引。请到 [后台->系统->重建索引] 页面,重新创建索引。';
|
||||
$lang->upgrade->needChangeEngine = '本次升级需要更换表引擎, [后台->系统->表引擎] 页面更换引擎。';
|
||||
@@ -148,22 +106,22 @@ $lang->upgrade->moveExtFileTip = <<<EOT
|
||||
EOT;
|
||||
|
||||
$lang->upgrade->projectType['project'] = "把历史的{$lang->projectCommon}作为项目升级";
|
||||
$lang->upgrade->projectType['execution'] = "把历史的{$lang->projectCommon}作为执行升级";
|
||||
$lang->upgrade->projectType['execution'] = "把历史的{$lang->projectCommon}作为迭代升级";
|
||||
|
||||
$lang->upgrade->createProjectTip = <<<EOT
|
||||
<p>升级后历史的{$lang->projectCommon}一一对应新版本中的项目。</p>
|
||||
<p>系统会根据历史{$lang->projectCommon}分别创建一个与该{$lang->projectCommon}同名的执行,并将之前{$lang->projectCommon}的任务、需求、Bug等数据迁移至执行中。</p>
|
||||
<p>系统会根据历史{$lang->projectCommon}分别创建一个与该{$lang->projectCommon}同名的迭代,并将之前{$lang->projectCommon}的任务、需求、Bug等数据迁移至迭代中。</p>
|
||||
EOT;
|
||||
|
||||
$lang->upgrade->createExecutionTip = <<<EOT
|
||||
<p>系统会把历史的{$lang->projectCommon}作为执行进行升级。</p>
|
||||
<p>升级后历史的{$lang->projectCommon}数据将对应新版本中项目下的执行。</p>
|
||||
<p>系统会把历史的{$lang->projectCommon}作为迭代进行升级。</p>
|
||||
<p>升级后历史的{$lang->projectCommon}数据将对应新版本中项目下的迭代。</p>
|
||||
EOT;
|
||||
|
||||
$lang->upgrade->mergeModes = array();
|
||||
$lang->upgrade->mergeModes['project'] = '自动归并数据,将历史的项目作为项目升级';
|
||||
$lang->upgrade->mergeModes['execution'] = '自动归并数据,将历史的项目作为迭代升级';
|
||||
$lang->upgrade->mergeModes['manually'] = '手工归并数据';
|
||||
$lang->upgrade->mergeModes['manually'] = '手工归并数据';
|
||||
|
||||
$lang->upgrade->mergeProjectTip = '历史的项目将直接同步到新版本的项目中,同时系统将会根据历史项目分别创建一个与该项目同名的迭代,并将之前项目下的任务、需求、Bug等数据迁移至迭代中。';
|
||||
$lang->upgrade->mergeExecutionTip = '系统将自动按年创建项目,将历史的迭代数据按照年份归并到对应的项目下。';
|
||||
|
||||
@@ -5530,7 +5530,6 @@
|
||||
,upgrade/view/mergebysprint.html.php,
|
||||
,upgrade/view/mergeprogram.html.php,
|
||||
,upgrade/view/mergerepo.html.php,
|
||||
,upgrade/view/mergetips.html.php,
|
||||
,upgrade/view/renameobject.html.php,
|
||||
,upgrade/view/selectversion.html.php,
|
||||
,user/config.php,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class='alert alert-info'>
|
||||
<?php
|
||||
printf($lang->upgrade->mergeSummary, $noMergedProductCount, $noMergedSprintCount);
|
||||
echo '<br />' . $lang->upgrade->mergeByProductLine;
|
||||
echo '<br />' . $lang->upgrade->mergeByProject;
|
||||
?>
|
||||
</div>
|
||||
<div class='main-row mergeByLine'>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<div class='alert alert-info'>
|
||||
<?php
|
||||
printf($lang->upgrade->mergeSummary, $noMergedProductCount, $noMergedSprintCount);
|
||||
echo '<br />' . $lang->upgrade->mergeByProduct;
|
||||
echo '<br />' . $lang->upgrade->mergeByProject;
|
||||
?>
|
||||
</div>
|
||||
<div class='main-row'>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<div class='alert alert-info'>
|
||||
<?php
|
||||
printf($lang->upgrade->mergeSummary, $noMergedProductCount, $noMergedSprintCount);
|
||||
if($type == 'sprint') echo '<br />' . $lang->upgrade->mergeByProject;
|
||||
if($type == 'moreLink') echo '<br />' . $lang->upgrade->mergeByMoreLink;
|
||||
echo '<br />' . $lang->upgrade->mergeByProject;
|
||||
?>
|
||||
</div>
|
||||
<div class='main-row'>
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The to20 view file of upgrade module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package upgrade
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<div class='container'>
|
||||
<div class='panel' style='padding:20px;'>
|
||||
<div class='panel-title text-center'><?php echo $lang->upgrade->mergeTips;?></div>
|
||||
<div class='panel-body'>
|
||||
<?php echo $lang->upgrade->mergeProgramDesc;?>
|
||||
</div>
|
||||
<div class='panel-footer text-center'>
|
||||
<?php echo html::a($this->createLink('upgrade', 'mergeProgram'), $lang->upgrade->mergeProgram, '', "class='btn btn-primary'");?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
Reference in New Issue
Block a user