AdminPageController.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2013-2019 http://www.thinkcmf.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: 小夏 < 449134904@qq.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\portal\controller;
  12. use app\admin\model\RouteModel;
  13. use cmf\controller\AdminBaseController;
  14. use app\portal\model\PortalPostModel;
  15. use app\portal\service\PostService;
  16. use app\admin\model\ThemeModel;
  17. class AdminPageController extends AdminBaseController
  18. {
  19. /**
  20. * 页面管理
  21. * @adminMenu(
  22. * 'name' => '页面管理',
  23. * 'parent' => 'portal/AdminIndex/default',
  24. * 'display'=> true,
  25. * 'hasView'=> true,
  26. * 'order' => 10000,
  27. * 'icon' => '',
  28. * 'remark' => '页面管理',
  29. * 'param' => ''
  30. * )
  31. */
  32. public function index()
  33. {
  34. $content = hook_one('portal_admin_page_index_view');
  35. if (!empty($content)) {
  36. return $content;
  37. }
  38. $param = $this->request->param();
  39. $postService = new PostService();
  40. $data = $postService->adminPageList($param);
  41. $data->appends($param);
  42. $this->assign('keyword', isset($param['keyword']) ? $param['keyword'] : '');
  43. $this->assign('pages', $data->items());
  44. $this->assign('page', $data->render());
  45. return $this->fetch();
  46. }
  47. /**
  48. * 添加页面
  49. * @adminMenu(
  50. * 'name' => '添加页面',
  51. * 'parent' => 'index',
  52. * 'display'=> false,
  53. * 'hasView'=> true,
  54. * 'order' => 10000,
  55. * 'icon' => '',
  56. * 'remark' => '添加页面',
  57. * 'param' => ''
  58. * )
  59. */
  60. public function add()
  61. {
  62. $content = hook_one('portal_admin_page_add_view');
  63. if (!empty($content)) {
  64. return $content;
  65. }
  66. $themeModel = new ThemeModel();
  67. $pageThemeFiles = $themeModel->getActionThemeFiles('portal/Page/index');
  68. $this->assign('page_theme_files', $pageThemeFiles);
  69. return $this->fetch();
  70. }
  71. /**
  72. * 添加页面提交
  73. * @adminMenu(
  74. * 'name' => '添加页面提交',
  75. * 'parent' => 'index',
  76. * 'display'=> false,
  77. * 'hasView'=> false,
  78. * 'order' => 10000,
  79. * 'icon' => '',
  80. * 'remark' => '添加页面提交',
  81. * 'param' => ''
  82. * )
  83. */
  84. public function addPost()
  85. {
  86. $data = $this->request->param();
  87. $result = $this->validate($data['post'], 'AdminPage');
  88. if ($result !== true) {
  89. $this->error($result);
  90. }
  91. if (!empty($data['photo_names']) && !empty($data['photo_urls'])) {
  92. $data['post']['more']['photos'] = [];
  93. foreach ($data['photo_urls'] as $key => $url) {
  94. $photoUrl = cmf_asset_relative_url($url);
  95. array_push($data['post']['more']['photos'], ["url" => $photoUrl, "name" => $data['photo_names'][$key]]);
  96. }
  97. }
  98. if (!empty($data['file_names']) && !empty($data['file_urls'])) {
  99. $data['post']['more']['files'] = [];
  100. foreach ($data['file_urls'] as $key => $url) {
  101. $fileUrl = cmf_asset_relative_url($url);
  102. array_push($data['post']['more']['files'], ["url" => $fileUrl, "name" => $data['file_names'][$key]]);
  103. }
  104. }
  105. $portalPostModel = new PortalPostModel();
  106. $portalPostModel->adminAddPage($data['post']);
  107. $this->success(lang('ADD_SUCCESS'), url('AdminPage/edit', ['id' => $portalPostModel->id]));
  108. }
  109. /**
  110. * 编辑页面
  111. * @adminMenu(
  112. * 'name' => '编辑页面',
  113. * 'parent' => 'index',
  114. * 'display'=> false,
  115. * 'hasView'=> true,
  116. * 'order' => 10000,
  117. * 'icon' => '',
  118. * 'remark' => '编辑页面',
  119. * 'param' => ''
  120. * )
  121. */
  122. public function edit()
  123. {
  124. $content = hook_one('portal_admin_page_edit_view');
  125. if (!empty($content)) {
  126. return $content;
  127. }
  128. $id = $this->request->param('id', 0, 'intval');
  129. $portalPostModel = new PortalPostModel();
  130. $post = $portalPostModel->where('id', $id)->find();
  131. $themeModel = new ThemeModel();
  132. $pageThemeFiles = $themeModel->getActionThemeFiles('portal/Page/index');
  133. $routeModel = new RouteModel();
  134. $alias = $routeModel->getUrl('portal/Page/index', ['id' => $id]);
  135. $post['post_alias'] = $alias;
  136. $this->assign('page_theme_files', $pageThemeFiles);
  137. $this->assign('post', $post);
  138. return $this->fetch();
  139. }
  140. /**
  141. * 编辑页面提交
  142. * @adminMenu(
  143. * 'name' => '编辑页面提交',
  144. * 'parent' => 'index',
  145. * 'display'=> false,
  146. * 'hasView'=> false,
  147. * 'order' => 10000,
  148. * 'icon' => '',
  149. * 'remark' => '编辑页面提交',
  150. * 'param' => ''
  151. * )
  152. */
  153. public function editPost()
  154. {
  155. $data = $this->request->param();
  156. $result = $this->validate($data['post'], 'AdminPage');
  157. if ($result !== true) {
  158. $this->error($result);
  159. }
  160. if (!empty($data['photo_names']) && !empty($data['photo_urls'])) {
  161. $data['post']['more']['photos'] = [];
  162. foreach ($data['photo_urls'] as $key => $url) {
  163. $photoUrl = cmf_asset_relative_url($url);
  164. array_push($data['post']['more']['photos'], ["url" => $photoUrl, "name" => $data['photo_names'][$key]]);
  165. }
  166. }
  167. if (!empty($data['file_names']) && !empty($data['file_urls'])) {
  168. $data['post']['more']['files'] = [];
  169. foreach ($data['file_urls'] as $key => $url) {
  170. $fileUrl = cmf_asset_relative_url($url);
  171. array_push($data['post']['more']['files'], ["url" => $fileUrl, "name" => $data['file_names'][$key]]);
  172. }
  173. }
  174. $portalPostModel = new PortalPostModel();
  175. $portalPostModel->adminEditPage($data['post']);
  176. $this->success(lang('SAVE_SUCCESS'));
  177. }
  178. /**
  179. * 删除页面
  180. * @author iyting@foxmail.com
  181. * @adminMenu(
  182. * 'name' => '删除页面',
  183. * 'parent' => 'index',
  184. * 'display'=> false,
  185. * 'hasView'=> false,
  186. * 'order' => 10000,
  187. * 'icon' => '',
  188. * 'remark' => '删除页面',
  189. * 'param' => ''
  190. * )
  191. */
  192. public function delete()
  193. {
  194. $portalPostModel = new PortalPostModel();
  195. $data = $this->request->param();
  196. $result = $portalPostModel->adminDeletePage($data);
  197. if ($result) {
  198. $this->success(lang('DELETE_SUCCESS'));
  199. } else {
  200. $this->error(lang('DELETE_FAILED'));
  201. }
  202. }
  203. }