@@ -53,7 +54,7 @@ - + @@ -84,7 +85,7 @@ - + @@ -112,7 +113,7 @@ - + @@ -151,7 +152,7 @@ - + diff --git a/module/programplan/view/edit.html.php b/module/programplan/view/edit.html.php index 4b48c5ccc1..357a495691 100644 --- a/module/programplan/view/edit.html.php +++ b/module/programplan/view/edit.html.php @@ -57,7 +57,8 @@ - + grade == 2 ? "disabled='disabled'" : '';?> + diff --git a/module/project/control.php b/module/project/control.php index 3792d11fab..f79d6918d8 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -81,7 +81,7 @@ class project extends control $products = $this->project->getProducts($projectID); $childProjects = $this->project->getChildExecutions($projectID); $teamMembers = $this->project->getTeamMembers($projectID); - $actions = $this->loadModel('action')->getList('project', $projectID); + $actions = $this->loadModel('action')->getList('execution', $projectID); /* Set menu. */ $this->project->setMenu($this->projects, $projectID, $buildID = 0, $extra); @@ -1149,7 +1149,7 @@ class project extends control $this->project->updateProducts($projectID); if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError())); - $this->loadModel('action')->create('project', $projectID, 'opened', '', join(',', $_POST['products'])); + $this->loadModel('action')->create('execution', $projectID, 'opened', '', join(',', $_POST['products'])); $this->executeHooks($projectID); @@ -1239,7 +1239,7 @@ class project extends control $this->loadModel('action'); $this->dao->update(TABLE_PROJECT)->set('deleted')->eq(0)->where('id')->eq($projectID)->exec(); $this->dao->update(TABLE_ACTION)->set('extra')->eq(ACTIONMODEL::BE_UNDELETED)->where('id')->eq($extra)->exec(); - $this->action->create('project', $projectID, 'undeleted'); + $this->action->create('execution', $projectID, 'undeleted'); } $oldProducts = array_keys($oldProducts); $newProducts = $this->project->getProducts($projectID); @@ -1249,7 +1249,7 @@ class project extends control if($changes or $diffProducts) { - $actionID = $this->loadModel('action')->create('project', $projectID, 'edited', '', $products); + $actionID = $this->loadModel('action')->create('execution', $projectID, 'edited', '', $products); $this->action->logHistory($actionID, $changes); } $this->executeHooks($projectID); @@ -1352,7 +1352,7 @@ class project extends control { if(empty($changes)) continue; - $actionID = $this->loadModel('action')->create('project', $projectID, 'Edited'); + $actionID = $this->loadModel('action')->create('execution', $projectID, 'Edited'); $this->action->logHistory($actionID, $changes); } } @@ -1425,7 +1425,7 @@ class project extends control if($this->post->comment != '' or !empty($changes)) { - $actionID = $this->action->create('project', $projectID, 'Started', $this->post->comment); + $actionID = $this->action->create('execution', $projectID, 'Started', $this->post->comment); $this->action->logHistory($actionID, $changes); } $this->executeHooks($projectID); @@ -1436,7 +1436,7 @@ class project extends control $this->view->position[] = html::a($this->createLink('project', 'browse', "projectID=$projectID"), $this->view->project->name); $this->view->position[] = $this->lang->project->start; $this->view->users = $this->loadModel('user')->getPairs('noletter'); - $this->view->actions = $this->loadModel('action')->getList('project', $projectID); + $this->view->actions = $this->loadModel('action')->getList('execution', $projectID); $this->display(); } @@ -1460,7 +1460,7 @@ class project extends control if($this->post->comment != '' or !empty($changes)) { - $actionID = $this->action->create('project', $projectID, 'Delayed', $this->post->comment); + $actionID = $this->action->create('execution', $projectID, 'Delayed', $this->post->comment); $this->action->logHistory($actionID, $changes); } $this->executeHooks($projectID); @@ -1471,7 +1471,7 @@ class project extends control $this->view->position[] = html::a($this->createLink('project', 'browse', "projectID=$projectID"), $this->view->project->name); $this->view->position[] = $this->lang->project->putoff; $this->view->users = $this->loadModel('user')->getPairs('noletter'); - $this->view->actions = $this->loadModel('action')->getList('project', $projectID); + $this->view->actions = $this->loadModel('action')->getList('execution', $projectID); $this->display(); } @@ -1495,7 +1495,7 @@ class project extends control if($this->post->comment != '' or !empty($changes)) { - $actionID = $this->action->create('project', $projectID, 'Suspended', $this->post->comment); + $actionID = $this->action->create('execution', $projectID, 'Suspended', $this->post->comment); $this->action->logHistory($actionID, $changes); } $this->executeHooks($projectID); @@ -1506,7 +1506,7 @@ class project extends control $this->view->position[] = html::a($this->createLink('project', 'browse', "projectID=$projectID"), $this->view->project->name); $this->view->position[] = $this->lang->project->suspend; $this->view->users = $this->loadModel('user')->getPairs('noletter'); - $this->view->actions = $this->loadModel('action')->getList('project', $projectID); + $this->view->actions = $this->loadModel('action')->getList('execution', $projectID); $this->display(); } @@ -1530,7 +1530,7 @@ class project extends control if($this->post->comment != '' or !empty($changes)) { - $actionID = $this->action->create('project', $projectID, 'Activated', $this->post->comment); + $actionID = $this->action->create('execution', $projectID, 'Activated', $this->post->comment); $this->action->logHistory($actionID, $changes); } $this->executeHooks($projectID); @@ -1546,7 +1546,7 @@ class project extends control $this->view->position[] = $this->lang->project->activate; $this->view->project = $project; $this->view->users = $this->loadModel('user')->getPairs('noletter'); - $this->view->actions = $this->loadModel('action')->getList('project', $projectID); + $this->view->actions = $this->loadModel('action')->getList('execution', $projectID); $this->view->newBegin = $newBegin; $this->view->newEnd = $newEnd; $this->display(); @@ -1572,7 +1572,7 @@ class project extends control if($this->post->comment != '' or !empty($changes)) { - $actionID = $this->action->create('project', $projectID, 'Closed', $this->post->comment); + $actionID = $this->action->create('execution', $projectID, 'Closed', $this->post->comment); $this->action->logHistory($actionID, $changes); } $this->executeHooks($projectID); @@ -1583,7 +1583,7 @@ class project extends control $this->view->position[] = html::a($this->createLink('project', 'browse', "projectID=$projectID"), $this->view->project->name); $this->view->position[] = $this->lang->project->close; $this->view->users = $this->loadModel('user')->getPairs('noletter'); - $this->view->actions = $this->loadModel('action')->getList('project', $projectID); + $this->view->actions = $this->loadModel('action')->getList('execution', $projectID); $this->display(); } @@ -1628,7 +1628,7 @@ class project extends control $this->view->products = $products; $this->view->branchGroups = $this->loadModel('branch')->getByProducts(array_keys($products), '', $linkedBranches); $this->view->planGroups = $this->project->getPlans($products); - $this->view->actions = $this->loadModel('action')->getList('project', $projectID); + $this->view->actions = $this->loadModel('action')->getList('execution', $projectID); $this->view->dynamics = $this->loadModel('action')->getDynamic('all', 'all', 'date_desc', $pager, 'all', $projectID); $this->view->users = $this->loadModel('user')->getPairs('noletter'); $this->view->teamMembers = $this->project->getTeamMembers($projectID); @@ -1947,7 +1947,7 @@ class project extends control $newProducts = $this->project->getProducts($projectID); $newProducts = array_keys($newProducts); $diffProducts = array_merge(array_diff($oldProducts, $newProducts), array_diff($newProducts, $oldProducts)); - if($diffProducts) $this->loadModel('action')->create('project', $projectID, 'Managed', '', !empty($_POST['products']) ? join(',', $_POST['products']) : ''); + if($diffProducts) $this->loadModel('action')->create('execution', $projectID, 'Managed', '', !empty($_POST['products']) ? join(',', $_POST['products']) : ''); die(js::locate($browseProjectLink)); } diff --git a/module/project/model.php b/module/project/model.php index f5e2cc408c..9d9ff24269 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -77,9 +77,7 @@ class projectModel extends model if(!$projectID and $this->session->project) $projectID = $this->session->project; - /* Get project and program */ $project = $this->getById($projectID); - $isProgram = false; if(!empty($project)) { @@ -436,13 +434,14 @@ class projectModel extends model $project = fixer::input('post') ->setIF($this->post->begin == '0000-00-00', 'begin', '') ->setIF($this->post->end == '0000-00-00', 'end', '') - ->setIF($this->post->acl == 'open', 'whitelist', '') ->setDefault('team', $this->post->name) ->join('whitelist', ',') ->stripTags($this->config->project->editor->edit['id'], $this->config->allowedTags) ->remove('products, branch, uid, plans') ->get(); + if(!isset($project->acl)) $project->acl = $oldProject->acl; + if($project->acl == 'open') $project->whitelist = ''; $project = $this->loadModel('file')->processImgURL($project, $this->config->project->editor->edit['id'], $this->post->uid); /* Check the workload format. */ diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index f8b6237743..6224c7f657 100644 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -170,7 +170,8 @@ printExtendFields($project, 'table');?> - + grade == 2 ? "disabled='disabled'" : '';?> + diff --git a/module/projectrelease/control.php b/module/projectrelease/control.php index 8879d19699..69e076f360 100644 --- a/module/projectrelease/control.php +++ b/module/projectrelease/control.php @@ -228,6 +228,51 @@ class projectrelease extends control $this->display(); } + /** + * Delete a release. + * + * @param int $releaseID + * @param string $confirm yes|no + * @access public + * @return void + */ + public function delete($releaseID, $confirm = 'no') + { + if($confirm == 'no') + { + die(js::confirm($this->lang->release->confirmDelete, $this->createLink('projectrelease', 'delete', "releaseID=$releaseID&confirm=yes"))); + } + else + { + $this->release->delete(TABLE_RELEASE, $releaseID); + + $release = $this->dao->select('*')->from(TABLE_RELEASE)->where('id')->eq((int)$releaseID)->fetch(); + $build = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->eq((int)$release->build)->fetch(); + if(empty($build->project)) $this->loadModel('build')->delete(TABLE_BUILD, $build->id); + + $this->executeHooks($releaseID); + + /* if ajax request, send result. */ + if($this->server->ajax) + { + if(dao::isError()) + { + $response['result'] = 'fail'; + $response['message'] = dao::getError(); + } + else + { + $response['result'] = 'success'; + $response['message'] = ''; + $release = $this->release->getById($releaseID); + $this->dao->update(TABLE_BUILD)->set('deleted')->eq(1)->where('id')->eq($release->build)->andWhere('name')->eq($release->name)->exec(); + } + $this->send($response); + } + die(js::locate($this->session->releaseList, 'parent')); + } + } + /** * Export the stories of release to HTML. * diff --git a/module/projectrelease/view/browse.html.php b/module/projectrelease/view/browse.html.php index ad6eb66b8e..3b9181b9bd 100644 --- a/module/projectrelease/view/browse.html.php +++ b/module/projectrelease/view/browse.html.php @@ -32,7 +32,7 @@

release->noRelease;?> - + createLink('projectrelease', 'create', "productID=$product->id&branch=$branch"), " " . $lang->release->create, '', "class='btn btn-info'");?>

@@ -58,7 +58,7 @@
- +
stage->typeList, $stage->type, "class='form-control'");?>project->aclList, 'open', 'class="form-control"');?>project->aclList, 'open', "class='form-control' $class");?> programplan->milestoneList, 0);?> stage->typeList, $plan->attribute, "class='form-control'");?>project->aclList, $plan->acl, 'class="form-control"');?>project->aclList, $plan->acl, "class='form-control' $class");?> programplan->milestoneList, $plan->milestone, $disabled);?> stage->typeList, '', "class='form-control'");?>project->aclList, 'open', 'class="form-control"');?>project->aclList, 'open', "class='form-control' $class");?> programplan->milestoneList, 0);?> stage->typeList, '', "class='form-control'");?>project->aclList, 'open', 'class="form-control"');?>project->aclList, 'open', "class='form-control' $class");?> programplan->milestoneList, 0);?>
project->acl;?> project->aclList, $plan->acl, 'class="form-control"');?>project->aclList, $plan->acl, "class='form-control' $class");?>
programplan->begin;?>
project->acl;?>project->aclList, $project->acl, "onclick='setWhite(this.value);'", 'block'));?>project->aclList, $project->acl, "onclick='setWhite(this.value);' $class", 'block'));?>
whitelist;?>
id"), sprintf('%03d', $release->id));?> @@ -81,17 +81,17 @@ id&type=story&link=true"), ' ', '', "class='btn' title='{$lang->release->linkStory}'"); - if(common::hasPriv('release', 'linkBug')) echo html::a(inlink('view', "releaseID=$release->id&type=bug&link=true"), ' ', '', "class='btn' title='{$lang->release->linkBug}'"); - if(common::hasPriv('release', 'changeStatus', $release)) + if(common::hasPriv('projectrelease', 'linkStory')) echo html::a(inlink('view', "releaseID=$release->id&type=story&link=true"), ' ', '', "class='btn' title='{$lang->release->linkStory}'"); + if(common::hasPriv('projectrelease', 'linkBug')) echo html::a(inlink('view', "releaseID=$release->id&type=bug&link=true"), ' ', '', "class='btn' title='{$lang->release->linkBug}'"); + if(common::hasPriv('projectrelease', 'changeStatus', $release)) { $changedStatus = $release->status == 'normal' ? 'terminate' : 'normal'; - echo html::a($this->createLink('release', 'changeStatus', "releaseID=$release->id&status=$changedStatus"), ' ', 'hiddenwin', "class='btn' title='{$lang->release->changeStatusList[$changedStatus]}'"); + echo html::a($this->createLink('projectrelease', 'changeStatus', "releaseID=$release->id&status=$changedStatus"), ' ', 'hiddenwin', "class='btn' title='{$lang->release->changeStatusList[$changedStatus]}'"); } common::printIcon('projectrelease', 'edit', "release=$release->id", $release, 'list'); - if(common::hasPriv('release', 'delete', $release)) + if(common::hasPriv('projectrelease', 'delete', $release)) { - $deleteURL = $this->createLink('release', 'delete', "releaseID=$release->id&confirm=yes"); + $deleteURL = $this->createLink('projectrelease', 'delete', "releaseID=$release->id&confirm=yes"); echo html::a("javascript:ajaxDelete(\"$deleteURL\", \"releaseList\", confirmDelete)", '', '', "class='btn' title='{$lang->release->delete}'"); } } diff --git a/module/projectrelease/view/view.html.php b/module/projectrelease/view/view.html.php index 16f52a8fe6..d6990ea72e 100644 --- a/module/projectrelease/view/view.html.php +++ b/module/projectrelease/view/view.html.php @@ -31,19 +31,19 @@
deleted and $canBeChanged) { echo $this->buildOperateMenu($release, 'view'); - if(common::hasPriv('release', 'changeStatus', $release)) + if(common::hasPriv('projectrelease', 'changeStatus', $release)) { $changedStatus = $release->status == 'normal' ? 'terminate' : 'normal'; echo html::a(inlink('changeStatus', "releaseID=$release->id&status=$changedStatus"), ' ' . $lang->release->changeStatusList[$changedStatus], 'hiddenwin', "class='btn btn-link' title='{$lang->release->changeStatusList[$changedStatus]}'"); } - if(common::hasPriv('release', 'edit')) echo html::a(inlink('edit', "releaseID=$release->id"), " " . $this->lang->edit, '', "class='btn btn-link' title='{$this->lang->edit}'"); - if(common::hasPriv('release', 'delete')) echo html::a(inlink('delete', "releaseID=$release->id"), " " . $this->lang->delete, '', "class='btn btn-link' title='{$this->lang->delete}' target='hiddenwin'"); + if(common::hasPriv('projectrelease', 'edit')) echo html::a(inlink('edit', "releaseID=$release->id"), " " . $this->lang->edit, '', "class='btn btn-link' title='{$this->lang->edit}'"); + if(common::hasPriv('projectrelease', 'delete')) echo html::a(inlink('delete', "releaseID=$release->id"), " " . $this->lang->delete, '', "class='btn btn-link' title='{$this->lang->delete}' target='hiddenwin'"); } ?>
@@ -59,19 +59,19 @@
  • >icons['bug'], 'text-red') . ' ' . $lang->release->generatedBugs;?>
  • >icons['plan'], 'text-info') . ' ' . $lang->release->view;?>
  • -
  • +
  • ' id='stories'> - +
    id}, \"story\")", ' ' . $lang->release->linkStory, '', "class='btn btn-primary'");?>
    id}&type=story&link=$link¶m=$param&orderBy=%s";?> @@ -122,9 +122,9 @@
    story->stageList[$story->stage];?> createLink('release', 'unlinkStory', "releaseID=$release->id&story=$story->id"); + $unlinkURL = $this->createLink('projectrelease', 'unlinkStory', "releaseID=$release->id&story=$story->id"); echo html::a("javascript:ajaxDelete(\"$unlinkURL\", \"storyList\", confirmUnlinkStory)", '', '', "class='btn' title='{$lang->release->unlinkStory}'"); } ?> @@ -138,7 +138,7 @@
    id"); echo html::a('###', $lang->release->batchUnlink, '', "onclick='setFormAction(\"$unlinkURL\", \"hiddenwin\", this)' class='btn'"); @@ -162,13 +162,13 @@
    ' id='bugs'> - +
    id}, \"bug\")", ' ' . $lang->release->linkBug, '', "class='btn btn-primary'");?>
    id");?>" id='linkedBugsForm' data-ride="table"> - + id}&type=bug&link=$link¶m=$param&orderBy=%s";?> @@ -212,9 +212,9 @@
    resolvedDate, 5, 11)?> createLink('release', 'unlinkBug', "releaseID=$release->id&bug=$bug->id"); + $unlinkURL = $this->createLink('projectrelease', 'unlinkBug', "releaseID=$release->id&bug=$bug->id"); echo html::a("javascript:ajaxDelete(\"$unlinkURL\", \"bugList\", confirmUnlinkBug)", '', '', "class='btn' title='{$lang->release->unlinkBug}'"); } ?> @@ -240,13 +240,13 @@
    ' id='leftBugs'> - +
    id}, \"leftBug\")", ' ' . $lang->release->linkBug, '', "class='btn btn-primary'");?>
    id&type=leftBug");?>" id='linkedBugsForm' data-ride="table"> - + id}&type=leftBug&link=$link¶m=$param&orderBy=%s";?> @@ -303,9 +303,9 @@
    openedDate?> createLink('release', 'unlinkBug', "releaseID=$release->id&bug=$bug->id&type=leftBug"); + $unlinkURL = $this->createLink('projectrelease', 'unlinkBug', "releaseID=$release->id&bug=$bug->id&type=leftBug"); echo html::a("javascript:ajaxDelete(\"$unlinkURL\", \"leftBugList\", confirmUnlinkBug)", '', '', "class='btn' title='{$lang->release->unlinkBug}'"); } ?> diff --git a/module/projectstory/control.php b/module/projectstory/control.php index ff606d738f..eeb5f7aef0 100644 --- a/module/projectstory/control.php +++ b/module/projectstory/control.php @@ -12,6 +12,14 @@ class projectStory extends control { public $products = array(); + /** + * Get the products associated with the project. + * + * @param string $moduleName + * @param string $methodName + * @access public + * @return void + */ public function __construct($moduleName = '', $methodName = '') { parent::__construct($moduleName, $methodName); @@ -19,15 +27,67 @@ class projectStory extends control if(empty($this->products)) die($this->locate($this->createLink('product', 'showErrorNone', "fromModule=projectStory"))); } - public function requirement($projectID = 0, $productID = 0, $branch = 0) + /** + * Obtain user requirements through product. + * + * @param int $productID + * @param string $browseType + * @param int $param + * @param string $storyType + * @param string $orderBy + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID + * @access public + * @return void + */ + public function requirement($productID = 0, $branch = '', $browseType = '', $param = 0, $storyType = 'requirement', $orderBy = '', $recTotal = 0, $recPerPage = 20, $pageID = 1) { + if(empty($productID)) $productID = key($this->products); + $this->lang->projectstory->menu->requirement['subModule'] = 'product'; $this->projectstory->setMenu($this->products, $productID, $branch); - $this->display(); + echo $this->fetch('product', 'browse', "productID=$productID&branch=$branch&browseType=$browseType¶m=$param&storyType=$storyType&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"); } - public function story() + /** + * Get software requirements from product. + * + * @param int $productID + * @param string $browseType + * @param int $param + * @param string $storyType + * @param string $orderBy + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID + * @access public + * @return void + */ + public function story($productID = 0, $branch = '', $browseType = '', $param = 0, $storyType = 'story', $orderBy = '', $recTotal = 0, $recPerPage = 20, $pageID = 1) { - $this->display(); + if(empty($productID)) $productID = key($this->products); + $this->lang->projectstory->menu->story['subModule'] = 'product'; + $this->projectstory->setMenu($this->products, $productID, $branch); + echo $this->fetch('product', 'browse', "productID=$productID&branch=$branch&browseType=$browseType¶m=$param&storyType=$storyType&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"); + } + + /** + * Obtain the tracking matrix through the product. + * + * @param int $productID + * @param int $browseType + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID + * @access public + * @return void + */ + public function track($productID = 0, $branch = 0, $recTotal = 0, $recPerPage = 20, $pageID = 1) + { + if(empty($productID)) $productID = key($this->products); + $this->lang->projectstory->menu->track['subModule'] = 'story'; + $this->projectstory->setMenu($this->products, $productID, $branch); + echo $this->fetch('story', 'track', "productID=$productID&branch=$branch&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"); } } diff --git a/module/projectstory/lang/zh-cn.php b/module/projectstory/lang/zh-cn.php index bdde17ea76..1dab22b92a 100644 --- a/module/projectstory/lang/zh-cn.php +++ b/module/projectstory/lang/zh-cn.php @@ -1,2 +1,6 @@ projectstory->index = '需求主页'; +$lang->projectstory->common = '项目需求'; +$lang->projectstory->index = '需求主页'; +$lang->projectstory->requirement = '用户需求'; +$lang->projectstory->story = '软件需求'; +$lang->projectstory->track = '跟踪矩阵'; diff --git a/module/projectstory/model.php b/module/projectstory/model.php index 6d79ea451a..4bf5f13e33 100644 --- a/module/projectstory/model.php +++ b/module/projectstory/model.php @@ -22,9 +22,12 @@ class projectstoryModel extends model */ public function setMenu($products = array(), $productID = 0, $branch = 0) { + /* Determine if the product is accessible. */ + if($products and (!isset($products[$productID]) or !$this->loadModel('product')->checkPriv($productID))) $this->loadModel('product')->accessDenied(); + if(empty($productID)) $productID = key($products); $this->loadModel('product')->setMenu($products, $productID, $branch); - $selectHtml = $this->product->select($products, $productID, 'projectstory', 'requirement', '', $branch); + $selectHtml = $this->product->select($products, $productID, 'projectstory', $this->app->rawMethod, '', $branch); $indexHtml = '
    ' . html::a(helper::createLink('projectstory', 'requirement'), $this->lang->projectstory->index, '', "class='btn'") . '
    '; $pageNav = $indexHtml . $selectHtml; $this->lang->modulePageNav = $pageNav; diff --git a/module/projectstory/view/requirement.html.php b/module/projectstory/view/requirement.html.php deleted file mode 100644 index a6f7f94207..0000000000 --- a/module/projectstory/view/requirement.html.php +++ /dev/null @@ -1,16 +0,0 @@ - - * @package projectStory - * @version $Id - * @link http://www.zentao.net - */ -?> - -

    用户需求

    - - diff --git a/module/projectstory/view/story.html.php b/module/projectstory/view/story.html.php deleted file mode 100644 index 004798652d..0000000000 --- a/module/projectstory/view/story.html.php +++ /dev/null @@ -1,16 +0,0 @@ - - * @package projectStory - * @version $Id - * @link http://www.zentao.net - */ -?> - -

    软件需求

    - - diff --git a/module/story/control.php b/module/story/control.php index e0e5f22428..a170990f0b 100644 --- a/module/story/control.php +++ b/module/story/control.php @@ -1315,24 +1315,28 @@ class story extends control * Story track. * * @param int $productID + * @param int $branch * @param int $recPerPage * @param int $pageID * @access public * @return void */ - public function track($productID, $recPerPage = 10, $pageID = 1) - { - $this->lang->product->menu = $this->lang->product->viewMenu; - $this->lang->product->switcherMenu = $this->product->getSwitcher($productID); - - $products = $this->product->getPairs(); - $productID = $this->product->saveState($productID, $products); - $this->product->setMenu($products, $productID, 0, 0, ''); + public function track($productID, $branch = 0, $recTotal = 0, $recPerPage = 20, $pageID = 1) + { + /* Set menu. The projectstory module does not execute. */ + if($this->app->rawModule == 'story') + { + $this->lang->product->menu = $this->lang->product->viewMenu; + $products = $this->product->getPairs(); + $productID = $this->product->saveState($productID, $products); + $this->lang->product->switcherMenu = $this->product->getSwitcher($productID, '', $branch); + $this->product->setMenu($products, $productID, $branch); + } /* Load pager and get tracks. */ $this->app->loadClass('pager', $static = true); - $pager = new pager(0, $recPerPage, $pageID); - $tracks = $this->story->getTracks($productID, $pager); + $pager = new pager($recTotal, $recPerPage, $pageID); + $tracks = $this->story->getTracks($productID, $branch, $pager); $this->view->title = $this->lang->story->track; $this->view->posision[] = $this->lang->story->track; diff --git a/module/story/js/common.js b/module/story/js/common.js index df519715db..d56d327ac9 100644 --- a/module/story/js/common.js +++ b/module/story/js/common.js @@ -2,8 +2,12 @@ $(function() { if(typeof(resetActive) != 'undefined') return false; if(typeof(storyType) == 'undefined') storyType = ''; - $('#navbar .nav li').removeClass('active'); - $("#navbar .nav li[data-id=" + storyType + ']').addClass('active'); + if(typeof(rawModule) == 'undefined') rawModule = 'product'; + if(rawModule != 'projectstory') + { + $('#navbar .nav li').removeClass('active'); + $("#navbar .nav li[data-id=" + storyType + ']').addClass('active'); + } }) function getStatus(method, params) diff --git a/module/story/model.php b/module/story/model.php index 8489d78d4a..198950d3e8 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -155,8 +155,8 @@ class storyModel extends model return $story; } - - /** + + /** * Get requirements for story. * * @param int $productID @@ -164,7 +164,7 @@ class storyModel extends model * @return void */ public function getRequierements($productID) - { + { return $this->dao->select('id,title')->from(TABLE_STORY) ->where('deleted')->eq(0) ->andWhere('status')->ne('draft') @@ -3587,14 +3587,15 @@ class storyModel extends model * Get tracks. * * @param int $productID + * @param int $branch * @param object $pager * @access public * @return bool|array */ - public function getTracks($productID, $pager = null) + public function getTracks($productID = 0, $branch = 0, $pager = null) { $sourcePageID = $pager->pageID; - $requirements = $this->getProductStories($productID, 0, 0, 'all', 'requirement', 'id_desc', true, '', $pager); + $requirements = $this->getProductStories($productID, $branch, 0, 'all', 'requirement', 'id_desc', true, '', $pager); if($pager->pageID != $sourcePageID) { $requirements = array(); diff --git a/module/story/view/track.html.php b/module/story/view/track.html.php index a143e78442..7176c86fa6 100644 --- a/module/story/view/track.html.php +++ b/module/story/view/track.html.php @@ -1,5 +1,6 @@ +app->rawModule);?>