[xoops-cvslog 3864] CVS update: xoops2jp/html/modules/base/admin/actions

Back to archive index

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


xoops-cvslog メーリングリストの案内
Back to archive index