Merge branch '15.5' into 165
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
UPDATE `zt_action` SET `action` = 'reviewpassed' WHERE `action` = 'passreviewed';
|
||||
UPDATE `zt_action` SET `action` = 'reviewrejected' WHERE `action` = 'reviewclosed';
|
||||
UPDATE `zt_action` SET `action` = 'reviewclarified' WHERE `action` = 'clarifyreviewed';
|
||||
DELETE FROM `zt_config` WHERE `key` = 'skipYoungBlueTheme' and `section` = 'global';
|
||||
UPDATE `zt_config` SET `key` = 'skipYoungBlueTheme' WHERE `key` = 'skipThemeGuide' and `section` = 'global';
|
||||
DELETE FROM `zt_score` WHERE `module` = 'tutorial' AND `method` = 'finish';
|
||||
CREATE TABLE `zt_mr` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
|
||||
@@ -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'))
|
||||
{
|
||||
|
||||
@@ -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] : '';
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
+10
-2
@@ -395,13 +395,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>';
|
||||
}
|
||||
}
|
||||
@@ -1297,7 +1305,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);
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -32,7 +32,7 @@ $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';
|
||||
|
||||
@@ -32,7 +32,7 @@ $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] = '不允许';
|
||||
|
||||
@@ -30,7 +30,7 @@ $lang->company->admins = '管理員';
|
||||
|
||||
$lang->company->product = $lang->productCommon;
|
||||
$lang->company->project = '項目';
|
||||
$lang->company->execution = $lang->executionCommon;
|
||||
$lang->company->execution = '執行';
|
||||
$lang->company->user = '用戶';
|
||||
|
||||
$lang->company->guestOptions[0] = '不允許';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -6,7 +6,7 @@ $(function()
|
||||
{
|
||||
$('#content').html(draft);
|
||||
editor = KindEditor.instances[0];
|
||||
editor.html(draft);
|
||||
editor.html('' + draft);
|
||||
$('.kindeditor-ph').remove();
|
||||
}
|
||||
}, 100)
|
||||
|
||||
@@ -1208,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')
|
||||
@@ -1233,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');
|
||||
@@ -1340,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');
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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';
|
||||
@@ -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');
|
||||
|
||||
@@ -15,7 +15,17 @@
|
||||
<div class="btn-toolbar pull-right">
|
||||
<?php if(common::hasPriv('jenkins', 'create')) common::printLink('jenkins', 'create', "", "<i class='icon icon-plus'></i> " . $lang->jenkins->create, '', "class='btn btn-primary'");?>
|
||||
</div>
|
||||
<?php if(empty($jenkinsList)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p>
|
||||
<span class="text-muted"><?php echo $lang->noData;?></span>
|
||||
<?php if(common::hasPriv('jenkins', 'create')):?>
|
||||
<?php echo html::a($this->createLink('jenkins', 'create'), "<i class='icon icon-plus'></i> " . $lang->jenkins->create, '', "class='btn btn-info'");?>
|
||||
<?php endif;?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div id='mainContent' class='main-row'>
|
||||
<form class='main-table' id='ajaxForm' method='post'>
|
||||
<table id='jenkinsList' class='table has-sort-head table-fixed'>
|
||||
@@ -49,4 +59,5 @@
|
||||
<?php endif; ?>
|
||||
</form>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.html.php'; ?>
|
||||
|
||||
@@ -672,6 +672,8 @@ class mailModel extends model
|
||||
*/
|
||||
public function sendmail($objectID, $actionID)
|
||||
{
|
||||
if(empty($objectID) or empty($actionID)) return;
|
||||
|
||||
/* Load module and get vars. */
|
||||
$this->loadModel('action');
|
||||
$users = $this->loadModel('user')->getPairs('noletter');
|
||||
|
||||
@@ -355,7 +355,7 @@ class my extends control
|
||||
$sort = $this->loadModel('common')->appendOrder($orderBy);
|
||||
$bugs = $this->loadModel('bug')->getUserBugs($this->app->user->account, $type, $sort, 0, $pager);
|
||||
$bugs = $this->bug->checkDelayedBugs($bugs);
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug');
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'myBug');
|
||||
|
||||
/* assign. */
|
||||
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->bug;
|
||||
|
||||
@@ -312,10 +312,11 @@ class product extends control
|
||||
* Create a product.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($programID = 0)
|
||||
public function create($programID = 0, $extra = '')
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
@@ -348,6 +349,9 @@ class product extends control
|
||||
}
|
||||
}
|
||||
|
||||
$extra = str_replace(array(',', ' '), array('&', ''), $extra);
|
||||
parse_str($extra, $output);
|
||||
|
||||
$this->loadModel('user');
|
||||
$poUsers = $this->user->getPairs('nodeleted|pofirst|noclosed', '', $this->config->maxCount);
|
||||
if(!empty($this->config->user->moreLink)) $this->config->moreLinks["PO"] = $this->config->user->moreLink;
|
||||
@@ -366,6 +370,7 @@ class product extends control
|
||||
|
||||
$this->view->title = $this->lang->product->create;
|
||||
$this->view->position[] = $this->view->title;
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('product', 'all') : '';
|
||||
$this->view->groups = $this->loadModel('group')->getPairs();
|
||||
$this->view->programID = $programID;
|
||||
$this->view->poUsers = $poUsers;
|
||||
@@ -1153,6 +1158,10 @@ class product extends control
|
||||
*/
|
||||
public function kanban()
|
||||
{
|
||||
$this->session->set('projectList', $this->app->getURI(true), 'project');
|
||||
$this->session->set('productPlanList', $this->app->getURI(true), 'product');
|
||||
$this->session->set('releaseList', $this->app->getURI(true), 'product');
|
||||
|
||||
$kanbanGroup = $this->product->getStats4Kanban();
|
||||
extract($kanbanGroup);
|
||||
|
||||
|
||||
@@ -104,6 +104,13 @@ $(function()
|
||||
{
|
||||
window.location.reload();
|
||||
})
|
||||
|
||||
/* 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();
|
||||
});
|
||||
|
||||
/**
|
||||
|
||||
@@ -845,7 +845,7 @@ class productModel extends model
|
||||
{
|
||||
$this->config->product->search['actionURL'] = $actionURL;
|
||||
$this->config->product->search['queryID'] = $queryID;
|
||||
$this->config->product->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs($productID);
|
||||
$this->config->product->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs(($this->app->tab == 'project' and empty($productID)) ? array_keys($products) : $productID);
|
||||
|
||||
$product = ($this->app->tab == 'project' and empty($productID)) ? $products : array($productID => $products[$productID]);
|
||||
$this->config->product->search['params']['product']['values'] = $product + array('all' => $this->lang->product->allProduct);
|
||||
@@ -958,13 +958,24 @@ class productModel extends model
|
||||
$emptyHour = array('totalEstimate' => 0, 'totalConsumed' => 0, 'totalLeft' => 0, 'progress' => 0);
|
||||
|
||||
/* Get all tasks and compute totalEstimate, totalConsumed, totalLeft, progress according to them. */
|
||||
$tasks = $this->dao->select('id, project, estimate, consumed, `left`, status, closedReason')
|
||||
->from(TABLE_TASK)
|
||||
->where('project')->in($projectKeys)
|
||||
->andWhere('parent')->lt(1)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchGroup('project', 'id');
|
||||
|
||||
if($this->config->systemMode == 'new')
|
||||
{
|
||||
$tasks = $this->dao->select('id, project, estimate, consumed, `left`, status, closedReason')
|
||||
->from(TABLE_TASK)
|
||||
->where('project')->in($projectKeys)
|
||||
->andWhere('parent')->lt(1)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchGroup('project', 'id');
|
||||
}
|
||||
else
|
||||
{
|
||||
$tasks = $this->dao->select('id, execution, estimate, consumed, `left`, status, closedReason')
|
||||
->from(TABLE_TASK)
|
||||
->where('execution')->in($projectKeys)
|
||||
->andWhere('parent')->lt(1)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchGroup('execution', 'id');
|
||||
}
|
||||
/* Compute totalEstimate, totalConsumed, totalLeft. */
|
||||
foreach($tasks as $projectID => $projectTasks)
|
||||
{
|
||||
@@ -1593,7 +1604,11 @@ class productModel extends model
|
||||
|
||||
$hourList = $this->loadModel('project')->computerProgress($latestExecutionList);
|
||||
|
||||
$releaseList = $this->dao->select('id,product,name,marker')->from(TABLE_RELEASE)->where('product')->in(array_keys($productList))->fetchGroup('product', 'id');
|
||||
$releaseList = $this->dao->select('id,product,name,marker')->from(TABLE_RELEASE)
|
||||
->where('product')->in(array_keys($productList))
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('status')->eq('normal')
|
||||
->fetchGroup('product', 'id');
|
||||
|
||||
return array('programList' => $programList, 'productList' => $productList, 'planList' => $planList, 'projectList' => $projectList, 'executionList' => $executionList, 'projectProduct' => $projectProduct, 'projectLatestExecutions' => $projectLatestExecutions, 'hourList' => $hourList, 'releaseList' => $releaseList);
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
<tr>
|
||||
<td colspan='3' 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>
|
||||
</tbody>
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
<?php
|
||||
if(common::hasPriv('execution', 'create', $plan))
|
||||
{
|
||||
$executionLink = $config->systemMode == 'new' ? '#projects' : $this->createLink('execution', 'create', "projectID=0&executionID=0©ExecutionID=0&plan=$plan->id");
|
||||
$executionLink = $config->systemMode == 'new' ? '#projects' : $this->createLink('execution', 'create', "projectID=0&executionID=0©ExecutionID=0&plan=$plan->id&confirm=no&productID=$productID");
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
echo html::a($executionLink, '<i class="icon-plus"></i>', '', "data-toggle='modal' data-id='$plan->id' onclick='getPlanID(this)' class='btn' title='{$lang->productplan->createExecution}'");
|
||||
|
||||
@@ -141,11 +141,12 @@ class program extends control
|
||||
/**
|
||||
* Create a program.
|
||||
*
|
||||
* @param int $parentProgramID
|
||||
* @param int $parentProgramID
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($parentProgramID = 0)
|
||||
public function create($parentProgramID = 0, $extra = '')
|
||||
{
|
||||
$parentProgram = $this->program->getByID($parentProgramID);
|
||||
|
||||
@@ -159,9 +160,13 @@ class program extends control
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse')));
|
||||
}
|
||||
|
||||
$extra = str_replace(array(',', ' '), array('&', ''), $extra);
|
||||
parse_str($extra, $output);
|
||||
|
||||
$this->view->title = $this->lang->program->create;
|
||||
$this->view->position[] = $this->lang->program->create;
|
||||
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('program', 'browse') : '';
|
||||
$this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst');
|
||||
$this->view->poUsers = $this->user->getPairs('noclosed|nodeleted|pofirst');
|
||||
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
|
||||
|
||||
@@ -121,7 +121,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>
|
||||
|
||||
@@ -337,10 +337,11 @@ class project extends control
|
||||
* @param string $model
|
||||
* @param int $programID
|
||||
* @param int $copyProjectID
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($model = 'scrum', $programID = 0, $copyProjectID = 0)
|
||||
public function create($model = 'scrum', $programID = 0, $copyProjectID = 0, $extra = '')
|
||||
{
|
||||
$this->loadModel('execution');
|
||||
|
||||
@@ -402,6 +403,9 @@ class project extends control
|
||||
if($this->app->tab == 'program') $this->loadModel('program')->setMenu($programID);
|
||||
$this->session->set('projectModel', $model);
|
||||
|
||||
$extra = str_replace(array(',', ' '), array('&', ''), $extra);
|
||||
parse_str($extra, $output);
|
||||
|
||||
$name = '';
|
||||
$code = '';
|
||||
$team = '';
|
||||
@@ -437,6 +441,7 @@ class project extends control
|
||||
$this->view->title = $this->lang->project->create;
|
||||
$this->view->position[] = $this->lang->project->create;
|
||||
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('project', 'browse') : '';
|
||||
$this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst');
|
||||
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
|
||||
$this->view->copyProjects = $this->project->getPairsByModel();
|
||||
|
||||
+30
-18
@@ -117,12 +117,13 @@ class projectModel extends model
|
||||
*/
|
||||
public function saveState($projectID = 0, $projects = array())
|
||||
{
|
||||
if($projectID > 0) $this->session->set('project', (int)$projectID);
|
||||
if($projectID == 0 and $this->cookie->lastProject) $this->session->set('project', (int)$this->cookie->lastProject);
|
||||
if($projectID == 0 and $this->session->project == '') $this->session->set('project', key($projects));
|
||||
if($projectID == 0 and $this->cookie->lastProject) $projectID = $this->cookie->lastProject;
|
||||
if($projectID == 0 and $this->session->project == '') $projectID = key($projects);
|
||||
$this->session->set('project', (int)$projectID, $this->app->tab);
|
||||
|
||||
if(!isset($projects[$this->session->project]))
|
||||
{
|
||||
$this->session->set('project', key($projects));
|
||||
$this->session->set('project', key($projects), $this->app->tab);
|
||||
if($projectID && strpos(",{$this->app->user->view->projects},", ",{$this->session->project},") === false) $this->accessDenied();
|
||||
}
|
||||
|
||||
@@ -814,6 +815,7 @@ class projectModel extends model
|
||||
->autoCheck()
|
||||
->batchcheck($requiredFields, 'notempty')
|
||||
->checkIF(!empty($project->code), 'code', 'unique', "type='project'")
|
||||
->checkIF($project->end != '', 'end', 'gt', $project->begin)
|
||||
->check('name', 'unique', "type='project' AND deleted='0'")
|
||||
->exec();
|
||||
|
||||
@@ -1027,6 +1029,14 @@ class projectModel extends model
|
||||
|
||||
if($oldProject->parent != $project->parent) $this->loadModel('program')->processNode($projectID, $project->parent, $oldProject->path, $oldProject->grade);
|
||||
|
||||
/* Fix whitelist changes. */
|
||||
$oldWhitelist = explode(',', $oldProject->whitelist) and $oldWhitelist = array_filter($oldWhitelist);
|
||||
$newWhitelist = explode(',', $project->whitelist) and $newWhitelist = array_filter($newWhitelist);
|
||||
if(count($oldWhitelist) == count($newWhitelist) and count(array_diff($oldWhitelist, $newWhitelist)) == 0) unset($project->whitelist);
|
||||
/* Add linkedproducts changes. */
|
||||
$oldProject->linkedProducts = implode(',', $linkedProducts);
|
||||
$project->linkedProducts = implode(',', $_POST['products']);
|
||||
|
||||
return common::createChanges($oldProject, $project);
|
||||
}
|
||||
}
|
||||
@@ -1519,18 +1529,19 @@ class projectModel extends model
|
||||
echo "<div class='progress-pie' data-doughnut-size='90' data-color='#3CB371' data-value='{$project->hours->progress}' data-width='24' data-height='24' data-back-color='#e8edf3'><div class='progress-info'>{$project->hours->progress}</div></div>";
|
||||
break;
|
||||
case 'actions':
|
||||
if($project->status == 'wait' || $project->status == 'suspended') common::printIcon('project', 'start', "projectID=$project->id", $project, 'list', 'play', '', 'iframe', true);
|
||||
if($project->status == 'doing') common::printIcon('project', 'close', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);
|
||||
if($project->status == 'closed') common::printIcon('project', 'activate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true);
|
||||
$moduleName = $this->config->systemMode == 'classic' ? "execution" : "project";
|
||||
if($project->status == 'wait' || $project->status == 'suspended') common::printIcon($moduleName, 'start', "projectID=$project->id", $project, 'list', 'play', '', 'iframe', true);
|
||||
if($project->status == 'doing') common::printIcon($moduleName, 'close', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);
|
||||
if($project->status == 'closed') common::printIcon($moduleName, 'activate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true);
|
||||
|
||||
if(common::hasPriv('project','suspend') || (common::hasPriv('project','close') && $project->status != 'doing') || (common::hasPriv('project','activate') && $project->status != 'closed'))
|
||||
if(common::hasPriv($moduleName, 'suspend') || (common::hasPriv($moduleName, 'close') && $project->status != 'doing') || (common::hasPriv($moduleName, 'activate') && $project->status != 'closed'))
|
||||
{
|
||||
echo "<div class='btn-group'>";
|
||||
echo "<button type='button' class='btn icon-caret-down dropdown-toggle' data-toggle='context-dropdown' title='{$this->lang->more}' style='width: 16px; padding-left: 0px; border-radius: 4px;'></button>";
|
||||
echo "<ul class='dropdown-menu pull-right text-center' role='menu' style='position: unset; min-width: auto; padding: 5px 6px;'>";
|
||||
common::printIcon('project', 'suspend', "projectID=$project->id", $project, 'list', 'pause', '', 'iframe btn-action', true);
|
||||
if($project->status != 'doing') common::printIcon('project', 'close', "projectID=$project->id", $project, 'list', 'off', '', 'iframe btn-action', true);
|
||||
if($project->status != 'closed') common::printIcon('project', 'activate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe btn-action', true);
|
||||
common::printIcon($moduleName, 'suspend', "projectID=$project->id", $project, 'list', 'pause', '', 'iframe btn-action', true);
|
||||
if($project->status != 'doing') common::printIcon($moduleName, 'close', "projectID=$project->id", $project, 'list', 'off', '', 'iframe btn-action', true);
|
||||
if($project->status != 'closed') common::printIcon($moduleName, 'activate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe btn-action', true);
|
||||
echo "</ul>";
|
||||
echo "</div>";
|
||||
}
|
||||
@@ -1538,18 +1549,19 @@ class projectModel extends model
|
||||
$from = $project->from == 'project' ? 'project' : 'pgmproject';
|
||||
$iframe = $this->app->tab == 'program' ? 'iframe' : '';
|
||||
$onlyBody = $this->app->tab == 'program' ? true : '';
|
||||
common::printIcon('project', 'edit', "projectID=$project->id", $project, 'list', 'edit', '', $iframe, $onlyBody, "data-app=project", '', $project->id);
|
||||
common::printIcon('project', 'manageMembers', "projectID=$project->id", $project, 'list', 'group', '', '', '', "data-app=project", $this->lang->execution->team, $project->id);
|
||||
if($this->config->systemMode == 'new') common::printIcon('project', 'group', "projectID=$project->id&programID=$programID", $project, 'list', 'lock', '', '', '', "data-app=project", '', $project->id);
|
||||
$dataApp = $this->config->systemMode == 'classic' ? "data-app=execution" : "data-app=project";
|
||||
common::printIcon($moduleName, 'edit', "projectID=$project->id", $project, 'list', 'edit', '', $iframe, $onlyBody, $dataApp, '', $project->id);
|
||||
common::printIcon($moduleName, 'manageMembers', "projectID=$project->id", $project, 'list', 'group', '', '', '', $dataApp, $this->lang->execution->team, $project->id);
|
||||
if($this->config->systemMode == 'new') common::printIcon('project', 'group', "projectID=$project->id&programID=$programID", $project, 'list', 'lock', '', '', '', $dataApp, '', $project->id);
|
||||
|
||||
if(common::hasPriv('project','manageProducts') || common::hasPriv('project', 'whitelist') || common::hasPriv('project', 'delete'))
|
||||
if(common::hasPriv($moduleName, 'manageProducts') || common::hasPriv($moduleName, 'whitelist') || common::hasPriv($moduleName, 'delete'))
|
||||
{
|
||||
echo "<div class='btn-group'>";
|
||||
echo "<button type='button' class='btn dropdown-toggle' data-toggle='context-dropdown' title='{$this->lang->more}'><i class='icon-more-alt'></i></button>";
|
||||
echo "<ul class='dropdown-menu pull-right text-center' role='menu'>";
|
||||
common::printIcon('project', 'manageProducts', "projectID=$project->id", $project, 'list', 'link', '', 'btn-action', '', "data-app=project", $this->lang->project->manageProducts, $project->id);
|
||||
if($this->config->systemMode == 'new') common::printIcon('project', 'whitelist', "projectID=$project->id&module=project&from=$from", $project, 'list', 'shield-check', '', 'btn-action', '', "data-app=project", '', $project->id);
|
||||
if(common::hasPriv('project','delete')) echo html::a(inLink("delete", "projectID=$project->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn btn-action' title='{$this->lang->project->delete}'");
|
||||
common::printIcon($moduleName, 'manageProducts', "projectID=$project->id", $project, 'list', 'link', '', 'btn-action', '', $dataApp, $this->lang->project->manageProducts, $project->id);
|
||||
if($this->config->systemMode == 'new') common::printIcon('project', 'whitelist', "projectID=$project->id&module=project&from=$from", $project, 'list', 'shield-check', '', 'btn-action', '', $dataApp, '', $project->id);
|
||||
if(common::hasPriv($moduleName, 'delete')) echo html::a(helper::createLink($moduleName, "delete", "projectID=$project->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn btn-action' title='{$this->lang->project->delete}'");
|
||||
echo "</ul>";
|
||||
echo "</div>";
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<?php echo html::a('#',"<i class='icon-cards-view'></i> ", '', "class='btn btn-icon text-primary' title='{$lang->project->bycard}' id='switchButton' data-type='bycard'");?>
|
||||
</div>
|
||||
<?php common::printLink('project', 'export', "status=$browseType&orderBy=$orderBy", "<i class='icon-export muted'> </i>" . $lang->export, '', "class='btn btn-link export'")?>
|
||||
<?php if(isset($this->config->maxVersion)):?>
|
||||
<?php if(isset($this->config->maxVersion) and !defined('TUTORIAL')):?>
|
||||
<?php common::printLink('project', 'createGuide', "programID=$programID", '<i class="icon icon-plus"></i> ' . $lang->project->create, '', 'class="btn btn-primary create-project-btn" data-toggle="modal" data-target="#guideDialog"');?>
|
||||
<?php else:?>
|
||||
<?php common::printLink('project', 'create', 'mode=scrum', '<i class="icon icon-plus"></i> ' . $lang->project->create, '', 'class="btn btn-primary create-project-btn"');?>
|
||||
@@ -85,7 +85,7 @@
|
||||
<div class="table-empty-tip">
|
||||
<p>
|
||||
<span class="text-muted"><?php echo $lang->project->empty;?></span>
|
||||
<?php if(isset($this->config->maxVersion)):?>
|
||||
<?php if(isset($this->config->maxVersion) and !defined('TUTORIAL')):?>
|
||||
<?php common::printLink('project', 'createGuide', "programID=$programID", '<i class="icon icon-plus"></i> ' . $lang->project->create, '', 'class="btn btn-info" data-toggle="modal" data-target="#guideDialog"');?>
|
||||
<?php elseif($this->config->systemMode == 'new'):?>
|
||||
<?php common::printLink('project', 'create', 'mode=scrum', '<i class="icon icon-plus"></i> ' . $lang->project->create, '', 'class="btn btn-info"');?>
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
<?php echo html::a('#',"<i class='icon-cards-view'></i> ", '', "class='btn btn-icon' title='{$lang->project->bycard}' id='switchButton' data-type='bycard'");?>
|
||||
</div>
|
||||
<?php common::printLink('project', 'export', "status=$browseType&orderBy=$orderBy", "<i class='icon-export muted'> </i>" . $lang->export, '', "class='btn btn-link export'")?>
|
||||
<?php if(isset($this->config->maxVersion)):?>
|
||||
<?php if(isset($this->config->maxVersion) and !defined('TUTORIAL')):?>
|
||||
<?php common::printLink('project', 'createGuide', "programID=$programID", '<i class="icon icon-plus"></i> ' . $lang->project->create, '', 'class="btn btn-primary create-project-btn" data-toggle="modal" data-target="#guideDialog"');?>
|
||||
<?php else:?>
|
||||
<?php common::printLink('project', 'create', "mode=scrum&programID=$programID", '<i class="icon icon-plus"></i> ' . $lang->project->create, '', 'class="btn btn-primary create-project-btn"');?>
|
||||
@@ -71,7 +71,7 @@
|
||||
<div class="table-empty-tip">
|
||||
<p>
|
||||
<span class="text-muted"><?php echo $lang->project->empty;?></span>
|
||||
<?php if(isset($this->config->maxVersion)):?>
|
||||
<?php if(isset($this->config->maxVersion) and !defined('TUTORIAL')):?>
|
||||
<?php common::printLink('project', 'createGuide', "programID=$programID", '<i class="icon icon-plus"></i> ' . $lang->project->create, '', 'class="btn btn-info" data-toggle="modal" data-target="#guideDialog"');?>
|
||||
<?php elseif($this->config->systemMode == 'new'):?>
|
||||
<?php common::printLink('project', 'create', "mode=scrum&programID=$programID", '<i class="icon icon-plus"></i> ' . $lang->project->create, '', 'class="btn btn-info"');?>
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
<?php
|
||||
echo html::hidden('model', $model);
|
||||
echo html::submitButton();
|
||||
echo html::backButton();
|
||||
echo $gobackLink ? html::a($gobackLink, $lang->goback, '', 'class="btn btn-wide"') : html::backButton();
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -301,6 +301,7 @@ class story extends control
|
||||
$this->view->position[] = html::a($this->createLink('product', 'browse', "product=$productID&branch=$branch"), $product->name);
|
||||
$this->view->position[] = $this->lang->story->common;
|
||||
$this->view->position[] = $this->lang->story->create;
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('product', 'browse', "productID=$productID") : '';
|
||||
$this->view->products = $products;
|
||||
$this->view->users = $users;
|
||||
$this->view->moduleID = $moduleID ? $moduleID : (int)$this->cookie->lastStoryModule;
|
||||
@@ -576,7 +577,7 @@ class story extends control
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
|
||||
$story = $this->dao->findById($storyID)->from(TABLE_STORY)->fetch();
|
||||
if(isset($this->post->reviewer)) $this->story->recordReviewAction($story);
|
||||
if(isset($_POST['reviewer'])) $this->story->recordReviewAction($story);
|
||||
}
|
||||
|
||||
$this->executeHooks($storyID);
|
||||
|
||||
@@ -1327,7 +1327,7 @@ class storyModel extends model
|
||||
$oldStory = $oldStories[$storyID];
|
||||
if($oldStory->status != 'draft' and $oldStory->status != 'changed') continue;
|
||||
if(!in_array($this->app->user->account, array_keys($reviewerList[$storyID]))) continue;
|
||||
if(isset($hasResult[$storyID])) continue;
|
||||
if(isset($hasResult[$storyID]) and $hasResult[$storyID]->version == $oldStories[$storyID]->version) continue;
|
||||
|
||||
$story = new stdClass();
|
||||
$story->reviewedDate = $now;
|
||||
|
||||
@@ -256,7 +256,7 @@
|
||||
<tr>
|
||||
<td colspan="5" class="text-center form-actions">
|
||||
<?php echo html::hidden('type', $type) . html::submitButton();?>
|
||||
<?php echo html::backButton();?>
|
||||
<?php echo $gobackLink ? html::a($gobackLink, $lang->goback, '', 'class="btn btn-wide"') : html::backButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
+20
-4
@@ -34,12 +34,15 @@ class task extends control
|
||||
* @param int $moduleID
|
||||
* @param int $taskID
|
||||
* @param int $todoID
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($executionID = 0, $storyID = 0, $moduleID = 0, $taskID = 0, $todoID = 0)
|
||||
public function create($executionID = 0, $storyID = 0, $moduleID = 0, $taskID = 0, $todoID = 0, $extra = '')
|
||||
{
|
||||
if(empty($this->app->user->view->sprints) and !$executionID) $this->locate($this->createLink('execution', 'create'));
|
||||
$extra = str_replace(array(',', ' '), array('&', ''), $extra);
|
||||
parse_str($extra, $output);
|
||||
|
||||
$executions = $this->execution->getPairs();
|
||||
$executionID = $this->execution->saveState($executionID, $executions);
|
||||
@@ -226,6 +229,7 @@ class task extends control
|
||||
|
||||
$this->view->title = $title;
|
||||
$this->view->position = $position;
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('execution', 'task', "executionID=$executionID") : '';
|
||||
$this->view->execution = $execution;
|
||||
$this->view->executions = $this->config->systemMode == 'classic' ? $executions : $this->execution->getByProject(0, 'all', 0, true);
|
||||
$this->view->task = $task;
|
||||
@@ -385,9 +389,9 @@ class task extends control
|
||||
$task = $this->task->getById($taskID);
|
||||
if($this->post->comment != '' or !empty($changes) or !empty($files))
|
||||
{
|
||||
$action = (!empty($changes) or !empty($files)) ? 'Edited' : 'Commented';
|
||||
$action = (!empty($changes) or !empty($files)) ? 'Edited' : 'Commented';
|
||||
$fileAction = !empty($files) ? $this->lang->addFiles . join(',', $files) . "\n" : '';
|
||||
$actionID = $this->action->create('task', $taskID, $action, $fileAction . $this->post->comment);
|
||||
$actionID = $this->action->create('task', $taskID, $action, $fileAction . $this->post->comment);
|
||||
if(!empty($changes)) $this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
|
||||
@@ -419,6 +423,18 @@ class task extends control
|
||||
$tasks = $this->task->getParentTaskPairs($this->view->execution->id, $this->view->task->parent);
|
||||
if(isset($tasks[$taskID])) unset($tasks[$taskID]);
|
||||
|
||||
if($this->config->systemMode == 'classic') $executionsPair = $this->execution->getPairs();
|
||||
else
|
||||
{
|
||||
$executionsPair = array();
|
||||
$executions = $this->execution->getByProject(0, 'all', 0);
|
||||
$projects = $this->project->getPairsByProgram(0, 'noclosed');
|
||||
foreach($executions as $executionId => $execution)
|
||||
{
|
||||
$executionsPair[$executionId] = (isset($projects[$execution->project]) ? $projects[$execution->project] . ' / ' : '') . $execution->name;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isset($this->view->members[$this->view->task->assignedTo])) $this->view->members[$this->view->task->assignedTo] = $this->view->task->assignedTo;
|
||||
if(isset($this->view->members['closed']) or $this->view->task->status == 'closed') $this->view->members['closed'] = 'Closed';
|
||||
|
||||
@@ -430,7 +446,7 @@ class task extends control
|
||||
$this->view->users = $this->loadModel('user')->getPairs('nodeleted', "{$this->view->task->openedBy},{$this->view->task->canceledBy},{$this->view->task->closedBy}");
|
||||
$this->view->showAllModule = isset($this->config->execution->task->allModule) ? $this->config->execution->task->allModule : '';
|
||||
$this->view->modules = $this->tree->getTaskOptionMenu($this->view->task->execution, 0, 0, $this->view->showAllModule ? 'allModule' : '');
|
||||
$this->view->executions = $this->config->systemMode == 'classic' ? $this->execution->getPairs() : $this->execution->getByProject(0, 'all', 0, true);
|
||||
$this->view->executions = $executionsPair;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
|
||||
@@ -848,8 +848,7 @@ class taskModel extends model
|
||||
$now = helper::now();
|
||||
$task = fixer::input('post')
|
||||
->setDefault('story, estimate, left, consumed', 0)
|
||||
->setDefault('estStarted', '0000-00-00')
|
||||
->setDefault('deadline', '0000-00-00')
|
||||
->setDefault('realStarted', '0000-00-00 00:00:00')
|
||||
->setIF(is_numeric($this->post->estimate), 'estimate', (float)$this->post->estimate)
|
||||
->setIF(is_numeric($this->post->consumed), 'consumed', (float)$this->post->consumed)
|
||||
->setIF(is_numeric($this->post->left), 'left', (float)$this->post->left)
|
||||
@@ -1922,7 +1921,7 @@ class taskModel extends model
|
||||
if($task->assignedTo == 'closed') $task->assignedToRealName = 'Closed';
|
||||
foreach($task as $key => $value)
|
||||
{
|
||||
if(strpos($key, 'Date') !== false and !(int)substr($value, 0, 4)) $task->$key = '';
|
||||
if((strpos($key, 'Date') !== false or strpos('estStarted|deadline', $key) !== false) and !(int)substr($value, 0, 4)) $task->$key = '';
|
||||
}
|
||||
$task->files = $this->loadModel('file')->getByObject('task', $taskID);
|
||||
|
||||
|
||||
@@ -248,7 +248,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>
|
||||
|
||||
@@ -176,11 +176,11 @@
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th class='thWidth'><?php echo $lang->task->estStarted;?></th>
|
||||
<td><?php echo html::input('estStarted', helper::isZeroDate($task->estStarted) ? '' : $task->estStarted, "class='form-control form-date'");?></td>
|
||||
<td><?php echo html::input('estStarted', $task->estStarted, "class='form-control form-date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->deadline;?></th>
|
||||
<td><?php echo html::input('deadline', helper::isZeroDate($task->deadline) ? '' : $task->deadline, "class='form-control form-date'");?></td>
|
||||
<td><?php echo html::input('deadline', $task->deadline, "class='form-control form-date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->estimate;?></th>
|
||||
@@ -211,7 +211,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->realStarted;?></th>
|
||||
<td><?php echo html::input('realStarted', helper::isZeroDate($task->realStarted) ? helper::now() : $task->realStarted, "class='form-control form-datetime'");?></td>
|
||||
<td><?php echo html::input('realStarted', helper::isZeroDate($task->realStarted) ? '' : $task->realStarted, "class='form-control form-datetime'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->finishedBy;?></th>
|
||||
|
||||
@@ -303,6 +303,9 @@ class testcase extends control
|
||||
$testcaseID = ($from and strpos('testcase|work|contribute', $from) !== false) ? $param : 0;
|
||||
$bugID = $from == 'bug' ? $param : 0;
|
||||
|
||||
$extras = str_replace(array(',', ' '), array('&', ''), $extras);
|
||||
parse_str($extras, $output);
|
||||
|
||||
$this->loadModel('story');
|
||||
if(!empty($_POST))
|
||||
{
|
||||
@@ -454,6 +457,7 @@ class testcase extends control
|
||||
$this->view->productName = $this->products[$productID];
|
||||
$this->view->moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'case', $startModuleID = 0, $branch);
|
||||
$this->view->currentModuleID = $currentModuleID ? $currentModuleID : (int)$this->cookie->lastCaseModule;
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('testcase', 'browse', "productID=$productID") : '';
|
||||
$this->view->stories = $stories;
|
||||
$this->view->caseTitle = $caseTitle;
|
||||
$this->view->color = $color;
|
||||
@@ -692,7 +696,7 @@ class testcase extends control
|
||||
$this->view->isLibCase = $isLibCase;
|
||||
$this->view->caseFails = $caseFails;
|
||||
|
||||
if(defined('RUN_MODE') && RUN_MODE == 'api') return $this->send(array('status' => 'success', 'case' => $case));
|
||||
if(defined('RUN_MODE') and RUN_MODE == 'api' and !empty($this->app->version)) return $this->send(array('status' => 'success', 'case' => $case));
|
||||
$this->display();
|
||||
}
|
||||
|
||||
|
||||
@@ -14,4 +14,11 @@ function confirmBatchDelete(actionLink)
|
||||
$(function()
|
||||
{
|
||||
if($('#caseList thead th.c-title').width() < 150) $('#caseList 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();
|
||||
});
|
||||
|
||||
@@ -233,7 +233,7 @@
|
||||
<tr>
|
||||
<td colspan='3' 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>
|
||||
</tfoot>
|
||||
|
||||
@@ -530,6 +530,9 @@ class testreport extends control
|
||||
$cases = $this->testreport->getTaskCases($tasks, $report->begin, $report->end);
|
||||
$bugInfo = $this->testreport->getBugInfo($tasks, $report->product, $report->begin, $report->end, $builds);
|
||||
|
||||
/* save session .*/
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'testcase', false);
|
||||
|
||||
if($report->objectType == 'testtask')
|
||||
{
|
||||
$this->setChartDatas($report->objectID);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php $sysURL = $this->session->notHead ? common::getSysURL() : '';?>
|
||||
<style>.c-date {width: 130px;}</style>
|
||||
<table class='table main-table' id='cases'>
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
@@ -168,7 +168,8 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='text-center form-actions'>
|
||||
<?php echo html::submitButton() . html::backButton();?>
|
||||
<?php echo html::submitButton();?>
|
||||
<?php if(!isonlybody()) echo html::a($this->createLink('my', 'todo', 'type=all'), $lang->goback, '', "class='btn btn-back btn-wide'");?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<?php
|
||||
if($this->session->todoList)
|
||||
{
|
||||
$browseLink = $this->session->todoList;
|
||||
$browseLink = empty($todo->deleted) ? $this->session->todoList : $this->createLink('action', 'trash');
|
||||
}
|
||||
elseif($todo->account == $app->user->account)
|
||||
{
|
||||
|
||||
@@ -194,7 +194,7 @@ $(function()
|
||||
}
|
||||
else
|
||||
{
|
||||
$e.parent().addClass('tooltip-tutorial').after("<div id='typeLabel' class='text-danger help-text'>" + options.title + "</div>");
|
||||
$e.parent().addClass('tooltip-tutorial').append("<div id='typeLabel' class='text-danger help-text'>" + options.title + "</div>");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ $lang->tutorial->tasks['createTask']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Create Task');
|
||||
$lang->tutorial->tasks['createTask']['desc'] = "<p>Task breakdown for a story: </p><ul><li data-target='nav'>Open <span class='task-nav'> Execution <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i> WBS;</span></li><li data-target='form'>Fill the form with task information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecutionTask'] = array('title' => '分解任务');
|
||||
$lang->tutorial->tasks['createExecutionTask'] = array('title' => 'Task Breakdown');
|
||||
$lang->tutorial->tasks['createExecutionTask']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecutionTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Create Task');
|
||||
$lang->tutorial->tasks['createExecutionTask']['desc'] = "<p>Task breakdown for a story: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i> WBS;</span></li><li data-target='form'>Fill the form with task information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
@@ -181,25 +181,22 @@ class upgrade extends control
|
||||
if($mode == 'new') $this->locate(inlink('mergeTips'));
|
||||
}
|
||||
|
||||
$title = $this->lang->upgrade->toPMS15Guide;
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', 'Max', $this->lang->upgrade->to15Desc);
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', $this->lang->maxName, $this->lang->upgrade->to15Desc);
|
||||
$title = $this->lang->upgrade->toMAXGuide;
|
||||
}
|
||||
elseif(isset($this->config->bizVersion))
|
||||
{
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', 'Biz5', $this->lang->upgrade->to15Desc);
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', $this->lang->bizName . '5', $this->lang->upgrade->to15Desc);
|
||||
$title = $this->lang->upgrade->toBIZ5Guide;
|
||||
}
|
||||
elseif(isset($this->config->proVersion))
|
||||
{
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', 'Pro10', $this->lang->upgrade->to15Desc);
|
||||
$this->lang->upgrade->to15Desc = str_replace('15', $this->lang->proName . '10', $this->lang->upgrade->to15Desc);
|
||||
$title = $this->lang->upgrade->toPRO10Guide;
|
||||
}
|
||||
else
|
||||
{
|
||||
$title = $this->lang->upgrade->toPMS15Guide;
|
||||
}
|
||||
|
||||
$this->view->title = $title;
|
||||
$this->display();
|
||||
|
||||
@@ -4547,7 +4547,6 @@ class upgradeModel extends model
|
||||
$this->dao->update(TABLE_BUG)->set('project')->eq($projectID)->where('product')->in($productIdList)->exec();
|
||||
$this->dao->update(TABLE_TESTREPORT)->set('project')->eq($projectID)->where('product')->in($productIdList)->exec();
|
||||
$this->dao->update(TABLE_TESTSUITE)->set('project')->eq($projectID)->where('product')->in($productIdList)->exec();
|
||||
$this->dao->update(TABLE_BUILD)->set('project')->eq($projectID)->where('product')->in($productIdList)->exec();
|
||||
|
||||
/* Project linked objects. */
|
||||
$this->dao->update(TABLE_TASK)->set('project')->eq($projectID)->where('execution')->in($sprintIdList)->exec();
|
||||
@@ -5299,7 +5298,7 @@ class upgradeModel extends model
|
||||
* Adjust for bug required field.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return bool
|
||||
*/
|
||||
public function adjustBugRequired()
|
||||
{
|
||||
@@ -5309,9 +5308,11 @@ class upgradeModel extends model
|
||||
->andWhere('section')->eq('create')
|
||||
->andWhere('`key`')->eq('requiredFields')
|
||||
->fetch();
|
||||
if(empty($data)) return true;
|
||||
|
||||
$data->value = ',' . $data->value . ',';
|
||||
$data->value = str_replace(',project,', ',', $data->value);
|
||||
$this->dao->update(TABLE_CONFIG)->set('`value`')->eq(trim($data->value, ','))->where('id')->eq($data->id)->exec();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<style>#imgCutter img{max-width: 97%;}</style>
|
||||
<script> /*! TangBin: image.ready.js http://www.planeart.cn/?p=1121 */ !function(n){"use strict";n.zui.imgReady=function(){var n=[],l=null,e=function(){for(var l=0;l<n.length;l++)n[l].end?n.splice(l--,1):n[l]();!n.length&&o()},o=function(){clearInterval(l),l=null};return function(o,r,t,u){var c,i,a,d,f,h=new Image;return h.src=o,h.complete?(r.call(h),void(t&&t.call(h))):(i=h.width,a=h.height,h.onerror=function(){u&&u.call(h),c.end=!0,h=h.onload=h.onerror=null},c=function(){d=h.width,f=h.height,(d!==i||f!==a||d*f>1024)&&(r.call(h),c.end=!0)},c(),h.onload=function(){!c.end&&c(),t&&t.call(h),h=h.onload=h.onerror=null},void(c.end||(n.push(c),null===l&&(l=setInterval(e,40)))))}}()}(jQuery); </script>
|
||||
<?php js::import($this->app->getWebRoot() . 'js/zui/imgcutter/min.js');?>
|
||||
<?php css::import($this->app->getWebRoot() . 'js/zui/imgcutter/min.css');?>
|
||||
|
||||
+2
-2
File diff suppressed because one or more lines are too long
@@ -72,3 +72,5 @@ a.showMoreImage:hover {opacity: 1;}
|
||||
#userNav .dropdown-menu .dropdown-submenu>ul {margin-right: 0px !important;}
|
||||
#userNav .create-list:hover:before {right: 21.5% !important;}
|
||||
#modules li>a, #modules ul>li>a {overflow: hidden; white-space: nowrap;}
|
||||
|
||||
.fixed-head-table{z-index:1000;}
|
||||
|
||||
Reference in New Issue
Block a user