Merge branch 'master' of github.com:easysoft/zentaopms

This commit is contained in:
wangyidong
2018-06-22 16:21:09 +08:00
118 changed files with 718 additions and 375 deletions
+2
View File
@@ -0,0 +1,2 @@
UPDATE `zt_block` SET `grid` = 8 WHERE `block` IN ('statistic', 'flowchart', 'welcome');
UPDATE `zt_block` SET `grid` = 4 WHERE `block` = 'overview';
+1 -1
View File
@@ -34,7 +34,7 @@ $lang->action->original = 'Original Format';
$lang->action->confirmHideAll = 'Do you want to hide all the records?';
$lang->action->needEdit = '%s that you want to restore exists. Please edit it.';
$lang->action->historyEdit = 'The history editor cannot be empty.';
$lang->action->noDynamic = 'No dynamic.';
$lang->action->noDynamic = 'No dynamics. ';
$lang->action->history = new stdclass();
$lang->action->history->action = 'Link';
+1 -1
View File
@@ -34,7 +34,7 @@ $lang->action->original = '原始格式';
$lang->action->confirmHideAll = '您确定要全部隐藏这些记录吗?';
$lang->action->needEdit = '要还原%s的名称或代号已经存在,请编辑更改。';
$lang->action->historyEdit = '历史记录编辑不能为空。';
$lang->action->noDynamic = '暂无动态';
$lang->action->noDynamic = '暂时没有动态。';
$lang->action->history = new stdclass();
$lang->action->history->action = '关联日志';
+1 -1
View File
@@ -34,7 +34,7 @@ $lang->action->original = '原始格式';
$lang->action->confirmHideAll = '您確定要全部隱藏這些記錄嗎?';
$lang->action->needEdit = '要還原%s的名稱或代號已經存在,請編輯更改。';
$lang->action->historyEdit = '歷史記錄編輯不能為空。';
$lang->action->noDynamic = '暫無動態';
$lang->action->noDynamic = '暫時沒有動態。';
$lang->action->history = new stdclass();
$lang->action->history->action = '關聯日誌';
+2 -2
View File
@@ -18,11 +18,11 @@
</div>
</div>
<div id='mainContent' class='main-content'>
<div class='center-block mw-800px'>
<div class='center-block'>
<form class="load-indicator main-form form-ajax" method='post'>
<table class='table table-form'>
<tr>
<th style='width:130px'><?php echo $lang->admin->safe->password?></th>
<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>
<td><?php echo $lang->admin->safe->noticeMode?></td>
</tr>
+1 -1
View File
@@ -12,7 +12,7 @@
?>
<?php include '../../common/view/header.html.php'; ?>
<div id='mainContent' class='main-content'>
<div class='center-block mw-700px'>
<div class='center-block'>
<div class='main-header'>
<div class='heading'>
<h2><?php echo $lang->admin->sso;?></h2>
+11
View File
@@ -13,5 +13,16 @@ $config->block = new stdclass();
$config->block->editor = new stdclass();
$config->block->editor->set = array('id' => 'html', 'tools' => 'simple');
$config->block->longBlock = array();
$config->block->longBlock['']['flowchart'] = 'flowchart';
$config->block->longBlock['']['welcome'] = 'welcome';
$config->block->longBlock['product']['statistic'] = 'statistic';
$config->block->longBlock['project']['statistic'] = 'statistic';
$config->block->longBlock['qa']['statistic'] = 'statistic';
$config->block->shortBlock = array();
$config->block->shortBlock['product']['overview'] = 'overview';
$config->block->shortBlock['project']['overview'] = 'overview';
$config->statistic = new stdclass();
$config->statistic->storyStages = array('wait', 'planned', 'developing', 'testing', 'released');
+10 -2
View File
@@ -495,11 +495,19 @@ class block extends control
*/
public function printTodoBlock()
{
$uri = $this->server->http_referer;
$limit = $this->viewType == 'json' ? 0 : (int)$this->params->num;
$todos = $this->loadModel('todo')->getList('all', $this->app->user->account, 'wait, doing', $limit, $pager = null, $orderBy = 'date, begin');
$uri = $this->server->http_referer;
$this->session->set('todoList', $uri);
$this->session->set('bugList', $uri);
$this->session->set('taskList', $uri);
$this->view->todos = $this->loadModel('todo')->getList('all', $this->app->user->account, 'wait, doing', $this->viewType == 'json' ? 0 : (int)$this->params->num);
foreach($todos as $key => $todo)
{
if($todo->date == '2030-01-01') unset($todos[$key]);
}
$this->view->todos = $todos;
}
/**
+1 -1
View File
@@ -61,6 +61,7 @@ function refreshBlock($panel, afterRefresh)
{
var $data = $(data);
if($data.hasClass('panel')) $panel.empty().append($data.children());
else if($panel.find('#assigntomeBlock').length) $panel.find('#assigntomeBlock').empty().append($data.children());
else $panel.find('.panel-body').replaceWith($data);
if($.isFunction(afterRefresh))
{
@@ -107,7 +108,6 @@ function initTableHeader($wrapper)
$panel.toggleClass('with-fixed-header', isFixed);
var $header = $panel.children('.table-header-fixed').toggle(isFixed);
if ($wrapper) console.log('initTableHeader', isFixed, {$wrapper, $table, $header});
if(!isFixed)
{
$table.find('thead').css('visibility', 'visible');
+3 -3
View File
@@ -389,8 +389,8 @@ $lang->block->gridOptions[8] = 'Left';
$lang->block->gridOptions[4] = 'Right';
$lang->block->flowchart = array();
$lang->block->flowchart[] = array('Administlrator', 'Add Departments', 'Add Users', 'Maintain Privileges');
$lang->block->flowchart[] = array($lang->productCommon . ' Owner', 'Add ' . $lang->productCommon, 'Maintain Modules', 'Maintain Plans', 'Maintain Stories', 'Create Releases');
$lang->block->flowchart[] = array('Scrum Master', 'Add ' . $lang->projectCommon, 'Maintain Teams', 'Link ' . $lang->productCommon . 's', 'Link Stories', 'Decompose Tasks');
$lang->block->flowchart[] = array('Administlrator', 'Add a Department', 'Add a User', 'Maintain Privileges');
$lang->block->flowchart[] = array($lang->productCommon . ' Owner', 'Add a ' . $lang->productCommon, 'Maintain Modules', 'Maintain Plans', 'Maintain Stories', 'Create Releases');
$lang->block->flowchart[] = array('Scrum Master', 'Add a ' . $lang->projectCommon, 'Maintain Teams', 'Link ' . $lang->productCommon . 's', 'Link Stories', 'Decompose Tasks');
$lang->block->flowchart[] = array('Dev Team', 'Claim Tasks/Bugs', 'Update Status', 'Finish Tasks/Bugs');
$lang->block->flowchart[] = array('QA Team', 'Write Cases', 'Run Cases', 'Report Bugs', 'Verify Bugs', 'Close Bugs');
@@ -32,5 +32,5 @@
#assigntomeBlock {position: relative;}
#assigntomeBlock .block-todoes {padding-top: 10px}
#assigntomeBlock > .nav {position: absolute; top: -41px; left: 120px;}
#assigntomeBlock .block-todoes .todoes-form{top: -55px;}
#assigntomeBlock .block-todoes .todoes-form{top: -50px;}
</style>
+21 -1
View File
@@ -17,6 +17,26 @@
<div class='form-group'>
<label for='grid' class='col-sm-3'><?php echo $lang->block->grid;?></label>
<div class='col-sm-7'>
<?php echo html::select('grid', $lang->block->gridOptions, $block ? $block->grid : 8, "class='form-control chosen'")?>
<?php
$grid = 8;
$gridOptions = $lang->block->gridOptions;
if($block)
{
$type = $block->block;
$source = $block->source;
$grid = $block->grid;
}
if(isset($config->block->longBlock[$source][$type]))
{
$grid = 8;
unset($gridOptions[4]);
}
elseif(isset($config->block->shortBlock[$source][$type]))
{
$grid = 4;
unset($gridOptions[8]);
}
echo html::select('grid', $gridOptions, $grid, "class='form-control'");
?>
</div>
</div>
+4 -4
View File
@@ -38,7 +38,7 @@
<?php $index = 1;?>
<?php foreach($products as $product):?>
<div class="tab-pane fade <?php if($index == 1) echo 'active';?> in" id="tabContent<?php echo $product->id;?>">
<div class="statistic-menu input-group col-sm space">
<div class="statistic-menu input-group space w-400px">
<?php if($product->builds):?>
<select id='build' name='build' class="form-control chosen">
<?php foreach($product->builds as $build):?>
@@ -134,11 +134,11 @@
<script>
$(function()
{
$('#build').change(function()
$('[name^=build]').change(function()
{
$(this).parents('.tab-pane').find('.table-row').addClass('hidden');
$('#bugBox' + $(this).val()) .removeClass('hidden');
$('#bugBox' + $(this).val()).removeClass('hidden');
});
$('#build').change();
$('[name^=build]').change();
})
</script>
+11 -20
View File
@@ -11,7 +11,7 @@
*/
?>
<style>
.block-todoes .panel-body {position: relative; padding-top: 42px; overflow: visible; padding-bottom: 0;}
.block-todoes .panel-body {position: relative; padding-top: 42px; overflow: visible !important; padding-bottom: 0;}
.block-todoes .todoes-input {position: absolute; top: 0; right: 0; left: 0; padding: 0 20px 20px 20px;}
.block-todoes .todoes-input .form-control::-webkit-input-placeholder {font-size: 12px; line-height: 20px;color: #a4a8b6;}
.block-todoes .todoes-input .form-control::-moz-placeholder {font-size: 12px; line-height: 20px; color: #a4a8b6;}
@@ -20,11 +20,10 @@
.block-todoes .todoes {padding: 0 10px 10px 10px; margin: 0 -20px; max-height: 350px; overflow: auto;}
.block-todoes .todoes > li {position: relative; padding: 5px 10px 5px 35px; list-style: none;}
.block-todoes .todoes > li:hover {background-color: #e9f2fb;}
.block-todoes .todo-title {display: block; padding: 5px;}
.block-todoes .todo-pri {display: inline-block; padding: 0 5px; font-size: 12px; color: #3c4353;}
.block-todoes .todo-pri-1 {color: #ff5d5d;}
.block-todoes .todo-time {display: inline-block; padding: 0 5px; font-size: 12px; color: #8e939a;}
.block-todoes .todo-check {position: absolute; top: 10px; left: 10px; display: block; width: 20px; height: 20px; font-size: 20px; color: transparent; cursor: pointer; background: #fff; border: 2px solid #eee; border-radius: 50%;}
.block-todoes .todo-title {padding: 5px;}
.block-todoes .todo-pri {margin: 0 5px;}
.block-todoes .todo-time {display: inline-block; padding: 0 5px; font-size: 12px; color: #8e939a; width: 90px;}
.block-todoes .todo-check {position: absolute; top: 5px; left: 10px; display: block; width: 20px; height: 20px; font-size: 20px; color: transparent; cursor: pointer; background: #fff; border: 2px solid #eee; border-radius: 50%;}
.block-todoes .todo-check:hover {border-color: #8e939a;}
.block-todoes .active > .todo-check {color: #00da88; background: transparent;border: none;}
.block-todoes .todoes-form {position: absolute; top: -45px; right: 0; left: 0; z-index: 15; max-width: 500px; padding: 12px 20px 20px; visibility: hidden; background: #fff; -webkit-box-shadow: 0 0 20px 0 #bdc9d8; box-shadow: 0 0 20px 0 #bdc9d8; opacity: 0;-webkit-transition: .4s cubic-bezier(.175, .885, .32, 1); -o-transition: .4s cubic-bezier(.175, .885, .32, 1); transition: .4s cubic-bezier(.175, .885, .32, 1); -webkit-transition-property: opacity, visibility; -o-transition-property: opacity, visibility; transition-property: opacity, visibility;}
@@ -34,12 +33,12 @@
.block-todoes .todoes-form > h3 {padding: 0 20px 15px; margin: 0 -20px 5px; font-size: 14px; line-height: 20px;}
.block-todoes.show-form .todoes-form {visibility: visible; opacity: 1;}
</style>
<div class='block-todoes' id="block <?php echo ($block->block)?>">
<div class='block-todoes'>
<div class='panel-body'>
<div class="todoes-input">
<div class="todo-form-trigger"><input type="text" placeholder="<?php echo $lang->todo->lblClickCreate?>" class="form-control"></div>
<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 . $lang->todo->common;?></h3>
<h3><?php echo $lang->todo->create;?></h3>
<div class="form-group">
<label for="todoName" class="col-sm-2"><?php echo $lang->todo->name?></label>
<div class="col-sm-9 required"><input type="text" class="form-control" name="name"></div>
@@ -97,13 +96,13 @@
<li data-id='<?php echo $todo->id?>'>
<span class="todo-check icon icon-check-circle"></span>
<a href="<?php echo empty($sso) ? $viewLink : $sso . $sign . 'referer=' . base64_encode($viewLink);?>" class='iframe' <?php echo $appid?>>
<span class="todo-title"><?php echo $todo->name;?></span>
<span class="todo-pri todo-pri-<?php echo $todo->pri?>"><?php echo zget($lang->todo->priList, $todo->pri);?></span>
<?php if ($todo->date == '2030-01-01') :?>
<span class="c-date"><?php echo $lang->todo->periods['future'] ?></span>
<span class="todo-time"><?php echo $lang->todo->periods['future'] ?></span>
<?php else:?>
<span class="todo-time"><?php echo date(DT_DATE4, strtotime($todo->date)) . ' ' . $todo->begin;?></span>
<?php endif;?>
<span class="todo-pri label-pri label-pri-<?php echo $todo->pri?>" title="<?php echo zget($lang->todo->priList, $todo->pri);?>"><?php echo $todo->pri;?></span>
<span class="todo-title"><?php echo $todo->name;?></span>
</a>
</li>
<?php endforeach;?>
@@ -178,16 +177,8 @@
data: $form.serialize(),
success: function(todo)
{
var item = "<li data-id='" + todo.id + "'>";
item += '<span class="todo-check icon icon-check-circle"></span>';
item += '<a href="' + createLink('todo', 'view', "todoID=" + todo.id + "&from=my", 'html', true) + '" class="iframe">';
item += '<span class="todo-title">' + todo.name + '</span>';
item += '<span class="todo-pri todo-pri-' + todo.pri + '">' + todo.priName + '</span><span class="todo-time">' + todo.time + '</span></a></li>';
$todoes.find('ul.todoes').prepend(item);
$todoes.removeClass('show-form');
$todoes.find('ul.todoes li:first a').modalTrigger();
$form.find('input[name="name"]').val('');
$form.find('#todoDate').val('');
refreshBlock($todoes.parents('div.panel[id^=block]'));
}
});
}
+1
View File
@@ -10,6 +10,7 @@
.dropdown-menu > .menu-search .input-group {width:100%;}
.dropdown-menu > .menu-search .input-group-addon {position: absolute; right: 10px; top: 0; z-index: 10; background: none; border: none; color: #666}
.dropdown-menu > .menu-search .form-control {border: none!important; box-shadow: none!important; border-top: 1px solid #ddd!important;}
.dropdown-menu > li > a {text-align: left;}
.dropdown-list {display: block; padding: 0; max-height: 270px; overflow-y: auto;}
.dropdown-list > li > a {display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 1.53846154; color: #141414; white-space: nowrap;}
.dropdown-list > li > a:hover,
+1 -1
View File
@@ -131,7 +131,7 @@ $lang->bug->resolvedByMeAB = 'Resolved By Me';
$lang->bug->ditto = 'Ditto';
$lang->bug->dittoNotice = 'This bug is not linked to the same product as the last one!';
$lang->bug->noAssigned = 'Assign';
$lang->bug->noBug = 'No bugs. You could ';
$lang->bug->noBug = 'No bugs. ';
$lang->bug->noModule = '<div>You have no modules</div><div>Manage now</div>';
/* 页面标签。*/
+1 -1
View File
@@ -131,7 +131,7 @@ $lang->bug->resolvedByMeAB = '由我解决';
$lang->bug->ditto = '同上';
$lang->bug->dittoNotice = '该bug与上一bug不属于同一产品!';
$lang->bug->noAssigned = '未指派';
$lang->bug->noBug = '暂时没有Bug,您现在可以';
$lang->bug->noBug = '暂时没有Bug。';
$lang->bug->noModule = '<div>您现在还没有模块信息</div><div>请维护测试模块</div>';
/* 页面标签。*/
+1 -1
View File
@@ -131,7 +131,7 @@ $lang->bug->resolvedByMeAB = '由我解決';
$lang->bug->ditto = '同上';
$lang->bug->dittoNotice = '該bug與上一bug不屬於同一產品!';
$lang->bug->noAssigned = '未指派';
$lang->bug->noBug = '暫時沒有Bug,您現在可以';
$lang->bug->noBug = '暫時沒有Bug。';
$lang->bug->noModule = '<div>您現在還沒有模組信息</div><div>請維護測試模組</div>';
/* 頁面標籤。*/
+12 -6
View File
@@ -161,6 +161,17 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
</div>
<div class="main-col">
<div class="cell<?php if($browseType == 'bysearch') echo ' show';?>" id="queryBox"></div>
<?php if(empty($bugs)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->bug->noBug;?></span>
<?php if(common::hasPriv('bug', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('bug', 'create', "productID=$productID&branch=$branch&extra=moduleID=$moduleID"), "<i class='icon icon-plus'></i> " . $lang->bug->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class='main-table table-bug' data-ride='table' method='post' id='bugForm'>
<div class="table-header fixed-right">
<nav class="btn-toolbar pull-right"></nav>
@@ -200,7 +211,6 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
</tbody>
</table>
</div>
<?php if(!empty($bugs)):?>
<div class='table-footer'>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
<div class="table-actions btn-toolbar">
@@ -350,12 +360,8 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
<div class="table-statistic"><?php echo $summary;?></div>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php elseif(common::hasPriv('bug', 'create')):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->bug->noBug;?></span> <?php common::printLink('bug', 'create', "productID={$productID}", "<i class='icon icon-plus'></i> " . $lang->bug->create, '', "class='btn btn-info'");?></p>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
</div>
<script>
+7 -5
View File
@@ -198,7 +198,7 @@
<th><?php echo $lang->bug->resolution;?></th>
<td>
<?php
echo $lang->bug->resolutionList[$bug->resolution];
if(isset($lang->bug->resolutionList[$bug->resolution])) echo $lang->bug->resolutionList[$bug->resolution];
if(isset($bug->duplicateBugTitle)) echo " #$bug->duplicateBug:" . html::a($this->createLink('bug', 'view', "bugID=$bug->duplicateBug", '', true), $bug->duplicateBugTitle, '', "class='iframe' data-width='80%'");
?>
</td>
@@ -216,6 +216,7 @@
</div>
</details>
</div>
<?php if($config->global->flow != 'onlyTest'):?>
<div class="cell">
<details class="detail" open>
<summary class="detail-title"><?php echo $lang->bug->legendPrjStoryTask;?></summary>
@@ -249,6 +250,7 @@
</div>
</details>
</div>
<?php endif;?>
<div class="cell">
<details class="detail" open>
<summary class="detail-title"><?php echo $lang->bug->legendMisc;?></summary>
@@ -279,8 +281,8 @@
<tr>
<th><?php echo $lang->bug->toCase;?></th>
<td>
<?php
foreach($bug->toCases as $caseID => $case)
<?php
foreach($bug->toCases as $caseID => $case)
{
echo '<p style="margin-bottom:0;">' . html::a($this->createLink('testcase', 'view', "caseID=$caseID", '', true), $case, '', "class='iframe' data-width='80%'") . '</p>';
}
@@ -327,10 +329,10 @@ $convertParams = "productID=$productID&branch=$bug->branch&moduleID=0&from=bug&b
common::printIcon('bug', 'resolve', $params, $bug, 'button', 'checked', '', 'iframe showinonlybody', true);
common::printIcon('bug', 'close', $params, $bug, 'button', '', '', 'text-danger iframe showinonlybody', true);
common::printIcon('bug', 'activate', $params, $bug, 'button', '', '', 'text-success iframe showinonlybody', true);
if($config->global->flow != 'onlyTest') common::printIcon('bug', 'toStory', "product=$bug->product&branch=$bug->branch&module=0&story=0&project=0&bugID=$bug->id", $bug, 'button', $lang->icons['story']);
common::printIcon('bug', 'createCase', $convertParams, $bug, 'button', 'sitemap');
echo "<div class='divider'></div>";
common::printIcon('bug', 'edit', $params, $bug);
common::printIcon('bug', 'create', $copyParams, $bug, 'button', 'copy');
+1 -1
View File
@@ -46,7 +46,7 @@ $lang->build->stories = 'Finished Story';
$lang->build->bugs = 'Resolved Bug';
$lang->build->generatedBugs = 'Left Bug';
$lang->build->noProduct = " <span style='color:red'>This {$lang->projectCommon} has not linked to {$lang->productCommon}, so Build cannot be created. Please first <a href='%s'> link {$lang->productCommon}</a></span>";
$lang->build->noData = 'No data';
$lang->build->noBuild = 'No builds. ';
$lang->build->finishStories = ' %s Story(ies) have been finished.';
$lang->build->resolvedBugs = ' %s Bug(s) have been resolved.';
+1 -1
View File
@@ -46,7 +46,7 @@ $lang->build->stories = '完成的需求';
$lang->build->bugs = '解决的Bug';
$lang->build->generatedBugs = '产生的Bug';
$lang->build->noProduct = " <span style='color:red'>该{$lang->projectCommon}没有关联{$lang->productCommon},无法创建版本,请先<a href='%s'>关联{$lang->productCommon}</a></span>";
$lang->build->noData = '暂无';
$lang->build->noBuild = '暂时没有版本。';
$lang->build->finishStories = ' 本次共完成 %s 个需求';
$lang->build->resolvedBugs = ' 本次共解决 %s 个Bug';
+1 -1
View File
@@ -46,7 +46,7 @@ $lang->build->stories = '完成的需求';
$lang->build->bugs = '解決的Bug';
$lang->build->generatedBugs = '產生的Bug';
$lang->build->noProduct = " <span style='color:red'>該{$lang->projectCommon}沒有關聯{$lang->productCommon},無法創建版本,請先<a href='%s'>關聯{$lang->productCommon}</a></span>";
$lang->build->noData = '暫無';
$lang->build->noBuild = '暫時沒有版本。';
$lang->build->finishStories = ' 本次共完成 %s 個需求';
$lang->build->resolvedBugs = ' 本次共解決 %s 個Bug';
+2 -2
View File
@@ -21,7 +21,7 @@
<table class='table table-form'>
<tr>
<th><?php echo $lang->build->product;?></th>
<?php if($products):?>
<?php if(!empty($products)):?>
<td>
<div class='input-group'>
<?php echo html::select('product', $products, $product->id, "onchange='loadBranches(this.value);' class='form-control chosen' required");?>
@@ -75,7 +75,7 @@
<tr>
<td colspan="3" class="text-center form-actions">
<?php echo html::submitButton('', '', 'btn btn-wide btn-primary');?>
<?php echo "<a href='/project-build-$projectID.html' class='btn btn-back btn btn-wide'>$lang->backhome</a>";?>
<?php echo html::backButton('', '', 'btn btn-wide');?>
</td>
</tr>
</table>
+1 -1
View File
@@ -321,7 +321,7 @@ tbody tr td:first-child input{display:none;}
<?php if($build->desc):?>
<?php echo $build->desc;?>
<?php else:?>
<?php echo $lang->build->noData;?>
<?php echo $lang->noData;?>
<?php endif;?>
</td>
</tr>
+1
View File
@@ -86,6 +86,7 @@ $lang->customMenu = 'Custom Menu';
$lang->customField = 'Custom Field';
$lang->lineNumber = 'Line No.';
$lang->tutorialConfirm = 'You are using tutorial. Do you want to exit right now?';
$lang->youCould = 'You could ';
$lang->preShortcutKey = '[Shortcut:←]';
$lang->nextShortcutKey = '[Shortcut:→]';
+1
View File
@@ -86,6 +86,7 @@ $lang->customMenu = '自定义导航';
$lang->customField = '自定义表单项';
$lang->lineNumber = '行号';
$lang->tutorialConfirm = '检测到你尚未退出新手教程模式,是否现在退出?';
$lang->youCould = '您现在可以 ';
$lang->preShortcutKey = '[快捷键:←]';
$lang->nextShortcutKey = '[快捷键:→]';
+1
View File
@@ -86,6 +86,7 @@ $lang->customMenu = '自定義導航';
$lang->customField = '自定義表單項';
$lang->lineNumber = '行號';
$lang->tutorialConfirm = '檢測到你尚未退出新手教程模式,是否現在退出?';
$lang->youCould = '您現在可以 ';
$lang->preShortcutKey = '[快捷鍵:←]';
$lang->nextShortcutKey = '[快捷鍵:→]';
+2 -2
View File
@@ -301,12 +301,12 @@ class commonModel extends model
*/
public static function printAboutBar()
{
global $app, $lang;
global $app, $config, $lang;
echo "<ul id='extraNav' class='nav nav-default'>";
echo "<li class='dropdown'>";
echo "<a data-toggle='dropdown'>" . $lang->help . " <span class='caret'></span></a>";
echo "<ul class='dropdown-menu'>";
if(!commonModel::isTutorialMode() and $app->user->account != 'guest') echo '<li>' . html::a(helper::createLink('tutorial', 'start'), $lang->tutorial, '', "class='iframe' data-class-name='modal-inverse' data-width='800' data-headerless='true' data-backdrop='true' data-keyboard='true'") . "</li>";
if($config->global->flow == 'full' && !commonModel::isTutorialMode() and $app->user->account != 'guest') echo '<li>' . html::a(helper::createLink('tutorial', 'start'), $lang->tutorial, '', "class='iframe' data-class-name='modal-inverse' data-width='800' data-headerless='true' data-backdrop='true' data-keyboard='true'") . "</li>";
echo '<li>' . html::a($lang->manualUrl, $lang->manual, '_blank', "class='open-help-tab'") . '</li>';
echo '<li>' . html::a(helper::createLink('misc', 'changeLog'), $lang->changeLog, '', "class='iframe' data-width='800' data-headerless='true' data-backdrop='true' data-keyboard='true'") . '</li>';
echo "</ul></li>\n";
+10 -10
View File
@@ -12,7 +12,7 @@
?>
<?php include '../../common/view/header.html.php';?>
<div id='mainContent' class='main-content'>
<div class='center-block mw-800px'>
<div class='center-block'>
<div class='main-header'>
<h2>
<?php echo $lang->cron->common?>
@@ -22,37 +22,37 @@
<form method='post' id='dataform' target='hiddenwin'>
<table class='table table-form'>
<tr>
<th class='w-80px'><?php echo $lang->cron->m;?></th>
<td class='w-150px'><?php echo html::input('m', '', "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->m;?></td>
<th><?php echo $lang->cron->m;?></th>
<td><?php echo html::input('m', '', "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->m;?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->h;?></th>
<td><?php echo html::input('h', '', "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->h;?></td>
<td><?php echo $lang->cron->notice->h;?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->dom;?></th>
<td><?php echo html::input('dom', '', "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->dom;?></td>
<td><?php echo $lang->cron->notice->dom;?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->mon;?></th>
<td><?php echo html::input('mon', '', "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->mon;?></td>
<td><?php echo $lang->cron->notice->mon;?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->dow;?></th>
<td><?php echo html::input('dow', '', "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->dow;?></td>
<td><?php echo $lang->cron->notice->dow;?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->command;?></th>
<td colspan='2'><?php echo html::input('command', '', "class='form-control' autocomplete='off'")?></td>
<td colspan='2'><?php echo html::input('command', '', "class='form-control' autocomplete='off'")?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->remark;?></th>
<td colspan='2'><?php echo html::input('remark', '', "class='form-control' autocomplete='off'")?></td>
<td colspan='2'><?php echo html::input('remark', '', "class='form-control' autocomplete='off'")?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->type;?></th>
+10 -10
View File
@@ -12,7 +12,7 @@
?>
<?php include '../../common/view/header.html.php';?>
<div id='mainContent' class='main-content'>
<div class='center-block mw-800px'>
<div class='center-block'>
<div class='main-header'>
<h2>
<?php echo $lang->cron->common?>
@@ -22,37 +22,37 @@
<form method='post' id='dataform' target='hiddenwin'>
<table class='table table-form'>
<tr>
<th class='w-80px'><?php echo $lang->cron->m;?></th>
<td class='w-150px'><?php echo html::input('m', $cron->m, "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->m;?></td>
<th><?php echo $lang->cron->m;?></th>
<td><?php echo html::input('m', $cron->m, "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->m;?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->h;?></th>
<td><?php echo html::input('h', $cron->h, "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->h;?></td>
<td><?php echo $lang->cron->notice->h;?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->dom;?></th>
<td><?php echo html::input('dom', $cron->dom, "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->dom;?></td>
<td><?php echo $lang->cron->notice->dom;?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->mon;?></th>
<td><?php echo html::input('mon', $cron->mon, "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->mon;?></td>
<td><?php echo $lang->cron->notice->mon;?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->dow;?></th>
<td><?php echo html::input('dow', $cron->dow, "class='form-control' autocomplete='off'")?></td>
<td><?php echo $lang->cron->notice->dow;?></td>
<td><?php echo $lang->cron->notice->dow;?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->command;?></th>
<td colspan='2'><?php echo html::input('command', str_replace("'", "&#039;", $cron->command), "class='form-control' autocomplete='off'")?></td>
<td colspan='2'><?php echo html::input('command', str_replace("'", "&#039;", $cron->command), "class='form-control' autocomplete='off'")?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->remark;?></th>
<td colspan='2'><?php echo html::input('remark', $cron->remark, "class='form-control' autocomplete='off'")?></td>
<td colspan='2'><?php echo html::input('remark', $cron->remark, "class='form-control' autocomplete='off'")?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->cron->type;?></th>
+1 -1
View File
@@ -142,7 +142,7 @@ $lang->doc->errorEmptyProject = "No {$lang->projectCommon}. It cannot be create
$lang->doc->errorMainSysLib = "This library cannot be deleted.";
$lang->doc->accessDenied = "Access denied!";
$lang->doc->versionNotFount = 'It does not exist in this build.';
$lang->doc->noDoc = 'It does not exist. You could ';
$lang->doc->noDoc = 'No docs. ';
$lang->doc->noSearchedDoc = 'Nothing searched.';
$lang->doc->noEditedDoc = 'You have not edited any doc.';
$lang->doc->noOpenedDoc = 'You have not created any doc.';
+1 -1
View File
@@ -142,7 +142,7 @@ $lang->doc->errorEmptyProject = "没有{$lang->projectCommon},无法创建文
$lang->doc->errorMainSysLib = "该系统文档库不能删除!";
$lang->doc->accessDenied = "您没有权限访问!";
$lang->doc->versionNotFount = '该版本文档不存在';
$lang->doc->noDoc = '文档不存在,您现在可以';
$lang->doc->noDoc = '暂时没有文档。';
$lang->doc->noSearchedDoc = '没有搜索到任何文档。';
$lang->doc->noEditedDoc = '您还没有编辑任何文档。';
$lang->doc->noOpenedDoc = '您还没有创建任何文档。';
+1 -1
View File
@@ -142,7 +142,7 @@ $lang->doc->errorEmptyProject = "沒有{$lang->projectCommon},無法創建文
$lang->doc->errorMainSysLib = "該系統文檔庫不能刪除!";
$lang->doc->accessDenied = "您沒有權限訪問!";
$lang->doc->versionNotFount = '該版本文檔不存在';
$lang->doc->noDoc = '文檔不存在,您現在可以';
$lang->doc->noDoc = '暫時沒有文檔。';
$lang->doc->noSearchedDoc = '沒有搜索到任何文檔。';
$lang->doc->noEditedDoc = '您還沒有編輯任何文檔。';
$lang->doc->noOpenedDoc = '您還沒有創建任何文檔。';
+5 -1
View File
@@ -49,7 +49,11 @@ var browseType = '<?php echo $browseType;?>';
<div class="table-empty-tip">
<p>
<?php if($libID):?>
<span class="text-muted"><?php echo $lang->doc->noDoc;?></span> <?php common::printLink('doc', 'create', "libID={$libID}", "<i class='icon icon-plus'></i> " . $lang->doc->create, '', "class='btn btn-info'");?>
<span class="text-muted"><?php echo $lang->doc->noDoc;?></span>
<?php if(common::hasPriv('doc', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('doc', 'create', "libID={$libID}"), "<i class='icon icon-plus'></i> " . $lang->doc->create, '', "class='btn btn-info'");?>
<?php endif;?>
<?php elseif($browseType == 'fastsearch'):?>
<span class="text-muted"><?php echo $lang->doc->noSearchedDoc;?></span>
<?php elseif($browseType == 'byediteddate'):?>
+21 -21
View File
@@ -22,12 +22,12 @@ $lang->install->officeDomain = 'https://www.zentao.pm';
$lang->install->start = 'Start to Install';
$lang->install->keepInstalling = 'Continue installing this version.';
$lang->install->seeLatestRelease = 'View Latest Version';
$lang->install->welcome = 'Thanks for using ZenTao Project Management Software!';
$lang->install->welcome = 'Thanks for choosing ZenTao Project Management Software!';
$lang->install->license = 'ZenTao PMS is under Z PUBLIC LICENSE(ZPL) 1.2';
$lang->install->desc = <<<EOT
ZenTao Project Management Software is an Open Source software released under <a href='http://zpl.pub/page/zplv12.html' target='_blank'>ZPL</a> license. It integrates with Product Management, Project Management, QA Management, Document Management, as well as To-Dos Management, Company Management etc. ZenTao is the best choice for software project management.
ZenTao Project Management Software is an Open Source software released under <a href='http://zpl.pub/page/zplv12.html' target='_blank'>ZPL</a> license. It integrates with Product Management, Project Management, QA Management, Document Management, To-Dos Management, Company Management etc. ZenTao is the best choice for software project management.
ZenTao PMS is built on PHP + MySQL and based on ZenTaoPHP, an independent framework developed by our team. Third party developers/organizations can develop extensions or customize for your needs.
ZenTao PMS is built on PHP + MySQL and based on ZenTaoPHP, an independent framework developed by our team. Third party developers/organizations can develop extensions or customize for your requirements.
EOT;
$lang->install->links = <<<EOT
ZenTao PMS is developed by <strong><a href='http://easysoft.ltd' target='_blank' class='text-danger'>Nature Easy Soft Co., LTD</a></strong>.
@@ -102,23 +102,23 @@ $lang->install->working = 'Working way';
$lang->install->requestTypes['GET'] = 'GET';
$lang->install->requestTypes['PATH_INFO'] = 'PATH_INFO';
$lang->install->workingList['full'] = 'Full Management of Dev';
$lang->install->workingList['full'] = 'Full Development Management';
$lang->install->workingList['onlyTest'] = 'Only Test Management';
$lang->install->workingList['onlyStory'] = 'Only Story Management';
$lang->install->workingList['onlyTask'] = 'Only Task Management';
$lang->install->errorConnectDB = 'Connection to database Failed. ';
$lang->install->errorDBName = 'Database name should exclude “.” ';
$lang->install->errorCreateDB = 'Database creation failed.';
$lang->install->errorTableExists = 'Data table has existed. If ZenTao has been installed before, please go back to clear data and continue installation.';
$lang->install->errorCreateTable = 'Table creation failed.';
$lang->install->errorImportDemoData = 'Import demo data failed.';
$lang->install->errorCreateDB = 'Failed to create the database.';
$lang->install->errorTableExists = 'Data table has existed. If ZenTao has been installed before, please return to last step and clear data. Then continue the installation.';
$lang->install->errorCreateTable = 'Failed to create the table.';
$lang->install->errorImportDemoData = 'Failed to import demo data.';
$lang->install->setConfig = 'Create Config File';
$lang->install->key = 'Item';
$lang->install->value = 'Value';
$lang->install->saveConfig = 'Save Config';
$lang->install->save2File = '<div class="alert alert-warning">Copy content in the text box above and save it to "<strong> %s </strong>". You can change this config file later.</div>';
$lang->install->save2File = '<div class="alert alert-warning">Copy the content in the text box above and save it to "<strong> %s </strong>". You can change this config file later.</div>';
$lang->install->saved2File = 'Config file has been saved to " <strong>%s</strong> ". You can change this file later.';
$lang->install->errorNotSaveConfig = 'Config file is not saved.';
@@ -131,25 +131,25 @@ $lang->install->errorEmptyPassword = 'Password should not be blank.';
$lang->install->groupList['ADMIN']['name'] = 'Admin';
$lang->install->groupList['ADMIN']['desc'] = 'System Administrator';
$lang->install->groupList['DEV']['name'] = 'Dev';
$lang->install->groupList['DEV']['desc'] = 'Dev Team';
$lang->install->groupList['DEV']['desc'] = 'Developer';
$lang->install->groupList['QA']['name'] = 'QA';
$lang->install->groupList['QA']['desc'] = 'QA Team';
$lang->install->groupList['QA']['desc'] = 'tester';
$lang->install->groupList['PM']['name'] = 'PM';
$lang->install->groupList['PM']['desc'] = 'for Project Manager';
$lang->install->groupList['PM']['desc'] = 'Project Manager';
$lang->install->groupList['PO']['name'] = 'PO';
$lang->install->groupList['PO']['desc'] = 'for Product Owner';
$lang->install->groupList['PO']['desc'] = 'Product Owner';
$lang->install->groupList['TD']['name'] = 'Dev Manager';
$lang->install->groupList['TD']['desc'] = 'for Dev Manager';
$lang->install->groupList['TD']['desc'] = 'Development Manager';
$lang->install->groupList['PD']['name'] = 'PD';
$lang->install->groupList['PD']['desc'] = 'for Product Manager';
$lang->install->groupList['PD']['desc'] = 'Product Director';
$lang->install->groupList['QD']['name'] = 'QD';
$lang->install->groupList['QD']['desc'] = 'for QA Manager';
$lang->install->groupList['QD']['desc'] = 'QA Director';
$lang->install->groupList['TOP']['name'] = 'Senior';
$lang->install->groupList['TOP']['desc'] = 'for Senior Manager';
$lang->install->groupList['TOP']['desc'] = 'Senior Manager';
$lang->install->groupList['OTHERS']['name'] = 'Other';
$lang->install->groupList['OTHERS']['desc'] = 'for Other';
$lang->install->groupList['OTHERS']['desc'] = 'other users';
$lang->install->groupList['LIMITED']['name'] = 'Limited User';
$lang->install->groupList['LIMITED']['desc'] = 'Only edit contents related to themselves';
$lang->install->groupList['LIMITED']['desc'] = 'can only edit contents related to itself';
$lang->install->cronList[''] = 'Monitor cron';
$lang->install->cronList['moduleName=project&methodName=computeburn'] = 'Update Burndown Chart';
@@ -160,14 +160,14 @@ $lang->install->cronList['moduleName=backup&methodName=backup'] = 'Backup
$lang->install->cronList['moduleName=mail&methodName=asyncSend'] = 'Async sending Message';
$lang->install->cronList['moduleName=webhook&methodName=asyncSend'] = 'Async sending Webhook';
$lang->install->cronList['moduleName=admin&methodName=deleteLog'] = 'Delete overdue log';
$lang->install->cronList['moduleName=todo&methodName=createCycle'] = 'Create periodic todos';
$lang->install->cronList['moduleName=todo&methodName=createCycle'] = 'Create repeat todos';
$lang->install->success = "Installed!";
$lang->install->login = 'Login ZenTao';
$lang->install->register = 'Register in ZenTao';
$lang->install->joinZentao = <<<EOT
<p>You have installed ZenTao %s.<strong class='text-danger'> Please delete install.php asap</strong>.</p><p>Note: In order to get the latest news of ZenTao, please register in ZenTao(<a href='http://www.zentao.pm' class='alert-link' target='_blank'>www.zentao.pm</a>).</p>
<p>You have installed ZenTao %s.<strong class='text-danger'> Please delete install.php asap</strong>.</p><p>Note: In order to get the latest news of ZenTao, register in ZenTao(<a href='http://www.zentao.pm' class='alert-link' target='_blank'>www.zentao.pm</a>).</p>
EOT;
$lang->install->product = array('chanzhi', 'ranzhi');
+1
View File
@@ -22,6 +22,7 @@ $lang->my->shareContacts = 'Share the list';
$lang->my->limited = 'Restricted operation (editing only content related to itself)';
$lang->my->score = 'My Score';
$lang->my->scoreRule = 'Score Rule';
$lang->my->noTodo = 'No todos. ';
$lang->my->taskMenu = new stdclass();
$lang->my->taskMenu->assignedToMe = 'AssignedToMe';
+53 -52
View File
@@ -1,52 +1,53 @@
<?php
$lang->my->common = '我的地盘';
/* 方法列表。*/
$lang->my->index = '首页';
$lang->my->todo = '我的待办';
$lang->my->calendar = '日程';
$lang->my->task = '我的任务';
$lang->my->bug = '我的Bug';
$lang->my->testTask = '我的版本';
$lang->my->testCase = '我的用例';
$lang->my->story = '我的需求';
$lang->my->myProject = "我的{$lang->projectCommon}";
$lang->my->profile = '我的档案';
$lang->my->dynamic = '我的动态';
$lang->my->editProfile = '修改档案';
$lang->my->changePassword = '修改密码';
$lang->my->unbind = '解除然之绑定';
$lang->my->manageContacts = '维护联系人';
$lang->my->deleteContacts = '删除联系人';
$lang->my->shareContacts = '共享联系人列表';
$lang->my->limited = '受限操作(只能编辑与自己相关的内容)';
$lang->my->score = '我的积分';
$lang->my->scoreRule = '积分规则';
$lang->my->taskMenu = new stdclass();
$lang->my->taskMenu->assignedToMe = '指派给我';
$lang->my->taskMenu->openedByMe = '由我创建';
$lang->my->taskMenu->finishedByMe = '由我完成';
$lang->my->taskMenu->closedByMe = '由我关闭';
$lang->my->taskMenu->canceledByMe = '由我取消';
$lang->my->storyMenu = new stdclass();
$lang->my->storyMenu->assignedToMe = '指派给我';
$lang->my->storyMenu->openedByMe = '由我创建';
$lang->my->storyMenu->reviewedByMe = '由我评审';
$lang->my->storyMenu->closedByMe = '由我关闭';
$lang->my->home = new stdclass();
$lang->my->home->latest = '最新动态';
$lang->my->home->action = "%s, %s <em>%s</em> %s <a href='%s'>%s</a>。";
$lang->my->home->projects = $lang->projectCommon;
$lang->my->home->products = $lang->productCommon;
$lang->my->home->createProject = "创建一个{$lang->projectCommon}";
$lang->my->home->createProduct = "创建一个{$lang->productCommon}";
$lang->my->home->help = "<a href='http://www.zentao.net/help-read-79236.html' target='_blank'>帮助文档</a>";
$lang->my->home->noProductsTip = "这里还没有{$lang->productCommon}。";
$lang->my->form = new stdclass();
$lang->my->form->lblBasic = '基本信息';
$lang->my->form->lblContact = '联系信息';
$lang->my->form->lblAccount = '帐号信息';
<?php
$lang->my->common = '我的地盘';
/* 方法列表。*/
$lang->my->index = '首页';
$lang->my->todo = '我的待办';
$lang->my->calendar = '日程';
$lang->my->task = '我的任务';
$lang->my->bug = '我的Bug';
$lang->my->testTask = '我的版本';
$lang->my->testCase = '我的用例';
$lang->my->story = '我的需求';
$lang->my->myProject = "我的{$lang->projectCommon}";
$lang->my->profile = '我的档案';
$lang->my->dynamic = '我的动态';
$lang->my->editProfile = '修改档案';
$lang->my->changePassword = '修改密码';
$lang->my->unbind = '解除然之绑定';
$lang->my->manageContacts = '维护联系人';
$lang->my->deleteContacts = '删除联系人';
$lang->my->shareContacts = '共享联系人列表';
$lang->my->limited = '受限操作(只能编辑与自己相关的内容)';
$lang->my->score = '我的积分';
$lang->my->scoreRule = '积分规则';
$lang->my->noTodo = '暂时没有待办。';
$lang->my->taskMenu = new stdclass();
$lang->my->taskMenu->assignedToMe = '指派给我';
$lang->my->taskMenu->openedByMe = '由我创建';
$lang->my->taskMenu->finishedByMe = '由我完成';
$lang->my->taskMenu->closedByMe = '由我关闭';
$lang->my->taskMenu->canceledByMe = '由我取消';
$lang->my->storyMenu = new stdclass();
$lang->my->storyMenu->assignedToMe = '指派给我';
$lang->my->storyMenu->openedByMe = '由我创建';
$lang->my->storyMenu->reviewedByMe = '由我评审';
$lang->my->storyMenu->closedByMe = '由我关闭';
$lang->my->home = new stdclass();
$lang->my->home->latest = '最新动态';
$lang->my->home->action = "%s, %s <em>%s</em> %s <a href='%s'>%s</a>。";
$lang->my->home->projects = $lang->projectCommon;
$lang->my->home->products = $lang->productCommon;
$lang->my->home->createProject = "创建一个{$lang->projectCommon}";
$lang->my->home->createProduct = "创建一个{$lang->productCommon}";
$lang->my->home->help = "<a href='http://www.zentao.net/help-read-79236.html' target='_blank'>帮助文档</a>";
$lang->my->home->noProductsTip = "这里还没有{$lang->productCommon}。";
$lang->my->form = new stdclass();
$lang->my->form->lblBasic = '基本信息';
$lang->my->form->lblContact = '联系信息';
$lang->my->form->lblAccount = '帐号信息';
+53 -52
View File
@@ -1,52 +1,53 @@
<?php
$lang->my->common = '我的地盤';
/* 方法列表。*/
$lang->my->index = '首頁';
$lang->my->todo = '我的待辦';
$lang->my->calendar = '日程';
$lang->my->task = '我的任務';
$lang->my->bug = '我的Bug';
$lang->my->testTask = '我的版本';
$lang->my->testCase = '我的用例';
$lang->my->story = '我的需求';
$lang->my->myProject = "我的{$lang->projectCommon}";
$lang->my->profile = '我的檔案';
$lang->my->dynamic = '我的動態';
$lang->my->editProfile = '修改檔案';
$lang->my->changePassword = '修改密碼';
$lang->my->unbind = '解除然之綁定';
$lang->my->manageContacts = '維護聯繫人';
$lang->my->deleteContacts = '刪除聯繫人';
$lang->my->shareContacts = '共享聯繫人列表';
$lang->my->limited = '受限操作(只能編輯與自己相關的內容)';
$lang->my->score = '我的積分';
$lang->my->scoreRule = '積分規則';
$lang->my->taskMenu = new stdclass();
$lang->my->taskMenu->assignedToMe = '指派給我';
$lang->my->taskMenu->openedByMe = '由我創建';
$lang->my->taskMenu->finishedByMe = '由我完成';
$lang->my->taskMenu->closedByMe = '由我關閉';
$lang->my->taskMenu->canceledByMe = '由我取消';
$lang->my->storyMenu = new stdclass();
$lang->my->storyMenu->assignedToMe = '指派給我';
$lang->my->storyMenu->openedByMe = '由我創建';
$lang->my->storyMenu->reviewedByMe = '由我評審';
$lang->my->storyMenu->closedByMe = '由我關閉';
$lang->my->home = new stdclass();
$lang->my->home->latest = '最新動態';
$lang->my->home->action = "%s, %s <em>%s</em> %s <a href='%s'>%s</a>。";
$lang->my->home->projects = $lang->projectCommon;
$lang->my->home->products = $lang->productCommon;
$lang->my->home->createProject = "創建一個{$lang->projectCommon}";
$lang->my->home->createProduct = "創建一個{$lang->productCommon}";
$lang->my->home->help = "<a href='http://www.zentao.net/help-read-79236.html' target='_blank'>幫助文檔</a>";
$lang->my->home->noProductsTip = "這裡還沒有{$lang->productCommon}。";
$lang->my->form = new stdclass();
$lang->my->form->lblBasic = '基本信息';
$lang->my->form->lblContact = '聯繫信息';
$lang->my->form->lblAccount = '帳號信息';
<?php
$lang->my->common = '我的地盤';
/* 方法列表。*/
$lang->my->index = '首頁';
$lang->my->todo = '我的待辦';
$lang->my->calendar = '日程';
$lang->my->task = '我的任務';
$lang->my->bug = '我的Bug';
$lang->my->testTask = '我的版本';
$lang->my->testCase = '我的用例';
$lang->my->story = '我的需求';
$lang->my->myProject = "我的{$lang->projectCommon}";
$lang->my->profile = '我的檔案';
$lang->my->dynamic = '我的動態';
$lang->my->editProfile = '修改檔案';
$lang->my->changePassword = '修改密碼';
$lang->my->unbind = '解除然之綁定';
$lang->my->manageContacts = '維護聯繫人';
$lang->my->deleteContacts = '刪除聯繫人';
$lang->my->shareContacts = '共享聯繫人列表';
$lang->my->limited = '受限操作(只能編輯與自己相關的內容)';
$lang->my->score = '我的積分';
$lang->my->scoreRule = '積分規則';
$lang->my->noTodo = '暫時沒有待辦。';
$lang->my->taskMenu = new stdclass();
$lang->my->taskMenu->assignedToMe = '指派給我';
$lang->my->taskMenu->openedByMe = '由我創建';
$lang->my->taskMenu->finishedByMe = '由我完成';
$lang->my->taskMenu->closedByMe = '由我關閉';
$lang->my->taskMenu->canceledByMe = '由我取消';
$lang->my->storyMenu = new stdclass();
$lang->my->storyMenu->assignedToMe = '指派給我';
$lang->my->storyMenu->openedByMe = '由我創建';
$lang->my->storyMenu->reviewedByMe = '由我評審';
$lang->my->storyMenu->closedByMe = '由我關閉';
$lang->my->home = new stdclass();
$lang->my->home->latest = '最新動態';
$lang->my->home->action = "%s, %s <em>%s</em> %s <a href='%s'>%s</a>。";
$lang->my->home->projects = $lang->projectCommon;
$lang->my->home->products = $lang->productCommon;
$lang->my->home->createProject = "創建一個{$lang->projectCommon}";
$lang->my->home->createProduct = "創建一個{$lang->productCommon}";
$lang->my->home->help = "<a href='http://www.zentao.net/help-read-79236.html' target='_blank'>幫助文檔</a>";
$lang->my->home->noProductsTip = "這裡還沒有{$lang->productCommon}。";
$lang->my->form = new stdclass();
$lang->my->form->lblBasic = '基本信息';
$lang->my->form->lblContact = '聯繫信息';
$lang->my->form->lblAccount = '帳號信息';
+6 -2
View File
@@ -23,6 +23,11 @@
</div>
</div>
<div id="mainContent">
<?php if(empty($bugs)):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->bug->noBug;?></span></p>
</div>
<?php else:?>
<form class="main-table table-bug" data-ride="table" method="post" action='<?php echo $this->createLink('bug', 'batchEdit', "productID=0");?>'>
<?php $canBatchEdit = common::hasPriv('bug', 'batchEdit');?>
<table class="table has-sort-head table-fixed". id='bugList'>
@@ -89,7 +94,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if($bugs):?>
<div class="table-footer">
<?php if($canBatchEdit):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
@@ -146,8 +150,8 @@
</div>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
<?php js::set('listName', 'bugList')?>
<?php include '../../common/view/footer.html.php';?>
+5 -5
View File
@@ -29,7 +29,11 @@
</div>
<div id="mainContent" class="main-content">
<div id="dynamics">
<?php if(!empty($dateGroups)):?>
<?php if(empty($dateGroups)):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->action->noDynamic;?></span></p>
</div>
<?php else:?>
<?php $firstAction = '';?>
<?php foreach($dateGroups as $date => $actions):?>
<?php $isToday = date(DT_DATE4) == $date;?>
@@ -60,10 +64,6 @@
</ul>
</div>
<?php endforeach;?>
<?php else:?>
<div class="text-center text-muted">
<?php echo $lang->action->noDynamic;?>
</div>
<?php endif;?>
</div>
</div>
+12
View File
@@ -20,6 +20,17 @@
</div>
</div>
<div id="mainContent" class='main-table'>
<?php if(empty($projects)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->project->noProject;?></span>
<?php if(common::hasPriv('project', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('project', 'create'), "<i class='icon icon-plus'></i> " . $lang->my->home->createProject, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<table class="table has-sort-head table-fixed" id='projectList'>
<thead>
<tr>
@@ -55,5 +66,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+6 -2
View File
@@ -23,6 +23,11 @@
</div>
</div>
<div id="mainContent">
<?php if(!$stories):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->story->noStory;?></span></p>
</div>
<?php else:?>
<form id='myStoryForm' class="main-table table-story" data-ride="table" method="post">
<table class="table has-sort-head table-fixed">
<?php $vars = "type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
@@ -86,7 +91,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if($stories):?>
<div class="table-footer">
<?php if($canBatchEdit or $canBatchClose):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
@@ -174,7 +178,7 @@
</div>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+6 -2
View File
@@ -24,6 +24,11 @@
</div>
</div>
<div id="mainContent">
<?php if(empty($tasks)):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->task->noTask;?></span></p>
</div>
<?php else:?>
<form id='myTaskForm' class="main-table table-task" data-ride="table" method="post">
<?php $canBatchEdit = common::hasPriv('task', 'batchEdit');?>
<?php $canBatchClose = (common::hasPriv('task', 'batchClose') and $type != 'closedBy');?>
@@ -117,7 +122,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if($tasks):?>
<div class="table-footer">
<?php if($canBatchEdit or $canBatchClose):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
@@ -139,8 +143,8 @@
</div>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
<?php js::set('listName', 'tasktable')?>
<?php include '../../common/view/footer.html.php';?>
+6 -2
View File
@@ -27,6 +27,11 @@
</div>
</div>
<div id="mainContent">
<?php if(empty($cases)):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->testcase->noCase;?></span></p>
</div>
<?php else:?>
<form id='myCaseForm' class="main-table table-case" data-ride="table" method="post">
<table class="table has-sort-head" id='caseList'>
<?php
@@ -93,7 +98,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if($cases):?>
<div class="table-footer">
<?php if($canBatchEdit or $canBatchRun):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
@@ -114,8 +118,8 @@
</div>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
<?php js::set('listName', 'caseList')?>
<?php include '../../common/view/footer.html.php';?>
+5 -1
View File
@@ -24,6 +24,11 @@
</div>
</div>
<div id="mainContent" class='main-table'>
<?php if(empty($tasks)):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->testtask->noTesttask;?></span></p>
</div>
<?php else:?>
<table class="table has-sort-head table-fixed" id='taskList'>
<?php $vars = "type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
<thead>
@@ -66,7 +71,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if($tasks):?>
<div class="table-footer"><?php $pager->show('right', 'pagerjs');?></div>
<?php endif;?>
</div>
+12 -2
View File
@@ -41,6 +41,17 @@
</div>
</div>
<div id="mainContent">
<?php if(empty($todos)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->my->noTodo;?></span>
<?php if(common::hasPriv('todo', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('todo', 'create'), "<i class='icon icon-plus'></i> " . $lang->todo->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class="main-table table-todo" data-ride="table" method="post">
<table class="table has-sort-head" id='todoList'>
<?php $vars = "type=$type&account=$account&status=$status&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
@@ -103,7 +114,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if($todos):?>
<div class="table-footer">
<?php if($type != 'cycle'):?>
<?php if(common::hasPriv('todo', 'batchEdit') or (common::hasPriv('todo', 'import2Today') and $importFuture)):?>
@@ -135,8 +145,8 @@
<?php endif;?>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
<?php include '../../todo/view/assignto.html.php';?>
<?php js::set('listName', 'todoList')?>
+1 -2
View File
@@ -119,8 +119,7 @@ $lang->product->aclList['custom'] = 'Custom (Team members and Whitelist members
$lang->product->storySummary = " <strong>%s</strong> Story(ies), <strong>%s</strong> hour(s) estimated, case coverage is <strong>%s</strong> on this page.";
$lang->product->checkedSummary = " <strong>%total%</strong> Checked, <strong>%estimate%</strong> hour(s) estimated, case coverage is <strong>%rate%</strong>.";
$lang->product->noModule = '<div>You have no modules</div><div>Manage now</div>';
$lang->product->noProduct = 'No product. You could ';
$lang->product->noStory = 'No story. You could ';
$lang->product->noProduct = 'No product. ';
$lang->product->noMatched = '"%s" cannot be found.' . $lang->productCommon;
$lang->product->featureBar['browse']['allstory'] = $lang->product->allStory;
+1 -2
View File
@@ -119,8 +119,7 @@ $lang->product->aclList['custom'] = '自定义白名单(团队成员和白名
$lang->product->storySummary = "本页共 <strong>%s</strong> 个需求,预计 <strong>%s</strong> 个工时,用例覆盖率<strong>%s</strong>。";
$lang->product->checkedSummary = "选中 <strong>%total%</strong> 个需求,预计 <strong>%estimate%</strong> 个工时,用例覆盖率<strong>%rate%</strong>。";
$lang->product->noModule = '<div>您现在还没有模块信息</div><div>请维护产品模块</div>';
$lang->product->noProduct = '暂时没有产品,您现在可以';
$lang->product->noStory = '暂时没有需求,您现在可以';
$lang->product->noProduct = '暂时没有产品。';
$lang->product->noMatched = '找不到包含"%s"的' . $lang->productCommon;
$lang->product->featureBar['browse']['allstory'] = $lang->product->allStory;
+1 -2
View File
@@ -119,8 +119,7 @@ $lang->product->aclList['custom'] = '自定義白名單(團隊成員和白名
$lang->product->storySummary = "本頁共 <strong>%s</strong> 個需求,預計 <strong>%s</strong> 個工時,用例覆蓋率<strong>%s</strong>。";
$lang->product->checkedSummary = "選中 <strong>%total%</strong> 個需求,預計 <strong>%estimate%</strong> 個工時,用例覆蓋率<strong>%rate%</strong>。";
$lang->product->noModule = '<div>您現在還沒有模組信息</div><div>請維護產品模組</div>';
$lang->product->noProduct = '暫時沒有產品,您現在可以';
$lang->product->noStory = '暫時沒有需求,您現在可以';
$lang->product->noProduct = '暫時沒有產品。';
$lang->product->noMatched = '找不到包含"%s"的' . $lang->productCommon;
$lang->product->featureBar['browse']['allstory'] = $lang->product->allStory;
+1 -1
View File
@@ -40,7 +40,7 @@
<thead>
<tr>
<th class='w-60px'><?php echo $lang->idAB;?></th>
<th class='required'><?php echo $lang->product->name;?></th>
<th class='w-200px required'><?php echo $lang->product->name;?></th>
<th class='w-150px required'><?php echo $lang->product->code;?></th>
<th class='w-150px<?php echo zget($visibleFields, 'line', ' hidden') . zget($requiredFields, 'line', '', ' required');?>'><?php echo $lang->product->line;?></th>
<th class='w-150px<?php echo zget($visibleFields, 'PO', ' hidden') . zget($requiredFields, 'PO', '', ' required');?>'><?php echo $lang->product->PO;?></th>
+12 -6
View File
@@ -138,6 +138,17 @@
</div>
<div class="main-col">
<div class="cell<?php if($browseType == 'bysearch') echo ' show';?>" id="queryBox"></div>
<?php if(empty($stories)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->story->noStory;?></span>
<?php if(common::hasPriv('story', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('story', 'create', "productID={$productID}&branch={$branch}&moduleID={$moduleID}"), "<i class='icon icon-plus'></i> " . $lang->story->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class="main-table table-story skip-iframe-modal" method="post" id='productStoryForm'>
<div class="table-header fixed-right">
<nav class="btn-toolbar pull-right"></nav>
@@ -177,7 +188,6 @@
</tbody>
</table>
</div>
<?php if($stories):?>
<div class="table-footer">
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
<div class="table-actions btn-toolbar">
@@ -359,12 +369,8 @@
<div class="table-statistic"><?php echo $summary;?></div>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php elseif(common::hasPriv('story', 'create')):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->product->noStory;?></span> <?php common::printLink('story', 'create', "productID={$productID}&branch={$branch}&moduleID={$moduleID}", "<i class='icon icon-plus'></i> " . $lang->story->create, '', "class='btn btn-info'");?></p>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
</div>
<script>
+12
View File
@@ -21,6 +21,17 @@
</div>
<?php endif;?>
<div id='mainContent' class='main-table'>
<?php if(empty($builds)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->build->noBuild;?></span>
<?php if(common::hasPriv('build', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('build', 'create', "productID=$product->id"), "<i class='icon icon-plus'></i> " . $lang->build->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<table class='table' id='buildList'>
<thead>
<tr class='text-center'>
@@ -57,5 +68,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+5 -5
View File
@@ -32,7 +32,11 @@
</div>
<div id="mainContent" class="main-content">
<div id="dynamics">
<?php if(!empty($dateGroups)):?>
<?php if(empty($dateGroups)):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->action->noDynamic;?></span></p>
</div>
<?php else:?>
<?php $firstAction = '';?>
<?php foreach($dateGroups as $date => $actions):?>
<?php $isToday = date(DT_DATE4) == $date;?>
@@ -63,10 +67,6 @@
</ul>
</div>
<?php endforeach;?>
<?php else:?>
<div class="text-center text-muted">
<?php echo $lang->action->noDynamic;?>
</div>
<?php endif;?>
</div>
</div>
-7
View File
@@ -19,11 +19,4 @@
<?php echo $this->fetch('block', 'dashboard', 'module=product');?>
<?php endif;?>
<script>
<?php if(isset($config->product->homepage) && $config->product->homepage != 'index'):?>
$(function()
{
$('#modulemenu .nav li.right:last').after("<li class='right'><a style='font-size:12px' href='javascript:setHomepage(\"product\", \"index\")'><i class='icon icon-cog'></i> <?php echo $lang->homepage?></a></li>")
});
<?php endif;?>
</script>
<?php include '../../common/view/footer.html.php';?>
+12
View File
@@ -16,6 +16,17 @@
</div>
</div>
<div id="mainContent">
<?php if(empty($projectStats)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->project->noProject;?></span>
<?php if(common::hasPriv('project', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('project', 'create'), "<i class='icon icon-plus'></i> " . $lang->project->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class='main-table table-project'>
<table class="table table-fixed">
<thead>
@@ -69,5 +80,6 @@
</tbody>
</table>
</form>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+23
View File
@@ -26,6 +26,28 @@
<div class="tab-content">
<?php foreach($branches as $branchKey => $branchName):?>
<div class="tab-pane fade release-paths <?php if($branchKey == 0) echo 'active in';?>" id="tabContent<?php echo $branchKey;?>">
<?php
$hasRoadmaps = false;
foreach($roadmaps as $year => $yearRoadmaps)
{
if(isset($yearRoadmaps[$branchKey]))
{
$hasRoadmaps = true;
break;
}
}
?>
<?php if(!$hasRoadmaps):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->release->noRelease;?></span>
<?php if(common::hasPriv('release', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('release', 'create', "productID=$product->id&branch=$branchKey"), "<i class='icon icon-plus'></i> " . $lang->release->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<?php foreach($roadmaps as $year => $yearRoadmaps):?>
<?php if(!isset($yearRoadmaps[$branchKey])) continue;?>
<?php $groupRoadmaps = zget($yearRoadmaps, $branchKey, array());?>
@@ -55,6 +77,7 @@
<?php endforeach;?>
</div>
<?php endforeach;?>
<?php endif;?>
</div>
<?php endforeach;?>
</div>
+1
View File
@@ -37,6 +37,7 @@ $lang->productplan->unlinkedBugs = 'Unlinked';
$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. ';
$lang->productplan->id = 'ID';
$lang->productplan->product = $lang->productCommon;
+1
View File
@@ -37,6 +37,7 @@ $lang->productplan->unlinkedBugs = '未关联Bug';
$lang->productplan->confirmDelete = "您确认删除该计划吗?";
$lang->productplan->confirmUnlinkStory = "您确认移除该需求吗?";
$lang->productplan->confirmUnlinkBug = "您确认移除该Bug吗?";
$lang->productplan->noPlan = '暂时没有计划。';
$lang->productplan->id = '编号';
$lang->productplan->product = $lang->productCommon;
+1
View File
@@ -37,6 +37,7 @@ $lang->productplan->unlinkedBugs = '未關聯Bug';
$lang->productplan->confirmDelete = "您確認刪除該計劃嗎?";
$lang->productplan->confirmUnlinkStory = "您確認移除該需求嗎?";
$lang->productplan->confirmUnlinkBug = "您確認移除該Bug嗎?";
$lang->productplan->noPlan = '暫時沒有計劃。';
$lang->productplan->id = '編號';
$lang->productplan->product = $lang->productCommon;
+12 -2
View File
@@ -28,6 +28,17 @@
</div>
</div>
<div id="mainContent">
<?php if(empty($plans)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->productplan->noPlan;?></span>
<?php if(common::hasPriv('productplan', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('productplan', 'create', "productID=$product->id&branch=$branch"), "<i class='icon icon-plus'></i> " . $lang->productplan->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class='main-table table-productplan' data-ride='table' method='post' id='productplanForm' action='<?php echo inlink('batchEdit', "productID=$product->id&branch=$branch")?>'>
<table class='table has-sort-head' id="productplanList">
<thead>
@@ -96,7 +107,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if($plans):?>
<div class="table-footer">
<?php if(common::hasPriv('productplan', 'batchEdit')):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
@@ -106,7 +116,7 @@
<?php endif;?>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
-1
View File
@@ -13,7 +13,6 @@
.table-children {border-left: 2px solid #cbd0db; border-right: 2px solid #cbd0db;}
.table-children.table-child-top {border-top: 2px solid #cbd0db;}
.table-children.table-child-bottom {border-bottom: 2px solid #cbd0db;}
.table td {overflow:hidden;}
.table td.has-child > .task-toggle {color: #838a9d; position: relative; top: -1px;}
.table td.has-child > .task-toggle:hover {color: #006af1; cursor: pointer;}
.table td.has-child > .task-toggle > .icon {font-size: 16px; display: inline-block; transition: transform .2s;}
+4 -2
View File
@@ -1,9 +1,10 @@
.boards {display: table; table-layout: fixed; width: auto; }
.boards .board:not(:last-child) {border-right: 1px solid #ddd;}
.board {display: table-cell; width: 16.666666667%; padding: 10px; border: 1px solid transparent; transition: background-color .2s, opacity .2s; vertical-align: top;}
.board-item {border: 1px solid #EBEBEB; padding: 5px 10px; cursor: move; border-radius: 2px; background-color: #fff; transition: border .2s, opacity .2s; overflow: hidden;}
.board-item.disabled {cursor: not-allowed;}
.board-item:hover {border-color: #ccc;}
.board-item > .title {line-height: 20px; max-height: 40px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis;}
.board-item > .title {line-height: 20px; max-height: 40px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; word-break: break-all;}
.board-item > .info {line-height: 22px; margin-top: 6px;}
.board-item + .board-item {margin-top: 10px;}
.board-item .task-left {float: right; font-size: 12px; color: #a6aab8;}
@@ -36,4 +37,5 @@
#kanban th.c-board {color: #3c4353; font-weight: bold;}
#kanban .fix-table-copy-wrapper {overflow: visible!important;}
#kanban .fix-table-copy-wrapper th.c-board {color: #eee;}
#kanban .fix-table-copy-wrapper th.c-board .btn-link {color: #fff;}
#kanban .fix-table-copy-wrapper th.c-board .btn-link {color: #fff;}
#kanban .group-title {word-break: break-all; line-height: 16px; padding: 3px 0; display: block;}
+2 -1
View File
@@ -1,9 +1,10 @@
.boards {display: table; table-layout: fixed; width: auto; }
.boards .board:not(:last-child) {border-right: 1px solid #ddd;}
.board {display: table-cell; width: 16.666666667%; padding: 10px; border: 1px solid transparent; transition: background-color .2s, opacity .2s; vertical-align: top;}
.board-item {border: 1px solid #EBEBEB; padding: 5px 10px; cursor: move; border-radius: 2px; background-color: #fff; transition: border .2s, opacity .2s; overflow: hidden;}
.board-item.disabled {cursor: not-allowed;}
.board-item:hover {border-color: #ccc;}
.board-item > .title {line-height: 20px; max-height: 40px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis;}
.board-item > .title {line-height: 20px; max-height: 40px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; word-break: break-all;}
.board-item > .info {line-height: 22px; margin-top: 6px;}
.board-item + .board-item {margin-top: 10px;}
.board-item .task-left {float: right; font-size: 12px; color: #a6aab8;}
+9
View File
@@ -1,5 +1,14 @@
$(function()
{
$('.c-boards').each(function()
{
var $boardsWrapper = $(this).find('.boards-wrapper');
if($boardsWrapper.height() < $(this).height())
{
$boardsWrapper.find('.boards').css('height', $(this).height());
}
});
var boardID = '';
var onlybody = config.requestType == 'GET' ? "&onlybody=yes" : "?onlybody=yes";
$.cookie('selfClose', 0, {expires:config.cookieLife, path:config.webRoot});
+1 -1
View File
@@ -32,9 +32,9 @@ $(function()
}
else if (level === 'story')
{
$('[data-type=story]').addClass('btn-active-text');
taskTree.collapse();
taskTree.show($taskTree.find('li.item-story').parent().parent(), true);
$('[data-type=story]').addClass('btn-active-text');
}
$('#main').toggleClass('tree-show-root', level === 'root');
};
+2 -1
View File
@@ -220,7 +220,8 @@ $lang->project->copyFromProject = "Copy from {$lang->projectCommon} <strong>%s</
$lang->project->cancelCopy = 'Cancel Copy';
$lang->project->byPeriod = 'By Time';
$lang->project->byUser = 'By User';
$lang->project->noProject = 'No project. You could ';
$lang->project->noProject = 'No projects. ';
$lang->project->noMembers = 'No members. ';
/* 交互提示。*/
$lang->project->confirmDelete = "Do you want to delete {$lang->projectCommon}[%s]?";
+2 -1
View File
@@ -220,7 +220,8 @@ $lang->project->copyFromProject = "复制自{$lang->projectCommon} <strong>%s</s
$lang->project->cancelCopy = '取消复制';
$lang->project->byPeriod = '按时间段';
$lang->project->byUser = '按用户';
$lang->project->noProject = '暂时没有项目,您现在可以';
$lang->project->noProject = '暂时没有项目。';
$lang->project->noMembers = '暂时没有团队成员。';
/* 交互提示。*/
$lang->project->confirmDelete = "您确定删除{$lang->projectCommon}[%s]吗?";
+2 -1
View File
@@ -220,7 +220,8 @@ $lang->project->copyFromProject = "複製自{$lang->projectCommon} <strong>%s</s
$lang->project->cancelCopy = '取消複製';
$lang->project->byPeriod = '按時間段';
$lang->project->byUser = '按用戶';
$lang->project->noProject = '暫時沒有項目,您現在可以';
$lang->project->noProject = '暫時沒有項目。';
$lang->project->noMembers = '暫時沒有團隊成員。';
/* 交互提示。*/
$lang->project->confirmDelete = "您確定刪除{$lang->projectCommon}[%s]嗎?";
+12 -2
View File
@@ -27,6 +27,17 @@
</div>
<div id="mainContent">
<div class="cell" id="queryBox"></div>
<?php if(empty($bugs)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->bug->noBug;?></span>
<?php if(common::hasPriv('bug', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('bug', 'create', "productID=$productID&branch=$branchID&extra=projectID=$project->id"), "<i class='icon icon-plus'></i> " . $lang->bug->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class='main-table' method='post' id='projectBugForm' data-ride="table">
<table class='table has-sort-head' id='bugList'>
<?php $canBatchAssignTo = common::hasPriv('bug', 'batchAssignTo');?>
@@ -90,7 +101,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if($bugs):?>
<div class='table-footer'>
<?php if($canBatchAssignTo):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
@@ -123,8 +133,8 @@
<?php endif;?>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
<?php js::set('replaceID', 'bugList');?>
<?php js::set('browseType', $type);?>
+14
View File
@@ -14,10 +14,12 @@
<?php js::set('confirmDelete', $lang->build->confirmDelete)?>
<div id="mainMenu" class="clearfix table-row">
<div class="btn-toolbar pull-left">
<?php if(!empty($projectBuilds)):?>
<div class="pull-left table-group-btns">
<button type="button" class="btn btn-link group-collapse-all"><?php echo $lang->project->treeLevel['root'];?> <i class="icon-fold-all"> </i></button>
<button type="button" class="btn btn-link group-expand-all"><?php echo $lang->project->treeLevel['all'];?> <i class="icon-unfold-all"> </i></button>
</div>
<?php endif;?>
<span class='btn btn-link btn-active-text'>
<span class='text'><?php echo $lang->project->build;?></span>
<span class='label label-light label-badge'><?php echo $buildsTotal;?></span>
@@ -28,6 +30,17 @@
</div>
</div>
<div id="mainContent">
<?php if(empty($projectBuilds)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->build->noBuild;?></span>
<?php if(common::hasPriv('build', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('build', 'create', "project=$project->id"), "<i class='icon icon-plus'></i> " . $lang->build->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<div class='main-table' data-ride="table" data-checkable="false" data-group="true">
<table class="table table-grouped text-center" id='buildList'>
<thead>
@@ -99,5 +112,6 @@
</tbody>
</table>
</div>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+6 -6
View File
@@ -32,8 +32,12 @@
</div>
<div id="mainContent" class="main-content">
<?php if(empty($dateGroups)):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->action->noDynamic;?></span></p>
</div>
<?php else:?>
<div id="dynamics">
<?php if(!empty($dateGroups)):?>
<?php $firstAction = '';?>
<?php foreach($dateGroups as $date => $actions):?>
<?php $isToday = date(DT_DATE4) == $date;?>
@@ -64,12 +68,8 @@
</ul>
</div>
<?php endforeach;?>
<?php else:?>
<div class="text-center text-muted">
<?php echo $lang->action->noDynamic;?>
</div>
<?php endif;?>
</div>
<?php endif;?>
</div>
<?php if(!empty($firstAction)):?>
<?php
+14
View File
@@ -13,10 +13,12 @@
<?php include '../../common/view/header.html.php';?>
<div id="mainMenu" class="clearfix table-row">
<div class="btn-toolbar pull-left">
<?php if(!empty($tasks)):?>
<div class="pull-left table-group-btns">
<button type="button" class="btn btn-link group-collapse-all"><?php echo $lang->project->treeLevel['root'];?> <i class="icon-fold-all"></i></button>
<button type="button" class="btn btn-link group-expand-all"><?php echo $lang->project->treeLevel['all'];?> <i class="icon-unfold-all"></i></button>
</div>
<?php endif;?>
<?php if(isset($lang->project->groupFilter[$groupBy])):?>
<?php foreach($lang->project->groupFilter[$groupBy] as $filterKey => $name):?>
<?php
@@ -71,6 +73,17 @@
</div>
</div>
<div id='tasksTable' class='main-table' data-ride='table' data-checkable='false' data-group='true' data-hot='true'>
<?php if(empty($tasks)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->task->noTask;?></span>
<?php if(common::hasPriv('task', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('task', 'create', "project=$projectID" . (isset($moduleID) ? "&storyID=&moduleID=$moduleID" : '')), "<i class='icon icon-plus'></i> " . $lang->task->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<table class="table table-grouped text-center">
<thead>
<tr class="<?php if($allCount) echo 'divider';?>">
@@ -198,5 +211,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+23
View File
@@ -52,6 +52,28 @@ if($allCols) $taskCols = array('wait', 'doing', 'pause', 'done', 'cancel', 'clos
$account = $this->app->user->account;
?>
<div id="kanban" class="main-table" data-ride="table" data-checkable="false" data-group="true">
<?php
$hasTask = false;
foreach($kanbanGroup as $group)
{
if(count(get_object_vars($group)) > 0)
{
$hasTask = true;
break;
}
}
?>
<?php if(!$hasTask):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->task->noTask;?></span>
<?php if(common::hasPriv('task', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('task', 'create', "project=$projectID" . (isset($moduleID) ? "&storyID=&moduleID=$moduleID" : '')), "<i class='icon icon-plus'></i> " . $lang->task->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<table class="table table-grouped text-center">
<thead>
<tr>
@@ -151,6 +173,7 @@ $account = $this->app->user->account;
<?php endforeach;?>
</tbody>
</table>
<?php endif;?>
</div>
<?php echo js::set('projectID', $projectID);?>
<?php include '../../common/view/footer.html.php';?>
+12 -6
View File
@@ -78,6 +78,17 @@
</div>
<div class="main-col">
<div class="cell" id="queryBox"></div>
<?php if(empty($stories)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->story->noStory;?></span>
<?php if(common::hasPriv('project', 'linkStory')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('project', 'linkStory', "project=$project->id"), "<i class='icon icon-link'></i> " . $lang->project->linkStory, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class='main-table table-story skip-iframe-modal' method='post' id='projectStoryForm'>
<div class="table-header fixed-right">
<nav class="btn-toolbar pull-right"></nav>
@@ -197,11 +208,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if(!$stories):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->product->noStory;?></span> <?php common::printLink('project', 'linkStory', "project=$project->id", "<i class='icon icon-link'></i> " . $lang->project->linkStory, '', "class='btn btn-info'");?></p>
</div>
<?php else:?>
<div class='table-footer'>
<?php if($canBatchEdit or $canBatchClose):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
@@ -245,8 +251,8 @@
<div class="table-statistic"><?php echo $summary;?></div>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
</div>
+12
View File
@@ -44,6 +44,17 @@ $cols = array('projected', 'developing', 'developed', 'testing', 'tested', 'v
$account = $this->app->user->account;
?>
<div id="kanban" class="main-table" data-ride="table" data-checkable="false" data-group="true">
<?php if(empty($stories)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->story->noStory;?></span>
<?php if(common::hasPriv('project', 'linkStory')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('project', 'linkStory', "project=$project->id"), "<i class='icon icon-link'></i> " . $lang->project->linkStory, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<table class="table table-grouped text-center">
<thead>
<tr>
@@ -82,6 +93,7 @@ $account = $this->app->user->account;
</tr>
</tbody>
</table>
<?php endif;?>
</div>
<?php js::set('projectID', $projectID);?>
<?php include '../../common/view/footer.html.php';?>
+12 -2
View File
@@ -165,6 +165,17 @@ js::set('browseType', $browseType);
</div>
<div class="main-col">
<div class="cell<?php if($browseType == 'bysearch') echo ' show';?>" id="queryBox"></div>
<?php if(empty($tasks)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->task->noTask;?></span>
<?php if(common::hasPriv('task', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('task', 'create', "project=$projectID" . (isset($moduleID) ? "&storyID=&moduleID=$moduleID" : '')), "<i class='icon icon-plus'></i> " . $lang->task->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class="main-table table-task skip-iframe-modal" method="post" id='projectTaskForm'>
<div class="table-header fixed-right">
<nav class="btn-toolbar pull-right"></nav>
@@ -219,7 +230,6 @@ js::set('browseType', $browseType);
</tbody>
</table>
</div>
<?php if($tasks):?>
<div class="table-footer">
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
<div class="table-actions btn-toolbar">
@@ -306,8 +316,8 @@ js::set('browseType', $browseType);
<div class="table-statistic"><?php echo $summary;?></div>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
</div>
<?php js::set('replaceID', 'taskList')?>
+14 -2
View File
@@ -21,16 +21,27 @@
if(commonModel::isTutorialMode())
{
$wizardParams = helper::safe64Encode("projectID=$project->id");
echo html::a($this->createLink('tutorial', 'wizard', "module=project&method=managemembers&params=$wizardParams"), $lang->project->manageMembers, '', "class='btn btn-primary manage-team-btn'");
echo html::a($this->createLink('tutorial', 'wizard', "module=project&method=manageMembers&params=$wizardParams"), "<i class='icon icon-persons'></i> " . $lang->project->manageMembers, '', "class='btn btn-primary manage-team-btn'");
}
else
{
if(!empty($app->user->admin) or empty($app->user->rights['rights']['my']['limited'])) common::printLink('project', 'managemembers', "projectID=$project->id", $lang->project->manageMembers, '', "class='btn btn-primary manage-team-btn'");
if(!empty($app->user->admin) or empty($app->user->rights['rights']['my']['limited'])) common::printLink('project', 'manageMembers', "projectID=$project->id", "<i class='icon icon-persons'></i> " . $lang->project->manageMembers, '', "class='btn btn-primary manage-team-btn'");
}
?>
</div>
</div>
<div id='mainContent'>
<?php if(empty($teamMembers)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->project->noMembers;?></span>
<?php if((!empty($app->user->admin) or empty($app->user->rights['rights']['my']['limited'])) && common::hasPriv('project', 'manageMembers')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('project', 'manageMembers', "projectID=$project->id"), "<i class='icon icon-persons'></i> " . $lang->project->manageMembers, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class='main-table'>
<table class='table' id='memberList'>
<thead>
@@ -79,5 +90,6 @@
<div class='table-statistic'><?php echo $lang->team->totalHours . ':' . "<strong>$totalHours{$lang->project->workHour}</strong>";?></div>
</div>
</form>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+14 -2
View File
@@ -14,10 +14,12 @@
<?php js::set('confirmDelete', $lang->testtask->confirmDelete)?>
<div id="mainMenu" class="clearfix">
<div class="btn-toolbar pull-left">
<?php if(!empty($tasks)):?>
<div class="pull-left table-group-btns">
<button type="button" class="btn btn-link group-collapse-all"><?php echo $lang->testtask->collapseAll;?> <i class="icon-fold-all muted"></i></button>
<button type="button" class="btn btn-link group-expand-all"><?php echo $lang->testtask->expandAll;?> <i class="icon-unfold-all muted"></i></button>
</div>
<?php endif;?>
<?php $total = 0;?>
<?php foreach($tasks as $productTasks) $total += count($productTasks);?>
<a href='' class='btn btn-link btn-active-text'>
@@ -31,6 +33,17 @@
</div>
</div>
<div id="mainContent">
<?php if(empty($tasks)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->testtask->noTesttask;?></span>
<?php if(common::hasPriv('testtask', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('testtask', 'create', "product=0&project=$projectID"), "<i class='icon icon-plus'></i> " . $lang->testtask->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class="main-table table-testtask" data-ride="table" data-group="true" method="post" target='hiddenwin' id='testtaskForm'>
<table class="table table-grouped has-sort-head" id='taskList'>
<thead>
@@ -116,7 +129,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if($tasks):?>
<div class="table-footer">
<?php if($canTestReport):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
@@ -130,7 +142,7 @@
<?php endif;?>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+22 -8
View File
@@ -14,14 +14,16 @@
<?php include '../../common/view/kindeditor.html.php';?>
<div id="mainMenu" class="clearfix">
<div class="btn-toolbar pull-left">
<?php foreach ($lang->project->treeLevel as $name => $btnLevel):?>
<?php
$icon = '';
if($name == 'root') $icon = ' <i class="icon-fold-all"></i>';
if($name == 'all') $icon = ' <i class="icon-unfold-all"></i>';
?>
<a href='' class='btn btn-link btn-tree-view' data-type='<?php echo $name ?>'><span class='text'><?php echo $btnLevel . $icon;?></span></button>
<?php endforeach; ?>
<?php
foreach($lang->project->treeLevel as $name => $btnLevel)
{
if(empty($tree) && ($name == 'root' or $name == 'all')) continue;
$icon = '';
if($name == 'root') $icon = ' <i class="icon-fold-all"></i>';
if($name == 'all') $icon = ' <i class="icon-unfold-all"></i>';
echo html::a('javascript:;', "<span class='text'>$btnLevel$icon</span>", '', "class='btn btn-link btn-tree-view' data-type='{$name}'");
}
?>
</div>
<div class="btn-toolbar pull-right">
<?php
@@ -57,6 +59,17 @@
</div>
<div id="mainContent" class="main-row hide-side">
<?php if(empty($tree)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->task->noTask;?></span>
<?php if(common::hasPriv('task', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('task', 'create', "project=$projectID" . (isset($moduleID) ? "&storyID=&moduleID=$moduleID" : '')), "<i class='icon icon-plus'></i> " . $lang->task->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<div class="main-col">
<div class="cell">
<ul class="tree" id="taskTree">
@@ -69,5 +82,6 @@
<div id="itemContent" class="load-indicator loading"></div>
</div>
</div>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+4 -4
View File
@@ -40,7 +40,7 @@
<div class="detail" open>
<div class="detail-title"><?php echo $lang->task->legendDesc;?></div>
<div class="detail-content article-content">
<?php echo !empty($task->desc) ? $task->desc : "<div class='text-center text-muted'>" . $lang->task->noData . '</div>';?>
<?php echo !empty($task->desc) ? $task->desc : "<div class='text-center text-muted'>" . $lang->noData . '</div>';?>
</div>
</div>
<?php if($project->type != 'ops'):?>
@@ -48,21 +48,21 @@
<div class="detail" open>
<div class="detail-title"><?php echo $lang->bug->steps;?></div>
<div class="detail-content article-content">
<?php echo !empty($task->bugSteps) ? $task->bugSteps : "<div class='text-center text-muted'>" . $lang->task->noData . '</div>';?>
<?php echo !empty($task->bugSteps) ? $task->bugSteps : "<div class='text-center text-muted'>" . $lang->noData . '</div>';?>
</div>
</div>
<?php elseif($task->story):?>
<div class="detail" open>
<div class='detail-title'><?php echo $lang->task->storySpec;?></div>
<div class='detail-content article-content'>
<?php echo (!empty($task->storySpec) || !empty($task->storyFiles)) ? $task->storySpec : "<div class='text-center text-muted'>" . $lang->task->noData . '</div>';?>
<?php echo (!empty($task->storySpec) || !empty($task->storyFiles)) ? $task->storySpec : "<div class='text-center text-muted'>" . $lang->noData . '</div>';?>
</div>
<?php echo $this->fetch('file', 'printFiles', array('files' => $task->storyFiles, 'fieldset' => 'false'));?>
</div>
<div class='detail' open>
<div class='detail-title'><?php echo $lang->task->storyVerify;?></div>
<div class='detail-content article-content'>
<?php echo !empty($task->storyVerify) ? $task->storyVerify : "<div class='text-center text-muted'>" . $lang->task->noData . '</div>';?>
<?php echo !empty($task->storyVerify) ? $task->storyVerify : "<div class='text-center text-muted'>" . $lang->noData . '</div>';?>
</div>
</div>
<?php endif;?>
-8
View File
@@ -12,12 +12,4 @@
?>
<?php include '../../common/view/header.html.php';?>
<?php echo $this->fetch('block', 'dashboard', 'module=qa');?>
<script>
<?php if($config->qa->homepage != 'index'):?>
$(function()
{
$('#modulemenu .nav li:last').after("<li class='right'><a style='font-size:12px' href='javascript:setHomepage(\"qa\", \"index\")'><i class='icon icon-cog'></i> <?php echo $lang->homepage?></a></li>")
});
<?php endif;?>
</script>
<?php include '../../common/view/footer.html.php';?>
+1
View File
@@ -27,6 +27,7 @@ $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. ';
$lang->release->basicInfo = 'Basic Info';
+1
View File
@@ -27,6 +27,7 @@ $lang->release->confirmDelete = "您确认删除该发布吗?";
$lang->release->confirmUnlinkStory = "您确认移除该需求吗?";
$lang->release->confirmUnlinkBug = "您确认移除该Bug吗?";
$lang->release->existBuild = '『版本』已经有『%s』这条记录了。您可以更改『发布名称』或者选择一个『版本』。';
$lang->release->noRelease = '暂时没有发布。';
$lang->release->basicInfo = '基本信息';
+1
View File
@@ -27,6 +27,7 @@ $lang->release->confirmDelete = "您確認刪除該發佈嗎?";
$lang->release->confirmUnlinkStory = "您確認移除該需求嗎?";
$lang->release->confirmUnlinkBug = "您確認移除該Bug嗎?";
$lang->release->existBuild = '『版本』已經有『%s』這條記錄了。您可以更改『發佈名稱』或者選擇一個『版本』。';
$lang->release->noRelease = '暫時沒有發佈。';
$lang->release->basicInfo = '基本信息';
+12
View File
@@ -24,6 +24,17 @@
</div>
</div>
<div id="mainContent" class='main-table'>
<?php if(empty($releases)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->release->noRelease;?></span>
<?php if(common::hasPriv('release', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('release', 'create', "productID=$product->id&branch=$branch"), "<i class='icon icon-plus'></i> " . $lang->release->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<table class="table" id='releaseList'>
<thead>
<tr>
@@ -75,5 +86,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+1
View File
@@ -194,6 +194,7 @@ $lang->story->confirmDelete = "Do you want to delete this Story?";
$lang->story->errorEmptyChildStory = '『Subdivide Story』canot be blank.';
$lang->story->mustChooseResult = 'Select a result.';
$lang->story->mustChoosePreVersion = 'Select a Version to revert to.';
$lang->story->noStory = 'No stories. ';
$lang->story->form = new stdclass();
$lang->story->form->area = 'Story Scope';
+1
View File
@@ -194,6 +194,7 @@ $lang->story->confirmDelete = "您确认删除该需求吗?";
$lang->story->errorEmptyChildStory = '『细分需求』不能为空。';
$lang->story->mustChooseResult = '必须选择评审结果';
$lang->story->mustChoosePreVersion = '必须选择回溯的版本';
$lang->story->noStory = '暂时没有需求。';
$lang->story->form = new stdclass();
$lang->story->form->area = '该需求所属范围';
+1
View File
@@ -194,6 +194,7 @@ $lang->story->confirmDelete = "您確認刪除該需求嗎?";
$lang->story->errorEmptyChildStory = '『細分需求』不能為空。';
$lang->story->mustChooseResult = '必須選擇評審結果';
$lang->story->mustChoosePreVersion = '必須選擇回溯的版本';
$lang->story->noStory = '暫時沒有需求。';
$lang->story->form = new stdclass();
$lang->story->form->area = '該需求所屬範圍';
+6 -2
View File
@@ -13,6 +13,11 @@
<?php include '../../common/view/header.html.php';?>
<?php include '../../testcase/view/caseheader.html.php';?>
<div id='mainContent' class='main-control'>
<?php if(empty($stories)):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->story->noStory;?></span></p>
</div>
<?php else:?>
<form method='post' id='productStoryForm' class='main-table table-story' data-ride='table'>
<table class='table has-sort-head table-fixed' id='storyList'>
<thead>
@@ -73,7 +78,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php if($stories):?>
<div class='table-footer'>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
<div class="table-actions btn-toolbar">
@@ -136,7 +140,7 @@
?>
</div>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+1 -1
View File
@@ -171,8 +171,8 @@ $lang->task->confirmTransfer = '"Left Hour" is 0,Do you want to transfer
$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.';
$lang->task->commentActions = '%s. %s, commented by <strong>%s</strong>.';
$lang->task->noData = 'No Data.';
$lang->task->deniedNotice = 'Only the %s can %s the task.';
$lang->task->noTask = 'No tasks. ';
$lang->task->error = new stdclass();
$lang->task->error->consumedNumber = '"Consumed" must be numbers.';
+1 -1
View File
@@ -171,8 +171,8 @@ $lang->task->confirmTransfer = '"当前剩余"为0,任务将被转交,
$lang->task->noticeLinkStory = "没有可关联的相关需求,您可以为当前项目%s,然后%s";
$lang->task->noticeSaveRecord = '您有尚未保存的工时记录,请先将其保存。';
$lang->task->commentActions = '%s. %s, 由 <strong>%s</strong> 添加备注。';
$lang->task->noData = '暂无';
$lang->task->deniedNotice = '当前任务只有%s才可以%s。';
$lang->task->noTask = '暂时没有任务。';
$lang->task->error = new stdclass();
$lang->task->error->consumedNumber = '"已经消耗"必须为数字';
+1 -1
View File
@@ -171,8 +171,8 @@ $lang->task->confirmTransfer = '"當前剩餘"為0,任務將被轉交,
$lang->task->noticeLinkStory = "沒有可關聯的相關需求,您可以為當前項目%s,然後%s";
$lang->task->noticeSaveRecord = '您有尚未保存的工時記錄,請先將其保存。';
$lang->task->commentActions = '%s. %s, 由 <strong>%s</strong> 添加備註。';
$lang->task->noData = '暫無';
$lang->task->deniedNotice = '當前任務只有%s才可以%s。';
$lang->task->noTask = '暫時沒有任務。';
$lang->task->error = new stdclass();
$lang->task->error->consumedNumber = '"已經消耗"必須為數字';
+14 -14
View File
@@ -41,7 +41,7 @@
<div class="detail">
<div class="detail-title"><?php echo $lang->task->legendDesc;?></div>
<div class="detail-content article-content">
<?php echo !empty($task->desc) ? $task->desc : "<div class='text-center text-muted'>" . $lang->task->noData . '</div>';?>
<?php echo !empty($task->desc) ? $task->desc : "<div class='text-center text-muted'>" . $lang->noData . '</div>';?>
</div>
</div>
<?php if($project->type != 'ops'):?>
@@ -49,21 +49,21 @@
<div class="detail">
<div class="detail-title"><?php echo $lang->bug->steps;?></div>
<div class="detail-content article-content">
<?php echo !empty($task->bugSteps) ? $task->bugSteps : "<div class='text-center text-muted'>" . $lang->task->noData . '</div>';?>
<?php echo !empty($task->bugSteps) ? $task->bugSteps : "<div class='text-center text-muted'>" . $lang->noData . '</div>';?>
</div>
</div>
<?php elseif($task->story):?>
<div class="detail">
<div class='detail-title'><?php echo $lang->task->storySpec;?></div>
<div class='detail-content article-content'>
<?php echo (!empty($task->storySpec) || !empty($task->storyFiles)) ? $task->storySpec : "<div class='text-center text-muted'>" . $lang->task->noData . '</div>';?>
<?php echo (!empty($task->storySpec) || !empty($task->storyFiles)) ? $task->storySpec : "<div class='text-center text-muted'>" . $lang->noData . '</div>';?>
</div>
<?php echo $this->fetch('file', 'printFiles', array('files' => $task->storyFiles, 'fieldset' => 'false'));?>
</div>
<div class='detail'>
<div class='detail-title'><?php echo $lang->task->storyVerify;?></div>
<div class='detail-content article-content'>
<?php echo !empty($task->storyVerify) ? $task->storyVerify : "<div class='text-center text-muted'>" . $lang->task->noData . '</div>';?>
<?php echo !empty($task->storyVerify) ? $task->storyVerify : "<div class='text-center text-muted'>" . $lang->noData . '</div>';?>
</div>
</div>
<?php endif;?>
@@ -184,7 +184,7 @@
<th><?php echo $lang->task->story;?></th>
<td>
<?php
if(!$task->storyTitle) echo $lang->task->noData;
if(!$task->storyTitle) echo $lang->noData;
if($task->storyTitle and !common::printLink('story', 'view', "storyID=$task->story", $task->storyTitle, '', "class='iframe' data-width='80%'", true, true)) echo $task->storyTitle;
if($task->needConfirm)
{
@@ -203,7 +203,7 @@
<?php endif;?>
<tr>
<th><?php echo empty($task->team) ? $lang->task->assignTo : $lang->task->transferTo;?></th>
<td><?php echo $task->assignedTo ? $task->assignedToRealName . $lang->at . $task->assignedDate : $lang->task->noData;?></td>
<td><?php echo $task->assignedTo ? $task->assignedToRealName . $lang->at . $task->assignedDate : $lang->noData;?></td>
</tr>
<tr>
<th><?php echo $lang->task->type;?></th>
@@ -215,7 +215,7 @@
</tr>
<tr>
<th><?php echo $lang->task->pri;?></th>
<td><span class='label-pri <?php echo 'label-pri-' . $task->pri;?>' title='<?php echo zget($lang->task->priList, $task->pri);?>'><?php echo $task->pri == '0' ? $lang->task->noData : zget($lang->task->priList, $task->pri)?></span></td>
<td><span class='label-pri <?php echo 'label-pri-' . $task->pri;?>' title='<?php echo zget($lang->task->priList, $task->pri);?>'><?php echo $task->pri == '0' ? $lang->noData : zget($lang->task->priList, $task->pri)?></span></td>
</tr>
<tr>
<th><?php echo $lang->task->mailto;?></th>
@@ -224,7 +224,7 @@
$mailto = explode(',', str_replace(' ', '', $task->mailto));
if(empty($mainto))
{
echo $lang->task->noData;
echo $lang->noData;
}
else
{
@@ -310,27 +310,27 @@
<table class='table table-data'>
<tr>
<th><?php echo $lang->task->openedBy;?></th>
<td><?php echo $task->openedBy ? zget($users, $task->openedBy, $task->openedBy) . $lang->at . $task->openedDate : $lang->task->noData;?></td>
<td><?php echo $task->openedBy ? zget($users, $task->openedBy, $task->openedBy) . $lang->at . $task->openedDate : $lang->noData;?></td>
</tr>
<tr>
<th><?php echo $lang->task->finishedBy;?></th>
<td><?php echo ($task->finishedBy) ? zget($users, $task->finishedBy, $task->finishedBy) . $lang->at . $task->finishedDate : $lang->task->noData;?></td>
<td><?php echo ($task->finishedBy) ? zget($users, $task->finishedBy, $task->finishedBy) . $lang->at . $task->finishedDate : $lang->noData;?></td>
</tr>
<tr>
<th><?php echo $lang->task->canceledBy;?></th>
<td><?php echo $task->canceledBy ? zget($users, $task->canceledBy, $task->canceledBy) . $lang->at . $task->canceledDate : $lang->task->noData;?></td>
<td><?php echo $task->canceledBy ? zget($users, $task->canceledBy, $task->canceledBy) . $lang->at . $task->canceledDate : $lang->noData;?></td>
</tr>
<tr>
<th><?php echo $lang->task->closedBy;?></th>
<td><?php echo $task->closedBy ? zget($users, $task->closedBy, $task->closedBy) . $lang->at . $task->closedDate : $lang->task->noData;?></td>
<td><?php echo $task->closedBy ? zget($users, $task->closedBy, $task->closedBy) . $lang->at . $task->closedDate : $lang->noData;?></td>
</tr>
<tr>
<th><?php echo $lang->task->closedReason;?></th>
<td><?php echo $task->closedReason ? $lang->task->reasonList[$task->closedReason] : $lang->task->noData;?></td>
<td><?php echo $task->closedReason ? $lang->task->reasonList[$task->closedReason] : $lang->noData;?></td>
</tr>
<tr>
<th><?php echo $lang->task->lastEdited;?></th>
<td><?php echo $task->lastEditedBy ? zget($users, $task->lastEditedBy, $task->lastEditedBy) . $lang->at . $task->lastEditedDate : $lang->task->noData;?></td>
<td><?php echo $task->lastEditedBy ? zget($users, $task->lastEditedBy, $task->lastEditedBy) . $lang->at . $task->lastEditedDate : $lang->noData;?></td>
</tr>
</table>
</div>
+1 -1
View File
@@ -191,7 +191,7 @@ $lang->testcase->noRequire = "Row %s has“%s”which is a required field
$lang->testcase->noLibrary = "No library exists. Please create one first.";
$lang->testcase->mustChooseResult = 'Review result is required.';
$lang->testcase->noModule = '<div>You have no modules</div><div>Manage now</div>';
$lang->testcase->noCase = 'No Case. You could ';
$lang->testcase->noCase = 'No cases. ';
$lang->testcase->searchStories = 'Enter to searcu Story';
$lang->testcase->selectLib = 'Select Library';
+1 -1
View File
@@ -191,7 +191,7 @@ $lang->testcase->noRequire = "%s行的“%s”是必填字段,不能为
$lang->testcase->noLibrary = "现在还没有公共库,请先创建!";
$lang->testcase->mustChooseResult = '必须选择评审结果';
$lang->testcase->noModule = '<div>您现在还没有模块信息</div><div>请维护测试模块</div>';
$lang->testcase->noCase = '暂时没有用例,您现在可以';
$lang->testcase->noCase = '暂时没有用例。';
$lang->testcase->searchStories = '键入来搜索需求';
$lang->testcase->selectLib = '请选择库';
+1 -1
View File
@@ -191,7 +191,7 @@ $lang->testcase->noRequire = "%s行的“%s”是必填欄位,不能為
$lang->testcase->noLibrary = "現在還沒有公共庫,請先創建!";
$lang->testcase->mustChooseResult = '必須選擇評審結果';
$lang->testcase->noModule = '<div>您現在還沒有模組信息</div><div>請維護測試模組</div>';
$lang->testcase->noCase = '暫時沒有用例,您現在可以';
$lang->testcase->noCase = '暫時沒有用例。';
$lang->testcase->searchStories = '鍵入來搜索需求';
$lang->testcase->selectLib = '請選擇庫';
+13 -6
View File
@@ -41,6 +41,18 @@ js::set('branch', $branch);
</div>
<div class='main-col'>
<div id='queryBox' class='cell<?php if($browseType == 'bysearch') echo ' show';?>'></div>
<?php if(empty($cases)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->testcase->noCase;?></span>
<?php if(common::hasPriv('testcase', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php $initModule = isset($moduleID) ? (int)$moduleID : 0;?>
<?php echo html::a($this->createLink('testcase', 'create', "productID=$productID&branch=$branch&moduleID=$initModule"), "<i class='icon icon-plus'></i> " . $lang->testcase->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class='main-table table-case' data-ride='table' id='batchForm' method='post'>
<div class="table-header fixed-right">
<nav class="btn-toolbar pull-right"></nav>
@@ -81,7 +93,6 @@ js::set('branch', $branch);
</tbody>
</table>
</div>
<?php if($cases):?>
<div class='table-footer'>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
<div class='table-actions btn-toolbar'>
@@ -198,12 +209,8 @@ js::set('branch', $branch);
<div class="table-statistic"><?php echo $summary;?></div>
<?php $pager->show('right', 'pagerjs');?>
</div>
<?php elseif(common::hasPriv('testcase', 'create')):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->testcase->noCase;?></span> <?php common::printLink('testcase', 'create', "productID={$productID}", "<i class='icon icon-plus'></i> " . $lang->testcase->create, '', "class='btn btn-info'");?></p>
</div>
<?php endif;?>
</form>
<?php endif;?>
</div>
</div>
<script>
+12
View File
@@ -15,6 +15,17 @@
<?php include './caseheader.html.php';?>
<?php js::set('browseType', $browseType);?>
<div class="main-table" data-ride="table" data-checkable="false" data-group="true">
<?php if(empty($cases)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->testcase->noCase;?></span>
<?php if(common::hasPriv('testcase', 'create')):?>
<span class="text-muted"><?php echo $lang->youCould;?></span>
<?php echo html::a($this->createLink('testcase', 'create', "productID=$productID&branch=$branch&moduleID=$initModule"), "<i class='icon icon-plus'></i> " . $lang->testcase->create, '', "class='btn btn-info'");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<table class="table table-grouped text-center">
<thead>
<tr class="divider">
@@ -97,5 +108,6 @@
<?php endforeach;?>
</tbody>
</table>
<?php endif;?>
</div>
<?php include '../../common/view/footer.html.php';?>
+1 -1
View File
@@ -13,7 +13,7 @@
<table class='table table-form' id='showData'>
<thead>
<tr>
<th class='w-50px'><?php echo $lang->lineNumber?></th>
<th class='w-50px'><?php echo $lang->lineNumber?></th>
<th class='w-70px'><?php echo $lang->testcase->id?></th>
<th><?php echo $lang->testcase->title?></th>
<?php if(!empty($branches)):?>

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