From a7b92bcd60549171f5470c57f04a57e0ed198ea7 Mon Sep 17 00:00:00 2001 From: zhujinyong Date: Fri, 14 Jun 2013 03:08:45 +0000 Subject: [PATCH] * code for task#1373. --- module/task/control.php | 2 +- module/tree/model.php | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/module/task/control.php b/module/task/control.php index 8ddd2a6bf3..a7159804b3 100644 --- a/module/task/control.php +++ b/module/task/control.php @@ -95,7 +95,7 @@ class task extends control $stories = $this->story->getProjectStoryPairs($projectID); $members = $this->project->getTeamMemberPairs($projectID, 'nodeleted'); $contactLists = $this->user->getContactLists($this->app->user->account, 'withnote'); - $moduleOptionMenu = $this->tree->getOptionMenu($projectID, $viewType = 'task'); + $moduleOptionMenu = $this->tree->getTaskOptionMenu($projectID, $viewType = 'task'); $title = $project->name . $this->lang->colon . $this->lang->task->create; $position[] = html::a($taskLink, $project->name); diff --git a/module/tree/model.php b/module/tree/model.php index 5977587055..a60b4ac1d6 100644 --- a/module/tree/model.php +++ b/module/tree/model.php @@ -171,6 +171,7 @@ class treeModel extends model } $treeMenu = array(); $lastMenu[] = '/'; + $projectModules = $this->getProjectModules($rootID); foreach($products as $id => $product) { $modules = $this->dao->select('*')->from(TABLE_MODULE) @@ -180,6 +181,7 @@ class treeModel extends model ->fetchAll('id'); foreach($modules as $module) { + if(!isset($projectModules[$module->id])) continue; $parentModules = explode(',', $module->path); $moduleName = '/' . $product; foreach($parentModules as $parentModuleID) @@ -303,6 +305,9 @@ class treeModel extends model if($startModule) $startModulePath = $startModule->path . '%'; } + $manage = $userFunc[1] == 'createTaskManageLink' ? true : false; + if(!$manage) $projectModules = $this->getProjectModules($rootID, true); + foreach($products as $id => $product) { if($userFunc[1] == 'createTaskManageLink') @@ -324,6 +329,7 @@ class treeModel extends model $stmt = $this->dbh->query($query); while($module = $stmt->fetch()) { + if(!$manage and !isset($projectModules[$module->id])) continue; $linkHtml = call_user_func($userFunc, $rootID, $id, $module, $extra); if(isset($treeMenu[$module->id]) and !empty($treeMenu[$module->id])) @@ -352,6 +358,40 @@ class treeModel extends model return $menu; } + /** + * Get project modules. + * + * @param int $projectID + * @access public + * @return array + */ + public function getProjectModules($projectID, $parent = false) + { + $projectModules = array(); + $field = $parent ? 'path' : 'id'; + $paths = $this->dao->select('t3.' . $field) + ->from(TABLE_PROJECTSTORY)->alias('t1') + ->leftJoin(TABLE_STORY)->alias('t2') + ->on('t1.story = t2.id') + ->leftJoin(TABLE_MODULE)->alias('t3') + ->on('t2.module = t3.id') + ->where('t1.project')->eq($projectID) + ->fetchPairs(); + $paths += $this->dao->select($field)->from(TABLE_MODULE) + ->where('root')->eq($projectID) + ->andWhere('type')->eq('task') + ->fetchPairs(); + foreach($paths as $path) + { + $modules = explode(',', $path); + foreach($modules as $module) + { + $projectModules[$module] = $module; + } + } + return $projectModules; + } + /** * Get the tree menu of product document library. *