Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
@@ -268,13 +268,13 @@ class router extends baseRouter
|
||||
public function setControlFile($exitIfNone = true)
|
||||
{
|
||||
/* If the module and method is defined in workflow, run workflow engine. */
|
||||
if(defined('TABLE_WORKFLOW'))
|
||||
if(defined('TABLE_WORKFLOW') && defined('TABLE_WORKFLOWACTION'))
|
||||
{
|
||||
$flow = $this->dbh->query("SELECT * FROM " . TABLE_WORKFLOW . " WHERE `module` = '$this->moduleName'")->fetch();
|
||||
if($flow)
|
||||
{
|
||||
$action = $this->dbh->query("SELECT * FROM " . TABLE_WORKFLOWACTION . " WHERE `module` = '$this->moduleName' AND `action` = '$this->methodName'")->fetch();
|
||||
if($action)
|
||||
if(zget($action, 'extensionType') == 'override')
|
||||
{
|
||||
$this->workflowModule = $this->moduleName;
|
||||
$this->workflowMethod = $this->methodName;
|
||||
|
||||
@@ -3,7 +3,7 @@ $lang->backup->common = 'Backup';
|
||||
$lang->backup->index = 'Home';
|
||||
$lang->backup->history = 'History';
|
||||
$lang->backup->delete = 'Delete';
|
||||
$lang->backup->backup = 'Back Up';
|
||||
$lang->backup->backup = 'BackUp';
|
||||
$lang->backup->restore = 'Restore';
|
||||
$lang->backup->change = 'Edit Expiration';
|
||||
$lang->backup->changeAB = 'Edit';
|
||||
|
||||
@@ -97,6 +97,7 @@ $lang->custom->notice->invalidNumberKey = 'The key should be =< 255.';
|
||||
$lang->custom->notice->invalidStringKey = 'The key should be a combination of lowercase letters, numbers or underlines.';
|
||||
$lang->custom->notice->cannotSetTimezone = 'date_default_timezone_set does not exist or is disabled. Timezone cannot be set.';
|
||||
$lang->custom->notice->noClosedBlock = 'You have no blocks that are closed permanently.';
|
||||
$lang->custom->notice->required = 'The selected field is required.';
|
||||
|
||||
$lang->custom->notice->indexPage['product'] = "ZenTao 8.2+ has Product Home. Do you want to go to Product Home?";
|
||||
$lang->custom->notice->indexPage['project'] = "ZenTao 8.2+ has Project Home. Do you want to go to Project Home?";
|
||||
@@ -135,6 +136,7 @@ $lang->custom->workingList['onlyTask'] = 'Task Management';
|
||||
|
||||
$lang->custom->menuTip = 'Click to show/hide the menu. Drag to switch display order.';
|
||||
$lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
|
||||
$lang->custom->scoreStatus[0] = 'Off';
|
||||
$lang->custom->scoreStatus[1] = 'On';
|
||||
|
||||
@@ -96,6 +96,7 @@ $lang->custom->notice->invalidNumberKey = '键值应为不大于255
|
||||
$lang->custom->notice->invalidStringKey = '键值应当为小写英文字母、数字或下划线的组合';
|
||||
$lang->custom->notice->cannotSetTimezone = 'date_default_timezone_set方法不存在或禁用,不能设置时区。';
|
||||
$lang->custom->notice->noClosedBlock = '没有永久关闭的区块';
|
||||
$lang->custom->notice->required = '页面提交时,选中的字段必填';
|
||||
|
||||
$lang->custom->notice->indexPage['product'] = "从8.2版本起增加了产品主页视图,是否默认进入产品主页?";
|
||||
$lang->custom->notice->indexPage['project'] = "从8.2版本起增加了项目主页视图,是否默认进入项目主页?";
|
||||
@@ -134,6 +135,7 @@ $lang->custom->workingList['onlyTask'] = '任务管理工具';
|
||||
|
||||
$lang->custom->menuTip = '点击显示或隐藏导航条目,拖拽来更改显示顺序。';
|
||||
$lang->custom->saveFail = '保存失败!';
|
||||
$lang->custom->page = '页面';
|
||||
|
||||
$lang->custom->scoreStatus[0] = '关闭';
|
||||
$lang->custom->scoreStatus[1] = '开启';
|
||||
|
||||
@@ -33,7 +33,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<table class='table table-form mw-800px'>
|
||||
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-200px' : 'w-100px';?>
|
||||
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-250px' : 'w-120px';?>
|
||||
<?php $i = 0;?>
|
||||
<?php foreach($requiredFields as $method => $requiredField):?>
|
||||
<tr>
|
||||
<th class='<?php echo $colWidth;?>'>
|
||||
@@ -49,15 +50,16 @@
|
||||
$fields = $this->custom->getFormFields('testcase', $method);
|
||||
$method = 'createCase';
|
||||
}
|
||||
echo $lang->$moduleName->$method;
|
||||
echo $lang->$moduleName->$method . $lang->custom->page;
|
||||
?>
|
||||
</th>
|
||||
<td><?php echo html::select("requiredFields[{$method}][]", $fields, $requiredField, "class='form-control chosen' multiple");?></td>
|
||||
<td><?php echo html::select("requiredFields[{$method}][]", $fields, $requiredField, "class='form-control chosen' multiple " . ($i == 0 ? "data-placeholder='{$lang->custom->notice->required}'" : ''));?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php $i++;?>
|
||||
<?php endforeach;?>
|
||||
<tr>
|
||||
<td colspan='2' class='text-center form-actions'>
|
||||
<td colspan='3' class='text-center form-actions'>
|
||||
<?php echo html::submitButton();?>
|
||||
<?php if(common::hasPriv('custom', 'resetRequired')) echo html::a(inlink('resetRequired', "module=$moduleName"), $lang->custom->restore, 'hiddenwin', "class='btn btn-wide'");?>
|
||||
</td>
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
<div class="col-sm-7">
|
||||
<div class="panel block-files block-sm" style="height: 290px;">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title"><?php echo $lang->project->undone . ($app->getClientLang() == 'en' ? ' ' : '') . $lang->projectCommon;?></div>
|
||||
<div class="panel-title"><?php echo $lang->project->undone . ($app->getClientLang() == 'en' ? ' ' : '') ."{$lang->projectCommon}s";?></div>
|
||||
<nav class="panel-actions nav nav-default">
|
||||
<li><?php echo html::a($this->createLink('doc', 'allLibs', 'type=project'), '<i class="icon icon-more icon-sm"></i>', '', "title='{$lang->more}'");?></li>
|
||||
</nav>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.table-group-btns {width: 200px;}
|
||||
.group-menu {padding: 1px 5px!important;}
|
||||
.group-menu .btn {font-size: 15px; color: #3C4353;}
|
||||
.group-menu .btn {font-size: 14px; color: #3C4353;}
|
||||
.fixed-header-copy .group-menu .btn {background-color: transparent; color: #fff;}
|
||||
.fixed-header-copy .group-menu .btn .icon {background: transparent!important; color: #fff; opacity: .5;}
|
||||
.icon-caret-right.text-muted {color: #CBD0DB;}
|
||||
@@ -23,4 +23,4 @@
|
||||
.c-side-lg .group-header {display: flex; flex-direction: column; position: absolute; top: 0; right: 0; left: 0; bottom: 0; justify-content: space-between;}
|
||||
.is-firefox .group-header:before {content: ' '; position: absolute; top: 0; right: 0; left: 0; bottom: 0; background: #fff; z-index: 0;}
|
||||
.is-firefox .group-header > a,
|
||||
.is-firefox .group-header > .groupSummary {position: relative; z-index: 1;}
|
||||
.is-firefox .group-header > .groupSummary {position: relative; z-index: 1;}
|
||||
|
||||
@@ -180,12 +180,12 @@ $lang->project->groups['finishedBy'] = 'Group by FinishedBy';
|
||||
$lang->project->groups['closedBy'] = 'Group by ClosedBy';
|
||||
$lang->project->groups['type'] = 'Group by Type';
|
||||
|
||||
$lang->project->groupFilter['story']['all'] = $lang->project->all;
|
||||
$lang->project->groupFilter['story']['linked'] = 'LinkedtoStory Task';
|
||||
$lang->project->groupFilter['pri']['all'] = $lang->project->all;
|
||||
$lang->project->groupFilter['story']['all'] = 'All';
|
||||
$lang->project->groupFilter['story']['linked'] = 'Tasks of linked story';
|
||||
$lang->project->groupFilter['pri']['all'] = 'All';
|
||||
$lang->project->groupFilter['pri']['noset'] = 'Not Set';
|
||||
$lang->project->groupFilter['assignedTo']['undone'] = 'Unfinished';
|
||||
$lang->project->groupFilter['assignedTo']['all'] = $lang->project->all;
|
||||
$lang->project->groupFilter['assignedTo']['all'] = 'All';
|
||||
|
||||
$lang->project->byQuery = 'Search';
|
||||
|
||||
|
||||
@@ -180,12 +180,12 @@ $lang->project->groups['finishedBy'] = '完成者分组';
|
||||
$lang->project->groups['closedBy'] = '关闭者分组';
|
||||
$lang->project->groups['type'] = '类型分组';
|
||||
|
||||
$lang->project->groupFilter['story']['all'] = $lang->project->all;
|
||||
$lang->project->groupFilter['story']['all'] = '所有';
|
||||
$lang->project->groupFilter['story']['linked'] = '已关联需求的任务';
|
||||
$lang->project->groupFilter['pri']['all'] = $lang->project->all;
|
||||
$lang->project->groupFilter['pri']['all'] = '所有';
|
||||
$lang->project->groupFilter['pri']['noset'] = '未设置';
|
||||
$lang->project->groupFilter['assignedTo']['undone'] = '未完成';
|
||||
$lang->project->groupFilter['assignedTo']['all'] = $lang->project->all;
|
||||
$lang->project->groupFilter['assignedTo']['all'] = '所有';
|
||||
|
||||
$lang->project->byQuery = '搜索';
|
||||
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
<th class="w-60px"><?php echo $lang->task->estimateAB;?></th>
|
||||
<th class="w-50px"><?php echo $lang->task->consumedAB;?></th>
|
||||
<th class="w-50px"><?php echo $lang->task->leftAB;?></th>
|
||||
<th class="w-50px"><?php echo $lang->task->progress;?></th>
|
||||
<th class="w-50px"><?php echo $lang->task->progressAB;?></th>
|
||||
<th class="c-type"><?php echo $lang->typeAB;?></th>
|
||||
<th class="c-date"><?php echo $lang->task->deadlineAB;?></th>
|
||||
<th class="c-actions-3"><?php echo $lang->actions;?></th>
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
<?php $team = array_keys($task->team);?>
|
||||
<?php js::set('confirmRecord', (!empty($team) && $task->assignedTo != end($team)) ? $lang->task->confirmTransfer : $lang->task->confirmRecord);?>
|
||||
<?php js::set('noticeSaveRecord', $lang->task->noticeSaveRecord);?>
|
||||
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-90px' : 'w-70px';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
@@ -41,7 +42,6 @@
|
||||
<tr class='text-center'>
|
||||
<th class="w-id"><?php echo $lang->idAB;?></th>
|
||||
<th class="w-120px"><?php echo $lang->task->date;?></th>
|
||||
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-90px' : 'w-70px';?>
|
||||
<th class="<?php echo $colWidth;?>"><?php echo $lang->task->consumed;?></th>
|
||||
<th class="<?php echo $colWidth;?>"><?php echo $lang->task->left;?></th>
|
||||
<th><?php echo $lang->comment;?></th>
|
||||
|
||||
@@ -66,8 +66,8 @@ $lang->testcase->fromModule = '来源模块';
|
||||
$lang->testcase->fromCase = '来源用例';
|
||||
$lang->testcase->sync = '同步';
|
||||
$lang->testcase->ignore = '忽略';
|
||||
$lang->testcase->fromTesttask = '测试单用例';
|
||||
$lang->testcase->fromCaselib = '用例库用例';
|
||||
$lang->testcase->fromTesttask = '来自测试单用例';
|
||||
$lang->testcase->fromCaselib = '来自用例库用例';
|
||||
$lang->case = $lang->testcase; // 用于DAO检查时使用。因为case是系统关键字,所以无法定义该模块为case,只能使用testcase,但表还是使用的case。
|
||||
|
||||
$lang->testcase->stepID = '编号';
|
||||
|
||||
@@ -1397,11 +1397,11 @@ class testcaseModel extends model
|
||||
case 'status':
|
||||
if($case->needconfirm)
|
||||
{
|
||||
print("<span class='status-story status-changed' title={$this->lang->testcase->fromTesttask}>{$this->lang->story->changed}</span>");
|
||||
print("<span class='status-story status-changed' title='{$this->lang->testcase->fromTesttask}'>{$this->lang->story->changed}</span>");
|
||||
}
|
||||
elseif(isset($case->fromCaseVersion) and $case->fromCaseVersion > $case->version and !$case->needconfirm)
|
||||
{
|
||||
print("<span class='status-story status-changed' title={$this->lang->testcase->fromCaselib}>{$this->lang->testcase->changed}</span>");
|
||||
print("<span class='status-story status-changed' title='{$this->lang->testcase->fromCaselib}'>{$this->lang->testcase->changed}</span>");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+10
-10
@@ -94,17 +94,17 @@ $lang->user->todo = 'Todo';
|
||||
$lang->user->story = 'Stories';
|
||||
$lang->user->dynamic = 'Dynamics';
|
||||
|
||||
$lang->user->openedBy = 'CreatedBy %s';
|
||||
$lang->user->assignedTo = 'AssignedTo %s';
|
||||
$lang->user->finishedBy = 'FinishedBy %s';
|
||||
$lang->user->resolvedBy = 'ResolvedBy %s';
|
||||
$lang->user->closedBy = 'ClosedBy %s';
|
||||
$lang->user->reviewedBy = 'ReviewedBy %s';
|
||||
$lang->user->canceledBy = 'CancelledBy %s';
|
||||
$lang->user->openedBy = 'CreatedBy%s';
|
||||
$lang->user->assignedTo = 'AssignedTo%s';
|
||||
$lang->user->finishedBy = 'FinishedBy%s';
|
||||
$lang->user->resolvedBy = 'ResolvedBy%s';
|
||||
$lang->user->closedBy = 'ClosedBy%s';
|
||||
$lang->user->reviewedBy = 'ReviewedBy%s';
|
||||
$lang->user->canceledBy = 'CancelledBy%s';
|
||||
|
||||
$lang->user->testTask2Him = 'BuildBy %s';
|
||||
$lang->user->case2Him = 'CaseAssignedTo %s';
|
||||
$lang->user->caseByHim = 'CaseCreatedBy %s';
|
||||
$lang->user->testTask2Him = 'AssignTo%s';
|
||||
$lang->user->case2Him = 'CaseAssignedTo%s';
|
||||
$lang->user->caseByHim = 'CaseCreatedBy%s';
|
||||
|
||||
$lang->user->errorDeny = "Sorry, your access to <b>%s</b> of <b>%s</b> is denied. Please contact your Admin to get privileges. Click Back to return.";
|
||||
$lang->user->loginFailed = "Login failed. Please check your account and password.";
|
||||
|
||||
@@ -102,7 +102,7 @@ $lang->user->closedBy = '由%s关闭';
|
||||
$lang->user->reviewedBy = '由%s评审';
|
||||
$lang->user->canceledBy = '由%s取消';
|
||||
|
||||
$lang->user->testTask2Him = '%s负责版本';
|
||||
$lang->user->testTask2Him = '%s负责的版本';
|
||||
$lang->user->case2Him = '给%s的用例';
|
||||
$lang->user->caseByHim = '%s建的用例';
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ $lang->webhook->trimWords = '';
|
||||
$lang->webhook->note = new stdClass();
|
||||
$lang->webhook->note->async = 'If the sending type is asynchronous, you have to go to Admin-System to turn on the cron.';
|
||||
$lang->webhook->note->product = "All actions will trigger the hook if {$lang->productCommon} is empty, or only actions of {$lang->productCommon} will trigger it.";
|
||||
$lang->webhook->note->project = "All actions will trigger the hook if {$lang->projectCommon} is empty, or only actions of {$lang->projectCommon} will trigger it.";
|
||||
$lang->webhook->note->project = "All actions will trigger the hook if {$lang->projectCommon} is empty, or only actions of selected {$lang->projectCommon} will trigger it.";
|
||||
|
||||
$lang->webhook->note->typeList['bearychat'] = 'Add a ZenTao bot in bearychat and get the webhook url.';
|
||||
$lang->webhook->note->typeList['dingding'] = 'Add a customized bot in dingding and get the webhook url.';
|
||||
|
||||
@@ -27,6 +27,6 @@ $lang->chat->info = "ZenTao client is powered by <a href='https://xua
|
||||
$lang->chat->xxClientConfirm = 'Click Download ZenTao Client at the right bottom to download it!';
|
||||
$lang->chat->xxServerConfirm = 'Go to Admin-ZT Client to download the ZenTao Client Server!';
|
||||
|
||||
$lang->chat->xxdServerTip = 'XXD server address contains protocol, host and port,such as http://192.168.1.35 or http://pms.zentao.com. It should not be 127.0.0.1.';
|
||||
$lang->chat->xxdServerTip = 'XXD server address contains protocol, host and port,such as http://192.168.1.35 or http://domain. It should not be 127.0.0.1.';
|
||||
$lang->chat->xxdServerEmpty = 'XXD server address is empty.';
|
||||
$lang->chat->xxdServerError = 'XXD server address should not be 127.0.0.1.';
|
||||
|
||||
@@ -20,8 +20,8 @@ $position[] = $this->lang->client->browse;
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<div class='pull-right'>
|
||||
<?php common::printLink('client', 'create', '', $lang->client->create, '', "class='btn' data-toggle='modal'");?>
|
||||
<?php common::printLink('client', 'checkUpgrade', '', $lang->client->checkUpgrade, '', "class='btn btn-primary'");?>
|
||||
<?php common::printLink('client', 'create', '', $lang->client->create, '', "class='btn btn-primary' data-toggle='modal'");?>
|
||||
</div>
|
||||
<div class='heading'>
|
||||
<h4><?php echo $lang->client->browseVersion;?></h4>
|
||||
|
||||
Reference in New Issue
Block a user