/app/autoform/controller/module.master.php

https://github.com/oiuv/phpems · PHP · 280 lines · 251 code · 20 blank · 9 comment · 19 complexity · a3f0154b9c07f2b4aed7198ad983517b MD5 · raw file

  1. <?php
  2. /*
  3. * This file is part of the phpems/phpems.
  4. *
  5. * (c) oiuv <i@oiuv.cn>
  6. *
  7. * 项目维护:oiuv(QQ:7300637) | 定制服务:火眼(QQ:278768688)
  8. *
  9. * This source file is subject to the MIT license that is bundled.
  10. */
  11. class action extends app
  12. {
  13. public function display()
  14. {
  15. $action = $this->ev->url(3);
  16. if (!method_exists($this, $action)) {
  17. $action = 'index';
  18. }
  19. $this->$action();
  20. exit;
  21. }
  22. private function fields()
  23. {
  24. $moduleid = $this->ev->get('moduleid');
  25. $page = $this->ev->post('page');
  26. if ($this->ev->get('modifyfieldsequence')) {
  27. $ids = $this->ev->post('ids');
  28. if ($ids) {
  29. foreach ($ids as $key => $value) {
  30. $args = ['fieldsequence' => $value];
  31. $this->module->modifyFieldHtmlType($key, $args);
  32. }
  33. }
  34. $message = [
  35. 'statusCode' => 200,
  36. 'message' => '操作成功',
  37. 'callbackType' => 'forward',
  38. 'forwardUrl' => "index.php?autoform-master-module-fields&moduleid={$moduleid}",
  39. ];
  40. exit(json_encode($message));
  41. }
  42. $module = $this->module->getModuleById($moduleid);
  43. $fields = $this->module->getTableMoudleFields($moduleid, 1, true);
  44. $this->tpl->assign('moduleid', $moduleid);
  45. $this->tpl->assign('module', $module);
  46. $this->tpl->assign('fields', $fields);
  47. $this->tpl->display('fields');
  48. }
  49. private function addfield()
  50. {
  51. $moduleid = $this->ev->get('moduleid');
  52. $fieldpublic = $this->ev->get('fieldpublic');
  53. $page = $this->ev->post('page');
  54. if ($this->ev->get('insertfield')) {
  55. $args = $this->ev->post('args');
  56. $moduleid = $args['fieldmoduleid'];
  57. $module = $this->module->getModuleById($moduleid);
  58. if (!$args['fieldpublic']) {
  59. $args['field'] = $module['modulecode'].'_'.$args['field'];
  60. }
  61. $args['fieldforbidactors'] = ','.implode(',', $args['fieldforbidactors']).',';
  62. $id = $this->module->insertModuleField($args);
  63. if ($id) {
  64. $message = [
  65. 'statusCode' => 200,
  66. 'message' => '操作成功',
  67. 'callbackType' => 'forward',
  68. 'forwardUrl' => "index.php?autoform-master-module-fields&moduleid={$moduleid}&page={$page}",
  69. ];
  70. } else {
  71. $message = [
  72. 'statusCode' => 300,
  73. 'message' => '操作失败',
  74. ];
  75. }
  76. exit(json_encode($message));
  77. }
  78. $module = $this->module->getModuleById($moduleid);
  79. $this->tpl->assign('moduleid', $moduleid);
  80. $this->tpl->assign('fieldpublic', $fieldpublic);
  81. $this->tpl->assign('module', $module);
  82. $this->tpl->display('addfield');
  83. }
  84. private function preview()
  85. {
  86. $moduleid = $this->ev->get('moduleid');
  87. $module = $this->module->getModuleById($moduleid);
  88. $fields = $this->module->getMoudleFields($moduleid, 1);
  89. $forms = $this->html->buildHtml($fields);
  90. $this->tpl->assign('moduleid', $moduleid);
  91. $this->tpl->assign('module', $module);
  92. $this->tpl->assign('fields', $fields);
  93. $this->tpl->assign('forms', $forms);
  94. $this->tpl->display('preview');
  95. }
  96. private function modifyfield()
  97. {
  98. if ($this->ev->get('modifyfieldhtml')) {
  99. $args = $this->ev->post('args');
  100. $args['fieldforbidactors'] = ','.implode(',', $args['fieldforbidactors']).',';
  101. $fieldid = $this->ev->post('fieldid');
  102. $field = $this->module->getFieldById($fieldid);
  103. $this->module->modifyFieldHtmlType($fieldid, $args);
  104. $message = [
  105. 'statusCode' => 200,
  106. 'message' => '操作成功',
  107. 'callbackType' => 'forward',
  108. 'forwardUrl' => "index.php?autoform-master-module-fields&moduleid={$field['fieldmoduleid']}",
  109. ];
  110. exit(json_encode($message));
  111. } elseif ($this->ev->get('modifyfielddata')) {
  112. $args = $this->ev->post('args');
  113. $fieldid = $this->ev->post('fieldid');
  114. $field = $this->module->getFieldById($fieldid);
  115. $this->module->modifyFieldDataType($fieldid, $args);
  116. $message = [
  117. 'statusCode' => 200,
  118. 'message' => '操作成功',
  119. 'callbackType' => 'forward',
  120. 'forwardUrl' => "index.php?autoform-master-module-fields&moduleid={$field['fieldmoduleid']}",
  121. ];
  122. exit(json_encode($message));
  123. }
  124. $fieldid = $this->ev->get('fieldid');
  125. $field = $this->module->getFieldById($fieldid);
  126. $this->tpl->assign('fieldid', $fieldid);
  127. $this->tpl->assign('field', $field);
  128. $this->tpl->display('modifyfield');
  129. }
  130. private function delfield()
  131. {
  132. $fieldid = $this->ev->get('fieldid');
  133. $moduleid = $this->ev->get('moduleid');
  134. $r = $this->module->delField($fieldid);
  135. $message = [
  136. 'statusCode' => 200,
  137. 'message' => '操作成功',
  138. 'callbackType' => 'forward',
  139. 'forwardUrl' => "index.php?autoform-master-module-fields&moduleid={$moduleid}",
  140. ];
  141. exit(json_encode($message));
  142. }
  143. private function modify()
  144. {
  145. $page = $this->ev->get('page');
  146. if ($this->ev->get('modifymodule')) {
  147. $args = $this->ev->get('args');
  148. $moduleid = $this->ev->get('moduleid');
  149. $this->module->modifyModule($moduleid, $args);
  150. $message = [
  151. 'statusCode' => 200,
  152. 'message' => '操作成功',
  153. 'callbackType' => 'forward',
  154. 'forwardUrl' => 'index.php?autoform-master-module',
  155. ];
  156. exit(json_encode($message));
  157. }
  158. $moduleid = $this->ev->get('moduleid');
  159. $module = $this->module->getModuleById($moduleid);
  160. $this->tpl->assign('module', $module);
  161. $this->tpl->display('modifymodule');
  162. }
  163. private function forbiddenfield()
  164. {
  165. $fieldid = $this->ev->get('fieldid');
  166. $moduleid = $this->ev->get('moduleid');
  167. $field = $this->module->getFieldById($fieldid);
  168. if (!$moduleid) {
  169. $moduleid = $field['fieldmoduleid'];
  170. }
  171. $module = $this->module->getModuleById($moduleid);
  172. if ($module['modulelockfields'][$field['field']]) {
  173. unset($module['modulelockfields'][$field['field']]);
  174. } else {
  175. $module['modulelockfields'][$field['field']] = 1;
  176. }
  177. $this->module->modifyModule($moduleid, ['modulelockfields' => $module['modulelockfields']]);
  178. $message = [
  179. 'statusCode' => 200,
  180. 'message' => '操作成功',
  181. 'callbackType' => 'forward',
  182. 'forwardUrl' => 'reload',
  183. ];
  184. exit(json_encode($message));
  185. }
  186. private function moduleforms()
  187. {
  188. $moduleid = $this->ev->get('moduleid');
  189. $fields = $this->module->getMoudleFields($moduleid, 1);
  190. $forms = $this->html->buildHtml($fields);
  191. $this->tpl->assign('fields', $fields);
  192. $this->tpl->assign('forms', $forms);
  193. $this->tpl->display('preview_ajax');
  194. }
  195. private function add()
  196. {
  197. $page = intval($this->ev->get('page'));
  198. if ($this->ev->post('insertmodule')) {
  199. $args = $this->ev->post('args');
  200. $errmsg = false;
  201. if ($this->module->searchModules([['AND', 'modulecode = :modulecode', 'modulecode', $args['modulecode']]])) {
  202. $message = [
  203. 'statusCode' => 300,
  204. 'message' => '操作失败,存在同名(代码)模型',
  205. ];
  206. exit(json_encode($message));
  207. }
  208. $id = $this->module->insertTableModule($args);
  209. if (!$id) {
  210. $errmsg = '模型添加出错';
  211. }
  212. if (!$errmsg) {
  213. $message = [
  214. 'statusCode' => 200,
  215. 'message' => '操作成功',
  216. 'callbackType' => 'forward',
  217. 'forwardUrl' => "index.php?autoform-master-module&page={$page}",
  218. ];
  219. exit(json_encode($message));
  220. }
  221. $message = [
  222. 'statusCode' => 300,
  223. 'message' => "操作失败,{$errmsg}",
  224. ];
  225. exit(json_encode($message));
  226. }
  227. $this->tpl->display('addmodule');
  228. }
  229. private function del()
  230. {
  231. $moduleid = $this->ev->get('moduleid');
  232. $fileds = $this->module->getPrivateMoudleFields($moduleid);
  233. $groups = $this->user->getGroupsByModuleid($moduleid);
  234. if ($fileds || $groups) {
  235. $message = [
  236. 'statusCode' => 300,
  237. 'message' => '操作失败,请先删除该模型下所有模型字段和用户组',
  238. ];
  239. } else {
  240. $this->module->delModule($moduleid);
  241. $message = [
  242. 'statusCode' => 200,
  243. 'message' => '操作成功',
  244. 'callbackType' => 'forward',
  245. 'forwardUrl' => 'reload',
  246. ];
  247. }
  248. exit(json_encode($message));
  249. }
  250. private function index()
  251. {
  252. $page = $this->ev->get('page');
  253. $page = $page > 1 ? $page : 1;
  254. $args = [];
  255. $args[] = ['AND', "moduleapp = 'autoform'"];
  256. $modules = $this->module->getModulesList($args);
  257. $this->tpl->assign('modules', $modules);
  258. $this->tpl->display('module');
  259. }
  260. }