* code for task #69707.
This commit is contained in:
@@ -207,7 +207,7 @@ $lang->scrum->menu->index = array('link' => "{$lang->dashboard}|project|inde
|
||||
$lang->scrum->menu->execution = array('link' => "$lang->executionCommon|project|execution|status=all&projectID=%s", 'exclude' => 'execution-testreport', 'subModule' => 'task');
|
||||
$lang->scrum->menu->story = array('link' => "$lang->SRCommon|projectstory|story|projectID=%s", 'subModule' => 'projectstory,tree', 'alias' => 'story,track');
|
||||
$lang->scrum->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=project&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport,execution', 'alias' => 'bug,testtask,testcase,testreport', 'exclude' => 'execution-create,execution-batchedit');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport', 'exclude' => 'execution-create,execution-batchedit');
|
||||
$lang->scrum->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->scrum->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
|
||||
$lang->scrum->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
|
||||
@@ -377,6 +377,34 @@ $lang->execution->menu->settings['subMenu']->whitelist = array('link' => "$lang-
|
||||
|
||||
$lang->execution->dividerMenu = ',story,build,';
|
||||
|
||||
$lang->noSprint = new stdclass();
|
||||
$lang->noSprint->menu = new stdclass();
|
||||
$lang->noSprint->menu->task = $lang->execution->menu->task;
|
||||
$lang->noSprint->menu->kanban = $lang->execution->menu->kanban;
|
||||
$lang->noSprint->menu->burn = $lang->execution->menu->burn;
|
||||
$lang->noSprint->menu->view = $lang->execution->menu->view;
|
||||
$lang->noSprint->menu->story = $lang->execution->menu->story;
|
||||
$lang->noSprint->menu->qa = $lang->scrum->menu->qa;
|
||||
$lang->noSprint->menu->devops = $lang->scrum->menu->devops;
|
||||
$lang->noSprint->menu->doc = $lang->scrum->menu->doc;
|
||||
$lang->noSprint->menu->build = $lang->scrum->menu->build;
|
||||
$lang->noSprint->menu->dynamic = $lang->scrum->menu->dynamic;
|
||||
$lang->noSprint->menu->settings = $lang->scrum->menu->settings;
|
||||
|
||||
$lang->noSprint->dividerMenu = ',story,build,';
|
||||
|
||||
$lang->noSprint->menuOrder[5] = 'task';
|
||||
$lang->noSprint->menuOrder[10] = 'kanban';
|
||||
$lang->noSprint->menuOrder[15] = 'burn';
|
||||
$lang->noSprint->menuOrder[20] = 'view';
|
||||
$lang->noSprint->menuOrder[25] = 'story';
|
||||
$lang->noSprint->menuOrder[30] = 'qa';
|
||||
$lang->noSprint->menuOrder[35] = 'devops';
|
||||
$lang->noSprint->menuOrder[40] = 'doc';
|
||||
$lang->noSprint->menuOrder[45] = 'build';
|
||||
$lang->noSprint->menuOrder[50] = 'dynamic';
|
||||
$lang->noSprint->menuOrder[55] = 'settings';
|
||||
|
||||
/* QA menu.*/
|
||||
$lang->qa->menu = new stdclass();
|
||||
$lang->qa->menu->index = array('link' => "$lang->dashboard|qa|index");
|
||||
|
||||
@@ -3402,7 +3402,7 @@ EOD;
|
||||
* @param int $objectID
|
||||
* @param array $params
|
||||
*/
|
||||
static private function setMenuVarsEx($menu, $objectID, $params = array())
|
||||
static public function setMenuVarsEx($menu, $objectID, $params = array())
|
||||
{
|
||||
if(is_array($menu))
|
||||
{
|
||||
|
||||
@@ -9,6 +9,9 @@ $.initSidebar();
|
||||
</main><?php /* end '#wrap' in 'header.html.php'. */ ?>
|
||||
<div id="noticeBox"><?php if($config->vision != 'lite') echo $this->loadModel('score')->getNotice(); ?></div>
|
||||
<script>
|
||||
<?php if(isset($this->config->executionNavGroup)):?>
|
||||
parent.navGroup.execution = '<?php echo $this->config->executionNavGroup?>';
|
||||
<?php endif;?>
|
||||
<?php $this->app->loadConfig('message');?>
|
||||
<?php if($config->message->browser->turnon):?>
|
||||
/* Alert got messages. */
|
||||
|
||||
@@ -122,6 +122,8 @@ class executionModel extends model
|
||||
|
||||
$this->lang->switcherMenu = $this->getSwitcher($executionID, $this->app->rawModule, $this->app->rawMethod);
|
||||
common::setMenuVars('execution', $executionID);
|
||||
|
||||
$this->loadModel('project')->setNoSprintMenu($executionID);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,6 +31,9 @@ $config->project->sortFields->end = 'end';
|
||||
$config->project->sortFields->status = 'status';
|
||||
$config->project->sortFields->budget = 'budget';
|
||||
|
||||
$config->project->noSprint['project'] = ',qa,devops,doc,build,dynamic,settings,';
|
||||
$config->project->noSprint['execution'] = ',task,kanban,burn,view,story,';
|
||||
|
||||
global $lang;
|
||||
$config->project->datatable = new stdclass();
|
||||
$config->project->datatable->defaultField = array('id', 'name', 'PM', 'status', 'begin', 'end', 'budget', 'progress', 'actions');
|
||||
|
||||
@@ -304,6 +304,17 @@ class project extends control
|
||||
$this->project->setMenu($projectID);
|
||||
|
||||
$project = $this->project->getByID($projectID);
|
||||
|
||||
/* Locate to task when set no execution. */
|
||||
if($project->noSprint)
|
||||
{
|
||||
$executions = $this->loadModel('execution')->getList($project->id);
|
||||
foreach($executions as $execution)
|
||||
{
|
||||
if($execution->noSprint) $this->locate($this->createLink('execution', 'task', "executionID={$execution->id}"));
|
||||
}
|
||||
}
|
||||
|
||||
if(empty($project) || $project->type != 'project') return print(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
if(!$projectID) $this->locate($this->createLink('project', 'browse'));
|
||||
|
||||
@@ -2472,9 +2472,96 @@ class projectModel extends model
|
||||
if(isset($project->acl) and $project->acl == 'open') unset($this->lang->project->menu->settings['subMenu']->whitelist);
|
||||
|
||||
common::setMenuVars('project', $objectID);
|
||||
|
||||
$this->setNoSprintMenu($objectID);
|
||||
return $objectID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set noSprint menu.
|
||||
*
|
||||
* @param int $objectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setNoSprintMenu($objectID)
|
||||
{
|
||||
$this->config->executionNavGroup = 'execution';
|
||||
|
||||
$project = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($objectID)->andWhere('noSprint')->eq(1)->fetch();
|
||||
if(empty($project)) return;
|
||||
if($project->type != 'project' and $project->type != 'sprint') return;
|
||||
|
||||
if($project->type == 'project')
|
||||
{
|
||||
$projectID = $project->id;
|
||||
$executionID = $this->dao->select('*')->from(TABLE_EXECUTION)
|
||||
->where('project')->eq($projectID)
|
||||
->andWhere('noSprint')->eq(1)
|
||||
->andWhere('type')->eq('sprint')
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetch('id');
|
||||
}
|
||||
elseif($project->type == 'sprint')
|
||||
{
|
||||
$executionID = $project->id;
|
||||
$projectID = $this->dao->select('*')->from(TABLE_PROJECT)
|
||||
->where('id')->eq($project->project)
|
||||
->andWhere('noSprint')->eq(1)
|
||||
->andWhere('type')->eq('project')
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetch('id');
|
||||
}
|
||||
if(empty($projectID) or empty($executionID)) return;
|
||||
|
||||
$moduleName = $this->app->rawModule;
|
||||
$methodName = $this->app->rawMethod;
|
||||
|
||||
$navGroup = zget($this->lang->navGroup, $moduleName);
|
||||
|
||||
$this->app->tab = 'project';
|
||||
$_COOKIE['tab'] = 'project';
|
||||
|
||||
$this->lang->navGroup->$moduleName = 'project';
|
||||
$this->lang->$navGroup->menu = $this->lang->noSprint->menu;
|
||||
$this->lang->$navGroup->menuOrder = $this->lang->noSprint->menuOrder;
|
||||
$this->lang->$navGroup->dividerMenu = $this->lang->noSprint->dividerMenu;
|
||||
|
||||
foreach($this->lang->$navGroup->menu as $label => $menu)
|
||||
{
|
||||
$objectID = 0;
|
||||
if(strpos($this->config->project->noSprint['project'], ",{$label},") !== false) $objectID = $projectID;
|
||||
if(strpos($this->config->project->noSprint['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);
|
||||
}
|
||||
}
|
||||
|
||||
$this->config->executionNavGroup = 'project';
|
||||
|
||||
/* If objectID is set, cannot use homeMenu. */
|
||||
unset($this->lang->$navGroup->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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the project model can be changed.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user