* finish task #3915,3917,3955.
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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. */
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user