This commit is contained in:
Yagami
2019-06-18 18:00:34 +08:00
121 changed files with 604 additions and 417 deletions
+1 -1
View File
@@ -76,7 +76,7 @@ zentaoxx:
mkdir zentaoxx/db/
cp zentaoxx/db_bak/upgradexuanxuan*.sql zentaoxx/db_bak/xuanxuan.sql zentaoxx/db/
rm -rf zentaoxx/db_bak/
sed -i 's/xxbVersion/$(XVERSION)/g' zentaoxx/config/ext/xuanxuan.php
sed -i 's/XXBVERSION/$(XVERSION)/g' zentaoxx/config/ext/xuanxuan.php
sed -i "/\$$config->xuanxuan->backend /c\\\$$config->xuanxuan->backend = 'zentao';" zentaoxx/config/ext/xuanxuan.php
sed -i 's/site,//' zentaoxx/module/chat/model.php
sed -i 's/admin, g/g/' zentaoxx/module/chat/model.php
+1
View File
@@ -107,6 +107,7 @@ define('TABLE_WEBHOOK', '`' . $config->db->prefix . 'webhook`');
define('TABLE_LOG', '`' . $config->db->prefix . 'log`');
define('TABLE_SCORE', '`' . $config->db->prefix . 'score`');
define('TABLE_NOTIFY', '`' . $config->db->prefix . 'notify`');
define('TABLE_TRANSLATION', '`' . $config->db->prefix . 'translation`');
if(!defined('TABLE_LANG')) define('TABLE_LANG', '`' . $config->db->prefix . 'lang`');
$config->objectTables['product'] = TABLE_PRODUCT;
+16
View File
@@ -0,0 +1,16 @@
CREATE TABLE `zt_translation` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`lang` varchar(30) NOT NULL,
`module` varchar(30) NOT NULL,
`key` varchar(100) NOT NULL,
`value` text NOT NULL,
`status` varchar(30) NOT NULL,
`translator` char(30) NOT NULL,
`translationTime` datetime NOT NULL,
`reviewer` char(30) NOT NULL,
`reviewTime` datetime NOT NULL,
`version` varchar(20) NOT NULL,
`mode` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `lang_module_key_mode` (`lang`,`module`,`key`,`mode`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+12 -12
View File
@@ -24,7 +24,7 @@ $lang->action->trash = 'Recycle';
$lang->action->undelete = 'Restore';
$lang->action->hideOne = 'Hide';
$lang->action->hideAll = 'Hide All';
$lang->action->editComment = 'Edit';
$lang->action->editComment = 'Edit Comment';
$lang->action->create = 'Add Comment';
$lang->action->comment = 'Comment';
@@ -76,7 +76,7 @@ $lang->action->objectTypes['caseresult'] = 'Case Result';
$lang->action->objectTypes['stepresult'] = 'Case Steps';
$lang->action->objectTypes['testtask'] = 'Test Build';
$lang->action->objectTypes['user'] = 'User';
$lang->action->objectTypes['doc'] = 'Doc';
$lang->action->objectTypes['doc'] = 'Document';
$lang->action->objectTypes['doclib'] = 'Document Library';
$lang->action->objectTypes['todo'] = 'Todo';
$lang->action->objectTypes['branch'] = 'Branch';
@@ -127,19 +127,19 @@ $lang->action->desc->verified = '$date, verified by <strong>$actor</strong
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> is changed. It was "%s" and it is "%s".<br />' . "\n";
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> is changed. The difference is ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n";
$lang->action->desc->linked2bug = '$date Linked to <strong>$extra</strong> by <strong>$actor</strong>';
$lang->action->desc->linked2bug = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
/* 子任务修改父任务的历史操作记录 */
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a Child Task <strong>$extra</strong>。' . "\n";
$lang->action->desc->linkchildtask = '$date, <strong>$actor</strong> linked a Child Task <strong>$extra</strong>。' . "\n";
$lang->action->desc->linkchildtask = '$date, <strong>$actor</strong> linked a Child Task <strong>$extra</strong>。' . "\n";
$lang->action->desc->unlinkchildrentask = '$date, <strong>$actor</strong> unlinked a Child Task <strong>$extra</strong>。' . "\n";
$lang->action->desc->linkparenttask = '$date, <strong>$actor</strong> linked to a Parent Task <strong>$extra</strong>。' . "\n";
$lang->action->desc->unlinkparenttask = '$date, <strong>$actor</strong> unlinked a Parent Task <strong>$extra</strong>。' . "\n";
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
$lang->action->desc->linkchildtask = '$date, <strong>$actor</strong> linked a child task <strong>$extra</strong>。' . "\n";
$lang->action->desc->linkchildtask = '$date, <strong>$actor</strong> linked a child task <strong>$extra</strong>。' . "\n";
$lang->action->desc->unlinkchildrentask = '$date, <strong>$actor</strong> unlinked a child task <strong>$extra</strong>。' . "\n";
$lang->action->desc->linkparenttask = '$date, <strong>$actor</strong> linked to a parent task <strong>$extra</strong>。' . "\n";
$lang->action->desc->unlinkparenttask = '$date, <strong>$actor</strong> unlinked a parent task <strong>$extra</strong>。' . "\n";
/* 关联用例和移除用例时的历史操作记录。*/
$lang->action->desc->linkrelatedcase = '$date, <strong>$actor</strong> linked a Use Case <strong>$extra</strong>.' . "\n";
$lang->action->desc->unlinkrelatedcase = '$date, <strong>$actor</strong> unlinked a Use Case <strong>$extra</strong>.' . "\n";
$lang->action->desc->linkrelatedcase = '$date, <strong>$actor</strong> linked a case <strong>$extra</strong>.' . "\n";
$lang->action->desc->unlinkrelatedcase = '$date, <strong>$actor</strong> unlinked a case <strong>$extra</strong>.' . "\n";
/* 用来显示动态信息。*/
$lang->action->label = new stdclass();
@@ -158,7 +158,7 @@ $lang->action->label->hidden = 'hid ';
$lang->action->label->commented = 'commented ';
$lang->action->label->activated = 'activated ';
$lang->action->label->blocked = 'blocked ';
$lang->action->label->resolved = 'solved ';
$lang->action->label->resolved = 'resolved ';
$lang->action->label->reviewed = 'reviewed ';
$lang->action->label->moved = 'moved ';
$lang->action->label->confirmed = 'confirmed story';
+5 -5
View File
@@ -10,10 +10,13 @@
* @link http://www.zentao.net
*/
?>
<?php include $this->app->getModuleRoot() . 'message/view/header.html.php';?>
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/form.html.php';?>
<div id='mainContent' class='main-content'>
<div class='center-block mw-600px'>
<div class='main-header'>
<h2><?php echo $lang->webhook->setting;?></h2>
</div>
<div class='center-block mw-700px'>
<form id='logForm' method='post' class='ajaxForm'>
<table class='table table-form'>
<tr>
@@ -31,7 +34,4 @@
</form>
</div>
</div>
<script>
$(function(){$('#mainMenu #webhookTab').addClass('btn-active-text');})
</script>
<?php include '../../common/view/footer.html.php';?>
+3 -2
View File
@@ -22,8 +22,9 @@
<form class="load-indicator main-form form-ajax" method='post'>
<table class='table table-form'>
<tr>
<th class='w-130px'><?php echo $lang->admin->safe->password?></th>
<td class='w-200px'><?php echo html::radio('mode', $lang->admin->safe->modeList, isset($config->safe->mode) ? $config->safe->mode : 0, "onclick=showModeRule(this.value)")?></td>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-300px' : 'w-130px';?>
<th class='<?php echo $colWidth;?>'><?php echo $lang->admin->safe->password?></th>
<td class='w-230px'><?php echo html::radio('mode', $lang->admin->safe->modeList, isset($config->safe->mode) ? $config->safe->mode : 0, "onclick=showModeRule(this.value)")?></td>
<td><?php echo $lang->admin->safe->noticeMode?></td>
</tr>
<tr id='mode1Rule' class='hidden'>
+1 -1
View File
@@ -34,7 +34,7 @@ $lang->block->dynamic = 'Dynamics';
$lang->block->assignToMe = 'AssignedToMe';
$lang->block->lblFlowchart = 'Flowchart';
$lang->block->welcome = 'Welcome';
$lang->block->lblTesttask = 'Request Detail';
$lang->block->lblTesttask = 'Test Request Detail';
$lang->block->leftToday = 'Remaining Work';
$lang->block->myTask = 'My Tasks';
+2 -1
View File
@@ -39,7 +39,8 @@
<tr class='text-center' data-url='<?php echo empty($sso) ? $viewLink : $sso . $sign . 'referer=' . base64_encode($viewLink); ?>' <?php echo $appid?>>
<td class='c-name text-left' title='<?php echo $product->name?>'><?php echo $product->name?></td>
<?php if($longBlock):?>
<td class='c-name c-project text-left'><?php echo zget($projects, $product->id, '');?></td>
<?php $projectName = zget($projects, $product->id, '');?>
<td class='c-name c-project text-left' title='<?php echo $projectName;?>'><?php echo zget($projects, $product->id, '');?></td>
<?php endif;?>
<td class="c-num"><?php echo $product->plans?></td>
<td class="c-num"><?php echo $product->releases?></td>
@@ -135,7 +135,7 @@ $(function()
</ul>
</div>
<?php if($product->stories):?>
<div class="col-6">
<div class="col-5">
<div class="product-info">
<?php $totalPlan = $product->plans ? array_sum($product->plans) : 0;?>
<?php $unexpiredPlan = $product->plans ? zget($product->plans, 'unexpired', 0) : 0;?>
+3 -2
View File
@@ -45,9 +45,10 @@
<?php if($longBlock):?>
<td class="c-status">
<?php if(isset($project->delay)):?>
<span class="status-project status-delayed"><?php echo $lang->project->delayed;?></span>
<span class="status-project status-delayed" title='<?php echo $lang->project->delayed;?>'><?php echo $lang->project->delayed;?></span>
<?php else:?>
<span class="status-project status-<?php echo $project->status?>"><?php echo zget($lang->project->statusList, $project->status, '');?></span>
<?php $statusName = zget($lang->project->statusList, $project->status, '');?>
<span class="status-project status-<?php echo $project->status?>" title='<?php echo $statusName;?>'><?php echo $statusName;?></span>
<?php endif;?>
</td>
<td class="c-hours"><?php echo $project->hours->totalEstimate;?></td>
@@ -175,7 +175,7 @@ $(function()
<div class="type-label">
<table class='status-count'>
<tr>
<td class='text-right'><?php echo $lang->bug->allBugs . ' Bug';?> :</td>
<td class='text-right'><?php echo $lang->bug->allBugs;?> :</td>
<td class='text-left'><?php echo $project->totalBugs;?></td>
</tr>
<tr>
+1 -1
View File
@@ -115,7 +115,7 @@ $(function()
<div class="progress-pie inline-block space progress-pie-100" data-value="<?php echo $product->assignedRate;?>" data-doughnut-size="80">
<canvas width="100" height="100" style="width: 100px; height: 100px;"></canvas>
<div class="progress-info">
<small><?php echo $lang->bug->allBugs . ' Bug';?></small>
<small><?php echo $lang->bug->allBugs;?></small>
<strong><span class="progress-value"><?php echo $product->total;?></span></strong>
</div>
</div>
+9 -9
View File
@@ -41,16 +41,17 @@ if(!$selfCall) die(include('./todolist.html.php'));
<form class="form-horizontal todoes-form layer" method='post' target='hiddenwin' action='<?php echo $this->createLink('todo', 'create', 'date=today&account=&from=block');?>'>
<h3><?php echo $lang->todo->create;?></h3>
<div class="form-group">
<label for="todoName" class="col-sm-2"><?php echo $lang->todo->name?></label>
<?php $leftWidth = $app->getClientLang() == 'en' ? 'col-sm-3' : 'col-sm-2';?>
<label for="todoName" class="<?php echo $leftWidth;?>"><?php echo $lang->todo->name?></label>
<div class="col-sm-9 required"><input type="text" class="form-control" autocomplete="off" name="name"></div>
</div>
<div class="form-group">
<label for="todoPri" class="col-sm-2"><?php echo $lang->todo->pri?></label>
<label for="todoPri" class="<?php echo $leftWidth;?>"><?php echo $lang->todo->pri?></label>
<div class="col-sm-4"><?php echo html::select('pri', $lang->todo->priList, '', "class='form-control chosen'");?></div>
</div>
<div class="form-group">
<label for="todoDate" class="col-sm-2"><?php echo $lang->todo->date?></label>
<div class="col-sm-9 ">
<label for="todoDate" class="<?php echo $leftWidth;?>"><?php echo $lang->todo->date?></label>
<div class="col-sm-9">
<div class="input-control has-icon-right">
<input type="text" class="form-control date" id="todoDate" name="date" placeholder="" autocomplete='off'>
<label for='todoDate' class="input-control-icon-right"><i class="icon icon-delay"></i></label>
@@ -58,7 +59,7 @@ if(!$selfCall) die(include('./todolist.html.php'));
</div>
</div>
<div class="form-group">
<label for="todoBegin" class="col-sm-2"><?php echo $lang->todo->beginAndEnd?></label>
<label for="todoBegin" class="<?php echo $leftWidth;?>"><?php echo $lang->todo->beginAndEnd?></label>
<div class="col-sm-4">
<select name="begin" id="todoBegin" class="form-control">
<option value=""><?php echo $lang->todo->lblDisableDate;?></option>
@@ -70,8 +71,8 @@ if(!$selfCall) die(include('./todolist.html.php'));
</div>
</div>
<div class="form-group">
<div class="col-sm-2"></div>
<div class="col-sm-10">
<div class="<?php echo $leftWidth;?>"></div>
<div class="col-sm-9">
<div class="checkbox-primary">
<input type="checkbox" name="private" id="private" value="1">
<label for="private"><?php echo $lang->todo->private?></label>
@@ -79,8 +80,7 @@ if(!$selfCall) die(include('./todolist.html.php'));
</div>
</div>
<div class="form-group">
<div class="col-sm-2"></div>
<div class="col-sm-10 form-actions no-margin">
<div class="col-sm-12 form-actions no-margin text-center">
<?php echo html::hidden('type', 'custom');?>
<?php echo html::commonButton($lang->save, "onclick='ajaxCreateTodo(this)'", "btn btn-primary btn-wide");?>
<button type="button" class="btn btn-wide todo-form-trigger" data-trigger="false"><?php echo $lang->goback;?></button>
+1 -1
View File
@@ -1,7 +1,7 @@
<?php
$lang->branch->common = 'Branch';
$lang->branch->manage = 'Manage Branch';
$lang->branch->sort = 'Sort';
$lang->branch->sort = 'Order';
$lang->branch->delete = 'Delete Branch';
$lang->branch->add = 'Add';
+2 -1
View File
@@ -107,12 +107,13 @@ class branchModel extends model
}
}
$space = $this->app->getClientLang() == 'en' ? ' ' : '';
foreach($products as $product)
{
if($product->type == 'normal') continue;
if(!isset($branchGroups[$product->id])) $branchGroups[$product->id] = array();
if(strpos($params, 'noempty') === false) $branchGroups[$product->id] = array('0' => $this->lang->branch->all . $this->lang->product->branchName[$product->type]) + $branchGroups[$product->id];
if(strpos($params, 'noempty') === false) $branchGroups[$product->id] = array('0' => $this->lang->branch->all . $space . $this->lang->product->branchName[$product->type]) + $branchGroups[$product->id];
}
return $branchGroups;
+1 -1
View File
@@ -181,7 +181,7 @@ class bug extends control
* @access public
* @return void
*/
public function report($productID, $browseType, $branchID, $moduleID, $chartType = '')
public function report($productID, $browseType, $branchID, $moduleID, $chartType = 'default')
{
$this->loadModel('report');
$this->view->charts = array();
+6 -6
View File
@@ -85,7 +85,7 @@ $lang->bug->batchChangeBranch = 'Batch Modify Branch';
$lang->bug->batchClose = 'Batch Close';
$lang->bug->assignTo = 'Assign';
$lang->bug->batchAssignTo = 'Batch Assign';
$lang->bug->browse = 'Bugs';
$lang->bug->browse = 'Bug List';
$lang->bug->view = 'Bug Detail';
$lang->bug->resolve = 'Resolve Bug';
$lang->bug->batchResolve = 'Batch Resolve';
@@ -106,10 +106,10 @@ $lang->bug->openedByMe = 'ReportedByMe';
$lang->bug->resolvedByMe = 'SolvedByMe';
$lang->bug->closedByMe = 'ClosedByMe';
$lang->bug->assignToNull = 'Unassigned';
$lang->bug->unResolved = 'Unsolved';
$lang->bug->unResolved = 'Unresolved';
$lang->bug->toClosed = 'Unclosed';
$lang->bug->unclosed = 'Active';
$lang->bug->unconfirmed = 'Unconfirm';
$lang->bug->unconfirmed = 'Unconfirmed';
$lang->bug->longLifeBugs = 'Stalled';
$lang->bug->postponedBugs = 'Postponed';
$lang->bug->overdueBugs = 'Overdue';
@@ -201,7 +201,7 @@ $lang->bug->osList['linux'] = 'Linux';
$lang->bug->osList['freebsd'] = 'FreeBSD';
$lang->bug->osList['osx'] = 'OS X';
$lang->bug->osList['unix'] = 'Unix';
$lang->bug->osList['others'] = 'Other';
$lang->bug->osList['others'] = 'Others';
$lang->bug->browserList[''] = '';
$lang->bug->browserList['all'] = 'All';
@@ -224,7 +224,7 @@ $lang->bug->browserList['opera9'] = 'Opera9';
$lang->bug->browserList['safari'] = 'Safari';
$lang->bug->browserList['maxthon'] = 'Maxthon';
$lang->bug->browserList['uc'] = 'UC';
$lang->bug->browserList['other'] = 'Other';
$lang->bug->browserList['other'] = 'Others';
$lang->bug->typeList[''] = '';
$lang->bug->typeList['codeerror'] = 'CodeError';
@@ -239,7 +239,7 @@ $lang->bug->typeList['designchange'] = 'DesignChange';
$lang->bug->typeList['newfeature'] = 'NewFeature';
$lang->bug->typeList['designdefect'] = 'DesignDefect';
$lang->bug->typeList['trackthings'] = 'Tracking';
$lang->bug->typeList['others'] = 'Other';
$lang->bug->typeList['others'] = 'Others';
$lang->bug->statusList[''] = '';
$lang->bug->statusList['active'] = 'Active';
+1 -1
View File
@@ -43,7 +43,7 @@
<div class='cell'>
<div class='btn-toolbar'>
<?php foreach($lang->report->typeList as $type => $typeName):?>
<?php echo html::a("javascript:changeChartType(\"$type\")", ($type == 'default' ? "<i class='icon icon-list-alt muted'></i> " : "<i class='icon icon-chart-{$type}'></i>") . $typeName, '', "class='btn btn-link " . ($type == $chartType ? 'btn-active-line' : '') . "'")?>
<?php echo html::a("javascript:changeChartType(\"$type\")", ($type == 'default' ? "<i class='icon icon-list-alt muted'></i> " : "<i class='icon icon-chart-{$type} muted'></i>") . $typeName, '', "class='btn btn-link " . ($type == $chartType ? 'btn-active-line' : '') . "'")?>
<?php endforeach;?>
<div class='pull-right with-padding text-muted'><?php echo $lang->report->notice->help;?></div>
</div>
+1
View File
@@ -0,0 +1 @@
#branch_chosen .chosen-single{border-left:0px;}
+1 -1
View File
@@ -21,7 +21,7 @@ $lang->build->batchUnlink = 'Batch Unlink';
$lang->build->batchUnlinkStory = 'Batch Unlink Stories';
$lang->build->batchUnlinkBug = 'Batch Unlink Bugs';
$lang->build->confirmDelete = "Do you want to delete this Build?";
$lang->build->confirmDelete = "Do you want to delete this build?";
$lang->build->confirmUnlinkStory = "Do you want to unlink this Story?";
$lang->build->confirmUnlinkBug = "Do you want to unlink this Bug?";
+5 -6
View File
@@ -54,7 +54,7 @@ $lang->day = 'Day';
$lang->customConfig = 'Custom Config';
$lang->public = 'Public';
$lang->trunk = 'Trunk';
$lang->sort = 'Sort';
$lang->sort = 'Order';
$lang->required = 'Required';
$lang->noData = 'No data.';
@@ -193,7 +193,7 @@ $lang->my->menu->dynamic = 'Dynamics|my|dynamic|';
$lang->my->menu->profile = array('link' => 'Profile|my|profile', 'alias' => 'editprofile');
$lang->my->menu->changePassword = 'Password|my|changepassword';
$lang->my->menu->manageContacts = 'Contact|my|managecontacts';
$lang->my->menu->score = array('link' => 'Point|my|score', 'subModule' => 'score');
$lang->my->menu->score = array('link' => 'Points|my|score', 'subModule' => 'score');
$lang->my->dividerMenu = ',task,myProject,profile,';
@@ -262,7 +262,6 @@ $lang->task = new stdclass();
$lang->build = new stdclass();
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
$lang->build->menu->qa = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'bug,build,testtask', 'alias' => 'build,testtask', 'class' => 'dropdown dropdown-hover');
/* QA menu settings. */
$lang->qa = new stdclass();
@@ -348,7 +347,7 @@ $lang->report->menu->test = array('link' => 'Request|report|bugcreate', 'alia
$lang->report->menu->staff = array('link' => 'Company|report|workload');
$lang->report->notice = new stdclass();
$lang->report->notice->help = 'Note: The data of a report is based on the data in the Story List. Click the tab,e.g. AssignedToMe, then click Report to generate a report.';
$lang->report->notice->help = 'Note: The data of a report is based on the data in the List. Click the tab, e.g. All, then click Report to generate a report.';
/* Company menu settings. */
$lang->company = new stdclass();
@@ -375,7 +374,7 @@ $lang->admin->menu->message = array('link' => 'Notification|message|index', 's
$lang->admin->menu->custom = array('link' => 'Custom|custom|set', 'subModule' => 'custom');
$lang->admin->menu->sso = array('link' => 'Integration|admin|sso');
$lang->admin->menu->dev = array('link' => 'Develop|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor,entry');
$lang->admin->menu->dev = array('link' => 'CSD|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor,entry');
$lang->admin->menu->data = array('link' => 'Data|backup|index', 'subModule' => 'backup,action');
$lang->admin->menu->safe = array('link' => 'Security|admin|safe', 'alias' => 'checkweak');
$lang->admin->menu->system = array('link' => 'System|cron|index', 'subModule' => 'cron');
@@ -518,7 +517,7 @@ $lang->website = "https://www.zentao.pm";
$lang->suhosinInfo = "Warning! Data is reaching the limit. Please change <font color=red>sohusin.post.max_vars</font> and <font color=red>sohusin.request.max_vars</font> (set larger %s value) in php.ini, then save and restart Apache or php-fpm, or some data will not be saved.";
$lang->maxVarsInfo = "Warning! Data is reaching the limit. Please change <font color=red>max_input_vars</font> (set larger %s value) in php.ini, then save and restart Apache or php-fpm, or some data will not be saved.";
$lang->pasteTextInfo = "Paste text here. Each line will be the title of each record. ";
$lang->pasteTextInfo = "Paste the text of items here. Each item will be the title of a story. ";
$lang->noticeImport = "Imported data contains data that has already existed in system. Please confirm you actions on the date.";
$lang->importConfirm = "Import";
$lang->importAndCover = "Override";
+4 -3
View File
@@ -108,9 +108,10 @@ $lang->admin->menuOrder[15] = 'custom';
$lang->admin->menuOrder[20] = 'sso';
$lang->admin->menuOrder[25] = 'extension';
$lang->admin->menuOrder[30] = 'dev';
$lang->admin->menuOrder[35] = 'data';
$lang->admin->menuOrder[40] = 'safe';
$lang->admin->menuOrder[45] = 'system';
$lang->admin->menuOrder[35] = 'translate';
$lang->admin->menuOrder[40] = 'data';
$lang->admin->menuOrder[45] = 'safe';
$lang->admin->menuOrder[50] = 'system';
$lang->admin->subMenuOrder = new stdclass();
$lang->admin->subMenuOrder->message[5] = 'mail';
+4 -1
View File
@@ -262,7 +262,6 @@ $lang->task = new stdclass();
$lang->build = new stdclass();
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
$lang->build->menu->qa = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'bug,build,testtask', 'alias' => 'build,testtask', 'class' => 'dropdown dropdown-hover');
/* QA视图菜单设置。*/
$lang->qa = new stdclass();
@@ -376,6 +375,7 @@ $lang->admin->menu->custom = array('link' => '自定义|custom|set', 'subModu
$lang->admin->menu->sso = array('link' => '集成|admin|sso');
$lang->admin->menu->extension = array('link' => '插件|extension|browse', 'subModule' => 'extension');
$lang->admin->menu->dev = array('link' => '二次开发|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor,entry');
$lang->admin->menu->translate = array('link' => '翻译|translate|index');
$lang->admin->menu->data = array('link' => '数据|backup|index', 'subModule' => 'backup,action');
$lang->admin->menu->safe = array('link' => '安全|admin|safe', 'alias' => 'checkweak');
$lang->admin->menu->system = array('link' => '系统|cron|index', 'subModule' => 'cron');
@@ -417,6 +417,7 @@ $lang->entry = new stdclass();
$lang->webhook = new stdclass();
$lang->message = new stdclass();
$lang->search = new stdclass();
$lang->translate = new stdclass();
$lang->convert->menu = $lang->admin->menu;
$lang->upgrade->menu = $lang->admin->menu;
@@ -431,6 +432,7 @@ $lang->dev->menu = $lang->admin->menu;
$lang->entry->menu = $lang->admin->menu;
$lang->webhook->menu = $lang->admin->menu;
$lang->message->menu = $lang->admin->menu;
$lang->translate->menu = $lang->admin->menu;
/* 菜单分组。*/
$lang->menugroup = new stdclass();
@@ -468,6 +470,7 @@ $lang->menugroup->dev = 'admin';
$lang->menugroup->entry = 'admin';
$lang->menugroup->webhook = 'admin';
$lang->menugroup->message = 'admin';
$lang->menugroup->translate = 'admin';
/* 错误提示信息。*/
$lang->error = new stdclass();
+6 -4
View File
@@ -382,10 +382,12 @@ class commonModel extends model
$link['vars'] = $subMenuParams;
$menu = new stdclass();
$menu->name = $subMenuKey;
$menu->link = $link;
$menu->text = $subMenuName;
$menu->hidden = false;
$menu->name = $subMenuKey;
$menu->link = $link;
$menu->text = $subMenuName;
$menu->subModule = isset($items->$subMenuKey['subModule']) ? $items->$subMenuKey['subModule'] : '';
$menu->alias = isset($items->$subMenuKey['alias']) ? $items->$subMenuKey['alias'] : '';
$menu->hidden = false;
$subMenu[$subMenuKey] = $menu;
}
+1 -1
View File
@@ -6,7 +6,7 @@
$(function()
{
<?php if(!empty($setShowModule)):?>
$('#sidebar .cell .text-center:last').append("<a href='#showModuleModal' data-toggle='modal' class='text-secondary small'><?php echo $lang->datatable->showModule?></a><hr class='space-sm' />");
$('#sidebar .cell .text-center:last').append("<a href='#showModuleModal' data-toggle='modal' class='text-secondary small'><?php echo $lang->datatable->showModuleAB?></a><hr class='space-sm' />");
<?php endif;?>
var $btnToolbar = $('#main .table-header .btn-toolbar:first');
+2 -1
View File
@@ -23,7 +23,8 @@
<form class='main-form' method='post' target='hiddenwin'>
<table class='table table-form'>
<tr>
<th><?php echo $lang->company->name;?></th>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-120px' : 'w-80px';?>
<th class='<?php echo $colWidth;?>'><?php echo $lang->company->name;?></th>
<td><?php echo html::input('name', $company->name, "class='form-control'");?></td>
</tr>
<tr>
+1 -2
View File
@@ -62,7 +62,7 @@ class cronModel extends model
$parsedCron['schema'] = trim($matchs[0][0]);
$parsedCron['command'] = trim($matchs[0][1]);
$parsedCron['cron'] = CronExpression::factory($parsedCron['schema']);
$parsedCron['time'] = $parsedCron['cron']->getNextRunDate();
$parsedCron['time'] = $parsedCron['cron']->getNextRunDate($cron->lastTime);
$parsedCrons[$cron->id] = $parsedCron;
}
catch(InvalidArgumentException $e)
@@ -72,7 +72,6 @@ class cronModel extends model
}
}
}
$this->dao->update(TABLE_CRON)->set('lastTime')->eq(date(DT_DATETIME1))->where('lastTime')->eq('0000-00-00 00:00:00')->andWhere('status')->ne('stop')->exec();
return $parsedCrons;
}
+7 -6
View File
@@ -6,7 +6,7 @@ $lang->custom->restore = 'Reset';
$lang->custom->key = 'Key';
$lang->custom->value = 'Value';
$lang->custom->flow = 'Workflow';
$lang->custom->working = 'Work Mode';
$lang->custom->working = 'Mode';
$lang->custom->select = 'Select Workflow';
$lang->custom->branch = 'Multi-Branch';
$lang->custom->owner = 'Owner';
@@ -17,7 +17,8 @@ $lang->custom->setPublic = 'Set Public';
$lang->custom->required = 'Required Fields';
$lang->custom->score = 'Point';
$lang->custom->timezone = 'Timezone';
$lang->custom->scoreReset = 'Reset Point';
$lang->custom->scoreReset = 'Reset Points';
$lang->custom->scoreTitle = 'Point Feature';
$lang->custom->object['story'] = 'Story';
$lang->custom->object['task'] = 'Task';
@@ -35,7 +36,7 @@ $lang->custom->story->fields['reasonList'] = 'Close Reason';
$lang->custom->story->fields['stageList'] = 'Phase';
$lang->custom->story->fields['statusList'] = 'Status';
$lang->custom->story->fields['reviewResultList'] = 'Review Result';
$lang->custom->story->fields['review'] = 'Review Required';
$lang->custom->story->fields['review'] = 'Need Review';
$lang->custom->task = new stdClass();
$lang->custom->task->fields['priList'] = 'Priority';
@@ -60,7 +61,7 @@ $lang->custom->testcase->fields['typeList'] = 'Type';
$lang->custom->testcase->fields['stageList'] = 'Phase';
$lang->custom->testcase->fields['resultList'] = 'Result';
$lang->custom->testcase->fields['statusList'] = 'Status';
$lang->custom->testcase->fields['review'] = 'Review Required';
$lang->custom->testcase->fields['review'] = 'Need Review';
$lang->custom->testtask = new stdClass();
$lang->custom->testtask->fields['priList'] = 'Priority';
@@ -89,8 +90,8 @@ $lang->custom->confirmRestore = 'Do you want to reset?';
$lang->custom->notice = new stdclass();
$lang->custom->notice->userFieldNotice = 'Control whether the above fields are displayed on the user-related page. Leave it blank to display all.';
$lang->custom->notice->canNotAdd = 'It will be calculated, so customization is not enabled.';
$lang->custom->notice->forceReview = '%s Review is required for certain committers.';
$lang->custom->notice->forceNotReview = "%s Review is NOT required for certain committers.";
$lang->custom->notice->forceReview = '%s review is required for committers selected.';
$lang->custom->notice->forceNotReview = "%s review is not required for committers selected.";
$lang->custom->notice->longlife = 'Define stalled bugs.';
$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.';
+2 -2
View File
@@ -14,12 +14,12 @@
<form class="load-indicator main-form form-ajax" method='post'>
<div class='main-header'>
<div class='heading'>
<strong><?php echo $lang->custom->score?></strong>
<strong><?php echo $lang->custom->scoreTitle?></strong>
</div>
</div>
<table class='table table-form'>
<tr>
<th class='w-100px text-top'><?php echo $lang->custom->score;?></th>
<th class='w-100px text-top'><?php echo $lang->custom->scoreTitle;?></th>
<td>
<?php $checkedKey = isset($config->global->scoreStatus) ? $config->global->scoreStatus : 0;?>
<?php foreach($lang->custom->scoreStatus as $key => $value):?>
+2 -1
View File
@@ -54,7 +54,8 @@ EOT;
<?php if(($module == 'story' or $module == 'testcase') and $field == 'review'):?>
<table class='table table-form mw-800px'>
<tr>
<th class='w-80px'><?php echo $lang->custom->storyReview;?></th>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-140px' : 'w-80px';?>
<th class='<?php echo $colWidth;?>'><?php echo $lang->custom->storyReview;?></th>
<td><?php echo html::radio('needReview', $lang->custom->reviewList, $needReview);?></td>
<td></td>
</tr>
+2 -1
View File
@@ -18,7 +18,8 @@ $lang->datatable->resetGlobal = 'Global Reset';
$lang->datatable->branch = 'Branch';
$lang->datatable->platform = 'Platform';
$lang->datatable->showModule = 'Show/Hide Module Name';
$lang->datatable->showModule = 'Show module names on the list page';
$lang->datatable->showModuleAB = 'Show Module Names';
$lang->datatable->showModuleList[] = 'N/A';
$lang->datatable->showModuleList['base'] = 'Base Node';
$lang->datatable->showModuleList['end'] = 'End Node';
+1
View File
@@ -19,6 +19,7 @@ $lang->datatable->branch = '分支';
$lang->datatable->platform = '平台';
$lang->datatable->showModule = '列表页是否显示模块名';
$lang->datatable->showModuleAB = '列表页是否显示模块名';
$lang->datatable->showModuleList[] = '不显示';
$lang->datatable->showModuleList['base'] = '只显示一级模块';
$lang->datatable->showModuleList['end'] = '只显示最后一级模块';
+3 -3
View File
@@ -10,7 +10,7 @@
* @link http://www.zentao.net
*/
$lang->dept->common = 'Department';
$lang->dept->manageChild = "Department";
$lang->dept->manageChild = "Child Department";
$lang->dept->edit = "Edit";
$lang->dept->delete = "Delete";
$lang->dept->parent = "Parent Dept";
@@ -18,11 +18,11 @@ $lang->dept->manager = "Manager";
$lang->dept->name = "Department Name";
$lang->dept->browse = "Manage";
$lang->dept->manage = "Manage Department";
$lang->dept->updateOrder = "Sort";
$lang->dept->updateOrder = "Order";
$lang->dept->add = "Add Department";
$lang->dept->dragAndSort = "Drag to order";
$lang->dept->confirmDelete = " Do you want to delete this Department?";
$lang->dept->confirmDelete = " Do you want to delete this department?";
$lang->dept->successSave = " Saved!";
$lang->dept->error = new stdclass();
+1 -1
View File
@@ -98,7 +98,7 @@ class deptModel extends model
}
}
$topMenu = @array_pop($deptMenu);
$topMenu = isset($deptMenu[0]) ? $deptMenu[0] : array_pop($deptMenu);
$topMenu = explode("\n", trim($topMenu));
$lastMenu[] = '/';
foreach($topMenu as $menu)
+3 -3
View File
@@ -110,19 +110,19 @@ $(function()
sort:
{
title: '<?php echo $lang->dept->dragAndSort ?>',
template: '<a class="sort-handler" href="javascript:;"><?php echo $lang->sort;?></a>'
template: '<a class="sort-handler"><i class="icon-move"></i></a>'
},
edit:
{
linkTemplate: '<?php echo helper::createLink('dept', 'edit', "deptid={0}"); ?>',
title: '<?php echo $lang->dept->edit ?>',
template: '<a href="javascript:;" data-width="600"><?php echo $lang->edit?></a>'
template: '<a><i class="icon-edit"></i></a>'
},
"delete":
{
linkTemplate: '<?php echo helper::createLink('dept', 'delete', "deptid={0}"); ?>',
title: '<?php echo $lang->dept->delete ?>',
template: '<a href="javascript:;"><?php echo $lang->delete?></a>'
template: '<a><i class="icon-trash"></i></a>'
}
},
action: function(event)
+4 -3
View File
@@ -23,15 +23,16 @@ $jsRoot = $webRoot . "js/";
<form action="<?php echo inlink('edit', 'deptID=' . $dept->id);?>" target='hiddenwin' method='post' class='mt-10px' id='dataform'>
<table class='table table-form' style='width:100%'>
<tr>
<th class='w-80px'><?php echo $lang->dept->parent;?></th>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-130px' : 'w-80px';?>
<th class='<?php echo $colWidth;?>'><?php echo $lang->dept->parent;?></th>
<td><?php echo html::select('parent', $optionMenu, $dept->parent, "class='form-control chosen'");?></td>
</tr>
<tr>
<th class='w-80px'><?php echo $lang->dept->name;?></th>
<th><?php echo $lang->dept->name;?></th>
<td><?php echo html::input('name', $dept->name, "class='form-control'");?></td>
</tr>
<tr>
<th class='w-80px'><?php echo $lang->dept->manager;?></th>
<th><?php echo $lang->dept->manager;?></th>
<td><?php echo html::select('manager', $users, $dept->manager, "class='form-control chosen'", true);?></td>
</tr>
<tr>
+3 -3
View File
@@ -1,5 +1,5 @@
<?php
$lang->dev->common = 'Develop';
$lang->dev->common = 'CSD';
$lang->dev->api = 'API';
$lang->dev->db = 'Database';
$lang->dev->editor = 'Editor';
@@ -70,7 +70,7 @@ $lang->dev->tableList['api'] = 'API';
$lang->dev->tableList['backup'] = 'Backup';
$lang->dev->tableList['common'] = 'Common';
$lang->dev->tableList['convert'] = 'Convert';
$lang->dev->tableList['dev'] = 'Develop';
$lang->dev->tableList['dev'] = 'CSD';
$lang->dev->tableList['git'] = 'GIT';
$lang->dev->tableList['index'] = 'Home';
$lang->dev->tableList['install'] = 'Install';
@@ -116,4 +116,4 @@ $lang->dev->groupList['message'] = 'Message';
$lang->dev->endGroupList['admin'] = 'Admin';
$lang->dev->endGroupList['system'] = 'System';
$lang->dev->endGroupList['other'] = 'Other';
$lang->dev->endGroupList['other'] = 'Others';
-1
View File
@@ -809,7 +809,6 @@ class doc extends control
}
elseif($from == 'project')
{
$this->lang->modulePageActions = common::hasPriv('doc', 'createLib') ? html::a(helper::createLink('doc', 'createLib'), "<i class='icon icon-folder-plus'></i> " . $this->lang->doc->createLib, '', "class='btn btn-secondary iframe' data-width='70%'") : '';
$this->lang->doc->menu = $this->lang->project->menu;
$this->lang->doc->menuOrder = $this->lang->project->menuOrder;
$this->project->setMenu($this->project->getPairs('nocode'), $objectID);
+2
View File
@@ -1 +1,3 @@
#pageActions ul.dropdown-menu{left: 67px}
#mainRow .main-col .row .col-sm-7{width:55% !important;}
#mainRow .main-col .row .col-sm-5{width:45% !important;}
+6 -6
View File
@@ -55,11 +55,11 @@ $lang->doc->searchDoc = 'Search';
$lang->doc->fast = 'Qucik Entry';
$lang->doc->allDoc = 'All Documents';
$lang->doc->openedByMe = 'My';
$lang->doc->orderByOpen = 'Last Added';
$lang->doc->orderByOpen = 'Recent Added';
$lang->doc->orderByEdit = 'Recent Edited';
$lang->doc->orderByVisit = 'Last Visited';
$lang->doc->todayEdited = 'Update Today';
$lang->doc->pastEdited = 'Updated';
$lang->doc->pastEdited = 'Total Updated';
$lang->doc->myDoc = 'My Documents';
$lang->doc->myCollection = 'My Favorites';
@@ -68,10 +68,10 @@ $lang->doc->index = 'Document Home';
$lang->doc->create = 'Create Document';
$lang->doc->edit = 'Edit Document';
$lang->doc->delete = 'Delete';
$lang->doc->browse = 'List';
$lang->doc->view = 'Detail';
$lang->doc->browse = 'Document List';
$lang->doc->view = 'Document Detail';
$lang->doc->diff = 'Diff';
$lang->doc->sort = 'Sort';
$lang->doc->sort = 'Order';
$lang->doc->manageType = 'Manage Category';
$lang->doc->editType = 'Edit';
$lang->doc->deleteType = 'Delete';
@@ -86,7 +86,7 @@ $lang->doc->libType = 'Category';
$lang->doc->custom = 'Custom Document Library';
$lang->doc->customAB = 'Custom Doc Lib';
$lang->doc->createLib = 'Create Document Library';
$lang->doc->allLibs = 'Libraries';
$lang->doc->allLibs = 'Library List';
$lang->doc->objectLibs = "{$lang->productCommon}/{$lang->projectCommon} Libraries";
$lang->doc->showFiles = 'Attachments';
$lang->doc->editLib = 'Edit Document Library';
+1 -2
View File
@@ -45,8 +45,7 @@
<td>
<span><?php echo html::radio('acl', $lang->doc->aclList, 'open', "onchange='toggleAcl(this.value, \"lib\")'")?></span>
<span class='text-warning' id='noticeAcl'><?php echo $lang->doc->noticeAcl['lib']['product']['default'];?></span>
</td>
</tr>
</td>
</tr>
<tr id='whiteListBox' class='hidden'>
<th><?php echo $lang->doc->whiteList;?></th>
+1 -1
View File
@@ -62,7 +62,7 @@
<strong class="progress-value"><?php echo $statisticInfo->lastEditedDocs;?></strong>
</div>
</div>
<div class="table-row text-center small text-muted with-padding">
<div class="table-row text-center small text-muted">
<div class="col-4">
<span class="label label-dot label-primary"></span>
<span><?php echo $lang->doc->todayEdited;?></span>
-3
View File
@@ -5,9 +5,6 @@ $config->entry->create->requiredFields = 'name, code, account, key';
$config->entry->edit = new stdclass();
$config->entry->edit->requiredFields = 'name, code, account, key';
$config->entry->help = 'https://www.zentao.net/book/zentaopmshelp/integration-287.html';
$config->entry->notify = 'https://www.zentao.net/book/zentaopmshelp/301.html';
$config->entry->errcode['PARAM_CODE_MISSING'] = 401;
$config->entry->errcode['PARAM_TOKEN_MISSING'] = 401;
$config->entry->errcode['SESSION_CODE_MISSING'] = 401;
+3
View File
@@ -30,6 +30,9 @@ $lang->entry->confirmDelete = 'Do you want to delete this entry?';
$lang->entry->help = 'Help';
$lang->entry->notify = 'Notification';
$lang->entry->helpLink = 'https://www.zentao.pm/book/zentaomanual/scrum-tool-open-source-integrate-third-party-application-221.html';
$lang->entry->notifyLink = 'https://www.zentao.net/book/zentaopmshelp/301.html';
$lang->entry->note = new stdClass();
$lang->entry->note->name = 'Name';
$lang->entry->note->code = 'Code should be letters and numbers';
+3
View File
@@ -30,6 +30,9 @@ $lang->entry->confirmDelete = '您确认要删除该应用吗?';
$lang->entry->help = '使用说明';
$lang->entry->notify = '消息通知';
$lang->entry->helpLink = 'https://www.zentao.net/book/zentaopmshelp/integration-287.html';
$lang->entry->notifyLink = 'https://www.zentao.net/book/zentaopmshelp/301.html';
$lang->entry->note = new stdClass();
$lang->entry->note->name = '授权应用名称';
$lang->entry->note->code = '授权应用代号,必须为字母或数字的组合';
+3 -3
View File
@@ -25,7 +25,7 @@
<tr>
<th class='w-80px'><?php echo $lang->entry->name;?></th>
<td><?php echo html::input('name', '', "class='form-control' title='{$lang->entry->note->name}' placeholder='{$lang->entry->note->name}'");?></td>
<td class='w-120px'></td>
<td class='w-200px'></td>
</tr>
<tr>
<th><?php echo $lang->entry->code;?></th>
@@ -61,8 +61,8 @@
<th></th>
<td>
<?php echo html::submitButton();?>
<?php echo html::a($config->entry->help, $lang->entry->help, '_blank', "class='help'");?>
<?php echo html::a($config->entry->notify, $lang->entry->notify, '_blank', "class='help'");?>
<?php echo html::a($lang->entry->helpLink, $lang->entry->help, '_blank', "class='help'");?>
<?php echo html::a($lang->entry->notifyLink, $lang->entry->notify, '_blank', "class='help'");?>
</td>
<td></td>
</tr>
+3 -3
View File
@@ -25,7 +25,7 @@
<tr>
<th class='w-80px'><?php echo $lang->entry->name;?></th>
<td><?php echo html::input('name', $entry->name, "class='form-control' title='{$lang->entry->note->name}' placeholder='{$lang->entry->note->name}'");?></td>
<td class='w-120px'></td>
<td class='w-200px'></td>
</tr>
<tr>
<th><?php echo $lang->entry->code;?></th>
@@ -59,8 +59,8 @@
<th></th>
<td>
<?php echo html::submitButton();?>
<?php echo html::a($config->entry->help, $lang->entry->help, '_blank', "class='help'");?>
<?php echo html::a($config->entry->notify, $lang->entry->notify, '_blank', "class='help'");?>
<?php echo html::a($lang->entry->helpLink, $lang->entry->help, '_blank', "class='help'");?>
<?php echo html::a($lang->entry->notifyLink, $lang->entry->notify, '_blank', "class='help'");?>
</td>
</tr>
</table>
+1
View File
@@ -5,3 +5,4 @@
@-moz-document url-prefix(){.table.table-form tbody > tr:last-child td, .table.table-form tbody > tr:last-child th {border-bottom: 1px solid #ddd}}
#mainMenu #groupName{line-height:33px; float: left}
.checkbox-right{padding-left:0px !important;}
+2 -1
View File
@@ -1,5 +1,6 @@
.group-item {display:block; width:90px; float:left; margin-top:5px;}
.group-item {display:block; width:93px; float:left; margin-top:5px;}
.action-item {display:block; width:200px; float:left; margin-top:5px;}
.checkbox-primary>label{padding-left:20px;}
.pl-0px {padding-left:0px !important;}
.pt-0px {padding-top:0px !important;}
+5 -5
View File
@@ -195,11 +195,11 @@ $lang->resource->story->batchEdit = 'batchEdit';
$lang->resource->story->export = 'export';
$lang->resource->story->delete = 'delete';
$lang->resource->story->view = 'view';
$lang->resource->story->change = 'lblChange';
$lang->resource->story->change = 'changeAction';
$lang->resource->story->review = 'lblReview';
$lang->resource->story->batchReview = 'batchReview';
$lang->resource->story->assignTo = 'assignTo';
$lang->resource->story->close = 'lblClose';
$lang->resource->story->close = 'closeAction';
$lang->resource->story->batchClose = 'batchClose';
$lang->resource->story->activate = 'lblActivate';
$lang->resource->story->tasks = 'tasks';
@@ -401,7 +401,7 @@ $lang->resource->task->assignTo = 'assign';
$lang->resource->task->start = 'start';
$lang->resource->task->pause = 'pause';
$lang->resource->task->restart = 'restart';
$lang->resource->task->finish = 'finish';
$lang->resource->task->finish = 'finishAction';
$lang->resource->task->cancel = 'cancel';
$lang->resource->task->close = 'close';
$lang->resource->task->batchCreate = 'batchCreate';
@@ -410,7 +410,7 @@ $lang->resource->task->batchClose = 'batchClose';
$lang->resource->task->batchCancel = 'batchCancel';
$lang->resource->task->batchAssignTo = 'batchAssignTo';
$lang->resource->task->batchChangeModule = 'batchChangeModule';
$lang->resource->task->activate = 'activate';
$lang->resource->task->activate = 'activateAction';
$lang->resource->task->delete = 'delete';
$lang->resource->task->view = 'view';
$lang->resource->task->export = 'export';
@@ -587,7 +587,7 @@ $lang->resource->testtask->index = 'index';
$lang->resource->testtask->create = 'create';
$lang->resource->testtask->browse = 'browse';
$lang->resource->testtask->view = 'view';
$lang->resource->testtask->cases = 'lblCases';
$lang->resource->testtask->cases = 'cases';
$lang->resource->testtask->groupCase = 'groupCase';
$lang->resource->testtask->edit = 'edit';
$lang->resource->testtask->start = 'start';
+2 -2
View File
@@ -22,8 +22,8 @@
<table class='table table-form'>
<tr>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-130px' : 'w-100px';?>
<th class='<?php echo $colWidth;?>'><?php echo $lang->group->viewList;?></th>
<td>
<th class='text-bottom <?php echo $colWidth;?>'><?php echo $lang->group->viewList;?></th>
<td class='text-bottom'>
<?php foreach($lang->menu as $menuKey => $menu):?>
<?php if(!is_string($menu)) continue;?>
<?php list($moduleName, $module) = explode('|', $menu);?>
+6 -3
View File
@@ -26,7 +26,8 @@
</tr>
</thead>
<tr class='<?php echo cycle('even, bg-gray');?>'>
<th class='text-right w-150px'><?php echo $lang->my->common;?></th>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-160px' : 'w-150px';?>
<th class='text-right <?php echo $colWidth;?>'><?php echo $lang->my->common;?></th>
<td id='my' class='pv-10px'>
<div class='checkbox-primary'>
<input type='checkbox' name='actions[my][]' value='limited' <?php if(isset($groupPrivs['my']['limited'])) echo "checked";?> />
@@ -72,7 +73,8 @@
<table class='table table-hover table-striped table-bordered' id='privList'>
<thead>
<tr class='text-center'>
<th class='w-150px'><?php echo $lang->group->module;?></th>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-160px' : 'w-150px';?>
<th class='<?php echo $colWidth;?>'><?php echo $lang->group->module;?></th>
<th><?php echo $lang->group->method;?></th>
</tr>
</thead>
@@ -96,7 +98,8 @@
}
?>
<tr class='<?php echo cycle('even, bg-gray');?>'>
<th class='text-middle text-right w-150px'>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-160px' : 'w-150px';?>
<th class='text-middle text-right <?php echo $colWidth;?>'>
<div class="checkbox-primary checkbox-inline checkbox-right check-all">
<input type='checkbox' id='allChecker<?php echo $moduleName;?>'>
<label class='text-right' for='allChecker<?php echo $moduleName;?>'><?php echo $lang->$moduleName->common;?></label>
+4 -4
View File
@@ -27,10 +27,10 @@ $lang->install->license = 'ZenTao is under Z PUBLIC LICENSE(ZPL) 1.2';
$lang->install->desc = <<<EOT
ZenTao ALM is an Open Source software released under <a href='http://zpl.pub/page/zplv12.html' target='_blank'>Z Public License</a>. It integrates with Product Management, Project Management, QA Management, Document Management, Todos Management, Company Management etc. ZenTao is the best choice for software project management.
ZenTao ALM is built on PHP + MySQL and based on ZenTaoPHP framework, an independent framework developed by our team. Third party developers/organizations can develop extensions or customize for their requirements.
ZenTao ALM is built on PHP + MySQL and based on ZenTaoPHP framework, an independent framework developed by our team. Third-party developers/organizations can develop extensions or customize for their requirements.
EOT;
$lang->install->links = <<<EOT
ZenTao is developed by <strong><a href='http://easysoft.ltd' target='_blank' class='text-danger'>Nature Easy Soft Co., LTD</a></strong>.
ZenTao ALM is developed by <strong><a href='http://easysoft.ltd' target='_blank' class='text-danger'>Nature Easy Soft Co., LTD</a></strong>.
Official Website : <a href='https://www.zentao.pm' target='_blank'>https://www.zentao.pm</a>
Technical Support : <a href='https://www.zentao.pm/forum/' target='_blank'>https://www.zentao.pm/forum/</a>
WhatsApp Group : <a href='https://chat.whatsapp.com/B6pi6b3gv0S7x7jqMxwhbF' target='_blank'>https://chat.whatsapp.com/B6pi6b3gv0S7x7jqMxwhbF</a>
@@ -148,12 +148,12 @@ $lang->install->groupList['QD']['name'] = 'QD';
$lang->install->groupList['QD']['desc'] = 'QA Director';
$lang->install->groupList['TOP']['name'] = 'Senior';
$lang->install->groupList['TOP']['desc'] = 'Senior Manager';
$lang->install->groupList['OTHERS']['name'] = 'Other';
$lang->install->groupList['OTHERS']['name'] = 'Others';
$lang->install->groupList['OTHERS']['desc'] = 'other users';
$lang->install->groupList['LIMITED']['name'] = 'Limited User';
$lang->install->groupList['LIMITED']['desc'] = 'Users can only edit contents related to themselves.';
$lang->install->cronList[''] = 'Monitor cron';
$lang->install->cronList[''] = 'Monitor Cron';
$lang->install->cronList['moduleName=project&methodName=computeburn'] = 'Update Burndown Chart';
$lang->install->cronList['moduleName=report&methodName=remind'] = 'Daily Task Reminder';
$lang->install->cronList['moduleName=svn&methodName=run'] = 'Synchronize SVN';
+1 -1
View File
@@ -95,7 +95,7 @@ $lang->mail->sendCloudHelp = <<<EOD
EOD;
$lang->mail->sendCloudSuccess = 'Done';
$lang->mail->closeSendCloud = 'Close SendCloud';
$lang->mail->addressWhiteList = 'Add email addresses to the whiltelist of your email server to avoid being blocked';
$lang->mail->addressWhiteList = 'Add it to the whiltelist of your email server to avoid being blocked';
$lang->mail->ztCloudNotice = <<<EOD
+6 -1
View File
@@ -47,7 +47,12 @@
?>
<td>
<?php
echo html::checkbox("messageSetting[$type][setting][$objectType]", $availableActions, isset($messageSetting[$type]['setting'][$objectType]) ? join(',', $messageSetting[$type]['setting'][$objectType]) : '');
$selected = isset($messageSetting[$type]['setting'][$objectType]) ? join(',', $messageSetting[$type]['setting'][$objectType]) : '';
foreach($availableActions as $key => $value)
{
$checked = strpos(",$selected,", ",{$key},") !== false ? "checked='checked'" : '';
echo "<div class='checkbox-primary' title='$value'><input type='checkbox' name='messageSetting[$type][setting][$objectType][]' value='$key' $checked id='messageSetting[$type][setting][$objectType]$key'> <label for='messageSetting[$type][setting][$objectType]$key'>$value</label></div>";
}
if(isset($config->message->condition[$type][$objectType]))
{
$moduleName = $objectType == 'case' ? 'testcase' : $objectType;
+1 -1
View File
@@ -393,7 +393,7 @@ class my extends control
{
$this->user->updatePassword($this->app->user->id);
if(dao::isError()) die(js::error(dao::getError()));
die(js::locate($this->createLink('my', 'profile'), 'parent'));
die(js::locate($this->createLink('my', 'profile'), 'parent.parent'));
}
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->changePassword;
+1 -1
View File
@@ -94,7 +94,7 @@
<?php endforeach;?>
<?php endif;?>
<dt><?php echo $lang->user->address;?></dt>
<dd><?php echo $user->address;?></dd>
<dd title='<?php echo $user->address;?>'><?php echo $user->address;?></dd>
<dt><?php echo $lang->user->zipcode;?></dt>
<dd><?php echo $user->zipcode;?></dd>
</dl>
+3 -2
View File
@@ -55,9 +55,10 @@
<td><?php echo $project->end;?></td>
<td class="c-status">
<?php if(isset($project->delay)):?>
<span class="status-project status-delayed"> <?php echo $lang->project->delayed;?></span>
<span class="status-project status-delayed" title='<?php echo $lang->project->delayed;?>'> <?php echo $lang->project->delayed;?></span>
<?php else:?>
<span class="status-project status-<?php echo $project->status?>"> <?php echo zget($lang->project->statusList, $project->status, '');?></span>
<?php $statusName = zget($lang->project->statusList, $project->status, '');?>
<span class="status-project status-<?php echo $project->status?>" title='<?php echo $statusName;?>'> <?php echo $statusName;?></span>
<?php endif;?>
</td>
<td><?php echo $project->role;?></td>
+2 -2
View File
@@ -56,11 +56,11 @@
<th class='w-50px'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
<th> <?php common::printOrderLink('title', $orderBy, $vars, $lang->testcase->title);?></th>
<th class='w-type'> <?php common::printOrderLink('type', $orderBy, $vars, $lang->typeAB);?></th>
<th class='w-user'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
<th class='c-user'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
<th class='w-80px'> <?php common::printOrderLink('lastRunner', $orderBy, $vars, $lang->testtask->lastRunAccount);?></th>
<th class='w-120px'> <?php common::printOrderLink('lastRunDate', $orderBy, $vars, $lang->testtask->lastRunTime);?></th>
<th class='w-80px'> <?php common::printOrderLink('lastRunResult', $orderBy, $vars, $lang->testtask->lastRunResult);?></th>
<th class='w-status'><?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
<th class='c-status'><?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
<th class='c-actions-5'> <?php echo $lang->actions;?></th>
</tr>
</thead>
+5 -5
View File
@@ -11,7 +11,7 @@
*/
$lang->product->common = $lang->productCommon;
$lang->product->index = $lang->productCommon . ' Home';
$lang->product->browse = 'Story';
$lang->product->browse = 'Story List';
$lang->product->dynamic = 'Dynamics';
$lang->product->view = 'Overview';
$lang->product->edit = "Edit {$lang->productCommon}";
@@ -39,9 +39,9 @@ $lang->product->projects = "Linked {$lang->projectCommon}";
$lang->product->cases = 'Case';
$lang->product->builds = 'Build';
$lang->product->roadmap = 'Roadmap';
$lang->product->doc = 'Doc';
$lang->product->doc = 'Documents';
$lang->product->project = $lang->projectCommon . ' List';
$lang->product->build = 'Build';
$lang->product->build = 'Build List';
$lang->product->projectInfo = "{$lang->projectCommon}s that are linked to this {$lang->productCommon} are listed below.";
$lang->product->currentProject = "{$lang->projectCommon}";
@@ -57,7 +57,7 @@ $lang->product->errorNoProduct = "No {$lang->productCommon} is created yet!";
$lang->product->accessDenied = "You have no access to the {$lang->productCommon}.";
$lang->product->id = 'ID';
$lang->product->name = 'Product Name';
$lang->product->name = "{$lang->productCommon} Name";
$lang->product->code = 'Code';
$lang->product->line = "{$lang->productCommon} Line";
$lang->product->order = 'Rank';
@@ -66,7 +66,7 @@ $lang->product->typeAB = 'Type';
$lang->product->status = 'Status';
$lang->product->desc = 'Description';
$lang->product->manager = 'Managers';
$lang->product->PO = 'Product Owner';
$lang->product->PO = "{$lang->productCommon} Owner";
$lang->product->QD = 'QA Manager';
$lang->product->RD = 'Release Manager';
$lang->product->acl = 'ACL';
+1 -1
View File
@@ -202,7 +202,7 @@
<td><em><?php echo $product->stories['active']?></em></td>
<th><?php echo $lang->product->plans?></th>
<td><em><?php echo $product->plans?></em></td>
<th><?php echo $lang->product->bugs?></th>
<th class='w-80px'><?php echo $lang->product->bugs?></th>
<td><em><?php echo $product->bugs?></em></td>
</tr>
<tr>
+7 -7
View File
@@ -10,12 +10,12 @@
* @link http://www.zentao.net
*/
$lang->productplan->common = $lang->productCommon . ' Plan';
$lang->productplan->browse = "View";
$lang->productplan->browse = "Plans";
$lang->productplan->index = "List";
$lang->productplan->create = "Create Plan";
$lang->productplan->edit = "Edit Plan";
$lang->productplan->delete = "Delete";
$lang->productplan->view = "Detail";
$lang->productplan->delete = "Delete Plan";
$lang->productplan->view = "Plan Detail";
$lang->productplan->bugSummary = "Total <strong>%s</strong> Bugs on this page.";
$lang->productplan->basicInfo = 'Basic Info';
$lang->productplan->batchEdit = 'Batch Edit';
@@ -26,7 +26,7 @@ $lang->productplan->unlinkStory = "Unlink Story";
$lang->productplan->batchUnlinkStory = "Batch Unlink";
$lang->productplan->linkedStories = 'Linked Stories';
$lang->productplan->unlinkedStories = 'Unlinked Stories';
$lang->productplan->updateOrder = 'Rank';
$lang->productplan->updateOrder = 'Order';
$lang->productplan->createChildren = "Create Child Plans";
$lang->productplan->linkBug = "Link Bug";
@@ -37,9 +37,9 @@ $lang->productplan->unlinkedBugs = 'Unlinked Bugs';
$lang->productplan->unexpired = 'Unexpired Plans';
$lang->productplan->all = 'All Plans';
$lang->productplan->confirmDelete = "Do you want to delete this Plan?";
$lang->productplan->confirmUnlinkStory = "Do you want to unlink this Story?";
$lang->productplan->confirmUnlinkBug = "Do you want to unlink this Bug?";
$lang->productplan->confirmDelete = "Do you want to delete this plan?";
$lang->productplan->confirmUnlinkStory = "Do you want to unlink this story?";
$lang->productplan->confirmUnlinkBug = "Do you want to unlink this bug?";
$lang->productplan->noPlan = 'No plans yet. ';
$lang->productplan->id = 'ID';
+1
View File
@@ -1,4 +1,5 @@
.block-burn .panel-body{margin-top: 20px;}
.data-stats .widthTr td{padding:0px;}
#burnWrapper {max-width: 400px; margin: 0 auto; padding: 8px; position: relative;}
#burnYUnit {position: absolute; color: #CBD0DB; top: -10px; left: 10px;}
+25 -6
View File
@@ -10,12 +10,31 @@ $(function()
/* Save burn as image.*/
function downloadBurn()
{
var canvas = $('#burnCanvas');
var type = 'png';
var imgSrc = canvas.get(0).toDataURL("image/png");
imgData = imgSrc.replace(type,'image/octet-stream');
var filename = 'burn.' + type;
saveFile(imgData,filename);
var $canvas = $('#burnCanvas');
$('#burnWrapper').append("<div class='hidden' id='cloneCanvas'></div>");
$('#cloneCanvas').append($canvas.clone());
$('#cloneCanvas').append("<img id='cloneImage' />");
$('#cloneCanvas #cloneImage').attr('src', $canvas.get(0).toDataURL("image/png"));
setTimeout(function()
{
/* Add watermark */
var canvas = document.querySelector('#cloneCanvas #burnCanvas');
var cans = canvas.getContext('2d');
cans.drawImage($('#cloneCanvas #cloneImage').get(0), 0, 0);
cans.font = "16px Microsoft JhengHei";
cans.fillStyle = "rgba(17, 17, 17, 0.50)";
cans.textAlign = 'left';
cans.textBaseline = 'Middle';
cans.fillText(watermark, 50, canvas.height - 50);
var type = 'png';
var $canvas = $('#cloneCanvas #burnCanvas');
var imgSrc = $canvas.get(0).toDataURL("image/png");
imgData = imgSrc.replace(type,'image/octet-stream');
var filename = projectName + '.' + type;
saveFile(imgData,filename);
$('#burnWrapper #cloneCanvas').remove();
}, 500);
}
var saveFile = function(data, filename)
+2 -1
View File
@@ -194,6 +194,7 @@ $(function()
shown: function(){$('.modal-iframe').addClass('with-titlebar').data('cancel-reload', true)},
hidden: refresh
});
return false;
return false;
});
setTimeout(function(){$('#kanban .c-side.has-btn').removeAttr('title');}, 500);
});
+17 -15
View File
@@ -36,6 +36,7 @@ $lang->project->release = 'Release';
$lang->project->acl = 'ACL';
$lang->project->teamname = 'Team Name';
$lang->project->order = "Rank {$lang->projectCommon}";
$lang->project->orderAB = "Rank";
$lang->project->products = "Link {$lang->productCommon}";
$lang->project->whitelist = 'Whitelist';
$lang->project->totalEstimate = 'Estimates';
@@ -59,6 +60,7 @@ $lang->project->readjustTime = "Adjust {$lang->projectCommon} Begin and End";
$lang->project->readjustTask = 'Adjust Task Begin and End';
$lang->project->effort = 'Effort';
$lang->project->relatedMember = 'Team';
$lang->project->watermark = 'Exported by ZenTao';
$lang->project->start = 'Start';
$lang->project->activate = 'Activate';
@@ -106,13 +108,13 @@ $lang->project->aclList['custom'] = 'Whitelist (Team members and the whitelist
/* 方法列表。*/
$lang->project->index = "Project Home";
$lang->project->task = 'Tasks';
$lang->project->task = 'Task List';
$lang->project->groupTask = 'Group View';
$lang->project->story = 'Story';
$lang->project->bug = 'Bug';
$lang->project->story = 'Story List';
$lang->project->bug = 'Bug List';
$lang->project->dynamic = 'Dynamics';
$lang->project->latestDynamic = 'Dynamics';
$lang->project->build = 'Build';
$lang->project->build = 'Build List';
$lang->project->testtask = 'Request';
$lang->project->burn = 'Burndown';
$lang->project->computeBurn = 'Update';
@@ -131,25 +133,25 @@ $lang->project->unlinkedProducts = 'Unlinked Products';
$lang->project->view = "Overview";
$lang->project->create = "Create {$lang->projectCommon}";
$lang->project->copy = "Copy {$lang->projectCommon}";
$lang->project->delete = "Delete";
$lang->project->browse = "Browse";
$lang->project->delete = "Delete {$lang->projectCommon}";
$lang->project->browse = "{$lang->projectCommon} List";
$lang->project->edit = "Edit Project";
$lang->project->batchEdit = "Batch Edit";
$lang->project->manageMembers = 'Manage Team';
$lang->project->unlinkMember = 'Remove Member';
$lang->project->unlinkStory = 'Unlink';
$lang->project->unlinkStory = 'Unlink Story';
$lang->project->batchUnlinkStory = 'Batch Unlink Stories';
$lang->project->importTask = 'Transfer Task';
$lang->project->importPlanStories = 'Link Stories By Plans';
$lang->project->importBug = 'Import Bug';
$lang->project->updateOrder = 'Rank';
$lang->project->updateOrder = "Rank {$lang->projectCommon}";
$lang->project->tree = 'Tree';
$lang->project->treeTask = 'Show Task';
$lang->project->treeStory = 'Show Story';
$lang->project->treeOnlyTask = 'Task Only';
$lang->project->treeOnlyStory = 'Story Only';
$lang->project->treeTask = 'Show Task Only';
$lang->project->treeStory = 'Show Story Only';
$lang->project->treeOnlyTask = 'Show Task Only';
$lang->project->treeOnlyStory = 'Show Story Only';
$lang->project->storyKanban = 'Story Kanban';
$lang->project->storySort = 'Sort Story';
$lang->project->storySort = 'Order Story';
$lang->project->importPlanStory = '' . $lang->projectCommon . ' is created!\nDo you want to import stories that have been linked to the plan?';
$lang->project->iteration = 'Iterations';
$lang->project->iterationInfo = '%s Iterations';
@@ -199,7 +201,7 @@ $lang->project->begin = 'Begin';
$lang->project->end = 'End';
$lang->project->lblStats = 'Efforts';
$lang->project->stats = 'Available: <strong>%s</strong>(h). Estimates: <strong>%s</strong>(h). Cost: <strong>%s</strong>(h). Left: <strong>%s</strong>(h).';
$lang->project->taskSummary = "Total <strong>%s</strong> tasks on this page. Waiting: <strong>%s</strong>. Doing: <strong>%s</strong>. &nbsp;&nbsp;&nbsp; Estimates: <strong>%s</strong>(h). Cost: <strong>%s</strong>(h). Left: <strong>%s</strong>(h).";
$lang->project->taskSummary = "Total tasks on this page:<strong>%s</strong>. Waiting: <strong>%s</strong>. Doing: <strong>%s</strong>. &nbsp;&nbsp;&nbsp; Estimates: <strong>%s</strong>(h). Cost: <strong>%s</strong>(h). Left: <strong>%s</strong>(h).";
$lang->project->checkedSummary = "Selected: <strong>%total%</strong>. Waiting: <strong>%wait%</strong>. Doing: <strong>%doing%</strong>. Estimates: <strong>%estimate%</strong>(h). Cost: <strong>%consumed%</strong>(h). Left: <strong>%left%</strong>(h).";
$lang->project->memberHoursAB = "%s has <strong>%s</ strong> hours.";
$lang->project->memberHours = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">%s Available Hours</div><div class="segment-value">%s</div></div></div></div>';
@@ -210,7 +212,7 @@ $lang->project->wbs = "Create Task";
$lang->project->batchWBS = "Batch Create";
$lang->project->howToUpdateBurn = "<a href='https://api.zentao.pm/goto.php?item=burndown' target='_blank' title='How to update the Burndown Chart?' class='btn btn-link'>Help <i class='icon icon-help'></i></a>";
$lang->project->whyNoStories = "No story can be linked. Please check whether there is any story in {$lang->projectCommon} which is linked to {$lang->productCommon} and make sure it has been reviewed.";
$lang->project->productStories = "Stories linked to {$lang->projectCommon} are the subeset of stories linked to {$lang->productCommon}. Stories can only be linked after they pass the review. <a href='%s'> Link Story</a> now.";
$lang->project->productStories = "Stories linked to {$lang->projectCommon} are the subeset of stories linked to {$lang->productCommon}. Stories can only be linked after they pass the review. <a href='%s'> Link Stories</a> now.";
$lang->project->haveDraft = "%s stories in draft, so they can't be linked.";
$lang->project->doneProjects = 'Finished';
$lang->project->selectDept = 'Select Department';
+2
View File
@@ -36,6 +36,7 @@ $lang->project->release = '发布';
$lang->project->acl = '访问控制';
$lang->project->teamname = '团队名称';
$lang->project->order = $lang->projectCommon . '排序';
$lang->project->orderAB = '排序';
$lang->project->products = '相关' . $lang->productCommon;
$lang->project->whitelist = '分组白名单';
$lang->project->totalEstimate = '预计';
@@ -59,6 +60,7 @@ $lang->project->readjustTime = "调整{$lang->projectCommon}起止时间";
$lang->project->readjustTask = '顺延任务的起止时间';
$lang->project->effort = '日志';
$lang->project->relatedMember = '相关成员';
$lang->project->watermark = '由禅道导出';
$lang->project->start = "开始";
$lang->project->activate = "激活";
+2 -2
View File
@@ -127,11 +127,11 @@ class projectModel extends model
foreach($subMenu as $menuKey => $menu)
{
$itemMenu = zget($projectSubMenu, $menuKey, '');
if($moduleName == strtolower($menu->link['module']) and
if(($moduleName == strtolower($menu->link['module']) and
(
$methodName == strtolower($menu->link['method']) or
(is_array($itemMenu) and isset($itemMenu['alias']) and strpos($itemMenu['alias'], $methodName) !== false)
)
)) or (is_array($itemMenu) and isset($itemMenu['subModule']) and strpos($itemMenu['subModule'], $moduleName) !== false)
)
{
$this->lang->project->menu->{$key}['link'] = $menu->text . "|" . join('|', $menu->link);
+3 -2
View File
@@ -43,7 +43,8 @@
</th>
<th><?php common::printOrderLink('name', $orderBy, $vars, $lang->project->name);?></th>
<th class='w-100px'><?php common::printOrderLink('code', $orderBy, $vars, $lang->project->code);?></th>
<th class='w-100px'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->project->PM);?></th>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-130px' : '1-100px';?>
<th class='<?php echo $colWidth;?>'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->project->PM);?></th>
<th class='w-90px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->project->end);?></th>
<th class='w-90px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->project->status);?></th>
<th class='w-70px'><?php echo $lang->project->totalEstimate;?></th>
@@ -52,7 +53,7 @@
<th class='w-150px'><?php echo $lang->project->progress;?></th>
<th class='w-100px'><?php echo $lang->project->burn;?></th>
<?php if($canOrder):?>
<th class='w-60px sort-default'><?php common::printOrderLink('order', $orderBy, $vars, $lang->project->updateOrder);?></th>
<th class='w-60px sort-default'><?php common::printOrderLink('order', $orderBy, $vars, $lang->project->orderAB);?></th>
<?php endif;?>
</tr>
</thead>
+3 -3
View File
@@ -54,9 +54,9 @@
<th class='w-80px'> <?php common::printOrderLink('severity', $orderBy, $vars, $lang->bug->severityAB);?></th>
<th class='c-pri'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
<th> <?php common::printOrderLink('title', $orderBy, $vars, $lang->bug->title);?></th>
<th class='w-user'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
<th class='w-110px c-assignedTo'><?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->assignedToAB);?></th>
<th class='w-user'> <?php common::printOrderLink('resolvedBy', $orderBy, $vars, $lang->bug->resolvedBy);?></th>
<th class='c-user'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
<th class='w-110px c-user'><?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->assignedToAB);?></th>
<th class='c-user'> <?php common::printOrderLink('resolvedBy', $orderBy, $vars, $lang->bug->resolvedBy);?></th>
<th class='w-resolution'><?php common::printOrderLink('resolution', $orderBy, $vars, $lang->bug->resolutionAB);?></th>
<th class='c-actions-5'><?php echo $lang->actions;?></th>
</tr>
+3 -1
View File
@@ -13,6 +13,8 @@
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/chart.html.php';?>
<?php js::set('projectID', $projectID);?>
<?php js::set('projectName', $project->name);?>
<?php js::set('watermark', $lang->project->watermark);?>
<?php js::set('type', $type);?>
<div id='mainMenu' class='clearfix'>
<div class='btn-toolbar pull-left'>
@@ -21,7 +23,7 @@
common::printLink('project', 'computeBurn', 'reload=yes', '<i class="icon icon-refresh"></i> ' . $lang->project->computeBurn, 'hiddenwin', "title='{$lang->project->computeBurn}{$lang->project->burn}' class='btn btn-primary' id='computeBurn'");
echo '<div class="space"></div>';
echo html::a($this->createLink('project', 'burn', "projectID=$projectID&type=$weekend&interval=$interval"), $lang->project->$weekend, '', "class='btn btn-link'");
common::printLink('project', 'fixFirst', "project=$project->id", $lang->project->fixFirst, '', "class='btn btn-link iframe' data-width='600'");
common::printLink('project', 'fixFirst', "project=$project->id", $lang->project->fixFirst, '', "class='btn btn-link iframe' data-width='700'");
echo $lang->project->howToUpdateBurn;
?>
<?php if($interval):?>
+1 -1
View File
@@ -48,7 +48,7 @@
<?php if($productType != 'normal'):?>
<th class='w-80px'><?php echo $lang->product->branchName[$productType];?></th>
<?php endif;?>
<th class='w-user'><?php echo $lang->openedByAB;?></th>
<th class='c-user'><?php echo $lang->openedByAB;?></th>
<th class='w-80px text-center'><?php echo $lang->story->estimateAB;?></th>
</tr>
</thead>
+6 -16
View File
@@ -27,16 +27,11 @@
<?php $checked = 'checked';?>
<div class='col-sm-4'>
<div class='product <?php echo $checked . (isset($branchGroups[$productID]) ? ' has-branch' : '')?>'>
<div class="checkbox-primary">
<div class="checkbox-primary" title='<?php echo $productName;?>'>
<?php echo "<input type='checkbox' name='products[$productID]' value='$productID' $checked id='products{$productID}'>";?>
<label class='text-ellipsis checkbox-inline' for='<?php echo 'products'. $productID?>';><?php echo $productName;?></label>
<label class='text-ellipsis checkbox-inline' for='<?php echo 'products' . $productID;?>' title='<?php echo $productName;?>'><?php echo $productName;?></label>
</div>
<?php
if(isset($branchGroups[$productID]))
{
echo html::select("branch[$productID]", $branchGroups[$productID], $linkedProducts[$productID]->branch, "class='form-control chosen'");
}
?>
<?php if(isset($branchGroups[$productID])) echo html::select("branch[$productID]", $branchGroups[$productID], $linkedProducts[$productID]->branch, "class='form-control chosen'");?>
</div>
</div>
<?php unset($allProducts[$productID]);?>
@@ -50,16 +45,11 @@
<?php foreach($allProducts as $productID => $productName):?>
<div class='col-sm-4'>
<div class='product<?php echo isset($branchGroups[$productID]) ? ' has-branch' : ''?>'>
<div class="checkbox-primary">
<div class="checkbox-primary" title='<?php echo $productName;?>'>
<?php echo "<input type='checkbox' name='products[$productID]' value='$productID' id='products{$productID}'>";?>
<label class='text-ellipsis checkbox-inline' for='<?php echo 'products'. $productID?>';><?php echo $productName;?></label>
<label class='text-ellipsis checkbox-inline' for='<?php echo 'products' . $productID;?>'><?php echo $productName;?></label>
</div>
<?php
if(isset($branchGroups[$productID]))
{
echo html::select("branch[$productID]", $branchGroups[$productID], '', "class='form-control chosen'");
}
?>
<?php if(isset($branchGroups[$productID])) echo html::select("branch[$productID]", $branchGroups[$productID], '', "class='form-control chosen'");?>
</div>
</div>
<?php endforeach;?>
+1 -1
View File
@@ -104,7 +104,7 @@
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
</th>
<?php if($canOrder):?>
<th class='w-80px c-sort {sorter:false}'> <?php common::printOrderLink('order', $orderBy, $vars, $lang->project->updateOrder);?></th>
<th class='w-60px c-sort {sorter:false}'> <?php common::printOrderLink('order', $orderBy, $vars, $lang->project->orderAB);?></th>
<?php endif;?>
<th class='c-pri {sorter:false}'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
<th class='c-name {sorter:false}'> <?php common::printOrderLink('title', $orderBy, $vars, $lang->story->title);?></th>
+3 -2
View File
@@ -133,7 +133,7 @@
<?php $i++;?>
<?php endforeach;?>
<div class="col-xs-6">
<?php common::printLink('doc', 'createLib', "type=project&objectID=$project->id", "<i class='icon icon-plus hl-primary text-primary'></i> &nbsp;" . $lang->doc->createLib, '', "class='text-muted iframe'");?>
<?php common::printLink('doc', 'createLib', "type=project&objectID=$project->id", "<i class='icon icon-plus hl-primary text-primary'></i> &nbsp;" . $lang->doc->createLib, '', "class='text-muted iframe' data-width='1000px'");?>
</div>
<?php endif;?>
</div>
@@ -225,8 +225,9 @@
<div class="detail-content">
<table class='table table-data data-stats'>
<tbody>
<tr class='widthTr'><td class='w-100px'></td><td></td><td></td><td></td></tr>
<tr>
<td colspan="2">
<td colspan="4">
<?php $progress = ($project->totalConsumed + $project->totalLeft) ? round($project->totalConsumed / ($project->totalConsumed + $project->totalLeft), 3) * 100 : 0;?>
<?php echo $lang->projectCommon . $lang->project->progress;?> <em><?php echo $progress . $lang->percent;?></em> &nbsp;
<div class="progress inline-block">
+4 -4
View File
@@ -17,15 +17,15 @@ $lang->release->linkBug = "Link Bug";
$lang->release->delete = "Delete Release";
$lang->release->deleted = 'Deleted';
$lang->release->view = "Overview";
$lang->release->browse = "Release";
$lang->release->browse = "Releases";
$lang->release->changeStatus = "Change Status";
$lang->release->batchUnlink = "Batch Unlink";
$lang->release->batchUnlinkStory = "Batch Unlink Story";
$lang->release->batchUnlinkBug = "Batch Unlink Bug";
$lang->release->confirmDelete = "Do you want to delete this Release?";
$lang->release->confirmUnlinkStory = "Do you want to remove this Story?";
$lang->release->confirmUnlinkBug = "Do you want to remove this Bug?";
$lang->release->confirmDelete = "Do you want to delete this release?";
$lang->release->confirmUnlinkStory = "Do you want to remove this story?";
$lang->release->confirmUnlinkBug = "Do you want to remove this bug?";
$lang->release->existBuild = '『Build』『%s』existed. You could change『name』or choose a『build』.';
$lang->release->noRelease = 'No releases yet.';
+3 -3
View File
@@ -155,9 +155,9 @@
</th>
<th class='text-left'><?php common::printOrderLink('title', $orderBy, $vars, $lang->bug->title);?></th>
<th class='w-100px'> <?php common::printOrderLink('status', $orderBy, $vars, $lang->bug->status);?></th>
<th class='w-user'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
<th class='c-user'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
<th class='w-date'> <?php common::printOrderLink('openedDate', $orderBy, $vars, $lang->bug->openedDateAB);?></th>
<th class='w-user'> <?php common::printOrderLink('resolvedBy', $orderBy, $vars, $lang->bug->resolvedByAB);?></th>
<th class='c-user'> <?php common::printOrderLink('resolvedBy', $orderBy, $vars, $lang->bug->resolvedByAB);?></th>
<th class='w-100px'> <?php common::printOrderLink('resolvedDate', $orderBy, $vars, $lang->bug->resolvedDateAB);?></th>
<th class='w-50px'> <?php echo $lang->actions;?></th>
</tr>
@@ -301,7 +301,7 @@
<div class='detail-content'>
<table class='table table-data'>
<tr>
<th class='w-80px'><?php echo $lang->release->product;?></th>
<th class='w-90px'><?php echo $lang->release->product;?></th>
<td><?php echo $release->productName;?></td>
</tr>
<?php if($release->productType != 'normal'):?>
+1 -1
View File
@@ -11,7 +11,7 @@
$list .= '|';
list($label, $module, $method, $params) = explode('|', $list);
$class = $label == $title ? 'selected' : '';
if(common::hasPriv($module, $method)) echo html::a($this->createLink($module, $method, $params), '<i class="icon icon-file-text"></i> ' . $label, '', "class='$class'");
if(common::hasPriv($module, $method)) echo html::a($this->createLink($module, $method, $params), '<i class="icon icon-file-text"></i> ' . $label, '', "class='$class' title='$label'");
}
?>
</div>
+3 -3
View File
@@ -4,11 +4,11 @@ $lang->score->record = 'Points';
$lang->score->current = 'My Points';
$lang->score->level = 'Level Point';
$lang->score->reset = 'Reset';
$lang->score->tips = 'Added yesterday: <strong>%d</strong><br/> Total: <strong>%d</strong>';
$lang->score->tips = 'Point added yesterday: <strong>%d</strong><br/> Total Points: <strong>%d</strong>';
$lang->score->resetTips = 'It will take a while. <strong>Do not close the window.</strong>';
$lang->score->resetStart = 'Start';
$lang->score->resetLoading = 'Processing: ';
$lang->score->resetFinish = 'Completed';
$lang->score->resetFinish = 'Finish';
$lang->score->id = 'ID';
$lang->score->userID = 'UserID';
@@ -73,7 +73,7 @@ $lang->score->methods['testtask']['runCase'] = 'Run Test Case';
$lang->score->methods['testcase']['create'] = 'Create Test Case';
$lang->score->methods['build']['create'] = 'Create Build';
$lang->score->methods['project']['create'] = 'Create Project';
$lang->score->methods['project']['close'] = 'Complete Project';
$lang->score->methods['project']['close'] = 'Finish Project';
$lang->score->methods['productplan']['create'] = 'Create Plan';
$lang->score->methods['release']['create'] = 'Create Release';
$lang->score->methods['block']['set'] = 'Custom Block';
+1
View File
@@ -42,6 +42,7 @@ $operatorWidth = $app->getClientLang() == 'en' ? 'w-110px' : 'w-90px';
#queryBox select#groupAndOr {padding-right:2px; padding-left:5px;}
#queryBox .chosen-container-single .chosen-single>span {margin-right:5px;}
#queryBox .form-actions .btn {margin-right: 5px;}
#userQueries {border-left: 1px solid #eee; vertical-align: top;}
#userQueries > h4 {margin: 0 0 6px;}
#userQueries ul {list-style: none; padding-left: 0; margin: 0; max-height:75px; overflow:auto;}
+41 -38
View File
@@ -9,38 +9,41 @@
* @version $Id: en.php 5141 2013-07-15 05:57:15Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
$lang->story->create = "Create Story";
$lang->story->batchCreate = "Batch Create Stories";
$lang->story->change = "Change Story";
$lang->story->changed = 'Change';
$lang->story->assignTo = 'Assign';
$lang->story->review = 'Need Review';
$lang->story->batchReview = 'Batch Review';
$lang->story->edit = "Edit Story";
$lang->story->batchEdit = "Batch Edit";
$lang->story->subdivide = 'Decompose';
$lang->story->close = 'Close Story';
$lang->story->batchClose = 'Batch Close';
$lang->story->activate = 'Activate';
$lang->story->delete = "Delete";
$lang->story->view = "Story Detail";
$lang->story->setting = "Settings";
$lang->story->tasks = "Linked Tasks";
$lang->story->bugs = "Linked Bugs";
$lang->story->cases = "Linked Cases";
$lang->story->taskCount = 'Tasks';
$lang->story->bugCount = 'Bugs';
$lang->story->caseCount = 'Cases';
$lang->story->taskCountAB = 'T';
$lang->story->bugCountAB = 'B';
$lang->story->caseCountAB = 'C';
$lang->story->linkStory = 'Link';
$lang->story->unlinkStory = 'UnLinked';
$lang->story->export = "Export";
$lang->story->zeroCase = "Story with 0 case";
$lang->story->zeroTask = "Story with 0 task";
$lang->story->reportChart = "Report";
$lang->story->copyTitle = "Copy Title";
$lang->story->create = "Create Story";
$lang->story->batchCreate = "Batch Create Stories";
$lang->story->change = "Change";
$lang->story->changeAction = "Change Story";
$lang->story->changed = 'Change';
$lang->story->assignTo = 'Assign';
$lang->story->review = 'Review';
$lang->story->needReview = 'Need Review';
$lang->story->batchReview = 'Batch Review';
$lang->story->edit = "Edit Story";
$lang->story->batchEdit = "Batch Edit";
$lang->story->subdivide = 'Decompose';
$lang->story->close = 'Close';
$lang->story->closeAction = 'Close Story';
$lang->story->batchClose = 'Batch Close';
$lang->story->activate = 'Activate';
$lang->story->delete = "Delete";
$lang->story->view = "Story Detail";
$lang->story->setting = "Settings";
$lang->story->tasks = "Linked Tasks";
$lang->story->bugs = "Linked Bugs";
$lang->story->cases = "Linked Cases";
$lang->story->taskCount = 'Tasks';
$lang->story->bugCount = 'Bugs';
$lang->story->caseCount = 'Cases';
$lang->story->taskCountAB = 'T';
$lang->story->bugCountAB = 'B';
$lang->story->caseCountAB = 'C';
$lang->story->linkStory = 'Link Story';
$lang->story->unlinkStory = 'UnLinked';
$lang->story->export = "Export";
$lang->story->zeroCase = "Story with 0 case";
$lang->story->zeroTask = "Story with 0 task";
$lang->story->reportChart = "Report";
$lang->story->copyTitle = "Copy Title";
$lang->story->batchChangePlan = "Batch Change Plans";
$lang->story->batchChangeBranch = "Batch Change Branches";
$lang->story->batchChangeStage = "Batch Change Phases";
@@ -171,7 +174,7 @@ $lang->story->legendLifeTime = 'Story Life ';
$lang->story->legendRelated = 'Related Info';
$lang->story->legendMailto = 'Mailto';
$lang->story->legendAttatch = 'Files';
$lang->story->legendProjectAndTask = $lang->projectCommon . ' Tasks';
$lang->story->legendProjectAndTask = $lang->projectCommon . ' And Task';
$lang->story->legendBugs = 'Linked Bugs';
$lang->story->legendFromBug = 'From Bug';
$lang->story->legendCases = 'Linked Cases';
@@ -187,15 +190,15 @@ $lang->story->lblActivate = 'Activate';
$lang->story->lblClose = 'Close';
$lang->story->lblTBC = 'Task/Bug/Case';
$lang->story->checkAffection = 'Impact';
$lang->story->affectedProjects = '' . $lang->projectCommon;
$lang->story->affectedBugs = 'Bug';
$lang->story->affectedCases = 'Case';
$lang->story->checkAffection = 'Influence';
$lang->story->affectedProjects = '' . $lang->projectCommon . 's';
$lang->story->affectedBugs = 'Bugs';
$lang->story->affectedCases = 'Cases';
$lang->story->specTemplate = "As a < type of user >, I want < some goal > so that < some reason >.";
$lang->story->needNotReview = 'No Review Required';
$lang->story->successSaved = "Story is saved!";
$lang->story->confirmDelete = "Do you want to delete this Story?";
$lang->story->confirmDelete = "Do you want to delete this story?";
$lang->story->errorEmptyChildStory = '『Decomposed Stories』canot be blank.';
$lang->story->mustChooseResult = 'Select Result';
$lang->story->mustChoosePreVersion = 'Select a version to revert to.';
+35 -32
View File
@@ -9,38 +9,41 @@
* @version $Id: zh-cn.php 5141 2013-07-15 05:57:15Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
$lang->story->create = "提需求";
$lang->story->batchCreate = "批量创建";
$lang->story->change = "变更";
$lang->story->changed = '需求变更';
$lang->story->assignTo = '指派';
$lang->story->review = '评审';
$lang->story->batchReview = '批量评审';
$lang->story->edit = "编辑";
$lang->story->batchEdit = "批量编辑";
$lang->story->subdivide = '细分';
$lang->story->close = '关闭';
$lang->story->batchClose = '批量关闭';
$lang->story->activate = '激活';
$lang->story->delete = "删除";
$lang->story->view = "需求详情";
$lang->story->setting = "设置";
$lang->story->tasks = "相关任务";
$lang->story->bugs = "相关Bug";
$lang->story->cases = "相关用例";
$lang->story->taskCount = '任务数';
$lang->story->bugCount = 'Bug数';
$lang->story->caseCount = '用例数';
$lang->story->taskCountAB = 'T';
$lang->story->bugCountAB = 'B';
$lang->story->caseCountAB = 'C';
$lang->story->linkStory = '关联需求';
$lang->story->unlinkStory = '移除相关需求';
$lang->story->export = "导出数据";
$lang->story->zeroCase = "零用例需求";
$lang->story->zeroTask = "只列零任务需求";
$lang->story->reportChart = "统计报表";
$lang->story->copyTitle = "同需求名称";
$lang->story->create = "提需求";
$lang->story->batchCreate = "批量创建";
$lang->story->change = "变更";
$lang->story->changeAction = "变更需求";
$lang->story->changed = '需求变更';
$lang->story->assignTo = '指派';
$lang->story->review = '评审';
$lang->story->needReview = '需要评审';
$lang->story->batchReview = '批量评审';
$lang->story->edit = "编辑";
$lang->story->batchEdit = "批量编辑";
$lang->story->subdivide = '细分';
$lang->story->close = '关闭';
$lang->story->closeAction = '关闭需求';
$lang->story->batchClose = '批量关闭';
$lang->story->activate = '激活';
$lang->story->delete = "删除";
$lang->story->view = "需求详情";
$lang->story->setting = "设置";
$lang->story->tasks = "相关任务";
$lang->story->bugs = "相关Bug";
$lang->story->cases = "相关用例";
$lang->story->taskCount = '任务数';
$lang->story->bugCount = 'Bug数';
$lang->story->caseCount = '用例数';
$lang->story->taskCountAB = 'T';
$lang->story->bugCountAB = 'B';
$lang->story->caseCountAB = 'C';
$lang->story->linkStory = '关联需求';
$lang->story->unlinkStory = '移除相关需求';
$lang->story->export = "导出数据";
$lang->story->zeroCase = "零用例需求";
$lang->story->zeroTask = "只列零任务需求";
$lang->story->reportChart = "统计报表";
$lang->story->copyTitle = "同需求名称";
$lang->story->batchChangePlan = "批量修改计划";
$lang->story->batchChangeBranch = "批量修改分支";
$lang->story->batchChangeStage = "批量修改阶段";
+2 -2
View File
@@ -15,8 +15,8 @@
<th class='text-left'><?php echo $lang->task->name;?></th>
<th class='w-100px'><?php echo $lang->task->assignedTo;?></th>
<th class='c-status'><?php echo $lang->task->status;?></th>
<th class='c-num'><?php echo $lang->task->consumed;?></th>
<th class='c-num'><?php echo $lang->task->left;?></th>
<th class='w-100px'><?php echo $lang->task->consumed;?></th>
<th class='w-90px'><?php echo $lang->task->left;?></th>
</tr>
</thead>
<?php if(isset($story->tasks[$projectID])):?>
+1 -1
View File
@@ -54,7 +54,7 @@
<th class='w-150px<?php echo zget($visibleFields, 'verify', ' hidden') . zget($requiredFields, 'verify', '', ' required');?>'><?php echo $lang->story->verify;?></th>
<th class='col-pri<?php echo zget($visibleFields, 'pri', ' hidden') . zget($requiredFields, 'pri', '', ' required');?>'><?php echo $lang->story->pri;?></th>
<th class='col-estimate<?php echo zget($visibleFields, 'estimate', ' hidden') . zget($requiredFields, 'estimate', '', ' required');?>'><?php echo $lang->story->estimate;?></th>
<th class='col-review<?php echo zget($visibleFields, 'review', ' hidden') . zget($requiredFields, 'review', '', ' required');?>'><?php echo $lang->story->review;?></th>
<th class='col-review<?php echo zget($visibleFields, 'review', ' hidden') . zget($requiredFields, 'review', '', ' required');?>'><?php echo $lang->story->needReview;?></th>
<th class='w-100px<?php echo zget($visibleFields, 'keywords', ' hidden') . zget($requiredFields, 'keywords', '', ' required');?>'><?php echo $lang->story->keywords;?></th>
</tr>
</thead>
+59 -59
View File
@@ -25,65 +25,65 @@ var assignedTo = '<?php $story->lastEditedBy ? print($story->lastEditedBy) : pri
</h2>
</div>
<form method='post' target='hiddenwin'>
<table class='table table-form'>
<tr>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-110px' : 'w-80px';?>
<th class='<?php echo $colWidth;?>'><?php echo $lang->story->reviewedDate;?></th>
<td class='w-p25-f'><?php echo html::input('reviewedDate', helper::today(), "class='form-control form-date'");?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->story->reviewResult;?></th>
<td class = 'required'><?php echo html::select('result', $lang->story->reviewResultList, '', 'class=form-control onchange="switchShow(this.value)"');?></td><td></td>
</tr>
<tr id='rejectedReasonBox' class='hide'>
<th><?php echo $lang->story->rejectedReason;?></th>
<td><?php echo html::select('closedReason', $lang->story->reasonList, '', 'class=form-control onchange="setStory(this.value)"');?></td><td></td>
</tr>
<tr id='priBox' class='hide'>
<th><?php echo $lang->story->pri;?></th>
<td><?php echo html::select('pri', $lang->story->priList, $story->pri,"class='form-control'");?></td><td></td>
</tr>
<tr id='estimateBox' class='hide'>
<th><?php echo $lang->story->estimate;?></th>
<td><?php echo html::input('estimate', $story->estimate, "class='form-control'");?></td><td></td>
</tr>
<tr id='duplicateStoryBox' class='hide'>
<th><?php echo $lang->story->duplicateStory;?></th>
<td><?php echo html::input('duplicateStory', '', "class='form-control'");?></td><td></td>
</tr>
<tr id='childStoriesBox' class='hide'>
<th><?php echo $lang->story->childStories;?></th>
<td><?php echo html::input('childStories', '', "class='form-control'");?></td><td></td>
</tr>
<?php if($story->status == 'changed' or ($story->status == 'draft' and $story->version > 1)):?>
<tr id='preVersionBox' class='hide'>
<th><?php echo $lang->story->preVersion;?></th>
<td colspan='2'><?php echo html::radio('preVersion', array_combine(range($story->version - 1, 1), range($story->version - 1, 1)), $story->version - 1);?></td>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->story->assignedTo;?></th>
<td><?php echo html::select('assignedTo', $users, $story->lastEditedBy ? $story->lastEditedBy : $story->openedBy, "class='form-control chosen'");?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->story->reviewedBy;?></th>
<td colspan='2'><?php echo html::select('reviewedBy[]', $users, $app->user->account, "class='form-control' multiple data-placeholder='{$lang->story->chosen->reviewedBy}'");?></td>
</tr>
<tr>
<th><?php echo $lang->story->comment;?></th>
<td colspan='2'><?php echo html::textarea('comment', '', "rows='8' class='form-control'");?></td>
</tr>
<tr>
<th><?php echo $lang->story->checkAffection;?></th>
<td colspan='2'><?php include './affected.html.php';?></td>
</tr>
<tr>
<td colspan='3' class='text-center form-actions'>
<?php echo html::submitButton();?>
<?php echo html::linkButton($lang->goback, $app->session->storyList ? $app->session->storyList : inlink('view', "storyID=$story->id"), 'self', '', 'btn btn-wide');?>
</td>
</tr>
</table>
<table class='table table-form'>
<tr>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-110px' : 'w-80px';?>
<th class='<?php echo $colWidth;?>'><?php echo $lang->story->reviewedDate;?></th>
<td class='w-p25-f'><?php echo html::input('reviewedDate', helper::today(), "class='form-control form-date'");?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->story->reviewResult;?></th>
<td class = 'required'><?php echo html::select('result', $lang->story->reviewResultList, '', 'class=form-control onchange="switchShow(this.value)"');?></td><td></td>
</tr>
<tr id='rejectedReasonBox' class='hide'>
<th><?php echo $lang->story->rejectedReason;?></th>
<td><?php echo html::select('closedReason', $lang->story->reasonList, '', 'class=form-control onchange="setStory(this.value)"');?></td><td></td>
</tr>
<tr id='priBox' class='hide'>
<th><?php echo $lang->story->pri;?></th>
<td><?php echo html::select('pri', $lang->story->priList, $story->pri,"class='form-control'");?></td><td></td>
</tr>
<tr id='estimateBox' class='hide'>
<th><?php echo $lang->story->estimate;?></th>
<td><?php echo html::input('estimate', $story->estimate, "class='form-control'");?></td><td></td>
</tr>
<tr id='duplicateStoryBox' class='hide'>
<th><?php echo $lang->story->duplicateStory;?></th>
<td><?php echo html::input('duplicateStory', '', "class='form-control'");?></td><td></td>
</tr>
<tr id='childStoriesBox' class='hide'>
<th><?php echo $lang->story->childStories;?></th>
<td><?php echo html::input('childStories', '', "class='form-control'");?></td><td></td>
</tr>
<?php if($story->status == 'changed' or ($story->status == 'draft' and $story->version > 1)):?>
<tr id='preVersionBox' class='hide'>
<th><?php echo $lang->story->preVersion;?></th>
<td colspan='2'><?php echo html::radio('preVersion', array_combine(range($story->version - 1, 1), range($story->version - 1, 1)), $story->version - 1);?></td>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->story->assignedTo;?></th>
<td><?php echo html::select('assignedTo', $users, $story->lastEditedBy ? $story->lastEditedBy : $story->openedBy, "class='form-control chosen'");?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->story->reviewedBy;?></th>
<td colspan='2'><?php echo html::select('reviewedBy[]', $users, $app->user->account, "class='form-control' multiple data-placeholder='{$lang->story->chosen->reviewedBy}'");?></td>
</tr>
<tr>
<th><?php echo $lang->story->comment;?></th>
<td colspan='2'><?php echo html::textarea('comment', '', "rows='8' class='form-control'");?></td>
</tr>
<tr>
<th><?php echo $lang->story->checkAffection;?></th>
<td colspan='2'><?php include './affected.html.php';?></td>
</tr>
<tr>
<td colspan='3' class='text-center form-actions'>
<?php echo html::submitButton();?>
<?php echo html::linkButton($lang->goback, $app->session->storyList ? $app->session->storyList : inlink('view', "storyID=$story->id"), 'self', '', 'btn btn-wide');?>
</td>
</tr>
</table>
</form>
<hr class='small' />
<div class='main'><?php include '../../common/view/action.html.php';?></div>
+1 -1
View File
@@ -311,7 +311,7 @@
</div>
<?php endif;?>
<div class="tab-pane <?php if($config->global->flow == 'onlyStory') echo 'active';?>" id='legendRelated'>
<?php $widthClass = $app->getClientLang() == 'en' ? 'w-120px' : 'w-70px';?>
<?php $widthClass = $app->getClientLang() == 'en' ? 'w-130px' : 'w-70px';?>
<table class="table table-data">
<tbody>
<?php if($config->global->flow != 'onlyStory'):?>
+2 -2
View File
@@ -97,9 +97,9 @@ $config->task->datatable->fieldList['left']['fixed'] = 'no';
$config->task->datatable->fieldList['left']['width'] = '60';
$config->task->datatable->fieldList['left']['required'] = 'no';
$config->task->datatable->fieldList['progress']['title'] = 'progress';
$config->task->datatable->fieldList['progress']['title'] = 'progressAB';
$config->task->datatable->fieldList['progress']['fixed'] = 'no';
$config->task->datatable->fieldList['progress']['width'] = '40';
$config->task->datatable->fieldList['progress']['width'] = '50';
$config->task->datatable->fieldList['progress']['required'] = 'no';
$config->task->datatable->fieldList['progress']['sort'] = 'no';
+1 -1
View File
@@ -1200,7 +1200,7 @@ class task extends control
* @access public
* @return void
*/
public function report($projectID, $browseType = 'all', $chartType = '')
public function report($projectID, $browseType = 'all', $chartType = 'default')
{
$this->loadModel('report');
$this->view->charts = array();
+1
View File
@@ -1,6 +1,7 @@
.table-bordered caption {border: 1px solid #ddd;}
.table-bordered tr > th:first-child, .table-bordered tr > td:first-child {border-left: 1px solid #ddd!important}
.table-bordered tr > th:last-child, .table-bordered tr > td:last-child {border-right: 1px solid #ddd!important}
.side-col.col-lg{width:270px;}
.panel-heading > strong > span {float: right; color: #29a8cd;}
+25 -22
View File
@@ -26,18 +26,21 @@ $lang->task->logEfforts = "Effort";
$lang->task->record = "Estimates";
$lang->task->start = "Start";
$lang->task->restart = "Continue";
$lang->task->finish = "Finish Task";
$lang->task->finishAction = "Finish Task";
$lang->task->finish = "Finish";
$lang->task->pause = "Pause";
$lang->task->close = "Close";
$lang->task->cancel = "Cancel";
$lang->task->activate = "Activate Task";
$lang->task->activateAction = "Activate Task";
$lang->task->activate = "Activate";
$lang->task->export = "Export";
$lang->task->reportChart = "Report Chart";
$lang->task->fromBug = 'From Bug';
$lang->task->case = 'Linked Case';
$lang->task->confirmStoryChange = "Confirm Change";
$lang->task->storyChange = "Story Changed";
$lang->task->progress = '%';
$lang->task->progress = 'Progress';
$lang->task->progressAB = '%';
$lang->task->progressTips = 'Cost/(Cost+Left)';
$lang->task->copy = 'Copy Task';
$lang->task->waitTask = 'Waiting Task';
@@ -76,7 +79,7 @@ $lang->task->desc = 'Description';
$lang->task->assign = 'Assign';
$lang->task->assignTo = $lang->task->assign;
$lang->task->batchAssignTo = 'Batch Assign';
$lang->task->assignedTo = 'AssignedTo';
$lang->task->assignedTo = 'AssignTo';
$lang->task->assignedToAB = 'AssignedTo';
$lang->task->assignedDate = 'AssignedDate';
$lang->task->openedBy = 'CreatedBy';
@@ -84,8 +87,8 @@ $lang->task->openedDate = 'CreatedDate';
$lang->task->openedDateAB = 'CreatedOn';
$lang->task->finishedBy = 'FinishedBy';
$lang->task->finishedByAB = 'FinishedBy';
$lang->task->finishedDate = 'ActualEndDate';
$lang->task->finishedDateAB = 'ActualEnd';
$lang->task->finishedDate = 'Actual Finished';
$lang->task->finishedDateAB = 'Actual Finish';
$lang->task->finishedList = 'FinishedBy';
$lang->task->canceledBy = 'CancelledBy';
$lang->task->canceledDate = 'CancelledDate';
@@ -95,12 +98,12 @@ $lang->task->closedReason = 'CloseReason';
$lang->task->lastEditedBy = 'ModifiedBy';
$lang->task->lastEditedDate = 'ModifiedDate';
$lang->task->lastEdited = 'Last Edited';
$lang->task->recordEstimate = '%';
$lang->task->recordEstimate = 'Effort';
$lang->task->editEstimate = 'Edit Estimates';
$lang->task->deleteEstimate = 'Delete Estimates';
$lang->task->colorTag = 'Color';
$lang->task->files = 'Files';
$lang->task->hasConsumed = 'Cost';
$lang->task->hasConsumed = 'Already Cost';
$lang->task->multiple = 'Multiple User Task';
$lang->task->multipleAB = ' Multi-user';
$lang->task->team = 'Team';
@@ -154,24 +157,24 @@ $lang->task->reasonList['done'] = 'Done';
$lang->task->reasonList['cancel'] = 'Cancelled';
$lang->task->afterChoices['continueAdding'] = ' Continue Adding Tasks';
$lang->task->afterChoices['toTaskList'] = 'Back to Task List';
$lang->task->afterChoices['toStoryList'] = 'Back to Story List';
$lang->task->afterChoices['toTaskList'] = 'Go to Task List Page';
$lang->task->afterChoices['toStoryList'] = 'Go to Story List Page';
$lang->task->legendBasic = 'Basic Info';
$lang->task->legendEffort = 'Effort';
$lang->task->legendLife = 'Task Life';
$lang->task->legendDesc = 'Task Description';
$lang->task->confirmDelete = "Do you want to delete this Task?";
$lang->task->confirmDelete = "Do you want to delete this task?";
$lang->task->confirmDeleteEstimate = "Do you want to delete it?";
$lang->task->copyStoryTitle = "Copy Story";
$lang->task->afterSubmit = "After it is created, ";
$lang->task->afterSubmit = "Next ";
$lang->task->successSaved = "Created!";
$lang->task->delayWarning = " <strong class='text-danger'> Delay %s days </strong>";
$lang->task->remindBug = "This Task is converted from a Bug. Do you want to update the Bug:%s?";
$lang->task->remindBug = "This task is converted from a bug. Do you want to update the Bug:%s?";
$lang->task->confirmChangeProject = "If you change {$lang->projectCommon}, the linked Module, Story and AssignedTo will be changed. Do you want to do it?";
$lang->task->confirmFinish = '"Left Hour" is 0. Do you want to change the Status to "Finished"?';
$lang->task->confirmRecord = '"Left Hour" is 0. Do you want to set Task as "Finished"?';
$lang->task->confirmFinish = '"Left Hour" is 0. Do you want to change the status to "Finished"?';
$lang->task->confirmRecord = '"Left Hour" is 0. Do you want to set the task as "Finished"?';
$lang->task->confirmTransfer = '"Left Hour" is 0,Do you want to transfer task?';
$lang->task->noticeLinkStory = "No story has been linked. You can %s for this project, then %s.";
$lang->task->noticeSaveRecord = 'Your Hour is not saved. Please save it first.';
@@ -181,14 +184,14 @@ $lang->task->noTask = 'No tasks yet. ';
$lang->task->createDenied = 'Create Task is denied in this project';
$lang->task->error = new stdclass();
$lang->task->error->consumedNumber = '"Cost Hour" must be numbers.';
$lang->task->error->estimateNumber = '"Hour" must be numbers.';
$lang->task->error->consumedSmall = '"Cost Hour" must be > the last number.';
$lang->task->error->consumedThisTime = 'Please enter "Hour"';
$lang->task->error->left = 'Please enter "Left Hour"';
$lang->task->error->consumedNumber = '"Hours Cost" must be numbers.';
$lang->task->error->estimateNumber = '"Estimates" must be numbers.';
$lang->task->error->consumedSmall = '"Hours Cost" must be > the last number.';
$lang->task->error->consumedThisTime = 'Please enter "Hours Cost"';
$lang->task->error->left = 'Please enter "Hours Left"';
$lang->task->error->work = '"Comment" must be < %d characters.';
$lang->task->error->skipClose = 'Task: %s is not Finished” or “Cancelled”. Do you want to close it?';
$lang->task->error->consumed = 'Task: %s hour must be < 0. Ignore changes to this Task.';
$lang->task->error->skipClose = 'Task: %s is not "Finished” or “Cancelled”. Do you want to close it?';
$lang->task->error->consumed = 'Task: %s hour must be < 0. Ignore changes to this task.';
$lang->task->error->assignedTo = 'Multi-user task in the current status cannot be assigned to a member who is not in the task team.';
/* Report. */
+3
View File
@@ -26,10 +26,12 @@ $lang->task->logEfforts = "记录工时";
$lang->task->record = "工时";
$lang->task->start = "开始";
$lang->task->restart = "继续";
$lang->task->finishAction = "完成任务";
$lang->task->finish = "完成";
$lang->task->pause = "暂停";
$lang->task->close = "关闭";
$lang->task->cancel = "取消";
$lang->task->activateAction = "激活任务";
$lang->task->activate = "激活";
$lang->task->export = "导出数据";
$lang->task->reportChart = "报表统计";
@@ -38,6 +40,7 @@ $lang->task->case = '相关用例';
$lang->task->confirmStoryChange = "确认需求变动";
$lang->task->storyChange = "需求变更";
$lang->task->progress = '进度';
$lang->task->progressAB = '%';
$lang->task->progressTips = '已消耗/(已消耗+剩余)';
$lang->task->copy = '复制任务';
$lang->task->waitTask = '未开始的任务';
+1 -1
View File
@@ -406,7 +406,7 @@ class taskModel extends model
{
$childTask = $this->dao->select('*')->from(TABLE_TASK)->where('id')->eq($taskID)->fetch();
if(empty($parentID)) $parentID = $childTask->parent;
if(empty($parentID)) return true;
if($parentID <= 0) return true;
$this->computeWorkingHours($parentID);
+2 -1
View File
@@ -27,7 +27,8 @@
<form method='post' target='hiddenwin'>
<table class='table table-form'>
<tr>
<th class='w-70px'><?php echo $lang->task->assignedTo;?></th>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-90px' : 'w-70px';?>
<th class='<?php echo $colWidth;?>'><?php echo $lang->task->assignedTo;?></th>
<td class='w-p25-f'><?php echo html::select('assignedTo', $members, $task->finishedBy, "class='form-control chosen'");?></td>
<td></td>
</tr>
+3 -2
View File
@@ -35,13 +35,14 @@
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
<table class='table table-form'>
<tr>
<th class='w-80px'><?php echo !empty($task->team) ? $lang->task->common . $lang->task->consumed : $lang->task->hasConsumed;?></th>
<?php $colWidth = $app->getClientLang() == 'en' ? 'w-120px' : 'w-80px';?>
<th class='<?php echo $colWidth;?>'><?php echo !empty($task->team) ? $lang->task->common . $lang->task->consumed : $lang->task->hasConsumed;?></th>
<td class='w-p25-f'><?php echo $task->consumed;?> <?php echo $lang->workingHour;?></td>
<td></td>
</tr>
<?php if(!empty($task->team)):?>
<tr>
<th class='w-80px'><?php echo $lang->task->hasConsumed;?></th>
<th class='<?php echo $colWidth;?>'><?php echo $lang->task->hasConsumed;?></th>
<td class='w-p25-f'><?php echo $task->myConsumed;?> <?php echo $lang->workingHour;?></td><td></td>
</tr>
<?php endif;?>
+3 -2
View File
@@ -41,8 +41,9 @@
<tr class='text-center'>
<th class="w-id"><?php echo $lang->idAB;?></th>
<th class="w-120px"><?php echo $lang->task->date;?></th>
<th class="w-60px"><?php echo $lang->task->consumedThisTime;?></th>
<th class="w-60px"><?php echo $lang->task->leftThisTime;?></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>
<th class='c-actions-2'><?php if(empty($task->team) or $task->assignedTo == $this->app->user->account) echo $lang->actions;?></th>
</tr>
+2 -2
View File
@@ -118,12 +118,12 @@ $config->testcase->datatable->fieldList['keywords']['required'] = 'no';
$config->testcase->datatable->fieldList['assignedTo']['title'] = 'assignedTo';
$config->testcase->datatable->fieldList['assignedTo']['fixed'] = 'no';
$config->testcase->datatable->fieldList['assignedTo']['width'] = '80';
$config->testcase->datatable->fieldList['assignedTo']['width'] = '120';
$config->testcase->datatable->fieldList['assignedTo']['required'] = 'no';
$config->testcase->datatable->fieldList['openedBy']['title'] = 'openedByAB';
$config->testcase->datatable->fieldList['openedBy']['fixed'] = 'no';
$config->testcase->datatable->fieldList['openedBy']['width'] = '80';
$config->testcase->datatable->fieldList['openedBy']['width'] = '90';
$config->testcase->datatable->fieldList['openedBy']['required'] = 'no';
$config->testcase->datatable->fieldList['openedDate']['title'] = 'openedDate';
+1 -1
View File
@@ -20,4 +20,4 @@
tbody > tr > td > .btn-icon {margin-right: 3px;}
tbody > tr > td .icon-bug {margin-left: -8px;}
.table td.c-title > a:first-child{max-width: 70%; max-width: calc(100% - 100px); display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
.table td.c-title > a:first-child{display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
+5 -4
View File
@@ -82,6 +82,7 @@ $lang->testcase->batchCreate = "Batch Add";
$lang->testcase->delete = "Delete";
$lang->testcase->view = "Overview";
$lang->testcase->review = "Need Review";
$lang->testcase->reviewAB = "Review";
$lang->testcase->batchReview = "Batch Review";
$lang->testcase->edit = "Edit Case";
$lang->testcase->batchEdit = "Batch Edit ";
@@ -94,8 +95,8 @@ $lang->testcase->delete = "Delete";
$lang->testcase->batchDelete = "Batch Delete ";
$lang->testcase->batchConfirmStoryChange = "Batch Confirm";
$lang->testcase->batchCaseTypeChange = "Batch Change Type";
$lang->testcase->browse = "Case";
$lang->testcase->groupCase = "By Group";
$lang->testcase->browse = "Case List";
$lang->testcase->groupCase = "View By Group";
$lang->testcase->import = "Import";
$lang->testcase->importFile = "Import CSV";
$lang->testcase->importFromLib = "Import From Library";
@@ -129,7 +130,7 @@ $lang->testcase->bySearch = 'Search';
$lang->testcase->unexecuted = 'Pending';
$lang->testcase->lblStory = 'Linked Story';
$lang->testcase->lblLastEdited = 'Last Edit';
$lang->testcase->lblLastEdited = 'Last Edited';
$lang->testcase->lblTypeValue = 'Type Value';
$lang->testcase->lblStageValue = 'Phase Value';
$lang->testcase->lblStatusValue = 'Status Value';
@@ -163,7 +164,7 @@ $lang->testcase->typeList['config'] = 'Config';
$lang->testcase->typeList['install'] = 'Install';
$lang->testcase->typeList['security'] = 'Security';
$lang->testcase->typeList['interface'] = 'Interface';
$lang->testcase->typeList['other'] = 'Other';
$lang->testcase->typeList['other'] = 'Others';
$lang->testcase->stageList[''] = '';
$lang->testcase->stageList['unittest'] = 'Unit Testing';
+1
View File
@@ -82,6 +82,7 @@ $lang->testcase->batchCreate = "批量建用例";
$lang->testcase->delete = "删除用例";
$lang->testcase->view = "用例详情";
$lang->testcase->review = "评审";
$lang->testcase->reviewAB = "评审";
$lang->testcase->batchReview = "批量评审";
$lang->testcase->edit = "编辑";
$lang->testcase->batchEdit = "批量编辑 ";
+1 -1
View File
@@ -111,7 +111,7 @@
if($caseFails > 0) common::printIcon('testcase', 'createBug', "product=$case->product&branch=$case->branch&extra=caseID=$case->id,version=$case->version,runID=$runID", $case, 'button', 'bug', '', 'iframe', '', "data-width='90%'");
}
if($config->testcase->needReview or !empty($config->testcase->forceReview)) common::printIcon('testcase', 'review', "caseID=$case->id", $case, 'button', '', '', 'iframe');
if($config->testcase->needReview or !empty($config->testcase->forceReview)) common::printIcon('testcase', 'review', "caseID=$case->id", $case, 'button', '', '', 'iframe', '', '', $lang->testcase->reviewAB);
?>
<?php
common::printIcon('testcase', 'edit',"caseID=$case->id", $case);

Some files were not shown because too many files have changed in this diff Show More