Minahito
minah****@users*****
2006年 8月 2日 (水) 18:36:35 JST
Index: xoops2jp/html/modules/base/admin/actions/ThemeListAction.class.php diff -u /dev/null xoops2jp/html/modules/base/admin/actions/ThemeListAction.class.php:1.1.2.1 --- /dev/null Wed Aug 2 18:36:35 2006 +++ xoops2jp/html/modules/base/admin/actions/ThemeListAction.class.php Wed Aug 2 18:36:35 2006 @@ -0,0 +1,124 @@ +<?php +/** + * @package Legacy + * @version $Id: ThemeListAction.class.php,v 1.1.2.1 2006/08/02 09:36:35 minahito Exp $ + */ + +require_once XOOPS_MODULE_PATH . "/base/admin/forms/ThemeSelectForm.class.php"; + +if (!defined('XOOPS_ROOT_PATH')) exit(); + +/** + * This action shows the list of selectable themes to user. + * + * [Notice] + * In XOOPS Cube Legacy which can have many themes with different render- + * systems, that one render-system has the control to change themes is wrong, + * because this action can't list up themes of other render-systems. + * The action to change themes should be in Legacy. And, each render-systems + * should send theme informations through delegate-mechanism. + * + * Therefore, this class is test for that we may move this action from + * LegacyRender module. If you want to check the concept of this strategy, see + * ThemeSelect preload in Legacy module. + */ +class Legacy_ThemeListAction extends Legacy_Action +{ + var $mThemes = null; + var $mObjectHandler = null; + var $mActionForm = null; + var $mMainTheme = null; + + function prepare(&$controller, &$xoopsUser) + { + $this->_setupObject(); + $this->_setupActionForm(); + $this->mMainTheme =& $controller->getMainTheme(); + } + + function _setupObject() + { + $handler =& xoops_getmodulehandler('theme'); + $this->mThemes =& $handler->getObjects(); + } + + function _setupActionForm() + { + $this->mActionForm =& new Legacy_ThemeSelectForm(); + $this->mActionForm->prepare(); + } + + function getDefaultView(&$controller, &$xoopsUser) + { + $configHandler =& xoops_gethandler('config'); + + $criteria =& new CriteriaCompo(); + $criteria->add(new Criteria('conf_name', 'theme_set_allowed')); + $criteria->add(new Criteria('conf_catid', XOOPS_CONF)); + + $configs =& $configHandler->getConfigs($criteria); + $selectedThemeArr = unserialize($configs[0]->get('conf_value')); + + $this->mActionForm->load($selectedThemeArr); + + return LEGACY_FRAME_VIEW_INDEX; + } + + function execute(&$controller, &$xoopsUser) + { + $this->mActionForm->fetch(); + $this->mActionForm->validate(); + + if ($this->mActionForm->hasError()) { + return $this->getDefaultView($controller, $xoopsUser); + } + + // + // save selectable themes. + // + $configHandler =& xoops_gethandler('config'); + + $criteria =& new CriteriaCompo(); + $criteria->add(new Criteria('conf_name', 'theme_set_allowed')); + $criteria->add(new Criteria('conf_catid', XOOPS_CONF)); + + $configs =& $configHandler->getConfigs($criteria); + $t_themeArr = $this->mActionForm->getSelectableTheme(); + $configs[0]->set('conf_value', serialize($t_themeArr)); + if (!$configHandler->insertConfig($configs[0])) { + print_r($configs[0]); + die(); + } + + // + // save selected theme. + // + $themeName = $this->mActionForm->getChooseTheme(); + + if ($themeName != null) { + $criteria =& new CriteriaCompo(); + $criteria->add(new Criteria('conf_name', 'theme_set')); + $criteria->add(new Criteria('conf_catid', XOOPS_CONF)); + + $configs =& $configHandler->getConfigs($criteria); + + $configs[0]->set('conf_value', $themeName); + if ($configHandler->insertConfig($configs[0])) { + $controller->mRoot->setThemeName($themeName); + $this->mMainTheme = $themeName; + } + } + + return $this->getDefaultView($controller, $xoopsUser); + } + + function executeViewIndex(&$controller, &$xoopsUser, &$render) + { + $render->setTemplateName("theme_list.html"); + $render->setAttribute("themes", $this->mThemes); + $render->setAttribute("actionForm", $this->mActionForm); + $render->setAttribute("currentThemeName", $this->mMainTheme); + } +} + +?> \ No newline at end of file