* @package project * @link https://www.zentao.net */ namespace zin; jsVar('window.selectedPrivIdList', $selectedPrivList); jsVar('allPrivList', $allPrivList); jsVar('groupID', $groupID); jsVar('projectID', $projectID); jsVar('type', $type); if($group->role == 'limited') { div ( setID('featureBar'), menu ( setClass('nav nav-feature w-full'), li ( setclass('nav-item'), a ( setclass('active'), span($group->name) ) ) ) ); form ( setID('managePrivForm'), setClass('gap-0' . ($app->getClientLang() == 'en' ? ' en-priv' : '')), set::actions(array()), div ( setID('mainContent'), setClass('main main-content manageLimitGroup'), h::table ( setClass('table table-hover table-striped table-bordered'), h::thead ( h::tr ( h::th($lang->group->module), h::th($lang->group->method) ) ), h::tr ( setClass(cycle('even, bg-gray')), h::th ( setClass('text-right w-40'), $lang->my->common ), h::td ( setID('my'), checkbox ( setID('my-limited'), set::labelClass('priv nowrap'), set::name('actions[my][]'), set::value('limited'), set::checked(isset($groupPrivs['my']['limited'])), set::text($lang->my->limited) ) ), formHidden('noChecked', '') ) ) ), toolbar ( setClass('form-actions w-1/2'), btn(set(array('text' => $lang->save, 'btnType' => 'submit', 'type' => 'primary', 'onclick' => 'setNoChecked()'))), btn(set(array('text' => $lang->goback, 'url' => inlink('group', "project={$projectID}"), 'back' => true))) ) ); } else { $params = "projectID={$projectID}&groupID=$groupID&type=byPackage"; $getPrivsItemsHtml = function($privs, $moduleName, $packageID, $groupPrivs) { global $lang; $html = ''; foreach($privs as $privID => $priv) { $privMethod = isset($groupPrivs[$priv->module][$priv->method]) ? $priv->method : ''; $checked = $priv->method == $privMethod; $checkID = "actions[{$priv->module}]{$priv->method}"; $html .= "
"; $html .= ""; $html .= ""; $html .= '
'; } return $html; }; $getPackagesBoxHtml = function($subsetName, $packages, $groupPrivs) use ($getPrivsItemsHtml) { global $lang; $html = ''; foreach($packages as $packageID => $package) { $packagePrivs = $package->allCount; $packageSelect = $package->selectCount; $checked = $packagePrivs == $packageSelect; $checkID = "allCheckerModule{$subsetName}Package{$packageID}"; $html .= "
"; $html .= "
"; $html .= ""; $html .= ""; $html .= '
'; $html .= ''; $html .= '
'; $html .= "'; } return $html; }; $privBodyHtml = array(); foreach($subsets as $subsetName => $subset) { if($subset->allCount == 0) continue; $subsetTitle = isset($lang->$subsetName) && isset($lang->$subsetName->common) ? $lang->$subsetName->common : $subsetName; $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; foreach($relatedPrivData['depend'] as $dependPrivs) { $dependTree[] = checkboxGroup ( set::title(array('text' => $dependPrivs['text'], 'id' => "dependPrivs[{$dependPrivs['id']}]", 'name' => 'dependPrivs[]', 'data-id' => $dependPrivs['id'], 'data-has-children' => !empty($dependPrivs['children']), 'disabled' => true, 'checked' => true)), !empty($dependPrivs['children']) ? set::items($dependPrivs['children']) : null ); } $recommendTree = null; foreach($relatedPrivData['recommend'] as $recommendPrivs) { $recommendTree[] = checkboxGroup ( set::title(array('text' => $recommendPrivs['text'], 'id' => "recommendPrivs[{$recommendPrivs['id']}]", 'name' => 'recommendPrivs[]', 'data-id' => $recommendPrivs['id'], 'data-has-children' => !empty($recommendPrivs['children']))), !empty($recommendPrivs['children']) ? set::items($recommendPrivs['children']) : null ); } div ( setID('featureBar'), menu ( setClass('nav nav-feature w-full'), li ( span ( icon('lock mr-2'), $group->name ) ), li ( span ( set::className('text-md text-gray'), html($lang->arrow) ) ), li ( setclass('nav-item'), a ( setclass(empty($nav) ? 'active' : ''), set::href(inlink('managepriv', sprintf($params, ''))), span($lang->group->all) ) ) ) ); formBase ( setID('managePrivForm'), setClass('gap-0' . ($app->getClientLang() == 'en' ? ' en-priv' : '')), formHidden('actions[][]', ''), formHidden('noChecked', ''), set::actions(array()), div ( setID('managePrivFormContainer'), setClass('flex'), div ( setClass('main main-content canvas'), h::table ( setID('privPackageList'), setClass('table table-striped table-bordered'), on::click()->call('handlePrivPackageListClick', jsRaw('event')), h::thead ( h::tr ( h::th ( setClass('module'), $lang->group->module ), h::th ( setClass('package'), $lang->privpackage->common ) ) ), h::tbody(html($privBodyHtml)) ) ), div ( setClass('side relative'), on::click('.recommend input[type=checkbox]')->call('handleSideRecommentCheckClick', jsRaw('$this')), div ( setClass('btn-group absolute top-0.5 right-full z-10 mr-8'), setID('switchBtnGroup'), a ( setClass('btn switchBtn text-primary'), set::href(inlink('managePriv', "projectID=$projectID&groupID=$groupID&type=byPackage")), html("") ), a ( setClass('btn switchBtn'), set::href(inlink('managePriv', "projectID=$projectID&groupID=$groupID&type=byGroup")), html("") ) ), div ( setClass('priv-panel'), div ( setClass('panel-title'), $lang->group->dependentPrivs, icon ( 'help', set('data-toggle', 'tooltip'), set('data-title', $lang->group->dependPrivTips), set('data-placement', 'right'), set('data-type', 'white'), set('data-class-name', 'text-gray border border-light w-40'), setClass('text-gray') ) ), div ( setClass('panel-content'), div ( setClass('menuTree depend menu-active-primary menu-hover-primary'), setClass(count($relatedPrivData['depend']) == 0 ? 'hidden' : ''), $dependTree ), div ( setClass('table-empty-tip text-center'), setClass(count($relatedPrivData['depend']) > 0 ? 'hidden' : ''), span ( setClass('text-gray'), $lang->noData ) ) ) ), div ( setClass('priv-panel mt-m'), div ( setClass('panel-title'), $lang->group->recommendPrivs, icon ( 'help', set('data-toggle', 'tooltip'), set('data-title', $lang->group->recommendPrivTips), set('data-placement', 'right'), set('data-type', 'white'), set('data-class-name', 'text-gray border border-light w-40'), setClass('text-gray') ) ), div ( setClass('panel-content'), div ( setClass('menuTree recommend menu-active-primary menu-hover-primary'), setClass(count($relatedPrivData['recommend']) == 0 ? 'hidden' : ''), $recommendTree ), div ( setClass('table-empty-tip text-center'), setClass(count($relatedPrivData['recommend']) > 0 ? 'hidden' : ''), span ( setClass('text-gray'), $lang->noData ) ) ) ) ) ), toolbar ( setClass('form-actions priv-footer'), checkbox ( setID('allChecker'), set::rootClass('check-all'), set::text($lang->selectAll) ), btn(set(array('text' => $lang->save, 'btnType' => 'submit', 'type' => 'primary', 'onclick' => 'setNoChecked()'))), btn(set(array('text' => $lang->goback, 'url' => inlink('group', "project={$projectID}"), 'back' => true))) ) ); } /* ====== Render page ====== */ render();