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');?>