diff --git a/module/block/control.php b/module/block/control.php index 97b8c240ed..76b685e7a1 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -205,16 +205,17 @@ class block extends control * * @param string $module * @param string $type + * @param int $projectID * @access public * @return void */ - public function dashboard($module, $type = '') + public function dashboard($module, $type = '', $projectID = 0) { if($this->loadModel('user')->isLogon()) $this->session->set('blockModule', $module); $blocks = $this->block->getBlockList($module, $type); $commonField = 'common'; - if($module == 'project') + if($module == 'project' and $projectID) { $project = $this->loadModel('project')->getByID($this->session->PRJ); $commonField = $project->model . 'common'; diff --git a/module/branch/control.php b/module/branch/control.php index 2606058728..f44b5ef748 100644 --- a/module/branch/control.php +++ b/module/branch/control.php @@ -20,11 +20,7 @@ class branch extends control */ public function manage($productID) { - $this->lang->product->switcherMenu = $this->loadModel('product')->getSwitcher($productID); - - $moduleIndex = array_search('branch', $this->lang->noMenuModule); - if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]); - $this->lang->branch->menu = $this->lang->product->setMenu; + $this->loadModel('product')->setMenu($productID); if($_POST) { @@ -33,8 +29,6 @@ class branch extends control } $products = $this->loadModel('product')->getPairs('nocode'); - $this->product->setMenu($products, $productID); - $position[] = html::a($this->createLink('product', 'browse', "productID=$productID"), zget($products, $productID)); $position[] = $this->lang->branch->manage; diff --git a/module/bug/control.php b/module/bug/control.php index 86eecab27e..06bd85aef6 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -293,7 +293,7 @@ class bug extends control $extras = str_replace(array(',', ' '), array('&', ''), $extras); parse_str($extras, $output); - if(isset($output['executionID'])) commonModel::setAppObjectID('execution', $output['executionID']); + if(isset($output['executionID'])) commonModel::setMenuVars('execution', $output['executionID']); foreach($output as $paramKey => $paramValue) { @@ -912,8 +912,8 @@ class bug extends control $this->loadModel('my')->setMenu(); $moduleIndex = array_search('bug', $this->lang->noMenuModule); if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]); - $this->lang->task->menu = $this->lang->my->workMenu; - $this->lang->my->menu->myWork['subModule'] = 'bug'; + $this->lang->task->menu = $this->lang->my->menu->work; + $this->lang->my->menu->work['subModule'] = 'bug'; $this->view->position[] = html::a($this->createLink('my', 'bug'), $this->lang->my->bug); $this->view->title = "BUG" . $this->lang->bug->batchEdit; diff --git a/module/bug/js/batchedit.js b/module/bug/js/batchedit.js index 5d2884a08d..26a3876963 100644 --- a/module/bug/js/batchedit.js +++ b/module/bug/js/batchedit.js @@ -1,7 +1,7 @@ /** * Set duplicate field. - * - * @param string $resolution + * + * @param string $resolution * @access public * @return void */ @@ -68,3 +68,8 @@ $(document).on('change', 'select', function() $(this).trigger("change"); } }) + +$(function() +{ + $('#subNavbar li[data-id="bug"]').addClass('active'); +}); diff --git a/module/build/control.php b/module/build/control.php index aa06d03e04..0db63601c0 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -40,14 +40,23 @@ class build extends control if($this->app->openApp == 'project') { - $this->project->setMenu($projectID); + $model = $this->dao->select('model')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch('model'); + $this->lang->project->menu = $this->lang->$model->menu; + $this->lang->project->menuOrder = $this->lang->$model->menuOrder; + commonModel::setMenuVars('project', $projectID); + $executions = $this->execution->getPairs($projectID); + $executionID = isset($executions[$this->session->executionID]) ? $this->session->executionID : key($executions); + $this->session->set('executionID', 0); + $this->session->set('PRJ', $projectID); } elseif($this->app->openApp == 'execution') { - $executions = $this->execution->getPairs($projectID); - $executionID = $executionID == 0 ? key($executions) : $executionID; + $execution = $this->execution->getByID($executionID); + $executions = $this->execution->getPairs($execution->project); $this->execution->setMenu($executions, $executionID); + + $this->session->set('PRJ', $execution->project); } $productGroups = $this->execution->getProducts($executionID); @@ -103,6 +112,14 @@ class build extends control $this->loadModel('product'); $build = $this->build->getById((int)$buildID); + if($this->app->openApp == 'project') + { + $model = $this->dao->select('model')->from(TABLE_PROJECT)->where('id')->eq($build->project)->fetch('model'); + $this->lang->project->menu = $this->lang->$model->menu; + $this->lang->project->menuOrder = $this->lang->$model->menuOrder; + commonModel::setMenuVars('project', $build->project); + } + /* Set menu. */ $this->execution->setMenu($this->execution->getPairs($build->project), $build->execution); @@ -164,10 +181,19 @@ class build extends control */ public function view($buildID, $type = 'story', $link = 'false', $param = '', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 100, $pageID = 1) { + $build = $this->build->getByID((int)$buildID, true); if(!$build) die(js::error($this->lang->notFound) . js::locate('back')); $this->session->PRJ = $build->project; + if($this->app->openApp == 'project') + { + $model = $this->dao->select('model')->from(TABLE_PROJECT)->where('id')->eq($build->project)->fetch('model'); + $this->lang->project->menu = $this->lang->$model->menu; + $this->lang->project->menuOrder = $this->lang->$model->menuOrder; + commonModel::setMenuVars('project', $build->project); + } + /* Set session and load modules. */ if($type == 'story')$this->session->set('storyList', $this->app->getURI(true)); if($type == 'bug') $this->session->set('bugList', $this->app->getURI(true)); @@ -199,7 +225,7 @@ class build extends control foreach($stages as $storyID => $stage)$stories[$storyID]->stage = $stage; /* Set menu. */ - commonModel::setAppObjectID('execution', $build->execution); + commonModel::setMenuVars('execution', $build->execution); $executions = $this->loadModel('execution')->getPairs($this->session->PRJ, 'all', 'empty'); $this->view->title = "BUILD #$build->id $build->name - " . $executions[$build->execution]; @@ -550,7 +576,7 @@ class build extends control if($browseType == 'bySearch') { - $allBugs = $this->bug->getBySearch($build->product, $build->branch, $queryID, 'id_desc', $build->bugs, $pager); + $allBugs = $this->bug->getBySearch($build->product, $build->branch, $queryID, 'id_desc', $build->bugs, $pager, $build->project); } else { diff --git a/module/common/lang/common.php b/module/common/lang/common.php index da2c1165df..359d698891 100644 --- a/module/common/lang/common.php +++ b/module/common/lang/common.php @@ -9,6 +9,7 @@ $lang->project = new stdclass(); $lang->scrum = new stdclass(); $lang->waterfall = new stdclass(); $lang->execution = new stdclass(); +$lang->story = new stdclass(); $lang->release = new stdclass(); $lang->branch = new stdclass(); $lang->productplan = new stdclass(); @@ -62,6 +63,14 @@ $lang->team = new stdclass(); $lang->automation = new stdclass(); $lang->personnel = new stdclass(); $lang->mail = new stdclass(); +$lang->testsuite = new stdclass(); +$lang->caselib = new stdclass(); +$lang->ci = new stdclass(); +$lang->datatable = new stdclass(); +$lang->tree = new stdclass(); +$lang->api = new stdclass(); +$lang->file = new stdclass(); +$lang->misc = new stdclass(); $lang->projectrelease = new stdclass(); $lang->projectstory = new stdclass(); diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php index bda0f0167d..c72588101b 100644 --- a/module/common/lang/menu.php +++ b/module/common/lang/menu.php @@ -36,6 +36,7 @@ $lang->mainNav->menuOrder[45] = 'admin'; /* My menu. */ $lang->my->menu = new stdclass(); $lang->my->menu->index = array('link' => "$lang->dashboard|my|index"); +$lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'subModule' => 'todo', 'alias' => 'todo'); $lang->my->menu->work = array('link' => "{$lang->my->work}|my|work|mode=task"); if($config->systemMode == 'new') $lang->my->menu->project = array('link' => "{$lang->project->common}|my|project|"); $lang->my->menu->execution = array('link' => "{$lang->execution->common}|my|execution|type=undone"); @@ -46,14 +47,15 @@ $lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts| /* My menu order. */ $lang->my->menuOrder[5] = 'index'; -$lang->my->menuOrder[10] = 'work'; -$lang->my->menuOrder[15] = 'project'; -$lang->my->menuOrder[20] = 'execution'; -$lang->my->menuOrder[25] = 'contribute'; -$lang->my->menuOrder[30] = 'score'; -$lang->my->menuOrder[35] = 'dynamic'; -$lang->my->menuOrder[40] = 'follow'; -$lang->my->menuOrder[45] = 'contacts'; +$lang->my->menuOrder[10] = 'calendar'; +$lang->my->menuOrder[15] = 'work'; +$lang->my->menuOrder[20] = 'project'; +$lang->my->menuOrder[25] = 'execution'; +$lang->my->menuOrder[30] = 'contribute'; +$lang->my->menuOrder[35] = 'score'; +$lang->my->menuOrder[40] = 'dynamic'; +$lang->my->menuOrder[45] = 'follow'; +$lang->my->menuOrder[50] = 'contacts'; $lang->my->menu->work['subMenu'] = new stdclass(); $lang->my->menu->work['subMenu']->task = "{$lang->task->common}|my|work|mode=task"; @@ -63,6 +65,13 @@ $lang->my->menu->work['subMenu']->bug = "{$lang->bug->common}|my|work|mode= $lang->my->menu->work['subMenu']->testcase = "{$lang->testcase->common}|my|work|mode=testcase&type=assigntome"; $lang->my->menu->work['subMenu']->testtask = "{$lang->testtask->common}|my|work|mode=testtask&type=wait"; +$lang->my->menu->work['menuOrder'][5] = 'task'; +$lang->my->menu->work['menuOrder'][10] = 'requirement'; +$lang->my->menu->work['menuOrder'][15] = 'story'; +$lang->my->menu->work['menuOrder'][20] = 'bug'; +$lang->my->menu->work['menuOrder'][25] = 'testcase'; +$lang->my->menu->work['menuOrder'][30] = 'testtask'; + $lang->my->menu->contribute['subMenu'] = new stdclass(); $lang->my->menu->contribute['subMenu']->task = "{$lang->task->common}|my|contribute|mode=task"; if($config->URAndSR) $lang->my->menu->contribute['subMenu']->requirement = "$lang->URCommon|my|contribute|mode=requirement"; @@ -131,7 +140,7 @@ $lang->product->menuOrder[65] = 'all'; $lang->product->menu->settings['subMenu'] = new stdclass(); $lang->product->menu->settings['subMenu']->view = array('link' => "{$lang->overview}|product|view|productID=%s", 'alias' => 'edit'); $lang->product->menu->settings['subMenu']->module = array('link' => "{$lang->module}|tree|browse|product=%s&view=story", 'subModule' => 'tree'); -// $lang->product->menu->settings['subMenu']->branch = array('link' => "@branch@|branch|manage|product=%s", 'subModule' => 'branch'); +$lang->product->menu->settings['subMenu']->branch = array('link' => "@branch@|branch|manage|product=%s", 'subModule' => 'branch'); $lang->product->menu->settings['subMenu']->whitelist = array('link' => "{$lang->whitelist}|product|whitelist|product=%s", 'subModule' => 'personnel'); $lang->product->dividerMenu = $config->URAndSR ? ',requirement,set,' : ',track,set,'; @@ -380,14 +389,14 @@ $lang->company->menuOrder[30] = 'addUser'; /* Admin menu. */ $lang->admin->menu = new stdclass(); -$lang->admin->menu->index = array('link' => "$lang->indexPage|admin|index", 'alias' => 'register,certifytemail,certifyztmobile,ztcompany', 'exclude' => 'admin-safe'); +$lang->admin->menu->index = array('link' => "$lang->indexPage|admin|index", 'alias' => 'register,certifytemail,certifyztmobile,ztcompany'); $lang->admin->menu->company = array('link' => "{$lang->personnel->common}|company|browse|", 'subModule' => ',user,dept,group,'); $lang->admin->menu->model = array('link' => "$lang->model|custom|browsestoryconcept|", 'subModule' => 'holiday'); $lang->admin->menu->custom = array('link' => "{$lang->custom->common}|custom|index", 'exclude' => 'custom-timezone'); $lang->admin->menu->extension = array('link' => "{$lang->extension->common}|extension|browse", 'subModule' => 'extension'); $lang->admin->menu->dev = array('link' => "$lang->redev|dev|api", 'alias' => 'db', 'subModule' => 'dev,editor,entry'); $lang->admin->menu->message = array('link' => "{$lang->message->common}|message|index", 'subModule' => 'message,mail,webhook'); -$lang->admin->menu->system = array('link' => "{$lang->admin->system}|backup|index", 'subModule' => 'cron,backup,action,search,admin'); +$lang->admin->menu->system = array('link' => "{$lang->admin->system}|backup|index", 'subModule' => 'cron,backup,action,search,admin', 'exclude' => 'admin-index'); /* Admin menu order. */ $lang->admin->menuOrder[5] = 'index'; @@ -438,7 +447,6 @@ $lang->subject->menu->storyConcept = array('link' => "{$lang->subject->storyConc $lang->system = new stdclass(); $lang->system->menu = new stdclass(); $lang->system->menu->team = array('link' => "{$lang->team->common}|my|team|", 'subModule' => 'user'); -$lang->system->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'subModule' => 'todo', 'alias' => 'todo'); $lang->system->menu->dynamic = array('link' => "$lang->dynamic|company|dynamic|"); $lang->system->menu->view = array('link' => "{$lang->company->common}|company|view"); diff --git a/module/common/model.php b/module/common/model.php index f40446bb68..5f0a4d1983 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -125,7 +125,7 @@ class commonModel extends model public function setOpenApp() { $openApp = $this->app->openApp; - if($this->lang->navGroup->$openApp) + if(isset($this->lang->navGroup->$openApp)) { $this->app->openApp = $this->lang->navGroup->$openApp; } @@ -665,7 +665,7 @@ class commonModel extends model $exclude = isset($menuItem->exclude) ? $menuItem->exclude : ''; $active = ''; - if($menuItem->name == $currentModule and strpos(",$exclude,", ",$currentMethod,") === false) + if($menuItem->name == $currentModule and strpos(",$exclude,", ",$currentModule-$currentMethod,") === false) { $activeMenu = $menuItem->name; $active = 'active'; @@ -789,8 +789,6 @@ class commonModel extends model $openApp = $app->openApp; - self::getModuleMenu($activeMenu); - if(!isset($lang->$openApp->menu)) { echo "