* finish task #3915,3917,3955.

This commit is contained in:
wangyidong
2018-04-26 11:25:40 +08:00
parent 8e2573fece
commit b59ac8b1a0
6 changed files with 97 additions and 58 deletions
+7 -11
View File
@@ -48,19 +48,15 @@ $lang->branch->menuOrder = $lang->product->menuOrder;
/* project menu order. */
$lang->project->menuOrder[5] = 'list';
$lang->project->menuOrder[10] = 'index';
$lang->project->menuOrder[15] = 'task';
$lang->project->menuOrder[10] = 'kanban';
$lang->project->menuOrder[15] = 'burn';
$lang->project->menuOrder[20] = 'story';
$lang->project->menuOrder[25] = 'bug';
$lang->project->menuOrder[30] = 'build';
$lang->project->menuOrder[35] = 'testtask';
$lang->project->menuOrder[25] = 'qa';
$lang->project->menuOrder[30] = 'doc';
$lang->project->menuOrder[35] = 'action';
$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] = 'create';
$lang->project->menuOrder[70] = 'all';
$lang->project->menuOrder[45] = 'product';
$lang->project->menuOrder[50] = 'view';
$lang->task->menuOrder = $lang->project->menuOrder;
$lang->build->menuOrder = $lang->project->menuOrder;
+29 -8
View File
@@ -221,21 +221,42 @@ $lang->release->menu = $lang->product->menu;
$lang->project = new stdclass();
$lang->project->menu = new stdclass();
$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,burn,importbug,kanban,printkanban,tree');
$lang->project->menu->list = array('link' => '%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,importbug,tree');
$lang->project->menu->kanban = array('link' => '看板|project|kanban|projectID=%s');
$lang->project->menu->burn = array('link' => '燃尽图|project|burn|projectID=%s');
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
$lang->project->menu->dynamic = '动态|project|dynamic|projectID=%s';
$lang->project->menu->build = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'build');
$lang->project->menu->testtask = array('link' => '测试单|project|testtask|projectID=%s');
$lang->project->menu->team = array('link' => '团队|project|team|projectID=%s', 'alias' => 'managemembers');
$lang->project->menu->qa = array('link' => '%s', 'subModule' => 'build');
$lang->project->menu->doc = array('link' => '文档|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
$lang->project->menu->action = array('link' => '%s');
$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s';
$lang->project->menu->team = array('link' => '团队|project|team|projectID=%s', 'alias' => 'managemembers');
$lang->project->menu->view = array('link' => '概况|project|view|projectID=%s', 'alias' => 'edit,start,suspend,putoff,close');
$lang->project->subMenu = new stdclass();
$lang->project->subMenu->list = new stdclass();
$lang->project->subMenu->list->task = '任务列表|project|task|projectID=%s';
$lang->project->subMenu->list->tree = '树状图|project|tree|projectID=%s';
$lang->project->subMenu->list->groupTask = '分组视图|project|groupTask|projectID=%s';
$lang->project->subMenu->qa = new stdclass();
$lang->project->subMenu->qa->bug = 'Bug|project|bug|projectID=%s';
$lang->project->subMenu->qa->build = '版本|project|build|projectID=%s';
$lang->project->subMenu->qa->testtask = '测试单|project|testtask|projectID=%s';
$lang->project->subMenu->action = new stdclass();
$lang->project->subMenu->action->dynamic = '动态|project|dynamic|projectID=%s';
$lang->project->dividerMenu = ',story,doc,';
$lang->task = new stdclass();
$lang->build = new stdclass();
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
$lang->task->menu = $lang->project->menu;
$lang->task->subMenu = $lang->project->subMenu;
$lang->build->menu = $lang->project->menu;
$lang->build->subMenu = $lang->project->subMenu;
$lang->task->dividerMenu = $lang->project->dividerMenu;
$lang->build->dividerMenu = $lang->project->dividerMenu;
/* QA视图菜单设置。*/
$lang->qa = new stdclass();
+12 -14
View File
@@ -456,40 +456,38 @@ class commonModel extends model
/* Cycling to print every sub menus. */
foreach($menu as $menuItem)
{
if(isset($lang->$moduleName->dividerMenu) and strpos($lang->$moduleName->dividerMenu, ",{$menuItem->name},") !== false) echo "<li class='divider'></li>";
if(isset($menuItem->hidden) && $menuItem->hidden) continue;
if($isMobile and empty($menuItem->link)) continue;
/* Init the these vars. */
$alias = isset($menuItem->alias) ? $menuItem->alias : '';
$subModule = isset($menuItem->subModule) ? explode(',', $menuItem->subModule) : array();
$class = isset($menuItem->class) ? $menuItem->class : '';
$active = '';
if($subModule and in_array($currentModule, $subModule)) $active = 'active';
if($alias and $moduleName == $currentModule and strpos(",$alias,", ",$currentMethod,") !== false) $active = 'active';
if($menuItem->link)
{
$active = '';
$float = isset($menuItem->float) ? $menuItem->float : '';
$alias = '';
$target = '';
$module = '';
$method = '';
$link = commonModel::createMenuLink($menuItem);
if(is_array($menuItem->link))
{
if(isset($menuItem->link['subModule']))
{
$subModules = explode(',', $menuItem->link['subModule']);
if(in_array($currentModule, $subModules) and $float != 'right') $active = 'active';
}
if(isset($menuItem->link['alias'])) $alias = $menuItem->link['alias'];
if(isset($menuItem->link['target'])) $target = $menuItem->link['target'];
if(isset($menuItem->link['module'])) $module = $menuItem->link['module'];
if(isset($menuItem->link['method'])) $method = $menuItem->link['method'];
}
if($float != 'right' and $module == $currentModule and ($method == $currentMethod or strpos(",$alias,", ",$currentMethod,") !== false)) $active = 'active';
if($module == $currentModule and ($method == $currentMethod or strpos(",$alias,", ",$currentMethod,") !== false)) $active = 'active';
$menuItemHtml = "<li class='$float $active' data-id='$menuItem->name'>" . html::a($link, $menuItem->text, $target) . "</li>\n";
if($isMobile) $menuItemHtml = html::a($link, $menuItem->text, $target, "class='$active'") . "\n";
$menuItemHtml = "<li class='$class $active' data-id='$menuItem->name'>" . html::a($link, $menuItem->text, $target) . "</li>\n";
if($isMobile) $menuItemHtml = html::a($link, $menuItem->text, $target, "class='$class $active'") . "\n";
echo $menuItemHtml;
}
else
{
echo $isMobile ? $menuItem->text : "<li data-id='$menuItem->name'>$menuItem->text</li>\n";
echo $isMobile ? $menuItem->text : "<li class='$class $active' data-id='$menuItem->name'>$menuItem->text</li>\n";
}
}
echo $isMobile ? '' : "</ul>\n";
@@ -1290,7 +1288,7 @@ EOD;
if(!empty($app->user->admin)) return true;
if($module == 'todo' and ($method == 'create' or $method == 'batchcreate')) return true;
if($module == 'effort' and $method == 'batchcreate') return true;
if($module == 'effort' and ($method == 'batchcreate' or $method == 'createforobject')) return true;
// limited project
$limitedProject = false;
+16 -18
View File
@@ -209,11 +209,12 @@ class customModel extends model
{
if(is_object($item)) $item = (array)$item;
$label = '';
$module = '';
$method = '';
$float = '';
$fixed = '';
$label = '';
$module = '';
$method = '';
$class = '';
$subModule = '';
$alias = '';
$link = (is_array($item) and isset($item['link'])) ? $item['link'] : $item;
/* The variable of item has not link and is not link then ignore it. */
@@ -235,31 +236,28 @@ class customModel extends model
{
$itemLink = array('module' => $module, 'method' => $method);
if(isset($link[3])) $itemLink['vars'] = $link[3];
if(is_array($item))
{
if(isset($item['subModule'])) $itemLink['subModule'] = $item['subModule'];
if(isset($item['alias'])) $itemLink['alias'] = $item['alias'];
if(isset($item['target'])) $itemLink['target'] = $item['target'];
}
if(is_array($item) and isset($item['target'])) $itemLink['target'] = $item['target'];
}
if(is_array($item))
{
if(isset($item['float'])) $float = $item['float'];
if(isset($item['fixed'])) $fixed = $item['fixed'];
if(isset($item['class'])) $class = $item['class'];
if(isset($item['subModule'])) $subModule = $item['subModule'];
if(isset($item['alias'])) $alias = $item['alias'];
}
$hidden = !$fixed && isset($customMenuMap[$name]) && isset($customMenuMap[$name]->hidden) && $customMenuMap[$name]->hidden;
$hidden = isset($customMenuMap[$name]) && isset($customMenuMap[$name]->hidden) && $customMenuMap[$name]->hidden;
if(strpos($name, 'QUERY') === 0 and !isset($customMenuMap[$name])) $hidden = true;
$menuItem = new stdclass();
$menuItem->name = $name;
$menuItem->link = $itemLink;
$menuItem->text = $label;
$menuItem->order = $fixed ? -1 : (isset($customMenuMap[$name]) && isset($customMenuMap[$name]->order) ? $customMenuMap[$name]->order : $order++);
if($float) $menuItem->float = $float;
if($fixed) $menuItem->fixed = $fixed;
if($hidden) $menuItem->hidden = $hidden;
$menuItem->order = (isset($customMenuMap[$name]) && isset($customMenuMap[$name]->order) ? $customMenuMap[$name]->order : $order++);
if($hidden) $menuItem->hidden = $hidden;
if($class) $menuItem->class = $class;
if($subModule)$menuItem->subModule = $subModule;
if($alias) $menuItem->alias = $alias;
if($isTutorialMode) $menuItem->tutorial = true;
/* Hidden menu by config in mobile. */
-4
View File
@@ -1,7 +1,3 @@
.container {max-width: 950px!important;}
.container .actions {margin-bottom: 10px; padding: 0}
.container .actions > .text {padding: 5px 5px 5px 15px; line-height: 20px}
.mw-220px {max-width: 220px!important}
#wrap h1{font-size:14px;}
#interval{margin-right:10px;}
.canvas-wrapper {padding: 15px; border: 1px solid #ddd;}
+33 -3
View File
@@ -78,9 +78,9 @@ class projectModel extends model
if($project and $project->type == 'ops')
{
unset($this->lang->project->menu->story);
unset($this->lang->project->menu->bug);
unset($this->lang->project->menu->build);
unset($this->lang->project->menu->testtask);
unset($this->lang->project->subMenu->qa->bug);
unset($this->lang->project->subMenu->qa->build);
unset($this->lang->project->subMenu->qa->testtask);
}
if($projects and !isset($projects[$projectID]) and !$this->checkPriv($project))
@@ -118,6 +118,36 @@ class projectModel extends model
foreach($this->lang->project->menu as $key => $menu)
{
$replace = $projectID;
/* Replace for dropdown submenu. */
if(isset($this->lang->project->subMenu->$key))
{
$dropTitle = '';
$hasActive = false;
$replace = "<ul class='dropdown-menu'>";
foreach($this->lang->project->subMenu->$key as $subMenuKey => $subMenuLink)
{
list($subMenuName, $subMenuModule, $subMenuMethod, $subMenuParams) = explode('|', $subMenuLink);
if(!commonModel::hasPriv($subMenuModule, $subMenuMethod)) continue;
if(empty($dropTitle)) $dropTitle = $subMenuName;
$active = '';
if($moduleName == $subMenuModule and $methodName == $subMenuMethod)
{
$active = "class='active'";
$dropTitle = $subMenuName;
}
$replace .= "<li $active>" . html::a(helper::createLink($subMenuModule, $subMenuMethod, sprintf($subMenuParams, $projectID)), $subMenuName) . '</li>';
if($active) $hasActive = true;
}
$replace .= '</ul>';
$replace = "<a data-toggle='dropdown'>$dropTitle <span class='caret'></span></a>" . $replace;
$this->lang->project->menu->$key['class'] = 'dropdown';
if($hasActive) $this->lang->project->menu->$key['class'] .= ' active';
}
common::setMenuVars($this->lang->project->menu, $key, $replace);
}
}