From 8b1e4808c29f3e551c58ee1840b5738fd3f6300d Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Tue, 10 Nov 2020 08:49:00 +0800 Subject: [PATCH 1/2] * Finish task #8194. --- module/doc/control.php | 28 +++++++----- module/doc/view/browse.html.php | 2 +- module/doc/view/objectlibs.html.php | 2 + module/doc/view/showfiles.html.php | 2 +- module/product/view/browse.html.php | 2 + module/productplan/view/browse.html.php | 4 +- module/productplan/view/view.html.php | 12 ++--- module/project/view/bug.html.php | 2 + module/project/view/burn.html.php | 2 +- module/project/view/grouptask.html.php | 4 ++ module/project/view/story.html.php | 61 +++++++++++++------------ module/project/view/task.html.php | 2 + module/project/view/tree.html.php | 2 + module/release/view/browse.html.php | 2 + module/release/view/view.html.php | 34 +++++++------- module/story/control.php | 2 +- module/story/view/view.html.php | 4 +- 17 files changed, 99 insertions(+), 68 deletions(-) diff --git a/module/doc/control.php b/module/doc/control.php index 6e71529464..17242bec45 100644 --- a/module/doc/control.php +++ b/module/doc/control.php @@ -754,7 +754,12 @@ class doc extends control setcookie('docFilesViewType', $viewType, $this->config->cookieLife, $this->config->webRoot, '', false, true); $table = $type == 'product' ? TABLE_PRODUCT : TABLE_PROJECT; - $object = $this->dao->select('id,name')->from($table)->where('id')->eq($objectID)->fetch(); + $object = $this->dao->select('id,name,status')->from($table)->where('id')->eq($objectID)->fetch(); + + /* Determines whether an object is editable. */ + $changeAllowed = true; + if($type == 'product' and !empty($this->config->global->closedProductStatus) and $object->status == 'closed') $changeAllowed = false; + if($type == 'project' and !empty($this->config->global->closedProjectStatus) and $object->status == 'closed') $changeAllowed = false; /* According the from, set menus. */ if($this->from == 'product') @@ -799,17 +804,18 @@ class doc extends control $this->app->loadClass('pager', $static = true); $pager = new pager($recTotal, $recPerPage, $pageID); - $this->view->title = $object->name; - $this->view->position[] = $object->name; + $this->view->title = $object->name; + $this->view->position[] = $object->name; - $this->view->type = $type; - $this->view->object = $object; - $this->view->files = $this->doc->getLibFiles($type, $objectID, $orderBy, $pager); - $this->view->users = $this->loadModel('user')->getPairs('noletter'); - $this->view->pager = $pager; - $this->view->viewType = $viewType; - $this->view->orderBy = $orderBy; - $this->view->objectID = $objectID; + $this->view->type = $type; + $this->view->object = $object; + $this->view->files = $this->doc->getLibFiles($type, $objectID, $orderBy, $pager); + $this->view->users = $this->loadModel('user')->getPairs('noletter'); + $this->view->pager = $pager; + $this->view->viewType = $viewType; + $this->view->orderBy = $orderBy; + $this->view->objectID = $objectID; + $this->view->changeAllowed = $changeAllowed; $this->display(); } diff --git a/module/doc/view/browse.html.php b/module/doc/view/browse.html.php index 5d97f8c762..15c838008d 100644 --- a/module/doc/view/browse.html.php +++ b/module/doc/view/browse.html.php @@ -42,7 +42,7 @@ var browseType = ''; ", '', "title='{$lang->doc->browseTypeList['grid']}' class='btn btn-icon'");?> ", '', "title='{$lang->doc->browseTypeList['list']}' class='btn btn-icon text-primary'");?> - + diff --git a/module/doc/view/showfiles.html.php b/module/doc/view/showfiles.html.php index 479aff0ee0..70c7d48be7 100644 --- a/module/doc/view/showfiles.html.php +++ b/module/doc/view/showfiles.html.php @@ -135,7 +135,7 @@
objectID");?>' title='addedDate, 0, 10)?>'>title . ' [' . strtoupper($file->objectType) . ' #' . $file->objectID . ']';?>
- + id"); ?>' target='hiddenwin' title='delete?>' class='delete btn btn-link'>
diff --git a/module/product/view/browse.html.php b/module/product/view/browse.html.php index f27fa76027..34ca22249b 100644 --- a/module/product/view/browse.html.php +++ b/module/product/view/browse.html.php @@ -94,6 +94,7 @@ js::set('foldAll', $lang->project->treeLevel['root']); ?> + config->global->closedProductStatus) or $product->status != 'closed'):?> createLink('story', 'batchCreate', "productID=$productID&branch=$branch&moduleID=$moduleID"), " {$lang->story->batchCreate}", '', "class='btn btn btn-secondary'");?> project->treeLevel['root']); +
diff --git a/module/productplan/view/browse.html.php b/module/productplan/view/browse.html.php index b2b3345ef7..5e17ac3634 100644 --- a/module/productplan/view/browse.html.php +++ b/module/productplan/view/browse.html.php @@ -24,7 +24,9 @@
+ config->global->closedProductStatus) or $product->status != 'closed'):?> id&branch=$branch", " {$lang->productplan->create}", '', "class='btn btn-primary'");?> +
@@ -32,7 +34,7 @@

