model = new RoleModel(); } // 角色列表 public function index() { $this->assign('list', true); $this->assign('roles', $this->model->getList()); // 数据区域选择 $area_model = model('admin.system.Area'); $area_tree = $area_model->getSelect(); $area_checkbox = $this->makeAreaCheckbox($area_tree); $this->assign('area_checkbox', $area_checkbox); // 菜单权限表 $menu_model = model('admin.system.Menu'); $menu_level = $menu_model->getMenuLevel(); $menus = $menu_model->getSelect(); $menu_list = $this->makeLevelList($menus, $menu_level); $this->assign('menu_list', $menu_list); $this->display('system/role.html'); } // 角色增加 public function add() { if ($_POST) { // 获取数据 $rcode = get_auto_code($this->model->getLastCode()); // 自动编码 $name = post('name'); $description = post('description'); $acodes = post('acodes', 'array', false, '角色数据区域', array()); // 区域 $levels = post('levels', 'array', false, '角色权限', array()); // 权限 if (! $rcode) { alert_back('编码不能为空!'); } if (! $name) { alert_back('角色名不能为空!'); } // 检查编码 if ($this->model->checkRole("rcode='$rcode'")) { alert_back('该角色编号已经存在,不能再使用!'); } // 构建数据 $data = array( 'rcode' => $rcode, 'name' => $name, 'description' => $description, 'create_user' => session('username'), 'update_user' => session('username') ); // 执行添加 if ($this->model->addRole($data, $acodes, $levels)) { $this->log('修改角色' . $rcode . '成功!'); if (! ! $backurl = get('backurl')) { success('新增成功!', base64_decode($backurl)); } else { success('新增成功!', url('admin/Role/index')); } } else { $this->log('修改角色' . $rcode . '失败!'); error('新增失败!', - 1); } } } // 生成区域选择,无限制 private function makeAreaCheckbox($tree, $checkeds = array()) { $list_html = ''; foreach ($tree as $values) { if (in_array($values->acode, $checkeds)) { $checked = 'checked="checked"'; } else { $checked = ''; } if (! $values->son) { // 没有子类才显示选择框 $list_html .= ""; } else { $list_html .= $this->makeAreaCheckbox($values->son, $checkeds); } } return $list_html; } // 生成无限级菜单权限列表 private function makeLevelList($menus, $menu_level, $checkeds = array()) { $menu_html = ''; foreach ($menus as $value) { $string = ''; // 根据是否有子栏目生成图标 if ($value->son) { $ico = ""; } else { $ico = ""; } // 选中状态 if (in_array($value->url, $checkeds)) { $checked = 'checked="checked"'; } else { $checked = ''; } // 获取模块及控制器路径 if ($value->url) { $pre_url = substr($value->url, 0, get_strpos($value->url, '/', 3) + 1); } else { error('"' . $value->name . '"菜单地址为空,请核对!'); } $string = ""; $mcode = $value->mcode; if (array_key_exists($mcode, $menu_level)) { foreach ($menu_level[$mcode] as $key2 => $value2) { $url = $pre_url . $value2->value; if (in_array($url, $checkeds)) { $checked = 'checked="checked"'; } else { $checked = ''; } $string .= ""; } } // 生成菜单html $menu_html .= "
{$this->blank} $ico {$value->name}
$string
"; // 子菜单处理 if ($value->son) { $this->blank .= '  '; $menu_html .= $this->makeLevelList($value->son, $menu_level, $checkeds); } } // 循环完后回归缩进位置 $this->blank = substr($this->blank, 0, - 6); return $menu_html; } // 角色删除 public function del() { if (! $rcode = get('rcode', 'var')) { error('传递的参数值错误!', - 1); } if ($this->model->delRole($rcode)) { $this->log('删除角色' . $rcode . '成功!'); success('删除成功!', - 1); } else { $this->log('删除角色' . $rcode . '失败!'); error('删除失败!', - 1); } } // 角色修改 public function mod() { if (! $rcode = get('rcode', 'var')) { error('传递的参数值错误!', - 1); } // 修改操作 if ($_POST) { // 获取数据 $name = post('name'); $description = post('description'); $acodes = post('acodes', 'array', false, '角色数据区域', array()); // 区域 $levels = post('levels', 'array', false, '角色权限', array()); // 权限 if (! $name) { alert_back('角色名不能为空!'); } // 构建数据 $data = array( 'name' => $name, 'description' => $description, 'update_user' => session('username') ); // 执行修改 if ($this->model->modRole($rcode, $data, $acodes, $levels)) { $this->log('修改角色' . $rcode . '成功!'); if (! ! $backurl = get('backurl')) { success('修改成功!', base64_decode($backurl)); } else { success('修改成功!', url('admin/Role/index')); } } else { location(- 1); } } else { $this->assign('mod', true); // 调取修改内容 $result = $this->model->getRole($rcode); if (! $result) { error('编辑的内容已经不存在!', - 1); } $this->assign('role', $result); // 数据区域选择 $area_model = model('admin.system.Area'); $area_tree = $area_model->getSelect(); $area_checkbox = $this->makeAreaCheckbox($area_tree, $result->acodes); $this->assign('area_checkbox', $area_checkbox); // 菜单权限表 $menu_model = model('admin.system.Menu'); $menu_level = $menu_model->getMenuLevel(); $menus = $menu_model->getSelect(); $menu_list = $this->makeLevelList($menus, $menu_level, $result->levels); $this->assign('menu_list', $menu_list); $this->display('system/role.html'); } } }