This commit is contained in:
hufangzhou
2020-12-29 16:28:17 +08:00
69 changed files with 318 additions and 188 deletions
-1
View File
@@ -1414,7 +1414,6 @@ class bugModel extends model
->leftJoin(TABLE_PRODUCT)->alias('t2')
->on('t1.product=t2.id')
->where('t1.assignedTo')->eq($account)
->beginIF(!$this->app->user->admin)->andWhere('t1.project')->in('0,' . $this->app->user->view->projects)->fi()
->beginIF(!empty($skipProductIDList))->andWhere('t1.product')->notin($skipProductIDList)->fi()
->beginIF(!empty($skipProjectIDList))->andWhere('t1.project')->notin($skipProjectIDList)->fi()
->andWhere('t1.deleted')->eq(0)
+3 -2
View File
@@ -739,7 +739,8 @@ $lang->pager->pageOfTotal = "Page <strong>{page}</strong> of <strong>{totalPage
$lang->colorPicker = new stdclass();
$lang->colorPicker->errorTip = 'Not a valid color value';
$lang->proVersion = "<a href='http://api.zentao.net/goto.php?item=proversion&from=footer' target='_blank' id='proLink' class='text-important'>ZenTao Pro <i class='text-danger icon-pro-version'></i></a> &nbsp; ";
$lang->proVersion = "<a href='https://www.zentao.pm/book/zentaopromanual/free-open-source-project-management-software-zentaopro-127.html' target='_blank' id='proLink' class='btn btn-link'><span class='label'>Upgrade</span></a>";
$lang->globalLogo = "<img src='{$this->config->webRoot}theme/default/images/main/zentao.png'/>";
$lang->downNotify = "Download Desktop Notification";
$lang->downloadClient = "Download ZenTao Desktop";
$lang->clientHelp = "Client Help";
@@ -875,7 +876,7 @@ $lang->icons['score'] = 'tint';
/* Scrum menu. */
$lang->menu = new stdclass();
$lang->menu->scrum = new stdclass();
$lang->menu->scrum->program = 'Index|program|index|';
$lang->menu->scrum->program = 'Index|program|index|project={PROJECT}';
$lang->menu->scrum->project = "$lang->executionCommon|project|index|locate=no";
$lang->menu->scrum->projectstory = array('link' => 'Story|projectstory|requirement', 'alias' => 'requirement,story,track');
$lang->menu->scrum->doc = 'Doc|doc|index|';
+3 -2
View File
@@ -739,7 +739,8 @@ $lang->pager->pageOfTotal = "Page <strong>{page}</strong> of <strong>{totalPage
$lang->colorPicker = new stdclass();
$lang->colorPicker->errorTip = 'Not a valid color value';
$lang->proVersion = "<a href='https://www.zentao.pm/book/zentaopromanual/free-open-source-project-management-software-zentaopro-127.html' target='_blank' id='proLink' class='text-important'>ZenTao Pro <i class='text-danger icon-pro-version'></i></a> &nbsp; ";
$lang->proVersion = "<a href='https://www.zentao.pm/book/zentaopromanual/free-open-source-project-management-software-zentaopro-127.html' target='_blank' id='proLink' class='btn btn-link'><span class='label'>Upgrade</span></a>";
$lang->globalLogo = "<img src='{$this->config->webRoot}theme/default/images/main/zentao.png'/>";
$lang->downNotify = "Download Desktop Notification";
$lang->downloadClient = "Download ZenTao Desktop";
$lang->clientHelp = "Client Help";
@@ -875,7 +876,7 @@ $lang->icons['score'] = 'tint';
/* Scrum menu. */
$lang->menu = new stdclass();
$lang->menu->scrum = new stdclass();
$lang->menu->scrum->program = 'Index|program|index|';
$lang->menu->scrum->program = 'Index|program|index|project={PROJECT}';
$lang->menu->scrum->project = "$lang->executionCommon|project|index|locate=no";
$lang->menu->scrum->projectstory = array('link' => 'Story|projectstory|requirement', 'alias' => 'requirement,story,track');
$lang->menu->scrum->doc = 'Doc|doc|index|';
+3 -2
View File
@@ -739,7 +739,8 @@ $lang->pager->pageOfTotal = "Page <strong>{page}</strong> sur <strong>{totalPag
$lang->colorPicker = new stdclass();
$lang->colorPicker->errorTip = "Ce n'est pas une valeur de couleur valide";
$lang->proVersion = "<a href='https://www.zentao.pm/book/zentaopromanual/free-open-source-project-management-software-zentaopro-127.html' target='_blank' id='proLink' class='text-important'>ZenTao Pro <i class='text-danger icon-pro-version'></i></a> &nbsp; ";
$lang->proVersion = "<a href='https://www.zentao.pm/book/zentaopromanual/free-open-source-project-management-software-zentaopro-127.html' target='_blank' id='proLink' class='btn btn-link'><span class='label'>Upgrade</span></a>";
$lang->globalLogo = "<img src='{$this->config->webRoot}theme/default/images/main/zentao.png'/>";
$lang->downNotify = "Télécharger la notification sur le bureau";
$lang->downloadClient = "Télécharger ZenTao Desktop";
$lang->clientHelp = "Aide Client";
@@ -875,7 +876,7 @@ $lang->icons['score'] = 'tint';
/* Scrum menu. */
$lang->menu = new stdclass();
$lang->menu->scrum = new stdclass();
$lang->menu->scrum->program = 'Index|program|index|';
$lang->menu->scrum->program = 'Index|program|index|project={PROJECT}';
$lang->menu->scrum->project = "$lang->executionCommon|project|index|locate=no";
$lang->menu->scrum->projectstory = array('link' => 'Story|projectstory|requirement', 'alias' => 'requirement,story,track');
$lang->menu->scrum->doc = 'Doc|doc|index|';
+9
View File
@@ -1,4 +1,13 @@
<?php
$lang->mainNav->menuOrder[5] = 'my';
$lang->mainNav->menuOrder[10] = 'program';
$lang->mainNav->menuOrder[15] = 'product';
$lang->mainNav->menuOrder[20] = 'project';
$lang->mainNav->menuOrder[25] = 'repo';
$lang->mainNav->menuOrder[30] = 'doc';
$lang->mainNav->menuOrder[60] = 'system';
$lang->mainNav->menuOrder[70] = 'admin';
/* Sort of main menu. */
$lang->waterfall->menuOrder[5] = 'programindex';
$lang->waterfall->menuOrder[10] = 'programplan';
+3 -2
View File
@@ -739,7 +739,8 @@ $lang->pager->pageOfTotal = "Page <strong>{page}</strong> of <strong>{totalPage
$lang->colorPicker = new stdclass();
$lang->colorPicker->errorTip = 'Not a valid color value';
$lang->proVersion = "<a href='https://www.zentao.pm/book/zentaopromanual/free-open-source-project-management-software-zentaopro-127.html' target='_blank' id='proLink' class='text-important'>ZenTao Pro <i class='text-danger icon-pro-version'></i></a> &nbsp; ";
$lang->proVersion = "<a href='https://www.zentao.pm/book/zentaopromanual/free-open-source-project-management-software-zentaopro-127.html' target='_blank' id='proLink' class='btn btn-link'><span class='label'>Upgrade</span></a>";
$lang->globalLogo = "<img src='{$this->config->webRoot}theme/default/images/main/zentao.png'/>";
$lang->downNotify = "Download Desktop Notification";
$lang->downloadClient = "Download ZenTao Desktop";
$lang->clientHelp = "Client Help";
@@ -875,7 +876,7 @@ $lang->icons['score'] = 'tint';
/* Scrum menu. */
$lang->menu = new stdclass();
$lang->menu->scrum = new stdclass();
$lang->menu->scrum->program = 'Index|program|index|';
$lang->menu->scrum->program = 'Index|program|index|project={PROJECT}';
$lang->menu->scrum->project = "$lang->executionCommon|project|index|locate=no";
$lang->menu->scrum->projectstory = array('link' => 'Story|projectstory|requirement', 'alias' => 'requirement,story,track');
$lang->menu->scrum->doc = 'Doc|doc|index|';
+4 -3
View File
@@ -139,7 +139,7 @@ $lang->mainNav->system = '<i class="icon icon-group"></i> 组织|subject|browse
$lang->mainNav->admin = '<i class="icon icon-cog-outline"></i> 后台|admin|index|';
$lang->reporting = new stdclass();
$lang->dividerMenu = ',admin,project,doc,';
$lang->dividerMenu = ',project,doc,';
/* Program set menu. */
$lang->program = new stdclass();
@@ -740,7 +740,8 @@ $lang->pager->pageOfTotal = '第 <strong>{page}</strong>/<strong>{totalPage}</s
$lang->colorPicker = new stdclass();
$lang->colorPicker->errorTip = '不是有效的颜色值';
$lang->proVersion = "<a href='https://api.zentao.net/goto.php?item=proversion&from=footer' target='_blank' id='proLink' class='text-important'>专业版 <i class='text-danger icon-pro-version'></i></a> &nbsp; ";
$lang->proVersion = "<a href='https://api.zentao.net/goto.php?item=proversion&from=footer' target='_blank' id='proLink' class='btn btn-link'><span class='label'>升级</span></a>";
$lang->globalLogo = "<img src='{$this->config->webRoot}theme/default/images/main/zentao.png'/>";
$lang->downNotify = "下载桌面提醒";
$lang->downloadClient = "下载客户端";
$lang->clientHelp = "客户端使用说明";
@@ -876,7 +877,7 @@ $lang->icons['score'] = 'tint';
/* Scrum menu. */
$lang->menu = new stdclass();
$lang->menu->scrum = new stdclass();
$lang->menu->scrum->program = '仪表盘|program|index|';
$lang->menu->scrum->program = '仪表盘|program|index|project={PROJECT}';
$lang->menu->scrum->project = "$lang->executionCommon|project|index|locate=no";
$lang->menu->scrum->projectstory = array('link' => '需求|projectstory|requirement', 'alias' => 'requirement,story,track');
$lang->menu->scrum->doc = '文档|doc|index|';
+22 -6
View File
@@ -281,8 +281,9 @@ class commonModel extends model
echo "<ul class='dropdown-menu pull-right'>";
if(!$isGuest)
{
$noRole = (!empty($app->user->role) && isset($lang->user->roleList[$app->user->role])) ? '' : ' no-role';
echo '<li class="user-profile-item">';
echo "<a href='" . helper::createLink('my', 'profile', '', '', true) . "' class='" . (!empty($app->user->role) && isset($lang->user->roleList[$app->user->role]) ? '' : ' no-role') . "'>";
echo "<a href='" . helper::createLink('my', 'profile', '', '', true) . "' class='iframe $noRole'" . '>';
echo "<div class='avatar avatar bg-secondary avatar-circle'>" . strtoupper($app->user->account[0]) . "</div>\n";
echo '<div class="user-profile-name">' . (empty($app->user->realname) ? $app->user->account : $app->user->realname) . '</div>';
if(isset($lang->user->roleList[$app->user->role])) echo '<div class="user-profile-role">' . $lang->user->roleList[$app->user->role] . '</div>';
@@ -561,10 +562,14 @@ class commonModel extends model
{
global $lang;
$menuOrder = $lang->mainNav->menuOrder;
ksort($menuOrder);
$items = array();
$lastNavItem = end($lang->mainNav);
foreach($lang->mainNav as $group => $nav)
$lastItem = end($menuOrder);
foreach($menuOrder as $key => $group)
{
$nav = $lang->mainNav->$group;
list($title, $currentModule, $currentMethod, $vars) = explode('|', $nav);
if(!common::hasPriv($currentModule, $currentMethod)) continue;
@@ -580,7 +585,7 @@ class commonModel extends model
$items[] = $item;
if(($lastNavItem != $nav) && strpos($lang->dividerMenu, ",{$group},") !== false)
if(($lastItem != $key) && strpos($lang->dividerMenu, ",{$group},") !== false)
{
$items[] = 'divider';
}
@@ -795,7 +800,7 @@ class commonModel extends model
/* Set main menu by group. */
$group = isset($lang->navGroup->$moduleName) ? $lang->navGroup->$moduleName : '';
if($moduleName == 'admin') return;
if($group == 'repo') return;
if($group == 'repo' || $group == 'ops' || $group == 'feedback') return;
if($group == 'my') self::getMyModuleMenu($moduleName, $methodName);
if($group == 'project') self::getProgramModuleMenu($moduleName);
if($moduleName == 'product' and ($methodName == 'setting' or $methodName == 'addwhitelist'))
@@ -976,7 +981,8 @@ class commonModel extends model
public static function printClientLink()
{
global $lang;
echo html::a(helper::createLink('misc', 'downloadClient', '', '', true), $lang->downloadClient, '', "title='$lang->downloadClient' class='text-primary iframe' data-width='600'") . html::a($lang->clientHelpLink, "<i class='icon-lightbulb text-success'></i>", '', "title='$lang->clientHelp' target='_blank'") . ' &nbsp; ';
echo html::a(helper::createLink('misc', 'downloadClient', '', '', true), $lang->downloadClient, '', "title='$lang->downloadClient' class='btn btn-link iframe' data-width='600'");
echo html::a($lang->clientHelpLink, "<i class='icon-lightbulb text-success'></i>", '', "title='$lang->clientHelp' class='btn btn-link' target='_blank'");
}
/**
@@ -2332,6 +2338,16 @@ EOD;
$lang->menu = $lang->repo->menu;
$lang->menuOrder = $lang->repo->menuOrder;
}
if($group == 'ops')
{
$lang->menu = $lang->ops->menu;
$lang->menuOrder = $lang->ops->menuOrder;
}
if($group == 'feedback')
{
$lang->menu = $lang->feedback->menu;
$lang->menuOrder = $lang->feedback->menuOrder;
}
if($group == 'project')
{
$lang->menu = self::getProgramMainMenu($moduleName);
+1 -1
View File
@@ -1129,7 +1129,7 @@ class docModel extends model
$projectID = $this->session->PRJ;
$executionStatus = strpos($this->config->doc->custom->showLibs, 'unclosed') !== false ? 'undone' : 'all';
if($type == 'product') $objectList = $this->loadModel('product')->getProductPairsByProject($projectID, 'all');
if($type == 'project') $objectList = $this->loadModel('project')->getExecutionsByProject($projectID, 'all', 0, true);
if($type == 'project') $objectList = $this->loadModel('project')->getExecutionsByProject($projectID, $executionStatus, 0, true);
if(empty($objectList)) return $libs;
$docLibs = $this->dao->select('*')->from(TABLE_DOCLIB)
+25
View File
@@ -1,8 +1,10 @@
#pages {position: fixed; left: 96px; bottom: 0; right: 0; top: 0;}
[lang="en"] #pages {left: 134px}
.page-tab {position: absolute; left: 0; bottom: 0; right: 0; top: 0; background-color: #efefef;}
.menu-hide #pages {left: 0}
#pagesBar {position: fixed; left: 96px; bottom: 0; right: 0; height: 40px; z-index: 1012; background: #fff; border-top: 1px solid #eff1f7;}
[lang="en"] #pagesBar {left: 134px}
#bars {position: absolute; left: 0; top: 0; bottom: 0; padding: 0 5px}
#bars > li {padding: 8px 5px;}
#bars > li > a {height: 24px; color: #fff; background: #cccfd4; padding: 2px 8px; line-height: 20px; border-radius: 2px;}
@@ -11,3 +13,26 @@
#bars > li.active:after {content: ' '; display: block; position: absolute; background: #a0cafa; height: 3px; left: 5px; right: 5px; bottom: 0; border-radius: 2px;}
.menu-hide #pagesBar {left: 40px}
#userNav{float: none; margin: 0;}
#userNav>li{text-align: center}
#userNav>li>a{padding: 6px 6px;color: #fff; opacity: .9;margin-left: 0px}
#userNav>li>a:hover{background: #0c64eb;}
#userNav>li>.dropdown-menu{left: 100%; top: -290px; width: 140px;text-align: left; background: #3c495c;}
#userNav>li>.dropdown-menu a{color: #fff}
#userNav>li>.dropdown-menu .dropdown-menu{left: 100%; text-align: left; background: #3c495c}
#userNav>li .lang .dropdown-menu, #userNav>li .theme .dropdown-menu{top: -60px}
#userNav .dropdown-menu>li>a>.icon { position: initial; display: inline;}
#userNav li.open>a{background:#0c64eb}
#poweredBy{width: 55%; position: absolute; top: 4px; right: 0; padding: 0px 40px 0px 0px;}
#globalSearchDiv{width:50%; float: right;}
#globalSearchDiv .input-group{width: 70%; float: right; margin-top: 2px;}
#globalSearchInput {height: 28px; padding-left: 10px;}
#globalSearchButton {height: 28px;}
#globalBarLogo {width: 100%; float: right;}
#globalBarLogo a {float: right; margin: 0px 5px;}
#globalBarLogo img{width: 74px; float: left; margin-top: 2px;}
#globalMessages .icon{font-size: 24px; color: #16a8f8;}
+5 -13
View File
@@ -25,7 +25,7 @@
.append($link)
.appendTo($menuMainNav);
item.icon = $link.find('.icon').attr('class').replace('icon ', '');
item.icon = ($link.find('.icon').attr('class') || '').replace('icon ', '');
item.text = $link.text().trim();
groupsMap[item.group] = item;
@@ -139,7 +139,7 @@
for(var group in openedTabs)
{
var tab = openedTabs[group];
if((!onlyShowed || tab.show) && lastShowIndex < tab.zIndex)
if((!onlyShowed || tab.show) && lastShowIndex < tab.zIndex && !tab.closed)
{
lastShowIndex = tab.zIndex;
lastTab = tab;
@@ -198,6 +198,7 @@
var tab = openedTabs[group];
if(!tab) return;
tab.closed = true;
hideTab(group);
tab.$page.remove();
tab.$bar.remove();
@@ -298,19 +299,10 @@
/* Redirect or open default tab after document load */
var defaultOpenUrl = window.defaultOpen;
if(!defaultOpenUrl)
if(!defaultOpenUrl && location.hash.indexOf('#open=') === 0)
{
if(location.hash.indexOf('#open=') === 0)
{
defaultOpenUrl = decodeURIComponent(location.hash.substr(6));
}
if(!defaultOpenUrl)
{
defaultOpenUrl = $.cookie('open-in-tab');
if(defaultOpenUrl) $.cookie('open-in-tab', null);
}
defaultOpenUrl = decodeURIComponent(location.hash.substr(6));
}
if(defaultOpenUrl) openTab(defaultOpenUrl);
else openTab(defaultTabGroup);
});
+6
View File
@@ -1,3 +1,9 @@
<?php
$lang->index->common = 'Home';
$lang->index->index = 'Home';
$lang->index->search = 'Please input';
$lang->index->tab = new stdClass();
$lang->index->tab->open = 'Open';
$lang->index->tab->reload = 'Reload';
$lang->index->tab->close = 'Close';
+3 -3
View File
@@ -3,6 +3,6 @@ $lang->index->common = 'Home';
$lang->index->index = 'Home';
$lang->index->tab = new stdClass();
$lang->index->tab->open = 'Open';
$lang->index->tab->reload = 'Reload';
$lang->index->tab->close = 'Close';
$lang->index->tab->open = 'Open';
$lang->index->tab->reload = 'Reload';
$lang->index->tab->close = 'Close';
+6
View File
@@ -1,3 +1,9 @@
<?php
$lang->index->common = 'Accueil';
$lang->index->index = 'Accueil';
$lang->index->search = 'Please input';
$lang->index->tab = new stdClass();
$lang->index->tab->open = 'Open';
$lang->index->tab->reload = 'Reload';
$lang->index->tab->close = 'Close';
+6
View File
@@ -1,3 +1,9 @@
<?php
$lang->index->common = 'Trang chủ';
$lang->index->index = 'Trang chủ';
$lang->index->search = 'Please input';
$lang->index->tab = new stdClass();
$lang->index->tab->open = 'Open';
$lang->index->tab->reload = 'Reload';
$lang->index->tab->close = 'Close';
+4 -3
View File
@@ -1,8 +1,9 @@
<?php
$lang->index->common = '首页';
$lang->index->index = '首页';
$lang->index->search = '请输入';
$lang->index->tab = new stdClass();
$lang->index->tab->open = '打开';
$lang->index->tab->reload = '刷新';
$lang->index->tab->close = '关闭';
$lang->index->tab->open = '打开';
$lang->index->tab->reload = '刷新';
$lang->index->tab->close = '关闭';
+6
View File
@@ -1,3 +1,9 @@
<?php
$lang->index->common = '首頁';
$lang->index->index = '首頁';
$lang->index->search = '請輸入';
$lang->index->tab = new stdClass();
$lang->index->tab->open = '打開';
$lang->index->tab->reload = '刷新';
$lang->index->tab->close = '關閉';
+17 -5
View File
@@ -44,12 +44,24 @@ js::set('defaultOpen', $open);
<div id='pages'>
</div>
<div id='pagesBar'>
<ul id='bars' class='nav nav-default'></ul>
<div id='poweredBy'>
<a href='<?php echo $lang->website;?>' target='_blank'><i class='icon-zentao'></i> <?php echo $lang->zentaoPMS . $config->version;?></a> &nbsp;
<?php echo $lang->proVersion;?>
<ul id='bars' class='nav nav-default'></ul>
<div id='poweredBy'>
<div id="globalBarLogo">
<?php if(isset($config->xxserver->installed) and $config->xuanxuan->turnon) commonModel::printClientLink();?>
<?php echo $lang->proVersion;?>
<a href='<?php echo $lang->website;?>' target='_blank' title='<?php echo $config->version;?>'><?php echo $lang->globalLogo;?></a>
<a id ="globalMessages" class="btn btn-sm btn-link" type="button"><i class="icon icon-message"></i></a>
<div id="globalSearchDiv">
<div class="input-group">
<div class="input-control search-box search-box-circle has-icon-left has-icon-right search-example" id="searchboxExample">
<input id="globalSearchInput" type="search" class="form-control search-input" placeholder="<?php echo $lang->index->search;?>">
</div>
<span class="input-group-btn">
<button id="globalSearchButton" class="btn btn-secondary" type="button"><i class="icon icon-search"></i></button>
</span>
</div>
</div>
</div>
</div>
</div>
<?php include '../../common/view/footer.lite.html.php';?>
+1 -1
View File
@@ -363,7 +363,7 @@ class issue extends control
{
$this->loadModel('task');
$this->loadModel('tree');
$this->loadModel('project')->getLimitedExecution();
$this->loadModel('project');
$projects = $this->project->getExecutionsByProject($this->session->PRJ, 'all', 0, true);
$projectID = $this->session->project;
-1
View File
@@ -22,7 +22,6 @@ class my extends control
parent::__construct($module, $method);
$this->loadModel('user');
$this->loadModel('dept');
$this->my->setMenu();
}
/**
+1
View File
@@ -29,6 +29,7 @@ $lang->my->scoreRule = 'Wertungs regeln';
$lang->my->setStoryConcept = 'Set Story Concept';
$lang->my->storyConcept = 'Story Concept';
$lang->my->noTodo = 'Keine toDos. ';
$lang->my->noData = 'No %s yet. ';
$lang->my->myExecutions = 'My Stage/Sprint/Iteration';
$lang->my->name = 'Name';
+1
View File
@@ -29,6 +29,7 @@ $lang->my->scoreRule = 'Point Rules';
$lang->my->setStoryConcept = 'Set Story Concept';
$lang->my->storyConcept = 'Story Concept';
$lang->my->noTodo = 'No todos yet. ';
$lang->my->noData = 'No %s yet. ';
$lang->my->myExecutions = "My Stage/Sprint/Iteration";
$lang->my->name = 'Name';
+1
View File
@@ -29,6 +29,7 @@ $lang->my->scoreRule = 'Règles Point';
$lang->my->setStoryConcept = 'Set Story Concept';
$lang->my->storyConcept = 'Story Concept';
$lang->my->noTodo = "Je n'ai rien à faire pour l'instant.";
$lang->my->noData = 'No %s yet. ';
$lang->my->myExecutions = 'My Stage/Sprint/Iteration';
$lang->my->name = 'Name';
+1
View File
@@ -29,6 +29,7 @@ $lang->my->scoreRule = 'Quy định điểm';
$lang->my->setStoryConcept = 'Set Story Concept';
$lang->my->storyConcept = 'Story Concept';
$lang->my->noTodo = 'Chưa có việc nào.';
$lang->my->noData = 'No %s yet. ';
$lang->my->myExecutions = "My Stage/Sprint/Iteration";
$lang->my->name = 'Name';
+1
View File
@@ -31,6 +31,7 @@ $lang->my->limited = '受限操作(只能编辑与自己相关的内容)
$lang->my->score = '我的积分';
$lang->my->scoreRule = '积分规则';
$lang->my->noTodo = '暂时没有待办。';
$lang->my->noData = "暂时没有%s。";
$lang->my->myExecutions = "我参与的阶段/冲刺/迭代";
$lang->my->name = '名称';
+1 -1
View File
@@ -39,7 +39,7 @@
<div id="mainContent">
<?php if(!$stories):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $mode == 'story' ? $lang->story->noStory : $lang->story->noRequirement;?></span></p>
<p><span class="text-muted"><?php echo $mode == 'story' ? sprintf($lang->my->noData, $SRCommon) : sprintf($lang->my->noData, $URCommon);?></span></p>
</div>
<?php else:?>
<form id='myStoryForm' class="main-table table-story" data-ride="table" method="post">
+5 -5
View File
@@ -50,8 +50,8 @@
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
</th>
<th class='c-pri w-40px'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
<th class='c-project w-120px'> <?php common::printOrderLink('program', $orderBy, $vars, $lang->task->program);?></th>
<th class='c-project w-120px'> <?php common::printOrderLink('project', $orderBy, $vars, $lang->task->project);?></th>
<th class='c-project w-120px'> <?php common::printOrderLink('PRJ', $orderBy, $vars, $lang->task->project);?></th>
<th class='c-project w-120px'> <?php common::printOrderLink('project', $orderBy, $vars, $lang->task->execution);?></th>
<th class='c-name'> <?php common::printOrderLink('name', $orderBy, $vars, $lang->task->name);?></th>
<?php if($type != 'openedBy'): ?>
<th class='c-user w-90px'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
@@ -99,9 +99,9 @@
<?php if($type != 'finishedBy'): ?>
<td class='c-user'><?php echo zget($users, $task->finishedBy);?></td>
<?php endif;?>
<td class='c-hours'><?php echo $task->estimate;?></td>
<td class='c-hours'><?php echo $task->consumed;?></td>
<td class='c-hours'><?php echo $task->left;?></td>
<td class='c-hours'><?php echo round($task->estimate, 1);?></td>
<td class='c-hours'><?php echo round($task->consumed, 1);?></td>
<td class='c-hours'><?php echo round($task->left, 1);?></td>
<td class='c-status'>
<?php $storyChanged = (!empty($task->storyStatus) and $task->storyStatus == 'active' and $task->latestStoryVersion > $task->storyVersion and !in_array($task->status, array('cancel', 'closed')));?>
<?php !empty($storyChanged) ? print("<span class='status-story status-changed'>{$this->lang->story->changed}</span>") : print("<span class='status-task status-{$task->status}'> " . $this->processStatus('task', $task) . "</span>");?>
+1 -1
View File
@@ -89,7 +89,7 @@ class personnel extends control
* Get white list personnel.
*
* @param int $objectID
* @param string $module personnel|program
* @param string $module personnel|program|project|product
* @param string $objectType program|project|product|sprint
* @param string $orderby
* @param int $recTotal
+3 -1
View File
@@ -338,6 +338,7 @@ class productModel extends model
->leftJoin(TABLE_PRODUCT)->alias('t2')
->on('t1.product = t2.id')
->where('t2.deleted')->eq(0)
->andWhere('t2.id')->in($this->app->user->view->products)
->beginIF($projectID)->andWhere('t1.project')->eq($projectID)->fi()
->beginIF(strpos($status, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi()
->orderBy('t2.order desc')
@@ -355,7 +356,8 @@ class productModel extends model
public function getProductIDByProject($projectID, $isFirst = true)
{
$products = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)
->beginIF($projectID)->where('project')->eq($projectID)->fi()
->where('product')->in($this->app->user->view->products)
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
->fetchPairs();
if($isFirst === false) return $products;
+17 -9
View File
@@ -538,19 +538,29 @@ class program extends control
* Batch unlink program stakeholders.
*
* @param int $programID
* @param string $stakeholderIDList
* @param string $confirm
* @access public
* @return void
*/
public function batchUnlinkStakeholders($programID = 0)
public function batchUnlinkStakeholders($programID = 0, $stakeholderIDList = '', $confirm = 'no')
{
$stakeholderIDList = $this->post->stakeholderIDList;
$account = $this->dao->select('user')->from(TABLE_STAKEHOLDER)->where('id')->in($stakeholderIDList)->fetchPairs('user');
$this->dao->delete()->from(TABLE_STAKEHOLDER)->where('id')->in($stakeholderIDList)->exec();
$stakeholderIDList = $stakeholderIDList ? $stakeholderIDList : implode(',', $this->post->stakeholderIDList);
$this->loadModel('user')->updateUserView($programID, 'program', $account);
$this->updateChildUserView($programID, $account);
if($confirm == 'no')
{
die(js::confirm($this->lang->program->confirmBatchUnlink, $this->inlink('batchUnlinkStakeholders', "programID=$programID&stakeholderIDList=$stakeholderIDList&confirm=yes")));
}
else
{
$account = $this->dao->select('user')->from(TABLE_STAKEHOLDER)->where('id')->in($stakeholderIDList)->fetchPairs('user');
$this->dao->delete()->from(TABLE_STAKEHOLDER)->where('id')->in($stakeholderIDList)->exec();
die(js::reload('parent'));
$this->loadModel('user')->updateUserView($programID, 'program', $account);
$this->updateChildUserView($programID, $account);
die(js::reload('parent'));
}
}
/**
@@ -674,8 +684,6 @@ class program extends control
/**
* Ajax get projects.
*
* @param string $name
* @param int $copyProjectID
* @access public
* @return void
*/
+22 -1
View File
@@ -1,5 +1,15 @@
$(function(){$('#parent').change();})
$(function()
{
setAclList($("#parent").val());
});
/**
* Set acl list.
*
* @param programID $programID
* @access public
* @return void
*/
function setAclList(programID)
{
if(programID != 0)
@@ -11,3 +21,14 @@ function setAclList(programID)
$('.aclBox').html($('#PGMAcl').html());
}
}
/**
* Set parent program.
*
* @access public
* @return void
*/
function setParentProgram(programID)
{
location.href = createLink('program', 'PGMCreate', 'programID=' + programID);
}
+1
View File
@@ -196,6 +196,7 @@ $lang->program->PGMStakeholder = 'Stakeholder';
$lang->program->createStakeholder = 'Create Stakeholder';
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->unlink = 'Unlink';
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
+1
View File
@@ -196,6 +196,7 @@ $lang->program->PGMStakeholder = 'Stakeholder';
$lang->program->createStakeholder = 'Create Stakeholder';
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->unlink = 'Unlink';
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
+1
View File
@@ -196,6 +196,7 @@ $lang->program->PGMStakeholder = 'Stakeholder';
$lang->program->createStakeholder = 'Create Stakeholder';
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->unlink = 'Unlink';
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
+1
View File
@@ -196,6 +196,7 @@ $lang->program->PGMStakeholder = 'Stakeholder';
$lang->program->createStakeholder = 'Create Stakeholder';
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->unlink = 'Unlink';
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
+1
View File
@@ -196,6 +196,7 @@ $lang->program->PGMStakeholder = '干系人列表';
$lang->program->createStakeholder = '添加干系人';
$lang->program->unlinkStakeholder = '移除干系人';
$lang->program->unlink = '移除';
$lang->program->confirmBatchUnlink = "您确定要批量移除这些干系人吗?";
$lang->program->stakeholderType = '干系人类型';
$lang->program->isStakeholderKey = '关键干系人';
$lang->program->importStakeholder = '从父项目集导入';
+1
View File
@@ -196,6 +196,7 @@ $lang->program->PGMStakeholder = '干係人列表';
$lang->program->createStakeholder = '添加干係人';
$lang->program->unlinkStakeholder = '移除干係人';
$lang->program->unlink = '移除';
$lang->program->confirmBatchUnlink = "您確定要批量移除這些干係人嗎?";
$lang->program->stakeholderType = '干係人類型';
$lang->program->isStakeholderKey = '關鍵干係人';
$lang->program->importStakeholder = '從父項目集導入';
+33 -32
View File
@@ -20,7 +20,7 @@ class programModel extends model
* Get the product associated with the program.
*
* @param int $programID
* @param int $mode all|assign
* @param string $mode all|assign
* @param string $status all|noclosed
* @access public
* @return array
@@ -61,10 +61,9 @@ class programModel extends model
/**
* Get program list.
*
* @param varchar $status
* @param varchar $orderBy
* @param object $pager
* @param bool $includeCat
* @param string $status
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
@@ -111,7 +110,7 @@ class programModel extends model
* Create a program.
*
* @access private
* @return void
* @return int|bool
*/
public function PGMCreate()
{
@@ -219,7 +218,7 @@ class programModel extends model
*
* @param int $programID
* @access public
* @return array
* @return array|bool
*/
public function PGMUpdate($programID)
{
@@ -314,7 +313,7 @@ class programModel extends model
* @param int $programID
* @param bool $active
* @access private
* @return void
* @return string
*/
public function getPGMCommonAction($programID = 0, $active = false)
{
@@ -336,7 +335,7 @@ class programModel extends model
* @param int $programID
* @param bool $active
* @access private
* @return void
* @return string
*/
public function getPGMSwitcher($programID = 0, $active = false)
{
@@ -368,7 +367,7 @@ class programModel extends model
* Get the tree menu of program.
*
* @param int $programID
* @param int $from
* @param string $from
* @param string $vars
* @access public
* @return string
@@ -426,8 +425,9 @@ class programModel extends model
/**
* Get top program pairs.
*
* @param string $model
* @access public
* @return void
* @return array
*/
public function getTopPGMPairs($model = '')
{
@@ -474,10 +474,11 @@ class programModel extends model
/**
* Get stakeholders by program id.
*
* @param string $orderBy
* @param int $programID
* @param string $orderBy
* @param object $paper
* @access public
* @return void
* @return array
*/
public function getStakeholders($programID = 0, $orderBy, $pager = null)
{
@@ -494,9 +495,8 @@ class programModel extends model
* Get stakeholders by program id list.
*
* @param string $programIdList
* @param string $orderBy
* @access public
* @return void
* @return array
*/
public function getStakeholdersByPGMList($programIdList = 0)
{
@@ -747,7 +747,7 @@ class programModel extends model
*
* @param bool $active
* @access public
* @return void
* @return string
*/
public function printPRJCommonAction($active = false)
{
@@ -768,7 +768,7 @@ class programModel extends model
* @param string $currentModule
* @param string $currentMethod
* @access public
* @return void
* @return string
*/
public function getPRJSwitcher($projectID, $currentModule, $currentMethod)
{
@@ -874,7 +874,7 @@ class programModel extends model
* @param string $orderBy
* @param int $pager
* @access public
* @return void
* @return array
*/
public function getPRJInfo($status = 'undone', $itemCounts = 30, $orderBy = 'order_desc', $pager = null)
{
@@ -912,8 +912,9 @@ class programModel extends model
/**
* Gets the top-level project name.
*
* @param int $parentID
* @access private
* @return void
* @return string
*/
public function getPRJParentName($parentID = 0)
{
@@ -929,12 +930,12 @@ class programModel extends model
/**
* Get project overview for block.
*
* @param varchar $queryType byId|byStatus
* @param varchar|int $param
* @param varchar $orderBy
* @param int $limit
* @param string $queryType byId|byStatus
* @param string|int $param
* @param string $orderBy
* @param int $limit
* @access public
* @return void
* @return array
*/
public function getPRJOverview($queryType = 'byStatus', $param = 'all', $orderBy = 'id_desc', $limit = 15)
{
@@ -1005,13 +1006,13 @@ class programModel extends model
*
* @param int $programID
* @param string $browseType
* @param string $queryID
* @param int $queryID
* @param string $orderBy
* @param object $pager
* @param int $programTitle
* @param string $programTitle
* @param int $PRJMine
* @access public
* @return void
* @return array
*/
public function getPRJStats($programID = 0, $browseType = 'undone', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $PRJMine = 0)
{
@@ -1055,7 +1056,7 @@ class programModel extends model
$hour->totalConsumed = round($hour->totalConsumed, 1);
$hour->totalLeft = round($hour->totalLeft, 1);
$hour->totalReal = $hour->totalConsumed + $hour->totalLeft;
$hour->progress = $hour->totalReal ? round($hour->totalConsumed / $hour->totalReal, 3) * 100 : 0;
$hour->progress = $hour->totalReal ? round($hour->totalConsumed / $hour->totalReal, 2) * 100 : 0;
}
/* Get the number of project teams. */
@@ -1194,10 +1195,10 @@ class programModel extends model
/**
* Get project pairs by model and program.
*
* @param string $model scrum|waterfall
* @param string $model all|scrum|waterfall
* @param int $programID
* @access public
* @return void
* @return array
*/
public function getPRJPairsByModel($model = 'all', $programID = 0)
{
@@ -1259,7 +1260,7 @@ class programModel extends model
/**
* Create the manage link.
*
* @param int $project
* @param object $project
* @access public
* @return string
*/
@@ -1676,7 +1677,7 @@ class programModel extends model
echo "<ul class='dropdown-menu pull-right text-center' role='menu'>";
common::printIcon('program', 'PRJManageProducts', "projectID=$project->id", $project, 'list', 'icon icon-menu-project', '', 'btn-action');
common::printIcon('program', 'PRJWhitelist', "projectID=$project->id", $project, 'list', 'group', '', 'btn-action');
if(common::hasPriv('program','PRJDelete')) echo html::a(inLink("prjdelete", "projectID=$project->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn btn-action' title='{$this->lang->program->PRJDelete}'");
if(common::hasPriv('program','PRJDelete')) echo html::a(inLink("PRJDelete", "projectID=$project->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn btn-action' title='{$this->lang->program->PRJDelete}'");
echo "</ul>";
echo "</div>";
break;
+1 -1
View File
@@ -45,7 +45,7 @@
<table class='table table-form'>
<tr>
<th><?php echo $lang->program->PGMParent;?></th>
<td><?php echo html::select('parent', $parents, isset($parentProgram->id) ? $parentProgram->id : 0, "class='form-control chosen' onchange=setAclList(this.value)");?>
<td><?php echo html::select('parent', $parents, isset($parentProgram->id) ? $parentProgram->id : 0, "class='form-control chosen' onchange=setParentProgram(this.value)");?>
<td></td>
</tr>
<tr>
+1 -1
View File
@@ -25,7 +25,7 @@
<table class='table table-form'>
<tr>
<th class='w-120px'><?php echo $lang->program->PGMParent;?></th>
<td class="col-main"><?php echo html::select('parent', $parents, $program->parent, "class='form-control chosen' onchange=setAclList(this.value)");?></td>
<td class="col-main"><?php echo html::select('parent', $parents, $program->parent, "class='form-control chosen' onchange=setAclList(this.value)");?></td>
<td></td><td></td>
</tr>
<tr>
+1 -1
View File
@@ -44,7 +44,7 @@ $config->project->search['fields']['desc'] = $lang->task->desc;
$config->project->search['fields']['assignedTo'] = $lang->task->assignedTo;
$config->project->search['fields']['pri'] = $lang->task->pri;
$config->project->search['fields']['project'] = $lang->task->project;
$config->project->search['fields']['project'] = $lang->task->execution;
$config->project->search['fields']['module'] = $lang->task->module;
$config->project->search['fields']['estimate'] = $lang->task->estimate;
$config->project->search['fields']['left'] = $lang->task->left;
-4
View File
@@ -117,8 +117,6 @@ class project extends control
if(common::hasPriv('project', 'create')) $this->lang->TRActions = html::a($this->createLink('project', 'create', ''), "<i class='icon icon-sm icon-plus'></i> " . $this->lang->project->create, '', "class='btn btn-primary'");
$this->project->getLimitedExecution();
/* Set browse type. */
$browseType = strtolower($status);
@@ -645,8 +643,6 @@ class project extends control
$this->loadModel('user');
$this->app->loadLang('testcase');
$this->project->getLimitedExecution();
$type = strtolower($type);
setcookie('storyPreProjectID', $projectID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
if($this->cookie->storyPreProjectID != $projectID)
+1
View File
@@ -76,6 +76,7 @@ $lang->project->relatedMember = 'Teammitglieder';
$lang->project->watermark = 'Exported by ZenTao';
$lang->project->burnXUnit = '(Date)';
$lang->project->burnYUnit = '(Hours)';
$lang->project->waitTasks = 'Waiting Tasks';
$lang->project->viewByUser = 'By User';
$lang->project->oneProduct = "Only one stage can be linked {$lang->productCommon}";
$lang->project->noLinkProduct = "Stage not linked {$lang->productCommon}";
+1
View File
@@ -76,6 +76,7 @@ $lang->project->relatedMember = 'Equipe';
$lang->project->watermark = 'Exporté par ZenTao';
$lang->project->burnXUnit = '(Date)';
$lang->project->burnYUnit = '(Hours)';
$lang->project->waitTasks = 'Waiting Tasks';
$lang->project->viewByUser = 'Par Utilisateur';
$lang->project->oneProduct = "Only one stage can be linked {$lang->productCommon}";
$lang->project->noLinkProduct = "Stage not linked {$lang->productCommon}";
+1
View File
@@ -76,6 +76,7 @@ $lang->project->relatedMember = 'Đội nhóm';
$lang->project->watermark = 'Đã xuất bởi ZenTao';
$lang->project->burnXUnit = '(Date)';
$lang->project->burnYUnit = '(Hours)';
$lang->project->waitTasks = 'Waiting Tasks';
$lang->project->viewByUser = 'Theo người dùng';
$lang->project->oneProduct = "Only one stage can be linked {$lang->productCommon}";
$lang->project->noLinkProduct = "Stage not linked {$lang->productCommon}";
+1
View File
@@ -75,6 +75,7 @@ $lang->project->relatedMember = '相關成員';
$lang->project->watermark = '由禪道導出';
$lang->project->burnXUnit = '(日期)';
$lang->project->burnYUnit = '(工時)';
$lang->project->waitTasks = '待處理';
$lang->project->viewByUser = '按用戶查看';
$lang->project->start = "開始";
+8 -2
View File
@@ -621,7 +621,7 @@ class projectModel extends model
*
* @param int $projectID
* @access public
* @return void
* @return array
*/
public function start($projectID)
{
@@ -1375,7 +1375,13 @@ class projectModel extends model
if($this->app->user->admin) return true;
/* Get all teams of all executions and group by executions, save it as static. */
$executions = $this->dao->select('root, limited')->from(TABLE_TEAM)->where('type')->eq('project')->andWhere('account')->eq($this->app->user->account)->andWhere('limited')->eq('yes')->orderBy('root asc')->fetchPairs('root', 'root');
$executions = $this->dao->select('root, limited')->from(TABLE_TEAM)
->where('type')->in('sprint,stage')
->andWhere('account')->eq($this->app->user->account)
->andWhere('limited')->eq('yes')
->orderBy('root asc')
->fetchPairs('root', 'root');
$_SESSION['limitedProjects'] = join(',', $executions);
}
+1
View File
@@ -35,6 +35,7 @@ $lang->release->basicInfo = 'Basis Info';
$lang->release->id = 'ID';
$lang->release->product = $lang->productCommon;
$lang->release->branch = 'Platform/Branch';
$lang->release->project = 'Project';
$lang->release->build = 'Build';
$lang->release->name = 'Name';
$lang->release->marker = 'Meilensteine';
+1
View File
@@ -35,6 +35,7 @@ $lang->release->basicInfo = 'Infos de Base';
$lang->release->id = 'ID';
$lang->release->product = $lang->productCommon;
$lang->release->branch = 'Plateforme/Branche';
$lang->release->project = 'Project';
$lang->release->build = 'Build';
$lang->release->name = 'Nom';
$lang->release->marker = 'Etape Importante';
+1
View File
@@ -35,6 +35,7 @@ $lang->release->basicInfo = 'Thông tin cơ bản';
$lang->release->id = 'ID';
$lang->release->product = $lang->productCommon;
$lang->release->branch = 'Platform/Branch';
$lang->release->project = 'Project';
$lang->release->build = 'Bản dựng';
$lang->release->name = 'Tên';
$lang->release->marker = 'Cột mốc';
+1
View File
@@ -35,6 +35,7 @@ $lang->release->basicInfo = '基本信息';
$lang->release->id = 'ID';
$lang->release->product = $lang->productCommon;
$lang->release->branch = '平台/分支';
$lang->release->project = '所屬項目';
$lang->release->build = '版本';
$lang->release->name = '發佈名稱';
$lang->release->marker = '里程碑';
+1 -1
View File
@@ -6,7 +6,7 @@ class stakeholderModel extends model
*
* @param int programID
* @access public
* @return void
* @return int|bool
*/
public function create($programID = 0)
{
+55 -55
View File
@@ -20,61 +20,61 @@ $lang->story->createStory = '添加' . $lang->story->story;
$lang->story->createRequirement = '添加' . $lang->story->requirement;
$lang->story->affectedStories = "影响的{$lang->story->story}";
$lang->story->batchCreate = "批量创建";
$lang->story->change = "变更";
$lang->story->changeAction = "变更{$lang->productSRCommon}";
$lang->story->changed = "{$lang->productSRCommon}变更";
$lang->story->assignTo = '指派';
$lang->story->assignAction = "指派{$lang->productSRCommon}";
$lang->story->review = '评审';
$lang->story->reviewAction = "评审{$lang->productSRCommon}";
$lang->story->needReview = '需要评审';
$lang->story->batchReview = '批量评审';
$lang->story->edit = "编辑";
$lang->story->batchEdit = "批量编辑";
$lang->story->subdivide = '细分';
$lang->story->link = '关联';
$lang->story->unlink = '移除';
$lang->story->track = '跟踪矩阵';
$lang->story->processStoryChange= '处理需求变更';
$lang->story->subdivideAction = "细分{$lang->productSRCommon}";
$lang->story->splitRequirent = '拆分';
$lang->story->close = '关闭';
$lang->story->closeAction = "关闭{$lang->productSRCommon}";
$lang->story->batchClose = '批量关闭';
$lang->story->activate = '激活';
$lang->story->activateAction = "激活{$lang->productSRCommon}";
$lang->story->delete = "删除";
$lang->story->deleteAction = "删除{$lang->productSRCommon}";
$lang->story->view = "{$lang->productSRCommon}详情";
$lang->story->setting = "设置";
$lang->story->tasks = "相关任务";
$lang->story->bugs = "相关Bug";
$lang->story->cases = "相关用例";
$lang->story->taskCount = '任务数';
$lang->story->bugCount = 'Bug数';
$lang->story->caseCount = '用例数';
$lang->story->taskCountAB = 'T';
$lang->story->bugCountAB = 'B';
$lang->story->caseCountAB = 'C';
$lang->story->linkStory = "关联{$lang->productSRCommon}";
$lang->story->unlinkStory = "移除相关{$lang->productSRCommon}";
$lang->story->export = "导出数据";
$lang->story->exportAction = "导出{$lang->productSRCommon}";
$lang->story->zeroCase = "零用例{$lang->productSRCommon}";
$lang->story->zeroTask = "只列零任务{$lang->productSRCommon}";
$lang->story->reportChart = "统计报表";
$lang->story->reportAction = "统计报表";
$lang->story->copyTitle = "同{$lang->productSRCommon}名称";
$lang->story->batchChangePlan = "批量修改计划";
$lang->story->batchChangeBranch = "批量修改分支";
$lang->story->batchChangeStage = "批量修改阶段";
$lang->story->batchAssignTo = "批量指派";
$lang->story->batchChangeModule = "批量修改模块";
$lang->story->viewAll = '查看全部';
$lang->story->toTask = '转任务';
$lang->story->batchToTask = '批量转任务';
$lang->story->convertRelations = '换算关系';
$lang->story->batchCreate = "批量创建";
$lang->story->change = "变更";
$lang->story->changeAction = "变更{$lang->productSRCommon}";
$lang->story->changed = "{$lang->productSRCommon}变更";
$lang->story->assignTo = '指派';
$lang->story->assignAction = "指派{$lang->productSRCommon}";
$lang->story->review = '评审';
$lang->story->reviewAction = "评审{$lang->productSRCommon}";
$lang->story->needReview = '需要评审';
$lang->story->batchReview = '批量评审';
$lang->story->edit = "编辑";
$lang->story->batchEdit = "批量编辑";
$lang->story->subdivide = '细分';
$lang->story->link = '关联';
$lang->story->unlink = '移除';
$lang->story->track = '跟踪矩阵';
$lang->story->processStoryChange = '处理需求变更';
$lang->story->subdivideAction = "细分{$lang->productSRCommon}";
$lang->story->splitRequirent = '拆分';
$lang->story->close = '关闭';
$lang->story->closeAction = "关闭{$lang->productSRCommon}";
$lang->story->batchClose = '批量关闭';
$lang->story->activate = '激活';
$lang->story->activateAction = "激活{$lang->productSRCommon}";
$lang->story->delete = "删除";
$lang->story->deleteAction = "删除{$lang->productSRCommon}";
$lang->story->view = "{$lang->productSRCommon}详情";
$lang->story->setting = "设置";
$lang->story->tasks = "相关任务";
$lang->story->bugs = "相关Bug";
$lang->story->cases = "相关用例";
$lang->story->taskCount = '任务数';
$lang->story->bugCount = 'Bug数';
$lang->story->caseCount = '用例数';
$lang->story->taskCountAB = 'T';
$lang->story->bugCountAB = 'B';
$lang->story->caseCountAB = 'C';
$lang->story->linkStory = "关联{$lang->productSRCommon}";
$lang->story->unlinkStory = "移除相关{$lang->productSRCommon}";
$lang->story->export = "导出数据";
$lang->story->exportAction = "导出{$lang->productSRCommon}";
$lang->story->zeroCase = "零用例{$lang->productSRCommon}";
$lang->story->zeroTask = "只列零任务{$lang->productSRCommon}";
$lang->story->reportChart = "统计报表";
$lang->story->reportAction = "统计报表";
$lang->story->copyTitle = "同{$lang->productSRCommon}名称";
$lang->story->batchChangePlan = "批量修改计划";
$lang->story->batchChangeBranch = "批量修改分支";
$lang->story->batchChangeStage = "批量修改阶段";
$lang->story->batchAssignTo = "批量指派";
$lang->story->batchChangeModule = "批量修改模块";
$lang->story->viewAll = '查看全部';
$lang->story->toTask = '转任务';
$lang->story->batchToTask = '批量转任务';
$lang->story->convertRelations = '换算关系';
$lang->story->skipStory = '需求:%s 为父需求,将不会被关闭。';
$lang->story->closedStory = '需求:%s 已关闭,将不会被关闭。';
+2 -2
View File
@@ -55,8 +55,8 @@ $lang->task->allModule = 'All Module';
$lang->task->common = 'Aufgabe';
$lang->task->id = 'ID';
$lang->task->program = 'Program';
$lang->task->project = $lang->executionCommon;
$lang->task->project = 'Project';
$lang->task->execution = $lang->executionCommon;
$lang->task->module = 'Modul';
$lang->task->moduleAB = 'Modul';
$lang->task->story = 'Story';
+2 -2
View File
@@ -55,8 +55,8 @@ $lang->task->allModule = 'All Module';
$lang->task->common = 'Task';
$lang->task->id = 'ID';
$lang->task->program = 'Program';
$lang->task->project = $lang->executionCommon;
$lang->task->project = 'Project';
$lang->task->execution = $lang->executionCommon;
$lang->task->module = 'Module';
$lang->task->moduleAB = 'Module';
$lang->task->story = 'Story';
+2 -2
View File
@@ -55,8 +55,8 @@ $lang->task->allModule = 'Tous Modules';
$lang->task->common = 'Tâche';
$lang->task->id = 'ID';
$lang->task->program = 'Program';
$lang->task->project = $lang->executionCommon;
$lang->task->project = 'Project';
$lang->task->execution = $lang->executionCommon;
$lang->task->module = 'Module';
$lang->task->moduleAB = 'Module';
$lang->task->story = 'Story';
+2 -2
View File
@@ -55,8 +55,8 @@ $lang->task->allModule = 'Tất cả Module';
$lang->task->common = 'Nhiệm vụ';
$lang->task->id = 'ID';
$lang->task->program = 'Program';
$lang->task->project = $lang->executionCommon;
$lang->task->project = 'project';
$lang->task->execution = $lang->executionCommon;
$lang->task->module = 'Module';
$lang->task->moduleAB = 'Module';
$lang->task->story = 'Câu chuyện';
+2 -2
View File
@@ -55,8 +55,8 @@ $lang->task->allModule = '所有模块';
$lang->task->common = '任务';
$lang->task->id = '编号';
$lang->task->program = '所属项目';
$lang->task->project = '所属' . $lang->executionCommon;
$lang->task->project = '所属项目';
$lang->task->execution = '所属' . $lang->executionCommon;
$lang->task->module = '所属模块';
$lang->task->moduleAB = '模块';
$lang->task->story = "相关{$lang->productSRCommon}";
+1 -1
View File
@@ -21,7 +21,7 @@ js::set('dittoNotice', $dittoNotice);
<h2>
<?php echo $lang->task->common . $lang->colon . $lang->task->batchEdit;?>
<?php if($projectName):?>
<small class='text-muted'><?php echo html::icon($lang->icons['project']) . ' ' . $lang->task->project . $lang->colon . ' ' . $projectName;?></small>
<small class='text-muted'><?php echo html::icon($lang->icons['project']) . ' ' . $lang->task->execution . $lang->colon . ' ' . $projectName;?></small>
<?php endif;?>
</h2>
<div class='pull-right btn-toolbar'>
+1 -1
View File
@@ -33,7 +33,7 @@
<form class='main-form form-ajax' method='post' enctype='multipart/form-data' id='dataform'>
<table class='table table-form'>
<tr>
<th><?php echo $lang->task->project;?></th>
<th><?php echo $lang->task->execution;?></th>
<td><?php echo html::select('project', $projects, $project->id, "class='form-control chosen' onchange='loadAll(this.value)' required");?></td><td></td><td></td>
</tr>
<tr>
+1 -1
View File
@@ -90,7 +90,7 @@
<table class='table table-form'>
<?php if($task->parent <= 0):?>
<tr>
<th class='thWidth'><?php echo $lang->task->project;?></th>
<th class='thWidth'><?php echo $lang->task->execution;?></th>
<td><?php echo html::select('project', $projects, $task->project, 'class="form-control chosen" onchange="loadAll(this.value)"');?></td>
</tr>
<?php endif;?>
+1 -1
View File
@@ -195,7 +195,7 @@
<table class="table table-data">
<tbody>
<tr>
<th class='w-90px'><?php echo $lang->task->project;?></th>
<th class='w-90px'><?php echo $lang->task->execution;?></th>
<td><?php if(!common::printLink('project', 'view', "projectID=$task->project", $project->name)) echo $project->name;?></td>
</tr>
<tr>
+2
View File
@@ -370,6 +370,8 @@ class todoModel extends model
* @param string $account
* @param string $status all|today|thisweek|lastweek|before, or a date.
* @param int $limit
* @param object $pager
* @param string $orderBy
* @access public
* @return void
*/
+1 -1
View File
@@ -4414,7 +4414,7 @@ class upgradeModel extends model
* Adjust budget units and values.
*
* @access public
* @return void
* @return bool
*/
public function adjustBudget()
{
+1 -1
View File
@@ -42,7 +42,7 @@
<tr class='colhead'>
<th class='w-id'><?php echo $lang->idAB;?></th>
<th class='w-pri'><?php echo $lang->priAB;?></th>
<th><?php echo $lang->task->project;?></th>
<th><?php echo $lang->task->execution;?></th>
<th><?php echo $lang->task->name;?></th>
<th class='w-70px'><?php echo $lang->task->estimateAB;?></th>
<th class='w-70px'><?php echo $lang->task->consumedAB;?></th>
+2 -2
View File
File diff suppressed because one or more lines are too long
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 134 KiB

+1 -8
View File
@@ -59,11 +59,4 @@ a.showMoreImage:hover {opacity: 1;}
.table-actions .btn{border: 1px solid #1183fb; color: #1183fb}
.table-actions .btn:hover{background: #b3d4fc}
#userNav{float: none; margin: 0;}
#userNav>li{text-align: center}
#userNav>li>a{padding: 6px 6px;color: #fff; opacity: .9;margin-left: 0px}
#userNav>li>a:hover{background: #0c64eb;}
#userNav>li>.dropdown-menu{left: 100%; top: -300px; width: 140px;text-align: left}
#userNav>li>.dropdown-menu .dropdown-menu{left: 100%; text-align: left}
#userNav>li .lang .dropdown-menu, #userNav>li .theme .dropdown-menu{top: -60px}
#userNav .dropdown-menu>li>a>.icon { position: initial; display: inline;}
#menuFooter{height: 50px}
File diff suppressed because one or more lines are too long