* change for custom menu.

This commit is contained in:
wangyidong
2016-04-18 16:27:15 +08:00
parent dc33dbb5d6
commit d22230a546
18 changed files with 376 additions and 200 deletions
+13
View File
@@ -336,3 +336,16 @@ $lang->bug->action->unlinkrelatedbug = array('main' => '$date, unlink related bu
$lang->bug->placeholder = new stdclass();
$lang->bug->placeholder->chooseBuilds = 'Choose builds...';
$lang->bug->featurebar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featurebar['browse']['all'] = $lang->bug->allBugs;
$lang->bug->featurebar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featurebar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featurebar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featurebar['browse']['unconfirmed'] = $lang->bug->confirmedList[0];
$lang->bug->featurebar['browse']['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->featurebar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featurebar['browse']['toclosed'] = $lang->bug->toClosed;
$lang->bug->featurebar['browse']['longlifebugs'] = $lang->bug->longLifeBugs;
$lang->bug->featurebar['browse']['postponedbugs'] = $lang->bug->postponedBugs;
$lang->bug->featurebar['browse']['needconfirm'] = $lang->bug->needConfirm;
+13
View File
@@ -336,3 +336,16 @@ $lang->bug->action->unlinkrelatedbug = array('main' => '$date, 由 <strong>$acto
$lang->bug->placeholder = new stdclass();
$lang->bug->placeholder->chooseBuilds = '选择相关版本...';
$lang->bug->featurebar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featurebar['browse']['all'] = $lang->bug->allBugs;
$lang->bug->featurebar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featurebar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featurebar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featurebar['browse']['unconfirmed'] = $lang->bug->confirmedList[0];
$lang->bug->featurebar['browse']['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->featurebar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featurebar['browse']['toclosed'] = $lang->bug->toClosed;
$lang->bug->featurebar['browse']['longlifebugs'] = $lang->bug->longLifeBugs;
$lang->bug->featurebar['browse']['postponedbugs'] = $lang->bug->postponedBugs;
$lang->bug->featurebar['browse']['needconfirm'] = $lang->bug->needConfirm;
+5 -15
View File
@@ -32,21 +32,11 @@ js::set('bugBrowseType', $this->session->bugBrowseType);
?>
</span>
</li>
<?php
echo "<li id='unclosedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=unclosed&param=0"), $lang->bug->unclosed) . "</li>";
echo "<li id='allTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=all&param=0&orderBy=$orderBy&recTotal=0&recPerPage=200"), $lang->bug->allBugs) . "</li>";
echo "<li id='assigntomeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=assignToMe&param=0"), $lang->bug->assignToMe) . "</li>";
echo "<li id='openedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=openedByMe&param=0"), $lang->bug->openedByMe) . "</li>";
echo "<li id='resolvedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=resolvedByMe&param=0"), $lang->bug->resolvedByMe) . "</li>";
echo "<li id='unconfirmedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=unconfirmed&param=0"), $lang->bug->confirmedList[0]) . "</li>";
echo "<li id='assigntonullTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=assignToNull&param=0"), $lang->bug->assignToNull) . "</li>";
echo "<li id='unresolvedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=unResolved&param=0"), $lang->bug->unResolved) . "</li>";
echo "<li id='toclosedTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=toClosed&param=0"), $lang->bug->toClosed) . "</li>";
echo "<li id='longlifebugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=longLifeBugs&param=0"), $lang->bug->longLifeBugs) . "</li>";
echo "<li id='postponedbugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=postponedBugs&param=0"), $lang->bug->postponedBugs) . "</li>";
echo "<li id='needconfirmTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=needconfirm&param=0"), $lang->bug->needConfirm) . "</li>";
echo "<li id='bysearchTab'><a href='#'><i class='icon-search icon'></i>&nbsp;{$lang->bug->byQuery}</a></li> ";
?>
<?php foreach($app->customMenu['featurebar'] as $type => $featurebar):?>
<?php if($featurebar['status'] == 'hide') continue;?>
<li id='<?php echo $type?>Tab'><?php echo html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=unclosed&param=0"), $featurebar['link'])?></li>
<?php endforeach;?>
<li id='bysearchTab'><a href='#'><i class='icon-search icon'></i>&nbsp;<?php echo $lang->bug->byQuery;?></a></li>
</ul>
<div class='actions'>
<div class='btn-group'>
+62 -70
View File
@@ -28,66 +28,60 @@ $lang->my->menuOrder[55] = 'changePassword';
$lang->todo->menuOrder = $lang->my->menuOrder;
/* product menu order. */
$lang->product->menuOrder[5] = 'index';
$lang->product->menuOrder[10] = 'story';
$lang->product->menuOrder[15] = 'dynamic';
$lang->product->menuOrder[20] = 'plan';
$lang->product->menuOrder[25] = 'release';
$lang->product->menuOrder[30] = 'roadmap';
$lang->product->menuOrder[35] = 'doc';
$lang->product->menuOrder[40] = 'project';
$lang->product->menuOrder[45] = 'branch';
$lang->product->menuOrder[50] = 'module';
$lang->product->menuOrder[55] = 'view';
$lang->product->menuOrder[60] = 'create';
$lang->product->menuOrder[65] = 'all';
$lang->product->menuOrder[5] = 'list';
$lang->product->menuOrder[10] = 'index';
$lang->product->menuOrder[15] = 'story';
$lang->product->menuOrder[20] = 'dynamic';
$lang->product->menuOrder[25] = 'plan';
$lang->product->menuOrder[30] = 'release';
$lang->product->menuOrder[35] = 'roadmap';
$lang->product->menuOrder[40] = 'doc';
$lang->product->menuOrder[45] = 'project';
$lang->product->menuOrder[50] = 'branch';
$lang->product->menuOrder[55] = 'module';
$lang->product->menuOrder[60] = 'view';
$lang->product->menuOrder[65] = 'create';
$lang->product->menuOrder[70] = 'all';
$lang->story->menuOrder = $lang->product->menuOrder;
$lang->productplan->menuOrder = $lang->product->menuOrder;
$lang->release->menuOrder = $lang->product->menuOrder;
$lang->branch->menuOrder = $lang->product->menuOrder;
/* project menu order. */
$lang->project->menuOrder[1] = 'index';
$lang->project->menuOrder[5] = 'task';
$lang->project->menuOrder[10] = 'story';
$lang->project->menuOrder[15] = 'bug';
$lang->project->menuOrder[20] = 'build';
$lang->project->menuOrder[25] = 'testtask';
$lang->project->menuOrder[30] = 'burn';
$lang->project->menuOrder[35] = 'team';
$lang->project->menuOrder[40] = 'dynamic';
$lang->project->menuOrder[45] = 'doc';
$lang->project->menuOrder[50] = 'product';
$lang->project->menuOrder[55] = 'linkstory';
$lang->project->menuOrder[5] = 'list';
$lang->project->menuOrder[10] = 'index';
$lang->project->menuOrder[15] = 'task';
$lang->project->menuOrder[20] = 'story';
$lang->project->menuOrder[25] = 'bug';
$lang->project->menuOrder[30] = 'build';
$lang->project->menuOrder[35] = 'testtask';
$lang->project->menuOrder[40] = 'team';
$lang->project->menuOrder[45] = 'dynamic';
$lang->project->menuOrder[50] = 'doc';
$lang->project->menuOrder[55] = 'product';
$lang->project->menuOrder[60] = 'view';
$lang->project->menuOrder[65] = 'order';
$lang->project->menuOrder[70] = 'create';
$lang->project->menuOrder[75] = 'copy';
$lang->project->menuOrder[80] = 'all';
$lang->project->menuOrder[65] = 'create';
$lang->project->menuOrder[70] = 'all';
$lang->task->menuOrder = $lang->project->menuOrder;
$lang->build->menuOrder = $lang->project->menuOrder;
/* bug menu order. */
$lang->bug->menuOrder[0] = 'product';
$lang->bug->menuOrder[1] = 'index';
$lang->bug->menuOrder[5] = 'bug';
$lang->bug->menuOrder[10] = 'testcase';
$lang->bug->menuOrder[15] = 'testtask';
/* testcase menu order. */
$lang->testcase->menuOrder[0] = 'product';
$lang->testcase->menuOrder[1] = 'index';
$lang->testcase->menuOrder[5] = 'bug';
$lang->testcase->menuOrder[10] = 'testcase';
$lang->testcase->menuOrder[15] = 'testtask';
$lang->testtask->menuOrder = $lang->testcase->menuOrder;
/* qa menu order. */
$lang->qa->menuOrder[5] = 'product';
$lang->qa->menuOrder[10] = 'index';
$lang->qa->menuOrder[15] = 'bug';
$lang->qa->menuOrder[20] = 'testcase';
$lang->qa->menuOrder[25] = 'testtask';
$lang->bug->menuOrder = $lang->qa->menuOrder;
$lang->testcase->menuOrder = $lang->bug->menuOrder;
$lang->testtask->menuOrder = $lang->testcase->menuOrder;
/* doc menu order. */
$lang->doc->menuOrder[5] = 'browse';
$lang->doc->menuOrder[10] = 'edit';
$lang->doc->menuOrder[15] = 'module';
$lang->doc->menuOrder[20] = 'delete';
$lang->doc->menuOrder[25] = 'create';
$lang->doc->menuOrder[5] = 'list';
$lang->doc->menuOrder[10] = 'browse';
$lang->doc->menuOrder[15] = 'edit';
$lang->doc->menuOrder[20] = 'module';
$lang->doc->menuOrder[25] = 'delete';
$lang->doc->menuOrder[30] = 'create';
/* report menu order. */
$lang->report->menuOrder[5] = 'product';
@@ -96,15 +90,15 @@ $lang->report->menuOrder[15] = 'test';
$lang->report->menuOrder[20] = 'staff';
/* company menu order. */
$lang->company->menuOrder[0] = 'name';
$lang->company->menuOrder[5] = 'browseUser';
$lang->company->menuOrder[10] = 'dept';
$lang->company->menuOrder[15] = 'browseGroup';
$lang->company->menuOrder[20] = 'view';
$lang->company->menuOrder[25] = 'dynamic';
$lang->company->menuOrder[30] = 'addGroup';
$lang->company->menuOrder[35] = 'batchAddUser';
$lang->company->menuOrder[40] = 'addUser';
$lang->company->menuOrder[5] = 'name';
$lang->company->menuOrder[10] = 'browseUser';
$lang->company->menuOrder[15] = 'dept';
$lang->company->menuOrder[20] = 'browseGroup';
$lang->company->menuOrder[25] = 'view';
$lang->company->menuOrder[30] = 'dynamic';
$lang->company->menuOrder[35] = 'addGroup';
$lang->company->menuOrder[40] = 'batchAddUser';
$lang->company->menuOrder[45] = 'addUser';
$lang->dept->menuOrder = $lang->company->menuOrder;
$lang->group->menuOrder = $lang->company->menuOrder;
$lang->user->menuOrder = $lang->company->menuOrder;
@@ -113,24 +107,22 @@ $lang->user->menuOrder = $lang->company->menuOrder;
$lang->admin->menuOrder[5] = 'index';
$lang->admin->menuOrder[10] = 'extension';
$lang->admin->menuOrder[15] = 'custom';
$lang->admin->menuOrder[20] = 'editor';
$lang->admin->menuOrder[25] = 'mail';
$lang->admin->menuOrder[30] = 'custom';
$lang->admin->menuOrder[40] = 'convert';
$lang->admin->menuOrder[45] = 'cron';
$lang->admin->menuOrder[50] = 'backup';
$lang->admin->menuOrder[55] = 'dev';
$lang->admin->menuOrder[60] = 'safe';
$lang->admin->menuOrder[65] = 'sso';
$lang->admin->menuOrder[70] = 'trashes';
$lang->admin->menuOrder[20] = 'mail';
$lang->admin->menuOrder[25] = 'custom';
$lang->admin->menuOrder[30] = 'convert';
$lang->admin->menuOrder[35] = 'cron';
$lang->admin->menuOrder[40] = 'backup';
$lang->admin->menuOrder[45] = 'dev';
$lang->admin->menuOrder[50] = 'safe';
$lang->admin->menuOrder[55] = 'sso';
$lang->admin->menuOrder[60] = 'trashes';
$lang->convert->menuOrder = $lang->admin->menuOrder;
$lang->upgrade->menuOrder = $lang->admin->menuOrder;
$lang->action->menuOrder = $lang->admin->menuOrder;
$lang->backup->menuOrder = $lang->admin->menuOrder;
$lang->cron->menuOrder = $lang->admin->menuOrder;
$lang->extension->menuOrder = $lang->admin->menuOrder;
$lang->custom->menuOrder = $lang->admin->menuOrder;
$lang->editor->menuOrder = $lang->admin->menuOrder;
$lang->mail->menuOrder = $lang->admin->menuOrder;
$lang->custom->menuOrder = $lang->admin->menuOrder;
$lang->backup->menuOrder = $lang->admin->menuOrder;
$lang->cron->menuOrder = $lang->admin->menuOrder;
$lang->dev->menuOrder = $lang->admin->menuOrder;
+8 -47
View File
@@ -381,6 +381,7 @@ class commonModel extends model
public static function printMainmenu($moduleName, $methodName = '')
{
global $app, $lang;
if(empty($app->customMenu)) $app->customMenu = customModel::getCustomMenu($app->getModuleName(), $app->getMethodName());
echo "<ul class='nav'>\n";
/* Set the main main menu. */
@@ -395,31 +396,13 @@ class commonModel extends model
if($moduleName == 'task' and !isset($lang->menu->task)) $mainMenu = 'project';
}
/* Sort menu according to menuOrder. */
if(isset($lang->menuOrder))
{
$menus = $lang->menu;
$lang->menu = new stdclass();
ksort($lang->menuOrder, SORT_ASC);
foreach($lang->menuOrder as $key)
{
$menu = $menus->$key;
unset($menus->$key);
$lang->menu->$key = $menu;
}
foreach($menus as $key => $menu)
{
$lang->menu->$key = $menu;
}
}
$activeName = $app->getViewType() == 'mhtml' ? 'ui-btn-active' : 'active';
/* Print all main menus. */
foreach($lang->menu as $menuKey => $menu)
foreach($app->customMenu['main'] as $menuKey => $menuContent)
{
if($menuContent['status'] == 'hide') continue;
$active = $menuKey == $mainMenu ? "class='$activeName'" : '';
$link = explode('|', $menu);
$link = explode('|', $menuContent['link']);
list($menuLabel, $module, $method) = $link;
$vars = isset($link[3]) ? $link[3] : '';
@@ -494,36 +477,11 @@ class commonModel extends model
$currentModule = $app->getModuleName();
$currentMethod = $app->getMethodName();
/* Sort the subMenu according to menuOrder. */
if(isset($lang->$moduleName->menuOrder))
{
$menus = json_decode(json_encode($submenus), true);
$submenus = new stdclass();
ksort($lang->$moduleName->menuOrder, SORT_ASC);
if(isset($menus['list']))
{
$submenus->list = $menus['list'];
unset($menus['list']);
}
foreach($lang->$moduleName->menuOrder as $order)
{
if(($order != 'list') && isset($menus[$order]))
{
$subOrder = $menus[$order];
unset($menus[$order]);
$submenus->$order = $subOrder;
}
}
foreach($menus as $key => $menu) $submenus->$key = $menu;
}
/* The beginning of the menu. */
echo "<ul class='nav'>\n";
/* Cycling to print every sub menus. */
foreach($submenus as $subMenuKey => $submenu)
foreach($app->customMenu['module'] as $subMenuKey => $submenu)
{
/* Init the these vars. */
$link = $submenu;
@@ -532,8 +490,11 @@ class commonModel extends model
$float = '';
$active = '';
$target = '';
$status = '';
$order = '';
if(is_array($submenu)) extract($submenu); // If the sub menu is an array, extract it.
if($status == 'hide') continue;
/* Print the menu. */
if(strpos($link, '|') === false)
+118
View File
@@ -122,4 +122,122 @@ class customModel extends model
->beginIF($params['section'])->andWhere('section')->in($params['section'])->fi()
->beginIF($params['key'])->andWhere('`key`')->in($params['key'])->fi();
}
public static function getCustomMenu($module, $method)
{
global $app, $lang, $config;
if(!isset($lang->$module->menu)) return array();
$allMenu['main'] = $lang->menu;
$allMenu['module'] = $lang->$module->menu;
/* Process main and module menu. */
$processedMenus = array();
foreach($allMenu as $type => $menu)
{
$menucustom = '';
$menuOrder = array();
$menuStatus = array();
if($type == 'main') $menucustom = isset($config->menucustom->main) ? $config->menucustom->main : '';
if($type == 'module')$menucustom = isset($config->menucustomModule->$module) ? $config->menucustomModule->$module : '';
/* Get order and status from config. */
if($menucustom)
{
$menuStatus = json_decode($menucustom, true);
$i = 1;
foreach($menuStatus as $menuKey => $status)
{
$order = $i * 5;
$menuOrder[$order] = $menuKey;
$i++;
}
}
if(empty($menuOrder)) $menuOrder = $type == 'main' ? $lang->menuOrder : $lang->$module->menuOrder;
/* Merge all menu. */
$inOrderMenu = ',' . join(',', $menuOrder) . ',';
$notInOrderMenu = array();
foreach($menu as $menuKey => $menuName)
{
if(strpos($inOrderMenu, ",$menuKey,") === false) $notInOrderMenu[] = $menuKey;
}
if($notInOrderMenu)
{
$order = count($menuOrder) * 5;
foreach($notInOrderMenu as $menuKey)
{
$order = $order + 5;
$menuOrder[$order] = $menuKey;
}
}
ksort($menuOrder, SORT_ASC);
/* Rebuild menu. */
$processedMenu = new stdclass();
foreach($menuOrder as $order => $menuKey)
{
if(!isset($menu->$menuKey)) continue;
$menuContent = $menu->$menuKey;
if(is_string($menuContent)) $menuContent = array('link' => $menuContent);
$menuContent['status'] = isset($menuStatus[$menuKey]) ? $menuStatus[$menuKey] : 'show';
$menuContent['order'] = $order;
if(strpos($menuContent['link'], '|') !== false)
{
list($menuTitle, $menuModule, $menuMethod) = explode('|', $menuContent['link']);
if($menuContent['status'] == 'show' and !common::hasPriv($menuModule, $menuMethod)) $menuContent['status'] = 'hide';
}
$processedMenu->$menuKey = $menuContent;
}
$processedMenus[$type] = $processedMenu;
}
/* Process featurebar. */
$app->loadLang($module);
$featurebar = '';
if(isset($lang->$module->featurebar[$method])) $featurebar = $lang->$module->featurebar[$method];
$menucustomKey = 'menucustom' . $module;
if($featurebar)
{
$menuOrder = array();
$menuStatus = array();
if(isset($config->$menucustomKey->$method))
{
$menuStatus = json_decode($config->$menucustomKey->$method, true);
foreach($menuStatus as $menuKey => $status) $menuOrder[] = $menuKey;
}
/* Merge all menu. */
$inOrderMenu = ',' . join(',', $menuOrder) . ',';
$notInOrderMenu = array();
foreach($featurebar as $menuKey => $menuName)
{
if(strpos($inOrderMenu, ",$menuKey,") === false) $notInOrderMenu[] = $menuKey;
}
if($notInOrderMenu)
{
$order = count($menuOrder);
foreach($notInOrderMenu as $menuKey)
{
$menuOrder[$order] = $menuKey;
$order++;
}
}
ksort($menuOrder, SORT_ASC);
$processedMenu = new stdclass();
foreach($menuOrder as $order => $menuKey)
{
$menuContent = $featurebar[$menuKey];
$menuContent = array('link' => $menuContent);
$menuContent['status'] = isset($menuStatus[$menuKey]) ? $menuStatus[$menuKey] : 'show';
$menuContent['order'] = ($order + 1) * 5;
$processedMenu->$menuKey = $menuContent;
}
$processedMenus['featurebar'] = $processedMenu;
}
return $processedMenus;
}
}
+12
View File
@@ -93,3 +93,15 @@ $lang->product->aclList['custom'] = "Whitelist({$lang->projectCommon} team memb
$lang->product->storySummary = "Total <strong>%s</strong> stories in this page, estimate <strong>%s</strong> hours, case coverage is %s ";
$lang->product->noMatched = "No matched {$lang->productCommon} including '%s'";
$lang->product->featurebar['browse']['unclosed'] = $lang->product->unclosed;
$lang->product->featurebar['browse']['allstory'] = $lang->product->allStory;
$lang->product->featurebar['browse']['assignedtome'] = $lang->product->assignedToMe;
$lang->product->featurebar['browse']['openedbyme'] = $lang->product->openedByMe;
$lang->product->featurebar['browse']['reviewedbyme'] = $lang->product->reviewedByMe;
$lang->product->featurebar['browse']['closedbyme'] = $lang->product->closedByMe;
$lang->product->featurebar['browse']['draftstory'] = $lang->product->draftStory;
$lang->product->featurebar['browse']['activestory'] = $lang->product->activeStory;
$lang->product->featurebar['browse']['changedstory'] = $lang->product->changedStory;
$lang->product->featurebar['browse']['willclose'] = $lang->product->willClose;
$lang->product->featurebar['browse']['closedstory'] = $lang->product->closedStory;
+12
View File
@@ -93,3 +93,15 @@ $lang->product->aclList['custom'] = '自定义白名单(团队成员和白名
$lang->product->storySummary = "本页共 <strong>%s</strong> 个需求,预计 <strong>%s</strong> 个工时,用例覆盖率<strong>%s</strong>。";
$lang->product->noMatched = '找不到包含"%s"的' . $lang->productCommon;
$lang->product->featurebar['browse']['unclosed'] = $lang->product->unclosed;
$lang->product->featurebar['browse']['allstory'] = $lang->product->allStory;
$lang->product->featurebar['browse']['assignedtome'] = $lang->product->assignedToMe;
$lang->product->featurebar['browse']['openedbyme'] = $lang->product->openedByMe;
$lang->product->featurebar['browse']['reviewedbyme'] = $lang->product->reviewedByMe;
$lang->product->featurebar['browse']['closedbyme'] = $lang->product->closedByMe;
$lang->product->featurebar['browse']['draftstory'] = $lang->product->draftStory;
$lang->product->featurebar['browse']['activestory'] = $lang->product->activeStory;
$lang->product->featurebar['browse']['changedstory'] = $lang->product->changedStory;
$lang->product->featurebar['browse']['willclose'] = $lang->product->willClose;
$lang->product->featurebar['browse']['closedstory'] = $lang->product->closedStory;
+4 -11
View File
@@ -28,17 +28,10 @@
?>
</span>
</li>
<li id='unclosedTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=unclosed"), $lang->product->unclosed);?></li>
<li id='allstoryTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=allStory"), $lang->product->allStory);?></li>
<li id='assignedtomeTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=assignedtome"), $lang->product->assignedToMe);?></li>
<li id='openedbymeTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=openedByMe"), $lang->product->openedByMe);?></li>
<li id='reviewedbymeTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=reviewedByMe"), $lang->product->reviewedByMe);?></li>
<li id='closedbymeTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=closedByMe"), $lang->product->closedByMe);?></li>
<li id='draftstoryTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=draftStory"), $lang->product->draftStory);?></li>
<li id='activestoryTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=activeStory"), $lang->product->activeStory);?></li>
<li id='changedstoryTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=changedStory"), $lang->product->changedStory);?></li>
<li id='willcloseTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=willClose"), $lang->product->willClose);?></li>
<li id='closedstoryTab'> <?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=closedStory"), $lang->product->closedStory);?></li>
<?php foreach($app->customMenu['featurebar'] as $type => $featurebar):?>
<?php if($featurebar['status'] == 'hide') continue;?>
<li id='<?php echo $type?>Tab'><?php echo html::a($this->inlink('browse', "productID=$productID&branch=$branch&browseType=$type"), $featurebar['link']);?></li>
<?php endforeach;?>
<li id='bysearchTab'><a href='javascript:;'><i class='icon-search icon'></i> <?php echo $lang->product->searchStory;?></a></li>
</ul>
<div class='actions'>
+11
View File
@@ -237,3 +237,14 @@ $lang->printKanban->taskStatus = 'Status';
$lang->printKanban->typeList['all'] = 'All';
$lang->printKanban->typeList['increment'] = 'Increment';
$lang->project->featurebar['task']['unclosed'] = $lang->project->unclosed;
$lang->project->featurebar['task']['all'] = $lang->project->allTasks;
$lang->project->featurebar['task']['kanban'] = $lang->project->kanban;
$lang->project->featurebar['task']['burn'] = $lang->project->burn;
$lang->project->featurebar['task']['assignedtome'] = $lang->project->assignedToMe;
$lang->project->featurebar['task']['status'] = $lang->project->statusSelects[''];
$lang->project->featurebar['task']['group'] = $lang->project->groups[''];
$lang->project->featurebar['grouptask'] = $lang->project->featurebar['task'];
$lang->project->featurebar['kanban'] = $lang->project->featurebar['task'];
$lang->project->featurebar['burn'] = $lang->project->featurebar['task'];
+11
View File
@@ -248,3 +248,14 @@ $lang->printKanban->taskStatus = '状态';
$lang->printKanban->typeList['all'] = '全部';
$lang->printKanban->typeList['increment'] = '增量';
$lang->project->featurebar['task']['unclosed'] = $lang->project->unclosed;
$lang->project->featurebar['task']['all'] = $lang->project->allTasks;
$lang->project->featurebar['task']['kanban'] = $lang->project->kanban;
$lang->project->featurebar['task']['burn'] = $lang->project->burn;
$lang->project->featurebar['task']['assignedtome'] = $lang->project->assignedToMe;
$lang->project->featurebar['task']['status'] = $lang->project->statusSelects[''];
$lang->project->featurebar['task']['group'] = $lang->project->groups[''];
$lang->project->featurebar['grouptask'] = $lang->project->featurebar['task'];
$lang->project->featurebar['kanban'] = $lang->project->featurebar['task'];
$lang->project->featurebar['burn'] = $lang->project->featurebar['task'];
+46 -35
View File
@@ -15,43 +15,54 @@
</span>
</li>
<?php endif;?>
<?php
$hasBrowsePriv = common::hasPriv('project', 'task');
$hasKanbanPriv = common::hasPriv('project', 'kanban');
$hasBurnPriv = common::hasPriv('project', 'burn');
$hasGroupTaskPriv = common::hasPriv('project', 'groupTask');
?>
<?php foreach($app->customMenu['featurebar'] as $type => $featurebar):?>
<?php
if($featurebar['status'] == 'hide') continue;
if($hasBrowsePriv and ($type == 'unclosed' or $type == 'all' or $type == 'assignedtome')) echo "<li id='{$type}Tab'>" . html::a(inlink('task', "project=$projectID&type=$type"), $featurebar['link']) . '</li>' ;
if($hasKanbanPriv and $type == 'kanban') echo "<li id='kanbanTab'>" . html::a(inlink('kanban', "projectID=$projectID"), $featurebar['link']) . '</li>';
if($hasBurnPriv and $type == 'burn' and ($project->type == 'sprint' or $project->type == 'waterfall')) echo "<li id='burnTab'>" . html::a(inlink('burn', "project=$projectID"), $featurebar['link']) . '</li>' ;
if($hasBrowsePriv and $type == 'status')
{
echo "<li id='statusTab' class='dropdown'>";
$taskBrowseType = isset($status) ? $this->session->taskBrowseType : '';
$current = zget($lang->project->statusSelects, $taskBrowseType, '');
if(empty($current)) $current = $featurebar['link'];
echo html::a('javascript:;', $current . " <span class='caret'></span>", '', "data-toggle='dropdown'");
echo "<ul class='dropdown-menu'>";
foreach ($lang->project->statusSelects as $key => $value)
{
if($key == '') continue;
echo '<li' . ($key == $taskBrowseType ? " class='active'" : '') . '>';
echo html::a($this->createLink('project', 'task', "project=$projectID&type=$key"), $value);
}
echo '</ul></li>';
}
elseif($hasGroupTaskPriv and $type == 'group')
{
echo "<li id='groupTab' class='dropdown'>";
$groupBy = isset($groupBy) ? $groupBy : '';
$current = zget($lang->project->groups, isset($groupBy) ? $groupBy : '', '');
if(empty($current)) $current = $featurebar['link'];
echo html::a('javascript:;', $current . " <span class='caret'></span>", '', "data-toggle='dropdown'");
echo "<ul class='dropdown-menu'>";
foreach ($lang->project->groups as $key => $value)
{
if($key == '') continue;
echo '<li' . ($key == $groupBy ? " class='active'" : '') . '>';
echo html::a($this->createLink('project', 'groupTask', "project=$projectID&groupBy=$key"), $value);
}
echo '</ul></li>';
}
?>
<?php endforeach;?>
<?php
echo "<li id='unclosedTab'>"; common::printLink('project', 'task', "project=$projectID&type=unclosed", $lang->project->unclosed); echo '</li>' ;
echo "<li id='allTab'>"; common::printLink('project', 'task', "project=$projectID&type=all", $lang->project->allTasks); echo '</li>' ;
echo "<li id='kanbanTab'>"; common::printLink('project', 'kanban', "projectID=$projectID", $lang->project->kanban, '', '', false); echo '</li>';
if($project->type == 'sprint' or $project->type == 'waterfall') print "<li id='burnTab'>" and common::printLink('project', 'burn', "project=$projectID", $lang->project->burn); print '</li>' ;
echo "<li id='assignedtomeTab'>"; common::printLink('project', 'task', "project=$projectID&type=assignedtome", $lang->project->assignedToMe); echo '</li>' ;
echo "<li id='statusTab' class='dropdown'>";
$taskBrowseType = isset($status) ? $this->session->taskBrowseType : '';
$current = zget($lang->project->statusSelects, $taskBrowseType, '');
if(empty($current)) $current = $lang->project->statusSelects[''];
echo html::a('javascript:;', $current . " <span class='caret'></span>", '', "data-toggle='dropdown'");
echo "<ul class='dropdown-menu'>";
foreach ($lang->project->statusSelects as $key => $value)
{
if($key == '') continue;
echo '<li' . ($key == $taskBrowseType ? " class='active'" : '') . '>';
echo html::a($this->createLink('project', 'task', "project=$projectID&type=$key"), $value);
}
echo '</ul></li>';
echo "<li id='groupTab' class='dropdown'>";
$groupBy = isset($groupBy) ? $groupBy : '';
$current = zget($lang->project->groups, isset($groupBy) ? $groupBy : '', '');
if(empty($current)) $current = $lang->project->groups[''];
echo html::a('javascript:;', $current . " <span class='caret'></span>", '', "data-toggle='dropdown'");
echo "<ul class='dropdown-menu'>";
foreach ($lang->project->groups as $key => $value)
{
if($key == '') continue;
echo '<li' . ($key == $groupBy ? " class='active'" : '') . '>';
echo html::a($this->createLink('project', 'groupTask', "project=$projectID&groupBy=$key"), $value);
}
echo '</ul></li>';
if($this->methodName == 'task') echo "<li id='bysearchTab'><a href='#'><i class='icon-search icon'></i>&nbsp;{$lang->project->byQuery}</a></li> ";
?>
</ul>
+7
View File
@@ -145,3 +145,10 @@ $lang->testcase->noFunction = 'Iconv and mb_convert_encoding does not exist, yo
$lang->testcase->noRequire = "In the row of %s, the %s is a required field";
$lang->testcase->searchStories = 'Type to search stories';
$lang->testcase->featurebar['browse']['all'] = $lang->testcase->allCases;
$lang->testcase->featurebar['browse']['needconfirm'] = $lang->testcase->needConfirm;
$lang->testcase->featurebar['browse']['group'] = '';
$lang->testcase->featurebar['browse']['zerocase'] = '';
$lang->testcase->featurebar['groupcase'] = $lang->testcase->featurebar['browse'];
if(isset($lang->story))$lang->story->featurebar['zerocase'] = $lang->testcase->featurebar['browse'];
+7
View File
@@ -145,3 +145,10 @@ $lang->testcase->noFunction = '不存在iconv和mb_convert_encoding转码方法
$lang->testcase->noRequire = "%s行的“%s”是必填字段,不能为空";
$lang->testcase->searchStories = '键入来搜索需求';
$lang->testcase->featurebar['browse']['all'] = $lang->testcase->allCases;
$lang->testcase->featurebar['browse']['needconfirm'] = $lang->testcase->needConfirm;
$lang->testcase->featurebar['browse']['group'] = '';
$lang->testcase->featurebar['browse']['zerocase'] = '';
$lang->testcase->featurebar['groupcase'] = $lang->testcase->featurebar['browse'];
if(isset($lang->story))$lang->story->featurebar['zerocase'] = $lang->testcase->featurebar['browse'];
+14 -6
View File
@@ -16,11 +16,14 @@
</span>
</li>
<?php endif;?>
<?php foreach($app->customMenu['featurebar'] as $type => $featurebar):?>
<?php if($featurebar['status'] == 'hide') continue;?>
<?php
echo "<li id='allTab'>" . html::a($this->createLink('testcase', 'browse', "productid=$productID&branch=$branch&browseType=all"), $lang->testcase->allCases) . "</li>";
echo "<li id='needconfirmTab'>" . html::a($this->createLink('testcase', 'browse', "productid=$productID&branch=$branch&browseType=needconfirm"), $lang->testcase->needConfirm) . "</li>";
if(common::hasPriv('testcase', 'groupcase'))
if(common::hasPriv('testcase', 'browse') and ($type == 'all' or $type == 'needconfirm'))
{
echo "<li id='{$type}Tab'>" . html::a($this->createLink('testcase', 'browse', "productid=$productID&branch=$branch&browseType=$type"), $featurebar['link']) . "</li>";
}
elseif($type == 'group' and common::hasPriv('testcase', 'groupcase'))
{
echo "<li id='groupTab' class='dropdown'>";
$groupBy = isset($groupBy) ? $groupBy : '';
@@ -36,8 +39,13 @@
}
echo '</ul></li>';
}
if(common::hasPriv('story', 'zeroCase')) echo "<li id='zerocaseTab'>" . html::a($this->createLink('story', 'zeroCase', "productID=$productID"), $lang->story->zeroCase) . '</li>';
elseif($type == 'zerocase' and common::hasPriv('story', 'zeroCase'))
{
echo "<li id='zerocaseTab'>" . html::a($this->createLink('story', 'zeroCase', "productID=$productID"), $lang->story->zeroCase) . '</li>';
}
?>
<?php endforeach;?>
<?php
if($this->methodName == 'browse') echo "<li id='bysearchTab'><a href='#'><i class='icon-search icon'></i>&nbsp;{$lang->testcase->bySearch}</a></li> ";
?>
</ul>
+5
View File
@@ -103,3 +103,8 @@ $lang->testtask->action = new stdclass();
$lang->testtask->action->testtaskopened = '$date, 由 <strong>$actor</strong> opened test task. <strong>$extra</strong>。' . "\n";
$lang->testtask->action->testtaskstarted = '$date, 由 <strong>$actor</strong> started test task. <strong>$extra</strong>。' . "\n";
$lang->testtask->action->testtaskclosed = '$date, 由 <strong>$actor</strong> finished test task. <strong>$extra</strong>。' . "\n";
$lang->testtask->featurebar['cases']['all'] = $lang->testtask->allCases;
$lang->testtask->featurebar['cases']['assignedtome'] = $lang->testtask->assignedToMe;
$lang->testtask->featurebar['cases']['group'] = '';
$lang->testtask->featurebar['groupcase'] = $lang->testtask->featurebar['cases'];
+5
View File
@@ -103,3 +103,8 @@ $lang->testtask->action = new stdclass();
$lang->testtask->action->testtaskopened = '$date, 由 <strong>$actor</strong> 创建版本 <strong>$extra</strong>。' . "\n";
$lang->testtask->action->testtaskstarted = '$date, 由 <strong>$actor</strong> 启动版本 <strong>$extra</strong>。' . "\n";
$lang->testtask->action->testtaskclosed = '$date, 由 <strong>$actor</strong> 完成版本 <strong>$extra</strong>。' . "\n";
$lang->testtask->featurebar['cases']['all'] = $lang->testtask->allCases;
$lang->testtask->featurebar['cases']['assignedtome'] = $lang->testtask->assignedToMe;
$lang->testtask->featurebar['cases']['group'] = '';
$lang->testtask->featurebar['groupcase'] = $lang->testtask->featurebar['cases'];
+23 -16
View File
@@ -3,25 +3,32 @@
<?php echo "<span class='prefix'>" . html::icon($lang->icons['usecase']) . '</span><strong>' . $task->name . '</strong>';?>
</div>
<div class='nav'>
<?php foreach($app->customMenu['featurebar'] as $type => $featurebar):?>
<?php if($featurebar['status'] == 'hide') continue;?>
<?php
echo "<li id='allTab'>" . html::a($this->inlink('cases', "taskID=$taskID&browseType=all&param=0"), $lang->testtask->allCases) . "</li>";
echo "<li id='assignedtomeTab'>" . html::a($this->inlink('cases', "taskID=$taskID&browseType=assignedtome&param=0"), $lang->testtask->assignedToMe) . "</li>";
echo "<li id='groupTab' class='dropdown'>";
$groupBy = isset($groupBy) ? $groupBy : '';
$current = zget($lang->testcase->groups, isset($groupBy) ? $groupBy : '', '');
if(empty($current)) $current = $lang->testcase->groups[''];
echo html::a('javascript:;', $current . " <span class='caret'></span>", '', "data-toggle='dropdown'");
echo "<ul class='dropdown-menu'>";
foreach ($lang->testcase->groups as $key => $value)
if(common::hasPriv('testtask', 'cases') and ($type == 'all' or $type == 'assignedtome'))
{
if($key == '') continue;
echo '<li' . ($key == $groupBy ? " class='active'" : '') . '>';
echo html::a($this->inlink('groupCase', "taskID=$taskID&groupBy=$key"), $value);
echo "<li id='{$type}Tab'>" . html::a($this->inlink('cases', "taskID=$taskID&browseType=$type&param=0"), $featurebar['link']) . "</li>";
}
echo '</ul></li>';
elseif(common::hasPriv('testtask', 'cases') and $type == 'group')
{
echo "<li id='groupTab' class='dropdown'>";
$groupBy = isset($groupBy) ? $groupBy : '';
$current = zget($lang->testcase->groups, isset($groupBy) ? $groupBy : '', '');
if(empty($current)) $current = $lang->testcase->groups[''];
echo html::a('javascript:;', $current . " <span class='caret'></span>", '', "data-toggle='dropdown'");
echo "<ul class='dropdown-menu'>";
foreach ($lang->testcase->groups as $key => $value)
{
if($key == '') continue;
echo '<li' . ($key == $groupBy ? " class='active'" : '') . '>';
echo html::a($this->inlink('groupCase', "taskID=$taskID&groupBy=$key"), $value);
}
echo '</ul></li>';
}
?>
<?php endforeach;?>
<?php
if($this->methodName == 'cases') echo "<li id='bysearchTab'><a href='#'><i class='icon-search icon'></i>&nbsp;{$lang->testcase->bySearch}</a></li> ";
echo '<li>' . html::a(inlink('view', "taskID=$taskID"), $lang->testtask->view) . '</li>';
?>