Merge branch '15.6' into sprint/167_wangyidong
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
$lang->action->common = 'Log';
|
||||
$lang->action->product = $lang->productCommon;
|
||||
$lang->action->project = 'Project';
|
||||
$lang->action->execution = $lang->executionCommon;
|
||||
$lang->action->execution = $lang->execution->common;
|
||||
$lang->action->objectType = 'Object Type';
|
||||
$lang->action->objectID = 'ID';
|
||||
$lang->action->objectName = 'Objekt Name';
|
||||
|
||||
+18
-13
@@ -11,19 +11,24 @@
|
||||
*/
|
||||
global $config;
|
||||
|
||||
$lang->action->common = 'Log';
|
||||
$lang->action->product = $lang->productCommon;
|
||||
$lang->action->project = 'Project';
|
||||
$lang->action->execution = $lang->executionCommon;
|
||||
$lang->action->objectType = 'Object Type';
|
||||
$lang->action->objectID = 'ID';
|
||||
$lang->action->objectName = 'Object Name';
|
||||
$lang->action->actor = 'User';
|
||||
$lang->action->action = 'Action';
|
||||
$lang->action->actionID = 'Action ID';
|
||||
$lang->action->date = 'Date';
|
||||
$lang->action->extra = 'Extra';
|
||||
$lang->action->system = 'System';
|
||||
$lang->action->common = 'Log';
|
||||
$lang->action->id = 'ID';
|
||||
$lang->action->product = $lang->productCommon;
|
||||
$lang->action->project = 'Project';
|
||||
$lang->action->execution = $lang->execution->common;
|
||||
$lang->action->objectType = 'Object Type';
|
||||
$lang->action->objectID = 'ID';
|
||||
$lang->action->objectName = 'Object Name';
|
||||
$lang->action->actor = 'User';
|
||||
$lang->action->action = 'Action';
|
||||
$lang->action->actionID = 'Action ID';
|
||||
$lang->action->date = 'Date';
|
||||
$lang->action->extra = 'Extra';
|
||||
$lang->action->system = 'System';
|
||||
$lang->action->url = 'URL';
|
||||
$lang->action->contentType = 'Content Type';
|
||||
$lang->action->data = 'Data';
|
||||
$lang->action->result = 'Result';
|
||||
|
||||
$lang->action->trash = 'Recycle';
|
||||
$lang->action->undelete = 'Restore';
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
*/
|
||||
$lang->action->common = 'Log';
|
||||
$lang->action->product = $lang->productCommon;
|
||||
$lang->action->project = $lang->executionCommon;
|
||||
$lang->action->execution = $lang->executionCommon;
|
||||
$lang->action->project = 'Project';
|
||||
$lang->action->execution = $lang->execution->common;
|
||||
$lang->action->objectType = "Type d'objet";
|
||||
$lang->action->objectID = 'ID';
|
||||
$lang->action->objectName = "Nom de l'object";
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
$lang->action->common = 'Nhật ký';
|
||||
$lang->action->product = $lang->productCommon;
|
||||
$lang->action->project = 'Project';
|
||||
$lang->action->execution = $lang->executionCommon;
|
||||
$lang->action->execution = $lang->execution->common;
|
||||
$lang->action->objectType = 'Loại đối tượng';
|
||||
$lang->action->objectID = 'ID';
|
||||
$lang->action->objectName = 'Tên đối tượng';
|
||||
|
||||
@@ -11,19 +11,24 @@
|
||||
*/
|
||||
global $config;
|
||||
|
||||
$lang->action->common = '系统日志';
|
||||
$lang->action->product = $lang->productCommon;
|
||||
$lang->action->project = '项目';
|
||||
$lang->action->execution = $lang->executionCommon;
|
||||
$lang->action->objectType = '对象类型';
|
||||
$lang->action->objectID = '对象ID';
|
||||
$lang->action->objectName = '对象名称';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '动作';
|
||||
$lang->action->actionID = '记录ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->extra = '附加值';
|
||||
$lang->action->system = '系统';
|
||||
$lang->action->common = '系统日志';
|
||||
$lang->action->id = '编号';
|
||||
$lang->action->product = $lang->productCommon;
|
||||
$lang->action->project = '项目';
|
||||
$lang->action->execution = $lang->execution->common;
|
||||
$lang->action->objectType = '对象类型';
|
||||
$lang->action->objectID = '对象ID';
|
||||
$lang->action->objectName = '对象名称';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '动作';
|
||||
$lang->action->actionID = '记录ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->extra = '附加值';
|
||||
$lang->action->system = '系统';
|
||||
$lang->action->url = '网址';
|
||||
$lang->action->contentType = '内容类型';
|
||||
$lang->action->data = '数据';
|
||||
$lang->action->result = '结果';
|
||||
|
||||
$lang->action->trash = '回收站';
|
||||
$lang->action->undelete = '还原';
|
||||
|
||||
@@ -11,19 +11,24 @@
|
||||
*/
|
||||
global $config;
|
||||
|
||||
$lang->action->common = '系統日誌';
|
||||
$lang->action->product = $lang->productCommon;
|
||||
$lang->action->project = '項目';
|
||||
$lang->action->execution = $lang->executionCommon;
|
||||
$lang->action->objectType = '對象類型';
|
||||
$lang->action->objectID = '對象ID';
|
||||
$lang->action->objectName = '對象名稱';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '動作';
|
||||
$lang->action->actionID = '記錄ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->extra = '附加值';
|
||||
$lang->action->system = '系統';
|
||||
$lang->action->common = '系統日誌';
|
||||
$lang->action->id = '編號';
|
||||
$lang->action->product = $lang->productCommon;
|
||||
$lang->action->project = '項目';
|
||||
$lang->action->execution = $lang->executionCommon;
|
||||
$lang->action->objectType = '對象類型';
|
||||
$lang->action->objectID = '對象ID';
|
||||
$lang->action->objectName = '對象名稱';
|
||||
$lang->action->actor = '操作者';
|
||||
$lang->action->action = '動作';
|
||||
$lang->action->actionID = '記錄ID';
|
||||
$lang->action->date = '日期';
|
||||
$lang->action->extra = '附加值';
|
||||
$lang->action->system = '系統';
|
||||
$lang->action->url = '網址';
|
||||
$lang->action->contentType = '內容類型';
|
||||
$lang->action->data = '數據';
|
||||
$lang->action->result = '結果';
|
||||
|
||||
$lang->action->trash = '資源回收筒';
|
||||
$lang->action->undelete = '還原';
|
||||
|
||||
@@ -49,7 +49,7 @@ class actionModel extends model
|
||||
$action->date = helper::now();
|
||||
$action->extra = $extra;
|
||||
|
||||
if($objectType == 'story' and $actionType !== 'reviewed' and strpos(',reviewclosed,passreviewed,clarifyreviewed,', ",$actionType,") !== false) $action->actor = $this->lang->action->system;
|
||||
if($objectType == 'story' and strpos(',reviewpassed,reviewrejected,reviewclarified,', ",$actionType,") !== false) $action->actor = $this->lang->action->system;
|
||||
|
||||
/* Use purifier to process comment. Fix bug #2683. */
|
||||
$action->comment = fixer::stripDataTags($comment);
|
||||
@@ -338,7 +338,7 @@ class actionModel extends model
|
||||
elseif($actionName == 'moved')
|
||||
{
|
||||
$name = $this->dao->select('name')->from(TABLE_PROJECT)->where('id')->eq($action->extra)->fetch('name');
|
||||
if($name) $action->extra = common::hasPriv('project', 'task') ? html::a(helper::createLink('project', 'task', "projectID=$action->extra"), "#$action->extra " . $name) : "#$action->extra " . $name;
|
||||
if($name) $action->extra = common::hasPriv('execution', 'task') ? html::a(helper::createLink('execution', 'task', "executionID=$action->extra"), "#$action->extra " . $name) : "#$action->extra " . $name;
|
||||
}
|
||||
elseif($actionName == 'frombug' and common::hasPriv('bug', 'view'))
|
||||
{
|
||||
@@ -774,7 +774,7 @@ class actionModel extends model
|
||||
|
||||
/* If is project, select its related. */
|
||||
$executions = array();
|
||||
if(is_numeric($projectID)) $executions = $this->loadModel('execution')->getPairs($projectID);
|
||||
if(is_numeric($projectID) and $executionID == 'all') $executions = $this->loadModel('execution')->getPairs($projectID);
|
||||
|
||||
$this->loadModel('doc');
|
||||
$libs = $this->doc->getLibs('includeDeleted') + array('' => '');
|
||||
@@ -864,8 +864,8 @@ class actionModel extends model
|
||||
}
|
||||
if($this->session->actionQuery == false) $this->session->set('actionQuery', ' 1 = 1');
|
||||
|
||||
$allProducts = "`product` = 'all'";
|
||||
$allProjects = "`project` = 'all'";
|
||||
$allProducts = "`product` = 'all'";
|
||||
$allProjects = "`project` = 'all'";
|
||||
$allExecutions = "`execution` = 'all'";
|
||||
$actionQuery = $this->session->actionQuery;
|
||||
|
||||
|
||||
@@ -76,10 +76,6 @@ $lang->block->selectProduct = 'Product selection';
|
||||
$lang->block->of = ' von ';
|
||||
$lang->block->remain = 'Left';
|
||||
|
||||
$lang->block->params = new stdclass();
|
||||
$lang->block->params->name = 'Name';
|
||||
$lang->block->params->value = 'Wert';
|
||||
|
||||
$lang->block->createBlock = 'InfoBlock erstellen';
|
||||
$lang->block->editBlock = 'Bearbeiten';
|
||||
$lang->block->ordersSaved = 'Sortierung gespeichert.';
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
global $config;
|
||||
$lang->block = new stdclass();
|
||||
$lang->block->common = 'Block';
|
||||
$lang->block->id = 'ID';
|
||||
$lang->block->params = 'Params';
|
||||
$lang->block->name = 'Name';
|
||||
$lang->block->style = 'Style';
|
||||
$lang->block->grid = 'Position';
|
||||
@@ -76,10 +78,6 @@ $lang->block->selectProduct = 'Product selection';
|
||||
$lang->block->of = ' of ';
|
||||
$lang->block->remain = 'Left';
|
||||
|
||||
$lang->block->params = new stdclass();
|
||||
$lang->block->params->name = 'Name';
|
||||
$lang->block->params->value = 'Value';
|
||||
|
||||
$lang->block->createBlock = 'Add Block';
|
||||
$lang->block->editBlock = 'Edit Block';
|
||||
$lang->block->ordersSaved = 'The order is saved.';
|
||||
|
||||
@@ -76,10 +76,6 @@ $lang->block->selectProduct = 'Product selection';
|
||||
$lang->block->of = ' di ';
|
||||
$lang->block->remain = 'Left';
|
||||
|
||||
$lang->block->params = new stdclass();
|
||||
$lang->block->params->name = 'Nom';
|
||||
$lang->block->params->value = 'Valeur';
|
||||
|
||||
$lang->block->createBlock = 'Ajouter Bloc';
|
||||
$lang->block->editBlock = 'Editer Bloc';
|
||||
$lang->block->ordersSaved = 'L´ordre a été sauvegardé.';
|
||||
|
||||
@@ -76,10 +76,6 @@ $lang->block->selectProduct = 'Product selection';
|
||||
$lang->block->of = ' thực ';
|
||||
$lang->block->remain = 'Left';
|
||||
|
||||
$lang->block->params = new stdclass();
|
||||
$lang->block->params->name = 'Tên';
|
||||
$lang->block->params->value = 'Giá trị';
|
||||
|
||||
$lang->block->createBlock = 'Thêm Block';
|
||||
$lang->block->editBlock = 'Sửa Block';
|
||||
$lang->block->ordersSaved = 'Thứ tự đã được lưu';
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
global $config;
|
||||
$lang->block = new stdclass();
|
||||
$lang->block->common = '区块';
|
||||
$lang->block->id = '编号';
|
||||
$lang->block->params = '参数';
|
||||
$lang->block->name = '区块名称';
|
||||
$lang->block->style = '外观';
|
||||
$lang->block->grid = '位置';
|
||||
@@ -76,10 +78,6 @@ $lang->block->selectProduct = '选择产品';
|
||||
$lang->block->of = '的';
|
||||
$lang->block->remain = '剩余工时';
|
||||
|
||||
$lang->block->params = new stdclass();
|
||||
$lang->block->params->name = '参数名称';
|
||||
$lang->block->params->value = '参数值';
|
||||
|
||||
$lang->block->createBlock = '添加区块';
|
||||
$lang->block->editBlock = '编辑区块';
|
||||
$lang->block->ordersSaved = '排序已保存';
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
global $config;
|
||||
$lang->block = new stdclass();
|
||||
$lang->block->common = '區塊';
|
||||
$lang->block->id = '編號';
|
||||
$lang->block->params = '參數';
|
||||
$lang->block->name = '區塊名稱';
|
||||
$lang->block->style = '外觀';
|
||||
$lang->block->grid = '位置';
|
||||
@@ -76,10 +78,6 @@ $lang->block->selectProduct = '選擇產品';
|
||||
$lang->block->of = '的';
|
||||
$lang->block->remain = '剩餘工時';
|
||||
|
||||
$lang->block->params = new stdclass();
|
||||
$lang->block->params->name = '參數名稱';
|
||||
$lang->block->params->value = '參數值';
|
||||
|
||||
$lang->block->createBlock = '添加區塊';
|
||||
$lang->block->editBlock = '編輯區塊';
|
||||
$lang->block->ordersSaved = '排序已保存';
|
||||
@@ -538,7 +536,7 @@ $lang->block->typeList->testtask['done'] = '已測版本';
|
||||
$lang->block->typeList->testtask['all'] = '全部';
|
||||
|
||||
$lang->block->modules['project']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['project']->moreLinkList->recentproject = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->recentproject = $config->systemMode == 'new' ? 'project|browse|' : 'execution|all|';
|
||||
$lang->block->modules['project']->moreLinkList->statistic = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->project = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->cmmireport = 'weekly|index|';
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
.table .c-burn {width: 150px;}
|
||||
</style>
|
||||
<?php if(empty($executionStats)): ?>
|
||||
<div class='empty-tip'><?php common::printLink('execution', 'create', '', "<i class='icon-plus'></i> " . $lang->execution->create, '', "class='btn btn-primary'")?></div>
|
||||
<div class='empty-tip'><?php common::printLink('execution', 'create', '', "<i class='icon-plus'></i> " . $lang->execution->create, '', "class='btn btn-primary' data-app='execution'")?></div>
|
||||
<?php else:?>
|
||||
<div class="panel-body has-table scrollbar-hover">
|
||||
<table class='table table-borderless table-hover table-fixed table-fixed-head tablesorter block-projects tablesorter'>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#cards .project-infos > span {display: inline-block; line-height: 12px;}
|
||||
#cards .project-infos > span > .icon {font-size: 12px; display: inline-block; position: relative; top: -1px}
|
||||
#cards .project-infos > span + span {margin-left: 10px;}
|
||||
#cards .project-detail {position: absolute; bottom: 16px; left: 16px; right: 16px; font-size: 12px;}
|
||||
#cards .project-detail {position: absolute; bottom: 16px; left: 16px; right: 16px; font-size: 12px; padding-left: 10px;}
|
||||
#cards .project-detail > p {margin-bottom: 8px;}
|
||||
#cards .project-detail .progress {height: 4px;}
|
||||
#cards .project-detail .progress-text-left .progress-text {width: 50px; left: -50px;}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php $this->app->loadLang('story');?>
|
||||
<?php if(empty($stories)): ?>
|
||||
<div class='empty-tip'><?php echo $lang->block->emptyTip;?></div>
|
||||
<?php else:?>
|
||||
|
||||
@@ -26,7 +26,7 @@ $config->bug->list->allFields = 'id, module, execution, story, task,
|
||||
|
||||
$config->bug->list->defaultFields = 'id,severity,pri,title,openedBy,assignedTo,resolvedBy,resolution';
|
||||
|
||||
$config->bug->list->exportFields = 'id, product, branch, module, execution, story, task,
|
||||
$config->bug->list->exportFields = 'id, product, branch, module, project, execution, story, task,
|
||||
title, keywords, severity, pri, type, os, browser,
|
||||
steps, status, deadline, activatedCount, confirmed, mailto,
|
||||
openedBy, openedDate, openedBuild,
|
||||
|
||||
@@ -574,12 +574,12 @@ class bug extends control
|
||||
/* Set custom. */
|
||||
foreach(explode(',', $this->config->bug->list->customCreateFields) as $field) $customFields[$field] = $this->lang->bug->$field;
|
||||
|
||||
$title = isset($this->products[$productID]) ? $this->products[$productID] . $this->lang->colon . $this->lang->bug->create : $this->lang->bug->create;
|
||||
|
||||
$this->view->title = $title;
|
||||
$this->view->title = isset($this->products[$productID]) ? $this->products[$productID] . $this->lang->colon . $this->lang->bug->create : $this->lang->bug->create;
|
||||
$this->view->customFields = $customFields;
|
||||
$this->view->showFields = $this->config->bug->custom->createFields;
|
||||
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('bug', 'browse', "productID=$productID") : '';
|
||||
$this->view->products = $products;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->productName = isset($this->products[$productID]) ? $this->products[$productID] : '';
|
||||
@@ -724,7 +724,7 @@ class bug extends control
|
||||
/* Judge bug exits or not. */
|
||||
$bugID = (int)$bugID;
|
||||
$bug = $this->bug->getById($bugID, true);
|
||||
if(!$bug) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
if(!$bug) die(js::error($this->lang->notFound) . js::locate($this->createLink('qa', 'index')));
|
||||
|
||||
$this->session->set('storyList', '', 'product');
|
||||
$this->session->set('projectList', $this->app->getURI(true) . "#app={$this->app->tab}", 'project');
|
||||
@@ -1719,6 +1719,7 @@ class bug extends control
|
||||
/* Get users, products and executions. */
|
||||
$users = $this->loadModel('user')->getPairs('noletter');
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
$projects = $this->loadModel('project')->getPairsByProgram();
|
||||
$executions = $this->loadModel('execution')->getPairs($this->projectID, 'all', 'all');
|
||||
|
||||
/* Get related objects id lists. */
|
||||
@@ -1777,6 +1778,7 @@ class bug extends control
|
||||
|
||||
/* fill some field with useful value. */
|
||||
$bug->product = !isset($products[$bug->product]) ? '' : $products[$bug->product] . "(#$bug->product)";
|
||||
$bug->project = !isset($projects[$bug->project]) ? '' : $projects[$bug->project] . "(#$bug->project)";
|
||||
$bug->execution = !isset($executions[$bug->execution]) ? '' : $executions[$bug->execution] . "(#$bug->execution)";
|
||||
$bug->story = !isset($relatedStories[$bug->story]) ? '' : $relatedStories[$bug->story] . "(#$bug->story)";
|
||||
$bug->task = !isset($relatedTasks[$bug->task]) ? '' : $relatedTasks[$bug->task] . "($bug->task)";
|
||||
@@ -1802,7 +1804,7 @@ class bug extends control
|
||||
if(isset($users[$bug->lastEditedBy])) $bug->lastEditedBy = $users[$bug->lastEditedBy];
|
||||
if(isset($users[$bug->closedBy])) $bug->closedBy = $users[$bug->closedBy];
|
||||
|
||||
$bug->title = htmlspecialchars_decode($bug->title,ENT_QUOTES);
|
||||
$bug->title = htmlspecialchars_decode($bug->title,ENT_QUOTES);
|
||||
|
||||
if($bug->linkBug)
|
||||
{
|
||||
|
||||
@@ -44,3 +44,4 @@ html[lang='en'] #deadlineTd .input-group-addon {padding: 5px 18px;}
|
||||
#typeBox .required:after {right: 1px;}
|
||||
#osBox .required:after {right: 1px;}
|
||||
#osBox {width: 190px;}
|
||||
#projectBox .required:after {right: 1px;}
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
$(function()
|
||||
{
|
||||
if($('#bugList thead th.c-title').width() < 150) $('#bugList thead th.c-title').width(150);
|
||||
|
||||
/* The display of the adjusting sidebarHeader is synchronized with the sidebar. */
|
||||
$(".sidebar-toggle").click(function()
|
||||
{
|
||||
$("#sidebarHeader").toggle("fast");
|
||||
});
|
||||
if($("main").is(".hide-sidebar")) $("#sidebarHeader").hide();
|
||||
});
|
||||
|
||||
@@ -30,6 +30,13 @@ $lang->bug->pri = 'Priority';
|
||||
$lang->bug->type = 'Type';
|
||||
$lang->bug->os = 'OS';
|
||||
$lang->bug->browser = 'Browser';
|
||||
$lang->bug->hardware = 'Hardware';
|
||||
$lang->bug->result = 'Result';
|
||||
$lang->bug->repo = 'Repo';
|
||||
$lang->bug->lines = 'Lines';
|
||||
$lang->bug->v1 = 'Version A';
|
||||
$lang->bug->v2 = 'Version B';
|
||||
$lang->bug->repoType = 'Repo Type';
|
||||
$lang->bug->steps = 'Repro Steps';
|
||||
$lang->bug->status = 'Status';
|
||||
$lang->bug->statusAB = 'Status';
|
||||
|
||||
@@ -30,6 +30,13 @@ $lang->bug->pri = '优先级';
|
||||
$lang->bug->type = 'Bug类型';
|
||||
$lang->bug->os = '操作系统';
|
||||
$lang->bug->browser = '浏览器';
|
||||
$lang->bug->hardware = '硬件';
|
||||
$lang->bug->result = '结果';
|
||||
$lang->bug->repo = '所属版本库';
|
||||
$lang->bug->lines = '代码行';
|
||||
$lang->bug->v1 = '版本1';
|
||||
$lang->bug->v2 = '版本2';
|
||||
$lang->bug->repoType = '版本库类型';
|
||||
$lang->bug->steps = '重现步骤';
|
||||
$lang->bug->status = 'Bug状态';
|
||||
$lang->bug->statusAB = '状态';
|
||||
|
||||
@@ -30,6 +30,13 @@ $lang->bug->pri = '優先順序';
|
||||
$lang->bug->type = 'Bug類型';
|
||||
$lang->bug->os = '操作系統';
|
||||
$lang->bug->browser = '瀏覽器';
|
||||
$lang->bug->hardware = '硬件';
|
||||
$lang->bug->result = '結果';
|
||||
$lang->bug->repo = '所屬版本庫';
|
||||
$lang->bug->lines = '代碼行';
|
||||
$lang->bug->v1 = '版本1';
|
||||
$lang->bug->v2 = '版本2';
|
||||
$lang->bug->repoType = '版本庫類型';
|
||||
$lang->bug->steps = '重現步驟';
|
||||
$lang->bug->status = 'Bug狀態';
|
||||
$lang->bug->statusAB = '狀態';
|
||||
|
||||
@@ -202,7 +202,7 @@ class bugModel extends model
|
||||
foreach(explode(',', $this->config->bug->create->requiredFields) as $field)
|
||||
{
|
||||
$field = trim($field);
|
||||
if($field and empty($bug->$field)) die(js::alert(sprintf($this->lang->error->notempty, $this->lang->bug->$field)));
|
||||
if($field and isset($bug->$field) and empty($bug->$field)) die(js::alert(sprintf($this->lang->error->notempty, $this->lang->bug->$field)));
|
||||
}
|
||||
|
||||
$bugs[$i] = $bug;
|
||||
|
||||
@@ -328,7 +328,8 @@ js::set('moduleID', $moduleID);
|
||||
<?php $browseLink = $this->session->bugList ? $this->session->bugList : $this->inlink('browse', "productID=$productID");?>
|
||||
<?php echo html::submitButton();?>
|
||||
<?php if($caseID) echo html::a($browseLink, $lang->goback, '', 'class="btn btn-wide"');?>
|
||||
<?php if(!$caseID) echo html::backButton();?>
|
||||
<?php if(!$caseID and $gobackLink) echo html::a($gobackLink, $lang->goback, '', 'class="btn btn-wide"');?>
|
||||
<?php if(!$caseID and !$gobackLink) echo html::backButton();?>
|
||||
<?php echo html::hidden('case', (int)$caseID) . html::hidden('caseVersion', (int)$version);?>
|
||||
<?php echo html::hidden('result', (int)$runID) . html::hidden('testtask', empty($testtask) ? 0 : $testtask->id);?>
|
||||
</td>
|
||||
|
||||
@@ -46,7 +46,7 @@ class build extends control
|
||||
if($this->app->tab == 'project')
|
||||
{
|
||||
$this->loadModel('project')->setMenu($projectID);
|
||||
$executions = $this->execution->getPairs($projectID);
|
||||
$executions = $this->execution->getPairs($projectID, 'all', 'stagefilter');
|
||||
$executionID = empty($executionID) ? key($executions) : $executionID;
|
||||
$this->session->set('project', $projectID);
|
||||
}
|
||||
@@ -136,7 +136,7 @@ class build extends control
|
||||
$execution->name = '';
|
||||
}
|
||||
|
||||
$executions = $this->product->getExecutionPairsByProduct($build->product, $build->branch, 'id_desc', $this->session->project);
|
||||
$executions = $this->product->getExecutionPairsByProduct($build->product, $build->branch, 'id_desc', $this->session->project, 'stagefilter');
|
||||
if(!isset($executions[$build->execution])) $executions[$build->execution] = $execution->name;
|
||||
|
||||
$productGroups = $this->execution->getProducts($build->execution);
|
||||
@@ -188,7 +188,7 @@ class build extends control
|
||||
if(!$build)
|
||||
{
|
||||
if(defined('RUN_MODE') && RUN_MODE == 'api') return $this->send(array('status' => 'fail', 'code' => 404, 'message' => '404 Not found'));
|
||||
die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
die(js::error($this->lang->notFound) . js::locate($this->createLink('execution', 'all')));
|
||||
}
|
||||
$this->session->project = $build->project;
|
||||
|
||||
@@ -565,7 +565,7 @@ class build extends control
|
||||
/* Set menu. */
|
||||
$build = $this->build->getByID($buildID);
|
||||
$product = $this->loadModel('product')->getByID($build->product);
|
||||
$this->loadModel('execution')->setMenu($this->execution->getPairs($build->project), $build->execution);
|
||||
$this->loadModel('execution')->setMenu($build->execution);
|
||||
|
||||
/* Load pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
|
||||
@@ -29,6 +29,7 @@ $lang->build->basicInfo = 'Basic Info';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = $lang->productCommon;
|
||||
$lang->build->project = 'Project';
|
||||
$lang->build->branch = 'Platform/Branch';
|
||||
$lang->build->execution = $lang->executionCommon;
|
||||
$lang->build->name = 'Name';
|
||||
@@ -37,6 +38,7 @@ $lang->build->builder = 'Builder';
|
||||
$lang->build->scmPath = 'SCM Path';
|
||||
$lang->build->filePath = 'File Path';
|
||||
$lang->build->desc = 'Description';
|
||||
$lang->build->mailto = 'Mailto';
|
||||
$lang->build->files = 'Files';
|
||||
$lang->build->last = 'Last Build';
|
||||
$lang->build->packageType = 'Package Type';
|
||||
|
||||
@@ -29,6 +29,7 @@ $lang->build->basicInfo = '基本信息';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = $lang->productCommon;
|
||||
$lang->build->project = '所属项目';
|
||||
$lang->build->branch = '平台/分支';
|
||||
$lang->build->execution = '所属' . $lang->executionCommon;
|
||||
$lang->build->name = '名称编号';
|
||||
@@ -37,6 +38,7 @@ $lang->build->builder = '构建者';
|
||||
$lang->build->scmPath = '源代码地址';
|
||||
$lang->build->filePath = '下载地址';
|
||||
$lang->build->desc = '描述';
|
||||
$lang->build->mailto = 'Mailto';
|
||||
$lang->build->files = '上传发行包';
|
||||
$lang->build->last = '上个版本';
|
||||
$lang->build->packageType = '包类型';
|
||||
|
||||
@@ -29,6 +29,7 @@ $lang->build->basicInfo = '基本信息';
|
||||
|
||||
$lang->build->id = 'ID';
|
||||
$lang->build->product = $lang->productCommon;
|
||||
$lang->build->project = '所屬項目';
|
||||
$lang->build->branch = '平台/分支';
|
||||
$lang->build->execution = '所屬' . $lang->executionCommon;
|
||||
$lang->build->name = '名稱編號';
|
||||
@@ -37,6 +38,7 @@ $lang->build->builder = '構建者';
|
||||
$lang->build->scmPath = '原始碼地址';
|
||||
$lang->build->filePath = '下載地址';
|
||||
$lang->build->desc = '描述';
|
||||
$lang->build->mailto = 'Mailto';
|
||||
$lang->build->files = '上傳發行包';
|
||||
$lang->build->last = '上個版本';
|
||||
$lang->build->packageType = '包類型';
|
||||
|
||||
@@ -377,7 +377,7 @@ class caselib extends control
|
||||
{
|
||||
$libID = (int)$libID;
|
||||
$lib = $this->caselib->getById($libID, true);
|
||||
if(!isset($lib->id)) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
if(!isset($lib->id)) die(js::error($this->lang->notFound) . js::locate($this->createLink('qa', 'index')));
|
||||
|
||||
/* Set lib menu. */
|
||||
$libraries = $this->caselib->getLibraries();
|
||||
|
||||
@@ -20,3 +20,13 @@ function confirmBatchDelete(actionLink)
|
||||
if(confirm(batchDelete)) setFormAction(actionLink);
|
||||
return false;
|
||||
}
|
||||
|
||||
$(function()
|
||||
{
|
||||
/* The display of the adjusting sidebarHeader is synchronized with the sidebar. */
|
||||
$(".sidebar-toggle").click(function()
|
||||
{
|
||||
$("#sidebarHeader").toggle("fast");
|
||||
});
|
||||
if($("main").is(".hide-sidebar")) $("#sidebarHeader").hide();
|
||||
});
|
||||
+65
-26
@@ -119,6 +119,8 @@ class commonModel extends model
|
||||
$user->id = 0;
|
||||
$user->account = 'guest';
|
||||
$user->realname = 'guest';
|
||||
$user->dept = 0;
|
||||
$user->avatar = '';
|
||||
$user->role = 'guest';
|
||||
$user->admin = false;
|
||||
$user->rights = $this->loadModel('user')->authorize('guest');
|
||||
@@ -223,6 +225,7 @@ class commonModel extends model
|
||||
$user = $this->app->user;
|
||||
$user->rights = $this->loadModel('user')->authorize($user->account);
|
||||
$user->groups = $this->user->getGroups($user->account);
|
||||
$user->admin = strpos($this->app->company->admins, ",{$user->account},") !== false;
|
||||
$this->session->set('user', $user);
|
||||
$this->app->user = $this->session->user;
|
||||
if(commonModel::hasPriv($module, $method)) return true;
|
||||
@@ -358,9 +361,21 @@ class commonModel extends model
|
||||
$html .= "<i class='icon icon-plus-solid-circle text-secondary'></i>";
|
||||
$html .= "</a><ul class='dropdown-menu pull-right create-list'>";
|
||||
|
||||
/* Initialize the default values. */
|
||||
$showCreateList = $needPrintDivider = false;
|
||||
$productID = isset($_SESSION['product']) ? $_SESSION['product'] : 0;
|
||||
if(!$productID and $app->user->view->products) $productID = current(explode(',', $app->user->view->products));
|
||||
|
||||
/* Get default product id. */
|
||||
$deletedProducts = $app->dbh->query("SELECT id FROM " . TABLE_PRODUCT . " WHERE `deleted` = '1'")->fetchAll();
|
||||
$deletedProductIds = array();
|
||||
foreach($deletedProducts as $product) $deletedProductIds[] = $product->id;
|
||||
|
||||
$productID = (isset($_SESSION['product']) and !in_array($_SESSION['product'], $deletedProductIds)) ? $_SESSION['product'] : 0;
|
||||
if(!$productID and $app->user->view->products)
|
||||
{
|
||||
$viewProducts = explode(',', $app->user->view->products);
|
||||
$viewProducts = array_diff($viewProducts, $deletedProductIds);
|
||||
$productID = current($viewProducts);
|
||||
}
|
||||
|
||||
/* Check whether the creation permission is available, and print create buttons. */
|
||||
foreach($lang->createIcons as $objectType => $objectIcon)
|
||||
@@ -392,13 +407,21 @@ class commonModel extends model
|
||||
$attr = $objectType == 'doc' ? "class='iframe' data-width='650px'" : '';
|
||||
|
||||
$params = '';
|
||||
if(strpos('bug|testcase|story', $objectType) !== false) $params = "productID=$productID";
|
||||
if($objectType == 'doc')
|
||||
{
|
||||
$params = "objectType=&objectID=0&libID=0";
|
||||
$createMethod = 'selectLibType';
|
||||
}
|
||||
|
||||
if($objectType == 'bug') $params = "productID=$productID&branch=&extras=from=global";
|
||||
if($objectType == 'story') $params = "productID=$productID&branch=0&moduleID=0&storyID=0&objectID=0&bugID=0&planID=0&todoID=0&extra=from=global";
|
||||
if($objectType == 'task') $params = "executionID=0&storyID=0&moduleID=0&taskID=0&todoID=0&extra=from=global";
|
||||
if($objectType == 'testcase') $params = "productID=$productID&branch=&moduleID=0&from=¶m=0&storyID=0&extras=from=global";
|
||||
if($objectType == 'execution') $params = "projectID=&executionID=0©ExecutionID=0&planID=0&confirm=no&productID=0&extra=from=global";
|
||||
if($objectType == 'project') $params = "model=scrum&programID=0©ProjectID=0&extra=from=global";
|
||||
if($objectType == 'product') $params = "programID=&extra=from=global";
|
||||
if($objectType == 'program') $params = "parentProgramID=0&extra=from=global";
|
||||
|
||||
$html .= '<li>' . html::a(helper::createLink($objectType, $createMethod, $params, '', $isOnlyBody), "<i class='icon icon-$objectIcon'></i> " . $lang->createObjects[$objectType], '', $isOnlyBody ? $attr : '') . '</li>';
|
||||
}
|
||||
}
|
||||
@@ -671,6 +694,23 @@ class commonModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
/* Check whether other methods under the module have permissions. If yes, point to other methods. */
|
||||
if($display == false and isset($lang->$currentModule->menu))
|
||||
{
|
||||
foreach($lang->$currentModule->menu as $menu)
|
||||
{
|
||||
$linkPart = explode('|', $menu['link']);
|
||||
if(!isset($linkPart[2])) continue;
|
||||
$method = $linkPart[2];
|
||||
if(common::hasPriv($currentModule, $method))
|
||||
{
|
||||
$display = true;
|
||||
$currentMethod = $method;
|
||||
if(!isset($menu['target'])) break; // Try to jump to the method without opening a new window.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!$display) continue;
|
||||
|
||||
/* Assign vars. */
|
||||
@@ -688,7 +728,7 @@ class commonModel extends model
|
||||
}
|
||||
|
||||
/* Fix bug 14574. */
|
||||
if(array_slice($items, -1)[0] == 'divider') array_pop($items);
|
||||
if(end($items) == 'divider') array_pop($items);
|
||||
|
||||
return $items;
|
||||
}
|
||||
@@ -1277,7 +1317,7 @@ EOD;
|
||||
if(strtolower($module) == 'story' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'tostory') ($module = 'story') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if($config->systemMode == 'classic' and strtolower($module) == 'project') $method = substr(strtolower($method), 3);
|
||||
if($config->systemMode == 'classic' and strtolower($module) == 'project') $module = 'execution';
|
||||
if(!commonModel::hasPriv($module, $method, $object)) return false;
|
||||
$link = helper::createLink($module, $method, $vars, '', $onlyBody, $programID);
|
||||
|
||||
@@ -1914,18 +1954,6 @@ EOD;
|
||||
if(isset($this->app->user))
|
||||
{
|
||||
$this->app->user = $this->session->user;
|
||||
|
||||
$inProject = (isset($this->lang->navGroup->$module) && $this->lang->navGroup->$module == 'project');
|
||||
if(!defined('IN_UPGRADE') and $inProject)
|
||||
{
|
||||
/* Check program priv. */
|
||||
$viewProjects = trim($this->app->user->view->projects, ',');
|
||||
$accessDenied = ($this->session->project and $viewProjects and strpos(",{$viewProjects},", ",{$this->session->project},") === false);
|
||||
if($accessDenied and !$this->app->user->admin) $this->loadModel('project')->accessDenied();
|
||||
$this->resetProgramPriv($module, $method);
|
||||
if(!commonModel::hasPriv($module, $method)) $this->deny($module, $method, false);
|
||||
}
|
||||
|
||||
if(!commonModel::hasPriv($module, $method)) $this->deny($module, $method);
|
||||
}
|
||||
else
|
||||
@@ -1994,20 +2022,19 @@ EOD;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset program priv.
|
||||
* Reset project priv.
|
||||
*
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @static
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function resetProgramPriv($module, $method)
|
||||
public function resetProjectPriv($projectID = 0)
|
||||
{
|
||||
/* Get user program priv. */
|
||||
if(!$this->app->session->project) return;
|
||||
if(empty($projectID) and $this->session->project) $projectID = $this->session->project;
|
||||
if(empty($projectID)) return;
|
||||
|
||||
$program = $this->dao->findByID($this->app->session->project)->from(TABLE_PROJECT)->fetch();
|
||||
$program = $this->dao->findByID($projectID)->from(TABLE_PROJECT)->fetch();
|
||||
if(empty($program)) return;
|
||||
|
||||
$programRights = $this->dao->select('t3.module, t3.method')->from(TABLE_GROUP)->alias('t1')
|
||||
@@ -2023,18 +2050,30 @@ EOD;
|
||||
foreach($programRights as $programRight) $programRightGroup[$programRight->module][$programRight->method] = 1;
|
||||
|
||||
/* Reset priv by program privway. */
|
||||
$this->app->user->rights = $this->loadModel('user')->authorize($this->app->user->account);
|
||||
$rights = $this->app->user->rights['rights'];
|
||||
$this->app->user = clone $_SESSION['user'];
|
||||
|
||||
if($program->auth == 'extend') $this->app->user->rights['rights'] = array_merge_recursive($programRightGroup, $rights);
|
||||
if($program->auth == 'reset')
|
||||
{
|
||||
$recomputedRights = $this->loadModel('user')->authorize($this->app->user->account);
|
||||
$recomputedRights = $recomputedRights['rights'];
|
||||
|
||||
/* If priv way is reset, unset common program priv, and cover by program priv. */
|
||||
foreach($rights as $moduleKey => $methods)
|
||||
{
|
||||
if(in_array($moduleKey, $this->config->programPriv->waterfall)) unset($rights[$moduleKey]);
|
||||
}
|
||||
|
||||
$this->app->user->rights['rights'] = array_merge($rights, $programRightGroup);
|
||||
$recomputedRights = array_merge($rights, $programRightGroup);
|
||||
|
||||
/* Set base priv for project. */
|
||||
$projectRights = zget($this->app->user->rights['rights'], 'project', array());
|
||||
if(isset($projectRights['browse']) and !isset($recomputedRights['project']['browse'])) $recomputedRights['project']['browse'] = 1;
|
||||
if(isset($projectRights['kanban']) and !isset($recomputedRights['project']['kanban'])) $recomputedRights['project']['kanban'] = 1;
|
||||
if(isset($projectRights['index']) and !isset($recomputedRights['project']['index'])) $recomputedRights['project']['index'] = 1;
|
||||
|
||||
$this->app->user->rights['rights'] = $recomputedRights;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
#kanbanList .kanban-col[data-type="unclosedProduct"] .kanban-item:hover {box-shadow: none;}
|
||||
#kanbanList .kanban-col[data-type="unclosedProduct"] .kanban-item > .title {white-space: normal;}
|
||||
#kanbanList .kanban-col[data-type="normalRelease"] .kanban-item > .title {display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; height: 38px;}
|
||||
#kanbanList .kanban-col[data-type="normalRelease"] .kanban-item > .title > .text {display: block; white-space: nowrap; text-overflow: ellipsis; overflow: hidden;}
|
||||
#kanbanList .kanban-col[data-type="normalRelease"] .kanban-item > .title > .text {display: block; white-space: nowrap; text-overflow: clip; overflow: hidden;}
|
||||
#kanbanList .kanban-col[data-type="normalRelease"] .kanban-item > .title.has-icon > .text {margin-right: 5px; max-width: calc(100% - 20px);}
|
||||
#kanbanList .no-flex .kanban-col[data-type="normalRelease"] .kanban-item > .title {display: block; height: 38px;}
|
||||
#kanbanList .no-flex .kanban-col[data-type="normalRelease"] .kanban-item > .title > .text {display: inline-block;}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
function submitForm(type)
|
||||
{
|
||||
$('.modal-body #insert').val(type == 'insert' ? 1 : 0);
|
||||
$('#importNoticeModal .form-actions .btn').addClass('disabled');
|
||||
$("button[data-target='#importNoticeModal']").closest('form').submit();
|
||||
}
|
||||
</script>
|
||||
|
||||
+25
-24
@@ -163,10 +163,14 @@ class company extends control
|
||||
* @param int $recTotal
|
||||
* @param string $date
|
||||
* @param string $direction next|pre
|
||||
* @param int $userID
|
||||
* @param int $productID
|
||||
* @param int $projectID
|
||||
* @param int $executionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function dynamic($browseType = 'today', $param = '', $recTotal = 0, $date = '', $direction = 'next')
|
||||
public function dynamic($browseType = 'today', $param = '', $recTotal = 0, $date = '', $direction = 'next', $userID = '', $productID = 0, $projectID = 0, $executionID = 0)
|
||||
{
|
||||
$this->company->setMenu();
|
||||
$this->app->loadLang('user');
|
||||
@@ -202,20 +206,8 @@ class company extends control
|
||||
$orderBy = $direction == 'next' ? 'date_desc' : 'date_asc';
|
||||
$sort = $this->loadModel('common')->appendOrder($orderBy);
|
||||
|
||||
/* Set the user and type. */
|
||||
$account = 'all';
|
||||
$user = '';
|
||||
if($browseType == 'account')
|
||||
{
|
||||
$user = $this->loadModel('user')->getById((int)$param, 'id');
|
||||
if($user) $account = $user->account;
|
||||
}
|
||||
$product = $browseType == 'product' ? $param : 'all';
|
||||
$project = $browseType == 'project' ? $param : 'all';
|
||||
$execution = $browseType == 'execution' ? $param : 'all';
|
||||
$period = in_array($browseType, array('account', 'product', 'project', 'execution')) ? 'all' : $browseType;
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
$date = empty($date) ? '' : date('Y-m-d', $date);
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
$date = empty($date) ? '' : date('Y-m-d', $date);
|
||||
|
||||
/* Get products' list.*/
|
||||
$products = $this->loadModel('product')->getPairs('nocode');
|
||||
@@ -224,15 +216,17 @@ class company extends control
|
||||
|
||||
/* Get projects' list.*/
|
||||
$projects = $this->loadModel('project')->getPairsByProgram(0);
|
||||
$projects = array($this->lang->company->project) + $projects;
|
||||
$this->view->projects = $projects;
|
||||
$this->view->projects = array($this->lang->company->project) + $projects;;
|
||||
|
||||
/* Get executions' list.*/
|
||||
$executions = $this->loadModel('execution')->getPairs(0, 'all', 'nocode');
|
||||
$executions = array($this->lang->company->execution) + $executions;
|
||||
$executions = array($this->lang->execution->common) + $executions;
|
||||
$this->view->executions = $executions;
|
||||
|
||||
/* Get users.*/
|
||||
/* Set account and get users.*/
|
||||
$user = $userID ? $this->loadModel('user')->getById($userID, 'id') : '';
|
||||
$account = $user ? $user->account : 'all';
|
||||
|
||||
$userIdPairs = $this->loadModel('user')->getPairs('noclosed|nodeleted|noletter|useid');
|
||||
$userIdPairs[''] = $this->lang->company->user;
|
||||
$this->view->userIdPairs = $userIdPairs;
|
||||
@@ -247,7 +241,10 @@ class company extends control
|
||||
/* Get actions. */
|
||||
if($browseType != 'bysearch')
|
||||
{
|
||||
$actions = $this->action->getDynamic($account, $period, $sort, $pager, $product, $project, $execution, $date, $direction);
|
||||
if(!$productID) $productID = 'all';
|
||||
if(!$projectID) $projectID = 'all';
|
||||
if(!$executionID) $executionID = 'all';
|
||||
$actions = $this->action->getDynamic($account, $browseType, $sort, $pager, $productID, $projectID, $executionID, $date, $direction);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -257,10 +254,13 @@ class company extends control
|
||||
/* Build search form. */
|
||||
$executions[0] = '';
|
||||
$products[0] = '';
|
||||
$projects[0] = '';
|
||||
ksort($executions);
|
||||
ksort($products);
|
||||
ksort($projects);
|
||||
$executions['all'] = $this->lang->execution->allExecutions;
|
||||
$products['all'] = $this->lang->product->allProduct;
|
||||
$projects['all'] = $this->lang->project->all;
|
||||
|
||||
foreach($this->lang->action->search->label as $action => $name)
|
||||
{
|
||||
@@ -280,14 +280,15 @@ class company extends control
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->account = $account;
|
||||
$this->view->accountPairs = $accountPairs;
|
||||
$this->view->product = $product;
|
||||
$this->view->project = $project;
|
||||
$this->view->execution = $execution;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->executionID = $executionID;
|
||||
$this->view->queryID = $queryID;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->user = $user;
|
||||
$this->view->userID = $userID;
|
||||
$this->view->param = $param;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->dateGroups = $this->action->buildDateGroup($actions, $direction, $browseType);
|
||||
$this->view->direction = $direction;
|
||||
$this->display();
|
||||
|
||||
@@ -1,30 +1,11 @@
|
||||
function changeUser(account)
|
||||
$('#account, #product, #project, #execution').change(function()
|
||||
{
|
||||
if(account == '')
|
||||
{
|
||||
link = createLink('company', 'dynamic', 'type=all');
|
||||
}
|
||||
else
|
||||
{
|
||||
link = createLink('company', 'dynamic', 'type=account¶m=' + account);
|
||||
}
|
||||
location.href = link;
|
||||
}
|
||||
var userID = $('#account').val();
|
||||
var productID = $('#product').val();
|
||||
var projectID = systemMode == 'new' ? $('#project').val() : 0;
|
||||
var executionID = $('#execution').val();
|
||||
|
||||
function changeProduct(product)
|
||||
{
|
||||
link = createLink('company', 'dynamic', 'type=product¶m=' + product);
|
||||
browseType = browseType == 'bysearch' ? 'all' : browseType;
|
||||
link = createLink('company', 'dynamic', 'browseType=' + browseType + '¶m=&recTotal=0&date=&direction=next&userID=' + userID + '&productID=' + productID + '&projectID=' + projectID + '&executionID=' + executionID);
|
||||
location.href = link;
|
||||
}
|
||||
|
||||
function changeProject(project)
|
||||
{
|
||||
link = createLink('company', 'dynamic', 'type=project¶m=' + project);
|
||||
location.href = link;
|
||||
}
|
||||
|
||||
function changeExecution(execution)
|
||||
{
|
||||
link = createLink('company', 'dynamic', 'type=execution¶m=' + execution);
|
||||
location.href = link;
|
||||
}
|
||||
})
|
||||
|
||||
@@ -30,7 +30,7 @@ $lang->company->admins = 'Administratoren';
|
||||
|
||||
$lang->company->product = $lang->productCommon;
|
||||
$lang->company->project = 'Project';
|
||||
$lang->company->execution = $lang->executionCommon;
|
||||
$lang->company->execution = 'Execution';
|
||||
$lang->company->user = 'Benutzer';
|
||||
|
||||
$lang->company->guestOptions[0] = 'Verweigern';
|
||||
|
||||
@@ -18,6 +18,7 @@ $lang->company->browse = "User List";
|
||||
$lang->company->dynamic = "Dynamics";
|
||||
$lang->company->orgView = 'View';
|
||||
|
||||
$lang->company->id = 'ID';
|
||||
$lang->company->name = 'Company Name';
|
||||
$lang->company->phone = 'Phone';
|
||||
$lang->company->fax = 'Fax';
|
||||
@@ -27,10 +28,11 @@ $lang->company->website = 'Website';
|
||||
$lang->company->backyard = 'Intranet';
|
||||
$lang->company->guest = 'Guest Login';
|
||||
$lang->company->admins = 'Administrator';
|
||||
$lang->company->deleted = 'Deleted';
|
||||
|
||||
$lang->company->product = $lang->productCommon;
|
||||
$lang->company->project = 'Project';
|
||||
$lang->company->execution = $lang->executionCommon;
|
||||
$lang->company->execution = 'Execution';
|
||||
$lang->company->user = 'User';
|
||||
|
||||
$lang->company->guestOptions[0] = 'Deny';
|
||||
|
||||
@@ -30,7 +30,7 @@ $lang->company->admins = 'Administrateur';
|
||||
|
||||
$lang->company->product = $lang->productCommon;
|
||||
$lang->company->project = 'Project';
|
||||
$lang->company->execution = $lang->executionCommon;
|
||||
$lang->company->execution = 'Execution';
|
||||
$lang->company->user = 'Utilisateurs';
|
||||
|
||||
$lang->company->guestOptions[0] = 'Refusée';
|
||||
|
||||
@@ -30,7 +30,7 @@ $lang->company->admins = 'Quản trị viên';
|
||||
|
||||
$lang->company->product = $lang->productCommon;
|
||||
$lang->company->project = 'Project';
|
||||
$lang->company->execution = $lang->executionCommon;
|
||||
$lang->company->execution = 'Execution';
|
||||
$lang->company->user = 'Người dùng';
|
||||
|
||||
$lang->company->guestOptions[0] = 'Từ chối';
|
||||
|
||||
@@ -18,6 +18,7 @@ $lang->company->browse = "用户列表";
|
||||
$lang->company->dynamic = "组织动态";
|
||||
$lang->company->orgView = '组织视图';
|
||||
|
||||
$lang->company->id = '编号';
|
||||
$lang->company->name = '公司名称';
|
||||
$lang->company->phone = '联系电话';
|
||||
$lang->company->fax = '传真';
|
||||
@@ -27,10 +28,11 @@ $lang->company->website = '官网';
|
||||
$lang->company->backyard = '内网';
|
||||
$lang->company->guest = '匿名登录';
|
||||
$lang->company->admins = '管理员';
|
||||
$lang->company->deleted = '已删除';
|
||||
|
||||
$lang->company->product = $lang->productCommon;
|
||||
$lang->company->project = '项目';
|
||||
$lang->company->execution = $lang->executionCommon;
|
||||
$lang->company->execution = '执行';
|
||||
$lang->company->user = '用户';
|
||||
|
||||
$lang->company->guestOptions[0] = '不允许';
|
||||
|
||||
@@ -18,6 +18,7 @@ $lang->company->browse = "用戶列表";
|
||||
$lang->company->dynamic = "組織動態";
|
||||
$lang->company->orgView = '組織視圖';
|
||||
|
||||
$lang->company->id = '編號';
|
||||
$lang->company->name = '公司名稱';
|
||||
$lang->company->phone = '聯繫電話';
|
||||
$lang->company->fax = '傳真';
|
||||
@@ -27,10 +28,11 @@ $lang->company->website = '官網';
|
||||
$lang->company->backyard = '內網';
|
||||
$lang->company->guest = '匿名登錄';
|
||||
$lang->company->admins = '管理員';
|
||||
$lang->company->deleted = '已刪除';
|
||||
|
||||
$lang->company->product = $lang->productCommon;
|
||||
$lang->company->project = '項目';
|
||||
$lang->company->execution = $lang->executionCommon;
|
||||
$lang->company->execution = '執行';
|
||||
$lang->company->user = '用戶';
|
||||
|
||||
$lang->company->guestOptions[0] = '不允許';
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('browseType', $browseType);?>
|
||||
<?php js::set('systemMode', $config->systemMode);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php foreach($lang->action->periods as $period => $label):?>
|
||||
@@ -22,15 +24,15 @@
|
||||
$active = 'btn-active-text';
|
||||
$label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
}
|
||||
echo html::a(inlink('dynamic', "browseType=$period"), $label, '', "class='btn btn-link $active' id='{$period}'")
|
||||
echo html::a(inlink('dynamic', "browseType=$period¶m=&recTotal=0&date=&direction=next&userID=$userID&productID=$productID&projectID=$projectID&executionID=$executionID"), $label, '', "class='btn btn-link $active' id='{$period}'")
|
||||
?>
|
||||
<?php endforeach;?>
|
||||
<div class="input-control space c-user"><?php echo html::select('account', $userIdPairs, $user ? $user->id : '', 'onchange=changeUser(this.value) class="form-control chosen" data-max_drop_width="215"');?></div>
|
||||
<div class="input-control space c-product"><?php echo html::select('product', $products, $product, 'onchange=changeProduct(this.value) class="form-control chosen" data-max_drop_width="215"');?></div>
|
||||
<div class="input-control space c-user"><?php echo html::select('account', $userIdPairs, $userID, 'class="form-control chosen" data-max_drop_width="215"');?></div>
|
||||
<div class="input-control space c-product"><?php echo html::select('product', $products, $productID, 'class="form-control chosen" data-max_drop_width="215"');?></div>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<div class="input-control space c-project"><?php echo html::select('project', $projects, $project, 'onchange=changeProject(this.value) class="form-control chosen" data-max_drop_width="215"');?></div>
|
||||
<div class="input-control space c-project"><?php echo html::select('project', $projects, $projectID, 'class="form-control chosen" data-max_drop_width="215"');?></div>
|
||||
<?php endif;?>
|
||||
<div class="input-control space c-execution"><?php echo html::select('execution', $executions, $execution, 'onchange=changeExecution(this.value) class="form-control chosen" data-max_drop_width="215"'); ?></div>
|
||||
<div class="input-control space c-execution"><?php echo html::select('execution', $executions, $executionID, 'class="form-control chosen" data-max_drop_width="215"'); ?></div>
|
||||
<a class="btn btn-link querybox-toggle" id="bysearchTab"><i class="icon icon-search muted"></i> <?php echo $lang->action->dynamic->search;?></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,13 +3,23 @@ $lang->compile->common = 'Compile';
|
||||
$lang->compile->browse = 'History';
|
||||
$lang->compile->logs = 'Log';
|
||||
|
||||
$lang->compile->id = 'ID';
|
||||
$lang->compile->name = 'Name';
|
||||
$lang->compile->buildType = 'Engine';
|
||||
$lang->compile->status = 'Status';
|
||||
$lang->compile->time = 'Time';
|
||||
$lang->compile->result = 'Result';
|
||||
$lang->compile->refresh = 'Refresh';
|
||||
$lang->compile->id = 'ID';
|
||||
$lang->compile->name = 'Name';
|
||||
$lang->compile->buildType = 'Engine';
|
||||
$lang->compile->status = 'Status';
|
||||
$lang->compile->time = 'Time';
|
||||
$lang->compile->result = 'Result';
|
||||
$lang->compile->refresh = 'Refresh';
|
||||
$lang->compile->job = 'Job';
|
||||
$lang->compile->queue = 'Queue';
|
||||
$lang->compile->atTime = 'Execution Time';
|
||||
$lang->compile->testtask = 'Testtask';
|
||||
$lang->compile->tag = 'Tag';
|
||||
$lang->compile->times = 'Times';
|
||||
$lang->compile->createdBy = 'Created By';
|
||||
$lang->compile->createdDate = 'Created Date';
|
||||
$lang->compile->updateDate = 'Update Date';
|
||||
$lang->compile->deleted = 'Deleted';
|
||||
|
||||
$lang->compile->statusList['success'] = 'Done';
|
||||
$lang->compile->statusList['failure'] = 'Failed';
|
||||
|
||||
@@ -3,13 +3,23 @@ $lang->compile->common = '构建';
|
||||
$lang->compile->browse = '构建历史';
|
||||
$lang->compile->logs = '构建日志';
|
||||
|
||||
$lang->compile->id = 'ID';
|
||||
$lang->compile->name = '构建名称';
|
||||
$lang->compile->buildType = '构建引擎';
|
||||
$lang->compile->status = '构建状态';
|
||||
$lang->compile->time = '构建时间';
|
||||
$lang->compile->result = '构建结果';
|
||||
$lang->compile->refresh = '刷新';
|
||||
$lang->compile->id = 'ID';
|
||||
$lang->compile->name = '构建名称';
|
||||
$lang->compile->buildType = '构建引擎';
|
||||
$lang->compile->status = '构建状态';
|
||||
$lang->compile->time = '构建时间';
|
||||
$lang->compile->result = '构建结果';
|
||||
$lang->compile->refresh = '刷新';
|
||||
$lang->compile->job = '构建任务';
|
||||
$lang->compile->queue = '队列';
|
||||
$lang->compile->atTime = '执行时间';
|
||||
$lang->compile->testtask = '测试单';
|
||||
$lang->compile->tag = '标签';
|
||||
$lang->compile->times = '次数';
|
||||
$lang->compile->createdBy = '由谁创建';
|
||||
$lang->compile->createdDate = '创建日期';
|
||||
$lang->compile->updateDate = '编辑日期';
|
||||
$lang->compile->deleted = '已删除';
|
||||
|
||||
$lang->compile->statusList['success'] = '成功';
|
||||
$lang->compile->statusList['failure'] = '失败';
|
||||
|
||||
@@ -3,13 +3,23 @@ $lang->compile->common = '構建';
|
||||
$lang->compile->browse = '構建歷史';
|
||||
$lang->compile->logs = '構建日誌';
|
||||
|
||||
$lang->compile->id = 'ID';
|
||||
$lang->compile->name = '構建名稱';
|
||||
$lang->compile->buildType = '構建引擎';
|
||||
$lang->compile->status = '構建狀態';
|
||||
$lang->compile->time = '構建時間';
|
||||
$lang->compile->result = '構建結果';
|
||||
$lang->compile->refresh = '刷新';
|
||||
$lang->compile->id = 'ID';
|
||||
$lang->compile->name = '構建名稱';
|
||||
$lang->compile->buildType = '構建引擎';
|
||||
$lang->compile->status = '構建狀態';
|
||||
$lang->compile->time = '構建時間';
|
||||
$lang->compile->result = '構建結果';
|
||||
$lang->compile->refresh = '刷新';
|
||||
$lang->compile->job = '構建任務';
|
||||
$lang->compile->queue = '隊列';
|
||||
$lang->compile->atTime = '執行時間';
|
||||
$lang->compile->testtask = '測試單';
|
||||
$lang->compile->tag = '標籤';
|
||||
$lang->compile->times = '次數';
|
||||
$lang->compile->createdBy = '由誰創建';
|
||||
$lang->compile->createdDate = '創建日期';
|
||||
$lang->compile->updateDate = '編輯日期';
|
||||
$lang->compile->deleted = '已刪除';
|
||||
|
||||
$lang->compile->statusList['success'] = '成功';
|
||||
$lang->compile->statusList['failure'] = '失敗';
|
||||
|
||||
@@ -144,8 +144,9 @@ class compileModel extends model
|
||||
$this->dao->update(TABLE_COMPILE)->set('tag')->eq($lastTag)->where('id')->eq($compile->id)->exec();
|
||||
}
|
||||
|
||||
if($job->engine == 'gitlab') $compile = $this->loadModel('job')->execGitlabPipeline($job, $compileID);
|
||||
if($job->engine == 'jenkins') $compile = $this->job->execJenkinsPipeline($job, $repo, $compile->id);
|
||||
$this->loadModel('job');
|
||||
if($job->engine == 'gitlab') $compile = $this->job->execGitlabPipeline($job, $compileID);
|
||||
if($job->engine == 'jenkins') $compile = $this->job->execJenkinsPipeline($job, $repo, $compileID);
|
||||
|
||||
$this->dao->update(TABLE_COMPILE)->data($compile)->where('id')->eq($compileID)->exec();
|
||||
$this->dao->update(TABLE_JOB)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
$lang->cron->common = 'Cron';
|
||||
$lang->cron->id = 'ID';
|
||||
$lang->cron->buildin = 'Build In';
|
||||
$lang->cron->index = 'Cron Home';
|
||||
$lang->cron->list = 'Task';
|
||||
$lang->cron->create = 'Add';
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
$lang->cron->common = '定时任务';
|
||||
$lang->cron->id = '编号';
|
||||
$lang->cron->buildin = '内置';
|
||||
$lang->cron->index = '首页';
|
||||
$lang->cron->list = '任务列表';
|
||||
$lang->cron->create = '添加';
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
$lang->cron->common = '定時任務';
|
||||
$lang->cron->id = '編號';
|
||||
$lang->cron->buildin = '內置';
|
||||
$lang->cron->index = '首頁';
|
||||
$lang->cron->list = '任務列表';
|
||||
$lang->cron->create = '添加';
|
||||
|
||||
@@ -53,7 +53,7 @@ $config->custom->fieldList['task']['edit'] = 'pri,estimate,estStarted,
|
||||
$config->custom->fieldList['task']['finish'] = 'comment';
|
||||
$config->custom->fieldList['task']['activate'] = 'assignedTo,comment';
|
||||
$config->custom->fieldList['build'] = 'scmPath,filePath,desc';
|
||||
$config->custom->fieldList['bug']['create'] = 'module,deadline,type,os,browser,severity,pri,steps,keywords';
|
||||
$config->custom->fieldList['bug']['create'] = 'module,project,deadline,type,os,browser,severity,pri,steps,keywords';
|
||||
$config->custom->fieldList['bug']['edit'] = 'plan,assignedTo,deadline,type,os,browser,severity,pri,steps,keywords';
|
||||
$config->custom->fieldList['bug']['resolve'] = 'resolvedBuild,resolvedDate,assignedTo,comment';
|
||||
$config->custom->fieldList['testcase']['create'] = 'stage,story,pri,precondition,keywords';
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
global $config;
|
||||
|
||||
$lang->custom->common = 'Custom';
|
||||
$lang->custom->id = 'ID';
|
||||
$lang->custom->index = 'Home';
|
||||
$lang->custom->set = 'Customize';
|
||||
$lang->custom->restore = 'Reset';
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
global $config;
|
||||
|
||||
$lang->custom->common = '自定义';
|
||||
$lang->custom->id = '编号';
|
||||
$lang->custom->index = '首页';
|
||||
$lang->custom->set = '自定义配置';
|
||||
$lang->custom->restore = '恢复默认';
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
global $config;
|
||||
|
||||
$lang->custom->common = '自定義';
|
||||
$lang->custom->id = '編號';
|
||||
$lang->custom->index = '首頁';
|
||||
$lang->custom->set = '自定義配置';
|
||||
$lang->custom->restore = '恢復預設';
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = 'Department';
|
||||
$lang->dept->id = 'ID';
|
||||
$lang->dept->path = 'Path';
|
||||
$lang->dept->position = 'Position';
|
||||
$lang->dept->manageChild = "Child Department";
|
||||
$lang->dept->edit = "Edit Department";
|
||||
$lang->dept->delete = "Delete Department";
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = '部门结构';
|
||||
$lang->dept->id = '编号';
|
||||
$lang->dept->path = '路径';
|
||||
$lang->dept->position = '职位';
|
||||
$lang->dept->manageChild = "下级部门";
|
||||
$lang->dept->edit = "编辑部门";
|
||||
$lang->dept->delete = "删除部门";
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->dept->common = '部門結構';
|
||||
$lang->dept->id = '編號';
|
||||
$lang->dept->path = '路徑';
|
||||
$lang->dept->position = '職位';
|
||||
$lang->dept->manageChild = "下級部門";
|
||||
$lang->dept->edit = "編輯部門";
|
||||
$lang->dept->delete = "刪除部門";
|
||||
|
||||
@@ -104,6 +104,7 @@ $config->dev->tableMap['doclib'] = 'doc';
|
||||
$config->dev->tableMap['grouppriv'] = 'group';
|
||||
$config->dev->tableMap['usercontact'] = 'user-contacts';
|
||||
$config->dev->tableMap['usergroup'] = 'user';
|
||||
$config->dev->tableMap['userview'] = 'user';
|
||||
$config->dev->tableMap['userquery'] = 'search';
|
||||
$config->dev->tableMap['usertpl'] = 'user-tpl';
|
||||
$config->dev->tableMap['history'] = 'action-history';
|
||||
@@ -114,7 +115,10 @@ $config->dev->tableMap['suitecase'] = 'testcase';
|
||||
$config->dev->tableMap['repofiles'] = 'repo';
|
||||
$config->dev->tableMap['repohistory'] = 'repo';
|
||||
$config->dev->tableMap['repobranch'] = 'repo';
|
||||
$config->dev->tableMap['log'] = 'action';
|
||||
$config->dev->tableMap['searchindex'] = 'search';
|
||||
$config->dev->tableMap['searchdict'] = 'search';
|
||||
$config->dev->tableMap['testtask'] = 'testreport';
|
||||
|
||||
$config->dev->postParams['story']['create']['product'] = 'int';
|
||||
$config->dev->postParams['story']['create']['title'] = 'string';
|
||||
|
||||
@@ -39,11 +39,12 @@ class devModel extends model
|
||||
{
|
||||
$module = substr($table, strpos($table, '_') + 1);
|
||||
$aliasModule = $subLang = '';
|
||||
$this->app->loadLang($module);
|
||||
try
|
||||
{
|
||||
if(isset($this->config->dev->tableMap[$module])) $aliasModule = $this->config->dev->tableMap[$module];
|
||||
if(strpos($aliasModule, '-') !== false) list($aliasModule, $subLang) = explode('-', $aliasModule);
|
||||
if(empty($aliasModule) and strpos($module, 'im_') === false) $this->app->loadLang($aliasModule ? $aliasModule : $module);
|
||||
if(!empty($aliasModule) and strpos($module, 'im_') === false) $this->app->loadLang($aliasModule);
|
||||
}
|
||||
catch(PDOException $e)
|
||||
{
|
||||
@@ -69,7 +70,7 @@ class devModel extends model
|
||||
$type = str_replace(array('big', 'small', 'medium', 'tiny'), '', $type);
|
||||
$field = array();
|
||||
$field['name'] = isset($this->lang->$module->{$rawField->field}) ? $this->lang->$module->{$rawField->field} : '';
|
||||
if(empty($field['name']) and $aliasModule) $field['name'] = isset($this->lang->$aliasModule->{$rawField->field}) ? $this->lang->$aliasModule->{$rawField->field} : '';
|
||||
if((empty($field['name']) or !is_string($field['name'])) and $aliasModule) $field['name'] = isset($this->lang->$aliasModule->{$rawField->field}) ? $this->lang->$aliasModule->{$rawField->field} : '';
|
||||
if($subLang) $field['name'] = isset($this->lang->$aliasModule->$subLang->{$rawField->field}) ? $this->lang->$aliasModule->$subLang->{$rawField->field} : $field['name'];
|
||||
if(!is_string($field['name'])) $field['name'] = '';
|
||||
$field['null'] = $rawField->null;
|
||||
|
||||
@@ -475,7 +475,7 @@ class doc extends control
|
||||
/* Get doc. */
|
||||
$docID = (int)$docID;
|
||||
$doc = $this->doc->getById($docID, $version, true);
|
||||
if(!$doc) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
if(!$doc) die(js::error($this->lang->notFound) . js::locate($this->createLink('doc', 'index')));
|
||||
|
||||
/* The global search opens in the document library. */
|
||||
if(!isonlybody())
|
||||
@@ -914,7 +914,7 @@ class doc extends control
|
||||
if($docID)
|
||||
{
|
||||
$doc = $this->doc->getById($docID, $version, true);
|
||||
if(!$doc) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
if(!$doc) die(js::error($this->lang->notFound));
|
||||
|
||||
if($doc->keywords)
|
||||
{
|
||||
|
||||
@@ -6,7 +6,7 @@ $(function()
|
||||
{
|
||||
$('#content').html(draft);
|
||||
editor = KindEditor.instances[0];
|
||||
editor.html(draft);
|
||||
editor.html('' + draft);
|
||||
$('.kindeditor-ph').remove();
|
||||
}
|
||||
}, 100)
|
||||
|
||||
@@ -53,6 +53,12 @@ $lang->doc->searchResult = 'Search Result';
|
||||
$lang->doc->mailto = 'Mailto';
|
||||
$lang->doc->noModule = 'No document in this lib, please create it';
|
||||
$lang->doc->noChapter = 'No chapters or articles in this book. Please add chapters and articles.';
|
||||
$lang->doc->views = 'Views';
|
||||
$lang->doc->draft = 'Draft';
|
||||
$lang->doc->collector = 'Collector';
|
||||
$lang->doc->main = 'Main Document Library';
|
||||
$lang->doc->order = 'Order';
|
||||
$lang->doc->doc = 'Document';
|
||||
|
||||
$lang->doc->moduleDoc = 'By Module';
|
||||
$lang->doc->searchDoc = 'Search';
|
||||
|
||||
@@ -53,6 +53,12 @@ $lang->doc->searchResult = '搜索结果';
|
||||
$lang->doc->mailto = '抄送给';
|
||||
$lang->doc->noModule = '文档库下没有目录和文档,请维护目录或者创建文档';
|
||||
$lang->doc->noChapter = '手册下没有章节和文章,请维护手册';
|
||||
$lang->doc->views = '浏览次数';
|
||||
$lang->doc->draft = '草稿';
|
||||
$lang->doc->collector = '收藏者';
|
||||
$lang->doc->main = '文档主库';
|
||||
$lang->doc->order = '排序';
|
||||
$lang->doc->doc = '文档';
|
||||
|
||||
$lang->doc->moduleDoc = '按模块浏览';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
|
||||
@@ -53,6 +53,12 @@ $lang->doc->searchResult = '搜索結果';
|
||||
$lang->doc->mailto = '抄送給';
|
||||
$lang->doc->noModule = '文檔庫下沒有目錄和文檔,請維護目錄或者創建文檔';
|
||||
$lang->doc->noChapter = '手冊下沒有章節和文章,請維護手冊';
|
||||
$lang->doc->views = '瀏覽次數';
|
||||
$lang->doc->draft = '草稿';
|
||||
$lang->doc->collector = '收藏者';
|
||||
$lang->doc->main = '文檔主庫';
|
||||
$lang->doc->order = '排序';
|
||||
$lang->doc->doc = '文檔';
|
||||
|
||||
$lang->doc->moduleDoc = '按模組瀏覽';
|
||||
$lang->doc->searchDoc = '搜索';
|
||||
|
||||
@@ -148,6 +148,13 @@ class docModel extends model
|
||||
}
|
||||
|
||||
if($lib->acl == 'private') $lib->users = $this->app->user->account;
|
||||
if($lib->acl == 'custom')
|
||||
{
|
||||
$trimedUsers = ',' . trim($lib->users, ',') . ',';
|
||||
if(strpos($trimedUsers, ',' . $this->app->user->account . ',') === false) $lib->users .= ',' . $this->app->user->account;
|
||||
}
|
||||
|
||||
$lib->name = trim($lib->name); //Temporary treatment: Code for bug #15528.
|
||||
$this->dao->insert(TABLE_DOCLIB)->data($lib)->autoCheck()
|
||||
->batchCheck($this->config->doc->createlib->requiredFields, 'notempty')
|
||||
->exec();
|
||||
@@ -177,6 +184,8 @@ class docModel extends model
|
||||
$libCreatedBy = $this->dao->select('*')->from(TABLE_ACTION)->where('objectType')->eq('doclib')->andWhere('objectID')->eq($libID)->andWhere('action')->eq('created')->fetch('actor');
|
||||
$lib->users = $libCreatedBy ? $libCreatedBy : $this->app->user->account;
|
||||
}
|
||||
|
||||
$lib->name = trim($lib->name); //Temporary treatment: Code for bug #15528.
|
||||
$this->dao->update(TABLE_DOCLIB)->data($lib)->autoCheck()
|
||||
->batchCheck($this->config->doc->editlib->requiredFields, 'notempty')
|
||||
->where('id')->eq($libID)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<?php echo $lib->type != 'book' ? $lang->doc->editLib : $lang->doc->editBook;?>
|
||||
</h2>
|
||||
</div>
|
||||
<form method='post' class='form-ajax'>
|
||||
<form method='post' target="hiddenwin">
|
||||
<table class='table table-form'>
|
||||
<?php if(!empty($lib->product)):?>
|
||||
<tr>
|
||||
|
||||
@@ -26,6 +26,9 @@ $lang->entry->editedby = 'EditedBy';
|
||||
$lang->entry->editedDate = 'EditedDate';
|
||||
$lang->entry->date = 'Requesting Time';
|
||||
$lang->entry->url = 'Requesting URL';
|
||||
$lang->entry->calledTime = 'Called Time';
|
||||
$lang->entry->editedBy = 'Edited By';
|
||||
$lang->entry->deleted = 'Deleted';
|
||||
|
||||
$lang->entry->confirmDelete = 'Do you want to delete this entry?';
|
||||
$lang->entry->help = 'Help';
|
||||
|
||||
@@ -26,6 +26,9 @@ $lang->entry->editedby = '最后编辑';
|
||||
$lang->entry->editedDate = '编辑时间';
|
||||
$lang->entry->date = '请求时间';
|
||||
$lang->entry->url = '请求地址';
|
||||
$lang->entry->calledTime = '调用时间';
|
||||
$lang->entry->editedBy = '由谁编辑';
|
||||
$lang->entry->deleted = '已删除';
|
||||
|
||||
$lang->entry->confirmDelete = '您确认要删除该应用吗?';
|
||||
$lang->entry->help = '使用说明';
|
||||
|
||||
@@ -26,6 +26,9 @@ $lang->entry->editedby = '最後編輯';
|
||||
$lang->entry->editedDate = '編輯時間';
|
||||
$lang->entry->date = '請求時間';
|
||||
$lang->entry->url = '請求地址';
|
||||
$lang->entry->calledTime = '調用時間';
|
||||
$lang->entry->editedBy = '由誰編輯';
|
||||
$lang->entry->deleted = '已刪除';
|
||||
|
||||
$lang->entry->confirmDelete = '您確認要刪除該應用嗎?';
|
||||
$lang->entry->help = '使用說明';
|
||||
|
||||
@@ -140,6 +140,8 @@ class execution extends control
|
||||
|
||||
if(common::hasPriv('execution', 'create')) $this->lang->TRActions = html::a($this->createLink('execution', 'create'), "<i class='icon icon-sm icon-plus'></i> " . $this->lang->execution->create, '', "class='btn btn-primary'");
|
||||
|
||||
if(!isset($_SESSION['limitedExecutions'])) $this->execution->getLimitedExecution();
|
||||
|
||||
/* Set browse type. */
|
||||
$browseType = strtolower($status);
|
||||
|
||||
@@ -1206,11 +1208,12 @@ class execution extends control
|
||||
* @param int $planID
|
||||
* @param string $confirm
|
||||
* @param string $productID
|
||||
* @param string $extra
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($projectID = '', $executionID = '', $copyExecutionID = '', $planID = 0, $confirm = 'no', $productID = 0)
|
||||
public function create($projectID = '', $executionID = '', $copyExecutionID = '', $planID = 0, $confirm = 'no', $productID = 0, $extra = '')
|
||||
{
|
||||
/* Set menu. */
|
||||
if($this->app->tab == 'project')
|
||||
@@ -1231,6 +1234,9 @@ class execution extends control
|
||||
unset($this->lang->doc->menu->execution['subMenu']);
|
||||
}
|
||||
|
||||
$extra = str_replace(array(',', ' '), array('&', ''), $extra);
|
||||
parse_str($extra, $output);
|
||||
|
||||
$this->app->loadLang('program');
|
||||
$this->app->loadLang('stage');
|
||||
$this->app->loadLang('programplan');
|
||||
@@ -1338,6 +1344,7 @@ class execution extends control
|
||||
|
||||
$this->view->title = (($this->app->tab == 'execution') and ($this->config->systemMode == 'new')) ? $this->lang->execution->createExec : $this->lang->execution->create;
|
||||
$this->view->position[] = $this->view->title;
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('execution', 'all') : '';
|
||||
$this->view->executions = array('' => '') + $this->execution->getList($projectID);
|
||||
$this->view->groups = $this->loadModel('group')->getPairs();
|
||||
$this->view->allProducts = array(0 => '') + $this->loadModel('product')->getProductPairsByProject($projectID, 'noclosed');
|
||||
@@ -2982,6 +2989,9 @@ class execution extends control
|
||||
$executionLang = $this->lang->execution;
|
||||
$executionConfig = $this->config->execution;
|
||||
|
||||
$projectID = $from == 'project' ? $this->session->project : 0;
|
||||
if($projectID) $this->project->setMenu($projectID);
|
||||
|
||||
/* Create field lists. */
|
||||
$fields = $this->post->exportFields ? $this->post->exportFields : explode(',', $executionConfig->list->exportFields);
|
||||
foreach($fields as $key => $fieldName)
|
||||
@@ -2991,7 +3001,6 @@ class execution extends control
|
||||
unset($fields[$key]);
|
||||
}
|
||||
|
||||
$projectID = $from == 'project' ? $this->session->project : 0;
|
||||
$executionStats = $this->project->getStats($projectID, $status == 'byproduct' ? 'all' : $status, $productID, 0, 30, 'id_asc');
|
||||
$users = $this->loadModel('user')->getPairs('noletter');
|
||||
foreach($executionStats as $i => $execution)
|
||||
|
||||
@@ -52,15 +52,12 @@ $(function()
|
||||
{
|
||||
if(index == 0)
|
||||
{
|
||||
var maxWidth = $('.chosen-container .chosen-drop.chosen-auto-max-width.in').width() - 70;
|
||||
|
||||
$('#teams_chosen ul .label').remove();
|
||||
$(this).after(' <label class="label">' + projectCommon + '</label>');
|
||||
$(this).attr('style', 'display: inline-block; vertical-align: middle; max-width: ' + maxWidth + 'px');
|
||||
var projectName = subString($(this).text(), 56);
|
||||
$(this).text(projectName);
|
||||
$(this).append(' <label class="label">' + projectCommon + '</label>');
|
||||
}
|
||||
else
|
||||
{
|
||||
$(this).html($(this).html().replace(' ', ''));
|
||||
$(this).prepend(' ');
|
||||
}
|
||||
})
|
||||
@@ -107,3 +104,30 @@ function refreshPage(projectID)
|
||||
{
|
||||
location.href = createLink('execution', 'create', 'projectID=' + projectID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cut a string of letters and characters with the same length.
|
||||
*
|
||||
* @param string $title
|
||||
* @param int $stringLength
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
function subString(title, stringLength)
|
||||
{
|
||||
if(title.replace(/[\u4e00-\u9fa5]/g, "**").length > stringLength)
|
||||
{
|
||||
var length = 0;
|
||||
for(var i = 0; i < title.length; i ++)
|
||||
{
|
||||
length += title.charCodeAt(i) > 255 ? 2 : 1;
|
||||
if(length > stringLength)
|
||||
{
|
||||
title = title.substring(0, i) + '...';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return title;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,13 @@ $(function()
|
||||
adjustTableFooter();
|
||||
$('body').on('click', '#toggleFold', adjustTableFooter);
|
||||
$('body').on('click', '.icon.icon-angle-double-right', adjustTableFooter);
|
||||
|
||||
/* The display of the adjusting sidebarHeader is synchronized with the sidebar. */
|
||||
$(".sidebar-toggle").click(function()
|
||||
{
|
||||
$("#sidebarHeader").toggle("fast");
|
||||
});
|
||||
if($("main").is(".hide-sidebar")) $("#sidebarHeader").hide();
|
||||
});
|
||||
|
||||
$('#module' + moduleID).closest('li').addClass('active');
|
||||
|
||||
@@ -311,31 +311,31 @@ $lang->execution->linkPRJStoryTip = "(Link {$lang->SRCommon} comes from {$la
|
||||
$lang->execution->linkAllStoryTip = "({$lang->SRCommon} has never been linked under the project, and can be directly linked with {$lang->SRCommon} of the product linked with the sprint/stage)";
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->execution->confirmDelete = "Möchten Sie {$lang->executionCommon}[%s] löschen?";
|
||||
$lang->execution->confirmUnlinkMember = "Möchten Sie den Benutzer vom {$lang->executionCommon} entfernen?";
|
||||
$lang->execution->confirmUnlinkStory = "Möchten Sie die Story vom {$lang->executionCommon} entfernen?";
|
||||
$lang->execution->confirmDelete = "Möchten Sie {$lang->executionCommon}[%s] löschen?";
|
||||
$lang->execution->confirmUnlinkMember = "Möchten Sie den Benutzer vom {$lang->executionCommon} entfernen?";
|
||||
$lang->execution->confirmUnlinkStory = "After {$lang->SRCommon} is removed, cased linked to {$lang->SRCommon} will be reomoved and tasks linked to {$lang->SRCommon} will be cancelled. Do you want to continue?;"
|
||||
$lang->execution->confirmUnlinkExecutionStory = "Do you want to unlink this Story from the project?";
|
||||
$lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the project. Remove it from the {$lang->executionCommon}, then try again.";
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Kein verknüpftes {$lang->productCommon} in {$lang->executionCommon} gefunden. Sie werden auf die {$lang->productCommon} Seite geleitet.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} Kann nicht mit mehreren identischen {$lang->productCommon} verknüpft werden";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Zugriff zu {$lang->executionCommon} verweigert!";
|
||||
$lang->execution->tips = 'Hinweis';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} wurde erstellt. Als nächstes können Sie ";
|
||||
$lang->execution->setTeam = 'Team setzen';
|
||||
$lang->execution->linkStory = 'Storys verküpfen';
|
||||
$lang->execution->createTask = 'Aufgaben erstellen';
|
||||
$lang->execution->goback = "Zurückkehren";
|
||||
$lang->execution->noweekend = 'Ohne Wochenende';
|
||||
$lang->execution->withweekend = 'Mit Wochenende';
|
||||
$lang->execution->interval = 'Intervale ';
|
||||
$lang->execution->fixFirstWithLeft = 'Modify the left';
|
||||
$lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the project. Remove it from the {$lang->executionCommon}, then try again.";
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Kein verknüpftes {$lang->productCommon} in {$lang->executionCommon} gefunden. Sie werden auf die {$lang->productCommon} Seite geleitet.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} Kann nicht mit mehreren identischen {$lang->productCommon} verknüpft werden";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Zugriff zu {$lang->executionCommon} verweigert!";
|
||||
$lang->execution->tips = 'Hinweis';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} wurde erstellt. Als nächstes können Sie ";
|
||||
$lang->execution->setTeam = 'Team setzen';
|
||||
$lang->execution->linkStory = 'Storys verküpfen';
|
||||
$lang->execution->createTask = 'Aufgaben erstellen';
|
||||
$lang->execution->goback = "Zurückkehren";
|
||||
$lang->execution->noweekend = 'Ohne Wochenende';
|
||||
$lang->execution->withweekend = 'Mit Wochenende';
|
||||
$lang->execution->interval = 'Intervale ';
|
||||
$lang->execution->fixFirstWithLeft = 'Modify the left';
|
||||
$lang->execution->unfinishedExecution = "This {$lang->executionCommon} has ";
|
||||
$lang->execution->unfinishedTask = "[%s] unfinished tasks. ";
|
||||
$lang->execution->unresolvedBug = "[%s] unresolved bugs. ";
|
||||
$lang->execution->projectNotEmpty = 'Project cannot be empty.';
|
||||
$lang->execution->unfinishedTask = "[%s] unfinished tasks. ";
|
||||
$lang->execution->unresolvedBug = "[%s] unresolved bugs. ";
|
||||
$lang->execution->projectNotEmpty = 'Project cannot be empty.';
|
||||
|
||||
/* 统计。*/
|
||||
$lang->execution->charts = new stdclass();
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->execution->allExecutions = 'All ' . $lang->executionCommon . 's';
|
||||
$lang->execution->allExecutions = 'All ' . $lang->execution->common . 's';
|
||||
$lang->execution->allExecutionAB = 'Execution List';
|
||||
$lang->execution->id = $lang->executionCommon . ' ID';
|
||||
$lang->execution->type = $lang->executionCommon . 'Type';
|
||||
@@ -102,6 +102,12 @@ $lang->execution->noTeam = 'No team members at the moment';
|
||||
$lang->execution->or = ' or ';
|
||||
$lang->execution->selectProject = 'Please select project';
|
||||
|
||||
/* Fields of zt_team. */
|
||||
$lang->execution->root = 'Root';
|
||||
$lang->execution->estimate = 'estimate';
|
||||
$lang->execution->consumed = 'consumed';
|
||||
$lang->execution->left = 'Left';
|
||||
|
||||
if($this->config->systemMode == 'new') $lang->execution->copyTeamTip = "select Project/{$lang->execution->common} to copy its members";
|
||||
if($this->config->systemMode == 'classic') $lang->execution->copyTeamTip = "select Project/{$lang->executionCommon} to copy its members";
|
||||
|
||||
@@ -313,32 +319,32 @@ if($config->systemMode == 'classic') $lang->execution->copyTeamTitle = "Choose a
|
||||
if($config->systemMode == 'new') $lang->execution->copyTeamTitle = "Choose a {$lang->project->common} or {$lang->execution->common} Team to copy.";
|
||||
|
||||
/* Interactive prompts. */
|
||||
$lang->execution->confirmDelete = "Do you want to delete the {$lang->executionCommon}[%s]?";
|
||||
$lang->execution->confirmUnlinkMember = "Do you want to unlink this User from {$lang->executionCommon}?";
|
||||
$lang->execution->confirmUnlinkStory = "Do you want to unlink this Story from {$lang->executionCommon}?";
|
||||
$lang->execution->confirmSyncStories = "After modifying the project, synchronize the execution related {$lang->SRCommon} to the new project?";
|
||||
$lang->execution->confirmDelete = "Do you want to delete the {$lang->executionCommon}[%s]?";
|
||||
$lang->execution->confirmUnlinkMember = "Do you want to unlink this User from {$lang->executionCommon}?";
|
||||
$lang->execution->confirmUnlinkStory = "After {$lang->SRCommon} is removed, cased linked to {$lang->SRCommon} will be reomoved and tasks linked to {$lang->SRCommon} will be cancelled. Do you want to continue?";
|
||||
$lang->execution->confirmSyncStories = "After modifying the project, synchronize the execution related {$lang->SRCommon} to the new project?";
|
||||
$lang->execution->confirmUnlinkExecutionStory = "Do you want to unlink this Story from the execution?";
|
||||
$lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the execution. Remove it from the {$lang->executionCommon}, then try again.";
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "No {$lang->productCommon} is linked to {$lang->executionCommon}. You will be directed to {$lang->productCommon} page to link one.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} cannot be linked to the same {$lang->productCommon} twice.";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Your access to {$lang->executionCommon} is denied!";
|
||||
$lang->execution->tips = 'Note';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} is created. Next you can ";
|
||||
$lang->execution->setTeam = 'Set Team';
|
||||
$lang->execution->linkStory = 'Link Story';
|
||||
$lang->execution->createTask = 'Create Task';
|
||||
$lang->execution->goback = "Go Back";
|
||||
$lang->execution->noweekend = 'Exclude Weekend';
|
||||
$lang->execution->withweekend = 'Include Weekend';
|
||||
$lang->execution->interval = 'Intervals ';
|
||||
$lang->execution->fixFirstWithLeft = 'Update hours left too';
|
||||
$lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the execution. Remove it from the {$lang->executionCommon}, then try again.";
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "No {$lang->productCommon} is linked to {$lang->executionCommon}. You will be directed to {$lang->productCommon} page to link one.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} cannot be linked to the same {$lang->productCommon} twice.";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Your access to {$lang->executionCommon} is denied!";
|
||||
$lang->execution->tips = 'Note';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} is created. Next you can ";
|
||||
$lang->execution->setTeam = 'Set Team';
|
||||
$lang->execution->linkStory = 'Link Story';
|
||||
$lang->execution->createTask = 'Create Task';
|
||||
$lang->execution->goback = "Go Back";
|
||||
$lang->execution->noweekend = 'Exclude Weekend';
|
||||
$lang->execution->withweekend = 'Include Weekend';
|
||||
$lang->execution->interval = 'Intervals ';
|
||||
$lang->execution->fixFirstWithLeft = 'Update hours left too';
|
||||
$lang->execution->unfinishedExecution = "This {$lang->executionCommon} has ";
|
||||
$lang->execution->unfinishedTask = "[%s] unfinished tasks. ";
|
||||
$lang->execution->unresolvedBug = "[%s] unresolved bugs. ";
|
||||
$lang->execution->projectNotEmpty = 'Project cannot be empty.';
|
||||
$lang->execution->unfinishedTask = "[%s] unfinished tasks. ";
|
||||
$lang->execution->unresolvedBug = "[%s] unresolved bugs. ";
|
||||
$lang->execution->projectNotEmpty = 'Project cannot be empty.';
|
||||
|
||||
/* Statistics. */
|
||||
$lang->execution->charts = new stdclass();
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* @link https://www.zentao.pm
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->execution->allExecutions = 'Tous les ' . $lang->executionCommon . 's';
|
||||
$lang->execution->allExecutions = 'Tous les ' . $lang->execution->common . 's';
|
||||
$lang->execution->allExecutionAB = 'Execution List';
|
||||
$lang->execution->id = $lang->executionCommon . ' ID';
|
||||
$lang->execution->type = $lang->executionCommon . 'Type';
|
||||
@@ -311,31 +311,31 @@ $lang->execution->linkPRJStoryTip = "(Link {$lang->SRCommon} comes from {$la
|
||||
$lang->execution->linkAllStoryTip = "({$lang->SRCommon} has never been linked under the project, and can be directly linked with {$lang->SRCommon} of the product linked with the sprint/stage)";
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->execution->confirmDelete = "Voulez-vous réellement supprimer le {$lang->executionCommon}[%s] ?";
|
||||
$lang->execution->confirmUnlinkMember = "Voulez-vous retirer cet utilisateur du {$lang->executionCommon} ?";
|
||||
$lang->execution->confirmUnlinkStory = "Voulez-vous retirer cette Story du {$lang->executionCommon} ?";
|
||||
$lang->execution->confirmDelete = "Voulez-vous réellement supprimer le {$lang->executionCommon}[%s] ?";
|
||||
$lang->execution->confirmUnlinkMember = "Voulez-vous retirer cet utilisateur du {$lang->executionCommon} ?";
|
||||
$lang->execution->confirmUnlinkStory = "After {$lang->SRCommon} is removed, cased linked to {$lang->SRCommon} will be reomoved and tasks linked to {$lang->SRCommon} will be cancelled. Do you want to continue?";
|
||||
$lang->execution->confirmUnlinkExecutionStory = "Do you want to unlink this Story from the project?";
|
||||
$lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the project. Remove it from the {$lang->executionCommon}, then try again.";
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Aucun {$lang->productCommon} n'est associé à ce {$lang->executionCommon}. Vous allez être redirigé vers la page {$lang->productCommon} pour en associer un.";
|
||||
$lang->execution->errorSameProducts = "Ce {$lang->executionCommon} ne peut pas être associé deux fois au même {$lang->productCommon}. Imaginez un peu les résultats !";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Votre accès au {$lang->executionCommon} est refusé ! Désolé.";
|
||||
$lang->execution->tips = 'Note';
|
||||
$lang->execution->afterInfo = "Le {$lang->executionCommon} a été créé avec succès ! Ensuite vous pouvez ";
|
||||
$lang->execution->setTeam = "Composer l'Equipe";
|
||||
$lang->execution->linkStory = 'Associer Story';
|
||||
$lang->execution->createTask = 'Créer des Tâches';
|
||||
$lang->execution->goback = "Revenir en arrière";
|
||||
$lang->execution->noweekend = 'Exclure les Weekends';
|
||||
$lang->execution->withweekend = 'Inclure les Weekends';
|
||||
$lang->execution->interval = 'Intervalles';
|
||||
$lang->execution->fixFirstWithLeft = 'Mettre à jour les heures également';
|
||||
$lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the project. Remove it from the {$lang->executionCommon}, then try again.";
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Aucun {$lang->productCommon} n'est associé à ce {$lang->executionCommon}. Vous allez être redirigé vers la page {$lang->productCommon} pour en associer un.";
|
||||
$lang->execution->errorSameProducts = "Ce {$lang->executionCommon} ne peut pas être associé deux fois au même {$lang->productCommon}. Imaginez un peu les résultats !";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Votre accès au {$lang->executionCommon} est refusé ! Désolé.";
|
||||
$lang->execution->tips = 'Note';
|
||||
$lang->execution->afterInfo = "Le {$lang->executionCommon} a été créé avec succès ! Ensuite vous pouvez ";
|
||||
$lang->execution->setTeam = "Composer l'Equipe";
|
||||
$lang->execution->linkStory = 'Associer Story';
|
||||
$lang->execution->createTask = 'Créer des Tâches';
|
||||
$lang->execution->goback = "Revenir en arrière";
|
||||
$lang->execution->noweekend = 'Exclure les Weekends';
|
||||
$lang->execution->withweekend = 'Inclure les Weekends';
|
||||
$lang->execution->interval = 'Intervalles';
|
||||
$lang->execution->fixFirstWithLeft = 'Mettre à jour les heures également';
|
||||
$lang->execution->unfinishedExecution = "This {$lang->executionCommon} has ";
|
||||
$lang->execution->unfinishedTask = "[%s] unfinished tasks. ";
|
||||
$lang->execution->unresolvedBug = "[%s] unresolved bugs. ";
|
||||
$lang->execution->projectNotEmpty = 'Project cannot be empty.';
|
||||
$lang->execution->unfinishedTask = "[%s] unfinished tasks. ";
|
||||
$lang->execution->unresolvedBug = "[%s] unresolved bugs. ";
|
||||
$lang->execution->projectNotEmpty = 'Project cannot be empty.';
|
||||
|
||||
/* 统计。*/
|
||||
$lang->execution->charts = new stdclass();
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->execution->allExecutions = 'Tất cả ' . $lang->executionCommon;
|
||||
$lang->execution->allExecutions = 'Tất cả ' . $lang->execution->common;
|
||||
$lang->execution->allExecutionAB = 'Execution List';
|
||||
$lang->execution->id = 'ID '.$lang->executionCommon;
|
||||
$lang->execution->type = 'Loại';
|
||||
@@ -312,31 +312,31 @@ $lang->execution->linkPRJStoryTip = "(Link {$lang->SRCommon} comes from {$la
|
||||
$lang->execution->linkAllStoryTip = "({$lang->SRCommon} has never been linked under the project, and can be directly linked with {$lang->SRCommon} of the product linked with the sprint/stage)";
|
||||
|
||||
/* Interactive prompts. */
|
||||
$lang->execution->confirmDelete = "Bạn có muốn xóa {$lang->executionCommon}[%s] này?";
|
||||
$lang->execution->confirmUnlinkMember = "Bạn có muốn hủy liên kết người dùng này từ {$lang->executionCommon}?";
|
||||
$lang->execution->confirmUnlinkStory = "Bạn có muốn hủy liên kết câu chuyện này từ {$lang->executionCommon}?";
|
||||
$lang->execution->confirmDelete = "Bạn có muốn xóa {$lang->executionCommon}[%s] này?";
|
||||
$lang->execution->confirmUnlinkMember = "Bạn có muốn hủy liên kết người dùng này từ {$lang->executionCommon}?";
|
||||
$lang->execution->confirmUnlinkStory = "After {$lang->SRCommon} is removed, cased linked to {$lang->SRCommon} will be reomoved and tasks linked to {$lang->SRCommon} will be cancelled. Do you want to continue?;"
|
||||
$lang->execution->confirmUnlinkExecutionStory = "Do you want to unlink this Story from the project?";
|
||||
$lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the project. Remove it from the {$lang->executionCommon}, then try again.";
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Không có {$lang->productCommon} liên kết tới {$lang->executionCommon}. Bạn sẽ được chuyển tới trang {$lang->productCommon} để liên kết.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} không thể liên kết tới {$lang->productCommon} giống nhau 2 lần.";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Truy cập của bạn tới {$lang->executionCommon} bị từ chối!";
|
||||
$lang->execution->tips = 'Ghi chú';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} được tạo. Tiếp theo bạn có thể ";
|
||||
$lang->execution->setTeam = 'Thiết lập đội nhóm';
|
||||
$lang->execution->linkStory = 'Liên kết câu chuyện';
|
||||
$lang->execution->createTask = 'Tạo nhiệm vụ';
|
||||
$lang->execution->goback = "Trở lại";
|
||||
$lang->execution->noweekend = 'Không gồm cuối tuần';
|
||||
$lang->execution->withweekend = 'Bao gồm cuối tuần';
|
||||
$lang->execution->interval = 'Intervals ';
|
||||
$lang->execution->fixFirstWithLeft = 'Cập nhật cả giờ còn lại';
|
||||
$lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the project. Remove it from the {$lang->executionCommon}, then try again.";
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Không có {$lang->productCommon} liên kết tới {$lang->executionCommon}. Bạn sẽ được chuyển tới trang {$lang->productCommon} để liên kết.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} không thể liên kết tới {$lang->productCommon} giống nhau 2 lần.";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Truy cập của bạn tới {$lang->executionCommon} bị từ chối!";
|
||||
$lang->execution->tips = 'Ghi chú';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} được tạo. Tiếp theo bạn có thể ";
|
||||
$lang->execution->setTeam = 'Thiết lập đội nhóm';
|
||||
$lang->execution->linkStory = 'Liên kết câu chuyện';
|
||||
$lang->execution->createTask = 'Tạo nhiệm vụ';
|
||||
$lang->execution->goback = "Trở lại";
|
||||
$lang->execution->noweekend = 'Không gồm cuối tuần';
|
||||
$lang->execution->withweekend = 'Bao gồm cuối tuần';
|
||||
$lang->execution->interval = 'Intervals ';
|
||||
$lang->execution->fixFirstWithLeft = 'Cập nhật cả giờ còn lại';
|
||||
$lang->execution->unfinishedExecution = "This {$lang->executionCommon} has ";
|
||||
$lang->execution->unfinishedTask = "[%s] unfinished tasks. ";
|
||||
$lang->execution->unresolvedBug = "[%s] unresolved bugs. ";
|
||||
$lang->execution->projectNotEmpty = 'Project cannot be empty.';
|
||||
$lang->execution->unfinishedTask = "[%s] unfinished tasks. ";
|
||||
$lang->execution->unresolvedBug = "[%s] unresolved bugs. ";
|
||||
$lang->execution->projectNotEmpty = 'Project cannot be empty.';
|
||||
|
||||
/* Statistics. */
|
||||
$lang->execution->charts = new stdclass();
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->execution->allExecutions = '所有' . $lang->executionCommon;
|
||||
$lang->execution->allExecutions = '所有' . $lang->execution->common;
|
||||
$lang->execution->allExecutionAB = "{$lang->execution->common}列表";
|
||||
$lang->execution->id = $lang->executionCommon . '编号';
|
||||
$lang->execution->type = $lang->executionCommon . '类型';
|
||||
@@ -102,6 +102,12 @@ $lang->execution->noTeam = '暂时没有团队成员';
|
||||
$lang->execution->or = '或';
|
||||
$lang->execution->selectProject = '请选择项目';
|
||||
|
||||
/* Fields of zt_team. */
|
||||
$lang->execution->root = '源ID';
|
||||
$lang->execution->estimate = '预计';
|
||||
$lang->execution->consumed = '消耗';
|
||||
$lang->execution->left = '剩余';
|
||||
|
||||
if($this->config->systemMode == 'new') $lang->execution->copyTeamTip = "可以选择复制项目或{$lang->execution->common}团队的成员";
|
||||
if($this->config->systemMode == 'classic') $lang->execution->copyTeamTip = "可以选择复制{$lang->executionCommon}团队的成员";
|
||||
|
||||
@@ -313,32 +319,32 @@ if($config->systemMode == 'classic') $lang->execution->copyTeamTitle = "选择
|
||||
if($config->systemMode == 'new') $lang->execution->copyTeamTitle = "选择一个{$lang->project->common}或{$lang->execution->common}团队来复制";
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->execution->confirmDelete = "您确定删除{$lang->executionCommon}[%s]吗?";
|
||||
$lang->execution->confirmUnlinkMember = "您确定从该{$lang->executionCommon}中移除该用户吗?";
|
||||
$lang->execution->confirmUnlinkStory = "您确定从该{$lang->executionCommon}中移除该{$lang->SRCommon}吗?";
|
||||
$lang->execution->confirmSyncStories = "修改所属项目后,执行关联的{$lang->SRCommon}是否同步到新项目中?";
|
||||
$lang->execution->confirmDelete = "您确定删除{$lang->executionCommon}[%s]吗?";
|
||||
$lang->execution->confirmUnlinkMember = "您确定从该{$lang->executionCommon}中移除该用户吗?";
|
||||
$lang->execution->confirmUnlinkStory = "移除该{$lang->SRCommon}后,该{$lang->SRCommon}关联的用例将被移除,该{$lang->SRCommon}关联的任务将被取消,请确认。";
|
||||
$lang->execution->confirmSyncStories = "修改所属项目后,执行关联的{$lang->SRCommon}是否同步到新项目中?";
|
||||
$lang->execution->confirmUnlinkExecutionStory = "您确定从该项目中移除该{$lang->SRCommon}吗?";
|
||||
$lang->execution->notAllowedUnlinkStory = "该{$lang->SRCommon}已经与项目下{$lang->executionCommon}相关联,请从{$lang->executionCommon}中移除后再操作。";
|
||||
$lang->execution->notAllowRemoveProducts = "该{$lang->productCommon}中的{$lang->SRCommon}已与该{$lang->executionCommon}进行了关联,请取消关联后再操作。";
|
||||
$lang->execution->errorNoLinkedProducts = "该{$lang->executionCommon}没有关联的{$lang->productCommon},系统将转到{$lang->productCommon}关联页面";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon}不能关联多个相同的{$lang->productCommon}。";
|
||||
$lang->execution->errorBegin = "{$lang->executionCommon}的开始时间不能小于所属项目的开始时间%s。";
|
||||
$lang->execution->errorEnd = "{$lang->executionCommon}的截止时间不能大于所属项目的结束时间%s。";
|
||||
$lang->execution->accessDenied = "您无权访问该{$lang->executionCommon}!";
|
||||
$lang->execution->tips = '提示';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon}添加成功,您现在可以进行以下操作:";
|
||||
$lang->execution->setTeam = '设置团队';
|
||||
$lang->execution->linkStory = "关联{$lang->SRCommon}";
|
||||
$lang->execution->createTask = '创建任务';
|
||||
$lang->execution->goback = "返回任务列表";
|
||||
$lang->execution->noweekend = '去除周末';
|
||||
$lang->execution->withweekend = '显示周末';
|
||||
$lang->execution->interval = '间隔';
|
||||
$lang->execution->fixFirstWithLeft = '修改剩余工时';
|
||||
$lang->execution->notAllowedUnlinkStory = "该{$lang->SRCommon}已经与项目下{$lang->executionCommon}相关联,请从{$lang->executionCommon}中移除后再操作。";
|
||||
$lang->execution->notAllowRemoveProducts = "该{$lang->productCommon}中的{$lang->SRCommon}已与该{$lang->executionCommon}进行了关联,请取消关联后再操作。";
|
||||
$lang->execution->errorNoLinkedProducts = "该{$lang->executionCommon}没有关联的{$lang->productCommon},系统将转到{$lang->productCommon}关联页面";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon}不能关联多个相同的{$lang->productCommon}。";
|
||||
$lang->execution->errorBegin = "{$lang->executionCommon}的开始时间不能小于所属项目的开始时间%s。";
|
||||
$lang->execution->errorEnd = "{$lang->executionCommon}的截止时间不能大于所属项目的结束时间%s。";
|
||||
$lang->execution->accessDenied = "您无权访问该{$lang->executionCommon}!";
|
||||
$lang->execution->tips = '提示';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon}添加成功,您现在可以进行以下操作:";
|
||||
$lang->execution->setTeam = '设置团队';
|
||||
$lang->execution->linkStory = "关联{$lang->SRCommon}";
|
||||
$lang->execution->createTask = '创建任务';
|
||||
$lang->execution->goback = "返回任务列表";
|
||||
$lang->execution->noweekend = '去除周末';
|
||||
$lang->execution->withweekend = '显示周末';
|
||||
$lang->execution->interval = '间隔';
|
||||
$lang->execution->fixFirstWithLeft = '修改剩余工时';
|
||||
$lang->execution->unfinishedExecution = "该{$lang->executionCommon}下还有";
|
||||
$lang->execution->unfinishedTask = "[%s]个未完成的任务,";
|
||||
$lang->execution->unresolvedBug = "[%s]个未解决的bug,";
|
||||
$lang->execution->projectNotEmpty = '所属项目不能为空。';
|
||||
$lang->execution->unfinishedTask = "[%s]个未完成的任务,";
|
||||
$lang->execution->unresolvedBug = "[%s]个未解决的bug,";
|
||||
$lang->execution->projectNotEmpty = '所属项目不能为空。';
|
||||
|
||||
/* 统计。*/
|
||||
$lang->execution->charts = new stdclass();
|
||||
|
||||
@@ -102,6 +102,12 @@ $lang->execution->noTeam = '暫時沒有團隊成員';
|
||||
$lang->execution->or = '或';
|
||||
$lang->execution->selectProject = '請選擇項目';
|
||||
|
||||
/* Fields of zt_team. */
|
||||
$lang->execution->root = '源ID';
|
||||
$lang->execution->estimate = '預計';
|
||||
$lang->execution->consumed = '消耗';
|
||||
$lang->execution->left = '剩餘';
|
||||
|
||||
if($this->config->systemMode == 'new') $lang->execution->copyTeamTip = "可以選擇複製項目或{$lang->execution->common}團隊的成員";
|
||||
if($this->config->systemMode == 'classic') $lang->execution->copyTeamTip = "可以選擇複製{$lang->executionCommon}團隊的成員";
|
||||
|
||||
@@ -313,32 +319,32 @@ if($config->systemMode == 'classic') $lang->execution->copyTeamTitle = "選擇
|
||||
if($config->systemMode == 'new') $lang->execution->copyTeamTitle = "選擇一個{$lang->project->common}或{$lang->execution->common}團隊來複制";
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->execution->confirmDelete = "您確定刪除{$lang->executionCommon}[%s]嗎?";
|
||||
$lang->execution->confirmUnlinkMember = "您確定從該{$lang->executionCommon}中移除該用戶嗎?";
|
||||
$lang->execution->confirmUnlinkStory = "您確定從該{$lang->executionCommon}中移除該{$lang->SRCommon}嗎?";
|
||||
$lang->execution->confirmSyncStories = "修改所屬項目後,執行關聯的{$lang->SRCommon}是否同步到新項目中?";
|
||||
$lang->execution->confirmDelete = "您確定刪除{$lang->executionCommon}[%s]嗎?";
|
||||
$lang->execution->confirmUnlinkMember = "您確定從該{$lang->executionCommon}中移除該用戶嗎?";
|
||||
$lang->execution->confirmUnlinkStory = "移除該{$lang->SRCommon}後,該{$lang->SRCommon}關聯的用例將被移除,該{$lang->SRCommon}關聯的任務將被取消,請確認。";
|
||||
$lang->execution->confirmSyncStories = "修改所屬項目後,執行關聯的{$lang->SRCommon}是否同步到新項目中?";
|
||||
$lang->execution->confirmUnlinkExecutionStory = "您確定從該項目中移除該{$lang->SRCommon}嗎?";
|
||||
$lang->execution->notAllowedUnlinkStory = "該{$lang->SRCommon}已經與項目下{$lang->executionCommon}相關聯,請從{$lang->executionCommon}中移除後再操作。";
|
||||
$lang->execution->notAllowRemoveProducts = "該{$lang->productCommon}中的{$lang->SRCommon}已與該{$lang->executionCommon}進行了關聯,請取消關聯後再操作。";
|
||||
$lang->execution->errorNoLinkedProducts = "該{$lang->executionCommon}沒有關聯的{$lang->productCommon},系統將轉到{$lang->productCommon}關聯頁面";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon}不能關聯多個相同的{$lang->productCommon}。";
|
||||
$lang->execution->errorBegin = "{$lang->executionCommon}的開始時間不能小於所屬項目的開始時間%s。";
|
||||
$lang->execution->errorEnd = "{$lang->executionCommon}的截止時間不能大於所屬項目的結束時間%s。";
|
||||
$lang->execution->accessDenied = "您無權訪問該{$lang->executionCommon}!";
|
||||
$lang->execution->tips = '提示';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon}添加成功,您現在可以進行以下操作:";
|
||||
$lang->execution->setTeam = '設置團隊';
|
||||
$lang->execution->linkStory = "關聯{$lang->SRCommon}";
|
||||
$lang->execution->createTask = '創建任務';
|
||||
$lang->execution->goback = "返回任務列表";
|
||||
$lang->execution->noweekend = '去除周末';
|
||||
$lang->execution->withweekend = '顯示周末';
|
||||
$lang->execution->interval = '間隔';
|
||||
$lang->execution->fixFirstWithLeft = '修改剩餘工時';
|
||||
$lang->execution->notAllowedUnlinkStory = "該{$lang->SRCommon}已經與項目下{$lang->executionCommon}相關聯,請從{$lang->executionCommon}中移除後再操作。";
|
||||
$lang->execution->notAllowRemoveProducts = "該{$lang->productCommon}中的{$lang->SRCommon}已與該{$lang->executionCommon}進行了關聯,請取消關聯後再操作。";
|
||||
$lang->execution->errorNoLinkedProducts = "該{$lang->executionCommon}沒有關聯的{$lang->productCommon},系統將轉到{$lang->productCommon}關聯頁面";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon}不能關聯多個相同的{$lang->productCommon}。";
|
||||
$lang->execution->errorBegin = "{$lang->executionCommon}的開始時間不能小於所屬項目的開始時間%s。";
|
||||
$lang->execution->errorEnd = "{$lang->executionCommon}的截止時間不能大於所屬項目的結束時間%s。";
|
||||
$lang->execution->accessDenied = "您無權訪問該{$lang->executionCommon}!";
|
||||
$lang->execution->tips = '提示';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon}添加成功,您現在可以進行以下操作:";
|
||||
$lang->execution->setTeam = '設置團隊';
|
||||
$lang->execution->linkStory = "關聯{$lang->SRCommon}";
|
||||
$lang->execution->createTask = '創建任務';
|
||||
$lang->execution->goback = "返回任務列表";
|
||||
$lang->execution->noweekend = '去除周末';
|
||||
$lang->execution->withweekend = '顯示周末';
|
||||
$lang->execution->interval = '間隔';
|
||||
$lang->execution->fixFirstWithLeft = '修改剩餘工時';
|
||||
$lang->execution->unfinishedExecution = "該{$lang->executionCommon}下還有";
|
||||
$lang->execution->unfinishedTask = "[%s]個未完成的任務,";
|
||||
$lang->execution->unresolvedBug = "[%s]個未解決的bug,";
|
||||
$lang->execution->projectNotEmpty = '所屬項目不能為空。';
|
||||
$lang->execution->unfinishedTask = "[%s]個未完成的任務,";
|
||||
$lang->execution->unresolvedBug = "[%s]個未解決的bug,";
|
||||
$lang->execution->projectNotEmpty = '所屬項目不能為空。';
|
||||
|
||||
/* 統計。*/
|
||||
$lang->execution->charts = new stdclass();
|
||||
|
||||
+29
-12
@@ -49,7 +49,7 @@ class executionModel extends model
|
||||
$loginLink = $this->config->requestType == 'GET' ? "?{$this->config->moduleVar}=user&{$this->config->methodVar}=login" : "user{$this->config->requestFix}login";
|
||||
if(strpos($this->server->http_referer, $loginLink) !== false) die(js::locate(helper::createLink('execution', 'index')));
|
||||
|
||||
die(js::locate('back'));
|
||||
die(js::locate(helper::createLink('execution', 'all')));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -239,24 +239,24 @@ class executionModel extends model
|
||||
/* When the cookie and session do not exist, get it from the database. */
|
||||
if(empty($executionID) and isset($this->config->execution->lastExecution) and isset($executions[$this->config->execution->lastExecution]))
|
||||
{
|
||||
$this->session->set('execution', $this->config->execution->lastExecution);
|
||||
$this->session->set('execution', $this->config->execution->lastExecution, $this->app->tab);
|
||||
$this->setProjectSession($this->session->execution);
|
||||
return $this->session->execution;
|
||||
}
|
||||
|
||||
if($executionID > 0) $this->session->set('execution', (int)$executionID, $this->app->tab);
|
||||
if($executionID == 0 and $this->cookie->lastExecution)
|
||||
{
|
||||
/* Execution link is execution-task. */
|
||||
$executionID = (int)$this->cookie->lastExecution;
|
||||
$executionID = in_array($executionID, array_keys($executions)) ? $executionID : key($executions);
|
||||
$this->session->set('execution', $executionID);
|
||||
}
|
||||
if($executionID == 0 and $this->session->execution == '') $this->session->set('execution', key($executions));
|
||||
if(!isset($executions[$this->session->execution]))
|
||||
if($executionID == 0 and $this->session->execution == '') $executionID = key($executions);
|
||||
$this->session->set('execution', (int)$executionID, $this->app->tab);
|
||||
|
||||
if(!isset($executions[$executionID]))
|
||||
{
|
||||
$this->session->set('execution', key($executions));
|
||||
if($executionID && strpos(",{$this->app->user->view->sprints},", ",{$this->session->execution},") === false) $this->accessDenied();
|
||||
$this->session->set('execution', key($executions), $this->app->tab);
|
||||
if($executionID && strpos(",{$this->app->user->view->sprints},", ",{$executionID},") === false) $this->accessDenied();
|
||||
}
|
||||
|
||||
$this->setProjectSession($this->session->execution);
|
||||
@@ -273,7 +273,7 @@ class executionModel extends model
|
||||
public function setProjectSession($executionID)
|
||||
{
|
||||
$execution = $this->getByID($executionID);
|
||||
if(!empty($execution)) $this->session->set('project', $execution->project);
|
||||
if(!empty($execution)) $this->session->set('project', $execution->project, $this->app->tab);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -986,7 +986,7 @@ class executionModel extends model
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $type all|sprint|stage|kanban
|
||||
* @param string $mode all|noclosed or empty
|
||||
* @param string $mode all|noclosed|stagefilter or empty
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
@@ -1024,6 +1024,7 @@ class executionModel extends model
|
||||
foreach($executions as $execution)
|
||||
{
|
||||
if(strpos($mode, 'noclosed') !== false and ($execution->status == 'done' or $execution->status == 'closed')) continue;
|
||||
if(strpos($mode, 'stagefilter') !== false and isset($executionModel) and $executionModel == 'waterfall' and in_array($execution->attribute, array('request', 'design', 'review'))) continue; // Some stages of waterfall not need.
|
||||
$pairs[$execution->id] = $execution->name;
|
||||
}
|
||||
|
||||
@@ -1179,6 +1180,8 @@ class executionModel extends model
|
||||
*/
|
||||
public function getByProject($projectID, $status = 'all', $limit = 0, $pairs = false)
|
||||
{
|
||||
if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getExecutionPairs();
|
||||
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
$orderBy = (isset($project->model) and $project->model == 'waterfall') ? 'begin_asc,id_asc' : 'begin_desc,id_desc';
|
||||
|
||||
@@ -1233,10 +1236,24 @@ class executionModel extends model
|
||||
$executions = $executionList;
|
||||
}
|
||||
|
||||
$projects = array();
|
||||
if(empty($projectID))
|
||||
{
|
||||
$projects = $this->dao->select('t1.id,t1.name')->from(TABLE_PROJECT)->alias('t1')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.id=t2.project')
|
||||
->where('t2.id')->in(array_keys($executions))
|
||||
->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
if($pairs)
|
||||
{
|
||||
$executionPairs = array();
|
||||
foreach($executions as $execution) $executionPairs[$execution->id] = $execution->name;
|
||||
foreach($executions as $execution)
|
||||
{
|
||||
$executionPairs[$execution->id] = '';
|
||||
if(isset($projects[$execution->project])) $executionPairs[$execution->id] .= $projects[$execution->project] . ' / ';
|
||||
$executionPairs[$execution->id] .= $execution->name;
|
||||
}
|
||||
$executions = $executionPairs;
|
||||
}
|
||||
|
||||
@@ -1416,7 +1433,7 @@ class executionModel extends model
|
||||
|
||||
/* Get all teams of all executions and group by executions, save it as static. */
|
||||
$executions = $this->dao->select('root, limited')->from(TABLE_TEAM)
|
||||
->where('type')->in('sprint,stage')
|
||||
->where('type')->eq('execution')
|
||||
->andWhere('account')->eq($this->app->user->account)
|
||||
->andWhere('limited')->eq('yes')
|
||||
->orderBy('root asc')
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
<tr>
|
||||
<td colspan='4' class='text-center form-actions'>
|
||||
<?php echo html::submitButton();?>
|
||||
<?php echo html::backButton();?>
|
||||
<?php echo $gobackLink ? html::a($gobackLink, $lang->goback, '', 'class="btn btn-wide"') : html::backButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -149,13 +149,13 @@ body {margin-bottom: 25px;}
|
||||
<?php if($canBeChanged and (common::hasPriv('task', 'batchCreate', $checkObject) or common::hasPriv('task', 'create', $checkObject))):?>
|
||||
<div class='btn-group dropdown'>
|
||||
<?php
|
||||
$actionLink = $this->createLink('task', 'create', "executionID=$executionID");
|
||||
$actionLink = $this->createLink('task', 'create', "executionID=$executionID" . (isset($moduleID) ? "&storyID=0&moduleID=$moduleID" : ""));
|
||||
echo html::a($actionLink, "<i class='icon icon-plus'></i> {$lang->task->create}", '', "class='btn btn-primary'");
|
||||
?>
|
||||
<button type='button' class='btn btn-primary dropdown-toggle' data-toggle='dropdown'><span class='caret'></span></button>
|
||||
<ul class='dropdown-menu pull-right'>
|
||||
<li><?php echo html::a($actionLink, $lang->task->create);?></li>
|
||||
<li><?php echo html::a($this->createLink('task', 'batchCreate', "executionID=$executionID"), $lang->task->batchCreate);?></li>
|
||||
<li><?php echo html::a($this->createLink('task', 'batchCreate', "executionID=$executionID" . (isset($moduleID) ? "&storyID=0&moduleID=$moduleID" : "")), $lang->task->batchCreate);?></li>
|
||||
</ul>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->extension->common = 'Extension';
|
||||
$lang->extension->id = 'ID';
|
||||
$lang->extension->browse = 'Extensions';
|
||||
$lang->extension->install = 'Install Extension';
|
||||
$lang->extension->installAuto = 'Auto Installation';
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->extension->common = '插件管理';
|
||||
$lang->extension->id = '编号';
|
||||
$lang->extension->browse = '浏览插件';
|
||||
$lang->extension->install = '安装插件';
|
||||
$lang->extension->installAuto = '自动安装';
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->extension->common = '插件管理';
|
||||
$lang->extension->id = '編號';
|
||||
$lang->extension->browse = '瀏覽插件';
|
||||
$lang->extension->install = '安裝插件';
|
||||
$lang->extension->installAuto = '自動安裝';
|
||||
|
||||
@@ -114,6 +114,7 @@ class file extends control
|
||||
{
|
||||
if(session_id() != $this->app->sessionID) helper::restartSession($this->app->sessionID);
|
||||
$file = $this->file->getById($fileID);
|
||||
if(empty($file)) die("<html><head><meta charset='utf-8'></head><body>{$this->lang->file->fileNotFound}</body></html>");
|
||||
|
||||
/* Judge the mode, down or open. */
|
||||
$mode = 'down';
|
||||
@@ -154,7 +155,7 @@ class file extends control
|
||||
}
|
||||
else
|
||||
{
|
||||
die($this->lang->file->fileNotFound);
|
||||
die("<html><head><meta charset='utf-8'></head><body>{$this->lang->file->fileNotFound}</body></html>");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
*/
|
||||
$lang->file = new stdclass();
|
||||
$lang->file->common = 'File';
|
||||
$lang->file->id = 'ID';
|
||||
$lang->file->objectType = 'Object Type';
|
||||
$lang->file->objectID = 'Object ID';
|
||||
$lang->file->deleted = 'Deleted';
|
||||
$lang->file->uploadImages = 'Batch Upload Images';
|
||||
$lang->file->download = 'Download Files';
|
||||
$lang->file->uploadDate = 'Uploaded';
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
*/
|
||||
$lang->file = new stdclass();
|
||||
$lang->file->common = '附件';
|
||||
$lang->file->id = '编号';
|
||||
$lang->file->objectType = '对象类型';
|
||||
$lang->file->objectID = '对象ID';
|
||||
$lang->file->deleted = '已删除';
|
||||
$lang->file->uploadImages = '多图上传';
|
||||
$lang->file->download = '下载附件';
|
||||
$lang->file->uploadDate = '上传时间:';
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
*/
|
||||
$lang->file = new stdclass();
|
||||
$lang->file->common = '附件';
|
||||
$lang->file->id = '編號';
|
||||
$lang->file->objectType = '對象類型';
|
||||
$lang->file->objectID = '對象ID';
|
||||
$lang->file->deleted = '已刪除';
|
||||
$lang->file->uploadImages = '多圖上傳';
|
||||
$lang->file->download = '下載附件';
|
||||
$lang->file->uploadDate = '上傳時間:';
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
.file-input-list .input-group-btn{float:left}
|
||||
</style>
|
||||
<?php js::set('dangerExtensions', ',' . $this->config->file->dangers . ',');?>
|
||||
<?php js::set('maxUploadSize', $maxUploadSize);?>
|
||||
<div class="file-input-list" data-provide="fileInputList" data-each-file-max-size="<?php echo $maxUploadSize;?>" data-file-size-error="<?php echo sprintf($lang->file->errorFileSize, $maxUploadSize);?>">
|
||||
<div class="file-input">
|
||||
<div class="file-input-empty">
|
||||
@@ -32,11 +33,38 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
function checkDangerExtension(obj)
|
||||
var totalSize = 0;
|
||||
maxUploadSize = unitConversion(maxUploadSize);
|
||||
|
||||
/**
|
||||
* Conversion unit to byte.
|
||||
*
|
||||
* @param string $maxUploadSize
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
function unitConversion(maxUploadSize)
|
||||
{
|
||||
var fileName = $(obj).val();
|
||||
var sizeOfString = maxUploadSize;
|
||||
if(sizeOfString.indexOf('K') != -1) maxUploadSize = parseFloat(maxUploadSize) * 1024;
|
||||
if(sizeOfString.indexOf('M') != -1) maxUploadSize = parseFloat(maxUploadSize) * 1024 * 1024;
|
||||
if(sizeOfString.indexOf('G') != -1) maxUploadSize = parseFloat(maxUploadSize) * 1024 * 1024 * 1024;
|
||||
return parseFloat(maxUploadSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check danger extension and file size.
|
||||
*
|
||||
* @param object $file
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function checkDangerExtension(file)
|
||||
{
|
||||
var fileName = $(file).val();
|
||||
var index = fileName.lastIndexOf(".");
|
||||
var fileSize = $(obj)[0].files[0].size;
|
||||
var fileSize = $(file)[0].files[0].size;
|
||||
totalSize += fileSize;
|
||||
|
||||
if(index >= 0)
|
||||
{
|
||||
@@ -44,14 +72,22 @@ function checkDangerExtension(obj)
|
||||
if(dangerExtensions.lastIndexOf(',' + extension + ',') >= 0)
|
||||
{
|
||||
alert(<?php echo json_encode($this->lang->file->dangerFile);?>);
|
||||
$(obj).val('');
|
||||
$(file).val('');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(fileSize == 0)
|
||||
{
|
||||
alert(<?php echo json_encode($this->lang->file->fileContentEmpty);?>);
|
||||
$(obj).val('');
|
||||
$(file).val('');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(totalSize >= maxUploadSize)
|
||||
{
|
||||
alert(<?php echo json_encode(sprintf($lang->file->errorFileSize, $maxUploadSize));?>);
|
||||
totalSize -= fileSize;
|
||||
$(file).val('');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,426 @@
|
||||
<?php
|
||||
/* Every version of new privilege. */
|
||||
$lang->changelog['1.0.1'][] = 'project-computeBurn';
|
||||
|
||||
$lang->changelog['1.1'][] = 'search-saveQuery';
|
||||
$lang->changelog['1.1'][] = 'search-deleteQuery';
|
||||
|
||||
$lang->changelog['1.2'][] = 'product-doc';
|
||||
$lang->changelog['1.2'][] = 'project-doc';
|
||||
$lang->changelog['1.2'][] = 'bug-saveTemplate';
|
||||
$lang->changelog['1.2'][] = 'bug-deleteTemplate';
|
||||
$lang->changelog['1.2'][] = 'doc-index';
|
||||
$lang->changelog['1.2'][] = 'doc-browse';
|
||||
$lang->changelog['1.2'][] = 'doc-createLib';
|
||||
$lang->changelog['1.2'][] = 'doc-editLib';
|
||||
$lang->changelog['1.2'][] = 'doc-deleteLib';
|
||||
$lang->changelog['1.2'][] = 'doc-create';
|
||||
$lang->changelog['1.2'][] = 'doc-view';
|
||||
$lang->changelog['1.2'][] = 'doc-edit';
|
||||
$lang->changelog['1.2'][] = 'doc-delete';
|
||||
$lang->changelog['1.2'][] = 'doc-deleteFile';
|
||||
|
||||
$lang->changelog['1.3'][] = 'task-start';
|
||||
$lang->changelog['1.3'][] = 'task-complete';
|
||||
$lang->changelog['1.3'][] = 'task-cancel';
|
||||
$lang->changelog['1.3'][] = 'file-delete';
|
||||
|
||||
$lang->changelog['1.4'][] = 'my-testTask';
|
||||
$lang->changelog['1.4'][] = 'my-testCase';
|
||||
$lang->changelog['1.4'][] = 'task-finish';
|
||||
$lang->changelog['1.4'][] = 'task-close';
|
||||
$lang->changelog['1.4'][] = 'task-activate';
|
||||
$lang->changelog['1.4'][] = 'search-select';
|
||||
|
||||
$lang->changelog['1.5'][] = 'task-batchClose';
|
||||
|
||||
$lang->changelog['2.0'][] = 'my-dynamic';
|
||||
$lang->changelog['2.0'][] = 'bug-export';
|
||||
$lang->changelog['2.0'][] = 'story-export';
|
||||
$lang->changelog['2.0'][] = 'story-reportChart';
|
||||
$lang->changelog['2.0'][] = 'task-export';
|
||||
$lang->changelog['2.0'][] = 'task-reportChart';
|
||||
$lang->changelog['2.0'][] = 'taskcase-export';
|
||||
$lang->changelog['2.0'][] = 'company-dynamic';
|
||||
$lang->changelog['2.0'][] = 'user-dynamic';
|
||||
$lang->changelog['2.0'][] = 'extension-browse';
|
||||
$lang->changelog['2.0'][] = 'extension-obtain';
|
||||
$lang->changelog['2.0'][] = 'extension-install';
|
||||
$lang->changelog['2.0'][] = 'extension-uninstall';
|
||||
$lang->changelog['2.0'][] = 'extension-activate';
|
||||
$lang->changelog['2.0'][] = 'extension-deactivate';
|
||||
$lang->changelog['2.0'][] = 'extension-upload';
|
||||
$lang->changelog['2.0'][] = 'extension-erase';
|
||||
|
||||
$lang->changelog['2.1'][] = 'extension-upgrade';
|
||||
|
||||
$lang->changelog['2.2'][] = 'file-edit';
|
||||
|
||||
$lang->changelog['2.3'][] = 'product-dynamic';
|
||||
$lang->changelog['2.3'][] = 'project-dynamic';
|
||||
$lang->changelog['2.3'][] = 'project-importBug';
|
||||
$lang->changelog['2.3'][] = 'story-batchCreate';
|
||||
$lang->changelog['2.3'][] = 'task-batchCreate';
|
||||
$lang->changelog['2.3'][] = 'testcase-batchCreate';
|
||||
$lang->changelog['2.3'][] = 'bug-confirmBug';
|
||||
$lang->changelog['2.3'][] = 'svn-diff';
|
||||
$lang->changelog['2.3'][] = 'svn-cat';
|
||||
$lang->changelog['2.3'][] = 'svn-apiSync';
|
||||
|
||||
$lang->changelog['2.4'][] = 'task-assign';
|
||||
$lang->changelog['2.4'][] = 'project-testtask';
|
||||
$lang->changelog['2.4'][] = 'todo-export';
|
||||
$lang->changelog['2.4'][] = 'product-project';
|
||||
|
||||
$lang->changelog['3.0.beta2'][] = 'extension-structure';
|
||||
$lang->changelog['3.0.beta2'][] = 'product-order';
|
||||
$lang->changelog['3.0.beta2'][] = 'project-order';
|
||||
|
||||
$lang->changelog['3.1'][] = 'todo-batchCreate';
|
||||
|
||||
$lang->changelog['3.2'][] = 'my-changePassword';
|
||||
$lang->changelog['3.2'][] = 'story-batchClose';
|
||||
$lang->changelog['3.2'][] = 'task-batchEdit';
|
||||
$lang->changelog['3.2'][] = 'release-export';
|
||||
$lang->changelog['3.2'][] = 'report-index';
|
||||
$lang->changelog['3.2'][] = 'report-projectDeviation';
|
||||
$lang->changelog['3.2'][] = 'report-productSummary';
|
||||
$lang->changelog['3.2'][] = 'report-bugCreate';
|
||||
$lang->changelog['3.2'][] = 'report-workload';
|
||||
$lang->changelog['3.2'][] = 'tree-fix';
|
||||
|
||||
$lang->changelog['3.3'][] = 'report-bugAssign';
|
||||
|
||||
$lang->changelog['4.0.beta1'][] = 'user-batchCreate';
|
||||
$lang->changelog['4.0.beta1'][] = 'user-unlock';
|
||||
$lang->changelog['4.0.beta1'][] = 'admin-checkDB';
|
||||
|
||||
$lang->changelog['4.0.beta2'][] = 'todo-batchEdit';
|
||||
$lang->changelog['4.0.beta2'][] = 'story-batchEdit';
|
||||
$lang->changelog['4.0.beta2'][] = 'bug-batchEdit';
|
||||
$lang->changelog['4.0.beta2'][] = 'testcase-batchEdit';
|
||||
$lang->changelog['4.0.beta2'][] = 'testtask-batchRun';
|
||||
$lang->changelog['4.0.beta2'][] = 'user-batchEdit';
|
||||
$lang->changelog['4.0.beta2'][] = 'user-manageContacts';
|
||||
$lang->changelog['4.0.beta2'][] = 'user-deleteContacts';
|
||||
|
||||
$lang->changelog['4.0'][] = 'todo-finish';
|
||||
$lang->changelog['4.0'][] = 'product-close';
|
||||
$lang->changelog['4.0'][] = 'project-start';
|
||||
$lang->changelog['4.0'][] = 'project-activate';
|
||||
$lang->changelog['4.0'][] = 'project-putoff';
|
||||
$lang->changelog['4.0'][] = 'project-suspend';
|
||||
$lang->changelog['4.0'][] = 'project-close';
|
||||
$lang->changelog['4.0'][] = 'task-record';
|
||||
$lang->changelog['4.0'][] = 'testtask-start';
|
||||
$lang->changelog['4.0'][] = 'testtask-close';
|
||||
$lang->changelog['4.0'][] = 'action-hideOne';
|
||||
$lang->changelog['4.0'][] = 'action-hideAll';
|
||||
$lang->changelog['4.0'][] = 'task-editEstimate';
|
||||
$lang->changelog['4.0'][] = 'task-deleteEstimate';
|
||||
|
||||
$lang->changelog['4.1'][] = 'todo-batchFinish';
|
||||
$lang->changelog['4.1'][] = 'productplan-batchUnlinkStory';
|
||||
$lang->changelog['4.1'][] = 'company-view';
|
||||
$lang->changelog['4.1'][] = 'user-story';
|
||||
$lang->changelog['4.1'][] = 'user-testTask';
|
||||
$lang->changelog['4.1'][] = 'user-testCase';
|
||||
|
||||
$lang->changelog['4.2.beta'][] = 'tree-browseTask';
|
||||
|
||||
$lang->changelog['4.3.beta'][] = 'product-batchEdit';
|
||||
$lang->changelog['4.3.beta'][] = 'project-batchEdit';
|
||||
$lang->changelog['4.3.beta'][] = 'story-batchReview';
|
||||
$lang->changelog['4.3.beta'][] = 'story-batchChangePlan';
|
||||
$lang->changelog['4.3.beta'][] = 'story-batchChangeStage';
|
||||
$lang->changelog['4.3.beta'][] = 'productplan-linkBug';
|
||||
$lang->changelog['4.3.beta'][] = 'productplan-unlinkBug';
|
||||
$lang->changelog['4.3.beta'][] = 'productplan-batchUnlinkBug';
|
||||
$lang->changelog['4.3.beta'][] = 'bug-batchCreate';
|
||||
$lang->changelog['4.3.beta'][] = 'testcase-exportTemplet';
|
||||
$lang->changelog['4.3.beta'][] = 'testcase-import';
|
||||
$lang->changelog['4.3.beta'][] = 'testcase-showImport';
|
||||
$lang->changelog['4.3.beta'][] = 'testcase-confirmChange';
|
||||
$lang->changelog['4.3.beta'][] = 'mail-reset';
|
||||
$lang->changelog['4.3.beta'][] = 'api-debug';
|
||||
$lang->changelog['4.3.beta'][] = 'action-editComment';
|
||||
|
||||
$lang->changelog['5.0.beta1'][] = 'bug-batchConfirm';
|
||||
$lang->changelog['5.0.beta1'][] = 'bug-batchResolve';
|
||||
$lang->changelog['5.0.beta1'][] = 'custom-index';
|
||||
$lang->changelog['5.0.beta1'][] = 'custom-set';
|
||||
$lang->changelog['5.0.beta1'][] = 'custom-restore';
|
||||
|
||||
$lang->changelog['5.0.beta2'][] = 'git-diff';
|
||||
$lang->changelog['5.0.beta2'][] = 'git-cat';
|
||||
$lang->changelog['5.0.beta2'][] = 'git-apiSync';
|
||||
|
||||
$lang->changelog['5.3'][] = 'bug-batchClose';
|
||||
|
||||
$lang->changelog['6.1'][] = 'story-zeroCase';
|
||||
$lang->changelog['6.1'][] = 'testcase-groupCase';
|
||||
$lang->changelog['6.1'][] = 'testtask-groupCase';
|
||||
|
||||
$lang->changelog['6.2'][] = 'task-pause';
|
||||
$lang->changelog['6.2'][] = 'task-restart';
|
||||
$lang->changelog['6.2'][] = 'testcase-createBug';
|
||||
|
||||
$lang->changelog['6.3'][] = 'bug-batchAssignTo';
|
||||
$lang->changelog['6.3'][] = 'task-batchAssignTo';
|
||||
$lang->changelog['6.3'][] = 'file-uploadImages';
|
||||
$lang->changelog['6.3'][] = 'project-batchUnlinkStory';
|
||||
|
||||
$lang->changelog['6.4'][] = 'api-sql';
|
||||
$lang->changelog['6.4'][] = 'backup-index';
|
||||
$lang->changelog['6.4'][] = 'backup-backup';
|
||||
$lang->changelog['6.4'][] = 'backup-restore';
|
||||
$lang->changelog['6.4'][] = 'backup-delete';
|
||||
$lang->changelog['6.4'][] = 'build-linkStory';
|
||||
$lang->changelog['6.4'][] = 'build-unlinkStory';
|
||||
$lang->changelog['6.4'][] = 'build-batchUnlinkStory';
|
||||
$lang->changelog['6.4'][] = 'build-linkBug';
|
||||
$lang->changelog['6.4'][] = 'build-unlinkBug';
|
||||
$lang->changelog['6.4'][] = 'build-batchUnlinkBug';
|
||||
$lang->changelog['6.4'][] = 'dept-edit';
|
||||
$lang->changelog['6.4'][] = 'release-linkStory';
|
||||
$lang->changelog['6.4'][] = 'release-unlinkStory';
|
||||
$lang->changelog['6.4'][] = 'release-batchUnlinkStory';
|
||||
$lang->changelog['6.4'][] = 'release-linkBug';
|
||||
$lang->changelog['6.4'][] = 'release-unlinkBug';
|
||||
$lang->changelog['6.4'][] = 'release-batchUnlinkBug';
|
||||
$lang->changelog['6.4'][] = 'story-batchAssignTo';
|
||||
|
||||
$lang->changelog['7.1'][] = 'cron-index';
|
||||
$lang->changelog['7.1'][] = 'cron-turnon';
|
||||
$lang->changelog['7.1'][] = 'cron-create';
|
||||
$lang->changelog['7.1'][] = 'cron-edit';
|
||||
$lang->changelog['7.1'][] = 'cron-toggle';
|
||||
$lang->changelog['7.1'][] = 'cron-delete';
|
||||
$lang->changelog['7.1'][] = 'mail-browse';
|
||||
$lang->changelog['7.1'][] = 'mail-delete';
|
||||
$lang->changelog['7.1'][] = 'mail-batchDelete';
|
||||
$lang->changelog['7.1'][] = 'dev-api';
|
||||
$lang->changelog['7.1'][] = 'dev-db';
|
||||
|
||||
$lang->changelog['7.2'][] = 'admin-safeIndex';
|
||||
$lang->changelog['7.2'][] = 'admin-checkWeak';
|
||||
$lang->changelog['7.2'][] = 'backup-change';
|
||||
$lang->changelog['7.2'][] = 'custom-flow';
|
||||
$lang->changelog['7.2'][] = 'group-manageView';
|
||||
$lang->changelog['7.2'][] = 'product-updateOrder';
|
||||
$lang->changelog['7.2'][] = 'project-updateOrder';
|
||||
|
||||
$lang->changelog['7.3'][] = 'project-fixFirst';
|
||||
$lang->changelog['7.3'][] = 'productplan-batchEdit';
|
||||
$lang->changelog['7.3'][] = 'admin-sso';
|
||||
$lang->changelog['7.3'][] = 'cron-openProcess';
|
||||
$lang->changelog['7.3'][] = 'mail-sendCloud';
|
||||
$lang->changelog['7.3'][] = 'mail-sendcloudUser';
|
||||
|
||||
$lang->changelog['7.4.beta'][] = 'release-changeStatus';
|
||||
$lang->changelog['7.4.beta'][] = 'user-unbind';
|
||||
$lang->changelog['7.4.beta'][] = 'branch-manage';
|
||||
$lang->changelog['7.4.beta'][] = 'branch-delete';
|
||||
$lang->changelog['7.4.beta'][] = 'my-unbind';
|
||||
|
||||
$lang->changelog['8.0'][] = 'story-batchChangeBranch';
|
||||
|
||||
$lang->changelog['8.0.1'][] = 'bug-linkBugs';
|
||||
$lang->changelog['8.0.1'][] = 'story-linkStory';
|
||||
$lang->changelog['8.0.1'][] = 'testcase-linkCases';
|
||||
|
||||
$lang->changelog['8.1.3'][] = 'story-batchChangeModule';
|
||||
$lang->changelog['8.1.3'][] = 'task-batchChangeModule';
|
||||
$lang->changelog['8.1.3'][] = 'bug-batchChangeModule';
|
||||
$lang->changelog['8.1.3'][] = 'testcase-batchChangeModule';
|
||||
$lang->changelog['8.1.3'][] = 'my-manageContacts';
|
||||
$lang->changelog['8.1.3'][] = 'my-deleteContacts';
|
||||
|
||||
$lang->changelog['8.2.beta'][] = 'product-all';
|
||||
$lang->changelog['8.2.beta'][] = 'project-tree';
|
||||
$lang->changelog['8.2.beta'][] = 'project-all';
|
||||
$lang->changelog['8.2.beta'][] = 'project-kanban';
|
||||
$lang->changelog['8.2.beta'][] = 'project-tree';
|
||||
|
||||
$lang->changelog['8.3'][] = 'doc-allLibs';
|
||||
$lang->changelog['8.3'][] = 'doc-objectLibs';
|
||||
$lang->changelog['8.3'][] = 'doc-showFiles';
|
||||
|
||||
$lang->changelog['8.4'][] = 'branch-sort';
|
||||
$lang->changelog['8.4'][] = 'story-bugs';
|
||||
$lang->changelog['8.4'][] = 'story-cases';
|
||||
|
||||
$lang->changelog['9.0'][] = 'testcase-bugs';
|
||||
$lang->changelog['9.0'][] = 'mail-resend';
|
||||
|
||||
$lang->changelog['9.1'][] = 'testcase-review';
|
||||
$lang->changelog['9.1'][] = 'testcase-batchReview';
|
||||
$lang->changelog['9.1'][] = 'testcase-importFromLib';
|
||||
$lang->changelog['9.1'][] = 'testcase-batchCaseTypeChange';
|
||||
$lang->changelog['9.1'][] = 'testcase-batchConfirmStoryChange';
|
||||
$lang->changelog['9.1'][] = 'testreport-browse';
|
||||
$lang->changelog['9.1'][] = 'testreport-create';
|
||||
$lang->changelog['9.1'][] = 'testreport-view';
|
||||
$lang->changelog['9.1'][] = 'testreport-delete';
|
||||
$lang->changelog['9.1'][] = 'testreport-edit';
|
||||
$lang->changelog['9.1'][] = 'testsuite-index';
|
||||
$lang->changelog['9.1'][] = 'testsuite-browse';
|
||||
$lang->changelog['9.1'][] = 'testsuite-create';
|
||||
$lang->changelog['9.1'][] = 'testsuite-view';
|
||||
$lang->changelog['9.1'][] = 'testsuite-edit';
|
||||
$lang->changelog['9.1'][] = 'testsuite-delete';
|
||||
$lang->changelog['9.1'][] = 'testsuite-linkCase';
|
||||
$lang->changelog['9.1'][] = 'testsuite-unlinkCase';
|
||||
$lang->changelog['9.1'][] = 'testsuite-batchUnlinkCases';
|
||||
$lang->changelog['9.1'][] = 'testsuite-library';
|
||||
$lang->changelog['9.1'][] = 'testsuite-createLib';
|
||||
$lang->changelog['9.1'][] = 'testsuite-createCase';
|
||||
$lang->changelog['9.1'][] = 'testsuite-libView';
|
||||
$lang->changelog['9.1'][] = 'caselib-library';
|
||||
$lang->changelog['9.1'][] = 'caselib-createLib';
|
||||
$lang->changelog['9.1'][] = 'caselib-edit';
|
||||
$lang->changelog['9.1'][] = 'caselib-createCase';
|
||||
$lang->changelog['9.1'][] = 'caselib-libView';
|
||||
$lang->changelog['9.1'][] = 'testtask-activate';
|
||||
$lang->changelog['9.1'][] = 'testtask-block';
|
||||
$lang->changelog['9.1'][] = 'testtask-report';
|
||||
|
||||
$lang->changelog['9.2'][] = 'custom-working';
|
||||
$lang->changelog['9.2'][] = 'doc-sort';
|
||||
$lang->changelog['9.2'][] = 'product-build';
|
||||
$lang->changelog['9.2'][] = 'testsuite-batchCreateCase';
|
||||
$lang->changelog['9.2'][] = 'testsuite-exportTemplet';
|
||||
$lang->changelog['9.2'][] = 'testsuite-import';
|
||||
$lang->changelog['9.2'][] = 'testsuite-showImport';
|
||||
$lang->changelog['9.5'][] = 'bug-batchActivate';
|
||||
|
||||
$lang->changelog['9.6'][] = 'custom-setPublic';
|
||||
$lang->changelog['9.6'][] = 'datatable-setGlobal';
|
||||
$lang->changelog['9.6'][] = 'product-export';
|
||||
$lang->changelog['9.6'][] = 'project-export';
|
||||
$lang->changelog['9.6'][] = 'project-storyKanban';
|
||||
$lang->changelog['9.6'][] = 'project-storySort';
|
||||
|
||||
$lang->changelog['9.8'][] = 'message-index';
|
||||
$lang->changelog['9.8'][] = 'message-setting';
|
||||
$lang->changelog['9.8'][] = 'todo-createCycle';
|
||||
$lang->changelog['9.8'][] = 'project-importPlanStories';
|
||||
$lang->changelog['9.8'][] = 'todo-assignTo';
|
||||
$lang->changelog['9.8'][] = 'todo-activate';
|
||||
$lang->changelog['9.8'][] = 'todo-close';
|
||||
|
||||
$lang->changelog['10.0.alpha'][] = 'my-calendar';
|
||||
$lang->changelog['10.0.alpha'][] = 'doc-collect';
|
||||
|
||||
$lang->changelog['10.1'][] = 'todo-batchClose';
|
||||
$lang->changelog['10.1'][] = 'project-treeTask';
|
||||
$lang->changelog['10.1'][] = 'project-treeStory';
|
||||
|
||||
$lang->changelog['10.6'][] = 'backup-setting';
|
||||
$lang->changelog['10.6'][] = 'backup-rmPHPHeader';
|
||||
|
||||
$lang->changelog['11.6.2'][] = 'message-browser';
|
||||
|
||||
$lang->changelog['12.3'][] = 'testtask-browseUnits';
|
||||
$lang->changelog['12.3'][] = 'testtask-unitCases';
|
||||
$lang->changelog['12.3'][] = 'testtask-importUnitResult';
|
||||
$lang->changelog['12.3'][] = 'job-view';
|
||||
$lang->changelog['12.3'][] = 'ci-commitResult';
|
||||
|
||||
$lang->changelog['12.5'][] = 'story-batchToTask';
|
||||
$lang->changelog['12.5'][] = 'custom-product';
|
||||
$lang->changelog['12.5'][] = 'custom-project';
|
||||
|
||||
$lang->changelog['15.0.rc1'][] = 'program-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-product';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-start';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-suspend';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-activate';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-close';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-project';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-stakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-createStakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-unlinkStakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-batchUnlinkStakeholders';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-export';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-group';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-createGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-manageView';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-managePriv';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-manageGroupMember';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-copyGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-editGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-qa';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-createGuide';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-moduleOpen';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-accessible';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-invest';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-workAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-contributeAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-testtask';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-doc';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-calendarAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'story-trackAB';
|
||||
$lang->changelog['15.0.rc1'][] = 'story-processStoryChange';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-story';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-trackAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-linkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-unlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-importplanstories';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'automation-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'group-manageProjectAdmin';
|
||||
$lang->changelog['15.0.rc1'][] = 'user-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-setStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-editStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-browseStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-setDefaultConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-deleteStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'search-index';
|
||||
$lang->changelog['15.0.rc1'][] = 'search-buildIndex';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectbuild-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-browseAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-export';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-linkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-unlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-batchUnlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-linkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-unlinkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-batchUnlinkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-changeStatus';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-batchCreate';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-issue';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewIssueAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-communicate';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-expect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-expectation';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-deleteExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-createExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-editExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-userIssue';
|
||||
@@ -34,6 +34,8 @@ $lang->group->dynamic = 'Access Dynamics';
|
||||
$lang->group->noticeVisit = 'Blank means no access limit.';
|
||||
$lang->group->noneProgram = "No Program";
|
||||
$lang->group->noneProduct = "No {$lang->productCommon}";
|
||||
$lang->group->project = 'Project';
|
||||
$lang->group->group = 'Group';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'new') $lang->group->noneProject = 'No Project';
|
||||
|
||||
@@ -1479,428 +1479,4 @@ $lang->dev->methodOrder[10] = 'db';
|
||||
$lang->dev->methodOrder[15] = 'editor';
|
||||
$lang->dev->methodOrder[20] = 'translate';
|
||||
|
||||
/* Every version of new privilege. */
|
||||
$lang->changelog['1.0.1'][] = 'project-computeBurn';
|
||||
|
||||
$lang->changelog['1.1'][] = 'search-saveQuery';
|
||||
$lang->changelog['1.1'][] = 'search-deleteQuery';
|
||||
|
||||
$lang->changelog['1.2'][] = 'product-doc';
|
||||
$lang->changelog['1.2'][] = 'project-doc';
|
||||
$lang->changelog['1.2'][] = 'bug-saveTemplate';
|
||||
$lang->changelog['1.2'][] = 'bug-deleteTemplate';
|
||||
$lang->changelog['1.2'][] = 'doc-index';
|
||||
$lang->changelog['1.2'][] = 'doc-browse';
|
||||
$lang->changelog['1.2'][] = 'doc-createLib';
|
||||
$lang->changelog['1.2'][] = 'doc-editLib';
|
||||
$lang->changelog['1.2'][] = 'doc-deleteLib';
|
||||
$lang->changelog['1.2'][] = 'doc-create';
|
||||
$lang->changelog['1.2'][] = 'doc-view';
|
||||
$lang->changelog['1.2'][] = 'doc-edit';
|
||||
$lang->changelog['1.2'][] = 'doc-delete';
|
||||
$lang->changelog['1.2'][] = 'doc-deleteFile';
|
||||
|
||||
$lang->changelog['1.3'][] = 'task-start';
|
||||
$lang->changelog['1.3'][] = 'task-complete';
|
||||
$lang->changelog['1.3'][] = 'task-cancel';
|
||||
$lang->changelog['1.3'][] = 'file-delete';
|
||||
|
||||
$lang->changelog['1.4'][] = 'my-testTask';
|
||||
$lang->changelog['1.4'][] = 'my-testCase';
|
||||
$lang->changelog['1.4'][] = 'task-finish';
|
||||
$lang->changelog['1.4'][] = 'task-close';
|
||||
$lang->changelog['1.4'][] = 'task-activate';
|
||||
$lang->changelog['1.4'][] = 'search-select';
|
||||
|
||||
$lang->changelog['1.5'][] = 'task-batchClose';
|
||||
|
||||
$lang->changelog['2.0'][] = 'my-dynamic';
|
||||
$lang->changelog['2.0'][] = 'bug-export';
|
||||
$lang->changelog['2.0'][] = 'story-export';
|
||||
$lang->changelog['2.0'][] = 'story-reportChart';
|
||||
$lang->changelog['2.0'][] = 'task-export';
|
||||
$lang->changelog['2.0'][] = 'task-reportChart';
|
||||
$lang->changelog['2.0'][] = 'taskcase-export';
|
||||
$lang->changelog['2.0'][] = 'company-dynamic';
|
||||
$lang->changelog['2.0'][] = 'user-dynamic';
|
||||
$lang->changelog['2.0'][] = 'extension-browse';
|
||||
$lang->changelog['2.0'][] = 'extension-obtain';
|
||||
$lang->changelog['2.0'][] = 'extension-install';
|
||||
$lang->changelog['2.0'][] = 'extension-uninstall';
|
||||
$lang->changelog['2.0'][] = 'extension-activate';
|
||||
$lang->changelog['2.0'][] = 'extension-deactivate';
|
||||
$lang->changelog['2.0'][] = 'extension-upload';
|
||||
$lang->changelog['2.0'][] = 'extension-erase';
|
||||
|
||||
$lang->changelog['2.1'][] = 'extension-upgrade';
|
||||
|
||||
$lang->changelog['2.2'][] = 'file-edit';
|
||||
|
||||
$lang->changelog['2.3'][] = 'product-dynamic';
|
||||
$lang->changelog['2.3'][] = 'project-dynamic';
|
||||
$lang->changelog['2.3'][] = 'project-importBug';
|
||||
$lang->changelog['2.3'][] = 'story-batchCreate';
|
||||
$lang->changelog['2.3'][] = 'task-batchCreate';
|
||||
$lang->changelog['2.3'][] = 'testcase-batchCreate';
|
||||
$lang->changelog['2.3'][] = 'bug-confirmBug';
|
||||
$lang->changelog['2.3'][] = 'svn-diff';
|
||||
$lang->changelog['2.3'][] = 'svn-cat';
|
||||
$lang->changelog['2.3'][] = 'svn-apiSync';
|
||||
|
||||
$lang->changelog['2.4'][] = 'task-assign';
|
||||
$lang->changelog['2.4'][] = 'project-testtask';
|
||||
$lang->changelog['2.4'][] = 'todo-export';
|
||||
$lang->changelog['2.4'][] = 'product-project';
|
||||
|
||||
$lang->changelog['3.0.beta2'][] = 'extension-structure';
|
||||
$lang->changelog['3.0.beta2'][] = 'product-order';
|
||||
$lang->changelog['3.0.beta2'][] = 'project-order';
|
||||
|
||||
$lang->changelog['3.1'][] = 'todo-batchCreate';
|
||||
|
||||
$lang->changelog['3.2'][] = 'my-changePassword';
|
||||
$lang->changelog['3.2'][] = 'story-batchClose';
|
||||
$lang->changelog['3.2'][] = 'task-batchEdit';
|
||||
$lang->changelog['3.2'][] = 'release-export';
|
||||
$lang->changelog['3.2'][] = 'report-index';
|
||||
$lang->changelog['3.2'][] = 'report-projectDeviation';
|
||||
$lang->changelog['3.2'][] = 'report-productSummary';
|
||||
$lang->changelog['3.2'][] = 'report-bugCreate';
|
||||
$lang->changelog['3.2'][] = 'report-workload';
|
||||
$lang->changelog['3.2'][] = 'tree-fix';
|
||||
|
||||
$lang->changelog['3.3'][] = 'report-bugAssign';
|
||||
|
||||
$lang->changelog['4.0.beta1'][] = 'user-batchCreate';
|
||||
$lang->changelog['4.0.beta1'][] = 'user-unlock';
|
||||
$lang->changelog['4.0.beta1'][] = 'admin-checkDB';
|
||||
|
||||
$lang->changelog['4.0.beta2'][] = 'todo-batchEdit';
|
||||
$lang->changelog['4.0.beta2'][] = 'story-batchEdit';
|
||||
$lang->changelog['4.0.beta2'][] = 'bug-batchEdit';
|
||||
$lang->changelog['4.0.beta2'][] = 'testcase-batchEdit';
|
||||
$lang->changelog['4.0.beta2'][] = 'testtask-batchRun';
|
||||
$lang->changelog['4.0.beta2'][] = 'user-batchEdit';
|
||||
$lang->changelog['4.0.beta2'][] = 'user-manageContacts';
|
||||
$lang->changelog['4.0.beta2'][] = 'user-deleteContacts';
|
||||
|
||||
$lang->changelog['4.0'][] = 'todo-finish';
|
||||
$lang->changelog['4.0'][] = 'product-close';
|
||||
$lang->changelog['4.0'][] = 'project-start';
|
||||
$lang->changelog['4.0'][] = 'project-activate';
|
||||
$lang->changelog['4.0'][] = 'project-putoff';
|
||||
$lang->changelog['4.0'][] = 'project-suspend';
|
||||
$lang->changelog['4.0'][] = 'project-close';
|
||||
$lang->changelog['4.0'][] = 'task-record';
|
||||
$lang->changelog['4.0'][] = 'testtask-start';
|
||||
$lang->changelog['4.0'][] = 'testtask-close';
|
||||
$lang->changelog['4.0'][] = 'action-hideOne';
|
||||
$lang->changelog['4.0'][] = 'action-hideAll';
|
||||
$lang->changelog['4.0'][] = 'task-editEstimate';
|
||||
$lang->changelog['4.0'][] = 'task-deleteEstimate';
|
||||
|
||||
$lang->changelog['4.1'][] = 'todo-batchFinish';
|
||||
$lang->changelog['4.1'][] = 'productplan-batchUnlinkStory';
|
||||
$lang->changelog['4.1'][] = 'company-view';
|
||||
$lang->changelog['4.1'][] = 'user-story';
|
||||
$lang->changelog['4.1'][] = 'user-testTask';
|
||||
$lang->changelog['4.1'][] = 'user-testCase';
|
||||
|
||||
$lang->changelog['4.2.beta'][] = 'tree-browseTask';
|
||||
|
||||
$lang->changelog['4.3.beta'][] = 'product-batchEdit';
|
||||
$lang->changelog['4.3.beta'][] = 'project-batchEdit';
|
||||
$lang->changelog['4.3.beta'][] = 'story-batchReview';
|
||||
$lang->changelog['4.3.beta'][] = 'story-batchChangePlan';
|
||||
$lang->changelog['4.3.beta'][] = 'story-batchChangeStage';
|
||||
$lang->changelog['4.3.beta'][] = 'productplan-linkBug';
|
||||
$lang->changelog['4.3.beta'][] = 'productplan-unlinkBug';
|
||||
$lang->changelog['4.3.beta'][] = 'productplan-batchUnlinkBug';
|
||||
$lang->changelog['4.3.beta'][] = 'bug-batchCreate';
|
||||
$lang->changelog['4.3.beta'][] = 'testcase-exportTemplet';
|
||||
$lang->changelog['4.3.beta'][] = 'testcase-import';
|
||||
$lang->changelog['4.3.beta'][] = 'testcase-showImport';
|
||||
$lang->changelog['4.3.beta'][] = 'testcase-confirmChange';
|
||||
$lang->changelog['4.3.beta'][] = 'mail-reset';
|
||||
$lang->changelog['4.3.beta'][] = 'api-debug';
|
||||
$lang->changelog['4.3.beta'][] = 'action-editComment';
|
||||
|
||||
$lang->changelog['5.0.beta1'][] = 'bug-batchConfirm';
|
||||
$lang->changelog['5.0.beta1'][] = 'bug-batchResolve';
|
||||
$lang->changelog['5.0.beta1'][] = 'custom-index';
|
||||
$lang->changelog['5.0.beta1'][] = 'custom-set';
|
||||
$lang->changelog['5.0.beta1'][] = 'custom-restore';
|
||||
|
||||
$lang->changelog['5.0.beta2'][] = 'git-diff';
|
||||
$lang->changelog['5.0.beta2'][] = 'git-cat';
|
||||
$lang->changelog['5.0.beta2'][] = 'git-apiSync';
|
||||
|
||||
$lang->changelog['5.3'][] = 'bug-batchClose';
|
||||
|
||||
$lang->changelog['6.1'][] = 'story-zeroCase';
|
||||
$lang->changelog['6.1'][] = 'testcase-groupCase';
|
||||
$lang->changelog['6.1'][] = 'testtask-groupCase';
|
||||
|
||||
$lang->changelog['6.2'][] = 'task-pause';
|
||||
$lang->changelog['6.2'][] = 'task-restart';
|
||||
$lang->changelog['6.2'][] = 'testcase-createBug';
|
||||
|
||||
$lang->changelog['6.3'][] = 'bug-batchAssignTo';
|
||||
$lang->changelog['6.3'][] = 'task-batchAssignTo';
|
||||
$lang->changelog['6.3'][] = 'file-uploadImages';
|
||||
$lang->changelog['6.3'][] = 'project-batchUnlinkStory';
|
||||
|
||||
$lang->changelog['6.4'][] = 'api-sql';
|
||||
$lang->changelog['6.4'][] = 'backup-index';
|
||||
$lang->changelog['6.4'][] = 'backup-backup';
|
||||
$lang->changelog['6.4'][] = 'backup-restore';
|
||||
$lang->changelog['6.4'][] = 'backup-delete';
|
||||
$lang->changelog['6.4'][] = 'build-linkStory';
|
||||
$lang->changelog['6.4'][] = 'build-unlinkStory';
|
||||
$lang->changelog['6.4'][] = 'build-batchUnlinkStory';
|
||||
$lang->changelog['6.4'][] = 'build-linkBug';
|
||||
$lang->changelog['6.4'][] = 'build-unlinkBug';
|
||||
$lang->changelog['6.4'][] = 'build-batchUnlinkBug';
|
||||
$lang->changelog['6.4'][] = 'dept-edit';
|
||||
$lang->changelog['6.4'][] = 'release-linkStory';
|
||||
$lang->changelog['6.4'][] = 'release-unlinkStory';
|
||||
$lang->changelog['6.4'][] = 'release-batchUnlinkStory';
|
||||
$lang->changelog['6.4'][] = 'release-linkBug';
|
||||
$lang->changelog['6.4'][] = 'release-unlinkBug';
|
||||
$lang->changelog['6.4'][] = 'release-batchUnlinkBug';
|
||||
$lang->changelog['6.4'][] = 'story-batchAssignTo';
|
||||
|
||||
$lang->changelog['7.1'][] = 'cron-index';
|
||||
$lang->changelog['7.1'][] = 'cron-turnon';
|
||||
$lang->changelog['7.1'][] = 'cron-create';
|
||||
$lang->changelog['7.1'][] = 'cron-edit';
|
||||
$lang->changelog['7.1'][] = 'cron-toggle';
|
||||
$lang->changelog['7.1'][] = 'cron-delete';
|
||||
$lang->changelog['7.1'][] = 'mail-browse';
|
||||
$lang->changelog['7.1'][] = 'mail-delete';
|
||||
$lang->changelog['7.1'][] = 'mail-batchDelete';
|
||||
$lang->changelog['7.1'][] = 'dev-api';
|
||||
$lang->changelog['7.1'][] = 'dev-db';
|
||||
|
||||
$lang->changelog['7.2'][] = 'admin-safeIndex';
|
||||
$lang->changelog['7.2'][] = 'admin-checkWeak';
|
||||
$lang->changelog['7.2'][] = 'backup-change';
|
||||
$lang->changelog['7.2'][] = 'custom-flow';
|
||||
$lang->changelog['7.2'][] = 'group-manageView';
|
||||
$lang->changelog['7.2'][] = 'product-updateOrder';
|
||||
$lang->changelog['7.2'][] = 'project-updateOrder';
|
||||
|
||||
$lang->changelog['7.3'][] = 'project-fixFirst';
|
||||
$lang->changelog['7.3'][] = 'productplan-batchEdit';
|
||||
$lang->changelog['7.3'][] = 'admin-sso';
|
||||
$lang->changelog['7.3'][] = 'cron-openProcess';
|
||||
$lang->changelog['7.3'][] = 'mail-sendCloud';
|
||||
$lang->changelog['7.3'][] = 'mail-sendcloudUser';
|
||||
|
||||
$lang->changelog['7.4.beta'][] = 'release-changeStatus';
|
||||
$lang->changelog['7.4.beta'][] = 'user-unbind';
|
||||
$lang->changelog['7.4.beta'][] = 'branch-manage';
|
||||
$lang->changelog['7.4.beta'][] = 'branch-delete';
|
||||
$lang->changelog['7.4.beta'][] = 'my-unbind';
|
||||
|
||||
$lang->changelog['8.0'][] = 'story-batchChangeBranch';
|
||||
|
||||
$lang->changelog['8.0.1'][] = 'bug-linkBugs';
|
||||
$lang->changelog['8.0.1'][] = 'story-linkStory';
|
||||
$lang->changelog['8.0.1'][] = 'testcase-linkCases';
|
||||
|
||||
$lang->changelog['8.1.3'][] = 'story-batchChangeModule';
|
||||
$lang->changelog['8.1.3'][] = 'task-batchChangeModule';
|
||||
$lang->changelog['8.1.3'][] = 'bug-batchChangeModule';
|
||||
$lang->changelog['8.1.3'][] = 'testcase-batchChangeModule';
|
||||
$lang->changelog['8.1.3'][] = 'my-manageContacts';
|
||||
$lang->changelog['8.1.3'][] = 'my-deleteContacts';
|
||||
|
||||
$lang->changelog['8.2.beta'][] = 'product-all';
|
||||
$lang->changelog['8.2.beta'][] = 'project-tree';
|
||||
$lang->changelog['8.2.beta'][] = 'project-all';
|
||||
$lang->changelog['8.2.beta'][] = 'project-kanban';
|
||||
$lang->changelog['8.2.beta'][] = 'project-tree';
|
||||
|
||||
$lang->changelog['8.3'][] = 'doc-allLibs';
|
||||
$lang->changelog['8.3'][] = 'doc-objectLibs';
|
||||
$lang->changelog['8.3'][] = 'doc-showFiles';
|
||||
|
||||
$lang->changelog['8.4'][] = 'branch-sort';
|
||||
$lang->changelog['8.4'][] = 'story-bugs';
|
||||
$lang->changelog['8.4'][] = 'story-cases';
|
||||
|
||||
$lang->changelog['9.0'][] = 'testcase-bugs';
|
||||
$lang->changelog['9.0'][] = 'mail-resend';
|
||||
|
||||
$lang->changelog['9.1'][] = 'testcase-review';
|
||||
$lang->changelog['9.1'][] = 'testcase-batchReview';
|
||||
$lang->changelog['9.1'][] = 'testcase-importFromLib';
|
||||
$lang->changelog['9.1'][] = 'testcase-batchCaseTypeChange';
|
||||
$lang->changelog['9.1'][] = 'testcase-batchConfirmStoryChange';
|
||||
$lang->changelog['9.1'][] = 'testreport-browse';
|
||||
$lang->changelog['9.1'][] = 'testreport-create';
|
||||
$lang->changelog['9.1'][] = 'testreport-view';
|
||||
$lang->changelog['9.1'][] = 'testreport-delete';
|
||||
$lang->changelog['9.1'][] = 'testreport-edit';
|
||||
$lang->changelog['9.1'][] = 'testsuite-index';
|
||||
$lang->changelog['9.1'][] = 'testsuite-browse';
|
||||
$lang->changelog['9.1'][] = 'testsuite-create';
|
||||
$lang->changelog['9.1'][] = 'testsuite-view';
|
||||
$lang->changelog['9.1'][] = 'testsuite-edit';
|
||||
$lang->changelog['9.1'][] = 'testsuite-delete';
|
||||
$lang->changelog['9.1'][] = 'testsuite-linkCase';
|
||||
$lang->changelog['9.1'][] = 'testsuite-unlinkCase';
|
||||
$lang->changelog['9.1'][] = 'testsuite-batchUnlinkCases';
|
||||
$lang->changelog['9.1'][] = 'testsuite-library';
|
||||
$lang->changelog['9.1'][] = 'testsuite-createLib';
|
||||
$lang->changelog['9.1'][] = 'testsuite-createCase';
|
||||
$lang->changelog['9.1'][] = 'testsuite-libView';
|
||||
$lang->changelog['9.1'][] = 'caselib-library';
|
||||
$lang->changelog['9.1'][] = 'caselib-createLib';
|
||||
$lang->changelog['9.1'][] = 'caselib-edit';
|
||||
$lang->changelog['9.1'][] = 'caselib-createCase';
|
||||
$lang->changelog['9.1'][] = 'caselib-libView';
|
||||
$lang->changelog['9.1'][] = 'testtask-activate';
|
||||
$lang->changelog['9.1'][] = 'testtask-block';
|
||||
$lang->changelog['9.1'][] = 'testtask-report';
|
||||
|
||||
$lang->changelog['9.2'][] = 'custom-working';
|
||||
$lang->changelog['9.2'][] = 'doc-sort';
|
||||
$lang->changelog['9.2'][] = 'product-build';
|
||||
$lang->changelog['9.2'][] = 'testsuite-batchCreateCase';
|
||||
$lang->changelog['9.2'][] = 'testsuite-exportTemplet';
|
||||
$lang->changelog['9.2'][] = 'testsuite-import';
|
||||
$lang->changelog['9.2'][] = 'testsuite-showImport';
|
||||
$lang->changelog['9.5'][] = 'bug-batchActivate';
|
||||
|
||||
$lang->changelog['9.6'][] = 'custom-setPublic';
|
||||
$lang->changelog['9.6'][] = 'datatable-setGlobal';
|
||||
$lang->changelog['9.6'][] = 'product-export';
|
||||
$lang->changelog['9.6'][] = 'project-export';
|
||||
$lang->changelog['9.6'][] = 'project-storyKanban';
|
||||
$lang->changelog['9.6'][] = 'project-storySort';
|
||||
|
||||
$lang->changelog['9.8'][] = 'message-index';
|
||||
$lang->changelog['9.8'][] = 'message-setting';
|
||||
$lang->changelog['9.8'][] = 'todo-createCycle';
|
||||
$lang->changelog['9.8'][] = 'project-importPlanStories';
|
||||
$lang->changelog['9.8'][] = 'todo-assignTo';
|
||||
$lang->changelog['9.8'][] = 'todo-activate';
|
||||
$lang->changelog['9.8'][] = 'todo-close';
|
||||
|
||||
$lang->changelog['10.0.alpha'][] = 'my-calendar';
|
||||
$lang->changelog['10.0.alpha'][] = 'doc-collect';
|
||||
|
||||
$lang->changelog['10.1'][] = 'todo-batchClose';
|
||||
$lang->changelog['10.1'][] = 'project-treeTask';
|
||||
$lang->changelog['10.1'][] = 'project-treeStory';
|
||||
|
||||
$lang->changelog['10.6'][] = 'backup-setting';
|
||||
$lang->changelog['10.6'][] = 'backup-rmPHPHeader';
|
||||
|
||||
$lang->changelog['11.6.2'][] = 'message-browser';
|
||||
|
||||
$lang->changelog['12.3'][] = 'testtask-browseUnits';
|
||||
$lang->changelog['12.3'][] = 'testtask-unitCases';
|
||||
$lang->changelog['12.3'][] = 'testtask-importUnitResult';
|
||||
$lang->changelog['12.3'][] = 'job-view';
|
||||
$lang->changelog['12.3'][] = 'ci-commitResult';
|
||||
|
||||
$lang->changelog['12.5'][] = 'story-batchToTask';
|
||||
$lang->changelog['12.5'][] = 'custom-product';
|
||||
$lang->changelog['12.5'][] = 'custom-project';
|
||||
|
||||
$lang->changelog['15.0.rc1'][] = 'program-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-product';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-start';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-suspend';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-activate';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-close';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-project';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-stakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-createStakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-unlinkStakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-batchUnlinkStakeholders';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-export';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-group';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-createGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-manageView';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-managePriv';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-manageGroupMember';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-copyGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-editGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-qa';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-createGuide';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-moduleOpen';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-accessible';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-invest';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-workAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-contributeAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-testtask';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-doc';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-calendarAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'story-trackAB';
|
||||
$lang->changelog['15.0.rc1'][] = 'story-processStoryChange';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-story';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-trackAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-linkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-unlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-importplanstories';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'automation-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'group-manageProjectAdmin';
|
||||
$lang->changelog['15.0.rc1'][] = 'user-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-setStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-editStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-browseStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-setDefaultConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-deleteStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'search-index';
|
||||
$lang->changelog['15.0.rc1'][] = 'search-buildIndex';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectbuild-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-browseAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-export';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-linkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-unlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-batchUnlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-linkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-unlinkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-batchUnlinkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-changeStatus';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-batchCreate';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-issue';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewIssueAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-communicate';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-expect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-expectation';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-deleteExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-createExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-editExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-userIssue';
|
||||
include (dirname(__FILE__) . '/changelog.php');
|
||||
|
||||
@@ -34,6 +34,8 @@ $lang->group->dynamic = '可查看动态';
|
||||
$lang->group->noticeVisit = '空代表没有访问限制';
|
||||
$lang->group->noneProgram = "暂时没有项目集";
|
||||
$lang->group->noneProduct = "暂时没有{$lang->productCommon}";
|
||||
$lang->group->project = '项目';
|
||||
$lang->group->group = '分组';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'new') $lang->group->noneProject = '暂时没有项目';
|
||||
|
||||
@@ -34,6 +34,8 @@ $lang->group->dynamic = '可查看動態';
|
||||
$lang->group->noticeVisit = '空代表沒有訪問限制';
|
||||
$lang->group->noneProgram = "暫時沒有項目集";
|
||||
$lang->group->noneProduct = "暫時沒有{$lang->productCommon}";
|
||||
$lang->group->project = '項目';
|
||||
$lang->group->group = '分組';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'new') $lang->group->noneProject = '暫時沒有項目';
|
||||
|
||||
@@ -364,16 +364,18 @@ class groupModel extends model
|
||||
$actions['actions'] = $dynamic;
|
||||
|
||||
/* Update whitelist. */
|
||||
$users = $this->getUserPairs($groupID);
|
||||
$users = array_keys($users);
|
||||
$this->loadModel('personnel');
|
||||
$users = $this->getUserPairs($groupID);
|
||||
$users = array_keys($users);
|
||||
|
||||
foreach($this->config->group->acl->objectTypes as $key => $objectType)
|
||||
{
|
||||
$oldAcls = isset($oldGroup->acl[$key]) ? $oldGroup->acl[$key] : array();
|
||||
$newAcls = isset($actions[$key]) ? $actions[$key] : array();
|
||||
$needRemoveAcls = array_diff($oldAcls, $newAcls);
|
||||
$needAddAcls = array_diff($newAcls, $oldAcls);
|
||||
foreach($needAddAcls as $objectID) $this->loadModel('personnel')->updateWhitelist($users, $objectType, $objectID, 'whitelist', 'add', 'increase');
|
||||
foreach($needRemoveAcls as $objectID) $this->loadModel('personnel')->deleteWhitelist($users, $objectType, $objectID);
|
||||
foreach($needAddAcls as $objectID) $this->personnel->updateWhitelist($users, $objectType, $objectID, 'whitelist', 'sync', 'increase');
|
||||
foreach($needRemoveAcls as $objectID) $this->personnel->deleteWhitelist($users, $objectType, $objectID);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ class install extends control
|
||||
if(!isset($this->config->installed) or !$this->config->installed) $this->session->set('installing', true);
|
||||
|
||||
$this->view->title = $this->lang->install->welcome;
|
||||
if(!isset($this->view->versionName)) $this->view->versionName = $this->config->version; // If the versionName variable has been defined in the max version, it cannot be defined here to avoid being overwritten.
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -232,10 +233,11 @@ class install extends control
|
||||
*/
|
||||
public function step6()
|
||||
{
|
||||
$this->view->title = $this->lang->install->success;
|
||||
$installFileDeleted = unlink($this->app->getAppRoot() . 'www/install.php');
|
||||
$this->view->installFileDeleted = $installFileDeleted;
|
||||
$this->view->title = $this->lang->install->success;
|
||||
$this->display();
|
||||
|
||||
unlink($this->app->getAppRoot() . 'www/install.php');
|
||||
unlink($this->app->getAppRoot() . 'www/upgrade.php');
|
||||
unset($_SESSION['installing']);
|
||||
session_destroy();
|
||||
|
||||
@@ -8,3 +8,16 @@ function showVideo()
|
||||
{
|
||||
$('video').removeClass('hidden');
|
||||
}
|
||||
|
||||
$(function()
|
||||
{
|
||||
$('#modeclassic').click(function()
|
||||
{
|
||||
$('#selectedModeTips').show();
|
||||
});
|
||||
|
||||
$('#modenew').click(function()
|
||||
{
|
||||
$('#selectedModeTips').hide();
|
||||
});
|
||||
})
|
||||
|
||||
@@ -174,8 +174,10 @@ $lang->install->success = "Installiert!";
|
||||
$lang->install->login = 'Login ZenTao';
|
||||
$lang->install->register = 'Bei ZenTao registieren';
|
||||
|
||||
$lang->install->joinZentao = <<<EOT
|
||||
<p>Sie haben ZenTao %s installiert.<strong class='text-danger'> Bitte löschen Sie die install.php schnellstmöglich</strong>.</p><p>Hinweis: Wenn Sie über ZenTao informiert bleiben möchten, registieren Sie sich bitte unter (<a href='https://www.zentao.pm' class='alert-link' target='_blank'>www.zentao.pm</a>).</p>
|
||||
$lang->install->successLabel = "<p>Sie haben ZenTao %s installiert.</p>";
|
||||
$lang->install->successNoticeLabel = "<p>Sie haben ZenTao %s installiert.<strong class='text-danger'> Bitte löschen Sie die install.php schnellstmöglich</strong>.</p>";
|
||||
$lang->install->joinZentao = <<<EOT
|
||||
<p>Hinweis: Wenn Sie über ZenTao informiert bleiben möchten, registieren Sie sich bitte unter (<a href='https://www.zentao.pm' class='alert-link' target='_blank'>www.zentao.pm</a>).</p>
|
||||
EOT;
|
||||
|
||||
$lang->install->product = array('chanzhi', 'zdoo');
|
||||
|
||||
@@ -206,8 +206,10 @@ $lang->install->success = "Installed!";
|
||||
$lang->install->login = 'ZenTao Login';
|
||||
$lang->install->register = 'ZenTao Community Signup';
|
||||
|
||||
$lang->install->joinZentao = <<<EOT
|
||||
<p>You have installed ZenTao %s.<strong class='text-danger'> Please delete install.php</strong>.</p><p>Note: In order to get the latest news of ZenTao, please sign up on ZenTao Community(<a href='https://www.zentao.pm' class='alert-link' target='_blank'>www.zentao.pm</a>).</p>
|
||||
$lang->install->successLabel = "<p>You have installed ZenTao %s.</p>";
|
||||
$lang->install->successNoticeLabel = "<p>You have installed ZenTao %s.<strong class='text-danger'> Please delete install.php</strong>.</p>";
|
||||
$lang->install->joinZentao = <<<EOT
|
||||
<p>Note: In order to get the latest news of ZenTao, please sign up on ZenTao Community(<a href='https://www.zentao.pm' class='alert-link' target='_blank'>www.zentao.pm</a>).</p>
|
||||
EOT;
|
||||
|
||||
$lang->install->product = array('chanzhi', 'zdoo', 'ydisk', 'meshiot');
|
||||
|
||||
@@ -174,8 +174,10 @@ $lang->install->success = "Installé !";
|
||||
$lang->install->login = 'Login ZenTao';
|
||||
$lang->install->register = "S'enregistrer sur la Communauté ZenTao";
|
||||
|
||||
$lang->install->joinZentao = <<<EOT
|
||||
<p>Vous avez installé ZenTao %s.<strong class='text-danger'> Supprimez install.php asap</strong>.</p><p>Note : Afin d'obtenir les dernières infos de ZenTao, enregistrz-vous chez ZenTao(<a href='https://www.zentao.pm' class='alert-link' target='_blank'>www.zentao.pm</a>).</p>
|
||||
$lang->install->successLabel = "<p>Vous avez installé ZenTao %s.</p>";
|
||||
$lang->install->successNoticeLabel = "<p>Vous avez installé ZenTao %s.<strong class='text-danger'> Supprimez install.php asap</strong>.</p>";
|
||||
$lang->install->joinZentao = <<<EOT
|
||||
<p>Note : Afin d'obtenir les dernières infos de ZenTao, enregistrz-vous chez ZenTao(<a href='https://www.zentao.pm' class='alert-link' target='_blank'>www.zentao.pm</a>).</p>
|
||||
EOT;
|
||||
|
||||
$lang->install->product = array('chanzhi', 'zdoo');
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user