diff --git a/module/group/css/managepriv.ui.css b/module/group/css/managepriv.ui.css
index b891da24f5..05264121e4 100644
--- a/module/group/css/managepriv.ui.css
+++ b/module/group/css/managepriv.ui.css
@@ -10,10 +10,7 @@
#mainContainer {gap: 16px; height: calc(100vh - 165px);}
#mainContainer > .main {flex: 1 1 75%; overflow-y: auto; padding: 0px; border: 1px solid #FFF; box-sizing: content-box;}
#mainContainer > .side {flex: 1 1 25%;}
-#mainContainer .main .btn-group {position: absolute; visibility: hidden; display: inline-block; z-index: 2; top: 75px;}
-#mainContainer .main .btn-group .switchBtn {padding: 6px 10px;}
-#mainContainer .main .btn-group .switchBtn:first-child {border-radius: 4px 0px 0px 4px;}
-#mainContainer .main .btn-group .switchBtn:last-child {border-radius: 0px 4px 4px 0px;}
+#mainContainer .main .btn-group {position: absolute; visibility: hidden; display: inline-block; z-index: 2; top: 66px;}
#mainContainer .table {table-layout: fixed;}
.side .priv-panel {padding: 16px;}
.side .priv-panel {background: #fff; padding: 10px 16px; box-shadow: 0 1px 1px rgb(0 0 0 / 5%), 0 2px 6px 0 rgb(0 0 0 / 5%);}
@@ -69,15 +66,13 @@
/* Manage priv by group. */
#privList td.menus {border-right: 0; padding-right: 0; width: 170px !important;}
-#privList td.menus + td {border-left: 0; padding-left: 0px; padding}
+#privList td.menus + td {border-left: 0; padding-left: 0px;}
#privList .menus .checkbox-primary {float: left; width: 160px;}
#privList .menus .checkbox-primary:first-child {float: left; width: auto;}
#privList .menus a {margin-left: 10px;}
#privList {margin-bottom: 0px;}
#privList tr {border-bottom-width: 0;}
-#privList tr > td {background-color: #FFF;}
-#privList tr:hover > td {background-color: #FFF;}
#privList th.module {width: 142px; min-width: 142px; background-color: #EDEEF28C; font-weight: 600;}
#privList th.package {width: 142px; min-width: 142px; background-color: #F4F5F78C; font-weight: 600;}
#privList th .checkbox-inline input {margin-left: 0px;}
diff --git a/module/group/js/managepriv.ui.js b/module/group/js/managepriv.ui.js
index ee7b3a4e3f..21335ab4e0 100644
--- a/module/group/js/managepriv.ui.js
+++ b/module/group/js/managepriv.ui.js
@@ -309,7 +309,7 @@ function positionBtn()
{
let btnLeft = $('.main.main-content > table').width() - 75;
let pagePadding = $('#mainContainer').css('padding-left');
- $('.main.main-content > .btn-group').css('left', `calc(${btnLeft}px + ${pagePadding})`).css('visibility', 'unset');
+ $('.main.main-content > .btn-group').css('left', `calc(${btnLeft}px + ${pagePadding} - 8px)`).css('visibility', 'unset');
}
/**
diff --git a/module/group/ui/privbygroup.html.php b/module/group/ui/privbygroup.html.php
index 80417c8dd1..a884961aab 100644
--- a/module/group/ui/privbygroup.html.php
+++ b/module/group/ui/privbygroup.html.php
@@ -200,30 +200,19 @@ else
),
);
- $getMethodItems = function($package, $subsetName, $packageID, $groupPrivs)
+ $getMethodItemsHtml = function($package, $subsetName, $packageID, $groupPrivs)
{
- $methodItems = array();
+ $html = '';
foreach($package->privs as $privID => $priv)
{
- $methodItems[] = div
- (
- setClass('group-item'),
- set('data-module', $subsetName),
- set('data-package', $packageID),
- set('data-divid', "{$subsetName}{$packageID}"),
- set('data-id', $privID),
- checkbox
- (
- set::name("actions[{$priv->module}][]"),
- set::value($priv->method),
- set::checked(isset($groupPrivs[$priv->module][$priv->method])),
- setID("actions[{$priv->module}][{$priv->method}]"),
- set::text($priv->name),
- set('data-id', $privID)
- )
- );
+ $checked = isset($groupPrivs[$priv->module][$priv->method]);
+ $checkID = "actions[{$priv->module}][{$priv->method}]";
+ $html .= "
';
}
- return $methodItems;
+ return $html;
};
$dependTree = null;
@@ -246,7 +235,7 @@ else
);
}
- $privBody = null;
+ $privBodyHtml = array();
foreach($subsets as $subsetName => $subset)
{
if($subset->allCount == 0) continue;
@@ -256,63 +245,40 @@ else
{
$subsetTitle = isset($lang->$subsetName) && isset($lang->$subsetName->common) ? $lang->$subsetName->common : $subsetName;
- $privBody[] = h::tr
- (
- setClass(cycle('even, bg-gray')),
- $i == 1 ? h::th
- (
- setClass('text-middle text-left module'),
- set('rowspan', count($packages[$subsetName]) ? count($packages[$subsetName]) : 1),
- set('data-module', $subsetName),
- set('all-privs', $subset->allCount),
- set('select-privs', $subset->selectCount),
- div
- (
- setClass('checkbox-primary checkbox-inline checkbox-left check-all'),
- checkbox
- (
- setID("allChecker{$subsetName}"),
- set::value(1),
- set::checked($subset->selectCount && $subset->selectCount == $subset->allCount),
- set::text($subsetTitle),
- set::labelClass($subset->selectCount && $subset->selectCount != $subset->allCount ? 'text-left checkbox-indeterminate-block' : 'text-left')
- )
- )
- ) : null,
- h::th
- (
- setClass('text-middle text-left package'),
- setClass($i == 1 ? 'td-sm' : 'td-md'),
- set('data-module', $subsetName),
- set('data-package', $packageID),
- set('data-divid', "{$subsetName}{$packageID}"),
- set('all-privs', $package->allCount),
- set('select-privs', $package->selectCount),
- div
- (
- setClass('checkbox-primary checkbox-inline checkbox-left check-all'),
- checkbox
- (
- setID("allCheckerModule{$subsetName}Package{$packageID}"),
- set::value('browse'),
- set::checked($package->allCount == $package->selectCount),
- set::text($lang->group->package->$packageID),
- set::labelClass($package->selectCount && $package->selectCount != $package->allCount ? 'text-left checkbox-indeterminate-block' : 'text-left')
- )
- )
- ),
- h::td
- (
- setClass('pv-10px'),
- setID($subsetName),
- $getMethodItems($package, $subsetName, $packageID, $groupPrivs)
- )
- );
+ $privBodyHtml[] = '';
+ if($i == 1)
+ {
+ $rowspan = count($packages[$subsetName]) ? count($packages[$subsetName]) : 1;
+ $checked = $subset->selectCount && $subset->selectCount == $subset->allCount;
+ $checkID = "allChecker{$subsetName}";
+ $privBodyHtml[] = "| ";
+ $privBodyHtml[] = '';
+ $privBodyHtml[] = ' | ';
+ }
+
+ $thClass = $i == 1 ? ' td-sm' : ' td-md';
+ $checked = $package->allCount == $package->selectCount;
+ $checkID = "allCheckerModule{$subsetName}Package{$packageID}";
+ $privBodyHtml[] = "";
+ $privBodyHtml[] = '';
+ $privBodyHtml[] = ' | ';
+
+ $privBodyHtml[] = "";
+ $privBodyHtml[] = $getMethodItemsHtml($package, $subsetName, $packageID, $groupPrivs);
+ $privBodyHtml[] = ' | ';
+
+ $privBodyHtml[] = '
';
$i ++;
}
}
- form
+ formBase
(
setID('managePrivForm'),
formHidden('actions[][]', ''),
@@ -324,7 +290,7 @@ else
setClass('flex'),
div
(
- setClass('main main-content'),
+ setClass('main main-content canvas'),
div
(
setClass('btn-group'),
@@ -344,7 +310,7 @@ else
h::table
(
setID('privList'),
- setClass('table table-hover table-striped table-bordered'),
+ setClass('table table-striped table-bordered'),
h::thead
(
h::tr
@@ -364,12 +330,9 @@ else
setClass('method'),
$lang->group->method
)
- ),
- h::tbody
- (
- $privBody
)
- )
+ ),
+ h::body(html($privBodyHtml))
)
),
div
diff --git a/module/group/ui/privbypackage.html.php b/module/group/ui/privbypackage.html.php
index f7b635be58..480ce064eb 100644
--- a/module/group/ui/privbypackage.html.php
+++ b/module/group/ui/privbypackage.html.php
@@ -145,125 +145,78 @@ else
}
}
- function getPrivsItems($privs, $moduleName, $packageID, $groupPrivs)
+ function getPrivsItemsHtml($privs, $moduleName, $packageID, $groupPrivs)
{
global $lang;
- $privsBox = array();
+ $html = '';
foreach($privs as $privID => $priv)
{
if(!empty($lang->$moduleName->menus) && ($priv->method == 'browse' or in_array($priv->method, array_keys($lang->$moduleName->menus)))) continue;
$privMethod = isset($groupPrivs[$priv->module][$priv->method]) ? $priv->method : '';
- $privsBox[] = div
- (
- setClass('group-item'),
- set('data-id', $privID),
- set('data-module', $moduleName),
- set('data-package', $packageID),
- set('data-divid', "{$moduleName}{$packageID}"),
- div
- (
- setClass('checkbox-primary'),
- checkbox
- (
- set::name("actions[{$priv->module}][]"),
- setID("actions[{$priv->module}]{$priv->method}"),
- set::value($priv->method),
- set::checked($priv->method == $privMethod),
- set::text($priv->name),
- set('data-id', $privID)
- )
- )
- );
+
+ $checked = $priv->method == $privMethod;
+ $checkID = "actions[{$priv->module}]{$priv->method}";
+ $html .= "';
}
- return $privsBox;
+ return $html;
};
- $getPackagesBox = function($subsetName, $packages, $groupPrivs)
+ $getPackagesBoxHtml = function($subsetName, $packages, $groupPrivs)
{
global $lang;
- $packagesBox = array();
+ $html = '';
foreach($packages as $packageID => $package)
{
$packagePrivs = $package->allCount;
$packageSelect = $package->selectCount;
- $packagesBox[] = array
- (
- div
- (
- setClass('package'),
- set('data-module', $subsetName),
- set('data-package', $packageID),
- set('all-privs', $packagePrivs),
- set('select-privs', $packageSelect),
- set('data-divid', "{$subsetName}{$packageID}"),
- div
- (
- setClass('checkbox-primary checkbox-inline checkbox-left check-all'),
- checkbox
- (
- setID("allCheckerModule{$subsetName}Package{$packageID}"),
- set::value(1),
- set::checked($packagePrivs == $packageSelect),
- set::text($lang->group->package->$packageID),
- set::labelClass(!empty($packageSelect) && $packagePrivs != $packageSelect ? 'text-left checkbox-indeterminate-block' : 'text-left')
- )
- ),
- h::i(setClass('priv-toggle icon'))
- ),
- div
- (
- setClass('privs hidden'),
- set('data-module', $subsetName),
- set('data-package', $packageID),
- set('data-divid', "{$subsetName}{$packageID}"),
- div(setClass('arrow')),
- div
- (
- setClass('popover-content'),
- getPrivsItems($package->privs, $subsetName, $packageID, $groupPrivs)
- )
- )
- );
+
+ $checked = $packagePrivs == $packageSelect;
+ $checkID = "allCheckerModule{$subsetName}Package{$packageID}";
+
+ $html .= "";
+ $html .= "
";
+ $html .= "";
+ $html .= "";
+ $html .= '
';
+ $html .= '
';
+ $html .= '
';
+
+ $html .= "";
+ $html .= '
';
+ $html .= '
';
+ $html .= getPrivsItemsHtml($package->privs, $subsetName, $packageID, $groupPrivs);
+ $html .= '
';
+ $html .= '
';
}
- return $packagesBox;
+ return $html;
};
- $privBody = null;
+ $privBodyHtml = array();
foreach($subsets as $subsetName => $subset)
{
if($subset->allCount == 0) continue;
$subsetTitle = isset($lang->$subsetName) && isset($lang->$subsetName->common) ? $lang->$subsetName->common : $subsetName;
- $privBody[] = h::tr
- (
- setClass(cycle('even, bg-gray')),
- h::th
- (
- setClass('text-middle text-left module'),
- set('data-module', $subsetName),
- set('all-privs', $subset->allCount),
- set('select-privs', $subset->selectCount),
- div
- (
- setClass('checkbox-primary checkbox-inline checkbox-left check-all'),
- checkbox
- (
- setID("allChecker{$subsetName}"),
- set::labelClass($subset->selectCount && $subset->selectCount != $subset->allCount ? 'text-left checkbox-indeterminate-block' : 'text-left'),
- set::value(1),
- set::checked($subset->selectCount && $subset->selectCount == $subset->allCount),
- set::text($subsetTitle)
- )
- )
- ),
- h::td
- (
- setClass('td-sm text-middle text-left package-column'),
- set('data-module', $subsetName),
- $getPackagesBox($subsetName, $packages[$subsetName], $groupPrivs)
- )
- );
+ $privBodyHtml[] = '';
+
+ $checked = $subset->selectCount && $subset->selectCount == $subset->allCount;
+ $checkID = "allChecker{$subsetName}";
+ $privBodyHtml[] = "| ";
+ $privBodyHtml[] = '';
+ $privBodyHtml[] = ' | ';
+
+ $privBodyHtml[] = "";
+ $privBodyHtml[] = $getPackagesBoxHtml($subsetName, $packages[$subsetName], $groupPrivs);
+ $privBodyHtml[] = ' | ';
+
+ $privBodyHtml[] = '
';
}
$dependTree = null;
@@ -341,7 +294,7 @@ else
)
);
- form
+ formBase
(
setID('managePrivForm'),
formHidden('actions[][]', ''),
@@ -353,7 +306,7 @@ else
setClass('flex'),
div
(
- setClass('main main-content'),
+ setClass('main main-content canvas'),
div
(
setClass('btn-group'),
@@ -373,7 +326,7 @@ else
h::table
(
setID('privPackageList'),
- setClass('table table-hover table-striped table-bordered'),
+ setClass('table table-striped table-bordered'),
h::thead
(
h::tr
@@ -390,10 +343,7 @@ else
)
)
),
- h::tbody
- (
- $privBody
- )
+ h::tbody(html($privBodyHtml))
)
),
div