/** * 获取所有数据并转换成一维数组 * @author jry <*****@*****.**> */ function select_list_as_tree($model, $map = null, $extra = null, $key = 'id') { //获取列表 $con['status'] = array('eq', 1); if ($map) { $con = array_merge($con, $map); } $model_object = D($model); if (in_array('sort', $model_object->getDbFields())) { $list = $model_object->where($con)->order('sort asc, id asc')->select(); } else { $list = $model_object->where($con)->order('id asc')->select(); } //转换成树状列表(非严格模式) $tree = new \Common\Util\Tree(); $list = $tree->toFormatTree($list, 'title', 'id', 'pid', 0, false); if ($extra) { $result[0] = $extra; } //转换成一维数组 foreach ($list as $val) { $result[$val[$key]] = $val['title_show']; } return $result; }
/** * 分类列表 * @author jry <*****@*****.**> */ public function index($tab = 1) { //搜索 $keyword = (string) I('keyword'); $condition = array('like', '%' . $keyword . '%'); $map['id|title'] = array($condition, $condition, '_multi' => true); //获取所有分类 $map['status'] = array('egt', '0'); //禁用和正常状态 if (I('get.pid')) { $map['pid'] = array('eq', I('get.pid')); //父分类ID } $map['group'] = array('eq', $tab); $data_list = D('Category')->field('id,pid,group,doc_type,title,url,icon,ctime,sort,status')->where($map)->order('sort asc,id asc')->select(); foreach ($data_list as &$item) { if ($item['doc_type'] >= 3) { $item['title'] = '<a href="' . U('Document/index', array('cid' => $item['id'])) . '">' . $item['title'] . '</a>'; } } //转换成树状列表 $tree = new \Common\Util\Tree(); $data_list = $tree->toFormatTree($data_list); $attr['title'] = '编辑'; $attr['href'] = 'Admin/Category/edit/tab/' . $tab . '/id/'; //使用Builder快速建立列表页面。 $builder = new \Common\Builder\ListBuilder(); $builder->title('分类列表')->AddNewButton('Admin/Category/add/tab/' . $tab)->addResumeButton()->addForbidButton()->setSearch('请输入ID/分类名称', U('Admin/Category/index/tab/' . $tab))->SetTablist(C('CATEGORY_GROUP_LIST'))->SetCurrentTab($tab)->addField('id', 'ID', 'text')->addField('title_show', '分类', 'text')->addField('url', '链接', 'text')->addField('icon', '图标', 'icon')->addField('sort', '排序', 'text')->addField('status', '状态', 'status')->addField('right_button', '操作', 'btn')->dataList($data_list)->addRightButton('self', $attr)->addRightButton('forbid')->addRightButton('delete')->display(); }
/** * 菜单列表 */ public function index() { //搜索 $keyword = (string) I('keyword'); $condition = array('like', '%' . $keyword . '%'); $map['id|title'] = array($condition, $condition, '_multi' => true); //搜索条件 //获取所有菜单 $map['status'] = array('egt', 0); //禁用和正常状态 $data_list = D('SystemMenu')->where($map)->order('sort asc, id asc')->select(); //转换成树状列表 $tree = new \Common\Util\Tree(); $data_list = $tree->toFormatTree($data_list); //使用Builder快速建立列表页面。 $builder = new \Common\Builder\ListBuilder(); $builder->title('菜单列表')->AddNewButton()->addResumeButton()->addForbidButton()->addDeleteButton()->setSearch('请输入ID/菜单名称', U('index'))->addField('id', 'ID', 'text')->addField('title_show', '标题', 'text')->addField('url', '链接', 'text')->addField('icon', '图标', 'icon')->addField('sort', '排序', 'text')->addField('status', '状态', 'status')->addField('right_button', '操作', 'btn')->dataList($data_list)->addRightButton('edit')->addRightButton('forbid')->addRightButton('delete')->display(); }
/** * 分类列表 * @author jry <*****@*****.**> */ public function index($group = 1) { // 搜索 $keyword = I('keyword', '', 'string'); $condition = array('like', '%' . $keyword . '%'); $map['id|title'] = array($condition, $condition, '_multi' => true); // 获取所有分类 $map['status'] = array('egt', '0'); // 禁用和正常状态 if (I('get.pid')) { $map['pid'] = array('eq', I('get.pid')); // 父分类ID } $map['group'] = array('eq', $group); $data_list = D('Category')->field('id,pid,group,doc_type,title,url,icon,create_time,sort,status')->where($map)->order('sort asc,id asc')->select(); // 非系统特殊类型则给标题加上链接以便于进入相应文档列表 foreach ($data_list as &$item) { $document_type = D('Type')->find($item['doc_type']); // 获取当前文档类型 if ($document_type['system'] === '0') { $item['title'] = '<a href="' . U('Article/Admin/Article/index', array('cid' => $item['id'])) . '">' . $item['title'] . '</a>'; } } // 转换成树状列表 $tree = new \Common\Util\Tree(); $data_list = $tree->toFormatTree($data_list); // 设置Tab导航数据列表 $category_group_list = D('Category')->group_list(); // 获取分类分组 foreach ($category_group_list as $key => $val) { $tab_list[$key]['title'] = $val; $tab_list[$key]['href'] = U('index', array('group' => $key)); } $attr['title'] = '编辑'; $attr['class'] = 'label label-primary'; $attr['href'] = U('edit', array('group' => $group, 'id' => '__data_id__')); // 使用Builder快速建立列表页面。 $builder = new \Common\Builder\ListBuilder(); $builder->setMetaTitle('分类列表')->addTopButton('addnew', array('href' => U('add', array('group' => $group))))->addTopButton('resume', array('model' => $this->model))->addTopButton('forbid', array('model' => $this->model))->setSearch('请输入ID/分类名称', U('index', array('group' => $group)))->setTabNav($tab_list, $group)->addTableColumn('id', 'ID')->addTableColumn('title_show', '分类')->addTableColumn('url', '链接')->addTableColumn('icon', '图标', 'icon')->addTableColumn('sort', '排序')->addTableColumn('status', '状态', 'status')->addTableColumn('right_button', '操作', 'btn')->setTableDataList($data_list)->addRightButton('self', $attr)->addRightButton('hide', array('model' => $this->model))->addRightButton('forbid', array('model' => $this->model))->addRightButton('delete', array('model' => $this->model))->display(); }
/** * 分类列表 * @author jry <*****@*****.**> */ public function index($group = 1) { //搜索 $keyword = (string) I('keyword'); $condition = array('like', '%' . $keyword . '%'); $map['id|title'] = array($condition, $condition, '_multi' => true); //获取所有分类 $map['status'] = array('egt', '0'); //禁用和正常状态 if (I('get.pid')) { $map['pid'] = array('eq', I('get.pid')); //父分类ID } $map['group'] = array('eq', $group); $data_list = D('Category')->field('id,pid,group,doc_type,title,url,icon,ctime,sort,status')->where($map)->order('sort asc,id asc')->select(); foreach ($data_list as &$item) { if ($item['doc_type'] >= 3) { $item['title'] = '<a href="' . U('Document/index', array('cid' => $item['id'])) . '">' . $item['title'] . '</a>'; } } //转换成树状列表 $tree = new \Common\Util\Tree(); $data_list = $tree->toFormatTree($data_list); //设置Tab导航数据列表 $category_group_list = C('CATEGORY_GROUP_LIST'); //获取分类分组 foreach ($category_group_list as $key => $val) { $tab_list[$key]['title'] = $val; $tab_list[$key]['href'] = U('index', array('group' => $key)); } $attr['title'] = '编辑'; $attr['class'] = 'label label-info'; $attr['href'] = U('Admin/Category/edit/group/' . $group . '/id/[__data_id__]'); //使用Builder快速建立列表页面。 $builder = new \Common\Builder\ListBuilder(); $builder->setMetaTitle('分类列表')->addTopButton('addnew', array('href' => U('Admin/Category/add/group/' . $group)))->addTopButton('resume')->addTopButton('forbid')->setSearch('请输入ID/分类名称', U('Admin/Category/index/group/' . $group))->setTabNav($tab_list, $group)->addTableColumn('id', 'ID')->addTableColumn('title_show', '分类')->addTableColumn('url', '链接')->addTableColumn('icon', '图标', 'icon')->addTableColumn('sort', '排序')->addTableColumn('status', '状态', 'status')->addTableColumn('right_button', '操作', 'btn')->setTableDataList($data_list)->addRightButton('self', $attr)->addRightButton('forbid')->addRightButton('delete')->display(); }
/** * 获取所有数据并转换成一维数组 * @author jry <*****@*****.**> */ public function selectListAsTree($model, $map = null, $extra = null) { //获取列表 $map['status'] = array('eq', 1); $list = D($model)->where($map)->select(); //转换成树状列表 $tree = new \Common\Util\Tree(); $list = $tree->toFormatTree($list); if ($extra) { $result[0] = $extra; } //转换成一维数组 foreach ($list as $val) { $result[$val['id']] = $val['title_show']; } return $result; }
/** * 默认方法 * @author jry <*****@*****.**> */ public function index($cid) { //分类权限检测 if (!D('UserGroup')->checkCategoryAuth($cid)) { $this->error('权限不足!'); } //获取分类信息 $category_info = D('Category')->find($cid); //获取该分类绑定文档模型的主要字段 $document_type_object = D('DocumentType'); $document_type = $document_type_object->find($category_info['doc_type']); $document_type_main_field = D('DocumentAttribute')->getFieldById($document_type['main_field'], 'name'); //获取分类绑定模型定义的列表需要显示的字段 $doc_type_list_field = explode(',', $document_type['list_field']); //获取文档字段 $map = array(); $map['status'] = array('eq', '1'); $map['show'] = array('eq', '1'); $map['id'] = array('in', $doc_type_list_field); //只获取列表定义的字段 $map['doc_type'] = array('eq', $category_info['doc_type']); $attribute_list = D('DocumentAttribute')->where($map)->select(); $attribute_list_search = D('DocumentAttribute')->where($map)->getField('name', true); //获取文档信息 $map = array(); $map['cid'] = $cid; $map['status'] = array('egt', 0); //搜索条件这里用了TP的复合查询 //封装了一个新的查询条件$map_field,然后并入原来的查询条件$map之中,所以可以完成比较复杂的查询条件组装 $keyword = I('keyword', '', 'string'); if ($attribute_list_search && $keyword) { foreach ($attribute_list_search as $attribute) { $map_field[$attribute] = array('like', '%' . $keyword . '%'); //搜索条件 } $map_field['_logic'] = 'or'; $map['_complex'] = $map_field; } //获取文档列表 $document_list = D('Document')->getDocumentList($cid, C('ADMIN_PAGE_ROWS'), null, $map); $document_table = C('DB_PREFIX') . 'document_' . strtolower($document_type['name']); //分页 $page = new \Common\Util\Page(D('Document')->where($map)->join($document_table . ' ON __DOCUMENT__.id = ' . $document_table . '.id')->count(), C('ADMIN_PAGE_ROWS')); //移动按钮属性 $move_attr['title'] = '移 动'; $move_attr['class'] = 'btn btn-info'; $move_attr['onclick'] = 'move()'; //构造移动文档所需内容 $map = array(); $map['status'] = array('eq', 1); $map['doc_type'] = array('eq', $category_info['doc_type']); //文档类型相同的分类才能移动 $category_list = D('Category')->where($map)->select(); $tree = new \Common\Util\Tree(); $category_list = $tree->toFormatTree($category_list); //构造移动文档的目标分类列表 $options = ''; foreach ($category_list as $key => $val) { $options .= '<option value="' . $val['id'] . '">' . $val['title_show'] . '</option>'; } //文档移动POST地址 $move_url = U('Admin/Document/move'); $extra_html = <<<EOF <div class="modal fade" id="moveModal"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">关闭</span></button> <p class="modal-title">移动至</p> </div> <div class="modal-body"> <form action="{$move_url}" method="post" class="form"> <div class="form-group"> <select name="to_cid" class="form-control">{$options}</select> </div> <div class="form-group"> <input type="hidden" name="ids"> <input type="hidden" name="from_cid" value="{$cid}"> <button class="btn btn-primary btn-block submit ajax-post" type="submit" target-form="form">确 定</button> </div> </form> </div> </div> </div> </div> <script type="text/javascript"> function move(){ var ids = ''; \$('input[name="ids[]"]:checked').each(function(){ ids += ',' + \$(this).val(); }); if(ids != ''){ ids = ids.substr(1); \$('input[name="ids"]').val(ids); \$('.modal-title').html('移动选中的的文章至:'); \$('#moveModal').modal('show', 'fit') }else{ \$.alertMessager('请选择需要移动的文章', 'danger'); } } </script> EOF; //使用Builder快速建立列表页面。 $builder = new \Common\Builder\ListBuilder(); $builder->setMetaTitle($category_info['title'])->addTopButton('self', array('title' => '<i class="fa fa-reply"></i> 返回分类', 'class' => 'btn btn-warning', 'onclick' => 'javascript:history.back(-1);return false;'))->addTopButton('addnew', array('href' => U('add', array('cid' => $cid))))->addTopButton('resume')->addTopButton('forbid')->addTopButton('recycle')->addTopButton('self', $move_attr)->setSearch('请输入ID/标题', U('index', array('cid' => $cid)))->addTableColumn('id', 'ID'); //动态生成列表显示的字段 foreach ($attribute_list as $attribute) { $builder->addTableColumn($attribute['name'], $attribute['title'], $attribute['type']); } //继续使用Builder快速建立列表页面 $builder->addTableColumn('ctime', '发布时间', 'time')->addTableColumn('sort', '排序', 'text')->addTableColumn('status', '状态', 'status')->addTableColumn('right_button', '操作', 'btn')->setTableDataList($document_list)->setTableDataPage($page->show())->addRightButton('edit')->addRightButton('forbid')->addRightButton('recycle')->setExtraHtml($extra_html)->display(); }
/** * 默认方法 * @author jry <*****@*****.**> */ public function index($cid = null) { //搜索 $keyword = (string) I('keyword'); $condition = array('like', '%' . $keyword . '%'); $map['id|title'] = array($condition, $condition, '_multi' => true); if ($cid) { $map['cid'] = $cid; $category = D('Category')->find($cid); } $map['status'] = array('egt', 0); $document_list = D('Document')->page(!empty($_GET["p"]) ? $_GET["p"] : 1, C('ADMIN_PAGE_ROWS'))->order('sort desc,id desc')->where($map)->select(); $page = new \Common\Util\Page(D('Document')->where($map)->count(), C('ADMIN_PAGE_ROWS')); //新增按钮属性 $add_attr['class'] = 'btn btn-primary'; $add_attr['href'] = U('add', array('cid' => $cid)); //移动按钮属性 $move_attr['class'] = 'btn btn-info'; $move_attr['onclick'] = 'move()'; //构造移动文档所需内容 $map = array(); $map['status'] = array('eq', 1); $map['doc_type'] = array('eq', $category['doc_type']); //文档类型相同的分类才能移动 $category_list = D('Category')->where($map)->select(); $tree = new \Common\Util\Tree(); $category_list = $tree->toFormatTree($category_list); //构造移动文档的目标分类列表 $options = ''; foreach ($category_list as $key => $val) { $options .= '<option value="' . $val['id'] . '">' . $val['title_show'] . '</option>'; } $extra_html = <<<EOF <div class="modal fade" id="moveModal"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">关闭</span></button> <p class="modal-title">移动至</p> </div> <div class="modal-body"> <form action="{:U('Document/move')}" method="post" class="form"> <div class="form-group"> <select name="to_cid" class="form-control">{$options}</select> </div> <div class="form-group"> <input type="hidden" name="ids"> <input type="hidden" name="from_cid" value="{$cid}"> <button class="btn btn-primary btn-block submit ajax-post" type="submit" target-form="form">确 定</button> </div> </form> </div> </div> </div> </div> <script type="text/javascript"> function move(){ var ids = ''; \$('input[name="ids[]"]:checked').each(function(){ ids += ',' + \$(this).val(); }); if(ids != ''){ ids = ids.substr(1); \$('input[name="ids"]').val(ids); \$('.modal-title').html('移动选中的的文章至:'); \$('#moveModal').modal('show', 'fit') }else{ alertMessager('请选择需要移动的文章', 'danger'); } } </script> EOF; //使用Builder快速建立列表页面。 $builder = new \Common\Builder\ListBuilder(); $builder->title($category['title'])->addButton('新 增', $add_attr)->addResumeButton()->addForbidButton()->addRecycleButton()->AddButton('移 动', $move_attr)->setSearch('请输入ID/标题', U('index'))->addField('id', 'ID', 'text')->addField('title', '标题', 'text')->addField('ctime', '发布时间', 'time')->addField('sort', '排序', 'text')->addField('status', '状态', 'status')->addField('right_button', '操作', 'btn')->dataList($document_list)->addRightButton('edit')->addRightButton('forbid')->addRightButton('recycle')->setPage($page->show())->setExtraHtml($extra_html)->display(); }
/** * 编辑部门 * @author jry <*****@*****.**> */ public function edit($id) { if (IS_POST) { $user_group_object = D('UserGroup'); $_POST['auth'] = implode(',', I('post.auth')); $data = $user_group_object->create(); if ($data) { if ($user_group_object->save() !== false) { $this->success('更新成功', U('index')); } else { $this->error('更新失败'); } } else { $this->error($user_group_object->getError()); } } else { $info = D('UserGroup')->find($id); $info['auth'] = explode(',', $info['auth']); $map['status'] = array('egt', 0); $tree = new \Common\Util\Tree(); $all_group = $tree->toFormatTree(D('UserGroup')->where($map)->order('sort asc,id asc')->select()); $all_group = array_merge(array(0 => array('id' => 0, 'title_show' => '顶级部门')), $all_group); $this->assign('all_group', $all_group); $this->assign('info', $info); $this->meta_title = '编辑部门'; $this->display('add_edit'); } }
/** * 获取所有数据并转换成一维数组 * @author jry <*****@*****.**> */ function select_list_as_tree($model, $map = null, $extra = null) { //获取列表 $con['status'] = array('eq', 1); if ($map) { $con = array_merge($con, $map); } $list = D($model)->where($con)->select(); //转换成树状列表(非严格模式) $tree = new \Common\Util\Tree(); $list = $tree->toFormatTree($list, 'title', 'id', 'pid', 0, false); if ($extra) { $result[0] = $extra; } //转换成一维数组 foreach ($list as $val) { $result[$val['id']] = $val['title_show']; } return $result; }
/** * 编辑部门 * @author jry <*****@*****.**> */ public function edit($id) { if (IS_POST) { $user_group_object = D('UserGroup'); $_POST['menu_auth'] = implode(',', I('post.menu_auth')); $_POST['category_auth'] = implode(',', I('post.category_auth')); $data = $user_group_object->create(); if ($data) { if ($user_group_object->save() !== false) { $this->success('更新成功', U('index')); } else { $this->error('更新失败'); } } else { $this->error($user_group_object->getError()); } } else { //获取部门信息 $info = D('UserGroup')->find($id); $info['menu_auth'] = explode(',', $info['menu_auth']); $info['category_auth'] = explode(',', $info['category_auth']); //获取现有部门 $map['status'] = array('egt', 0); $tree = new \Common\Util\Tree(); $all_group = $tree->toFormatTree(D('UserGroup')->where($map)->order('sort asc,id asc')->select()); $all_group = array_merge(array(0 => array('id' => 0, 'title_show' => '顶级部门')), $all_group); //获取栏目分类权限节点(系统权限节点直接使用AdminController里的__ALL_MENU_LIST__) $category_auth_list = array(); $category_group_list = C('CATEGORY_GROUP_LIST'); foreach ($category_group_list as $key => $val) { //获取当前分组下的分类 $map['status'] = array('egt', 1); $map['group'] = array('eq', $key); $category_list = $tree->toFormatTree(D('Category')->where($map)->select()); //构造权限列表 $category_auth_list[$key]['title'] = $val; $category_auth_list[$key]['auth'] = $category_list; } $this->assign('all_group', $all_group); $this->assign('category_auth_list', $category_auth_list); $this->assign('info', $info); $this->assign('meta_title', '编辑部门'); $this->display('add_edit'); } }