* Split setNoMultipleMenu method.
This commit is contained in:
+25
-67
@@ -2321,6 +2321,7 @@ class projectModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置项目的导航菜单。
|
||||
* Set menu of project module.
|
||||
*
|
||||
* @param int $projectID
|
||||
@@ -2352,34 +2353,25 @@ class projectModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置未启用迭代的菜单。
|
||||
* Set multi-scrum menu.
|
||||
*
|
||||
* @param int $objectID
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
* @return bool
|
||||
*/
|
||||
public function setNoMultipleMenu($objectID)
|
||||
public function setNoMultipleMenu(int $projectID): bool
|
||||
{
|
||||
$moduleName = $this->app->rawModule;
|
||||
$methodName = $this->app->rawMethod;
|
||||
|
||||
$this->session->set('multiple', true);
|
||||
|
||||
$project = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($objectID)->andWhere('multiple')->eq('0')->fetch();
|
||||
if(empty($project)) return;
|
||||
|
||||
if(!in_array($project->type, array('project', 'sprint', 'kanban'))) return;
|
||||
$project = $this->projectTao->fetchProjectInfo($projectID);
|
||||
if(empty($project) || $project->multiple) return false;
|
||||
if(!in_array($project->type, array('project', 'sprint', 'kanban'))) return false;
|
||||
|
||||
if($project->type == 'project')
|
||||
{
|
||||
$model = $project->model;
|
||||
$projectID = $project->id;
|
||||
$executionID = $this->dao->select('id')->from(TABLE_EXECUTION)
|
||||
->where('project')->eq($projectID)
|
||||
->andWhere('multiple')->eq('0')
|
||||
->andWhere('type')->in('kanban,sprint')
|
||||
->andWhere('deleted')->eq('0')
|
||||
->fetch('id');
|
||||
$executionID = $this->loadModel('execution')->getNoMultipleID($projectID);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2387,71 +2379,37 @@ class projectModel extends model
|
||||
$executionID = $project->id;
|
||||
$projectID = $project->project;
|
||||
}
|
||||
if(empty($projectID) or empty($executionID)) return;
|
||||
if(empty($projectID) || empty($executionID)) return false;
|
||||
|
||||
$this->session->set('project', $projectID, 'project');
|
||||
$this->session->set('multiple', false);
|
||||
|
||||
$navGroup = zget($this->lang->navGroup, $moduleName);
|
||||
$this->lang->$navGroup->menu = $this->lang->project->noMultiple->{$model}->menu;
|
||||
$this->lang->$navGroup->menuOrder = $this->lang->project->noMultiple->{$model}->menuOrder;
|
||||
$this->lang->$navGroup->dividerMenu = $this->lang->project->noMultiple->{$model}->dividerMenu;
|
||||
global $lang;
|
||||
$navGroup = zget($lang->navGroup, $this->app->rawModule);
|
||||
$lang->$navGroup->menu = $lang->project->noMultiple->{$model}->menu;
|
||||
$lang->$navGroup->menuOrder = $lang->project->noMultiple->{$model}->menuOrder;
|
||||
$lang->$navGroup->dividerMenu = $lang->project->noMultiple->{$model}->dividerMenu;
|
||||
|
||||
/* Single execution and has no product project menu. */
|
||||
if(!$project->hasProduct && !$project->multiple && !empty($this->config->URAndSR) && isset($this->lang->$navGroup->menu->storyGroup))
|
||||
{
|
||||
$this->lang->$navGroup->menu->story = $this->lang->$navGroup->menu->storyGroup;
|
||||
$this->lang->$navGroup->menu->story['link'] = sprintf($this->lang->$navGroup->menu->storyGroup['link'], '%s', $projectID);
|
||||
$this->projectTao->setNavGroupMenu($navGroup, $executionID, $project);
|
||||
|
||||
$this->lang->$navGroup->menu->story['dropMenu']->story['link'] = sprintf($this->lang->$navGroup->menu->storyGroup['dropMenu']->story['link'], '%s', $projectID);
|
||||
$this->lang->$navGroup->menu->story['dropMenu']->requirement['link'] = sprintf($this->lang->$navGroup->menu->storyGroup['dropMenu']->requirement['link'], '%s', $projectID);
|
||||
}
|
||||
|
||||
if(isset($this->lang->$navGroup->menu->storyGroup)) unset($this->lang->$navGroup->menu->storyGroup);
|
||||
foreach($this->lang->$navGroup->menu as $label => $menu)
|
||||
{
|
||||
$objectID = 0;
|
||||
if(strpos($this->config->project->multiple['project'], ",{$label},") !== false) $objectID = $projectID;
|
||||
if(strpos($this->config->project->multiple['execution'], ",{$label},") !== false)
|
||||
{
|
||||
$objectID = $executionID;
|
||||
$this->lang->$navGroup->menu->{$label}['subModule'] = 'project';
|
||||
}
|
||||
|
||||
$this->lang->$navGroup->menu->$label = commonModel::setMenuVarsEx($menu, $objectID);
|
||||
if(isset($menu['subMenu']))
|
||||
{
|
||||
foreach($menu['subMenu'] as $key1 => $subMenu) $this->lang->$navGroup->menu->{$label}['subMenu']->$key1 = common::setMenuVarsEx($subMenu, $objectID);
|
||||
}
|
||||
|
||||
if(!isset($menu['dropMenu'])) continue;
|
||||
foreach($menu['dropMenu'] as $key2 => $dropMenu)
|
||||
{
|
||||
$this->lang->$navGroup->menu->{$label}['dropMenu']->$key2 = common::setMenuVarsEx($dropMenu, $objectID);
|
||||
|
||||
if(!isset($dropMenu['subMenu'])) continue;
|
||||
foreach($dropMenu['subMenu'] as $key3 => $subMenu) $this->lang->$navGroup->menu->{$label}['dropMenu']->$key3 = common::setMenuVarsEx($subMenu, $objectID);
|
||||
}
|
||||
}
|
||||
|
||||
/* If objectID is set, cannot use homeMenu. */
|
||||
unset($this->lang->project->homeMenu);
|
||||
$this->lang->switcherMenu = $this->getSwitcher($projectID, $moduleName, $methodName);
|
||||
$this->lang->project->menu = $this->lang->$navGroup->menu;
|
||||
$this->lang->project->menuOrder = $this->lang->$navGroup->menuOrder;
|
||||
$this->lang->project->dividerMenu = $this->lang->$navGroup->dividerMenu;
|
||||
$lang->project->menu = $lang->$navGroup->menu;
|
||||
$lang->project->menuOrder = $lang->$navGroup->menuOrder;
|
||||
$lang->project->dividerMenu = $lang->$navGroup->dividerMenu;
|
||||
|
||||
/* If projectID is set, cannot use homeMenu. */
|
||||
unset($lang->project->homeMenu);
|
||||
if(empty($project->hasProduct))
|
||||
{
|
||||
unset($this->lang->project->menu->settings['subMenu']->products);
|
||||
unset($lang->project->menu->settings['subMenu']->products);
|
||||
}
|
||||
else
|
||||
{
|
||||
unset($this->lang->project->menu->settings['subMenu']->module);
|
||||
unset($this->lang->project->menu->projectplan);
|
||||
unset($lang->project->menu->settings['subMenu']->module);
|
||||
unset($lang->project->menu->projectplan);
|
||||
}
|
||||
|
||||
$this->loadModel('common')->resetProjectPriv($projectID);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+54
-1
@@ -853,7 +853,7 @@ class projectTao extends projectModel
|
||||
protected function setMenuByProduct(int $projectID, int $hasProduct, string $model): bool
|
||||
{
|
||||
global $lang;
|
||||
if(!$hasProduct)
|
||||
if($hasProduct)
|
||||
{
|
||||
unset($lang->project->menu->projectplan);
|
||||
unset($lang->project->menu->settings['subMenu']->module);
|
||||
@@ -880,4 +880,57 @@ class projectTao extends projectModel
|
||||
if(!in_array($model, $this->config->project->scrumList)) unset($lang->project->menu->projectplan);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据访问模块的导航组设置菜单。
|
||||
* Set menu lang for module.
|
||||
*
|
||||
* @param string $navGroup
|
||||
* @param int $executionID
|
||||
* @param object $project
|
||||
* @access protected
|
||||
* @return bool
|
||||
*/
|
||||
protected function setNavGroupMenu(string $navGroup, int $executionID, object $project): bool
|
||||
{
|
||||
global $lang;
|
||||
/* Single execution and has no product project menu. */
|
||||
if(!$project->hasProduct && !$project->multiple && !empty($this->config->URAndSR) && isset($lang->$navGroup->menu->storyGroup))
|
||||
{
|
||||
$lang->$navGroup->menu->story = $lang->$navGroup->menu->storyGroup;
|
||||
$lang->$navGroup->menu->story['link'] = sprintf($lang->$navGroup->menu->storyGroup['link'], '%s', $project->id);
|
||||
|
||||
$lang->$navGroup->menu->story['dropMenu']->story['link'] = sprintf($lang->$navGroup->menu->storyGroup['dropMenu']->story['link'], '%s', $project->id);
|
||||
$lang->$navGroup->menu->story['dropMenu']->requirement['link'] = sprintf($lang->$navGroup->menu->storyGroup['dropMenu']->requirement['link'], '%s', $project->id);
|
||||
}
|
||||
|
||||
if(isset($lang->$navGroup->menu->storyGroup)) unset($lang->$navGroup->menu->storyGroup);
|
||||
foreach($lang->$navGroup->menu as $label => $menu)
|
||||
{
|
||||
$objectID = 0;
|
||||
if(strpos($this->config->project->multiple['project'], ",{$label},") !== false) $objectID = $project->id;
|
||||
if(strpos($this->config->project->multiple['execution'], ",{$label},") !== false)
|
||||
{
|
||||
$objectID = $executionID;
|
||||
$lang->$navGroup->menu->{$label}['subModule'] = 'project';
|
||||
}
|
||||
|
||||
$lang->$navGroup->menu->$label = commonModel::setMenuVarsEx($menu, $objectID);
|
||||
if(isset($menu['subMenu']))
|
||||
{
|
||||
foreach($menu['subMenu'] as $key1 => $subMenu) $lang->$navGroup->menu->{$label}['subMenu']->$key1 = common::setMenuVarsEx($subMenu, $objectID);
|
||||
}
|
||||
|
||||
if(!isset($menu['dropMenu'])) continue;
|
||||
foreach($menu['dropMenu'] as $key2 => $dropMenu)
|
||||
{
|
||||
$lang->$navGroup->menu->{$label}['dropMenu']->$key2 = common::setMenuVarsEx($dropMenu, $objectID);
|
||||
|
||||
if(!isset($dropMenu['subMenu'])) continue;
|
||||
foreach($dropMenu['subMenu'] as $key3 => $subMenu) $lang->$navGroup->menu->{$label}['dropMenu']->$key3 = common::setMenuVarsEx($subMenu, $objectID);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user