315 lines
9.7 KiB
PHP
315 lines
9.7 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
/**
|
|
* The manageView view file of group module of ZenTaoPMS.
|
|
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
|
|
* @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
|
|
* @author Shujie Tian<tianshujie@easycorp.ltd>
|
|
* @package group
|
|
* @link https://www.zentao.net
|
|
*/
|
|
namespace zin;
|
|
|
|
$viewCheckList = null;
|
|
foreach($lang->mainNav as $menuKey => $menu)
|
|
{
|
|
if(!is_string($menu)) continue;
|
|
list($moduleName, $module) = explode('|', $menu);
|
|
if($menuKey == 'my') continue;
|
|
|
|
$moduleName = strip_tags($moduleName);
|
|
$viewCheckList[] = checkbox
|
|
(
|
|
set::rootClass('group-item'),
|
|
set::id($menuKey),
|
|
set::name('actions[views][' . strtolower($menuKey) . ']'),
|
|
set::text($moduleName),
|
|
set::checked(isset($group->acl['views'][$menuKey]) || empty($group->acl['views'])),
|
|
on::change('toggleBox')
|
|
);
|
|
}
|
|
|
|
$viewCheckList[] = checkbox
|
|
(
|
|
set::rootClass('group-item'),
|
|
set::name('actionallchecker'),
|
|
set::text($lang->selectAll),
|
|
set::checked(empty($group->acl['views'])),
|
|
on::click('selectAll'),
|
|
on::change('toggleBox')
|
|
);
|
|
|
|
function getActionsBox($navGroup, $group, $module)
|
|
{
|
|
global $lang, $app;
|
|
$actionsBox = null;
|
|
if(isset($lang->action->dynamicAction->$module))
|
|
{
|
|
foreach($lang->action->dynamicAction->$module as $action => $actionTitle)
|
|
{
|
|
if(!helper::hasFeature($module)) continue;
|
|
$actionsBox[] = div
|
|
(
|
|
set::className('action-item'),
|
|
set::style(array('flex' => $app->getClientLang() == 'en' ? '0 1 32%' : '0 1 18%')),
|
|
checkbox
|
|
(
|
|
set::id("{$module}-{$action}"),
|
|
set::name("actions[actions][$module][$action]"),
|
|
set::text($actionTitle),
|
|
set::checked(isset($group->acl['actions'][$module][$action]) || !isset($group->acl['actions']))
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
if(isset($navGroup[$module]))
|
|
{
|
|
foreach($navGroup[$module] as $subModule)
|
|
{
|
|
if(isset($lang->action->dynamicAction->$subModule))
|
|
{
|
|
foreach($lang->action->dynamicAction->$subModule as $action => $actionTitle)
|
|
{
|
|
if(!helper::hasFeature($subModule)) continue;
|
|
$actionsBox[] = div
|
|
(
|
|
set::className('action-item'),
|
|
set::style(array('flex' => $app->getClientLang() == 'en' ? '0 1 32%' : '0 1 18%')),
|
|
checkbox
|
|
(
|
|
set::id("$subModule-$action"),
|
|
set::name("actions[actions][$subModule][$action]"),
|
|
set::text($actionTitle),
|
|
set::checked(isset($group->acl['actions'][$subModule][$action]) || !isset($group->acl['actions']))
|
|
)
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return $actionsBox;
|
|
}
|
|
|
|
$dynamicActionList = null;
|
|
if($config->vision != 'or')
|
|
{
|
|
foreach($lang->mainNav as $module => $title)
|
|
{
|
|
if(!is_string($title)) continue;
|
|
|
|
/* Ignore null actions menus. */
|
|
$isNullActions = true;
|
|
if(isset($lang->action->dynamicAction->$module)) $isNullActions = false;
|
|
if(isset($navGroup[$module]) and $isNullActions)
|
|
{
|
|
foreach($navGroup[$module] as $subModule)
|
|
{
|
|
if(isset($lang->action->dynamicAction->$subModule))
|
|
{
|
|
$isNullActions = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if($isNullActions) continue;
|
|
$dynamicActionList[] = div
|
|
(
|
|
set::id("{$module}ActionBox"),
|
|
set::className('flex w-full'),
|
|
div
|
|
(
|
|
set::className('flex item-center action-title'),
|
|
checkbox
|
|
(
|
|
set::name('allchecker'),
|
|
on::click('selectItems')
|
|
),
|
|
span(html(substr($title, 0, strpos($title, '|'))))
|
|
),
|
|
div
|
|
(
|
|
set::className('flex check-list-inline w-full justify-start'),
|
|
getActionsBox($navGroup, $group, $module)
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
formPanel
|
|
(
|
|
set::id('manageViewForm'),
|
|
div
|
|
(
|
|
set::className('flex'),
|
|
span
|
|
(
|
|
set::className('text-md font-bold'),
|
|
icon('lock mr-2'),
|
|
$group->name
|
|
),
|
|
span
|
|
(
|
|
set::className('text-md text-gray'),
|
|
html($lang->arrow),
|
|
$lang->group->manageView
|
|
)
|
|
),
|
|
formGroup
|
|
(
|
|
set::label($lang->group->viewList),
|
|
set::className('items-center'),
|
|
div
|
|
(
|
|
set::className('viewBox check-list-inline flex flex-wrap w-full'),
|
|
$viewCheckList
|
|
)
|
|
),
|
|
$config->systemMode == 'ALM' ? formRow
|
|
(
|
|
set::id('programBox'),
|
|
set::className('items-center hidden'),
|
|
formGroup
|
|
(
|
|
setClass('items-center'),
|
|
set::label($lang->group->programList),
|
|
$programs ? inputGroup
|
|
(
|
|
setClass('input-control'),
|
|
picker
|
|
(
|
|
set::name('actions[programs][]'),
|
|
set::items($programs),
|
|
set::value(isset($group->acl['programs']) ? join(',', $group->acl['programs']) : ''),
|
|
set::multiple(true)
|
|
),
|
|
div
|
|
(
|
|
setClass('input-group-btn flex'),
|
|
div
|
|
(
|
|
setClass('btn btn-default cursor-text'),
|
|
icon('info text-warning'),
|
|
$lang->group->noticeVisit
|
|
)
|
|
)
|
|
) : span(
|
|
set::className('flex items-center'),
|
|
icon('info text-warning mr-2'),
|
|
$lang->group->noneProgram
|
|
)
|
|
)
|
|
) : null,
|
|
formRow
|
|
(
|
|
set::id('productBox'),
|
|
set::className('items-center hidden'),
|
|
formGroup
|
|
(
|
|
setClass('items-center'),
|
|
set::label($lang->group->productList),
|
|
$products ? inputGroup
|
|
(
|
|
picker
|
|
(
|
|
set::name('actions[products][]'),
|
|
set::items($products),
|
|
set::value(isset($group->acl['products']) ? join(',', $group->acl['products']) : ''),
|
|
set::multiple(true)
|
|
),
|
|
div
|
|
(
|
|
setClass('input-group-btn flex'),
|
|
div
|
|
(
|
|
setClass('btn btn-default cursor-text'),
|
|
icon('info text-warning'),
|
|
$lang->group->noticeVisit
|
|
)
|
|
)
|
|
) : span(
|
|
set::className('flex items-center'),
|
|
icon('info text-warning mr-2'),
|
|
$lang->group->noneProduct
|
|
)
|
|
)
|
|
),
|
|
formRow
|
|
(
|
|
set::className('items-center hidden'),
|
|
set::id('projectBox'),
|
|
formGroup
|
|
(
|
|
setClass('items-center'),
|
|
set::label($lang->group->projectList),
|
|
$projects ? inputGroup
|
|
(
|
|
picker
|
|
(
|
|
set::name('actions[projects][]'),
|
|
set::items($projects),
|
|
set::value(isset($group->acl['projects']) ? join(',', $group->acl['projects']) : ''),
|
|
set::multiple(true)
|
|
),
|
|
div
|
|
(
|
|
setClass('input-group-btn flex'),
|
|
div
|
|
(
|
|
setClass('btn btn-default cursor-text'),
|
|
icon('info text-warning'),
|
|
$lang->group->noticeVisit
|
|
)
|
|
),
|
|
) : span(
|
|
set::className('flex items-center'),
|
|
icon('info text-warning mr-2'),
|
|
$lang->group->noneProject
|
|
)
|
|
)
|
|
),
|
|
formRow
|
|
(
|
|
set::className('items-center hidden'),
|
|
set::id('executionBox'),
|
|
formGroup
|
|
(
|
|
setClass('items-center'),
|
|
set::label($lang->group->executionList),
|
|
$executions ? inputGroup
|
|
(
|
|
picker
|
|
(
|
|
set::name('actions[sprints][]'),
|
|
set::items($executions),
|
|
set::value(isset($group->acl['sprints']) ? join(',', $group->acl['sprints']) : ''),
|
|
set::multiple(true)
|
|
),
|
|
div
|
|
(
|
|
setClass('input-group-btn flex'),
|
|
div
|
|
(
|
|
setClass('btn btn-default cursor-text'),
|
|
icon('info text-warning'),
|
|
$lang->group->noticeVisit
|
|
)
|
|
)
|
|
) : span(
|
|
set::className('flex items-center'),
|
|
icon('info text-warning mr-2'),
|
|
$lang->group->noneExecution
|
|
)
|
|
)
|
|
),
|
|
$config->vision != 'or' ? formGroup
|
|
(
|
|
set::label($lang->group->dynamic),
|
|
$dynamicActionList
|
|
) : null
|
|
);
|
|
|
|
/* ====== Render page ====== */
|
|
render();
|