+
+
+ custom->flow?> +
+
+ +
+ +
+ + + diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 05c1a62f35..b3cb5ddce8 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -319,7 +319,6 @@ $lang->resource->product->edit = 'edit'; $lang->resource->product->batchEdit = 'batchEdit'; $lang->resource->product->delete = 'delete'; $lang->resource->product->roadmap = 'roadmap'; -$lang->resource->product->doc = 'doc'; $lang->resource->product->dynamic = 'dynamic'; $lang->resource->product->project = 'project'; $lang->resource->product->dashboard = 'dashboard'; @@ -341,19 +340,18 @@ $lang->product->methodOrder[20] = 'edit'; $lang->product->methodOrder[25] = 'batchEdit'; $lang->product->methodOrder[35] = 'delete'; $lang->product->methodOrder[40] = 'roadmap'; -//$lang->product->methodOrder[45] = 'doc'; -$lang->product->methodOrder[50] = 'dynamic'; -$lang->product->methodOrder[55] = 'project'; -$lang->product->methodOrder[60] = 'dashboard'; -$lang->product->methodOrder[65] = 'close'; -$lang->product->methodOrder[70] = 'updateOrder'; -$lang->product->methodOrder[75] = 'all'; -$lang->product->methodOrder[80] = 'manageLine'; -$lang->product->methodOrder[85] = 'build'; -$lang->product->methodOrder[90] = 'export'; -$lang->product->methodOrder[95] = 'whitelist'; -$lang->product->methodOrder[100] = 'addWhitelist'; -$lang->product->methodOrder[105] = 'unbindWhielist'; +$lang->product->methodOrder[45] = 'dynamic'; +$lang->product->methodOrder[50] = 'project'; +$lang->product->methodOrder[55] = 'dashboard'; +$lang->product->methodOrder[60] = 'close'; +$lang->product->methodOrder[65] = 'updateOrder'; +$lang->product->methodOrder[70] = 'all'; +$lang->product->methodOrder[75] = 'manageLine'; +$lang->product->methodOrder[80] = 'build'; +$lang->product->methodOrder[85] = 'export'; +$lang->product->methodOrder[90] = 'whitelist'; +$lang->product->methodOrder[95] = 'addWhitelist'; +$lang->product->methodOrder[100] = 'unbindWhielist'; /* Branch. */ $lang->resource->branch = new stdclass(); @@ -989,8 +987,8 @@ $lang->job->methodOrder[25] = 'exec'; $lang->resource->doc = new stdclass(); $lang->resource->doc->index = 'index'; $lang->resource->doc->browse = 'browse'; -$lang->resource->doc->createlib = 'createLib'; -$lang->resource->doc->editlib = 'editLib'; +$lang->resource->doc->createlib = 'createlib'; +$lang->resource->doc->editlib = 'editlib'; $lang->resource->doc->deleteLib = 'deleteLib'; $lang->resource->doc->create = 'create'; $lang->resource->doc->view = 'view'; @@ -1006,9 +1004,9 @@ $lang->resource->doc->collect = 'collect'; $lang->doc->methodOrder[0] = 'index'; $lang->doc->methodOrder[5] = 'browse'; -$lang->doc->methodOrder[10] = 'createLib'; +$lang->doc->methodOrder[10] = 'createlib'; $lang->doc->methodOrder[15] = 'editLib'; -$lang->doc->methodOrder[20] = 'deleteLib'; +$lang->doc->methodOrder[20] = 'deletelib'; $lang->doc->methodOrder[25] = 'create'; $lang->doc->methodOrder[30] = 'view'; $lang->doc->methodOrder[35] = 'edit'; diff --git a/module/index/css/index.css b/module/index/css/index.css index 0e3f415684..635d256e32 100644 --- a/module/index/css/index.css +++ b/module/index/css/index.css @@ -87,7 +87,7 @@ body.menu-hide {padding-left: 0;} #searchbox .dropdown-menu > li {display: none} #searchbox .dropdown-menu > li.search-type-all {width: 100%; display: block;} #searchbox .dropdown-menu > li:hover {position: relative;} -#searchbox .dropdown-menu.show-quick-go.with-active {position: absolute; top: -395px; max-height: 392px; padding-top: 30px;} +#searchbox .dropdown-menu.show-quick-go.with-active {position: absolute; top: -365px; max-height: 362px; padding-top: 30px;} #searchbox .dropdown-menu.show-quick-go > li {display: block;} #searchbox .dropdown-menu.show-quick-go > li.active {width: 100%; position: absolute; top: 0; left: 0; right: 0;} #searchbox .dropdown-menu>li.active>a, #searchbox .dropdown-menu>li.selected>a { position: relative; color: #fff; background-color: #16a8f8;} diff --git a/module/product/control.php b/module/product/control.php index f370edb422..7024b2af20 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -908,7 +908,7 @@ class product extends control $this->view->extra = $extra; $this->view->products = $products; $this->view->projectID = $moduleGroup == 'project' ? $this->session->PRJ : 0; - $this->view->programs = $this->loadModel('program')->getPGMOption(); + $this->view->programs = $this->loadModel('program')->getPGMPairs(true); $this->view->openGroup = $moduleGroup; $this->display(); } diff --git a/module/product/lang/de.php b/module/product/lang/de.php index e4c55d4e42..1a2c6e5958 100644 --- a/module/product/lang/de.php +++ b/module/product/lang/de.php @@ -12,7 +12,6 @@ $lang->product->common = $lang->productCommon; $lang->product->index = $lang->productCommon . 'Home'; $lang->product->browse = 'Story Liste'; -$lang->product->product = "{$lang->productCommon} Liste"; $lang->product->dynamic = 'Verlauf'; $lang->product->view = 'Übersicht'; $lang->product->edit = "{$lang->productCommon} bearbeiten"; diff --git a/module/product/lang/en.php b/module/product/lang/en.php index 621454ee9e..7d05e23914 100644 --- a/module/product/lang/en.php +++ b/module/product/lang/en.php @@ -12,7 +12,6 @@ $lang->product->common = $lang->productCommon; $lang->product->index = $lang->productCommon . ' Home'; $lang->product->browse = 'Story List'; -$lang->product->product = "{$lang->productCommon} List"; $lang->product->dynamic = 'Dynamics'; $lang->product->view = "{$lang->productCommon} Detail"; $lang->product->edit = "Edit {$lang->productCommon}"; diff --git a/module/product/lang/fr.php b/module/product/lang/fr.php index d043611d18..392420f382 100644 --- a/module/product/lang/fr.php +++ b/module/product/lang/fr.php @@ -12,7 +12,6 @@ $lang->product->common = $lang->productCommon; $lang->product->index = 'Accueil ' . $lang->productCommon; $lang->product->browse = 'Liste Stories'; -$lang->product->product = "Liste {$lang->productCommon}"; $lang->product->dynamic = 'Historique'; $lang->product->view = "{$lang->productCommon} Détail"; $lang->product->edit = "Editer {$lang->productCommon}"; diff --git a/module/product/lang/vi.php b/module/product/lang/vi.php index f06c1ccc78..49b81c8cb9 100644 --- a/module/product/lang/vi.php +++ b/module/product/lang/vi.php @@ -12,7 +12,6 @@ $lang->product->common = $lang->productCommon; $lang->product->index = 'Trang '.$lang->productCommon; $lang->product->browse = 'Danh sách câu chuyện'; -$lang->product->product = "{$lang->productCommon} List"; $lang->product->dynamic = 'Lịch sử'; $lang->product->view = "Chi tiết {$lang->productCommon}"; $lang->product->edit = "Sửa {$lang->productCommon}"; diff --git a/module/product/lang/zh-cn.php b/module/product/lang/zh-cn.php index dc24cf0507..3174f71f5c 100644 --- a/module/product/lang/zh-cn.php +++ b/module/product/lang/zh-cn.php @@ -12,8 +12,7 @@ $lang->product->common = $lang->productCommon . '视图'; $lang->product->index = $lang->productCommon . '主页'; $lang->product->browse = "{$lang->SRCommon}列表"; -$lang->product->product = "{$lang->productCommon}列表"; -$lang->product->dynamic = '产品动态'; +$lang->product->dynamic = $lang->productCommon . '动态'; $lang->product->view = "{$lang->productCommon}概况"; $lang->product->edit = "编辑{$lang->productCommon}"; $lang->product->batchEdit = '批量编辑'; diff --git a/module/product/lang/zh-tw.php b/module/product/lang/zh-tw.php index 9d660045cd..dd08ab4e79 100644 --- a/module/product/lang/zh-tw.php +++ b/module/product/lang/zh-tw.php @@ -12,7 +12,7 @@ $lang->product->common = $lang->productCommon . '視圖'; $lang->product->index = $lang->productCommon . '主頁'; $lang->product->browse = "{$lang->SRCommon}列表"; -$lang->product->dynamic = '產品動態'; +$lang->product->dynamic = $lang->productCommon . '動態'; $lang->product->view = "{$lang->productCommon}概況"; $lang->product->edit = "編輯{$lang->productCommon}"; $lang->product->batchEdit = '批量編輯'; diff --git a/module/product/model.php b/module/product/model.php index f973e75870..679d0236b4 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -887,7 +887,7 @@ class productModel extends model ->fetchAll('id'); /* Determine how to display the name of the program. */ - $programList = $this->loadModel('program')->getParentPairs(); + $programList = $this->loadModel('program')->getParentPairs('', 'noclosed'); foreach($projectList as $id => $project) $projectList[$id]->programName = $programList[$project->parent]; return $projectList; @@ -1542,18 +1542,19 @@ class productModel extends model } /** - * Create the link from module,method,extra + * Create the link from module,method,extra,branch. * * @param string $module * @param string $method - * @param mix $extra + * @param string $extra + * @param bool $branch * @access public * @return void */ public function getProductLink($module, $method, $extra, $branch = false) { $link = ''; - if(strpos('programplan,product,roadmap,bug,testcase,testtask,story,qa,testsuite,testreport,build,projectrelease,projectstory,caselib', $module) !== false) + if(strpos('programplan,product,roadmap,bug,testcase,testtask,story,qa,testsuite,testreport,build,projectrelease,projectstory', $module) !== false) { if($module == 'product' && $method == 'project') { diff --git a/module/product/view/view.html.php b/module/product/view/view.html.php index 723a77177f..673280e033 100644 --- a/module/product/view/view.html.php +++ b/module/product/view/view.html.php @@ -12,7 +12,8 @@ ?> -
> + +
>
diff --git a/module/program/control.php b/module/program/control.php index 4ec274b6d2..207470b4d3 100644 --- a/module/program/control.php +++ b/module/program/control.php @@ -110,6 +110,9 @@ class program extends control */ public function PGMProduct($programID = 0, $browseType = 'noclosed', $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1) { + $programID = $this->program->savePGMState($programID, $this->program->getPGMPairs()); + setCookie("lastPGM", $programID, $this->config->cookieLife, $this->config->webRoot, '', false, true); + $program = $this->program->getPGMByID($programID); if(empty($program) || $program->type != 'program') die(js::error($this->lang->notFound) . js::locate('back')); @@ -152,6 +155,7 @@ class program extends control public function PGMCreate($parentProgramID = 0) { $this->lang->navGroup->program = 'program'; + $parentProgram = $this->program->getPGMByID($parentProgramID); if($_POST) @@ -166,14 +170,14 @@ class program extends control $this->view->title = $this->lang->program->PGMCreate; $this->view->position[] = $this->lang->program->PGMCreate; - $this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst'); - $this->view->poUsers = $this->user->getPairs('noclosed|nodeleted|pofirst'); - $this->view->users = $this->user->getPairs('noclosed|nodeleted'); - $this->view->parentProgram = $parentProgram; - $this->view->parents = $this->program->getParentPairs(); - $this->view->PGMList = $this->program->getPGMList(); - $this->view->budgetUnitList = $this->program->getBudgetUnitList(); - $this->view->remainBudget = $this->program->getParentRemainBudget($parentProgram); + $this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst'); + $this->view->poUsers = $this->user->getPairs('noclosed|nodeleted|pofirst'); + $this->view->users = $this->user->getPairs('noclosed|nodeleted'); + $this->view->parentProgram = $parentProgram; + $this->view->parents = $this->program->getParentPairs(); + $this->view->PGMList = $this->program->getPGMList(); + $this->view->budgetUnitList = $this->program->getBudgetUnitList(); + $this->view->availableBudget = $this->program->getAvailableBudget($parentProgram); $this->display(); } @@ -189,9 +193,6 @@ class program extends control { $this->lang->navGroup->program = 'program'; - $program = $this->program->getPGMByID($programID); - $parentProgram = $program->parent ? $this->program->getPGMByID($program->parent) : ''; - if($_POST) { $changes = $this->program->PGMUpdate($programID); @@ -205,21 +206,23 @@ class program extends control $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inLink('PGMBrowse'))); } - $parents = $this->program->getParentPairs(); + $program = $this->program->getPGMByID($programID); + $parentProgram = $program->parent ? $this->program->getPGMByID($program->parent) : ''; + $parents = $this->program->getParentPairs(); unset($parents[$programID]); $this->view->title = $this->lang->program->PGMEdit; $this->view->position[] = $this->lang->program->PGMEdit; - $this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $program->PM); - $this->view->poUsers = $this->user->getPairs('noclosed|nodeleted|pofirst'); - $this->view->users = $this->user->getPairs('noclosed|nodeleted'); - $this->view->program = $program; - $this->view->parents = $parents; - $this->view->PGMList = $this->program->getPGMList(); - $this->view->budgetUnitList = $this->program->getBudgetUnitList(); - $this->view->parentProgram = $parentProgram; - $this->view->remainBudget = $this->program->getParentRemainBudget($parentProgram) + (float)$program->budget; + $this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $program->PM); + $this->view->poUsers = $this->user->getPairs('noclosed|nodeleted|pofirst'); + $this->view->users = $this->user->getPairs('noclosed|nodeleted'); + $this->view->program = $program; + $this->view->parents = $parents; + $this->view->PGMList = $this->program->getPGMList(); + $this->view->budgetUnitList = $this->program->getBudgetUnitList(); + $this->view->parentProgram = $parentProgram; + $this->view->availableBudget = $this->program->getAvailableBudget($parentProgram) + (float)$program->budget; $this->display(); } @@ -721,17 +724,17 @@ class program extends control } /** - * Ajax get parent remain budget. + * Ajax get available budget. * * @param int $parentProgramID * @access public * @return void */ - public function ajaxGetParentRemainBudget($parentProgramID) + public function ajaxGetAvailableBudget($parentProgramID) { - $parentProgram = $this->program->getPGMByID($parentProgramID); - $remainBudget = $this->program->getParentRemainBudget($parentProgram); - echo number_format($remainBudget, 2); + $parentProgram = $this->program->getPGMByID($parentProgramID); + $availableBudget = $this->program->getAvailableBudget($parentProgram); + echo number_format($availableBudget, 2); } /** @@ -892,8 +895,9 @@ class program extends control $acl = 'private'; $auth = 'extend'; - $products = array(); - $productPlans = array(); + $products = array(); + $productPlans = array(); + $parentProgram = $this->program->getPGMByID($programID); if($copyProjectID) { @@ -914,33 +918,31 @@ class program extends control } } - $parentProgram = $this->program->getPGMByID($programID); - $this->view->title = $this->lang->program->PRJCreate; $this->view->position[] = $this->lang->program->PRJCreate; - $this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst'); - $this->view->users = $this->user->getPairs('noclosed|nodeleted'); - $this->view->copyProjects = $this->program->getPRJPairsByModel(); - $this->view->products = $products; - $this->view->allProducts = array('0' => '') + $this->program->getPGMProductPairs($programID); - $this->view->productPlans = array('0' => '') + $productPlans; - $this->view->branchGroups = $this->loadModel('branch')->getByProducts(array_keys($products)); - $this->view->programID = $programID; - $this->view->model = $model; - $this->view->name = $name; - $this->view->code = $code; - $this->view->team = $team; - $this->view->acl = $acl; - $this->view->auth = $auth; - $this->view->whitelist = $whitelist; - $this->view->copyProjectID = $copyProjectID; - $this->view->from = $from; - $this->view->programList = $this->program->getParentPairs(); - $this->view->parentProgram = $parentProgram; - $this->view->URSRPairs = $this->loadModel('custom')->getURSRPairs(); - $this->view->remainBudget = $this->program->getParentRemainBudget($parentProgram); - $this->view->budgetUnitList = $this->program->getBudgetUnitList(); + $this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst'); + $this->view->users = $this->user->getPairs('noclosed|nodeleted'); + $this->view->copyProjects = $this->program->getPRJPairsByModel(); + $this->view->products = $products; + $this->view->allProducts = array('0' => '') + $this->program->getPGMProductPairs($programID); + $this->view->productPlans = array('0' => '') + $productPlans; + $this->view->branchGroups = $this->loadModel('branch')->getByProducts(array_keys($products)); + $this->view->programID = $programID; + $this->view->model = $model; + $this->view->name = $name; + $this->view->code = $code; + $this->view->team = $team; + $this->view->acl = $acl; + $this->view->auth = $auth; + $this->view->whitelist = $whitelist; + $this->view->copyProjectID = $copyProjectID; + $this->view->from = $from; + $this->view->programList = $this->program->getParentPairs(); + $this->view->parentProgram = $parentProgram; + $this->view->URSRPairs = $this->loadModel('custom')->getURSRPairs(); + $this->view->availableBudget = $this->program->getAvailableBudget($parentProgram); + $this->view->budgetUnitList = $this->program->getBudgetUnitList(); $this->display(); } @@ -1041,7 +1043,7 @@ class program extends control $this->view->URSRPairs = $this->loadModel('custom')->getURSRPairs(); $this->view->from = $from; $this->view->parentProgram = $parentProgram; - $this->view->remainBudget = $this->program->getParentRemainBudget($parentProgram) + (float)$project->budget; + $this->view->availableBudget = $this->program->getAvailableBudget($parentProgram) + (float)$project->budget; $this->view->budgetUnitList = $this->program->getBudgetUnitList(); $this->display(); diff --git a/module/program/js/common.js b/module/program/js/common.js index 207146ffb7..b7c8ce0f56 100644 --- a/module/program/js/common.js +++ b/module/program/js/common.js @@ -293,13 +293,13 @@ function setBudgetTipsAndAclList(parentProgramID) { if(parentProgramID != 0) { - $.get(createLink('program', 'ajaxGetParentRemainBudget', "parentProgramID=" + parentProgramID), function(remainBudget) + $.get(createLink('program', 'ajaxGetAvailableBudget', "parentProgramID=" + parentProgramID), function(availableBudget) { parentProgram = PGMList[parentProgramID]; programBudget = parentProgram.budget; PGMBudgetUnit = currencySymbol[parentProgram.budgetUnit]; - budgetNotes = programBudget != 0 ? (PGMParentBudget + PGMBudgetUnit + remainBudget) : ''; + budgetNotes = programBudget != 0 ? (PGMParentBudget + PGMBudgetUnit + availableBudget) : ''; $('#budget').attr('placeholder', budgetNotes); }); $('.aclBox').html($('#subPGMAcl').html()); diff --git a/module/program/lang/de.php b/module/program/lang/de.php index cf4e4c8842..665717c63b 100644 --- a/module/program/lang/de.php +++ b/module/program/lang/de.php @@ -250,7 +250,7 @@ $lang->program->stakeholderType = 'Stakeholder type'; $lang->program->isStakeholderKey = 'Key stakeholder'; $lang->program->importStakeholder = 'Import program'; $lang->program->PGMManageMembers = 'Program Team'; -$lang->program->PGMParentBudget = 'Parent program remain budget:'; +$lang->program->PGMParentBudget = 'Parent program surplus budget:'; $lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.'; $lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date."; $lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date."; diff --git a/module/program/lang/en.php b/module/program/lang/en.php index 1e1e5d4147..c5eb3051e0 100644 --- a/module/program/lang/en.php +++ b/module/program/lang/en.php @@ -250,7 +250,7 @@ $lang->program->stakeholderType = 'Stakeholder type'; $lang->program->isStakeholderKey = 'Key stakeholder'; $lang->program->importStakeholder = 'Import program'; $lang->program->PGMManageMembers = 'Program Team'; -$lang->program->PGMParentBudget = 'Parent program remain budget:'; +$lang->program->PGMParentBudget = 'Parent program surplus budget:'; $lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.'; $lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date."; $lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date."; diff --git a/module/program/lang/fr.php b/module/program/lang/fr.php index 9793b12981..7435d5896a 100644 --- a/module/program/lang/fr.php +++ b/module/program/lang/fr.php @@ -250,7 +250,7 @@ $lang->program->stakeholderType = 'Stakeholder type'; $lang->program->isStakeholderKey = 'Key stakeholder'; $lang->program->importStakeholder = 'Import program'; $lang->program->PGMManageMembers = 'Program Team'; -$lang->program->PGMParentBudget = 'Parent program remain budget:'; +$lang->program->PGMParentBudget = 'Parent program surplus budget:'; $lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.'; $lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date."; $lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date."; diff --git a/module/program/lang/vi.php b/module/program/lang/vi.php index 9793b12981..7435d5896a 100644 --- a/module/program/lang/vi.php +++ b/module/program/lang/vi.php @@ -250,7 +250,7 @@ $lang->program->stakeholderType = 'Stakeholder type'; $lang->program->isStakeholderKey = 'Key stakeholder'; $lang->program->importStakeholder = 'Import program'; $lang->program->PGMManageMembers = 'Program Team'; -$lang->program->PGMParentBudget = 'Parent program remain budget:'; +$lang->program->PGMParentBudget = 'Parent program surplus budget:'; $lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.'; $lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date."; $lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date."; diff --git a/module/program/model.php b/module/program/model.php index 1c85e14b5e..67e3f0b107 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -39,29 +39,19 @@ class programModel extends model /** * Get program pairs. * + * @param bool $isQueryAll * @access public * @return array */ - public function getPGMPairs() + public function getPGMPairs($isQueryAll = false) { return $this->dao->select('id, name')->from(TABLE_PROGRAM) ->where('type')->eq('program') ->andWhere('deleted')->eq(0) - ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->programs)->fi() + ->beginIF(!$this->app->user->admin and !$isQueryAll)->andWhere('id')->in($this->app->user->view->programs)->fi() ->fetchPairs(); } - /** - * Get program option. - * - * @access public - * @return array - */ - public function getPGMOption() - { - return $this->dao->select('id,name')->from(TABLE_PROGRAM)->where('type')->eq('program')->andWhere('deleted')->eq(0)->fetchPairs(); - } - /** * Get the product associated with the program. * @@ -192,8 +182,8 @@ class programModel extends model $program->budgetUnit = $parentProgram->budgetUnit; if(isset($program->budget) and $parentProgram->budget != 0) { - $parentRemainBudget = $this->getParentRemainBudget($parentProgram); - if($program->budget > $parentRemainBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; + $availableBudget = $this->getAvailableBudget($parentProgram); + if($program->budget > $availableBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; } if(dao::isError()) return false; @@ -307,8 +297,8 @@ class programModel extends model $program->budgetUnit = $parentProgram->budgetUnit; if($program->budget != 0 and $parentProgram->budget != 0) { - $parentRemainBudget = $this->getParentRemainBudget($parentProgram); - if($program->budget > $parentRemainBudget + $oldProgram->budget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; + $availableBudget = $this->getAvailableBudget($parentProgram); + if($program->budget > $availableBudget + $oldProgram->budget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; } } if(dao::isError()) return false; @@ -725,13 +715,13 @@ class programModel extends model } /** - * Get parent remain budget. + * Get available budget. * * @param object $parentProgram * @access public * @return int */ - public function getParentRemainBudget($parentProgram) + public function getAvailableBudget($parentProgram) { if(empty($parentProgram)) return; @@ -751,11 +741,11 @@ class programModel extends model * @access public * @return array */ - public function getParentPairs($model = '') + public function getParentPairs($model = '', $mode = '') { $modules = $this->dao->select('id,name,parent,path,grade')->from(TABLE_PROGRAM) ->where('type')->eq('program') - ->andWhere('status')->ne('closed') + ->beginIF(strpos($mode, 'noclosed') === false)->andWhere('status')->ne('closed')->fi() ->andWhere('deleted')->eq(0) ->beginIF($model)->andWhere('model')->eq($model)->fi() ->orderBy('grade desc, `order`') @@ -1518,8 +1508,8 @@ class programModel extends model $project->budgetUnit = $parentProgram->budgetUnit; if(isset($project->budget) and $parentProgram->budget != 0) { - $parentRemainBudget = $this->getParentRemainBudget($parentProgram); - if($project->budget > $parentRemainBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; + $availableBudget = $this->getAvailableBudget($parentProgram); + if($project->budget > $availableBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; } /* Judge products not empty. */ @@ -1702,8 +1692,8 @@ class programModel extends model $project->budgetUnit = $parentProgram->budgetUnit; if($project->budget != 0 and $parentProgram->budget != 0) { - $parentRemainBudget = $this->getParentRemainBudget($parentProgram); - if($project->budget > $parentRemainBudget + $oldProject->budget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; + $availableBudget = $this->availableBudget($parentProgram); + if($project->budget > $availableBudget + $oldProject->budget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget; } } @@ -1896,19 +1886,6 @@ class programModel extends model $title = "title='{$project->name}'"; } - $PRJProgram = ''; - if($id == 'PRJProgram' and $project->parent != 0) - { - $programList = $this->getPGMOption(); - $programIndex = $programID ? strpos($project->path, (string)$programID) : 0; - $projectIndex = strpos($project->path, $project->id); - $programPath = explode(',' , substr($project->path, $programIndex, $projectIndex - $programIndex)); - foreach($programPath as $program) - { - if($program) $PRJProgram .= '/' . zget($programList, $program); - } - $title = "title='{$PRJProgram}'"; - } if($id == 'PRJBudget') { $programBudget = in_array($this->app->getClientLang(), ['zh-cn','zh-tw']) && $project->budget >= 10000 ? number_format($project->budget / 10000, 1) . $this->lang->program->tenThousand : number_format((float)$project->budget, 1); @@ -1939,9 +1916,6 @@ class programModel extends model if($project->model === 'waterfall') echo "{$this->lang->program->waterfall}"; if($project->model === 'scrum') echo "{$this->lang->program->scrum}"; break; - case 'PRJProgram': - echo $PRJProgram; - break; case 'PM': $user = $this->loadModel('user')->getByID($project->PM, 'account'); $userID = !empty($user) ? $user->id : ''; diff --git a/module/program/view/pgmcreate.html.php b/module/program/view/pgmcreate.html.php index 36adf35b00..8959ee7d60 100644 --- a/module/program/view/pgmcreate.html.php +++ b/module/program/view/pgmcreate.html.php @@ -66,7 +66,7 @@ program->PGMBudget;?>
- budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $remainBudget : '';?> + budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?> budgetUnit);?> diff --git a/module/program/view/pgmedit.html.php b/module/program/view/pgmedit.html.php index c0130dd4ae..73641ff0a7 100644 --- a/module/program/view/pgmedit.html.php +++ b/module/program/view/pgmedit.html.php @@ -44,7 +44,7 @@ program->PGMBudget;?>
- budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $remainBudget : '';?> + budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?> budget != 0 ? $program->budget : '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?> budgetUnit);?> diff --git a/module/program/view/prjcreate.html.php b/module/program/view/prjcreate.html.php index 06192e1fb0..7af8dfc260 100644 --- a/module/program/view/prjcreate.html.php +++ b/module/program/view/prjcreate.html.php @@ -51,7 +51,7 @@ program->PRJBudget;?>
- budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $remainBudget : '';?> + budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?> budgetUnit);?> diff --git a/module/program/view/prjedit.html.php b/module/program/view/prjedit.html.php index cf577331c3..639b11575e 100644 --- a/module/program/view/prjedit.html.php +++ b/module/program/view/prjedit.html.php @@ -49,7 +49,7 @@ program->PRJBudget;?>
- budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $remainBudget : '';?> + budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?> budget != 0 ? $project->budget : '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($project->budget == 0 ? 'disabled ' : '') . $placeholder);?> budgetUnit);?> diff --git a/module/project/view/view.html.php b/module/project/view/view.html.php index d0b2de82d6..2c113dc4a2 100644 --- a/module/project/view/view.html.php +++ b/module/project/view/view.html.php @@ -12,7 +12,8 @@ ?> -
> + +
>
diff --git a/module/projectstory/control.php b/module/projectstory/control.php index 44fcdb98b4..75bdb67c28 100644 --- a/module/projectstory/control.php +++ b/module/projectstory/control.php @@ -88,7 +88,8 @@ class projectStory extends control */ public function view($storyID) { - echo $this->fetch('story', 'view', "storyID=$storyID"); + $story = $this->loadModel('story')->getByID($storyID); + echo $this->fetch('story', 'view', "storyID=$storyID&version=$story->version¶m=" . $this->session->PRJ); } /** diff --git a/module/projectstory/lang/de.php b/module/projectstory/lang/de.php index b2377070e6..fb4cb26b0b 100644 --- a/module/projectstory/lang/de.php +++ b/module/projectstory/lang/de.php @@ -1,8 +1,9 @@ projectstory->common = 'Anforderungen an Projekte'; -$lang->projectstory->index = 'Fordern Sie Homepage'; -$lang->projectstory->view = 'Story Detail'; -$lang->projectstory->track = 'Matrix der Verfolgung'; +$lang->projectstory->common = "Project {$lang->SRCommon}"; +$lang->projectstory->index = "{$lang->SRCommon} Home"; +$lang->projectstory->view = "{$lang->SRCommon} Detail"; +$lang->projectstory->story = "{$lang->SRCommon} List"; +$lang->projectstory->track = 'Tracking Matrix'; $lang->projectstory->linkStory = 'Linked' . $lang->SRCommon; $lang->projectstory->unlinkStory = 'Unlinked' . $lang->SRCommon; diff --git a/module/projectstory/lang/en.php b/module/projectstory/lang/en.php index eaca6a34fd..fb4cb26b0b 100644 --- a/module/projectstory/lang/en.php +++ b/module/projectstory/lang/en.php @@ -1,7 +1,8 @@ projectstory->common = 'Project Requirements'; -$lang->projectstory->index = 'Request Home'; -$lang->projectstory->view = 'Story Detail'; +$lang->projectstory->common = "Project {$lang->SRCommon}"; +$lang->projectstory->index = "{$lang->SRCommon} Home"; +$lang->projectstory->view = "{$lang->SRCommon} Detail"; +$lang->projectstory->story = "{$lang->SRCommon} List"; $lang->projectstory->track = 'Tracking Matrix'; $lang->projectstory->linkStory = 'Linked' . $lang->SRCommon; $lang->projectstory->unlinkStory = 'Unlinked' . $lang->SRCommon; diff --git a/module/projectstory/lang/fr.php b/module/projectstory/lang/fr.php index e63f508d4f..fb4cb26b0b 100644 --- a/module/projectstory/lang/fr.php +++ b/module/projectstory/lang/fr.php @@ -1,8 +1,9 @@ projectstory->common = 'Exigences du projet'; -$lang->projectstory->index = 'Exigences Accueil'; -$lang->projectstory->view = 'Story Detail'; -$lang->projectstory->track = 'Matrice de suivi'; +$lang->projectstory->common = "Project {$lang->SRCommon}"; +$lang->projectstory->index = "{$lang->SRCommon} Home"; +$lang->projectstory->view = "{$lang->SRCommon} Detail"; +$lang->projectstory->story = "{$lang->SRCommon} List"; +$lang->projectstory->track = 'Tracking Matrix'; $lang->projectstory->linkStory = 'Linked' . $lang->SRCommon; $lang->projectstory->unlinkStory = 'Unlinked' . $lang->SRCommon; diff --git a/module/projectstory/lang/vi.php b/module/projectstory/lang/vi.php index cff6a5b845..fb4cb26b0b 100644 --- a/module/projectstory/lang/vi.php +++ b/module/projectstory/lang/vi.php @@ -1,8 +1,9 @@ projectstory->common = 'Yêu cầu dự án'; -$lang->projectstory->index = 'Yêu cầu trang nhà'; -$lang->projectstory->view = 'Story Detail'; -$lang->projectstory->track = 'Theo dõi ma trận'; +$lang->projectstory->common = "Project {$lang->SRCommon}"; +$lang->projectstory->index = "{$lang->SRCommon} Home"; +$lang->projectstory->view = "{$lang->SRCommon} Detail"; +$lang->projectstory->story = "{$lang->SRCommon} List"; +$lang->projectstory->track = 'Tracking Matrix'; $lang->projectstory->linkStory = 'Linked' . $lang->SRCommon; $lang->projectstory->unlinkStory = 'Unlinked' . $lang->SRCommon; diff --git a/module/projectstory/lang/zh-cn.php b/module/projectstory/lang/zh-cn.php index 495979caeb..2d39182b70 100644 --- a/module/projectstory/lang/zh-cn.php +++ b/module/projectstory/lang/zh-cn.php @@ -1,7 +1,8 @@ projectstory->common = '项目需求'; -$lang->projectstory->index = '需求主页'; -$lang->projectstory->view = '需求详情'; +$lang->projectstory->common = "项目{$lang->SRCommon}"; +$lang->projectstory->index = "{$lang->SRCommon}主页"; +$lang->projectstory->view = "{$lang->SRCommon}详情"; +$lang->projectstory->story = "{$lang->SRCommon}列表"; $lang->projectstory->track = '矩阵'; $lang->projectstory->linkStory = '关联' . $lang->SRCommon; $lang->projectstory->unlinkStory = '移除' . $lang->SRCommon; diff --git a/module/qa/control.php b/module/qa/control.php index ac590e1aeb..23bcc3c380 100644 --- a/module/qa/control.php +++ b/module/qa/control.php @@ -11,6 +11,12 @@ */ class qa extends control { + /** + * Project id. + * + * @var int + * @access public + */ public $projectID; /** diff --git a/module/story/model.php b/module/story/model.php index 8c6bc48855..0505c63f8f 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -3630,59 +3630,70 @@ class storyModel extends model */ public function getTracks($productID = 0, $branch = 0, $pager = null) { - $sourcePageID = $pager->pageID; - $requirements = $this->getProductStories($productID, $branch, 0, 'all', 'requirement', 'id_desc', true, '', $pager); - if($pager->pageID != $sourcePageID) - { - $requirements = array(); - $pager->pageID = $sourcePageID; - } + $tracks = array(); + $sourcePageID = $pager->pageID; + $excludeStories = false; - foreach($requirements as $requirement) + if($this->config->URAndSR) { - $stories = $this->getRelation($requirement->id, 'requirement'); - $stories = empty($stories) ? array() : $stories; - foreach($stories as $id => $title) + $requirements = $this->getProductStories($productID, $branch, 0, 'all', 'requirement', 'id_desc', true, '', $pager); + if($pager->pageID != $sourcePageID) { - $stories[$id] = new stdclass(); - $stories[$id]->title = $title; - $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); - $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); - $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); - if(isset($this->config->maxVersion)) - { - $stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN)->where('story')->eq($id)->fetchAll('id'); - $stories[$id]->revisions = $this->dao->select('BID, extra')->from(TABLE_RELATION) - ->where('AType')->eq('design') - ->andWhere('BType')->eq('commit') - ->andWhere('AID')->in(array_keys($stories[$id]->designs)) - ->fetchPairs(); - } + $requirements = array(); + $pager->pageID = $sourcePageID; } - $requirement->track = $stories; + foreach($requirements as $requirement) + { + $stories = $this->getRelation($requirement->id, 'requirement'); + $stories = empty($stories) ? array() : $stories; + foreach($stories as $id => $title) + { + $stories[$id] = new stdclass(); + $stories[$id]->title = $title; + $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); + $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); + $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); + if(isset($this->config->maxVersion)) + { + $stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN)->where('story')->eq($id)->fetchAll('id'); + $stories[$id]->revisions = $this->dao->select('BID, extra')->from(TABLE_RELATION) + ->where('AType')->eq('design') + ->andWhere('BType')->eq('commit') + ->andWhere('AID')->in(array_keys($stories[$id]->designs)) + ->fetchPairs(); + } + } + + $requirement->track = $stories; + } + + $tracks = $requirements; + + /* Get no requirements story. */ + $excludeStories = $this->dao->select('BID')->from(TABLE_RELATION) + ->where('AType')->eq('requirement') + ->andWhere('BType')->eq('story') + ->andWhere('relation')->eq('subdivideinto') + ->andWhere('product')->eq($productID) + ->fetchPairs('BID', 'BID'); + $stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $excludeStories); + if($stories) $pager->recTotal += 1; + } + else + { + $stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $excludeStories, $pager); } - /* Get no requirements story. */ - $subdividedStories = $this->dao->select('BID')->from(TABLE_RELATION) - ->where('AType')->eq('requirement') - ->andWhere('BType')->eq('story') - ->andWhere('relation')->eq('subdivideinto') - ->andWhere('product')->eq($productID) - ->fetchPairs('BID', 'BID'); - - $stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $subdividedStories); - if($stories) $pager->recTotal += 1; - - if(count($requirements) < $pager->recPerPage) + if(count($tracks) < $pager->recPerPage) { foreach($stories as $id => $story) { $stories[$id] = new stdclass(); - $stories[$id]->title = $story->title; - $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); - $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); - $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); + $stories[$id]->title = $story->title; + $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); + $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); + $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); if(isset($this->config->maxVersion)) { $stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN)->where('story')->eq($id)->fetchAll('id'); @@ -3694,10 +3705,10 @@ class storyModel extends model } } - $requirements['noRequirement'] = $stories; + $tracks['noRequirement'] = $stories; } - return $requirements; + return $tracks; } /** diff --git a/module/story/view/create.html.php b/module/story/view/create.html.php index 1ba89b88e9..af4f63611d 100644 --- a/module/story/view/create.html.php +++ b/module/story/view/create.html.php @@ -122,7 +122,7 @@ - + config->URAndSR):?> story->requirement;?> diff --git a/module/story/view/track.html.php b/module/story/view/track.html.php index f58bb53ee4..8ec9a00f8a 100644 --- a/module/story/view/track.html.php +++ b/module/story/view/track.html.php @@ -24,6 +24,7 @@ + URAndSR):?> + maxVersion)):?> @@ -55,12 +57,14 @@ track;?> + URAndSR):?> + $story):?> diff --git a/module/story/view/view.html.php b/module/story/view/view.html.php index 9280aea0d7..544a3fa3cd 100644 --- a/module/story/view/view.html.php +++ b/module/story/view/view.html.php @@ -398,13 +398,16 @@
+ config->URAndSR):?>
    story->unlink . $linkLang, '', "class='btn btn-info' id='unlinkStory'");?>
+ type == 'story'):?> -
+
    tasks as $projectTasks) diff --git a/module/testcase/control.php b/module/testcase/control.php index 8b0b3d4400..2bde711679 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -11,7 +11,20 @@ */ class testcase extends control { - public $products = array(); + /** + * All products. + * + * @var array + * @access public + */ + public $products = array(); + + /** + * Project id. + * + * @var int + * @access public + */ public $projectID = 0; /** diff --git a/module/testsuite/control.php b/module/testsuite/control.php index 636ca1e701..e5748e0109 100644 --- a/module/testsuite/control.php +++ b/module/testsuite/control.php @@ -11,8 +11,22 @@ */ class testsuite extends control { + /** + * All products. + * + * @var array + * @access public + */ public $products = array(); + /** + * Construct function. + * + * @param string $moduleName + * @param string $methodName + * @access public + * @return void + */ public function __construct($moduleName = '', $methodName = '') { parent::__construct($moduleName, $methodName); diff --git a/module/testtask/control.php b/module/testtask/control.php index 264757b558..9ed1c79181 100644 --- a/module/testtask/control.php +++ b/module/testtask/control.php @@ -11,7 +11,20 @@ */ class testtask extends control { - public $products = array(); + /** + * All products. + * + * @var array + * @access public + */ + public $products = array(); + + /** + * Project id. + * + * @var int + * @access public + */ public $projectID = 0; /** diff --git a/module/todo/config.php b/module/todo/config.php index 9f3d7b925e..c14dcd2da6 100644 --- a/module/todo/config.php +++ b/module/todo/config.php @@ -26,3 +26,5 @@ $config->todo->list->customBatchEditFields = 'pri,desc,beginAndEnd,status'; $config->todo->custom = new stdclass(); $config->todo->custom->batchCreateFields = 'type,pri,desc,beginAndEnd'; $config->todo->custom->batchEditFields = 'pri,beginAndEnd,status'; + +$config->todo->moduleList = array('bug', 'task', 'story', 'issue', 'risk', 'review', 'testtask', 'feedback'); diff --git a/module/todo/model.php b/module/todo/model.php index 78f8116157..0ad17ce375 100644 --- a/module/todo/model.php +++ b/module/todo/model.php @@ -22,7 +22,7 @@ class todoModel extends model public function create($date, $account) { $objectType = $this->post->type; - $hasObject = in_array($objectType, array('bug', 'task', 'story', 'issue', 'risk', 'review', 'testtask', 'feedback')); + $hasObject = in_array($objectType, $this->config->todo->moduleList); if($hasObject && $objectType) $idvalue = $this->post->uid ? $this->post->$objectType : $this->post->idvalue; $todo = fixer::input('post') @@ -34,7 +34,7 @@ class todoModel extends model ->setIF($this->post->begin == false, 'begin', '2400') ->setIF($this->post->begin == false or $this->post->end == false, 'end', '2400') ->stripTags($this->config->todo->editor->create['id'], $this->config->allowedTags) - ->remove('bug, task, story, issue, risk, review, testtask, uid, feedback') + ->remove(implode(',', $this->config->todo->moduleList) . ',uid') ->get(); if($todo->end < $todo->begin) @@ -171,10 +171,10 @@ class todoModel extends model public function update($todoID) { $oldTodo = $this->dao->findById((int)$todoID)->from(TABLE_TODO)->fetch(); - if(in_array($oldTodo->type, array('bug', 'task', 'story', 'issue', 'risk', 'review', 'testtask', 'feedback'))) $oldTodo->name = ''; + if(in_array($oldTodo->type, $this->config->todo->moduleList)) $oldTodo->name = ''; $objectType = $this->post->type; - $hasObject = in_array($objectType, array('bug', 'task', 'story', 'issue', 'risk', 'review', 'testtask', 'feedback')); + $hasObject = in_array($objectType, $this->config->todo->moduleList); if($hasObject && $objectType) $idvalue = $this->post->uid ? $this->post->$objectType : $this->post->idvalue; $todo = fixer::input('post') ->cleanInt('pri, begin, end, private') @@ -186,7 +186,7 @@ class todoModel extends model ->setIF($this->post->end == false, 'end', '2400') ->setDefault('private', 0) ->stripTags($this->config->todo->editor->edit['id'], $this->config->allowedTags) - ->remove('bug, task, story, feedback, issue, risk, review, testtask, feedback, uid') + ->remove(implode(',', $this->config->todo->moduleList) . 'uid') ->get(); if($todo->end < $todo->begin) diff --git a/module/upgrade/model.php b/module/upgrade/model.php index a67fc2ad1b..964b47a368 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -3993,7 +3993,7 @@ class upgradeModel extends model $data = fixer::input('post')->get(); $account = isset($this->app->user->account) ? $this->app->user->account : ''; - if(!isset($data->programs) && $data->programID == '') + if(isset($data->newProgram)) { /* Insert program. */ $program = new stdclass(); @@ -4009,7 +4009,7 @@ class upgradeModel extends model $this->app->loadLang('program'); $this->app->loadLang('project'); - $this->lang->project->name = $this->lang->program->PGMName; + $this->lang->project->name = $this->lang->program->PGMName; $this->dao->insert(TABLE_PROJECT)->data($program) ->batchcheck('name,begin', 'notempty') @@ -4066,7 +4066,7 @@ class upgradeModel extends model if(!isset($data->sprints)) return array($programID, 0, $lineID); - if(!isset($data->projects)) + if(isset($data->newProject)) { if(!$this->post->longTime and !$this->post->end) die(js::alert(sprintf($this->lang->error->notempty, $this->lang->program->end))); @@ -4201,7 +4201,6 @@ class upgradeModel extends model $data = new stdClass(); $data->realBegan = $minRealBegan ? substr($minRealBegan, 0, 10) : '0000-00-00'; - $data->status = $PRJStatus; $PRJStatus = $this->dao->select('status')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch('status'); if($PRJStatus == 'closed') diff --git a/module/upgrade/view/createprogram.html.php b/module/upgrade/view/createprogram.html.php index 6cd345d505..256cf885c1 100644 --- a/module/upgrade/view/createprogram.html.php +++ b/module/upgrade/view/createprogram.html.php @@ -9,14 +9,12 @@
    -
    -
> app->rawModule == 'projectstory'): ?> story->story;?> story->tasks;?>
story->statusList, $requirement->status);?> story->noRequirement : html::a($this->createLink($module, 'view', "storyID=$requirement->id"), $requirement->title, '', "title=$requirement->title data-group='$openGroup'");?>