/** * 默认方法 * @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(); }
/** * 单个微+插件主页 * @param $name 插件名称 * @author jry <*****@*****.**> */ public function adminList($name, $tab = 1) { //获取插件实例 $addon_class = get_addon_class($name); if (!class_exists($addon_class)) { $this->error('插件不存在'); } else { $addon = new $addon_class(); } //获取插件的$admin_list配置 $admin_list = $addon->admin_list; $tab_list = array(); foreach ($admin_list as $key => $val) { $tab_list[$key]['title'] = $val['title']; $tab_list[$key]['href'] = U('Home/Addon/adminList/name/' . $name . '/tab/' . $key); } $admin = $admin_list[$tab]; $param = D('Addons://' . $name . '/' . $admin['model'] . '')->adminList; if ($param) { //搜索 $keyword = (string) I('keyword'); $condition = array('like', '%' . $keyword . '%'); $map['id|' . $param['search_key']] = array($condition, $condition, '_multi' => true); //获取数据列表 $data_list = M($param['model'])->page(!empty($_GET["p"]) ? $_GET["p"] : 1, C('ADMIN_PAGE_ROWS'))->where($map)->field(true)->order($param['order'])->select(); $page = new \Common\Util\Page(M($param['model'])->where($map)->count(), C('ADMIN_PAGE_ROWS')); //使用Builder快速建立列表页面。 $builder = new \Common\Builder\ListBuilder(); $builder->setMetaTitle($addon->info['title'])->AddTopButton('addnew', array('href' => U('Home/Addon/adminAdd/name/' . $name . '/tab/' . $tab)))->AddTopButton('resume', array('model' => $param['model']))->AddTopButton('forbid', array('model' => $param['model']))->setSearch('请输入关键字', U('Home/Addon/adminList/name/' . $name, array('tab' => $tab)))->SetTabNav($tab_list, $tab)->setTableDataList($data_list)->setTableDataPage($page->show()); //数据列表分页 //根据插件的list_grid设置后台列表字段信息 foreach ($param['list_grid'] as $key => $val) { $builder->addTableColumn($key, $val['title'], $val['type']); } //根据插件的right_button设置后台列表右侧按钮 foreach ($param['right_button'] as $key => $val) { $builder->addRightButton('self', $val); } //定义编辑按钮 $attr = array(); $attr['title'] = '编辑'; $attr['class'] = 'label label-info'; $attr['href'] = U('Home/Addon/adminEdit', array('name' => $name, 'tab' => $tab, 'id' => '__data_id__')); //显示列表 $builder->addTableColumn('right_button', '操作', 'btn')->addRightButton('self', $attr)->addRightButton('forbid', array('model' => $param['model']))->addRightButton('delete', array('model' => $param['model']))->setTemplate('_Builder/listbuilder_addon')->display(); } else { $this->error('插件列表信息不正确'); } }