productplan->noPlan;?> - + config->global->closedProductStatus) or $product->status != 'closed') and common::hasPriv('productplan', 'create')):?> createLink('productplan', 'create', "productID=$product->id&branch=$branch"), " " . $lang->productplan->create, '', "class='btn btn-info'");?>

diff --git a/module/productplan/view/view.html.php b/module/productplan/view/view.html.php index 094cdb4773..80d6da9e63 100644 --- a/module/productplan/view/view.html.php +++ b/module/productplan/view/view.html.php @@ -42,9 +42,9 @@ { echo $this->buildOperateMenu($plan, 'view'); - if(common::hasPriv('productplan', 'create') and $plan->parent <= '0') echo html::a($this->createLink('productplan', 'create', "product={$plan->product}&branch={$plan->branch}&parent={$plan->id}"), " " . $this->lang->productplan->children , '', "class='btn btn-link' title='{$this->lang->productplan->children}'"); - if(common::hasPriv('productplan', 'edit')) echo html::a($this->createLink('productplan', 'edit', "planID=$plan->id"), " " . $this->lang->edit, '', "class='btn btn-link' title='{$this->lang->edit}'"); - if(common::hasPriv('productplan', 'delete') and $plan->parent >= 0) echo html::a($this->createLink('productplan', 'delete', "planID=$plan->id"), " " . $this->lang->delete, '', "class='btn btn-link' title='{$this->lang->delete}' target='hiddenwin'"); + if(common::hasPriv('productplan', 'create', $plan) and $plan->parent <= '0') echo html::a($this->createLink('productplan', 'create', "product={$plan->product}&branch={$plan->branch}&parent={$plan->id}"), " " . $this->lang->productplan->children , '', "class='btn btn-link' title='{$this->lang->productplan->children}'"); + if(common::hasPriv('productplan', 'edit', $plan)) echo html::a($this->createLink('productplan', 'edit', "planID=$plan->id"), " " . $this->lang->edit, '', "class='btn btn-link' title='{$this->lang->edit}'"); + if(common::hasPriv('productplan', 'delete', $plan) and $plan->parent >= 0) echo html::a($this->createLink('productplan', 'delete', "planID=$plan->id"), " " . $this->lang->delete, '', "class='btn btn-link' title='{$this->lang->delete}' target='hiddenwin'"); } ?>
@@ -62,7 +62,7 @@
'>
- deleted and $plan->parent >= 0):?> + deleted and $plan->parent >= 0 and !common::checkParentObjectClosed('plan', $plan)):?>
- parent >= 0) echo html::a("javascript:showLink($plan->id, \"story\")", ' ' . $lang->productplan->linkStory, '', "class='btn btn-primary'");?> + parent >= 0) echo html::a("javascript:showLink($plan->id, \"story\")", ' ' . $lang->productplan->linkStory, '', "class='btn btn-primary'");?>
@@ -355,7 +355,7 @@
'> - +
id, \"bug\")", ' ' . $lang->productplan->linkBug, '', "class='btn btn-primary'");?>
diff --git a/module/project/view/bug.html.php b/module/project/view/bug.html.php index 0c1f2be39e..8e5f21e524 100644 --- a/module/project/view/bug.html.php +++ b/module/project/view/bug.html.php @@ -22,7 +22,9 @@
id", " " . $lang->bug->export, '', "class='btn btn-link export'");?> + config->global->closedProjectStatus) or $project->status != 'closed'):?> id", " " . $lang->bug->create, '', "class='btn btn-primary'");?> +
diff --git a/module/project/view/burn.html.php b/module/project/view/burn.html.php index 630791edba..c93eb2c1d2 100644 --- a/module/project/view/burn.html.php +++ b/module/project/view/burn.html.php @@ -25,7 +25,7 @@ common::printLink('project', 'computeBurn', 'reload=yes', ' ' . $lang->project->computeBurn, 'hiddenwin', "title='{$lang->project->computeBurn}{$lang->project->burn}' class='btn btn-primary' id='computeBurn'"); echo '
'; echo html::a($this->createLink('project', 'burn', "projectID=$projectID&type=$weekend&interval=$interval"), $lang->project->$weekend, '', "class='btn btn-link'"); - common::printLink('project', 'fixFirst', "project=$project->id", $lang->project->fixFirst, '', "class='btn btn-link iframe' data-width='700'"); + if(empty($this->config->global->closedProjectStatus) or $project->status != 'closed') common::printLink('project', 'fixFirst', "project=$project->id", $lang->project->fixFirst, '', "class='btn btn-link iframe' data-width='700'"); echo $lang->project->howToUpdateBurn; ?> diff --git a/module/project/view/grouptask.html.php b/module/project/view/grouptask.html.php index 9d1c7dd549..9ec86748fd 100644 --- a/module/project/view/grouptask.html.php +++ b/module/project/view/grouptask.html.php @@ -53,6 +53,7 @@ ?>
+ config->global->closedProjectStatus) or $project->status != 'closed'):?>
+ project = $projectID; @@ -207,9 +209,11 @@ task->typeList, $task->type);?> '>deadline, 0, 4) > 0) echo $task->deadline;?> + config->global->closedProjectStatus) or $project->status != 'closed'):?> project&taskID=$task->id", $task, 'list', '', '', 'iframe', true);?> id", '', 'list');?> project&taskid=$task->id", '', 'list', 'trash', 'hiddenwin');?> + diff --git a/module/project/view/story.html.php b/module/project/view/story.html.php index 7c6ed0ad31..ddba443011 100644 --- a/module/project/view/story.html.php +++ b/module/project/view/story.html.php @@ -46,37 +46,40 @@ id", " " . $lang->story->export, '', "class='btn btn-link export'"); - $this->lang->story->create = $this->lang->project->createStory; - if($productID and !$this->loadModel('story')->checkForceReview()) + if(empty($this->config->global->closedProjectStatus) or $project->status != 'closed') { - echo "'; - } + $this->lang->story->create = $this->lang->project->createStory; + if($productID and !$this->loadModel('story')->checkForceReview()) + { + echo "'; + } - if(commonModel::isTutorialMode()) - { - $wizardParams = helper::safe64Encode("project=$project->id"); - echo html::a($this->createLink('tutorial', 'wizard', "module=project&method=linkStory¶ms=$wizardParams"), " {$lang->project->linkStory}",'', "class='btn btn-link link-story-btn'"); - } - else - { - echo "'; + if(commonModel::isTutorialMode()) + { + $wizardParams = helper::safe64Encode("project=$project->id"); + echo html::a($this->createLink('tutorial', 'wizard', "module=project&method=linkStory¶ms=$wizardParams"), " {$lang->project->linkStory}",'', "class='btn btn-link link-story-btn'"); + } + else + { + echo "'; + } } ?>
diff --git a/module/project/view/task.html.php b/module/project/view/task.html.php index 080a0963e8..1d3a45b21c 100644 --- a/module/project/view/task.html.php +++ b/module/project/view/task.html.php @@ -118,6 +118,7 @@ js::set('foldAll', $lang->project->treeLevel['root']); + config->global->closedProjectStatus) or $project->status != 'closed'):?> + project = $projectID; diff --git a/module/project/view/tree.html.php b/module/project/view/tree.html.php index ab4d137c2d..28ca9dfbaa 100644 --- a/module/project/view/tree.html.php +++ b/module/project/view/tree.html.php @@ -32,6 +32,7 @@ $link = common::hasPriv('task', 'report', $project) ? $this->createLink('task', 'report', "project=$projectID&browseType=$browseType") : '#'; echo html::a($link, " {$lang->task->reportChart}", '', 'class="btn btn-link"'); ?> + config->global->closedProjectStatus) or $project->status != 'closed'):?>
+ createLink('task', 'export', "project=$projectID&orderBy=$orderBy&type=tree") : '#'; diff --git a/module/release/view/browse.html.php b/module/release/view/browse.html.php index 2e94f9fa9c..08534fa6f5 100644 --- a/module/release/view/browse.html.php +++ b/module/release/view/browse.html.php @@ -22,7 +22,9 @@ ?>
+ config->global->closedProductStatus) or $product->status != 'closed'):?> id&branch=$branch", " {$lang->release->create}", '', "class='btn btn-primary'");?> +
diff --git a/module/release/view/view.html.php b/module/release/view/view.html.php index adc95ec578..eb37f65004 100644 --- a/module/release/view/view.html.php +++ b/module/release/view/view.html.php @@ -31,7 +31,9 @@
deleted) + $isClosedProduct = common::checkParentObjectClosed('release', $release); + + if(!$release->deleted and !$isClosedProduct) { echo $this->buildOperateMenu($release, 'view'); @@ -64,7 +66,7 @@
' id='stories'> - +
id}, \"story\")", ' ' . $lang->release->linkStory, '', "class='btn btn-primary'");?>
@@ -78,7 +80,7 @@ - +
@@ -99,7 +101,7 @@ createLink('story', 'view', "storyID=$story->id", '', true);?> - +
@@ -122,7 +124,7 @@ story->stageList[$story->stage];?> createLink('release', 'unlinkStory', "releaseID=$release->id&story=$story->id"); echo html::a("javascript:ajaxDelete(\"$unlinkURL\", \"storyList\", confirmUnlinkStory)", '', '', "class='btn' title='{$lang->release->unlinkStory}'"); @@ -134,7 +136,7 @@