PageRenderTime 25ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/apps/pc_backend/modules/design/actions/actions.class.php

https://github.com/bb-dev/OpenPNE3
PHP | 347 lines | 239 code | 39 blank | 69 comment | 28 complexity | 1b6e00ca20737fbe6b11b77d586ab4d9 MD5 | raw file
  1. <?php
  2. /**
  3. * this file is part of the openpne package.
  4. * (c) openpne project (http://www.openpne.jp/)
  5. *
  6. * for the full copyright and license information, please view the license
  7. * file and the notice file that were distributed with this source code.
  8. */
  9. /**
  10. * design actions.
  11. *
  12. * @package openpne
  13. * @subpackage design
  14. * @author kousuke ebihara <ebihara@tejimaya.com>
  15. */
  16. class designActions extends sfActions
  17. {
  18. /**
  19. * Executes index action
  20. *
  21. * @param sfRequest $request A request object
  22. */
  23. public function executeIndex(sfWebRequest $request)
  24. {
  25. $this->forward('design', 'layout');
  26. }
  27. /**
  28. * Executes home layout action
  29. *
  30. * @param sfRequest $request A request object
  31. */
  32. public function executeLayout(sfWebRequest $request)
  33. {
  34. $option = array();
  35. $this->configs = array();
  36. $gadgetConfigs = Doctrine::getTable('Gadget')->getConfig();
  37. foreach ($gadgetConfigs as $key => $config)
  38. {
  39. if (isset($config['layout']['choices']))
  40. {
  41. $this->configs[$key] = $config;
  42. }
  43. }
  44. $type = $request->getParameter('type', 'gadget');
  45. $this->forward404Unless(isset($this->configs[$type]));
  46. $this->subtitle = $this->configs[$type]['name'];
  47. $option['layout_name'] = $type;
  48. $this->form = new PickHomeLayoutForm(array(), $option);
  49. if ($request->isMethod(sfRequest::POST))
  50. {
  51. $this->form->bind($request->getParameter('pick_home_layout'));
  52. $this->redirectIf($this->form->save(), 'design/layout?type='.$type);
  53. }
  54. return sfView::SUCCESS;
  55. }
  56. /**
  57. * Executes gadget action
  58. *
  59. * @param sfRequest $request A request object
  60. */
  61. public function executeGadget(sfWebRequest $request)
  62. {
  63. $this->configs = Doctrine::getTable('Gadget')->getConfig();
  64. $layouts = Doctrine::getTable('Gadget')->getGadgetLayoutConfig();
  65. $this->type = $request->getParameter('type', 'gadget');
  66. $this->forward404Unless(isset($this->configs[$this->type]));
  67. $this->subtitle = $this->configs[$this->type]['name'];
  68. $this->plotAction = $this->configs[$this->type]['plot_action'];
  69. $this->gadgets = Doctrine::getTable('Gadget')->retrieveGadgetsByTypesName($this->type);
  70. $this->sortForm = new GadgetSortForm(array(), array('current_gadgets' => $this->gadgets));
  71. $this->addForm = new GadgetAddForm(array(), array('current_gadgets' => $this->gadgets));
  72. if ($request->isMethod(sfRequest::POST))
  73. {
  74. $this->sortForm->bind($request->getParameter('gadget'));
  75. $this->addForm->bind($request->getParameter('new'));
  76. if ($this->sortForm->isValid() && $this->addForm->isValid())
  77. {
  78. $this->sortForm->save();
  79. $this->addForm->save();
  80. Doctrine::getTable('Gadget')->clearGadgetsCache();
  81. $this->redirect('design/gadget?type='.$this->type);
  82. }
  83. }
  84. }
  85. /**
  86. * Executes gadget plot action
  87. *
  88. * @param sfWebRequest $request A request object
  89. */
  90. public function executeGadgetPlot(sfWebRequest $request)
  91. {
  92. $this->type = $request->getParameter('type', 'gadget');
  93. $configs = Doctrine::getTable('Gadget')->getConfig();
  94. $this->forward404Unless(isset($configs[$this->type]));
  95. $this->layoutPattern = $configs[$this->type]['layout']['default'];
  96. $this->gadgets = Doctrine::getTable('Gadget')->retrieveGadgetsByTypesName($this->type);
  97. $this->gadgetConfig = Doctrine::getTable('Gadget')->getGadgetConfig($this->type);
  98. $layoutName = $this->type;
  99. if ('gadget' === $layoutName)
  100. {
  101. $layoutName = 'home';
  102. }
  103. $layoutName .= '_layout';
  104. $layout = Doctrine::getTable('SnsConfig')->get($layoutName);
  105. if ($layout)
  106. {
  107. $this->layoutPattern = $layout;
  108. }
  109. }
  110. /**
  111. * Executes add gadget action
  112. *
  113. * @param sfRequest $request A request object
  114. */
  115. public function executeAddGadget(sfWebRequest $request)
  116. {
  117. $this->type = $request->getParameter('type', 'top');
  118. $this->config = Doctrine::getTable('Gadget')->getGadgetConfigListByType($this->type);
  119. return sfView::SUCCESS;
  120. }
  121. /**
  122. * Executes home edit gadget action
  123. *
  124. * @param sfRequest $request A request object
  125. */
  126. public function executeEditGadget(sfWebRequest $request)
  127. {
  128. $this->gadget = Doctrine::getTable('Gadget')->find($request->getParameter('id'));
  129. $type = $this->gadget->getType();
  130. $config = Doctrine::getTable('Gadget')->getGadgetConfigListByType($type);
  131. $this->forward404Unless($this->gadget && $config);
  132. $this->config = $config[$this->gadget->getName()];
  133. if (!empty($this->config['config']))
  134. {
  135. $this->form = new GadgetConfigForm($this->gadget, array('type' => $type));
  136. if ($request->isMethod(sfRequest::POST))
  137. {
  138. $this->form->bind($request->getParameter('gadget_config'));
  139. if ($this->form->isValid())
  140. {
  141. $this->form->save();
  142. $this->redirect('design/editGadget?id='.$this->gadget->getId());
  143. }
  144. }
  145. }
  146. return sfView::SUCCESS;
  147. }
  148. /**
  149. * Execute banner action
  150. *
  151. * @param sfRequest $request A request object
  152. */
  153. public function executeBanner(sfWebRequest $request)
  154. {
  155. $id = $request->getParameter('id', 0);
  156. if (!$id)
  157. {
  158. $this->banner = Doctrine::getTable('Banner')->retrieveTop();
  159. }
  160. else
  161. {
  162. $this->banner = Doctrine::getTable('Banner')->find($id);
  163. }
  164. if (!$this->banner)
  165. {
  166. return sfView::ERROR;
  167. }
  168. $this->form = new BannerForm($this->banner);
  169. if ($request->isMethod(sfRequest::POST))
  170. {
  171. $this->form->bind($request->getParameter('banner'));
  172. if ($this->form->isValid())
  173. {
  174. $this->form->save();
  175. }
  176. }
  177. $this->bannerImageList = Doctrine::getTable('BannerImage')->createQuery()->execute();
  178. $this->bannerList = Doctrine::getTable('Banner')->createQuery()->execute();
  179. }
  180. /**
  181. * Execute banneradd action
  182. *
  183. * @param sfRequest $request A request object
  184. */
  185. public function executeBanneradd(sfWebRequest $request)
  186. {
  187. $this->form = new BannerImageForm();
  188. if ($request->isMethod(sfWebRequest::POST))
  189. {
  190. $params = $request->getParameter('banner_image');
  191. $files = $request->getFiles('banner_image');
  192. $this->form->bind($params, $files);
  193. if ($this->form->isValid())
  194. {
  195. $this->form->save();
  196. $this->redirect('design/banner');
  197. }
  198. }
  199. }
  200. /**
  201. * Execute banneredit action
  202. *
  203. * @param sfRequest $request A request object
  204. */
  205. public function executeBanneredit(sfWebRequest $request)
  206. {
  207. $banner = Doctrine::getTable('BannerImage')->find($request->getParameter('id', 0));
  208. if (!$banner)
  209. {
  210. return sfView::ERROR;
  211. }
  212. $this->form = new BannerImageForm($banner);
  213. if ($request->isMethod(sfWebRequest::POST))
  214. {
  215. $params = $request->getParameter('banner_image');
  216. $files = $request->getFiles('banner_image');
  217. $this->form->bind($params, $files);
  218. if ($this->form->isValid())
  219. {
  220. $this->form->save();
  221. $this->redirect('design/banner');
  222. }
  223. }
  224. }
  225. /**
  226. * Execute bannerdelete action
  227. *
  228. * @param sfRequest $request A request object
  229. */
  230. public function executeBannerdelete(sfWebRequest $request)
  231. {
  232. $banner = Doctrine::getTable('BannerImage')->find($request->getParameter('id', 0));
  233. if (!$banner)
  234. {
  235. return sfView::ERROR;
  236. }
  237. if ($request->isMethod(sfWebRequest::POST))
  238. {
  239. $request->checkCSRFProtection();
  240. $banner->delete();
  241. $this->redirect('design/banner');
  242. }
  243. }
  244. public function executeCustomCss(sfWebRequest $request)
  245. {
  246. $this->form = new opCustomCssForm();
  247. if ($request->isMethod(sfWebRequest::POST))
  248. {
  249. $this->form->bind($request->getParameter('css'));
  250. if ($this->form->isValid())
  251. {
  252. $this->form->save();
  253. $this->getUser()->setFlash('notice', 'Saved.');
  254. $this->redirect('design/customCss');
  255. }
  256. }
  257. }
  258. /**
  259. * Executes add gadget action
  260. *
  261. * @param sfRequest $request A request object
  262. */
  263. public function executeHtml(sfWebRequest $request)
  264. {
  265. $this->type = $request->getParameter('type', opDesignHtmlForm::DEFAULT_TYPE);
  266. $this->forward404Unless(in_array($this->type, opDesignHtmlForm::allowedTypeList()));
  267. $this->typeCaptions = array(
  268. 'footer_before' => 'Insecure Page Footer',
  269. 'footer_after' => 'Secure Page Footer',
  270. 'pc_html_head' => 'HTML Insertion Area (in HTML head)',
  271. 'pc_html_top2' => 'HTML Insertion Area A',
  272. 'pc_html_top' => 'HTML Insertion Area B',
  273. 'pc_html_bottom2' => 'HTML Insertion Area C',
  274. 'pc_html_bottom' => 'HTML Insertion Area D',
  275. 'mobile_html_head' => 'HTML Insertion Area (in HTML head)',
  276. 'mobile_header' => 'HTML Insertion Area (in page header)',
  277. 'mobile_footer' => 'HTML Insertion Area (in page footer)',
  278. );
  279. $snsConfigSettings = sfConfig::get('openpne_sns_config');
  280. $default = isset($snsConfigSettings[$this->type]['Default']) ? $snsConfigSettings[$this->type]['Default'] : null;
  281. $this->form = new opDesignHtmlForm(array('html' => Doctrine::getTable('SnsConfig')->get($this->type, $default)), array('type' => $this->type));
  282. if ($request->isMethod(sfRequest::POST))
  283. {
  284. $this->form->bind($request->getParameter('design_html'));
  285. if ($this->form->isValid())
  286. {
  287. $this->form->save();
  288. $this->getUser()->setFlash('notice', 'Saved.');
  289. $this->redirect('design/html?type='.$this->type);
  290. }
  291. }
  292. }
  293. public function executeMobileColorConfig(sfWebRequest $request)
  294. {
  295. $this->presetList = (array)include(sfContext::getInstance()->getConfigCache()->checkConfig('config/mobile_preset_color.yml'));
  296. $this->form = new opMobileColorConfigForm();
  297. if ($request->isMethod(sfRequest::POST))
  298. {
  299. $this->form->bind($request->getParameter('color'));
  300. if ($this->form->isValid())
  301. {
  302. $this->form->save();
  303. $this->getUser()->setFlash('notice', 'Saved.');
  304. $this->redirect('design/mobileColorConfig');
  305. }
  306. }
  307. }
  308. }