Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -746,6 +746,42 @@ CREATE TABLE `zt_deploy` (
|
||||
`deleted` enum('0','1') NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
CREATE TABLE `zt_chart` (
|
||||
`id` mediumint NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`type` varchar(30) NOT NULL,
|
||||
`dataset` varchar(30) NOT NULL,
|
||||
`desc` mediumtext NOT NULL,
|
||||
`settings` mediumtext NOT NULL,
|
||||
`filters` mediumtext NOT NULL,
|
||||
`createdBy` char(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`deleted` tinyint NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
CREATE TABLE `zt_dashboard` (
|
||||
`id` mediumint(8) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`module` mediumint NOT NULL,
|
||||
`desc` mediumtext NOT NULL,
|
||||
`layout` mediumtext NOT NULL,
|
||||
`filters` mediumtext NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`deleted` tinyint NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
CREATE TABLE `zt_dataset` (
|
||||
`id` mediumint unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(155) NOT NULL,
|
||||
`sql` text NOT NULL,
|
||||
`fields` mediumtext NOT NULL,
|
||||
`objects` mediumtext NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`deleted` tinyint NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
CREATE TABLE `zt_deployproduct` (
|
||||
`deploy` mediumint(8) unsigned NOT NULL,
|
||||
`product` mediumint(8) unsigned NOT NULL,
|
||||
|
||||
+1
-1
@@ -6687,7 +6687,7 @@ CREATE TABLE IF NOT EXISTS `zt_relationoftasks` (
|
||||
`action` ENUM( 'begin', 'end' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `relationoftasks` (`execution`,`task`)
|
||||
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
|
||||
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
|
||||
REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(1,'execution','gantt'),
|
||||
(1,'execution','relation'),
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
<script>
|
||||
$('#assigntomeBlock>ul>li>a:not([href$="todo"]):not([href$="task"]:not[href$="feedback"])').parent().remove();
|
||||
</script>
|
||||
|
||||
@@ -51,6 +51,7 @@ else
|
||||
}
|
||||
|
||||
$lang->task->common = 'Task';
|
||||
$lang->dashboard = isset($lang->dashboard->common) ? $lang->dashboard->common : $lang->dashboard;
|
||||
|
||||
/* My menu. */
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
@@ -51,6 +51,7 @@ else
|
||||
}
|
||||
|
||||
$lang->task->common = 'Task';
|
||||
$lang->dashboard = isset($lang->dashboard->common) ? $lang->dashboard->common : $lang->dashboard;
|
||||
|
||||
/* My menu. */
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
@@ -51,6 +51,7 @@ else
|
||||
}
|
||||
|
||||
$lang->task->common = 'Task';
|
||||
$lang->dashboard = isset($lang->dashboard->common) ? $lang->dashboard->common : $lang->dashboard;
|
||||
|
||||
/* My menu. */
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
@@ -51,6 +51,7 @@ else
|
||||
}
|
||||
|
||||
$lang->task->common = '任务';
|
||||
$lang->dashboard = isset($lang->dashboard->common) ? $lang->dashboard->common : $lang->dashboard;
|
||||
|
||||
/* My menu. */
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
@@ -7,4 +7,4 @@ $config->task->datatable->fieldList['lane']['title'] = 'lane';
|
||||
$config->task->datatable->fieldList['lane']['fixed'] = 'no';
|
||||
$config->task->datatable->fieldList['lane']['width'] = '120';
|
||||
$config->task->datatable->fieldList['lane']['required'] = 'no';
|
||||
$config->task->datatable->fieldList['lane']['sort'] = 'no';
|
||||
$config->task->datatable->fieldList['lane']['sort'] = 'no';
|
||||
|
||||
+35
-25
@@ -393,62 +393,72 @@ class admin extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxChangeTableEngine($tableName)
|
||||
public function ajaxChangeTableEngine()
|
||||
{
|
||||
$response = array();
|
||||
$response['result'] = 'success';
|
||||
$response['message'] = '';
|
||||
$response['result'] = 'success';
|
||||
$response['message'] = '';
|
||||
$response['thisTable'] = '';
|
||||
$response['nextTable'] = '';
|
||||
|
||||
$tableEngines = $this->loadModel('misc')->getTableEngines();
|
||||
if(!isset($tableEngines[$tableName]))
|
||||
|
||||
$thisTable = '';
|
||||
$nextTable = '';
|
||||
foreach($tableEngines as $table => $engine)
|
||||
{
|
||||
$response['result'] = 'fail';
|
||||
return print(json_encode($response));
|
||||
if($engine == 'InnoDB') continue;
|
||||
if(strpos(",{$this->session->errorTables},", ",{$table},") !== false) continue;
|
||||
|
||||
if(stripos($table, 'searchindex') !== false)
|
||||
{
|
||||
$mysqlVersion = $this->loadModel('install')->getMysqlVersion();
|
||||
if($mysqlVersion < 5.6) continue;
|
||||
}
|
||||
|
||||
if($thisTable and empty($nextTable)) $nextTable = $table;
|
||||
if(empty($thisTable)) $thisTable = $table;
|
||||
if($thisTable and $nextTable) break;
|
||||
}
|
||||
|
||||
if($tableEngines[$tableName] == 'InnoDB')
|
||||
if(empty($thisTable))
|
||||
{
|
||||
$response['message'] = sprintf($this->lang->admin->changeSuccess, $tableName);
|
||||
unset($_SESSION['errorTables']);
|
||||
$response['result'] = 'finished';
|
||||
return print(json_encode($response));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
/* Check process this table or not. */
|
||||
$dbProcesses = $this->dao->query("SHOW PROCESSLIST")->fetchAll();
|
||||
$dbProcesses = $this->dbh->query("SHOW PROCESSLIST")->fetchAll();
|
||||
foreach($dbProcesses as $dbProcess)
|
||||
{
|
||||
if($dbProcess->db != $this->config->db->name) continue;
|
||||
if(strpos($dbProcess->Info, " {$tableName} ") !== false)
|
||||
if(strpos($dbProcess->Info, " {$thisTable} ") !== false)
|
||||
{
|
||||
$response['message'] = sprintf($this->lang->upgrade->changingTable, $tableName);
|
||||
$response['message'] = sprintf($this->lang->upgrade->changingTable, $thisTable);
|
||||
return print(json_encode($response));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(PDOException $e){}
|
||||
|
||||
if(stripos($tableName, 'searchindex') !== false)
|
||||
{
|
||||
$mysqlVersion = $this->loadModel('install')->getMysqlVersion();
|
||||
if($mysqlVersion < 5.6)
|
||||
{
|
||||
$response['result'] = 'fail';
|
||||
$response['message'] = $this->lang->admin->errorInnodb;
|
||||
return print(json_encode($response));
|
||||
}
|
||||
}
|
||||
$response['thisTable'] = $thisTable;
|
||||
$response['nextTable'] = $nextTable;
|
||||
|
||||
try
|
||||
{
|
||||
$sql = "ALTER TABLE `$tableName` ENGINE='InnoDB'";
|
||||
$this->dao->exec($sql);
|
||||
$response['message'] = sprintf($this->lang->admin->changeSuccess, $tableName);
|
||||
$sql = "ALTER TABLE `$thisTable` ENGINE='InnoDB'";
|
||||
$this->dbh->exec($sql);
|
||||
$response['message'] = sprintf($this->lang->admin->changeSuccess, $thisTable);
|
||||
}
|
||||
catch(PDOException $e)
|
||||
{
|
||||
$this->session->set('errorTables', $this->session->errorTables . ',' . $thisTable);
|
||||
|
||||
$response['result'] = 'fail';
|
||||
$response['message'] = sprintf($this->lang->admin->changeFail, $tableName, htmlspecialchars($e->getMessage()));
|
||||
$response['message'] = sprintf($this->lang->admin->changeFail, $thisTable, htmlspecialchars($e->getMessage()));
|
||||
}
|
||||
|
||||
return print(json_encode($response));
|
||||
|
||||
@@ -35,6 +35,7 @@ $lang->admin->changingTable = 'Replacing data table %s engine...';
|
||||
$lang->admin->changeSuccess = 'The data table %s engine has been changed to InnoDB.';
|
||||
$lang->admin->changeFail = "Failed to replace table %s engine. Reason: <span class='text-red'>%s</span>。";
|
||||
$lang->admin->errorInnodb = 'Your MySQL does not support InnoDB data table engine.';
|
||||
$lang->admin->changeFinished = "Database engine replacement completed.";
|
||||
$lang->admin->engineInfo = "The <strong>%s</strong> table engine is <strong>%s</strong>.";
|
||||
$lang->admin->engineSummary['hasMyISAM'] = "There are %s tables that are not InnoDB engines";
|
||||
$lang->admin->engineSummary['allInnoDB'] = "All tables are InnoDB engines";
|
||||
|
||||
@@ -35,6 +35,7 @@ $lang->admin->changingTable = 'Replacing data table %s engine...';
|
||||
$lang->admin->changeSuccess = 'The data table %s engine has been changed to InnoDB.';
|
||||
$lang->admin->changeFail = "Failed to replace table %s engine. Reason: <span class='text-red'>%s</span>。";
|
||||
$lang->admin->errorInnodb = 'Your MySQL does not support InnoDB data table engine.';
|
||||
$lang->admin->changeFinished = "Database engine replacement completed.";
|
||||
$lang->admin->engineInfo = "The <strong>%s</strong> table engine is <strong>%s</strong>.";
|
||||
$lang->admin->engineSummary['hasMyISAM'] = "There are %s tables that are not InnoDB engines";
|
||||
$lang->admin->engineSummary['allInnoDB'] = "All tables are InnoDB engines";
|
||||
|
||||
@@ -35,6 +35,7 @@ $lang->admin->changingTable = 'Replacing data table %s engine...';
|
||||
$lang->admin->changeSuccess = 'The data table %s engine has been changed to InnoDB.';
|
||||
$lang->admin->changeFail = "Failed to replace table %s engine. Reason: <span class='text-red'>%s</span>。";
|
||||
$lang->admin->errorInnodb = 'Your MySQL does not support InnoDB data table engine.';
|
||||
$lang->admin->changeFinished = "Database engine replacement completed.";
|
||||
$lang->admin->engineInfo = "The <strong>%s</strong> table engine is <strong>%s</strong>.";
|
||||
$lang->admin->engineSummary['hasMyISAM'] = "There are %s tables that are not InnoDB engines";
|
||||
$lang->admin->engineSummary['allInnoDB'] = "All tables are InnoDB engines";
|
||||
|
||||
@@ -35,6 +35,7 @@ $lang->admin->changingTable = '正在更换数据表%s引擎...';
|
||||
$lang->admin->changeSuccess = '已经更换数据表%s引擎为InnoDB。';
|
||||
$lang->admin->changeFail = "更换数据表%s引擎失败,原因:<span class='text-red'>%s</span>。";
|
||||
$lang->admin->errorInnodb = '您当前的数据库不支持使用InnoDB数据表引擎。';
|
||||
$lang->admin->changeFinished = "更换数据库引擎完毕。";
|
||||
$lang->admin->engineInfo = "表<strong>%s</strong>的引擎是<strong>%s</strong>。";
|
||||
$lang->admin->engineSummary['hasMyISAM'] = "有%s个表不是InnoDB引擎";
|
||||
$lang->admin->engineSummary['allInnoDB'] = "所有的表都是InnoDB引擎了";
|
||||
|
||||
@@ -36,7 +36,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<?php js::set('changingTable', $lang->admin->changingTable);?>
|
||||
<?php js::set('hasMyISAM', $lang->admin->engineSummary['hasMyISAM']);?>
|
||||
<script>
|
||||
var changeFails = 0;
|
||||
/**
|
||||
* Change all table engines.
|
||||
*
|
||||
@@ -45,34 +47,23 @@
|
||||
*/
|
||||
function changeAllEngines()
|
||||
{
|
||||
var tables = [];
|
||||
var $engineBox = $('#engineBox');
|
||||
$engineBox.find('li').each(function()
|
||||
{
|
||||
tables.push($(this).attr('data-table'));
|
||||
});
|
||||
|
||||
$('.btn.changeEngine').hide();
|
||||
$engineBox.empty();
|
||||
$.each(tables, function(_, table)
|
||||
{
|
||||
changeEngine(table);
|
||||
});
|
||||
|
||||
changeTableEngine();
|
||||
}
|
||||
|
||||
/**
|
||||
* Change one engine.
|
||||
* Ajax change table engine.
|
||||
*
|
||||
* @param string $table
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function changeEngine(table)
|
||||
function changeTableEngine()
|
||||
{
|
||||
var $engineBox = $('#engineBox');
|
||||
var link = createLink('admin', 'ajaxChangeTableEngine', 'table=' + table);
|
||||
|
||||
if($engineBox.find('[data-table=' + table + ']').length == 0) $engineBox.append("<div data-table='" + table + "'>" + changingTable.replace('%s', table) + "</div>");
|
||||
var link = createLink('admin', 'ajaxChangeTableEngine');
|
||||
$.ajax(
|
||||
{
|
||||
type: "GET",
|
||||
@@ -80,11 +71,33 @@ function changeEngine(table)
|
||||
success: function(response)
|
||||
{
|
||||
response = JSON.parse(response);
|
||||
$engineBox.find('[data-table=' + table + ']').html(response.message).addClass('text-success');
|
||||
if(response == null || response.result == 'finished')
|
||||
{
|
||||
$engineBox.append("<div class='text-success'><?php echo $lang->admin->changeFinished?></div>");
|
||||
$engineBox.append("<div class='btn btn-sm'><a href='javascript:location.reload()'><?php echo $lang->refresh;?></a></div>");
|
||||
if(changeFails == 0) $('#mainContent .main-header h2').html("<?php echo $lang->admin->engineSummary['allInnoDB']?>");
|
||||
if(changeFails != 0) $('#mainContent .main-header h2').html(hasMyISAM.replace('%s', changeFails));
|
||||
}
|
||||
else
|
||||
{
|
||||
table = response.thisTable;
|
||||
if($engineBox.find('[data-table=' + table + ']').length == 0) $engineBox.append("<li data-table='" + table + "'>" + changingTable.replace('%s', table) + "</li>");
|
||||
$engineBox.find('[data-table=' + table + ']').html(response.message);
|
||||
if(response.result == 'success') $engineBox.find('[data-table=' + table + ']').addClass('text-success');
|
||||
if(response.result == 'fail') $engineBox.find('[data-table=' + table + ']').addClass('text-warning');
|
||||
|
||||
nextTable = response.nextTable;
|
||||
if(nextTable && $engineBox.find('[data-table=' + nextTable + ']').length == 0) $engineBox.append("<li data-table='" + nextTable + "'>" + changingTable.replace('%s', nextTable) + "</li>");
|
||||
|
||||
if(response.result == 'fail') changeFails += 1;
|
||||
$(document).scrollTop($(document).height());
|
||||
|
||||
changeTableEngine();
|
||||
}
|
||||
},
|
||||
error: function()
|
||||
{
|
||||
changeEngine(table);
|
||||
changeTableEngine();
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -252,7 +252,7 @@ class build extends control
|
||||
->page($storyPager)
|
||||
->fetchAll('id');
|
||||
|
||||
$stages = $this->dao->select('*')->from(TABLE_STORYSTAGE)->where('story')->in($build->stories)->andWhere('branch')->eq($build->branch)->fetchPairs('story', 'stage');
|
||||
$stages = $this->dao->select('*')->from(TABLE_STORYSTAGE)->where('story')->in(array_keys($stories))->andWhere('branch')->eq($build->branch)->fetchPairs('story', 'stage');
|
||||
foreach($stages as $storyID => $stage) $stories[$storyID]->stage = $stage;
|
||||
|
||||
|
||||
|
||||
Vendored
-1
@@ -1,2 +1 @@
|
||||
.table table td,.outer .table table tbody > tr:last-child td {padding: 2px 0 2px 5px !important; border: none !important;}
|
||||
.c-pri{width: 70px;}
|
||||
|
||||
@@ -14,11 +14,12 @@ $datas = $datas->datas;
|
||||
?>
|
||||
<style>
|
||||
form{overflow-x: scroll}
|
||||
.c-pri, .c-estStarted, .c-deadline{width:100px;}
|
||||
thead > tr > th{width:150px;}
|
||||
.c-estimate {width:150px;}
|
||||
.c-story{width:150px;}
|
||||
.c-team {width:100px; padding:0px 0px 8px 0px !important;}
|
||||
.c-estimate-1 {width:50px;padding:0px 0px 8px 8px !important;}
|
||||
.c-step{width:400px;}
|
||||
.c-pri,.c-stage{width:150px}
|
||||
.c-precondition{width:200px;}
|
||||
</style>
|
||||
<?php if(!empty($suhosinInfo)):?>
|
||||
<div class='alert alert-info'><?php echo $suhosinInfo?></div>
|
||||
@@ -37,7 +38,11 @@ $(function()
|
||||
{
|
||||
if(parseInt($('#maxImport').val())) $('#times').html(Math.ceil(parseInt($('#allCount').html()) / parseInt($('#maxImport').val())));
|
||||
});
|
||||
$('#import').click(function(){location.href = createLink('caselib', 'showImport', "libID=<?php echo $libID;?>&pageID=1&maxImport=" + $('#maxImport').val())})
|
||||
$('#import').click(function()
|
||||
{
|
||||
$.cookie('maxImport', $('#maxImport').val());
|
||||
location.href = createLink('caselib', 'showImport', "libID=<?php echo $libID;?>&pageID=1&maxImport=" + $('#maxImport').val())
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php else:?>
|
||||
|
||||
@@ -320,6 +320,9 @@ $lang->execution->menu->task = array('link' => "{$lang->task->common}|execut
|
||||
$lang->execution->menu->kanban = array('link' => "$lang->executionKanban|execution|taskkanban|executionID=%s");
|
||||
$lang->execution->menu->burn = array('link' => "$lang->burn|execution|burn|executionID=%s");
|
||||
$lang->execution->menu->view = array('link' => "$lang->view|execution|grouptask|executionID=%s", 'alias' => 'grouptask,tree,taskeffort,gantt,calendar,relation,maintainrelation');
|
||||
|
||||
if($config->edition != 'open') $lang->execution->menu->view = array('link' => "$lang->view|execution|gantt|executionID=%s", 'alias' => 'grouptask,tree,taskeffort,gantt,calendar,relation,maintainrelation');
|
||||
|
||||
$lang->execution->menu->story = array('link' => "$lang->SRCommon|execution|story|executionID=%s", 'subModule' => 'story', 'alias' => 'batchcreate,linkstory,storykanban,batchtotask');
|
||||
$lang->execution->menu->qa = array('link' => "{$lang->qa->common}|execution|bug|executionID=%s", 'subModule' => 'bug,testcase,testtask,testreport', 'alias' => 'qa,bug,testcase,testtask,testreport');
|
||||
$lang->execution->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
|
||||
@@ -27,7 +27,5 @@ function submitForm(type)
|
||||
$('.modal-body #insert').val(type == 'insert' ? 1 : 0);
|
||||
$('#importNoticeModal .form-actions .btn').addClass('disabled');
|
||||
$("button[data-target='#importNoticeModal']").closest('form').submit();
|
||||
|
||||
setTimeout(function(){$('#importNoticeModal .form-actions .btn').removeClass('disabled');}, 1000);
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -479,7 +479,7 @@ class portModel extends model
|
||||
{
|
||||
$getParams = $this->session->{$model . 'PortParams'};
|
||||
|
||||
if($params)
|
||||
if($params and $getParams)
|
||||
{
|
||||
$params = explode('&', $params);
|
||||
foreach($params as $param => $value)
|
||||
@@ -642,6 +642,7 @@ class portModel extends model
|
||||
foreach($listFields as $field)
|
||||
{
|
||||
$listName = $field . 'List';
|
||||
if(!empty($_POST[$listName])) continue;
|
||||
if(!empty($fieldList[$field]))
|
||||
{
|
||||
$lists[$listName] = $fieldList[$field]['values'];
|
||||
@@ -901,6 +902,8 @@ class portModel extends model
|
||||
$result->isEndPage = $pagerID >= $result->allPager;
|
||||
$result->datas = $datas;
|
||||
|
||||
$this->session->set('insert', true);
|
||||
|
||||
foreach($datas as $data)
|
||||
{
|
||||
if(isset($data->id)) $this->session->set('insert', false);
|
||||
@@ -1302,7 +1305,7 @@ class portModel extends model
|
||||
elseif($field == 'estimate')
|
||||
{
|
||||
$html .= '<td>';
|
||||
if(is_array($object->estimate))
|
||||
if(!empty($object->estimate) and is_array($object->estimate))
|
||||
{
|
||||
$html .= "<table class='table-borderless'>";
|
||||
foreach($object->estimate as $account => $estimate)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script>
|
||||
|
||||
$('#showData > tbody').addClass('load-indicator loading');
|
||||
$.get(createLink('port', 'ajaxGetTbody','model=<?php echo $model;?>&lastID=0&pagerID=<?php echo $pagerID;?>'), function(data)
|
||||
{
|
||||
$('#showData > tbody').append(data);
|
||||
@@ -7,6 +7,7 @@ $.get(createLink('port', 'ajaxGetTbody','model=<?php echo $model;?>&lastID=0&pag
|
||||
$('#showData tbody').find('.picker-select').picker({chosenMode: true});
|
||||
$('.form-date').datetimepicker('update');
|
||||
$('.form-datetime').datetimepicker('update');
|
||||
$('#showData > tbody').removeClass('load-indicator loading');
|
||||
})
|
||||
|
||||
window.addEventListener('scroll', this.handleScroll);
|
||||
|
||||
@@ -18,11 +18,13 @@ $notEmptyRule = $this->session->notEmptyRule;
|
||||
form{overflow-x: scroll}
|
||||
#maxImport:focus {outline: none;}
|
||||
.pointorNone{pointer-events:none;}
|
||||
thead > tr > th{width:150px;}
|
||||
.c-pri{width:100px}
|
||||
#showData > thead > tr > th{width:150px;}
|
||||
.c-precondition{width:200px;}
|
||||
.c-id{width:50px}
|
||||
.c-team {width:100px; padding:0px 0px 8px 0px !important;}
|
||||
.c-estimate-1 {width:50px;padding:0px 0px 8px 8px !important;}
|
||||
.load-indicator{width: 100px; height: 500px;}
|
||||
</style>
|
||||
<?php if(!empty($suhosinInfo)):?>
|
||||
<div class='alert alert-info'><?php echo $suhosinInfo?></div>
|
||||
|
||||
@@ -33,6 +33,7 @@ $('#subNavbar').find('ul li').each(function()
|
||||
{
|
||||
var that = $(this);
|
||||
if(that.attr('data-id') != browseType) that.removeClass('active');
|
||||
if(that.attr('data-id') == 'gantt' && 'assignedTo' == browseType) that.addClass('active');
|
||||
});
|
||||
</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -94,7 +94,9 @@ form {display: block; margin-top: 0em; margin-block-end: 1em;}
|
||||
<div class='btn btn-link' id='ganttPris'>
|
||||
<strong><?php echo $lang->task->pri . " : "?></strong>
|
||||
<?php foreach($lang->execution->gantt->progressColor as $pri => $color):?>
|
||||
<?php if($pri <= 4):?>
|
||||
<span style="background:<?php echo $color?>"><?php echo $pri;?></span>
|
||||
<?php endif;?>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -143,14 +143,14 @@ class project extends control
|
||||
public function ajaxGetCopyProjects()
|
||||
{
|
||||
$data = fixer::input('post')->get();
|
||||
$projects = $this->dao->select('id, name')->from(TABLE_PROJECT)
|
||||
$projectPairs = $this->dao->select('id, name')->from(TABLE_PROJECT)
|
||||
->where('type')->eq('project')
|
||||
->andWhere('deleted')->eq(0)
|
||||
->andWhere('vision')->eq($this->config->vision)
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF(trim($data->name))->andWhere('name')->like("%$data->name%")->fi()
|
||||
->fetchPairs();
|
||||
|
||||
$projects = $this->project->getPairsByModel('', 0, '', array_keys($projectPairs));
|
||||
$html = empty($projects) ? "<div class='text-center'>{$this->lang->noData}</div>" : '';
|
||||
foreach($projects as $id => $name)
|
||||
{
|
||||
|
||||
@@ -238,7 +238,7 @@ class projectrelease extends control
|
||||
->page($storyPager)
|
||||
->fetchAll('id');
|
||||
|
||||
$stages = $this->dao->select('*')->from(TABLE_STORYSTAGE)->where('story')->in($release->stories)->andWhere('branch')->eq($release->branch)->fetchPairs('story', 'stage');
|
||||
$stages = $this->dao->select('*')->from(TABLE_STORYSTAGE)->where('story')->in(array_keys($stories))->andWhere('branch')->eq($release->branch)->fetchPairs('story', 'stage');
|
||||
foreach($stages as $storyID => $stage) $stories[$storyID]->stage = $stage;
|
||||
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
<th class='c-step'>
|
||||
<table class='w-p100 table-borderless'>
|
||||
<tr>
|
||||
<th class="no-padding"><?php echo $fields['stepDesc']['title']?></th>
|
||||
<th class="no-padding"><?php echo $fields['stepExpect']['title']?></th>
|
||||
<th><?php echo $fields['stepDesc']['title']?></th>
|
||||
<th><?php echo $fields['stepExpect']['title']?></th>
|
||||
</tr>
|
||||
</table>
|
||||
</th>
|
||||
|
||||
Regular → Executable
+40
-38
@@ -10,44 +10,46 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->tree = new stdclass();
|
||||
$lang->tree->common = 'Modul';
|
||||
$lang->tree->edit = 'Bearbeiten';
|
||||
$lang->tree->delete = 'Löschen';
|
||||
$lang->tree->browse = 'Allgemeine Module verwalten';
|
||||
$lang->tree->browseTask = 'Aufgaben Modul verwalten';
|
||||
$lang->tree->manage = 'Modul verwalten';
|
||||
$lang->tree->fix = 'Fix';
|
||||
$lang->tree->manageProduct = "Verwalte {$lang->productCommon}";
|
||||
$lang->tree->manageExecution = "Verwalte {$lang->executionCommon}";
|
||||
$lang->tree->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->tree->manageBug = 'Verwalte Bugs';
|
||||
$lang->tree->manageCase = 'Verwalte Fälle';
|
||||
$lang->tree->manageCaseLib = 'Verwalte Bibliothek';
|
||||
$lang->tree->manageCustomDoc = 'Verwalte Dokumente';
|
||||
$lang->tree->manageApiChild = 'Manage API Directory';
|
||||
$lang->tree->updateOrder = 'Sortierung';
|
||||
$lang->tree->manageChild = 'Verwalte Untermodul';
|
||||
$lang->tree->manageStoryChild = 'Verwalte Untermodul';
|
||||
$lang->tree->manageLineChild = 'Verwalte Produktlinie';
|
||||
$lang->tree->manageBugChild = 'Verwalte Bugs';
|
||||
$lang->tree->manageCaseChild = 'Verwalte Fälle';
|
||||
$lang->tree->manageCaselibChild = 'Verwalte Bibliothek';
|
||||
$lang->tree->manageTaskChild = "Verwalte {$lang->executionCommon}";
|
||||
$lang->tree->syncFromProduct = "Copy from Other {$lang->productCommon}s";
|
||||
$lang->tree->dragAndSort = "Ziehen und Sotieren";
|
||||
$lang->tree->sort = "Sortieren";
|
||||
$lang->tree->addChild = "Hinzufügen";
|
||||
$lang->tree->confirmDelete = 'Do you want to delete this module and its child modules?';
|
||||
$lang->tree->confirmDeleteMenu = 'Do you want to delete this menu and its child menus?';
|
||||
$lang->tree->confirmDelCategory = 'Möchten Sie diese Kategorie und ihre Kinderkategorien löschen?';
|
||||
$lang->tree->confirmDeleteLine = "Do you want to delete this {$lang->productCommon} line?";
|
||||
$lang->tree->confirmRoot = "Any changes to the {$lang->productCommon} will change the stories, bugs, cases of {$lang->productCommon} it belongs to, as well as the linkage of {$lang->executionCommon} and {$lang->productCommon}, which is dangerous. Do you want to change it?";
|
||||
$lang->tree->confirmRoot4Doc = "Any changes to the library will change the document of library it belongs to, which is dangerous. Do you want to change it?";
|
||||
$lang->tree->noSubmodule = "There are no copyable submodules under the current module!";
|
||||
$lang->tree->successSave = 'Saved.';
|
||||
$lang->tree->successFixed = 'Fixed.';
|
||||
$lang->tree->repeatName = 'The name "%s" exists!';
|
||||
$lang->tree->shouldNotBlank = 'Module name should not be blank!';
|
||||
$lang->tree->common = 'Modul';
|
||||
$lang->tree->edit = 'Bearbeiten';
|
||||
$lang->tree->delete = 'Löschen';
|
||||
$lang->tree->browse = 'Allgemeine Module verwalten';
|
||||
$lang->tree->browseTask = 'Aufgaben Modul verwalten';
|
||||
$lang->tree->manage = 'Modul verwalten';
|
||||
$lang->tree->fix = 'Fix';
|
||||
$lang->tree->manageProduct = "Verwalte {$lang->productCommon}";
|
||||
$lang->tree->manageExecution = "Verwalte {$lang->executionCommon}";
|
||||
$lang->tree->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->tree->manageBug = 'Verwalte Bugs';
|
||||
$lang->tree->manageCase = 'Verwalte Fälle';
|
||||
$lang->tree->manageCaseLib = 'Verwalte Bibliothek';
|
||||
$lang->tree->manageCustomDoc = 'Verwalte Dokumente';
|
||||
$lang->tree->manageApiChild = 'Manage API Directory';
|
||||
$lang->tree->updateOrder = 'Sortierung';
|
||||
$lang->tree->manageChild = 'Verwalte Untermodul';
|
||||
$lang->tree->manageStoryChild = 'Verwalte Untermodul';
|
||||
$lang->tree->manageLineChild = 'Verwalte Produktlinie';
|
||||
$lang->tree->manageBugChild = 'Verwalte Bugs';
|
||||
$lang->tree->manageCaseChild = 'Verwalte Fälle';
|
||||
$lang->tree->manageCaselibChild = 'Verwalte Bibliothek';
|
||||
$lang->tree->manageDashboard = 'Manage Dashboard Module';
|
||||
$lang->tree->manageDashboardChild = 'Manage Dashboard Child Module';
|
||||
$lang->tree->manageTaskChild = "Verwalte {$lang->executionCommon}";
|
||||
$lang->tree->syncFromProduct = "Copy from Other {$lang->productCommon}s";
|
||||
$lang->tree->dragAndSort = "Ziehen und Sotieren";
|
||||
$lang->tree->sort = "Sortieren";
|
||||
$lang->tree->addChild = "Hinzufügen";
|
||||
$lang->tree->confirmDelete = 'Do you want to delete this module and its child modules?';
|
||||
$lang->tree->confirmDeleteMenu = 'Do you want to delete this menu and its child menus?';
|
||||
$lang->tree->confirmDelCategory = 'Möchten Sie diese Kategorie und ihre Kinderkategorien löschen?';
|
||||
$lang->tree->confirmDeleteLine = "Do you want to delete this {$lang->productCommon} line?";
|
||||
$lang->tree->confirmRoot = "Any changes to the {$lang->productCommon} will change the stories, bugs, cases of {$lang->productCommon} it belongs to, as well as the linkage of {$lang->executionCommon} and {$lang->productCommon}, which is dangerous. Do you want to change it?";
|
||||
$lang->tree->confirmRoot4Doc = "Any changes to the library will change the document of library it belongs to, which is dangerous. Do you want to change it?";
|
||||
$lang->tree->noSubmodule = "There are no copyable submodules under the current module!";
|
||||
$lang->tree->successSave = 'Saved.';
|
||||
$lang->tree->successFixed = 'Fixed.';
|
||||
$lang->tree->repeatName = 'The name "%s" exists!';
|
||||
$lang->tree->shouldNotBlank = 'Module name should not be blank!';
|
||||
|
||||
$lang->tree->module = 'Modul';
|
||||
$lang->tree->name = 'Name';
|
||||
|
||||
Regular → Executable
+40
-38
@@ -10,44 +10,46 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->tree = new stdclass();
|
||||
$lang->tree->common = 'Module';
|
||||
$lang->tree->edit = 'Edit Module';
|
||||
$lang->tree->delete = 'Delete Module';
|
||||
$lang->tree->browse = 'Manage General Module';
|
||||
$lang->tree->browseTask = 'Manage Task Module';
|
||||
$lang->tree->manage = 'Manage Module';
|
||||
$lang->tree->fix = 'Fix Module';
|
||||
$lang->tree->manageProduct = "Manage {$lang->productCommon} Modules";
|
||||
$lang->tree->manageExecution = "Manage {$lang->execution->common} Modules";
|
||||
$lang->tree->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->tree->manageBug = 'Manage Bug';
|
||||
$lang->tree->manageCase = 'Manage Case';
|
||||
$lang->tree->manageCaseLib = 'Manage Library';
|
||||
$lang->tree->manageCustomDoc = 'Manage Document Library';
|
||||
$lang->tree->manageApiChild = 'Manage API Directory';
|
||||
$lang->tree->updateOrder = 'Rank Module';
|
||||
$lang->tree->manageChild = 'Manage Child Modules';
|
||||
$lang->tree->manageStoryChild = 'Manage Child Modules';
|
||||
$lang->tree->manageLineChild = "Manage {$lang->productCommon} Line";
|
||||
$lang->tree->manageBugChild = 'Manage Child Modules of Bugs';
|
||||
$lang->tree->manageCaseChild = 'Manage Child Cases';
|
||||
$lang->tree->manageCaselibChild = 'Manage Child Libraries';
|
||||
$lang->tree->manageTaskChild = "Manage Child {$lang->execution->common} Modules";
|
||||
$lang->tree->syncFromProduct = "Copy from Other {$lang->productCommon}s";
|
||||
$lang->tree->dragAndSort = "Drag to order";
|
||||
$lang->tree->sort = "Order";
|
||||
$lang->tree->addChild = "Add Child Module";
|
||||
$lang->tree->confirmDelete = 'Do you want to delete this module and its child modules?';
|
||||
$lang->tree->confirmDeleteMenu = 'Do you want to delete this menu and its child menus?';
|
||||
$lang->tree->confirmDelCategory = 'Do you want to delete this category and its child categories?';
|
||||
$lang->tree->confirmDeleteLine = "Do you want to delete this {$lang->productCommon} line?";
|
||||
$lang->tree->confirmRoot = "Any changes to the {$lang->productCommon} will change the stories, bugs, cases of {$lang->productCommon} it belongs to, as well as the linkage of {$lang->executionCommon} and {$lang->productCommon}, which is dangerous. Do you want to change it?";
|
||||
$lang->tree->confirmRoot4Doc = "Any changes to the library will change the document of library it belongs to, which is dangerous. Do you want to change it?";
|
||||
$lang->tree->noSubmodule = "There are no copyable submodules under the current module!";
|
||||
$lang->tree->successSave = 'Saved.';
|
||||
$lang->tree->successFixed = 'Fixed.';
|
||||
$lang->tree->repeatName = 'The name "%s" exists!';
|
||||
$lang->tree->shouldNotBlank = 'Module name should not be blank!';
|
||||
$lang->tree->common = 'Module';
|
||||
$lang->tree->edit = 'Edit Module';
|
||||
$lang->tree->delete = 'Delete Module';
|
||||
$lang->tree->browse = 'Manage General Module';
|
||||
$lang->tree->browseTask = 'Manage Task Module';
|
||||
$lang->tree->manage = 'Manage Module';
|
||||
$lang->tree->fix = 'Fix Module';
|
||||
$lang->tree->manageProduct = "Manage {$lang->productCommon} Modules";
|
||||
$lang->tree->manageExecution = "Manage {$lang->execution->common} Modules";
|
||||
$lang->tree->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->tree->manageBug = 'Manage Bug';
|
||||
$lang->tree->manageCase = 'Manage Case';
|
||||
$lang->tree->manageCaseLib = 'Manage Library';
|
||||
$lang->tree->manageCustomDoc = 'Manage Document Library';
|
||||
$lang->tree->manageApiChild = 'Manage API Directory';
|
||||
$lang->tree->updateOrder = 'Rank Module';
|
||||
$lang->tree->manageChild = 'Manage Child Modules';
|
||||
$lang->tree->manageStoryChild = 'Manage Child Modules';
|
||||
$lang->tree->manageLineChild = "Manage {$lang->productCommon} Line";
|
||||
$lang->tree->manageBugChild = 'Manage Child Modules of Bugs';
|
||||
$lang->tree->manageCaseChild = 'Manage Child Cases';
|
||||
$lang->tree->manageCaselibChild = 'Manage Child Libraries';
|
||||
$lang->tree->manageDashboard = 'Manage Dashboard Module';
|
||||
$lang->tree->manageDashboardChild = 'Manage Dashboard Child Module';
|
||||
$lang->tree->manageTaskChild = "Manage Child {$lang->execution->common} Modules";
|
||||
$lang->tree->syncFromProduct = "Copy from Other {$lang->productCommon}s";
|
||||
$lang->tree->dragAndSort = "Drag to order";
|
||||
$lang->tree->sort = "Order";
|
||||
$lang->tree->addChild = "Add Child Module";
|
||||
$lang->tree->confirmDelete = 'Do you want to delete this module and its child modules?';
|
||||
$lang->tree->confirmDeleteMenu = 'Do you want to delete this menu and its child menus?';
|
||||
$lang->tree->confirmDelCategory = 'Do you want to delete this category and its child categories?';
|
||||
$lang->tree->confirmDeleteLine = "Do you want to delete this {$lang->productCommon} line?";
|
||||
$lang->tree->confirmRoot = "Any changes to the {$lang->productCommon} will change the stories, bugs, cases of {$lang->productCommon} it belongs to, as well as the linkage of {$lang->executionCommon} and {$lang->productCommon}, which is dangerous. Do you want to change it?";
|
||||
$lang->tree->confirmRoot4Doc = "Any changes to the library will change the document of library it belongs to, which is dangerous. Do you want to change it?";
|
||||
$lang->tree->noSubmodule = "There are no copyable submodules under the current module!";
|
||||
$lang->tree->successSave = 'Saved.';
|
||||
$lang->tree->successFixed = 'Fixed.';
|
||||
$lang->tree->repeatName = 'The name "%s" exists!';
|
||||
$lang->tree->shouldNotBlank = 'Module name should not be blank!';
|
||||
|
||||
$lang->tree->module = 'Module';
|
||||
$lang->tree->name = 'Module Name';
|
||||
|
||||
Regular → Executable
+40
-38
@@ -10,44 +10,46 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->tree = new stdclass();
|
||||
$lang->tree->common = 'Module';
|
||||
$lang->tree->edit = 'Editer Module';
|
||||
$lang->tree->delete = 'Supprimer Module';
|
||||
$lang->tree->browse = 'Gérer les Modules Généraux';
|
||||
$lang->tree->browseTask = 'Gérer les Modules Tâche';
|
||||
$lang->tree->manage = 'Gérer les Modules';
|
||||
$lang->tree->fix = 'Corrigez Module';
|
||||
$lang->tree->manageProduct = "Gérer les Modules {$lang->productCommon}";
|
||||
$lang->tree->manageExecution = "Gérer les Modules {$lang->executionCommon}";
|
||||
$lang->tree->manageLine = 'Gérer Ligne Produit';
|
||||
$lang->tree->manageBug = 'Gérer Bugs';
|
||||
$lang->tree->manageCase = 'Gérer CasTests';
|
||||
$lang->tree->manageCaseLib = 'Gérer Librairie de recette';
|
||||
$lang->tree->manageCustomDoc = 'Gérer la librairie de Doc';
|
||||
$lang->tree->manageApiChild = 'Manage API Directory';
|
||||
$lang->tree->updateOrder = 'Rang Module';
|
||||
$lang->tree->manageChild = 'Gérer Sous-Module';
|
||||
$lang->tree->manageStoryChild = 'Gérer Sous-Module';
|
||||
$lang->tree->manageLineChild = 'Gérer Ligne Produit';
|
||||
$lang->tree->manageBugChild = 'Gérer Sous-Bugs';
|
||||
$lang->tree->manageCaseChild = 'Gérer Sous-CasTests';
|
||||
$lang->tree->manageCaselibChild = 'Gérer Sous-Librairies';
|
||||
$lang->tree->manageTaskChild = "Gérer Sous-Modules {$lang->executionCommon}";
|
||||
$lang->tree->syncFromProduct = "Copier d'un autre {$lang->productCommon}";
|
||||
$lang->tree->dragAndSort = "Faites glisser pour ordonner";
|
||||
$lang->tree->sort = "Ordonnez";
|
||||
$lang->tree->addChild = "Ajout Sous-Module";
|
||||
$lang->tree->confirmDelete = 'Voulez-vous supprimer ce module et tous ses sous-modules ?';
|
||||
$lang->tree->confirmDeleteMenu = 'Do you want to delete this menu and its child menus?';
|
||||
$lang->tree->confirmDelCategory = 'Voulez-vous supprimer cette catégorie et ses sous-catégories?';
|
||||
$lang->tree->confirmDeleteLine = 'Voulez-vous supprimer cette ligne de produit ?';
|
||||
$lang->tree->confirmRoot = "Les changements du {$lang->productCommon} vont impacter les stories, bugs, casTests du {$lang->productCommon} auquel ils appartiennent, ainsi que les associations de {$lang->executionCommon} et {$lang->productCommon}, ce qui est dangereux. Voulez-vous malgré tout effectuer le changement ?";
|
||||
$lang->tree->confirmRoot4Doc = "Toute modification apportée à la bibliothèque modifiera le document de la bibliothèque à laquelle elle appartient, ce qui est dangereux. Voulez-vous le changer ?";
|
||||
$lang->tree->noSubmodule = "There are no copyable submodules under the current module!";
|
||||
$lang->tree->successSave = 'Sauvé.';
|
||||
$lang->tree->successFixed = 'Corrigé.';
|
||||
$lang->tree->repeatName = 'Le nom "%s" existe déjà !';
|
||||
$lang->tree->shouldNotBlank = 'Module name should not be blank!';
|
||||
$lang->tree->common = 'Module';
|
||||
$lang->tree->edit = 'Editer Module';
|
||||
$lang->tree->delete = 'Supprimer Module';
|
||||
$lang->tree->browse = 'Gérer les Modules Généraux';
|
||||
$lang->tree->browseTask = 'Gérer les Modules Tâche';
|
||||
$lang->tree->manage = 'Gérer les Modules';
|
||||
$lang->tree->fix = 'Corrigez Module';
|
||||
$lang->tree->manageProduct = "Gérer les Modules {$lang->productCommon}";
|
||||
$lang->tree->manageExecution = "Gérer les Modules {$lang->executionCommon}";
|
||||
$lang->tree->manageLine = 'Gérer Ligne Produit';
|
||||
$lang->tree->manageBug = 'Gérer Bugs';
|
||||
$lang->tree->manageCase = 'Gérer CasTests';
|
||||
$lang->tree->manageCaseLib = 'Gérer Librairie de recette';
|
||||
$lang->tree->manageCustomDoc = 'Gérer la librairie de Doc';
|
||||
$lang->tree->manageApiChild = 'Manage API Directory';
|
||||
$lang->tree->updateOrder = 'Rang Module';
|
||||
$lang->tree->manageChild = 'Gérer Sous-Module';
|
||||
$lang->tree->manageStoryChild = 'Gérer Sous-Module';
|
||||
$lang->tree->manageLineChild = 'Gérer Ligne Produit';
|
||||
$lang->tree->manageBugChild = 'Gérer Sous-Bugs';
|
||||
$lang->tree->manageCaseChild = 'Gérer Sous-CasTests';
|
||||
$lang->tree->manageCaselibChild = 'Gérer Sous-Librairies';
|
||||
$lang->tree->manageDashboard = 'Manage Dashboard Module';
|
||||
$lang->tree->manageDashboardChild = 'Manage Dashboard Child Module';
|
||||
$lang->tree->manageTaskChild = "Gérer Sous-Modules {$lang->executionCommon}";
|
||||
$lang->tree->syncFromProduct = "Copier d'un autre {$lang->productCommon}";
|
||||
$lang->tree->dragAndSort = "Faites glisser pour ordonner";
|
||||
$lang->tree->sort = "Ordonnez";
|
||||
$lang->tree->addChild = "Ajout Sous-Module";
|
||||
$lang->tree->confirmDelete = 'Voulez-vous supprimer ce module et tous ses sous-modules ?';
|
||||
$lang->tree->confirmDeleteMenu = 'Do you want to delete this menu and its child menus?';
|
||||
$lang->tree->confirmDelCategory = 'Voulez-vous supprimer cette catégorie et ses sous-catégories?';
|
||||
$lang->tree->confirmDeleteLine = 'Voulez-vous supprimer cette ligne de produit ?';
|
||||
$lang->tree->confirmRoot = "Les changements du {$lang->productCommon} vont impacter les stories, bugs, casTests du {$lang->productCommon} auquel ils appartiennent, ainsi que les associations de {$lang->executionCommon} et {$lang->productCommon}, ce qui est dangereux. Voulez-vous malgré tout effectuer le changement ?";
|
||||
$lang->tree->confirmRoot4Doc = "Toute modification apportée à la bibliothèque modifiera le document de la bibliothèque à laquelle elle appartient, ce qui est dangereux. Voulez-vous le changer ?";
|
||||
$lang->tree->noSubmodule = "There are no copyable submodules under the current module!";
|
||||
$lang->tree->successSave = 'Sauvé.';
|
||||
$lang->tree->successFixed = 'Corrigé.';
|
||||
$lang->tree->repeatName = 'Le nom "%s" existe déjà !';
|
||||
$lang->tree->shouldNotBlank = 'Module name should not be blank!';
|
||||
|
||||
$lang->tree->module = 'Module';
|
||||
$lang->tree->name = 'Nom';
|
||||
|
||||
Regular → Executable
+38
-36
@@ -10,42 +10,44 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->tree = new stdclass();
|
||||
$lang->tree->common = 'Module';
|
||||
$lang->tree->edit = 'Sửa Module';
|
||||
$lang->tree->delete = 'Xóa Module';
|
||||
$lang->tree->browse = 'Quản lý module chung';
|
||||
$lang->tree->browseTask = 'Quản lý Module nhiệm vụ';
|
||||
$lang->tree->manage = 'Quản lý Module';
|
||||
$lang->tree->fix = 'Sửa Module';
|
||||
$lang->tree->manageProduct = "Quản lý module {$lang->productCommon}";
|
||||
$lang->tree->manageExecution = "Quản lý module {$lang->executionCommon}";
|
||||
$lang->tree->manageLine = "Quản lý dòng {$lang->productCommon}";
|
||||
$lang->tree->manageBug = 'Quản lý Bug';
|
||||
$lang->tree->manageCase = 'Quản lý tình huống';
|
||||
$lang->tree->manageCaseLib = 'Quản lý thư viện';
|
||||
$lang->tree->manageCustomDoc = 'Quản lý thư viện tài liệu';
|
||||
$lang->tree->updateOrder = 'Đánh giá Module';
|
||||
$lang->tree->manageChild = 'Quản lý module con';
|
||||
$lang->tree->manageStoryChild = 'Quản lý module con';
|
||||
$lang->tree->manageLineChild = "Quản lý dòng {$lang->productCommon}";
|
||||
$lang->tree->manageBugChild = 'Quản lý Bugs con';
|
||||
$lang->tree->manageCaseChild = 'Quản lý tình huống con';
|
||||
$lang->tree->manageCaselibChild = 'Quản lý thư viện con';
|
||||
$lang->tree->manageTaskChild = "Quản lý module {$lang->executionCommon} con";
|
||||
$lang->tree->syncFromProduct = "Sao chép từ {$lang->productCommon} khác";
|
||||
$lang->tree->dragAndSort = "Drag để sắp xếp";
|
||||
$lang->tree->sort = "Thứ tự";
|
||||
$lang->tree->addChild = "Thêm Module con";
|
||||
$lang->tree->confirmDelete = 'Bạn có muốn xóa module này và module con của nó?';
|
||||
$lang->tree->confirmDeleteMenu = 'Do you want to delete this menu and its child menus?';
|
||||
$lang->tree->confirmDelCategory = 'Bạn có muốn xoá hạng mục này và loại con của nó không?';
|
||||
$lang->tree->confirmDeleteLine = "Bạn có muốn xóa dòng {$lang->productCommon} này không?";
|
||||
$lang->tree->confirmRoot = "Mọi sự thay đổi tới {$lang->productCommon} này sẽ thay đổi the câu chuyện, bugs, tình huống của {$lang->productCommon} nó sở hữu, cũng như liên kết của {$lang->executionCommon} và {$lang->productCommon}, điều này nguy hiểm. Bạn có muốn thay đổi nó?";
|
||||
$lang->tree->confirmRoot4Doc = "Mọi sự thay đổi tới thư viện này sẽ thay đổi thư viện tài liệu nó sở hữu, điều này nguy hiểm. Bạn có muốn thay đổi nó?";
|
||||
$lang->tree->successSave = 'Đã lưu.';
|
||||
$lang->tree->successFixed = 'Đã sửa';
|
||||
$lang->tree->repeatName = 'Tên "%s" đã tồn tại!';
|
||||
$lang->tree->shouldNotBlank = 'Module name should not be blank!';
|
||||
$lang->tree->common = 'Module';
|
||||
$lang->tree->edit = 'Sửa Module';
|
||||
$lang->tree->delete = 'Xóa Module';
|
||||
$lang->tree->browse = 'Quản lý module chung';
|
||||
$lang->tree->browseTask = 'Quản lý Module nhiệm vụ';
|
||||
$lang->tree->manage = 'Quản lý Module';
|
||||
$lang->tree->fix = 'Sửa Module';
|
||||
$lang->tree->manageProduct = "Quản lý module {$lang->productCommon}";
|
||||
$lang->tree->manageExecution = "Quản lý module {$lang->executionCommon}";
|
||||
$lang->tree->manageLine = "Quản lý dòng {$lang->productCommon}";
|
||||
$lang->tree->manageBug = 'Quản lý Bug';
|
||||
$lang->tree->manageCase = 'Quản lý tình huống';
|
||||
$lang->tree->manageCaseLib = 'Quản lý thư viện';
|
||||
$lang->tree->manageCustomDoc = 'Quản lý thư viện tài liệu';
|
||||
$lang->tree->updateOrder = 'Đánh giá Module';
|
||||
$lang->tree->manageChild = 'Quản lý module con';
|
||||
$lang->tree->manageStoryChild = 'Quản lý module con';
|
||||
$lang->tree->manageLineChild = "Quản lý dòng {$lang->productCommon}";
|
||||
$lang->tree->manageBugChild = 'Quản lý Bugs con';
|
||||
$lang->tree->manageCaseChild = 'Quản lý tình huống con';
|
||||
$lang->tree->manageCaselibChild = 'Quản lý thư viện con';
|
||||
$lang->tree->manageDashboard = 'Manage Dashboard Module';
|
||||
$lang->tree->manageDashboardChild = 'Manage Dashboard Child Module';
|
||||
$lang->tree->manageTaskChild = "Quản lý module {$lang->executionCommon} con";
|
||||
$lang->tree->syncFromProduct = "Sao chép từ {$lang->productCommon} khác";
|
||||
$lang->tree->dragAndSort = "Drag để sắp xếp";
|
||||
$lang->tree->sort = "Thứ tự";
|
||||
$lang->tree->addChild = "Thêm Module con";
|
||||
$lang->tree->confirmDelete = 'Bạn có muốn xóa module này và module con của nó?';
|
||||
$lang->tree->confirmDeleteMenu = 'Do you want to delete this menu and its child menus?';
|
||||
$lang->tree->confirmDelCategory = 'Bạn có muốn xoá hạng mục này và loại con của nó không?';
|
||||
$lang->tree->confirmDeleteLine = "Bạn có muốn xóa dòng {$lang->productCommon} này không?";
|
||||
$lang->tree->confirmRoot = "Mọi sự thay đổi tới {$lang->productCommon} này sẽ thay đổi the câu chuyện, bugs, tình huống của {$lang->productCommon} nó sở hữu, cũng như liên kết của {$lang->executionCommon} và {$lang->productCommon}, điều này nguy hiểm. Bạn có muốn thay đổi nó?";
|
||||
$lang->tree->confirmRoot4Doc = "Mọi sự thay đổi tới thư viện này sẽ thay đổi thư viện tài liệu nó sở hữu, điều này nguy hiểm. Bạn có muốn thay đổi nó?";
|
||||
$lang->tree->successSave = 'Đã lưu.';
|
||||
$lang->tree->successFixed = 'Đã sửa';
|
||||
$lang->tree->repeatName = 'Tên "%s" đã tồn tại!';
|
||||
$lang->tree->shouldNotBlank = 'Module name should not be blank!';
|
||||
|
||||
$lang->tree->module = 'Module';
|
||||
$lang->tree->name = 'Tên';
|
||||
|
||||
Regular → Executable
+41
-39
@@ -9,45 +9,47 @@
|
||||
* @version $Id: zh-cn.php 4836 2013-06-19 05:39:40Z zhujinyonging@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->tree = new stdclass();
|
||||
$lang->tree->common = '模块维护';
|
||||
$lang->tree->edit = '编辑模块';
|
||||
$lang->tree->delete = '删除模块';
|
||||
$lang->tree->browse = '通用模块维护';
|
||||
$lang->tree->browseTask = '任务模块维护';
|
||||
$lang->tree->manage = '维护模块';
|
||||
$lang->tree->fix = '修正数据';
|
||||
$lang->tree->manageProduct = "维护{$lang->productCommon}视图模块";
|
||||
$lang->tree->manageExecution = "维护{$lang->execution->common}视图模块";
|
||||
$lang->tree->manageLine = "维护{$lang->productCommon}线";
|
||||
$lang->tree->manageBug = '维护测试视图模块';
|
||||
$lang->tree->manageCase = '维护用例视图模块';
|
||||
$lang->tree->manageCaseLib = '维护用例库模块';
|
||||
$lang->tree->manageCustomDoc = '维护文档库分类';
|
||||
$lang->tree->manageApiChild = '维护接口库目录';
|
||||
$lang->tree->updateOrder = '更新排序';
|
||||
$lang->tree->manageChild = '维护子模块';
|
||||
$lang->tree->manageStoryChild = '维护子模块';
|
||||
$lang->tree->manageLineChild = "维护{$lang->productCommon}线";
|
||||
$lang->tree->manageBugChild = '维护Bug子模块';
|
||||
$lang->tree->manageCaseChild = '维护用例子模块';
|
||||
$lang->tree->manageCaselibChild = '维护用例库子模块';
|
||||
$lang->tree->manageTaskChild = "维护{$lang->execution->common}子模块";
|
||||
$lang->tree->syncFromProduct = '复制模块';
|
||||
$lang->tree->dragAndSort = "拖放排序";
|
||||
$lang->tree->sort = "排序";
|
||||
$lang->tree->addChild = "增加子模块";
|
||||
$lang->tree->confirmDelete = '该模块及其子模块都会被删除,您确定删除吗?';
|
||||
$lang->tree->confirmDeleteMenu = '该目录及其子目录都会被删除,您确定删除吗?';
|
||||
$lang->tree->confirmDelCategory = '该分类及其子分类都会被删除,您确定删除吗?';
|
||||
$lang->tree->confirmDeleteLine = "您确定删除该{$lang->productCommon}线吗?";
|
||||
$lang->tree->confirmRoot = "模块的所属{$lang->productCommon}修改,会关联修改该模块下的{$lang->SRCommon}、Bug、用例的所属{$lang->productCommon},以及{$lang->executionCommon}和{$lang->productCommon}的关联关系。该操作比较危险,请谨慎操作。是否确认修改?";
|
||||
$lang->tree->confirmRoot4Doc = "修改所属文档库,会同时修改该分类下文档的关联关系。该操作比较危险,请谨慎操作。是否确认修改?";
|
||||
$lang->tree->noSubmodule = "当前模块下没有可复制的子模块!";
|
||||
$lang->tree->successSave = '成功保存';
|
||||
$lang->tree->successFixed = '成功修正数据!';
|
||||
$lang->tree->repeatName = '模块名“%s”已经存在!';
|
||||
$lang->tree->shouldNotBlank = '模块名不能为空格!';
|
||||
$lang->tree = new stdclass();
|
||||
$lang->tree->common = '模块维护';
|
||||
$lang->tree->edit = '编辑模块';
|
||||
$lang->tree->delete = '删除模块';
|
||||
$lang->tree->browse = '通用模块维护';
|
||||
$lang->tree->browseTask = '任务模块维护';
|
||||
$lang->tree->manage = '维护模块';
|
||||
$lang->tree->fix = '修正数据';
|
||||
$lang->tree->manageProduct = "维护{$lang->productCommon}视图模块";
|
||||
$lang->tree->manageExecution = "维护{$lang->execution->common}视图模块";
|
||||
$lang->tree->manageLine = "维护{$lang->productCommon}线";
|
||||
$lang->tree->manageBug = '维护测试视图模块';
|
||||
$lang->tree->manageCase = '维护用例视图模块';
|
||||
$lang->tree->manageCaseLib = '维护用例库模块';
|
||||
$lang->tree->manageCustomDoc = '维护文档库分类';
|
||||
$lang->tree->manageApiChild = '维护接口库目录';
|
||||
$lang->tree->updateOrder = '更新排序';
|
||||
$lang->tree->manageChild = '维护子模块';
|
||||
$lang->tree->manageStoryChild = '维护子模块';
|
||||
$lang->tree->manageLineChild = "维护{$lang->productCommon}线";
|
||||
$lang->tree->manageBugChild = '维护Bug子模块';
|
||||
$lang->tree->manageCaseChild = '维护用例子模块';
|
||||
$lang->tree->manageCaselibChild = '维护用例库子模块';
|
||||
$lang->tree->manageDashboard = '维护仪表盘模块';
|
||||
$lang->tree->manageDashboardChild = '维护仪表盘子模块';
|
||||
$lang->tree->manageTaskChild = "维护{$lang->execution->common}子模块";
|
||||
$lang->tree->syncFromProduct = '复制模块';
|
||||
$lang->tree->dragAndSort = "拖放排序";
|
||||
$lang->tree->sort = "排序";
|
||||
$lang->tree->addChild = "增加子模块";
|
||||
$lang->tree->confirmDelete = '该模块及其子模块都会被删除,您确定删除吗?';
|
||||
$lang->tree->confirmDeleteMenu = '该目录及其子目录都会被删除,您确定删除吗?';
|
||||
$lang->tree->confirmDelCategory = '该分类及其子分类都会被删除,您确定删除吗?';
|
||||
$lang->tree->confirmDeleteLine = "您确定删除该{$lang->productCommon}线吗?";
|
||||
$lang->tree->confirmRoot = "模块的所属{$lang->productCommon}修改,会关联修改该模块下的{$lang->SRCommon}、Bug、用例的所属{$lang->productCommon},以及{$lang->executionCommon}和{$lang->productCommon}的关联关系。该操作比较危险,请谨慎操作。是否确认修改?";
|
||||
$lang->tree->confirmRoot4Doc = "修改所属文档库,会同时修改该分类下文档的关联关系。该操作比较危险,请谨慎操作。是否确认修改?";
|
||||
$lang->tree->noSubmodule = "当前模块下没有可复制的子模块!";
|
||||
$lang->tree->successSave = '成功保存';
|
||||
$lang->tree->successFixed = '成功修正数据!';
|
||||
$lang->tree->repeatName = '模块名“%s”已经存在!';
|
||||
$lang->tree->shouldNotBlank = '模块名不能为空格!';
|
||||
|
||||
$lang->tree->module = '模块';
|
||||
$lang->tree->name = '模块名称';
|
||||
|
||||
Regular → Executable
@@ -354,7 +354,6 @@ $config->delete['17_2'][] = 'extension/lite/workflow/ext/view/flowchart.flow.htm
|
||||
$config->delete['17_2'][] = 'extension/lite/workflow/ext/view/release.flow.html.hook.php';
|
||||
$config->delete['17_2'][] = 'extension/lite/workflow/ext/view/setcss.flow.html.hook.php';
|
||||
$config->delete['17_2'][] = 'extension/lite/workflow/ext/view/setjs.flow.html.hook.php';
|
||||
$config->delete['17_2'][] = 'extension/lite/workflow/ext/view/ui.flow.html.hook.php';
|
||||
$config->delete['17_2'][] = 'extension/lite/workflowaction/ext/view/browse.flow.html.hook.php';
|
||||
$config->delete['17_2'][] = 'extension/lite/workflowaction/ext/view/edit.flow.html.hook.php';
|
||||
$config->delete['17_2'][] = 'extension/lite/workflowaction/ext/view/setnotice.flow.html.hook.php';
|
||||
|
||||
@@ -70,4 +70,4 @@
|
||||
.card.ad > .card-reveal {color: #333;}
|
||||
.card.ad > .card-reveal li {line-height: 1.5; font-size: 12px;}
|
||||
|
||||
.result-box {height: 400px; position: fixed; left: 50%; top: 50%; margin-left: -400px; margin-top: -200px;}
|
||||
.result-box {min-height: 400px; position: fixed; left: 50%; top: 50%; margin-left: -400px; margin-top: -200px;}
|
||||
|
||||
@@ -681,13 +681,13 @@ class upgradeModel extends model
|
||||
case 'biz6_4':
|
||||
$this->importLiteModules();
|
||||
break;
|
||||
case 'biz7.0.beta1':
|
||||
case 'biz7_0_beta1':
|
||||
$this->processViewFields();
|
||||
break;
|
||||
case 'biz7.0':
|
||||
case 'biz7_0':
|
||||
$this->processFlowPosition();
|
||||
break;
|
||||
case 'biz7.4':
|
||||
case 'biz7_4':
|
||||
$this->processCreatedInfo();
|
||||
$this->processCreatedBy();
|
||||
$this->updateApproval();
|
||||
|
||||
Reference in New Issue
Block a user