From af47d169380e17bed8aee486da83c8ee88391fef Mon Sep 17 00:00:00 2001
From: wangyuting2 <851424971@qq.com>
Date: Wed, 18 May 2022 09:27:14 +0800
Subject: [PATCH] * Fix bug #22573.
---
module/program/model.php | 87 +++++++++++++++++++++++
module/program/view/browsebylist.html.php | 49 +------------
2 files changed, 88 insertions(+), 48 deletions(-)
diff --git a/module/program/model.php b/module/program/model.php
index 8978cae49f..bf6eae3ee9 100644
--- a/module/program/model.php
+++ b/module/program/model.php
@@ -1498,4 +1498,91 @@ class programModel extends model
$this->lang->switcherMenu = $this->getSwitcher($programID);
common::setMenuVars('program', $programID);
}
+
+ /**
+ * Build program action menu.
+ *
+ * @param object $program
+ * @param string $type
+ * @access public
+ * @return string
+ */
+ public function buildOperateMenu($program, $type = 'view')
+ {
+ $menu = '';
+ $params = "programID=$program->id";
+ if($program->type == 'program' && strpos(",{$this->app->user->view->programs},", ",$program->id,") !== false)
+ {
+ if($program->status == 'wait' || $program->status == 'suspended')
+ {
+ $menu .= $this->buildMenu('program', 'start', $params, $program, $type, 'play', '', 'iframe', true, '', $this->lang->program->start);
+ }
+ if($program->status == 'doing')
+ {
+ $menu .= $this->buildMenu('program', 'close', $params, $program, $type, 'off', '', 'iframe', true);
+ }
+ if($program->status == 'closed')
+ {
+ $menu .= $this->buildMenu('program', 'activate', $params, $program, $type, 'magic', '', 'iframe', true);
+ }
+ if(common::hasPriv('program', 'suspend') || (common::hasPriv('program', 'close') && $program->status != 'doing') || (common::hasPriv('program', 'activate') && $program->status != 'closed'))
+ {
+ $menu .= "
";
+ $menu .= "";
+ $menu .= "";
+ $menu .= "
";
+ }
+
+ $disabled = $program->status == 'closed' ? 'disabled' : '';
+ $menu .= $this->buildMenu('program', 'edit', $params, $program, $type, 'edit');
+ $menu .= $this->buildMenu('program', 'create', $params, $program, $type, 'split', '', '', '', $disabled, $this->lang->program->children);
+ if(common::hasPriv('program', 'delete'))
+ {
+ $menu .= $this->buildMenu('program', 'delete', $params, $program, $type, 'trash', 'hiddenwin', '', '', '', $this->lang->program->delete);
+ }
+ }
+ else if($program->type == 'project')
+ {
+ if($program->status == 'wait' || $program->status == 'suspended')
+ {
+ $menu .= $this->buildMenu('project', 'start', $params, $program, $type, 'play', '', 'iframe', true);
+ }
+ if($program->status == 'doing') $menu .= $this->buildMenu('project', 'close', $params, $program, $type, 'off', '', 'iframe', true);
+ if($program->status == 'closed') $menu .= $this->buildMenu('project', 'activate', $params, $program, $type, 'magic', '', 'iframe', true);
+ if(common::hasPriv('project', 'suspend') || (common::hasPriv('project', 'close') && $program->status != 'doing') || (common::hasPriv('project', 'activate') && $program->status != 'closed'))
+ {
+ $menu .= "";
+ $menu .= "";
+ $menu .= "";
+ $menu .= "
";
+ }
+ $class = $program->model == 'kanban' ? 'disabled' : '';
+ $menu .= $this->buildMenu('project', 'edit', $params, $program, $type, 'edit', '', 'iframe', true);
+ $menu .= $this->buildMenu('project', 'team', $params, $program, $type, 'group', '', $class, '', 'data-app="project"');
+ $menu .= $this->buildMenu('project', 'group', $params, $program, $type, 'lock', '', $class, '', 'data-app="project"');
+ if(common::hasPriv('project', 'manageProducts') || common::hasPriv('project', 'whitelist') || common::hasPriv('project', 'delete'))
+ {
+ $menu .= "";
+ $menu .= "";
+ $menu .= "";
+ $menu .= "
";
+ }
+ }
+ return $menu;
+ }
}
diff --git a/module/program/view/browsebylist.html.php b/module/program/view/browsebylist.html.php
index 39511dc8fe..4ecd66b1d6 100644
--- a/module/program/view/browsebylist.html.php
+++ b/module/program/view/browsebylist.html.php
@@ -85,54 +85,7 @@
" . $this->loadModel('flow')->getFieldValue($extendField, $program) . "";?>
- type == 'program' and strpos(",{$app->user->view->programs},", ",$program->id,") !== false):?>
- status == 'wait' || $program->status == 'suspended') common::printIcon('program', 'start', "programID=$program->id", $program, 'list', 'play', '', 'iframe', true, '', $this->lang->program->start);?>
- status == 'doing') common::printIcon('program', 'close', "programID=$program->id", $program, 'list', 'off', '', 'iframe', true);?>
- status == 'closed') common::printIcon('program', 'activate', "programID=$program->id", $program, 'list', 'magic', '', 'iframe', true);?>
-
- status != 'doing') || (common::hasPriv('program', 'activate') && $program->status != 'closed')):?>
-
-
-
-
-
- id", '', 'list', 'edit');?>
- id", '', 'list', 'split', '', '', '', $program->status == 'closed' ? 'disabled' : '', $this->lang->program->children);?>
- createLink("program", "delete", "programID=$program->id"), "", 'hiddenwin', "class='btn' title='{$this->lang->program->delete}'");?>
-
- type == 'project'):?>
- status == 'wait' || $program->status == 'suspended') common::printIcon('project', 'start', "projectID=$program->id", $program, 'list', 'play', '', 'iframe', true);?>
- status == 'doing') common::printIcon('project', 'close', "projectID=$program->id", $program, 'list', 'off', '', 'iframe', true);?>
- status == 'closed') common::printIcon('project', 'activate', "projectID=$program->id", $program, 'list', 'magic', '', 'iframe', true);?>
- status != 'doing') || (common::hasPriv('project', 'activate') && $program->status != 'closed')):?>
-
-
-
-
-
- model == 'kanban' ? 'disabled' : '';?>
- id", $program, 'list', 'edit', '', 'iframe', true);?>
- id", $program, 'list', 'group', '', "$class", '', 'data-app="project"');?>
- id", $program, 'list', 'lock', '', "$class", '', 'data-app="project"');?>
-
-
-
-
-
-
-
+ program->buildOperateMenu($program, 'browse');?>
|