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 .= "
"; + $html .= ""; + $html .= ""; + $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[] = ""; + $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[] = '
'; + $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 .= "
"; + $html .= ""; + $html .= ""; + $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 .= "'; } - 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[] = '
'; + $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