} } /* 初始化权限系统的权限文件和系统提示 */ init_privilege_sys_pfile(); make_json_ok(); } else { /* 权限检查 */ admin_privilege_valid('module.php', 'list'); /* 取得管理员的增加操作和非增加、列表操作 */ $m_aa = admin_module_acts('module.php'); $m_ab = filter_module_acts($m_aa, array('add'), true); $m_ac = filter_module_acts($m_aa, array('add', 'list'), false); array_unshift($m_ac, array('module_act_name' => $_LANG['act_dmove'], 'module_act_code' => 'dmove')); array_unshift($m_ac, array('module_act_name' => $_LANG['act_umove'], 'module_act_code' => 'umove')); /* 模块列表 */ $tpl['all'] = all_module(); /* 模块列表 - 数据重构 */ foreach ($tpl['all'] as $i => $r) { $tpl['all'][$i]['pre'] = '<span class="'; $tpl['all'][$i]['pre'] .= ($r['lvl'] > 1 ? 'minus' : 'plus') . '" style="'; $tpl['all'][$i]['pre'] .= $r['rht'] - $r['lft'] > 1 ? 'cursor:pointer;' : ''; $tpl['all'][$i]['pre'] .= 'margin-left:' . intval($r['lvl'] - $tpl['all'][0]['lvl']) * 2 . 'em;" '; $tpl['all'][$i]['pre'] .= 'onclick="tabletree_click(this)"></span>'; /* 编辑操作 */ $attribs = array(); $attribs['edit']['onclick'] = "wnd_module_fill(this,'edit',{$r[module_id]})"; /* 上/下移操作 */ $attribs['umove']['onclick'] = "deal_tbltr_move(this,'up',{$r[module_id]},'modules/kernel/module.php')"; $attribs['dmove']['onclick'] = "deal_tbltr_move(this,'down',{$r[module_id]},'modules/kernel/module.php')"; /* 增加操作 */ if ($r['lft'] != $r['rht'] - 1) {
/** * 下拉列表 - 模块 * * @params str $name 下拉列表名称 * @params mix $selected 下拉列表选中项 * @params arr $appends 下拉列表追加项 * @params arr $attribs 下拉列表属性 */ function ddl_module($name, $selected = '', $appends = array(), $attribs = array()) { global $_LANG; /* 初始化 */ $items = array(); /* 所有模块 */ $modules = all_module(); /* 下拉列表顶部项 */ if (is_array($appends)) { if (isset($appends['value']) && isset($appends['text'])) { $appends = array(array('value' => $appends['value'], 'text' => $appends['text'])); } foreach ($appends as $i => $item) { if (is_array($item) && isset($item['value']) && isset($item['text'])) { $items[] = $item; } } } /* 下拉列表项 */ foreach ($modules as $r) { $text = f(str_repeat(' ', ($r['lvl'] - 1) * 4) . $r['name'], 'html'); $items[] = array('value' => $r['module_id'], 'text' => $text); } $fc = new Formc(); return $fc->ddl($name, $items, array_merge(array('selected' => $selected), $attribs)); }
/** * 权限表 * * @params str $name 复选框的名字 * @params arr $seled_ids 被选中的权限IDS * @params arr $priv_ids 要显示的权限IDS,当为false表示显示全部 * * @return str */ function html_privilege_table($name, $seled_ids = array(), $priv_ids = false) { global $_LANG; /* 要显示的权限IDS为空时 */ if (is_array($priv_ids) && empty($priv_ids)) { return ''; } /* 初始化参数 */ if (!is_array($seled_ids)) { $seled_ids = array(); } if (!is_array($priv_ids)) { $priv_ids = false; } /* 构建权限SQL */ $sql = 'SELECT * FROM ' . tname('privilege'); //SELECT * FROM $sql .= $priv_ids === false ? '' : ' WHERE privilege_id IN("' . implode('","', $priv_ids) . '")'; //WHERE, 限制要显示的权限 $sql .= 'ORDER BY `order` ASC'; $privs = array(); $array = $GLOBALS['db']->getAll($sql); /* 重构权限数组 */ foreach ($array as $r) { $privs[$r['module_id']][] = $r; $m_ids[$r['module_id']] = $r['module_id']; //记录权限所在的模块 } /* 所有模块 */ $modules = all_module(); /* 过滤模块 */ for ($i = count($modules); $i >= 0; $i--) { /* 保留预设节点 */ if (in_array($modules[$i]['module_id'], $m_ids)) { continue; } /* 保留预设节点的父节点 */ if ($modules[$i + 1]['lvl'] > $modules[$i]['lvl']) { continue; } array_splice($modules, $i, 1); } $html = '<table class="form-table">'; foreach ($modules as $i => $module) { /* 模块无权限 - 说明该模块为模块组 */ if (empty($privs[$module['module_id']])) { $html .= '<tr style="background-color:#f9f9f9;"><td width="100" style="padding:4px;padding-left:6px;">'; $html .= '<b>' . $module['name'] . '</b></td><td></td></tr>'; continue; } $cb = $cbg = ''; $cb_checked = true; foreach ($privs[$module['module_id']] as $r) { /* 初始化权限表HTML的权限ID */ $pid = 'ptbl_privilege_' . $r['privilege_id'] . '_' . time(); $cbg .= '<input class="checkbox" type="checkbox"'; $cbg .= 'name="' . $name . '[]" value="' . $r['privilege_id'] . '" id="' . $pid . '" '; $cbg .= (in_array($r['privilege_id'], $seled_ids) ? 'checked="checked"' : '') . ' '; $cbg .= 'onclick="Formc.cbgSyncCbg(Formc.cbgByContainer(this.parentNode.previousSibling),Formc.cbgByContainer(this.parentNode))">'; $cbg .= '<label for="' . $pid . '">' . $r['module_act_name'] . '</label>'; $cb_checked &= in_array($r['privilege_id'], $seled_ids); } /* 初始化权限表HTML的模块ID */ $mid = 'ptbl_module_' . $module['module_id'] . '_' . time(); $cb .= '<tr><td>'; $cb .= '<input class="checkbox" type="checkbox" onclick="Formc.cbSyncCbg(this,Formc.cbgByContainer(this.parentNode.nextSibling))" '; $cb .= 'id="' . $mid . '"'; $cb .= $cb_checked ? 'checked="checked"' : ''; $cb .= '><label for="' . $mid . '" style="color:#005363">' . $module['name'] . '</label></td>'; $cb .= '<td align="left">'; $html .= $cb . $cbg . '</td></tr>'; } $html .= '</table>'; return $html; }