Content.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 海豚PHP框架 [ DolphinPHP ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://dolphinphp.com
  8. // +----------------------------------------------------------------------
  9. namespace app\cms\admin;
  10. use app\admin\controller\Admin;
  11. use app\common\builder\ZBuilder;
  12. use app\cms\model\Document;
  13. use think\Db;
  14. /**
  15. * 内容控制器
  16. * @package app\cms\admin
  17. */
  18. class Content extends Admin
  19. {
  20. /**
  21. * 空操作,用于显示各个模型的文档列表
  22. * @author 蔡伟明 <314013107@qq.com>
  23. * @return mixed
  24. * @throws \think\Exception
  25. * @throws \think\db\exception\DataNotFoundException
  26. * @throws \think\db\exception\ModelNotFoundException
  27. * @throws \think\exception\DbException
  28. */
  29. public function _empty()
  30. {
  31. cookie('__forward__', $_SERVER['REQUEST_URI']);
  32. $model_name = $this->request->action();
  33. $model = Db::name('cms_model')->where('name', $model_name)->find();
  34. if (!$model) $this->error('找不到该内容');
  35. // 独立模型
  36. if ($model['type'] == 2) {
  37. $table_name = substr($model['table'], strlen(config('database.prefix')));
  38. // 查询
  39. $map = $this->getMap();
  40. $map[] = ['trash', '=', 0];
  41. // 排序
  42. $order = $this->getOrder('update_time desc');
  43. // 数据列表
  44. $data_list = Db::view($table_name, true)
  45. ->view("cms_column", ['name' => 'column_name'], 'cms_column.id='.$table_name.'.cid', 'left')
  46. ->view("admin_user", 'username', 'admin_user.id='.$table_name.'.uid', 'left')
  47. ->where($map)
  48. ->order($order)
  49. ->paginate();
  50. $trash_count = Db::table($model['table'])->where('trash', 1)->count();
  51. // 自定义按钮
  52. $btnRecycle = [
  53. 'title' => '回收站('.$trash_count.')',
  54. 'icon' => 'fa fa-trash',
  55. 'class' => 'btn btn-info',
  56. 'href' => url('recycle/index', ['model' => $model['id']])
  57. ];
  58. $columns = Db::name('cms_column')->where(['model' => $model['id']])->column('id,name');
  59. // 使用ZBuilder快速创建数据表格
  60. return ZBuilder::make('table')
  61. ->setSearch(['title' => '标题', 'cms_column.name' => '栏目名称']) // 设置搜索框
  62. ->addColumns([ // 批量添加数据列
  63. ['id', 'ID'],
  64. ['title', '标题'],
  65. ['cid', '栏目名称', 'select', $columns],
  66. ['view', '点击量'],
  67. ['username', '发布人'],
  68. ['update_time', '更新时间', 'datetime'],
  69. ['sort', '排序', 'text.edit'],
  70. ['status', '状态', 'switch'],
  71. ['right_button', '操作', 'btn']
  72. ])
  73. ->setTableName($table_name)
  74. ->addTopButton('add', ['href' => url('document/add', ['model' => $model['id']])]) // 添加顶部按钮
  75. ->addTopButton('enable', ['href' => url('document/enable', ['table' => $table_name])]) // 添加顶部按钮
  76. ->addTopButton('disable', ['href' => url('document/disable', ['table' => $table_name])]) // 添加顶部按钮
  77. ->addTopButton('delete', ['href' => url('document/delete', ['table' => $table_name])]) // 添加顶部按钮
  78. ->addTopButton('custom', $btnRecycle) // 添加顶部按钮
  79. ->addRightButton('edit', ['href' => url('document/edit', ['model' => $model['id'], 'id' => '__id__'])]) // 添加右侧按钮
  80. ->addRightButton('delete', ['href' => url('document/delete', ['ids' => '__id__', 'table' => $table_name])]) // 添加右侧按钮
  81. ->addOrder('id,title,cid,view,username,update_time')
  82. ->addFilter('cid', $columns)
  83. ->addFilter(['username' => 'admin_user'])
  84. ->addFilterMap(['cid' => ['model' => $model['id']]])
  85. ->setRowList($data_list) // 设置表格数据
  86. ->fetch(); // 渲染模板
  87. } else {
  88. // 查询
  89. $map = $this->getMap();
  90. $map[] = ['cms_document.trash', '=', 0];
  91. $map[] = ['cms_document.model', '=', $model['id']];
  92. // 排序
  93. $order = $this->getOrder('update_time desc');
  94. // 数据列表
  95. $data_list = Document::getList($map, $order);
  96. $columns = Db::name('cms_column')->where(['model' => $model['id']])->column('id,name');
  97. // 使用ZBuilder快速创建数据表格
  98. return ZBuilder::make('table')
  99. ->setSearch(['title' => '标题', 'cms_column.name' => '栏目名称']) // 设置搜索框
  100. ->addColumns([ // 批量添加数据列
  101. ['id', 'ID'],
  102. ['title', '标题'],
  103. ['cid', '栏目名称', 'select', $columns],
  104. ['view', '点击量'],
  105. ['username', '发布人'],
  106. ['update_time', '更新时间', 'datetime'],
  107. ['sort', '排序', 'text.edit'],
  108. ['status', '状态', 'switch'],
  109. ['right_button', '操作', 'btn']
  110. ])
  111. ->setTableName('cms_document')
  112. ->addTopButton('add', ['href' => url('document/add', ['model' => $model['id']])]) // 添加顶部按钮
  113. ->addTopButton('enable', ['href' => url('document/enable', ['table' => 'cms_document'])]) // 添加顶部按钮
  114. ->addTopButton('disable', ['href' => url('document/disable', ['table' => 'cms_document'])]) // 添加顶部按钮
  115. ->addTopButton('delete', ['href' => url('document/delete', ['table' => 'cms_document'])]) // 添加顶部按钮
  116. ->addRightButton('edit', ['href' => url('document/edit', ['id' => '__id__'])]) // 添加右侧按钮
  117. ->addRightButton('delete', ['href' => url('document/delete', ['ids' => '__id__', 'table' => 'cms_document'])]) // 添加右侧按钮
  118. ->addOrder('id,title,cid,view,username,update_time')
  119. ->addFilter('cid', $columns)
  120. ->addFilter(['username' => 'admin_user'])
  121. ->addFilterMap(['cid' => ['model' => $model['id']]])
  122. ->setRowList($data_list) // 设置表格数据
  123. ->fetch(); // 渲染模板
  124. }
  125. }
  126. }