Merge branch 'sprint/169'
This commit is contained in:
@@ -41,7 +41,7 @@ $lang->api->noUniqueName = '接口库名已存在。';
|
||||
$lang->api->noUniqueVersion = '版本已存在。';
|
||||
$lang->api->version = '版本';
|
||||
$lang->api->createStruct = '创建数据结构';
|
||||
$lang->api->editStruct = '修改数据结构';
|
||||
$lang->api->editStruct = '编辑数据结构';
|
||||
$lang->api->deleteStruct = '删除数据结构';
|
||||
$lang->api->create = '创建接口';
|
||||
$lang->api->title = '接口名称';
|
||||
|
||||
@@ -402,7 +402,15 @@ class bug extends control
|
||||
|
||||
if($this->app->tab == 'execution')
|
||||
{
|
||||
$location = $this->session->bugList ? $this->session->bugList : $this->createLink('execution', 'bug', "executionID={$output['executionID']}");
|
||||
if(!preg_match("/(m=|\/)execution(&f=|-)bug(&|-|\.)?/", $this->session->bugList))
|
||||
{
|
||||
$location = $this->session->bugList;
|
||||
}
|
||||
else
|
||||
{
|
||||
$executionID = $this->post->execution ? $this->post->execution : $output['executionID'];
|
||||
$location = $this->createLink('execution', 'bug', "executionID=$executionID");
|
||||
}
|
||||
}
|
||||
elseif($this->app->tab == 'project')
|
||||
{
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
if($this->app->tab != 'product')
|
||||
{
|
||||
common::printIcon('bug', 'toStory', "product=$bug->product&branch=$bug->branch&module=0&story=0&execution=0&bugID=$bug->id", $bug, 'button', $lang->icons['story'], '', '', '', "data-app='" . $this->app->tab . "'", $lang->bug->toStory);
|
||||
common::printIcon('bug', 'toStory', "product=$bug->product&branch=$bug->branch&module=0&story=0&execution=0&bugID=$bug->id", $bug, 'button', $lang->icons['story'], '', '', '', "data-app='product'", $lang->bug->toStory);
|
||||
common::printIcon('bug', 'createCase', $convertParams, $bug, 'button', 'sitemap');
|
||||
}
|
||||
|
||||
|
||||
@@ -158,7 +158,8 @@ $lang->product->menu->story = array('link' => "$lang->SRCommon|product|browse
|
||||
$lang->product->menu->plan = array('link' => "{$lang->productplan->shortCommon}|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
$lang->product->menu->release = array('link' => "{$lang->release->common}|release|browse|productID=%s", 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = array('link' => "{$lang->roadmap}|product|roadmap|productID=%s");
|
||||
$lang->product->menu->project = array('link' => "{$lang->project->common}|product|project|status=all&productID=%s");
|
||||
if($config->systemMode == 'new') $lang->product->menu->project = array('link' => "{$lang->project->common}|product|project|status=all&productID=%s");
|
||||
if($config->systemMode == 'classic') $lang->product->menu->project = array('link' => "{$lang->execution->common}|product|project|status=all&productID=%s");
|
||||
$lang->product->menu->track = array('link' => "{$lang->track}|story|track|productID=%s");
|
||||
$lang->product->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=product&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->product->menu->dynamic = array('link' => "{$lang->dynamic}|product|dynamic|productID=%s");
|
||||
|
||||
@@ -134,7 +134,7 @@ class compileModel extends model
|
||||
|
||||
if($job->triggerType == 'tag')
|
||||
{
|
||||
$lastTag = $this->getLastTagByRepo($repo);
|
||||
$lastTag = $this->loadModel('job')->getLastTagByRepo($repo);
|
||||
if($lastTag)
|
||||
{
|
||||
$job->lastTag = $lastTag;
|
||||
|
||||
@@ -15,7 +15,7 @@ $lang->gitlab->gitlabAccount = 'GitLab Account';
|
||||
$lang->gitlab->zentaoAccount = 'Zentao Account';
|
||||
$lang->gitlab->bindingStatus = 'Binding Status';
|
||||
$lang->gitlab->binded = 'Binded';
|
||||
$lang->gitlab->serverFail = 'Conntect to GitLab server failed, please check the GitLab server.';
|
||||
$lang->gitlab->serverFail = 'Connect to GitLab server failed, please check the GitLab server.';
|
||||
|
||||
$lang->gitlab->browseAction = 'GitLab List';
|
||||
$lang->gitlab->deleteAction = 'Delete GitLab';
|
||||
|
||||
@@ -386,7 +386,7 @@ class gitlabModel extends model
|
||||
if(is_numeric($host)) $host = $this->getApiRoot($host);
|
||||
if(strpos($host, 'http://') !== 0 and strpos($host, 'https://') !== 0) return false;
|
||||
|
||||
$url = sprintf($apiRoot, $api);
|
||||
$url = sprintf($host, $api);
|
||||
return json_decode(commonModel::http($url, $data, $options));
|
||||
}
|
||||
|
||||
@@ -474,7 +474,7 @@ class gitlabModel extends model
|
||||
*
|
||||
* @param int $gitlabID
|
||||
* @access public
|
||||
* @return void
|
||||
* @return array
|
||||
*/
|
||||
public function apiGetProjects($gitlabID)
|
||||
{
|
||||
@@ -691,6 +691,7 @@ class gitlabModel extends model
|
||||
public function apiUpdateHook($gitlabID, $projectID, $hookID)
|
||||
{
|
||||
$apiRoot = $this->getApiRoot($gitlabID);
|
||||
$url = sprintf($apiRoot, "/projects/{$projectID}/hooks/{$hookID}");
|
||||
|
||||
$postData = new stdclass;
|
||||
$postData->enable_ssl_verification = "false";
|
||||
@@ -699,8 +700,6 @@ class gitlabModel extends model
|
||||
$postData->push_events = "true";
|
||||
$postData->tag_push_events = "true";
|
||||
$postData->note_events = "true";
|
||||
$postData->url = $url;
|
||||
$postData->token = $token;
|
||||
|
||||
$url = sprintf($apiRoot, "/projects/{$projectID}/hooks/{$hookID}");
|
||||
return commonModel::http($url, $postData, $options = array(CURLOPT_CUSTOMREQUEST => 'PUT'));
|
||||
@@ -1249,9 +1248,9 @@ class gitlabModel extends model
|
||||
/**
|
||||
* Create webhook for zentao.
|
||||
*
|
||||
* @param int $products
|
||||
* @param int $gitlabID
|
||||
* @param int $projectID
|
||||
* @param array $products
|
||||
* @param int $gitlabID
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
@@ -1364,7 +1363,7 @@ class gitlabModel extends model
|
||||
if($value) $issue->$field = $value;
|
||||
}
|
||||
|
||||
if($isset($issue->assignee_id) and $issue->assignee_id == 'closed') unset($issue->assignee_id);
|
||||
if(isset($issue->assignee_id) and $issue->assignee_id == 'closed') unset($issue->assignee_id);
|
||||
|
||||
/* issue->state is null when creating it, we should put status_event when updating it. */
|
||||
if(isset($issue->state) and $issue->state == 'closed') $issue->state_event = 'close';
|
||||
|
||||
@@ -27,4 +27,3 @@
|
||||
</div>
|
||||
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
|
||||
@@ -352,7 +352,7 @@ class job extends control
|
||||
if($productLeft == $productRight) $matchedProducts[$productName] = $productRight;
|
||||
}
|
||||
}
|
||||
die(json_encode($matchedProduct));
|
||||
die(json_encode($matchedProducts));
|
||||
}
|
||||
|
||||
$productName = $this->loadModel('product')->getByID($repo->product)->name;
|
||||
|
||||
@@ -364,7 +364,7 @@ class jobModel extends model
|
||||
|
||||
if($job->triggerType == 'tag')
|
||||
{
|
||||
$lastTag = $this->getLastTagByRepo($repo);
|
||||
$lastTag = $this->getLastTagByRepo($repo, $job);
|
||||
if($lastTag)
|
||||
{
|
||||
$build->tag = $lastTag;
|
||||
@@ -430,7 +430,7 @@ class jobModel extends model
|
||||
/**
|
||||
* Exec gitlab pipeline.
|
||||
*
|
||||
* @param int $job
|
||||
* @param object $job
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -473,10 +473,11 @@ class jobModel extends model
|
||||
* Get last tag of one repo.
|
||||
*
|
||||
* @param object $repo
|
||||
* @param object $job
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getLastTagByRepo($repo)
|
||||
public function getLastTagByRepo($repo, $job)
|
||||
{
|
||||
if($repo->SCM == 'Subversion')
|
||||
{
|
||||
|
||||
+23
-22
@@ -18,25 +18,26 @@ $lang->message->browserSetting->turnonList[1] = 'On';
|
||||
$lang->message->browserSetting->turnonList[0] = 'Off';
|
||||
|
||||
$lang->message->label = new stdclass();
|
||||
$lang->message->label->created = 'create';
|
||||
$lang->message->label->opened = 'open';
|
||||
$lang->message->label->changed = 'change';
|
||||
$lang->message->label->edited = 'edit';
|
||||
$lang->message->label->assigned = 'assign';
|
||||
$lang->message->label->closed = 'close';
|
||||
$lang->message->label->deleted = 'delete';
|
||||
$lang->message->label->undeleted = 'restore';
|
||||
$lang->message->label->commented = 'comment';
|
||||
$lang->message->label->activated = 'activate';
|
||||
$lang->message->label->resolved = 'resolve';
|
||||
$lang->message->label->reviewed = 'review';
|
||||
$lang->message->label->confirmed = 'confirm Story';
|
||||
$lang->message->label->fromBug = 'convert from Bug';
|
||||
$lang->message->label->started = 'start';
|
||||
$lang->message->label->delayed = 'delay';
|
||||
$lang->message->label->suspended = 'suspend';
|
||||
$lang->message->label->finished = 'finish';
|
||||
$lang->message->label->paused = 'pause';
|
||||
$lang->message->label->canceled = 'cancel';
|
||||
$lang->message->label->restarted = 'continue';
|
||||
$lang->message->label->blocked = 'block';
|
||||
$lang->message->label->created = 'create';
|
||||
$lang->message->label->opened = 'open';
|
||||
$lang->message->label->changed = 'change';
|
||||
$lang->message->label->edited = 'edit';
|
||||
$lang->message->label->assigned = 'assign';
|
||||
$lang->message->label->closed = 'close';
|
||||
$lang->message->label->deleted = 'delete';
|
||||
$lang->message->label->undeleted = 'restore';
|
||||
$lang->message->label->commented = 'comment';
|
||||
$lang->message->label->activated = 'activate';
|
||||
$lang->message->label->resolved = 'resolve';
|
||||
$lang->message->label->reviewed = 'review';
|
||||
$lang->message->label->confirmed = 'confirm Story';
|
||||
$lang->message->label->frombug = 'convert from Bug';
|
||||
$lang->message->label->started = 'start';
|
||||
$lang->message->label->delayed = 'delay';
|
||||
$lang->message->label->suspended = 'suspend';
|
||||
$lang->message->label->finished = 'finish';
|
||||
$lang->message->label->paused = 'pause';
|
||||
$lang->message->label->canceled = 'cancel';
|
||||
$lang->message->label->restarted = 'continue';
|
||||
$lang->message->label->blocked = 'block';
|
||||
$lang->message->label->bugconfirmed = 'confirm';
|
||||
|
||||
+23
-22
@@ -18,25 +18,26 @@ $lang->message->browserSetting->turnonList[1] = 'On';
|
||||
$lang->message->browserSetting->turnonList[0] = 'Off';
|
||||
|
||||
$lang->message->label = new stdclass();
|
||||
$lang->message->label->created = 'create';
|
||||
$lang->message->label->opened = 'open';
|
||||
$lang->message->label->changed = 'change';
|
||||
$lang->message->label->edited = 'edit';
|
||||
$lang->message->label->assigned = 'assign';
|
||||
$lang->message->label->closed = 'close';
|
||||
$lang->message->label->deleted = 'delete';
|
||||
$lang->message->label->undeleted = 'restore';
|
||||
$lang->message->label->commented = 'comment';
|
||||
$lang->message->label->activated = 'activate';
|
||||
$lang->message->label->resolved = 'resolve';
|
||||
$lang->message->label->reviewed = 'review';
|
||||
$lang->message->label->confirmed = 'confirm Story';
|
||||
$lang->message->label->fromBug = 'convert from Bug';
|
||||
$lang->message->label->started = 'start';
|
||||
$lang->message->label->delayed = 'delay';
|
||||
$lang->message->label->suspended = 'suspend';
|
||||
$lang->message->label->finished = 'finish';
|
||||
$lang->message->label->paused = 'pause';
|
||||
$lang->message->label->canceled = 'cancel';
|
||||
$lang->message->label->restarted = 'continue';
|
||||
$lang->message->label->blocked = 'block';
|
||||
$lang->message->label->created = 'create';
|
||||
$lang->message->label->opened = 'open';
|
||||
$lang->message->label->changed = 'change';
|
||||
$lang->message->label->edited = 'edit';
|
||||
$lang->message->label->assigned = 'assign';
|
||||
$lang->message->label->closed = 'close';
|
||||
$lang->message->label->deleted = 'delete';
|
||||
$lang->message->label->undeleted = 'restore';
|
||||
$lang->message->label->commented = 'comment';
|
||||
$lang->message->label->activated = 'activate';
|
||||
$lang->message->label->resolved = 'resolve';
|
||||
$lang->message->label->reviewed = 'review';
|
||||
$lang->message->label->confirmed = 'confirm Story';
|
||||
$lang->message->label->frombug = 'convert from Bug';
|
||||
$lang->message->label->started = 'start';
|
||||
$lang->message->label->delayed = 'delay';
|
||||
$lang->message->label->suspended = 'suspend';
|
||||
$lang->message->label->finished = 'finish';
|
||||
$lang->message->label->paused = 'pause';
|
||||
$lang->message->label->canceled = 'cancel';
|
||||
$lang->message->label->restarted = 'continue';
|
||||
$lang->message->label->blocked = 'block';
|
||||
$lang->message->label->bugconfirmed = 'confirm';
|
||||
|
||||
+23
-22
@@ -18,25 +18,26 @@ $lang->message->browserSetting->turnonList[1] = 'On';
|
||||
$lang->message->browserSetting->turnonList[0] = 'Off';
|
||||
|
||||
$lang->message->label = new stdclass();
|
||||
$lang->message->label->created = 'create';
|
||||
$lang->message->label->opened = 'open';
|
||||
$lang->message->label->changed = 'change';
|
||||
$lang->message->label->edited = 'edit';
|
||||
$lang->message->label->assigned = 'assign';
|
||||
$lang->message->label->closed = 'close';
|
||||
$lang->message->label->deleted = 'delete';
|
||||
$lang->message->label->undeleted = 'restore';
|
||||
$lang->message->label->commented = 'comment';
|
||||
$lang->message->label->activated = 'activate';
|
||||
$lang->message->label->resolved = 'resolve';
|
||||
$lang->message->label->reviewed = 'review';
|
||||
$lang->message->label->confirmed = 'confirm Story';
|
||||
$lang->message->label->fromBug = 'convert from Bug';
|
||||
$lang->message->label->started = 'start';
|
||||
$lang->message->label->delayed = 'delay';
|
||||
$lang->message->label->suspended = 'suspend';
|
||||
$lang->message->label->finished = 'finish';
|
||||
$lang->message->label->paused = 'pause';
|
||||
$lang->message->label->canceled = 'cancel';
|
||||
$lang->message->label->restarted = 'continue';
|
||||
$lang->message->label->blocked = 'block';
|
||||
$lang->message->label->created = 'create';
|
||||
$lang->message->label->opened = 'open';
|
||||
$lang->message->label->changed = 'change';
|
||||
$lang->message->label->edited = 'edit';
|
||||
$lang->message->label->assigned = 'assign';
|
||||
$lang->message->label->closed = 'close';
|
||||
$lang->message->label->deleted = 'delete';
|
||||
$lang->message->label->undeleted = 'restore';
|
||||
$lang->message->label->commented = 'comment';
|
||||
$lang->message->label->activated = 'activate';
|
||||
$lang->message->label->resolved = 'resolve';
|
||||
$lang->message->label->reviewed = 'review';
|
||||
$lang->message->label->confirmed = 'confirm Story';
|
||||
$lang->message->label->frombug = 'convert from Bug';
|
||||
$lang->message->label->started = 'start';
|
||||
$lang->message->label->delayed = 'delay';
|
||||
$lang->message->label->suspended = 'suspend';
|
||||
$lang->message->label->finished = 'finish';
|
||||
$lang->message->label->paused = 'pause';
|
||||
$lang->message->label->canceled = 'cancel';
|
||||
$lang->message->label->restarted = 'continue';
|
||||
$lang->message->label->blocked = 'block';
|
||||
$lang->message->label->bugconfirmed = 'confirm';
|
||||
|
||||
+23
-22
@@ -18,25 +18,26 @@ $lang->message->browserSetting->turnonList[1] = 'On';
|
||||
$lang->message->browserSetting->turnonList[0] = 'Off';
|
||||
|
||||
$lang->message->label = new stdclass();
|
||||
$lang->message->label->created = 'create';
|
||||
$lang->message->label->opened = 'open';
|
||||
$lang->message->label->changed = 'change';
|
||||
$lang->message->label->edited = 'edit';
|
||||
$lang->message->label->assigned = 'assign';
|
||||
$lang->message->label->closed = 'close';
|
||||
$lang->message->label->deleted = 'delete';
|
||||
$lang->message->label->undeleted = 'restore';
|
||||
$lang->message->label->commented = 'comment';
|
||||
$lang->message->label->activated = 'activate';
|
||||
$lang->message->label->resolved = 'resolve';
|
||||
$lang->message->label->reviewed = 'review';
|
||||
$lang->message->label->confirmed = 'confirm Story';
|
||||
$lang->message->label->fromBug = 'convert from Bug';
|
||||
$lang->message->label->started = 'start';
|
||||
$lang->message->label->delayed = 'delay';
|
||||
$lang->message->label->suspended = 'suspend';
|
||||
$lang->message->label->finished = 'finish';
|
||||
$lang->message->label->paused = 'pause';
|
||||
$lang->message->label->canceled = 'cancel';
|
||||
$lang->message->label->restarted = 'continue';
|
||||
$lang->message->label->blocked = 'block';
|
||||
$lang->message->label->created = 'create';
|
||||
$lang->message->label->opened = 'open';
|
||||
$lang->message->label->changed = 'change';
|
||||
$lang->message->label->edited = 'edit';
|
||||
$lang->message->label->assigned = 'assign';
|
||||
$lang->message->label->closed = 'close';
|
||||
$lang->message->label->deleted = 'delete';
|
||||
$lang->message->label->undeleted = 'restore';
|
||||
$lang->message->label->commented = 'comment';
|
||||
$lang->message->label->activated = 'activate';
|
||||
$lang->message->label->resolved = 'resolve';
|
||||
$lang->message->label->reviewed = 'review';
|
||||
$lang->message->label->confirmed = 'confirm Story';
|
||||
$lang->message->label->frombug = 'convert from Bug';
|
||||
$lang->message->label->started = 'start';
|
||||
$lang->message->label->delayed = 'delay';
|
||||
$lang->message->label->suspended = 'suspend';
|
||||
$lang->message->label->finished = 'finish';
|
||||
$lang->message->label->paused = 'pause';
|
||||
$lang->message->label->canceled = 'cancel';
|
||||
$lang->message->label->restarted = 'continue';
|
||||
$lang->message->label->blocked = 'block';
|
||||
$lang->message->label->bugconfirmed = 'confirm';
|
||||
|
||||
@@ -18,25 +18,26 @@ $lang->message->browserSetting->turnonList[1] = '打开';
|
||||
$lang->message->browserSetting->turnonList[0] = '关闭';
|
||||
|
||||
$lang->message->label = new stdclass();
|
||||
$lang->message->label->created = '创建';
|
||||
$lang->message->label->opened = '创建';
|
||||
$lang->message->label->changed = '变更';
|
||||
$lang->message->label->edited = '编辑';
|
||||
$lang->message->label->assigned = '指派';
|
||||
$lang->message->label->closed = '关闭';
|
||||
$lang->message->label->deleted = '删除';
|
||||
$lang->message->label->undeleted = '还原';
|
||||
$lang->message->label->commented = '评论';
|
||||
$lang->message->label->activated = '激活';
|
||||
$lang->message->label->blocked = '阻塞';
|
||||
$lang->message->label->resolved = '解决';
|
||||
$lang->message->label->reviewed = '评审';
|
||||
$lang->message->label->confirmed = "确认{$lang->SRCommon}";
|
||||
$lang->message->label->frombug = "转{$lang->SRCommon}";
|
||||
$lang->message->label->started = '开始';
|
||||
$lang->message->label->canceled = '取消';
|
||||
$lang->message->label->finished = '完成';
|
||||
$lang->message->label->paused = '暂停';
|
||||
$lang->message->label->delayed = '延期';
|
||||
$lang->message->label->suspended = '挂起';
|
||||
$lang->message->label->restarted = '继续';
|
||||
$lang->message->label->created = '创建';
|
||||
$lang->message->label->opened = '创建';
|
||||
$lang->message->label->changed = '变更';
|
||||
$lang->message->label->edited = '编辑';
|
||||
$lang->message->label->assigned = '指派';
|
||||
$lang->message->label->closed = '关闭';
|
||||
$lang->message->label->deleted = '删除';
|
||||
$lang->message->label->undeleted = '还原';
|
||||
$lang->message->label->commented = '评论';
|
||||
$lang->message->label->activated = '激活';
|
||||
$lang->message->label->resolved = '解决';
|
||||
$lang->message->label->reviewed = '评审';
|
||||
$lang->message->label->confirmed = "确认{$lang->SRCommon}";
|
||||
$lang->message->label->frombug = "转{$lang->SRCommon}";
|
||||
$lang->message->label->started = '开始';
|
||||
$lang->message->label->delayed = '延期';
|
||||
$lang->message->label->suspended = '挂起';
|
||||
$lang->message->label->finished = '完成';
|
||||
$lang->message->label->paused = '暂停';
|
||||
$lang->message->label->canceled = '取消';
|
||||
$lang->message->label->restarted = '继续';
|
||||
$lang->message->label->blocked = '阻塞';
|
||||
$lang->message->label->bugconfirmed = '确认';
|
||||
|
||||
@@ -18,25 +18,26 @@ $lang->message->browserSetting->turnonList[1] = '打開';
|
||||
$lang->message->browserSetting->turnonList[0] = '關閉';
|
||||
|
||||
$lang->message->label = new stdclass();
|
||||
$lang->message->label->created = '創建';
|
||||
$lang->message->label->opened = '創建';
|
||||
$lang->message->label->changed = '變更';
|
||||
$lang->message->label->edited = '編輯';
|
||||
$lang->message->label->assigned = '指派';
|
||||
$lang->message->label->closed = '關閉';
|
||||
$lang->message->label->deleted = '刪除';
|
||||
$lang->message->label->undeleted = '還原';
|
||||
$lang->message->label->commented = '評論';
|
||||
$lang->message->label->activated = '激活';
|
||||
$lang->message->label->blocked = '阻塞';
|
||||
$lang->message->label->resolved = '解決';
|
||||
$lang->message->label->reviewed = '評審';
|
||||
$lang->message->label->confirmed = "確認{$lang->SRCommon}";
|
||||
$lang->message->label->frombug = "轉{$lang->SRCommon}";
|
||||
$lang->message->label->started = '開始';
|
||||
$lang->message->label->restarted = '繼續';
|
||||
$lang->message->label->canceled = '取消';
|
||||
$lang->message->label->finished = '完成';
|
||||
$lang->message->label->paused = '暫停';
|
||||
$lang->message->label->delayed = '延期';
|
||||
$lang->message->label->suspended = '掛起';
|
||||
$lang->message->label->created = '創建';
|
||||
$lang->message->label->opened = '創建';
|
||||
$lang->message->label->changed = '變更';
|
||||
$lang->message->label->edited = '編輯';
|
||||
$lang->message->label->assigned = '指派';
|
||||
$lang->message->label->closed = '關閉';
|
||||
$lang->message->label->deleted = '刪除';
|
||||
$lang->message->label->undeleted = '還原';
|
||||
$lang->message->label->commented = '評論';
|
||||
$lang->message->label->activated = '激活';
|
||||
$lang->message->label->resolved = '解決';
|
||||
$lang->message->label->reviewed = '評審';
|
||||
$lang->message->label->confirmed = "確認{$lang->SRCommon}";
|
||||
$lang->message->label->frombug = "轉{$lang->SRCommon}";
|
||||
$lang->message->label->started = '開始';
|
||||
$lang->message->label->delayed = '延期';
|
||||
$lang->message->label->suspended = '掛起';
|
||||
$lang->message->label->finished = '完成';
|
||||
$lang->message->label->paused = '暫停';
|
||||
$lang->message->label->canceled = '取消';
|
||||
$lang->message->label->restarted = '繼續';
|
||||
$lang->message->label->blocked = '阻塞';
|
||||
$lang->message->label->bugconfirmed = '確認';
|
||||
|
||||
@@ -1212,6 +1212,8 @@ class product extends control
|
||||
if($_POST)
|
||||
{
|
||||
$this->product->manageLine();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
$(function()
|
||||
{
|
||||
if(programID) $('#line_chosen').addClass('hidden');
|
||||
})
|
||||
/**
|
||||
* Load product Lines.
|
||||
*
|
||||
@@ -56,12 +60,14 @@ function toggleLine(obj)
|
||||
{
|
||||
$('form .line-no-exist').removeClass('hidden');
|
||||
$('form .line-exist').addClass('hidden');
|
||||
$('#line_chosen').addClass('hidden');
|
||||
$line.attr('disabled', 'disabled');
|
||||
}
|
||||
else
|
||||
{
|
||||
$('form .line-exist').removeClass('hidden');
|
||||
$(' #line').removeClass('hidden');
|
||||
$('form .line-no-exist').addClass('hidden');
|
||||
$('#line_chosen').removeClass('hidden');
|
||||
$line.removeAttr('disabled');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ $lang->product->other = 'Andere';
|
||||
$lang->product->closed = 'Geschlossen';
|
||||
$lang->product->updateOrder = 'Ranking';
|
||||
$lang->product->orderAction = "Rank {$lang->productCommon}";
|
||||
$lang->product->all = "{$lang->productCommon} List";
|
||||
$lang->product->all = 'Alle' . $lang->productCommon;
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Exportiere Daten';
|
||||
|
||||
@@ -24,7 +24,7 @@ $lang->product->mine = 'Mine';
|
||||
$lang->product->other = 'Others';
|
||||
$lang->product->closed = 'Closed';
|
||||
$lang->product->updateOrder = 'Order';
|
||||
$lang->product->all = "{$lang->productCommon} List";
|
||||
$lang->product->all = 'All' . $lang->productCommon;
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Export';
|
||||
@@ -85,6 +85,7 @@ $lang->product->programChangeTip = "The projects linked with this {$lang->pr
|
||||
$lang->product->notChangeProgramTip = "The {$lang->SRCommon} of {$lang->productCommon} has been linked to the following projects, please cancel the link before proceeding";
|
||||
$lang->product->confirmChangeProgram = "The projects linked with this {$lang->productCommon}: %s is also linked with other products, whether to transfer projects to the modified program set.";
|
||||
$lang->product->changeProgramError = "The {$lang->SRCommon} of this {$lang->productCommon} has been linked to the project, please unlink it before proceeding";
|
||||
$lang->product->programEmpty = 'Program cannot be empty.';
|
||||
|
||||
$lang->product->id = 'ID';
|
||||
$lang->product->program = "Program";
|
||||
|
||||
@@ -26,7 +26,7 @@ $lang->product->other = 'Autres';
|
||||
$lang->product->closed = 'Fermés';
|
||||
$lang->product->updateOrder = 'Ordre';
|
||||
$lang->product->orderAction = "Rang {$lang->productCommon}";
|
||||
$lang->product->all = "{$lang->productCommon} List";
|
||||
$lang->product->all = 'All' . $lang->productCommon;
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Export';
|
||||
|
||||
@@ -26,7 +26,7 @@ $lang->product->other = 'Khác';
|
||||
$lang->product->closed = 'Đã đóng';
|
||||
$lang->product->updateOrder = 'Sắp xếp';
|
||||
$lang->product->orderAction = "Đánh giá {$lang->productCommon}";
|
||||
$lang->product->all = "{$lang->productCommon} List";
|
||||
$lang->product->all = 'All' . $lang->productCommon;
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Xuất';
|
||||
|
||||
@@ -24,7 +24,7 @@ $lang->product->mine = '我负责';
|
||||
$lang->product->other = '其他';
|
||||
$lang->product->closed = '已关闭';
|
||||
$lang->product->updateOrder = '排序';
|
||||
$lang->product->all = "{$lang->productCommon}列表";
|
||||
$lang->product->all = "所有{$lang->productCommon}";
|
||||
$lang->product->manageLine = "维护{$lang->productCommon}线";
|
||||
$lang->product->newLine = "新建{$lang->productCommon}线";
|
||||
$lang->product->export = '导出数据';
|
||||
@@ -85,6 +85,7 @@ $lang->product->programChangeTip = "如下项目只关联了该{$lang->produ
|
||||
$lang->product->notChangeProgramTip = "该{$lang->productCommon}的{$lang->SRCommon}已经关联到如下项目,请取消关联后再操作";
|
||||
$lang->product->confirmChangeProgram = "如下项目既关联了该{$lang->productCommon}又关联了其他{$lang->productCommon},请确认是否继续关联该{$lang->productCommon},勾选后将取消与其他{$lang->productCommon}的关联关系,同时转移至新项目集下。";
|
||||
$lang->product->changeProgramError = "该{$lang->productCommon}的{$lang->SRCommon}已经关联到项目,请取消关联后再操作";
|
||||
$lang->product->programEmpty = '项目集不能为空';
|
||||
|
||||
$lang->product->id = '编号';
|
||||
$lang->product->program = "所属项目集";
|
||||
|
||||
@@ -24,7 +24,7 @@ $lang->product->mine = '我負責';
|
||||
$lang->product->other = '其他';
|
||||
$lang->product->closed = '已關閉';
|
||||
$lang->product->updateOrder = '排序';
|
||||
$lang->product->all = "{$lang->productCommon}列表";
|
||||
$lang->product->all = "所有{$lang->productCommon}";
|
||||
$lang->product->manageLine = "維護{$lang->productCommon}綫";
|
||||
$lang->product->newLine = "新建{$lang->productCommon}綫";
|
||||
$lang->product->export = '導出數據';
|
||||
|
||||
@@ -727,8 +727,13 @@ class productModel extends model
|
||||
$maxOrder = $maxOrder ? $maxOrder : 0;
|
||||
foreach($data->modules as $id => $name)
|
||||
{
|
||||
if(!$name) continue;
|
||||
if(!($this->config->systemMode == 'classic') and !$data->programs[$id]) continue;
|
||||
if(empty($name)) continue;
|
||||
if($this->config->systemMode == 'new' and empty($data->programs[$id]))
|
||||
{
|
||||
dao::$errors[] = $this->lang->product->programEmpty;
|
||||
return false;
|
||||
}
|
||||
|
||||
$line->name = strip_tags(trim($name));
|
||||
$line->root = $data->programs[$id];
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('noProject', false);?>
|
||||
<?php js::set('programID', $programID);?>
|
||||
<div id="mainContent" class="main-content">
|
||||
<div class="center-block">
|
||||
<div class="main-header">
|
||||
@@ -32,7 +33,7 @@
|
||||
<?php if($config->systemMode == 'classic' or $programID):?>
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
<?php echo html::select("line", $lines, '', "class='form-control hidden line-exist'");?>
|
||||
<?php echo html::select("line", $lines, '', "class='form-control hidden line-exist chosen'");?>
|
||||
<?php echo html::input("lineName", '', "class='form-control line-no-exist'");?>
|
||||
<?php if(count($lines)):?>
|
||||
<span class='input-group-addon'>
|
||||
@@ -54,19 +55,19 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->code;?></th>
|
||||
<td><?php echo html::input('code', '', "class='form-control' required");?></td><td></td>
|
||||
<td><?php echo html::input('code', '', "class='form-control' required");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->PO;?></th>
|
||||
<td><?php echo html::select('PO', $poUsers, $this->app->user->account, "class='form-control chosen'");?></td><td></td>
|
||||
<td><?php echo html::select('PO', $poUsers, $this->app->user->account, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->QD;?></th>
|
||||
<td><?php echo html::select('QD', $qdUsers, '', "class='form-control chosen'");?></td><td></td>
|
||||
<td><?php echo html::select('QD', $qdUsers, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->RD;?></th>
|
||||
<td><?php echo html::select('RD', $rdUsers, '', "class='form-control chosen'");?></td><td></td>
|
||||
<td><?php echo html::select('RD', $rdUsers, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->product->type;?></th>
|
||||
|
||||
@@ -32,9 +32,11 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='c-id'><?php echo $lang->idAB;?></th>
|
||||
<th><?php echo $lang->project->name;?></th>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<th class='c-program'><?php echo $lang->program->common;?></th>
|
||||
<th><?php echo $lang->project->name;?></th>
|
||||
<?php else:?>
|
||||
<th><?php echo $lang->execution->name;?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-user text-left'><?php echo $lang->project->PM;?></th>
|
||||
<th class='c-date'><?php echo $lang->project->begin;?></th>
|
||||
@@ -51,6 +53,9 @@
|
||||
<?php foreach($projectStats as $project):?>
|
||||
<tr>
|
||||
<td><?php printf('%03d', $project->id);?></td>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<td title='<?php echo $project->programName;?>' class='text-ellipsis'><?php echo $project->programName;?></td>
|
||||
<?php endif;?>
|
||||
<td class='text-left'>
|
||||
<?php
|
||||
if($config->systemMode == 'new')
|
||||
@@ -63,9 +68,6 @@
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<td title='<?php echo $project->programName;?>' class='text-ellipsis'><?php echo $project->programName;?></td>
|
||||
<?php endif;?>
|
||||
<td class='padding-right'>
|
||||
<?php $userID = isset($PMList[$project->PM]) ? $PMList[$project->PM]->id : ''?>
|
||||
<?php if(!empty($project->PM)) echo html::a($this->createLink('user', 'profile', "userID=$userID", '', true), zget($users, $project->PM), '', "data-toggle='modal' data-type='iframe' data-width='800'");?>
|
||||
|
||||
@@ -313,7 +313,7 @@ class productplan extends control
|
||||
$this->view->canBeChanged = $canBeChanged;
|
||||
|
||||
if($this->app->getViewType() == 'json')
|
||||
{
|
||||
{
|
||||
unset($this->view->storyPager);
|
||||
unset($this->view->bugPager);
|
||||
}
|
||||
|
||||
@@ -18,5 +18,5 @@ td.c-branch {overflow: hidden; text-align: left !important; text-overflow: ellip
|
||||
.c-title {width: 160px;}
|
||||
.c-branch {width: 100px;}
|
||||
.c-story {width: 80px;}
|
||||
.c-execution {width: 70px;}
|
||||
.c-execution {width: 120px;}
|
||||
.c-bug, .c-hour {width: 60px;}
|
||||
|
||||
@@ -24,7 +24,15 @@ $(function()
|
||||
{
|
||||
var projectID = $('#project').val();
|
||||
var planID = $('#planID').val();
|
||||
$.apps.open(createLink('execution', 'create', 'projectID=' + projectID + '&executionID=©ExecutionID=&planID=' + planID + '&confirm=&productID=' + productID), 'project')
|
||||
if(!projectID)
|
||||
{
|
||||
alert(projectNotEmpty);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$.apps.open(createLink('execution', 'create', 'projectID=' + projectID + '&executionID=©ExecutionID=&planID=' + planID + '&confirm=&productID=' + productID), 'project')
|
||||
}
|
||||
});
|
||||
});
|
||||
$(document).on('click', 'td.content .more', function(e)
|
||||
|
||||
@@ -41,7 +41,6 @@ function computeEndDate(delta)
|
||||
|
||||
$('#begin').on('change', function()
|
||||
{
|
||||
$("#end").val('');
|
||||
$("input:radio[name='delta']").attr("checked",false);
|
||||
});
|
||||
|
||||
@@ -55,11 +54,11 @@ $('#future').on('change', function()
|
||||
if($(this).prop('checked'))
|
||||
{
|
||||
$('#begin').attr('disabled', 'disabled');
|
||||
$('#end').val('').parents('tr').hide();
|
||||
$('#end').attr('disabled', 'disabled').parents('tr').hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#begin').removeAttr('disabled');
|
||||
$('#end').val('').parents('tr').show();
|
||||
$('#end').removeAttr('disabled').parents('tr').show();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -30,7 +30,7 @@ $lang->productplan->linkedStories = 'Verknüpfte Storys';
|
||||
$lang->productplan->unlinkedStories = 'Unverknüpfte Storys';
|
||||
$lang->productplan->updateOrder = 'Sortierung';
|
||||
$lang->productplan->createChildren = "Create Child Plans";
|
||||
$lang->productplan->createExecution = "Create {$lang->executionCommon}";
|
||||
$lang->productplan->createExecution = "Create {$lang->execution->common}";
|
||||
|
||||
$lang->productplan->linkBug = "Bug Verknüpfen";
|
||||
$lang->productplan->unlinkBug = "Bug Verknpfung aufheben";
|
||||
@@ -46,6 +46,7 @@ $lang->productplan->confirmUnlinkBug = "Möchten Sie diesen Bug löschen?";
|
||||
$lang->productplan->noPlan = 'Kein Plan. ';
|
||||
$lang->productplan->cannotDeleteParent = 'Cannot delete parent plan';
|
||||
$lang->productplan->selectProjects = "Please select the project";
|
||||
$lang->productplan->projectNotEmpty = 'Project cannot be empty.';
|
||||
$lang->productplan->nextStep = "Next step";
|
||||
|
||||
$lang->productplan->id = 'ID';
|
||||
@@ -60,7 +61,7 @@ $lang->productplan->future = 'Wartend';
|
||||
$lang->productplan->stories = 'Storys';
|
||||
$lang->productplan->bugs = 'Bugs';
|
||||
$lang->productplan->hour = $lang->hourCommon;
|
||||
$lang->productplan->execution = $lang->executionCommon;
|
||||
$lang->productplan->execution = $lang->execution->common;
|
||||
$lang->productplan->parent = "Parent Plan";
|
||||
$lang->productplan->parentAB = "Parent";
|
||||
$lang->productplan->children = "Child Plan";
|
||||
@@ -76,10 +77,12 @@ $lang->productplan->endList[93] = '3 Monate';
|
||||
$lang->productplan->endList[186] = '6 Monate';
|
||||
$lang->productplan->endList[365] = '1 Jahr';
|
||||
|
||||
$lang->productplan->errorNoTitle = 'ID %s Titel darf nicht leer sein.';
|
||||
$lang->productplan->errorNoBegin = 'ID %s Start darf nicht leer sein.';
|
||||
$lang->productplan->errorNoEnd = 'ID %s Ende darf nicht leer sein.';
|
||||
$lang->productplan->beginGeEnd = 'ID %s Start darf nicht größer als Ende sein.';
|
||||
$lang->productplan->errorNoTitle = 'ID %s Titel darf nicht leer sein.';
|
||||
$lang->productplan->errorNoBegin = 'ID %s Start darf nicht leer sein.';
|
||||
$lang->productplan->errorNoEnd = 'ID %s Ende darf nicht leer sein.';
|
||||
$lang->productplan->beginGeEnd = 'ID %s Start darf nicht größer als Ende sein.';
|
||||
$lang->productplan->beginLetterParent = "Parent begin date: %s, begin date should be >= parent begin date.";
|
||||
$lang->productplan->endGreaterParent = "Parent end date: %s, end date should be <= parent end date.";
|
||||
|
||||
$lang->productplan->featureBar['browse']['all'] = 'Alle';
|
||||
$lang->productplan->featureBar['browse']['unexpired'] = 'Nicht abgelaufen';
|
||||
|
||||
@@ -30,7 +30,7 @@ $lang->productplan->linkedStories = 'Linked Stories';
|
||||
$lang->productplan->unlinkedStories = 'Unlinked Stories';
|
||||
$lang->productplan->updateOrder = 'Order';
|
||||
$lang->productplan->createChildren = "Create Child Plans";
|
||||
$lang->productplan->createExecution = "Create {$lang->executionCommon}";
|
||||
$lang->productplan->createExecution = "Create {$lang->execution->common}";
|
||||
|
||||
$lang->productplan->linkBug = "Link Bug";
|
||||
$lang->productplan->unlinkBug = "Unlink Bug";
|
||||
@@ -46,6 +46,7 @@ $lang->productplan->confirmUnlinkBug = "Do you want to unlink this bug?";
|
||||
$lang->productplan->noPlan = 'No plans yet. ';
|
||||
$lang->productplan->cannotDeleteParent = 'Cannot delete parent plan';
|
||||
$lang->productplan->selectProjects = "Please select the project";
|
||||
$lang->productplan->projectNotEmpty = 'Project cannot be empty.';
|
||||
$lang->productplan->nextStep = "Next step";
|
||||
|
||||
$lang->productplan->id = 'ID';
|
||||
@@ -60,7 +61,7 @@ $lang->productplan->future = 'TBD';
|
||||
$lang->productplan->stories = 'Story';
|
||||
$lang->productplan->bugs = 'Bug';
|
||||
$lang->productplan->hour = $lang->hourCommon;
|
||||
$lang->productplan->execution = $lang->executionCommon;
|
||||
$lang->productplan->execution = $lang->execution->common;
|
||||
$lang->productplan->parent = "Parent Plan";
|
||||
$lang->productplan->parentAB = "Parent";
|
||||
$lang->productplan->children = "Child Plan";
|
||||
@@ -77,10 +78,12 @@ $lang->productplan->endList[93] = '3 Months';
|
||||
$lang->productplan->endList[186] = '6 Months';
|
||||
$lang->productplan->endList[365] = '1 Year';
|
||||
|
||||
$lang->productplan->errorNoTitle = 'ID %s title should not be empty.';
|
||||
$lang->productplan->errorNoBegin = 'ID %s begin time should not be empty.';
|
||||
$lang->productplan->errorNoEnd = 'ID %s end time should not be empty.';
|
||||
$lang->productplan->beginGeEnd = 'ID %s begin time should not be >= end time.';
|
||||
$lang->productplan->errorNoTitle = 'ID %s title should not be empty.';
|
||||
$lang->productplan->errorNoBegin = 'ID %s begin time should not be empty.';
|
||||
$lang->productplan->errorNoEnd = 'ID %s end time should not be empty.';
|
||||
$lang->productplan->beginGeEnd = 'ID %s begin time should not be >= end time.';
|
||||
$lang->productplan->beginLetterParent = "Parent begin date: %s, begin date should be >= parent begin date.";
|
||||
$lang->productplan->endGreaterParent = "Parent end date: %s, end date should be <= parent end date.";
|
||||
|
||||
$lang->productplan->featureBar['browse']['all'] = 'All';
|
||||
$lang->productplan->featureBar['browse']['unexpired'] = 'Unexpired';
|
||||
|
||||
@@ -30,7 +30,7 @@ $lang->productplan->linkedStories = 'Stories Planifiées';
|
||||
$lang->productplan->unlinkedStories = 'Stories non Planifiées';
|
||||
$lang->productplan->updateOrder = 'Ordre';
|
||||
$lang->productplan->createChildren = "Créer Sous-Plans";
|
||||
$lang->productplan->createExecution = "Create {$lang->executionCommon}";
|
||||
$lang->productplan->createExecution = "Create {$lang->execution->common}";
|
||||
|
||||
$lang->productplan->linkBug = "Planifier Bug";
|
||||
$lang->productplan->unlinkBug = "Retirer Bug";
|
||||
@@ -46,6 +46,7 @@ $lang->productplan->confirmUnlinkBug = "Voulez-vous retirer ce bug du plan ?";
|
||||
$lang->productplan->noPlan = "Aucun plan pour l'instant. ";
|
||||
$lang->productplan->cannotDeleteParent = 'Impossible de supprimer le plan parent';
|
||||
$lang->productplan->selectProjects = "Please select the project";
|
||||
$lang->productplan->projectNotEmpty = 'Project cannot be empty.';
|
||||
$lang->productplan->nextStep = "Next step";
|
||||
|
||||
$lang->productplan->id = 'ID';
|
||||
@@ -60,7 +61,7 @@ $lang->productplan->future = 'A Définir';
|
||||
$lang->productplan->stories = 'Story';
|
||||
$lang->productplan->bugs = 'Bug';
|
||||
$lang->productplan->hour = $lang->hourCommon;
|
||||
$lang->productplan->execution = $lang->executionCommon;
|
||||
$lang->productplan->execution = $lang->execution->common;
|
||||
$lang->productplan->parent = "Plan Parent";
|
||||
$lang->productplan->parentAB = "Parent";
|
||||
$lang->productplan->children = "Sous-Plan";
|
||||
@@ -76,10 +77,12 @@ $lang->productplan->endList[93] = '3 Mois';
|
||||
$lang->productplan->endList[186] = '6 Mois';
|
||||
$lang->productplan->endList[365] = '1 Année';
|
||||
|
||||
$lang->productplan->errorNoTitle = 'ID %s titre ne doit pas être à blanc.';
|
||||
$lang->productplan->errorNoBegin = "ID %s l'heure de début devrait être renseignée.";
|
||||
$lang->productplan->errorNoEnd = "ID %s l'heure de fin devrait être renseignée.";
|
||||
$lang->productplan->beginGeEnd = "ID %s l'heure de début ne doit pas être >= à l'heure de fin.";
|
||||
$lang->productplan->errorNoTitle = 'ID %s titre ne doit pas être à blanc.';
|
||||
$lang->productplan->errorNoBegin = "ID %s l'heure de début devrait être renseignée.";
|
||||
$lang->productplan->errorNoEnd = "ID %s l'heure de fin devrait être renseignée.";
|
||||
$lang->productplan->beginGeEnd = "ID %s l'heure de début ne doit pas être >= à l'heure de fin.";
|
||||
$lang->productplan->beginLetterParent = "Parent begin date: %s, begin date should be >= parent begin date.";
|
||||
$lang->productplan->endGreaterParent = "Parent end date: %s, end date should be <= parent end date.";
|
||||
|
||||
$lang->productplan->featureBar['browse']['all'] = 'Tous';
|
||||
$lang->productplan->featureBar['browse']['unexpired'] = 'Non échus';
|
||||
|
||||
@@ -30,7 +30,7 @@ $lang->productplan->linkedStories = 'Câu chuyện liên kết';
|
||||
$lang->productplan->unlinkedStories = 'Câu chuyện chưa liên kết';
|
||||
$lang->productplan->updateOrder = 'Sắp xếp';
|
||||
$lang->productplan->createChildren = "Tạo kế hoạch con";
|
||||
$lang->productplan->createExecution = "Create {$lang->executionCommon}";
|
||||
$lang->productplan->createExecution = "Create {$lang->execution->common}";
|
||||
|
||||
$lang->productplan->linkBug = "Liên kết Bug";
|
||||
$lang->productplan->unlinkBug = "Hủy liên kết Bug";
|
||||
@@ -46,6 +46,7 @@ $lang->productplan->confirmUnlinkBug = "Bạn có muốn hủy liên kết bug
|
||||
$lang->productplan->noPlan = 'Không có kế hoạch nào';
|
||||
$lang->productplan->cannotDeleteParent = 'Không thể xóa kế hoạch mẹ';
|
||||
$lang->productplan->selectProjects = "Please select the project";
|
||||
$lang->productplan->projectNotEmpty = 'Project cannot be empty.';
|
||||
$lang->productplan->nextStep = "Next step";
|
||||
|
||||
$lang->productplan->id = 'ID';
|
||||
@@ -60,7 +61,7 @@ $lang->productplan->future = 'TBD';
|
||||
$lang->productplan->stories = 'Câu chuyện';
|
||||
$lang->productplan->bugs = 'Bug';
|
||||
$lang->productplan->hour = $lang->hourCommon;
|
||||
$lang->productplan->execution = $lang->executionCommon;
|
||||
$lang->productplan->execution = $lang->execution->common;
|
||||
$lang->productplan->parent = "Kế hoạch mẹ";
|
||||
$lang->productplan->parentAB = "Mẹ";
|
||||
$lang->productplan->children = "Kế hoạch con";
|
||||
@@ -76,10 +77,12 @@ $lang->productplan->endList[93] = '3 tháng';
|
||||
$lang->productplan->endList[186] = '6 tháng';
|
||||
$lang->productplan->endList[365] = '1 năm';
|
||||
|
||||
$lang->productplan->errorNoTitle = 'Tiêu đề ID %s không nên trống.';
|
||||
$lang->productplan->errorNoBegin = 'Thời gian bắt đầu ID %s không nên trống.';
|
||||
$lang->productplan->errorNoEnd = 'Thời gian kết thúc ID %s không nên trống.';
|
||||
$lang->productplan->beginGeEnd = 'ID %s thời gian bắt đầu không nên >= thời gian kết thúc.';
|
||||
$lang->productplan->errorNoTitle = 'Tiêu đề ID %s không nên trống.';
|
||||
$lang->productplan->errorNoBegin = 'Thời gian bắt đầu ID %s không nên trống.';
|
||||
$lang->productplan->errorNoEnd = 'Thời gian kết thúc ID %s không nên trống.';
|
||||
$lang->productplan->beginGeEnd = 'ID %s thời gian bắt đầu không nên >= thời gian kết thúc.';
|
||||
$lang->productplan->beginLetterParent = "Parent begin date: %s, begin date should be >= parent begin date.";
|
||||
$lang->productplan->endGreaterParent = "Parent end date: %s, end date should be <= parent end date.";
|
||||
|
||||
$lang->productplan->featureBar['browse']['all'] = 'Tất cả';
|
||||
$lang->productplan->featureBar['browse']['unexpired'] = 'Chưa quá hạn';
|
||||
|
||||
@@ -30,7 +30,7 @@ $lang->productplan->linkedStories = $lang->SRCommon;
|
||||
$lang->productplan->unlinkedStories = "未关联{$lang->SRCommon}";
|
||||
$lang->productplan->updateOrder = '排序';
|
||||
$lang->productplan->createChildren = "创建子计划";
|
||||
$lang->productplan->createExecution = "创建{$lang->executionCommon}";
|
||||
$lang->productplan->createExecution = "创建{$lang->execution->common}";
|
||||
|
||||
$lang->productplan->linkBug = "关联Bug";
|
||||
$lang->productplan->unlinkBug = "移除Bug";
|
||||
@@ -46,6 +46,7 @@ $lang->productplan->confirmUnlinkBug = "您确认移除该Bug吗?";
|
||||
$lang->productplan->noPlan = "暂时没有计划。";
|
||||
$lang->productplan->cannotDeleteParent = "不能删除父计划";
|
||||
$lang->productplan->selectProjects = "请选择所属项目";
|
||||
$lang->productplan->projectNotEmpty = '所属项目不能为空。';
|
||||
$lang->productplan->nextStep = "下一步";
|
||||
|
||||
$lang->productplan->id = '编号';
|
||||
@@ -60,7 +61,7 @@ $lang->productplan->future = '待定';
|
||||
$lang->productplan->stories = "{$lang->SRCommon}数";
|
||||
$lang->productplan->bugs = 'Bug数';
|
||||
$lang->productplan->hour = $lang->hourCommon;
|
||||
$lang->productplan->execution = $lang->executionCommon;
|
||||
$lang->productplan->execution = $lang->execution->common;
|
||||
$lang->productplan->parent = "父计划";
|
||||
$lang->productplan->parentAB = "父";
|
||||
$lang->productplan->children = "子计划";
|
||||
@@ -77,10 +78,13 @@ $lang->productplan->endList[93] = '三个月';
|
||||
$lang->productplan->endList[186] = '半年';
|
||||
$lang->productplan->endList[365] = '一年';
|
||||
|
||||
$lang->productplan->errorNoTitle = 'ID %s 标题不能为空';
|
||||
$lang->productplan->errorNoBegin = 'ID %s 开始时间不能为空';
|
||||
$lang->productplan->errorNoEnd = 'ID %s 结束时间不能为空';
|
||||
$lang->productplan->beginGeEnd = 'ID %s 开始时间不能大于结束时间';
|
||||
$lang->productplan->errorNoTitle = 'ID %s 标题不能为空';
|
||||
$lang->productplan->errorNoBegin = 'ID %s 开始时间不能为空';
|
||||
$lang->productplan->errorNoEnd = 'ID %s 结束时间不能为空';
|
||||
$lang->productplan->beginGeEnd = 'ID %s 开始时间不能大于结束时间';
|
||||
$lang->productplan->beginLetterParent = "父计划的开始日期:%s,开始日期不能小于父计划的开始日期";
|
||||
$lang->productplan->endGreaterParent = "父计划的完成日期:%s,完成日期不能大于父计划的完成日期";
|
||||
|
||||
|
||||
$lang->productplan->featureBar['browse']['all'] = '全部';
|
||||
$lang->productplan->featureBar['browse']['unexpired'] = '未过期';
|
||||
|
||||
@@ -46,6 +46,7 @@ $lang->productplan->confirmUnlinkBug = "您確認移除該Bug嗎?";
|
||||
$lang->productplan->noPlan = "暫時沒有計劃。";
|
||||
$lang->productplan->cannotDeleteParent = "不能刪除父計劃";
|
||||
$lang->productplan->selectProjects = "請選擇所屬項目";
|
||||
$lang->productplan->projectNotEmpty = '所屬項目不能為空。';
|
||||
$lang->productplan->nextStep = "下一步";
|
||||
|
||||
$lang->productplan->id = '編號';
|
||||
@@ -77,10 +78,12 @@ $lang->productplan->endList[93] = '三個月';
|
||||
$lang->productplan->endList[186] = '半年';
|
||||
$lang->productplan->endList[365] = '一年';
|
||||
|
||||
$lang->productplan->errorNoTitle = 'ID %s 標題不能為空';
|
||||
$lang->productplan->errorNoBegin = 'ID %s 開始時間不能為空';
|
||||
$lang->productplan->errorNoEnd = 'ID %s 結束時間不能為空';
|
||||
$lang->productplan->beginGeEnd = 'ID %s 開始時間不能大於結束時間';
|
||||
$lang->productplan->errorNoTitle = 'ID %s 標題不能為空';
|
||||
$lang->productplan->errorNoBegin = 'ID %s 開始時間不能為空';
|
||||
$lang->productplan->errorNoEnd = 'ID %s 結束時間不能為空';
|
||||
$lang->productplan->beginGeEnd = 'ID %s 開始時間不能大於結束時間';
|
||||
$lang->productplan->beginLetterParent = "父計畫的開始日期:%s,開始日期不能小於父計畫的開始日期";
|
||||
$lang->productplan->endGreaterParent = "父計畫的完成日期:%s,完成日期不能大於父計畫的完成日期";
|
||||
|
||||
$lang->productplan->featureBar['browse']['all'] = '全部';
|
||||
$lang->productplan->featureBar['browse']['unexpired'] = '未過期';
|
||||
|
||||
@@ -332,6 +332,18 @@ class productplanModel extends model
|
||||
->setIF($this->post->future || empty($_POST['end']), 'end', '2030-01-01')
|
||||
->remove('delta,uid,future')
|
||||
->get();
|
||||
|
||||
if(!empty($plan->parentBegin))
|
||||
{
|
||||
if($plan->begin < $plan->parentBegin) dao::$errors['begin'] = sprintf($this->lang->productplan->beginLetterParent, $plan->parentBegin);
|
||||
}
|
||||
if(!empty($plan->parentEnd))
|
||||
{
|
||||
if($plan->end !=='2030-01-01' and $plan->end > $plan->parentEnd) dao::$errors['end'] = sprintf($this->lang->productplan->endGreaterParent, $plan->parentEnd);
|
||||
}
|
||||
unset($plan->parentBegin);
|
||||
unset($plan->parentEnd);
|
||||
|
||||
if(!$this->post->future and strpos($this->config->productplan->create->requiredFields, 'begin') !== false and empty($_POST['begin']))
|
||||
{
|
||||
dao::$errors['begin'] = sprintf($this->lang->error->notempty, $this->lang->productplan->begin);
|
||||
|
||||
@@ -202,4 +202,5 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php js::set('projectNotEmpty', $lang->productplan->projectNotEmpty)?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -20,12 +20,15 @@
|
||||
<h2> <?php echo $parent ? $lang->productplan->createChildren : $lang->productplan->create;?></h2>
|
||||
</div>
|
||||
<form class='load-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table table-form'>
|
||||
<table class='table table-form'>
|
||||
<tbody>
|
||||
<?php if($parent):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->productplan->parent;?></th>
|
||||
<td class='muted'><?php echo $parentPlan->title;?></td><td></td><td></td>
|
||||
<td class='muted'><?php echo $parentPlan->title;?>
|
||||
<?php echo html::hidden('parentBegin', $parentPlan->begin);?>
|
||||
<?php echo html::hidden('parentEnd', $parentPlan->end);?>
|
||||
</td><td></td><td></td>
|
||||
</tr>
|
||||
<?php else:?>
|
||||
<tr>
|
||||
@@ -48,7 +51,7 @@
|
||||
<th><?php echo $lang->productplan->begin;?></th>
|
||||
<td><?php echo html::input('begin', formatTime($begin), "class='form-control form-date'");?></td>
|
||||
<td>
|
||||
<div class='checkbox-primary'>
|
||||
<div class='checkbox-primary'>
|
||||
<input type='checkbox' id='future' name='future' value='1' />
|
||||
<label for='future'><?php echo $lang->productplan->future;?></label>
|
||||
</div>
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
<?php
|
||||
if(!isonlybody()) common::printIcon('testcase', 'edit',"caseID=$case->id", $case, 'button', '', '', 'showinonlybody');
|
||||
if(!$isLibCase and $case->auto != 'unit') common::printIcon('testcase', 'create', "productID=$case->product&branch=$case->branch&moduleID=$case->module&from=testcase¶m=$case->id", $case, 'button', 'copy');
|
||||
if($isLibCase and common::hasPriv('caselib', 'createCase')) echo html::a($this->createLink('caselib', 'createCase', "libID=$case->lib&moduleID=$case->module¶m=$case->id", $case), "<i class='icon-copy'></i>", '', "class='btn' title='{$lang->testcase->copy}'");
|
||||
if($isLibCase and common::hasPriv('caselib', 'createCase')) echo html::a($this->createLink('caselib', 'createCase', "libID=$case->lib&moduleID=$case->module¶m=$case->id"), "<i class='icon-copy'></i>", '', "class='btn' title='{$lang->testcase->copy}'");
|
||||
common::printIcon('testcase', 'delete', "caseID=$case->id", $case, 'button', 'trash', 'hiddenwin', '');
|
||||
?>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -83,7 +83,7 @@ $lang->testreport->noTestTask = "No test requests for this {$lang->productCo
|
||||
$lang->testreport->noObjectID = "No test request or {$lang->executionCommon} is selected, so no report can be generated.";
|
||||
$lang->testreport->moreProduct = "Ein Testbericht kann nur innerhalb des selben Produkts erstellt werden.";
|
||||
$lang->testreport->hiddenCase = "Hide %s use cases";
|
||||
$lang->testreport->goalTip = "Descriptive information about the execution of this build";
|
||||
$lang->testreport->goalTip = "Descriptive information about the {$lang->execution->common} of this build";
|
||||
|
||||
$lang->testreport->bugSummary = <<<EOD
|
||||
<strong>%s</strong> Bug(s) in Summe erstellt <a data-toggle='tooltip' class='text-warning' title='{$lang->testreport->foundBugTip}'><i class='icon-exclamation-sign'></i></a>,
|
||||
|
||||
@@ -84,7 +84,7 @@ $lang->testreport->noTestTask = "No test requests for this {$lang->productCo
|
||||
$lang->testreport->noObjectID = "No test request or {$lang->executionCommon} is selected, so no report can be generated.";
|
||||
$lang->testreport->moreProduct = "Testing reports can only be generated for the same {$lang->productCommon}.";
|
||||
$lang->testreport->hiddenCase = "Hide %s use cases";
|
||||
$lang->testreport->goalTip = "Descriptive information about the execution of this build";
|
||||
$lang->testreport->goalTip = "Descriptive information about the {$lang->execution->common} of this build";
|
||||
|
||||
$lang->testreport->bugSummary = <<<EOD
|
||||
Total <strong>%s</strong> Bugs reported <a data-toggle='tooltip' class='text-warning' title='{$lang->testreport->foundBugTip}'><i class='icon-help'></i></a>,
|
||||
|
||||
@@ -83,7 +83,7 @@ $lang->testreport->noTestTask = "Pas de campagne de test pour ce {$lang->pro
|
||||
$lang->testreport->noObjectID = "Pas de campagne de test ou un {$lang->executionCommon} est sélectionné, aucun rapport ne peut être généré.";
|
||||
$lang->testreport->moreProduct = "Les rapports de test ne peuvent être produits que pour le même {$lang->productCommon}.";
|
||||
$lang->testreport->hiddenCase = "Hide %s use cases";
|
||||
$lang->testreport->goalTip = "Descriptive information about the execution of this build";
|
||||
$lang->testreport->goalTip = "Descriptive information about the {$lang->execution->common} of this build";
|
||||
|
||||
$lang->testreport->bugSummary = <<<EOD
|
||||
Total <strong>%s</strong> Bugs signalés <a data-toggle='tooltip' class='text-warning' title='{$lang->testreport->foundBugTip}'><i class='icon-help'></i></a>,
|
||||
|
||||
@@ -83,7 +83,7 @@ $lang->testreport->noTestTask = "Không có yêu cầu thử nghiệm {$lang
|
||||
$lang->testreport->noObjectID = "Không có yêu cầu test hoặc {$lang->executionCommon} được chọn, bởi vậy không có báo cáo có thể được tạo.";
|
||||
$lang->testreport->moreProduct = "Báo cáo Test chỉ có thể được tạo cho cùng {$lang->productCommon}.";
|
||||
$lang->testreport->hiddenCase = "Hide %s use cases";
|
||||
$lang->testreport->goalTip = "Descriptive information about the execution of this build";
|
||||
$lang->testreport->goalTip = "Descriptive information about the {$lang->execution->common} of this build";
|
||||
|
||||
$lang->testreport->bugSummary = <<<EOD
|
||||
Total <strong>%s</strong> Bugs reported <a data-toggle='tooltip' class='text-warning' title='{$lang->testreport->foundBugTip}'><i class='icon-help'></i></a>,
|
||||
|
||||
@@ -84,7 +84,7 @@ $lang->testreport->noTestTask = "该{$lang->productCommon}下还没有关联
|
||||
$lang->testreport->noObjectID = "没有选定测试单或{$lang->executionCommon},无法创建测试报告!";
|
||||
$lang->testreport->moreProduct = "只能对同一个{$lang->productCommon}生成测试报告。";
|
||||
$lang->testreport->hiddenCase = "隐藏 %s 个用例";
|
||||
$lang->testreport->goalTip = "该版本所属执行的描述信息";
|
||||
$lang->testreport->goalTip = "该版本所属{$lang->execution->common}的描述信息";
|
||||
|
||||
$lang->testreport->bugSummary = <<<EOD
|
||||
共发现<strong>%s</strong>个Bug <a data-toggle='tooltip' class='text-warning' title='{$lang->testreport->foundBugTip}'><i class='icon-help'></i></a>,
|
||||
|
||||
@@ -84,7 +84,7 @@ $lang->testreport->noTestTask = "該{$lang->productCommon}下還沒有關聯
|
||||
$lang->testreport->noObjectID = "沒有選定測試單或{$lang->executionCommon},無法創建測試報告!";
|
||||
$lang->testreport->moreProduct = "只能對同一個{$lang->productCommon}生成測試報告。";
|
||||
$lang->testreport->hiddenCase = "隱藏 %s 個用例";
|
||||
$lang->testreport->goalTip = "該版本所屬執行的描述資訊";
|
||||
$lang->testreport->goalTip = "該版本所屬{$lang->execution->common}的描述資訊";
|
||||
|
||||
$lang->testreport->bugSummary = <<<EOD
|
||||
共發現<strong>%s</strong>個Bug <a data-toggle='tooltip' class='text-warning' title='{$lang->testreport->foundBugTip}'><i class='icon-help'></i></a>,
|
||||
|
||||
@@ -55,11 +55,16 @@
|
||||
<td colspan='2'><?php echo html::input('title', $report->title, "class='form-control'")?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php if(!empty($execution->desc)):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->testreport->goal?></th>
|
||||
<td colspan='2'><?php echo $execution->desc?></td>
|
||||
<td colspan='2'>
|
||||
<?php echo $execution->desc?>
|
||||
<a data-toggle='tooltip' class='text-warning' title='<?php echo $lang->testreport->goalTip;?>'><i class='icon-help'></i></a>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->testreport->profile?></th>
|
||||
<td colspan='2'>
|
||||
|
||||
@@ -63,10 +63,13 @@
|
||||
<th><?php echo $lang->testreport->members?></th>
|
||||
<td colspan='2'><?php foreach(explode(',', $report->members) as $member)echo zget($users, $member) . ' ';?></td>
|
||||
</tr>
|
||||
<?php if(!empty($execution)):?>
|
||||
<?php if(!empty($execution->desc)):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->testreport->goal?></th>
|
||||
<td colspan='2'><?php echo $execution->desc?></td>
|
||||
<td colspan='2'>
|
||||
<?php echo $execution->desc?>
|
||||
<a data-toggle='tooltip' class='text-warning' title='<?php echo $lang->testreport->goalTip;?>'><i class='icon-help'></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
|
||||
@@ -515,7 +515,8 @@ class todoModel extends model
|
||||
|
||||
$stmt = $this->dao->select('*')->from(TABLE_TODO)
|
||||
->where('deleted')->eq('0')
|
||||
->andWhere('assignedTo', true)->eq($account)
|
||||
->beginIF($type == 'assignedtoother')->andWhere('account', true)->eq($account)->fi()
|
||||
->beginIF($type != 'assignedtoother')->andWhere('assignedTo', true)->eq($account)->fi()
|
||||
->orWhere('finishedBy')->eq($account)
|
||||
->markRight(1)
|
||||
->beginIF($begin)->andWhere('date')->ge($begin)->fi()
|
||||
|
||||
Reference in New Issue
Block a user