Merge branch '15.0.beta3' of http://gitlab.zcorp.cc/easycorp/zentaopms into 15.0.beta3
This commit is contained in:
@@ -3,3 +3,6 @@ ALTER TABLE `zt_webhook` CHANGE `executions` `executions` text NOT NULL;
|
||||
ALTER TABLE `zt_projectcase` ADD `count` mediumint(8) unsigned NOT NULL DEFAULT '1' AFTER `case`;
|
||||
|
||||
ALTER TABLE `zt_repo` ADD `extra` char(30) COLLATE 'utf8_general_ci' NOT NULL AFTER `desc`;
|
||||
|
||||
UPDATE `zt_config` set `value`='program-browse' where `key`='programLink' and `value`='program-pgmbrowse';
|
||||
UPDATE `zt_config` set `value`='project-browse' where `key`='projectLink' and `value`='program-prjbrowse';
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
-- DROP TABLE IF EXISTS `zt_storyreview`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_storyreview` (
|
||||
`story` mediumint(9) NOT NULL,
|
||||
`version` smallint(6) NOT NULL,
|
||||
`reviewer` varchar(30) NOT NULL,
|
||||
`result` varchar(30) NOT NULL,
|
||||
`reivewDate` datetime NOT NULL,
|
||||
UNIQUE KEY `story` (`story`,`version`,`reviewer`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
|
||||
ALTER TABLE `zt_project` CHANGE `lifetime` `lifetime` char(30) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `zt_story` ADD `category` varchar(30) NOT NULL DEFAULT 'feature' AFTER `type`;
|
||||
ALTER TABLE `zt_testtask` ADD `type` varchar(255) NOT NULL DEFAULT '' AFTER `build`;
|
||||
|
||||
@@ -863,6 +863,15 @@ CREATE TABLE IF NOT EXISTS `zt_storyspec` (
|
||||
`verify` text NOT NULL,
|
||||
UNIQUE KEY `story` (`story`,`version`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_storyreview`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_storyreview` (
|
||||
`story` mediumint(9) NOT NULL,
|
||||
`version` smallint(6) NOT NULL,
|
||||
`reviewer` varchar(30) NOT NULL,
|
||||
`result` varchar(30) NOT NULL,
|
||||
`reivewDate` datetime NOT NULL,
|
||||
UNIQUE KEY `story` (`story`,`version`,`reviewer`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_storystage`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_storystage` (
|
||||
`story` mediumint(8) unsigned NOT NULL,
|
||||
|
||||
@@ -160,6 +160,7 @@ $lang->bug->createBuild = '創建';
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendPRJExecStoryTask = "項目/" . $lang->executionCommon . "/{$lang->SRCommon}/任務";
|
||||
$lang->bug->legendExecStoryTask = $lang->executionCommon . "/{$lang->SRCommon}/任務";
|
||||
$lang->bug->lblTypeAndSeverity = '類型/嚴重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系統/瀏覽器';
|
||||
|
||||
@@ -59,6 +59,11 @@ class custom extends control
|
||||
$this->view->unitList = explode(',', $unitList);
|
||||
$this->view->defaultCurrency = zget($this->config->$module, 'defaultCurrency', 'CNY');
|
||||
}
|
||||
if($module == 'story' and $field == 'reviewRules')
|
||||
{
|
||||
$this->app->loadConfig($module);
|
||||
$this->view->reviewRule = zget($this->config->$module, 'reviewRules', '1');
|
||||
}
|
||||
if(($module == 'story' or $module == 'testcase') and $field == 'review')
|
||||
{
|
||||
$this->app->loadConfig($module);
|
||||
@@ -106,6 +111,11 @@ class custom extends control
|
||||
$data = fixer::input('post')->join('forceReview', ',')->get();
|
||||
$this->loadModel('setting')->setItems("system.$module", $data);
|
||||
}
|
||||
elseif($module == 'story' and $field == 'reviewRules')
|
||||
{
|
||||
$data = fixer::input('post')->get();
|
||||
$this->loadModel('setting')->setItems("system.$module", $data);
|
||||
}
|
||||
elseif($module == 'testcase' and $field == 'review')
|
||||
{
|
||||
$review = fixer::input('post')->get();
|
||||
|
||||
@@ -43,6 +43,7 @@ $lang->custom->browseStoryConcept = "List of story concepts";
|
||||
$lang->custom->deleteStoryConcept = "Delete story Concept";
|
||||
$lang->custom->URConcept = "UR Concept";
|
||||
$lang->custom->SRConcept = "SR Concept";
|
||||
$lang->custom->reviewRule = 'Review Rules';
|
||||
$lang->custom->switch = "Switch";
|
||||
$lang->custom->oneUnit = "One {$lang->hourCommon}";
|
||||
$lang->custom->convertRelationTitle = "Please set the conversion factor of {$lang->hourCommon} to %s first";
|
||||
@@ -247,3 +248,6 @@ $lang->custom->conceptOptions->hourPoint['2'] = 'Function Point';
|
||||
|
||||
$lang->custom->scrum = new stdclass();
|
||||
$lang->custom->scrum->setConcept = 'Set concept';
|
||||
|
||||
$lang->custom->reviewRules[1] = 'All passed';
|
||||
$lang->custom->reviewRules[0] = 'More than half passed';
|
||||
|
||||
@@ -43,6 +43,7 @@ $lang->custom->browseStoryConcept = "List of story concepts";
|
||||
$lang->custom->deleteStoryConcept = "Delete story Concept";
|
||||
$lang->custom->URConcept = "UR Concept";
|
||||
$lang->custom->SRConcept = "SR Concept";
|
||||
$lang->custom->reviewRule = 'Review Rules';
|
||||
$lang->custom->switch = "Switch";
|
||||
$lang->custom->oneUnit = "One {$lang->hourCommon}";
|
||||
$lang->custom->convertRelationTitle = "Please set the conversion factor of {$lang->hourCommon} to %s first";
|
||||
@@ -248,3 +249,6 @@ $lang->custom->conceptOptions->hourPoint['2'] = 'Function Point';
|
||||
|
||||
$lang->custom->scrum = new stdclass();
|
||||
$lang->custom->scrum->setConcept = 'Set concept';
|
||||
|
||||
$lang->custom->reviewRules[1] = 'All passed';
|
||||
$lang->custom->reviewRules[0] = 'More than half passed';
|
||||
|
||||
@@ -43,6 +43,7 @@ $lang->custom->browseStoryConcept = "List of story concepts";
|
||||
$lang->custom->deleteStoryConcept = "Delete story Concept";
|
||||
$lang->custom->URConcept = "UR Concept";
|
||||
$lang->custom->SRConcept = "SR Concept";
|
||||
$lang->custom->reviewRule = 'Review Rules';
|
||||
$lang->custom->switch = "Switch";
|
||||
$lang->custom->oneUnit = "One {$lang->hourCommon}";
|
||||
$lang->custom->convertRelationTitle = "Please set the conversion factor of {$lang->hourCommon} to %s first";
|
||||
@@ -247,3 +248,6 @@ $lang->custom->conceptOptions->hourPoint['2'] = 'Function Point';
|
||||
|
||||
$lang->custom->scrum = new stdclass();
|
||||
$lang->custom->scrum->setConcept = 'Set concept';
|
||||
|
||||
$lang->custom->reviewRules[1] = 'All passed';
|
||||
$lang->custom->reviewRules[0] = 'More than half passed';
|
||||
|
||||
@@ -43,6 +43,7 @@ $lang->custom->browseStoryConcept = "List of story concepts";
|
||||
$lang->custom->deleteStoryConcept = "Delete story Concept";
|
||||
$lang->custom->URConcept = "UR Concept";
|
||||
$lang->custom->SRConcept = "SR Concept";
|
||||
$lang->custom->reviewRule = 'Review Rules';
|
||||
$lang->custom->switch = "Switch";
|
||||
$lang->custom->oneUnit = "One {$lang->hourCommon}";
|
||||
$lang->custom->convertRelationTitle = "Please set the conversion factor of {$lang->hourCommon} to %s first";
|
||||
@@ -247,3 +248,6 @@ $lang->custom->conceptOptions->hourPoint['2'] = 'Function Point';
|
||||
|
||||
$lang->custom->scrum = new stdclass();
|
||||
$lang->custom->scrum->setConcept = 'Set concept';
|
||||
|
||||
$lang->custom->reviewRules[1] = 'All passed';
|
||||
$lang->custom->reviewRules[0] = 'More than half passed';
|
||||
|
||||
@@ -43,6 +43,7 @@ $lang->custom->browseStoryConcept = "需求概念列表";
|
||||
$lang->custom->deleteStoryConcept = "删除需求概念";
|
||||
$lang->custom->URConcept = "用需概念";
|
||||
$lang->custom->SRConcept = "软需概念";
|
||||
$lang->custom->reviewRule = "评审规则";
|
||||
$lang->custom->switch = "切换";
|
||||
$lang->custom->oneUnit = "一个{$lang->hourCommon}";
|
||||
$lang->custom->convertRelationTitle = "请先设置{$lang->hourCommon}转换为%s的换算系数";
|
||||
@@ -102,6 +103,7 @@ $lang->custom->story->fields['sourceList'] = '来源';
|
||||
$lang->custom->story->fields['reasonList'] = '关闭原因';
|
||||
$lang->custom->story->fields['stageList'] = '阶段';
|
||||
$lang->custom->story->fields['statusList'] = '状态';
|
||||
$lang->custom->story->fields['reviewRules'] = '评审规则';
|
||||
$lang->custom->story->fields['reviewResultList'] = '评审结果';
|
||||
$lang->custom->story->fields['review'] = '评审流程';
|
||||
|
||||
@@ -248,3 +250,6 @@ $lang->custom->conceptOptions->hourPoint['2'] = '功能点';
|
||||
|
||||
$lang->custom->scrum = new stdclass();
|
||||
$lang->custom->scrum->setConcept = '设置项目概念';
|
||||
|
||||
$lang->custom->reviewRules[1] = '全部通过通过';
|
||||
$lang->custom->reviewRules[0] = '半数以上通过通过';
|
||||
|
||||
@@ -43,6 +43,7 @@ $lang->custom->browseStoryConcept = "需求概念列表";
|
||||
$lang->custom->deleteStoryConcept = "刪除需求概念";
|
||||
$lang->custom->URConcept = "用需概念";
|
||||
$lang->custom->SRConcept = "軟需概念";
|
||||
$lang->custom->reviewRule = '評審規則';
|
||||
$lang->custom->switch = "切換";
|
||||
$lang->custom->oneUnit = "一個{$lang->hourCommon}";
|
||||
$lang->custom->convertRelationTitle = "請先設置{$lang->hourCommon}轉換為%s的換算係數";
|
||||
@@ -248,3 +249,6 @@ $lang->custom->conceptOptions->hourPoint['2'] = '功能點';
|
||||
|
||||
$lang->custom->scrum = new stdclass();
|
||||
$lang->custom->scrum->setConcept = '設置項目概念';
|
||||
|
||||
$lang->custom->reviewRules[1] = '全部通過通過';
|
||||
$lang->custom->reviewRules[0] = '半數以上通過通過';
|
||||
|
||||
@@ -70,6 +70,17 @@ EOT;
|
||||
<td colspan='4' class='text-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php elseif($module == 'story' and $field == 'reviewRules'):?>
|
||||
<table class='table table-form mw-700px'>
|
||||
<tr>
|
||||
<th class='thWidth'><?php echo $lang->custom->reviewRule;?></th>
|
||||
<td><?php echo html::radio('reviewRules', $lang->custom->reviewRules, $reviewRule);?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='text-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php elseif(($module == 'story' or $module == 'testcase') and $field == 'review'):?>
|
||||
<table class='table table-form mw-800px'>
|
||||
<tr>
|
||||
|
||||
@@ -187,6 +187,7 @@
|
||||
<?php endif;?>
|
||||
<th class='c-pri {sorter:false}'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class='c-name {sorter:false}'> <?php common::printOrderLink('title', $orderBy, $vars, $lang->execution->storyTitle);?></th>
|
||||
<th class='w-70px {sorter:false}'><?php common::printOrderLink('category', $orderBy, $vars, $lang->story->category);?></th>
|
||||
<th class='c-user {sorter:false}'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
|
||||
<th class='c-user {sorter:false}'> <?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->assignedToAB);?></th>
|
||||
<th class='c-estimate w-80px {sorter:false} text-right'> <?php common::printOrderLink('estimate', $orderBy, $vars, $lang->story->estimateAB);?></th>
|
||||
@@ -222,6 +223,7 @@
|
||||
<?php if($story->parent > 0) echo "<span class='label'>{$lang->story->childrenAB}</span>";?>
|
||||
<?php echo html::a($storyLink,$story->title, null, "style='color: $story->color' data-app='execution'");?>
|
||||
</td>
|
||||
<td class='c-name' title='<?php echo zget($lang->story->categoryList, $story->category);?>'><?php echo zget($lang->story->categoryList, $story->category);?></td>
|
||||
<td class='c-user' title='<?php echo zget($users, $story->openedBy);?>'><?php echo zget($users, $story->openedBy);?></td>
|
||||
<td class='c-user' title='<?php echo zget($users, $story->assignedTo);?>'><?php echo zget($users, $story->assignedTo);?></td>
|
||||
<td class='c-estimate text-right' title="<?php echo $story->estimate . ' ' . $lang->hourCommon;?>"><?php echo $story->estimate . $config->hourUnit;?></td>
|
||||
|
||||
+33
-33
@@ -15,39 +15,39 @@ class gitModel extends model
|
||||
{
|
||||
/**
|
||||
* The git binary client.
|
||||
*
|
||||
* @var int
|
||||
*
|
||||
* @var int
|
||||
* @access public
|
||||
*/
|
||||
public $client;
|
||||
|
||||
/**
|
||||
* Repos.
|
||||
*
|
||||
* @var array
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
*/
|
||||
public $repos = array();
|
||||
public $repos = array();
|
||||
|
||||
/**
|
||||
* The root path of a repo
|
||||
*
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $repoRoot = '';
|
||||
|
||||
/**
|
||||
* Users
|
||||
*
|
||||
* @var array
|
||||
* Users
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
*/
|
||||
public $users = array();
|
||||
|
||||
/**
|
||||
* Construct function.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -59,8 +59,8 @@ class gitModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Run.
|
||||
*
|
||||
* Run.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -196,13 +196,13 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Set the repos.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setRepos()
|
||||
{
|
||||
$repos = $this->loadModel('repo')->getListBySCM('Git');
|
||||
$repos = $this->loadModel('repo')->getListBySCM('Git,Gitlab');
|
||||
$gitRepos = array();
|
||||
$paths = array();
|
||||
foreach($repos as $repo)
|
||||
@@ -224,7 +224,7 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Get repos.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
@@ -239,8 +239,8 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Set repo.
|
||||
*
|
||||
* @param object $repo
|
||||
*
|
||||
* @param object $repo
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
@@ -269,10 +269,10 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* set the root path of a repo.
|
||||
*
|
||||
* @param object $repo
|
||||
*
|
||||
* @param object $repo
|
||||
* @access public
|
||||
* @return void
|
||||
* @return void
|
||||
*/
|
||||
public function setRepoRoot($repo)
|
||||
{
|
||||
@@ -295,9 +295,9 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Get repo logs.
|
||||
*
|
||||
* @param object $repo
|
||||
* @param int $fromRevision
|
||||
*
|
||||
* @param object $repo
|
||||
* @param int $fromRevision
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
@@ -323,8 +323,8 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Convert log from xml format to object.
|
||||
*
|
||||
* @param object $log
|
||||
*
|
||||
* @param object $log
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
@@ -365,9 +365,9 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Diff a url.
|
||||
*
|
||||
*
|
||||
* @param string $path
|
||||
* @param int $revision
|
||||
* @param int $revision
|
||||
* @access public
|
||||
* @return string|bool
|
||||
*/
|
||||
@@ -407,9 +407,9 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Cat a url.
|
||||
*
|
||||
*
|
||||
* @param string $path
|
||||
* @param int $revision
|
||||
* @param int $revision
|
||||
* @access public
|
||||
* @return string|bool
|
||||
*/
|
||||
@@ -448,8 +448,8 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Get repo by url.
|
||||
*
|
||||
* @param string $url
|
||||
*
|
||||
* @param string $url
|
||||
* @access public
|
||||
* @return object|bool
|
||||
*/
|
||||
@@ -465,8 +465,8 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Pring log.
|
||||
*
|
||||
* @param sting $log
|
||||
*
|
||||
* @param sting $log
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?php
|
||||
$config->message->objectTypes = array();
|
||||
$config->message->objectTypes['product'] = array('opened', 'edited', 'closed', 'undeleted');
|
||||
$config->message->objectTypes['product'] = array('opened', 'edited', 'closed', 'undeleted');
|
||||
$config->message->objectTypes['story'] = array('opened', 'edited', 'commented', 'frombug', 'changed', 'reviewed', 'closed', 'activated', 'assigned');
|
||||
$config->message->objectTypes['productplan'] = array('opened', 'edited');
|
||||
$config->message->objectTypes['productplan'] = array('opened', 'edited');
|
||||
$config->message->objectTypes['project'] = array('opened', 'edited', 'started', 'delayed', 'suspended', 'closed', 'activated', 'undeleted');
|
||||
$config->message->objectTypes['task'] = array('opened', 'edited', 'commented', 'assigned', 'confirmed', 'started', 'finished', 'paused', 'canceled', 'restarted', 'closed', 'activated');
|
||||
$config->message->objectTypes['bug'] = array('opened', 'edited', 'commented', 'assigned', 'confirmed', 'bugconfirmed', 'resolved', 'closed', 'activated');
|
||||
|
||||
@@ -208,7 +208,7 @@ class repoModel extends model
|
||||
public function getListBySCM($scm, $type = 'all')
|
||||
{
|
||||
$repos = $this->dao->select('*')->from(TABLE_REPO)->where('deleted')->eq('0')
|
||||
->andWhere('SCM')->eq($scm)
|
||||
->andWhere('SCM')->in($scm)
|
||||
->andWhere('synced')->eq(1)
|
||||
->orderBy('id')
|
||||
->fetchAll();
|
||||
@@ -1769,7 +1769,7 @@ class repoModel extends model
|
||||
return $buildedURL;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Get gitlab projects.
|
||||
*
|
||||
* @param string $host
|
||||
@@ -1778,18 +1778,18 @@ class repoModel extends model
|
||||
* @return array
|
||||
*/
|
||||
public function getGitlabProjects($host, $token)
|
||||
{
|
||||
{
|
||||
$host = rtrim($host, '/');
|
||||
$host .= '/api/v4/projects';
|
||||
|
||||
$allResults = array();
|
||||
for($page = 1; true; $page ++)
|
||||
{
|
||||
{
|
||||
$results = json_decode(file_get_contents($host . "?private_token=$token&page={$page}&per_page=100"));
|
||||
if(empty($results)) break;
|
||||
$allResults = $allResults + $results;
|
||||
}
|
||||
}
|
||||
|
||||
return $allResults;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,6 +90,11 @@ $config->story->datatable->fieldList['sourceNote']['fixed'] = 'no';
|
||||
$config->story->datatable->fieldList['sourceNote']['width'] = '90';
|
||||
$config->story->datatable->fieldList['sourceNote']['required'] = 'no';
|
||||
|
||||
$config->story->datatable->fieldList['category']['title'] = 'category';
|
||||
$config->story->datatable->fieldList['category']['fixed'] = 'no';
|
||||
$config->story->datatable->fieldList['category']['width'] = '60';
|
||||
$config->story->datatable->fieldList['category']['required'] = 'no';
|
||||
|
||||
$config->story->datatable->fieldList['status']['title'] = 'statusAB';
|
||||
$config->story->datatable->fieldList['status']['fixed'] = 'no';
|
||||
$config->story->datatable->fieldList['status']['width'] = '60';
|
||||
|
||||
@@ -384,6 +384,7 @@ class storyModel extends model
|
||||
$story->color = $stories->color[$i];
|
||||
$story->title = $stories->title[$i];
|
||||
$story->source = $stories->source[$i];
|
||||
$story->category = $stories->category[$i];
|
||||
$story->pri = $stories->pri[$i];
|
||||
$story->estimate = $stories->estimate[$i];
|
||||
$story->status = ($stories->needReview[$i] == 0 and !$forceReview) ? 'active' : 'draft';
|
||||
@@ -1022,6 +1023,7 @@ class storyModel extends model
|
||||
$story->color = $data->colors[$storyID];
|
||||
$story->title = $data->titles[$storyID];
|
||||
$story->estimate = $data->estimates[$storyID];
|
||||
$story->category = $data->category[$storyID];
|
||||
$story->pri = $data->pris[$storyID];
|
||||
$story->assignedTo = $data->assignedTo[$storyID];
|
||||
$story->assignedDate = $oldStory == $data->assignedTo[$storyID] ? $oldStory->assignedDate : $now;
|
||||
@@ -3330,6 +3332,10 @@ class storyModel extends model
|
||||
$title = $story->sourceNote;
|
||||
$class .= ' text-ellipsis';
|
||||
}
|
||||
else if($id == 'category')
|
||||
{
|
||||
$title = zget($this->lang->story->categoryList, $story->category);
|
||||
}
|
||||
else if($id == 'estimate')
|
||||
{
|
||||
$title = $story->estimate . ' ' . $this->lang->hourCommon;
|
||||
@@ -3402,6 +3408,9 @@ class storyModel extends model
|
||||
case 'sourceNote':
|
||||
echo $story->sourceNote;
|
||||
break;
|
||||
case 'category':
|
||||
echo zget($this->lang->story->categoryList, $story->category);
|
||||
break;
|
||||
case 'status':
|
||||
if($story->URChanged)
|
||||
{
|
||||
@@ -4001,7 +4010,6 @@ class storyModel extends model
|
||||
$storyLang->copyTitle = str_replace($SRCommon, $URCommon, $storyLang->copyTitle);
|
||||
$storyLang->common = str_replace($SRCommon, $URCommon, $storyLang->common);
|
||||
$storyLang->title = str_replace($SRCommon, $URCommon, $storyLang->title);
|
||||
$storyLang->type = str_replace($SRCommon, $URCommon, $storyLang->type);
|
||||
$storyLang->spec = str_replace($SRCommon, $URCommon, $storyLang->spec);
|
||||
$storyLang->children = str_replace($SRCommon, $URCommon, $storyLang->children);
|
||||
$storyLang->linkStories = str_replace($SRCommon, $URCommon, $storyLang->linkStories);
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'source', ' hidden') . zget($requiredFields, 'source', '', ' required');?>'><?php echo $lang->story->source;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'source', ' hidden') . zget($requiredFields, 'sourceNote', '', ' required');?>'><?php echo $lang->story->sourceNote;?></th>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'verify', ' hidden') . zget($requiredFields, 'verify', '', ' required');?>'><?php echo $lang->story->verify;?></th>
|
||||
<th class='w-90px'><?php echo $lang->story->category;?></th>
|
||||
<th class='col-pri<?php echo zget($visibleFields, 'pri', ' hidden') . zget($requiredFields, 'pri', '', ' required');?>'><?php echo $lang->story->pri;?></th>
|
||||
<th class='col-estimate<?php echo zget($visibleFields, 'estimate', ' hidden') . zget($requiredFields, 'estimate', '', ' required');?>'><?php echo $lang->story->estimate;?></th>
|
||||
<th class='col-review<?php echo zget($visibleFields, 'review', ' hidden') . zget($requiredFields, 'review', '', ' required');?>'><?php echo $lang->story->needReview;?></th>
|
||||
@@ -90,6 +91,7 @@
|
||||
<td class='text-left<?php echo zget($visibleFields, 'source', ' hidden')?>'><?php echo html::select('source[$id]', $sourceList, '', "class='form-control'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'source', 'hidden')?>'><?php echo html::input('sourceNote[$id]', '', "class='form-control'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'verify', 'hidden')?>'><textarea name="verify[$id]" id="verify$id" rows="1" class="form-control autosize"></textarea></td>
|
||||
<td class='text-left' style='overflow:visible'><?php echo html::select('category[$id]', $lang->story->categoryList, 'feature', "class='form-control chosen'");?></td>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'pri', ' hidden')?>' style='overflow:visible'><?php echo html::select('pri[$id]', $priList, $pri, "class='form-control chosen'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'estimate', 'hidden')?>'><?php echo html::input('estimate[$id]', $estimate, "class='form-control'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'review', 'hidden')?>'><?php echo html::select('needReview[$id]', $lang->story->reviewList, $needReview, "class='form-control'");?></td>
|
||||
|
||||
@@ -48,6 +48,7 @@ foreach(explode(',', $showFields) as $field)
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'plan', ' hidden')?> col-plan'><?php echo $lang->story->planAB;?></th>
|
||||
<th class='w-150px required'><?php echo $lang->story->title;?></th>
|
||||
<th class='w-50px<?php echo zget($visibleFields, 'estimate', ' hidden')?>'> <?php echo $lang->story->estimateAB;?></th>
|
||||
<th class='w-90px'><?php echo $lang->story->category;?></th>
|
||||
<th class='w-70px<?php echo zget($visibleFields, 'pri', ' hidden')?>'> <?php echo $lang->priAB;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'assignedTo', ' hidden')?>'> <?php echo $lang->story->assignedTo;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'source', ' hidden')?>'> <?php echo $lang->story->source;?></th>
|
||||
@@ -123,6 +124,7 @@ foreach(explode(',', $showFields) as $field)
|
||||
</td>
|
||||
|
||||
<td <?php echo zget($visibleFields, 'estimate', "class='hidden'")?>><?php echo html::input("estimates[$storyID]", $story->estimate, "class='form-control'"); ?></td>
|
||||
<td><?php echo html::select("category[$storyID]", $lang->story->categoryList, $story->category, 'class=form-control chosen');?></td>
|
||||
<td <?php echo zget($visibleFields, 'pri', "class='hidden'")?>><?php echo html::select("pris[$storyID]", $priList, $story->pri, 'class=form-control');?></td>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'assignedTo', ' hidden')?>'><?php echo html::select("assignedTo[$storyID]", $users, $story->assignedTo, "class='form-control chosen'");?></td>
|
||||
<td <?php echo zget($visibleFields, 'source', "class='hidden'")?>><?php echo html::select("sources[$storyID]", $sourceList, $story->source, 'class=form-control');?></td>
|
||||
|
||||
@@ -166,6 +166,10 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->category;?></th>
|
||||
<td><?php echo html::select('category', $lang->story->categoryList, $story->category, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->pri;?></th>
|
||||
<td><?php echo html::select('pri', $lang->story->priList, $story->pri, "class='form-control chosen'");?></td>
|
||||
|
||||
@@ -335,6 +335,10 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->category;?></th>
|
||||
<td><?php echo $lang->story->categoryList[$story->category];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->pri;?></th>
|
||||
<td><span class='label-pri <?php echo 'label-pri-' . $story->pri;?>' title='<?php echo zget($lang->story->priList, $story->pri)?>'><?php echo zget($lang->story->priList, $story->pri)?></span></td>
|
||||
|
||||
@@ -61,7 +61,7 @@ $lang->testtask->id = '編號';
|
||||
$lang->testtask->common = '測試單';
|
||||
$lang->testtask->product = '所屬' . $lang->productCommon;
|
||||
$lang->testtask->project = '所屬項目';
|
||||
$lang->testtask->execution = '所屬' . $lang->executionCommon;
|
||||
$lang->testtask->execution = '所屬' . $lang->execution->common;
|
||||
$lang->testtask->type = '測試類型';
|
||||
$lang->testtask->build = '版本';
|
||||
$lang->testtask->owner = '負責人';
|
||||
|
||||
@@ -23,7 +23,8 @@ class upgrade extends control
|
||||
$upgradeFile = $this->app->wwwRoot . 'upgrade.php';
|
||||
if(!file_exists($upgradeFile)) $this->locate($this->createLink('my', 'index'));
|
||||
|
||||
if(!$this->config->systemMode && !isset($this->config->qcVersion))
|
||||
$systemMode = $this->loadModel('setting')->getItem('owner=system&module=common§ion=global&key=mode');
|
||||
if(empty($systemMode) && !isset($this->config->qcVersion))
|
||||
{
|
||||
/* Judge upgrade step. */
|
||||
$upgradeStep = $this->loadModel('setting')->getItem('owner=system&module=common§ion=global&key=upgradeStep');
|
||||
@@ -134,7 +135,12 @@ class upgrade extends control
|
||||
|
||||
if(!$this->upgrade->isError())
|
||||
{
|
||||
if(!$this->config->systemMode && !isset($this->config->qcVersion) && strpos($fromVersion, 'max') === false) $this->locate(inlink('to15Guide', "fromVersion=$fromVersion"));
|
||||
$systemMode = $this->loadModel('setting')->getItem('owner=system&module=common§ion=global&key=mode');
|
||||
if((empty($systemMode) && !isset($this->config->qcVersion) && strpos($fromVersion, 'max') === false) or
|
||||
($systemMode != 'new' && strpos($fromVersion, 'max') === false && strpos($this->config->version, 'max') !== false))
|
||||
{
|
||||
$this->locate(inlink('to15Guide', "fromVersion=$fromVersion"));
|
||||
}
|
||||
$this->locate(inlink('afterExec', "fromVersion=$fromVersion"));
|
||||
}
|
||||
|
||||
@@ -161,14 +167,19 @@ class upgrade extends control
|
||||
if($mode == 'new') $this->locate(inlink('mergeTips'));
|
||||
}
|
||||
|
||||
if(isset($this->config->bizVersion))
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', '5', $this->lang->upgrade->to15Desc);
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', 'Max', $this->lang->upgrade->to15Desc);
|
||||
$title = $this->lang->upgrade->toMAXGuide;
|
||||
}
|
||||
elseif(isset($this->config->bizVersion))
|
||||
{
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', 'Biz5', $this->lang->upgrade->to15Desc);
|
||||
$title = $this->lang->upgrade->toBIZ5Guide;
|
||||
}
|
||||
elseif(isset($this->config->proVersion))
|
||||
{
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', '10', $this->lang->upgrade->to15Desc);
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', 'Pro10', $this->lang->upgrade->to15Desc);
|
||||
$title = $this->lang->upgrade->toPRO10Guide;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->upgrade->mergeTips = 'Data Migration Tips';
|
||||
$lang->upgrade->toPMS15Guide = 'ZenTao open source version 15.0.beta1 upgrade';
|
||||
$lang->upgrade->toPRO10Guide = 'ZenTao profession version 10.0.rc1 upgrade';
|
||||
$lang->upgrade->toBIZ5Guide = 'ZenTao enterprise version 5.0.rc1 upgrade';
|
||||
$lang->upgrade->toMAX5Guide = 'ZenTao ultimate version upgrade';
|
||||
$lang->upgrade->to15Desc = <<<EOD
|
||||
<p>Dear users, ZenTao has made adjustments to navigation and concepts since version 15. The main changes are as follows:</p>
|
||||
<ol>
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->upgrade->mergeTips = '数据迁移提示';
|
||||
$lang->upgrade->toPMS15Guide = '禅道开源版15版本升级';
|
||||
$lang->upgrade->toPRO10Guide = '禅道专业版10版本升级';
|
||||
$lang->upgrade->toBIZ5Guide = '禅道企业版5版本升级';
|
||||
$lang->upgrade->toMAXGuide = '禅道旗舰版版本升级';
|
||||
$lang->upgrade->to15Desc = <<<EOD
|
||||
<p>尊敬的用户,禅道从15版本开始对导航和概念做了调整,主要改动如下:</p>
|
||||
<ol>
|
||||
|
||||
@@ -53,7 +53,10 @@ $lang->upgrade->noticeSQL = '檢查到你的資料庫跟標準不一致,
|
||||
$lang->upgrade->afterDeleted = '以上檔案未能刪除, 刪除後刷新!';
|
||||
$lang->upgrade->mergeProgram = '數據遷移';
|
||||
$lang->upgrade->mergeTips = '數據遷移提示';
|
||||
$lang->upgrade->to15Guide = '禪道開源版15版本升級';
|
||||
$lang->upgrade->toPMS15Guide = '禪道開源版15版本升級';
|
||||
$lang->upgrade->toPRO10Guide = '禪道專業版10版本升級';
|
||||
$lang->upgrade->toBIZ5Guide = '禪道企業版5版本升級';
|
||||
$lang->upgrade->toMAXGuide = '禪道旗艦版版本升級';
|
||||
$lang->upgrade->to15Desc = <<<EOD
|
||||
<p>尊敬的用戶,禪道從15版本開始對導航和概念做了調整,主要改動如下:</p>
|
||||
<ol>
|
||||
|
||||
@@ -16,7 +16,11 @@
|
||||
<form method='post'>
|
||||
<div class='panel-title text-center'>
|
||||
<?php
|
||||
if(isset($config->bizVersion))
|
||||
if(isset($config->maxVersion))
|
||||
{
|
||||
echo $lang->upgrade->toMAXGuide;
|
||||
}
|
||||
elseif(isset($config->bizVersion))
|
||||
{
|
||||
echo $lang->upgrade->toBIZ5Guide;
|
||||
}
|
||||
@@ -33,9 +37,10 @@
|
||||
<div class='panel-body'>
|
||||
<div style='width:600px; margin: auto;'>
|
||||
<?php echo $lang->upgrade->to15Desc;?>
|
||||
<?php echo html::radio('mode', $lang->upgrade->to15Mode, 'classic');?>
|
||||
<?php $systemMode = isset($lang->upgrade->to15Mode['classic']) ? 'classic' : 'new';?>
|
||||
<?php echo html::radio('mode', $lang->upgrade->to15Mode, $systemMode);?>
|
||||
<p> </p>
|
||||
<div id='selectedModeTips' class='text-info'><?php echo $lang->upgrade->selectedModeTips['classic'];?></div>
|
||||
<div id='selectedModeTips' class='text-info'><?php echo $lang->upgrade->selectedModeTips[$systemMode];?></div>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
|
||||
Reference in New Issue
Block a user