issue 2625 add about setting of default layout/skin.

git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@11898 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
devjin 2012-10-25 14:42:38 +00:00
parent afd6f9b5ae
commit 1c3e69f91f
15 changed files with 176 additions and 80 deletions

View file

@ -152,35 +152,23 @@
$this->module_info = $module_info;
Context::setBrowserTitle($module_info->browser_title);
if($module_info->use_mobile && Mobile::isFromMobilePhone())
$viewType = (Mobile::isFromMobilePhone())? 'M' : 'P';
$targetSrl = (Mobile::isFromMobilePhone())? 'mlayout_srl' : 'layout_srl';
// use the site default layout.
if($module_info->{$targetSrl} == -1)
{
$layoutSrl = $module_info->mlayout_srl;
$oLayoutAdminModel = getAdminModel('layout');
$layoutSrl = $oLayoutAdminModel->getSiteDefaultLayout($viewType, $module_info->site_srl);
}
else
{
// use the site default layout.
if($module_info->layout_srl == -1)
{
$designInfoFile = sprintf(_XE_PATH_.'/files/site_design/design_%s.php', $module_info->site_srl);
@include($designInfoFile);
if(!$designInfo->layout_srl)
{
$layoutSrl = $site_module_info->layout_srl;
}
else
{
$layoutSrl = $designInfo->layout_srl;
}
}
else
{
$layoutSrl = $module_info->layout_srl;
}
// reset a layout_srl in module_info.
$module_info->layout_srl = $layoutSrl;
$layoutSrl = $module_info->{$targetSrl};
}
// reset a layout_srl in module_info.
$module_info->{$targetSrl} = $layoutSrl;
$part_config= $oModuleModel->getModulePartConfig('layout',$layoutSrl);
Context::addHtmlHeader($part_config->header_script);
}

View file

@ -340,30 +340,16 @@
}
// integrate skin information of the module(change to sync skin info with the target module only by seperating its table)
if($this->module_info->is_skin_fix == 'N' && $this->module != 'admin' && strpos($this->act, 'Admin') === false)
$is_default_skin = ((!Mobile::isFromMobilePhone() && $this->module_info->is_skin_fix == 'N') || (Mobile::isFromMobilePhone() && $this->module_info->is_mskin_fix == 'N'));
if($is_default_skin && $this->module != 'admin' && strpos($this->act, 'Admin') === false)
{
$designInfoFile = sprintf(_XE_PATH_.'files/site_design/design_%s.php', $this->module_info->site_srl);
if(is_readable($designInfoFile))
$dir = (Mobile::isFromMobilePhone()) ? 'm.skins' : 'skins';
$oModuleModel = getModel('module');
$skinType = (Mobile::isFromMobilePhone()) ? 'M' : 'P';
$skinName = $oModuleModel->getModuleDefaultSkin($this->module, $skinType);
if($skinName)
{
@include($designInfoFile);
$skinName = $designInfo->module->{$this->module_info->module}->skin;
if($skinName)
{
$this->setTemplatePath(sprintf('%sskins/%s/', $this->module_path, $skinName));
}
$skinVars = $designInfo->module->{$this->module_info->module}->skin_vars;
if($skinVars)
{
$skinVars = unserialize($skinVars);
foreach($skinVars as $key => $val)
{
$this->module_info->{$key} = $val;
}
}
$this->setTemplatePath(sprintf('%s%s/%s/', $this->module_path, $dir, $skinName));
}
}
else

View file

@ -117,7 +117,6 @@
$vars->site_srl = 0;
}
// create a DesignInfo file
$output = $this->updateDefaultDesignInfo($vars);
return $this->setRedirectUrl(Context::get('error_return_url'), $output);
@ -170,6 +169,13 @@
}
}
$this->makeDefaultDesignFile($designInfo, $vars->site_srl);
return new Object();
}
function makeDefaultDesignFile($designInfo, $site_srl = 0)
{
if($designInfo->layout_srl)
{
$buff .= sprintf('$designInfo->layout_srl = %s; ', $designInfo->layout_srl)."\n";
@ -193,9 +199,8 @@
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit();' . "\n" . 'if(!defined("__XE__")) exit();' ."\n" . '$designInfo = new stdClass();' . "\n" . '%s ?>', $buff);
$siteDesignFile = _XE_PATH_.'files/site_design/design_'.$site_srl.'.php';
FileHandler::writeFile($siteDesignFile, $buff);
return new Object();
}
/**

View file

@ -88,6 +88,7 @@
if(!$db_info->default_url) $db_info->default_url = Context::getRequestUri();
$db_info->lang_type = Context::getLangType();
$db_info->use_mobile_view = 'Y';
// Set DB type and information
Context::setDBInfo($db_info);

View file

@ -61,12 +61,27 @@
$output = $oLayoutAdminController->updateLayout($args);
if(!$output->toBool()) return $output;
//create mobile layout
$mlayout_srl = $args->layout_srl = getNextSequence();
$args->layout = 'default';
$args->title = 'welcome_mobile_layout';
$args->layout_type = 'M';
$output = $oLayoutAdminController->insertLayout($args);
if(!$output->toBool()) return $output;
// update Layout
$args->extra_vars = serialize($extra_vars);
$output = $oLayoutAdminController->updateLayout($args);
if(!$output->toBool()) return $output;
$siteDesignPath = _XE_PATH_.'files/site_design/';
FileHandler::makeDir($siteDesignPath);
$siteDesignFile = _XE_PATH_.'files/site_design/design_0.php';
$buff = sprintf('$designInfo->layout_srl = %s;', $layout_srl);
// after trigger
$designInfo = new stdClass();
$designInfo->layout_srl = $layout_srl;
$designInfo->mlayout_srl = $mlayout_srl;
$moduleList = array('page');
$moutput = ModuleHandler::triggerCall('menu.getModuleListInSitemap', 'after', $moduleList);
if($moutput->toBool())
@ -76,6 +91,8 @@
$skinTypes = array('skin'=>'skins/', 'mskin'=>'m.skins/');
$designInfo->module = new stdClass();
foreach($skinTypes as $key => $dir)
{
foreach($moduleList as $moduleName)
@ -100,17 +117,17 @@
if($skinName)
{
$buff .= sprintf('$designInfo->module->%s->%s = \'%s\';', $moduleName, $key, $skinName);
$designInfo->module->{$moduleName}->{$key} = $skinName;
}
}
}
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); if(!defined("__XE__")) exit(); %s ?>', $buff);
FileHandler::writeFile($siteDesignFile, $buff);
$oAdminController = getAdminController('admin');
$oAdminController->makeDefaultDesignFile($designInfo, 0);
// insertPageModule
$page_args->layout_srl = $layout_srl;
$page_args->mlayout_srl = $mlayout_srl;
$page_args->menu_srl = $menu_srl;
$page_args->browser_title = 'welcome_page';
$page_args->module = 'page';
@ -119,6 +136,7 @@
$page_args->page_caching_interval = 0;
$page_args->page_type = 'ARTICLE';
$page_args->skin = 'default';
$page_args->use_mobile = 'Y';
$oModuleController = &getController('module');
$output = $oModuleController->insertModule($page_args);
@ -144,10 +162,16 @@
$document_srl = $output->get('document_srl');
unset($obj->document_srl);
$output = $oDocumentController->insertDocument($obj);
if(!$output->toBool()) return $output;
$mdocument_srl = $output->get('document_srl');
// save PageWidget
$oModuleModel = &getModel('module');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
$module_info->document_srl = $document_srl;
$module_info->mdocument_srl = $mdocument_srl;
$output = $oModuleController->updateModule($module_info);
if(!$output->toBool()) return $output;

View file

@ -136,21 +136,27 @@ class layoutAdminModel extends layout {
$this->add('html', $script.$html);
}
function getLayoutAdminSiteDefaultLayout()
public function getLayoutAdminSiteDefaultLayout()
{
$siteSrl = Context::get('site_srl');
$type = Context::get('type');
//TODO remove mock
if($type == 'M')
{
$layoutSrl = 278;
}
else
{
$layoutSrl = 62;
}
$layoutSrl = $this->getSiteDefaultLayout($type, $siteSrl);
$this->add('layout_srl', $layoutSrl);
}
public function getSiteDefaultLayout($viewType = 'P', $siteSrl = 0)
{
$target = ($viewType == 'M') ? 'mlayout_srl' : 'layout_srl';
$designInfoFile = sprintf(_XE_PATH_.'/files/site_design/design_%s.php', $siteSrl);
@include($designInfoFile);
if(!$designInfo || !$designInfo->{$target})
{
return 0;
}
return $designInfo->{$target};
}
}

View file

@ -95,6 +95,8 @@
$output = executeQueryArray('module.getNotLinkedModuleGroupSiteSrl');
if($output->toBool() && $output->data && count($output->data) > 0) return true;
// check fix mskin
if(!$oDB->isColumnExists("modules", "is_mskin_fix")) return true;
return false;
}
@ -382,6 +384,22 @@
}
}
if(!$oDB->isColumnExists("modules", "is_mskin_fix"))
{
$oDB->addColumn('modules', 'is_mskin_fix', 'char', 1, 'N');
$output = executeQueryArray('module.getAllMobileSkinSetModule');
if ($output->toBool() && $output->data){
$module_srls = array();
foreach($output->data as $val){
$module_srls[] = $val->module_srl;
}
unset($args);
$args->module_srls = implode(',', $module_srls);
$args->is_mskin_fix = 'Y';
$output = executeQuery('module.updateMobileSkinFixModules', $args);
}
}
return new Object(0, 'success_updated');
}

View file

@ -291,6 +291,7 @@
unset($extra_vars->mid);
unset($extra_vars->is_skin_fix);
unset($extra_vars->skin);
unset($extra_vars->is_mskin_fix);
unset($extra_vars->mskin);
unset($extra_vars->browser_title);
unset($extra_vars->description);
@ -327,7 +328,8 @@
if(!$args->module_srl) $args->module_srl = getNextSequence();
// default value
$args->is_skin_fix = (!$args->is_skin_fix) ? 'N' : 'Y';
$args->is_skin_fix = ($args->is_skin_fix != 'Y') ? 'N' : 'Y';
$args->is_mskin_fix = ($args->is_mskin_fix != 'Y') ? 'N' : 'Y';
// Insert a module
$output = executeQuery('module.insertModule', $args);
@ -373,13 +375,15 @@
}
// default value
$args->is_skin_fix = (!$args->is_skin_fix) ? 'N' : 'Y';
$args->is_skin_fix = ($args->is_skin_fix != 'Y') ? 'N' : 'Y';
$args->is_mskin_fix = ($args->is_mskin_fix != 'Y') ? 'N' : 'Y';
$output = executeQuery('module.updateModule', $args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// Insert module extra vars
$this->insertModuleExtraVars($args->module_srl, $extra_vars);

View file

@ -239,7 +239,8 @@
}
$moduleInfo->is_layout_fix = ($moduleInfo->layout_srl == -1) ? 'N' : 'Y';
if($moduleInfo->is_layout_fix == 'N' || $moduleInfo->is_skin_fix == 'N')
$moduleInfo->is_mlayout_fix = ($moduleInfo->mlayout_srl == -1) ? 'N' : 'Y';
if($moduleInfo->is_layout_fix == 'N' || $moduleInfo->is_skin_fix == 'N' || $moduleInfo->is_mlayout_fix == 'N' || $moduleInfo->is_mskin_fix == 'N')
{
$designInfoFile = sprintf(_XE_PATH_.'/files/site_design/design_%s.php', $moduleInfo->site_srl);
@include($designInfoFile);
@ -253,17 +254,16 @@
if($moduleInfo->is_skin_fix == 'N')
{
$moduleInfo->skin = $designInfo->module->{$moduleInfo->module}->skin;
}
$skinVars = $designInfo->module->{$moduleInfo->module}->skin_vars;
if($moduleInfo->is_mlayout_fix == 'N')
{
$moduleInfo->mlayout_srl = $designInfo->mlayout_srl;
}
if($skinVars)
{
$skinVars = unserialize($skinVars);
foreach($skinVars as $key => $val)
{
$moduleInfo->{$key} = $val;
}
}
if($moduleInfo->is_mskin_fix == 'N')
{
$moduleInfo->mskin = $designInfo->module->{$moduleInfo->module}->mskin;
}
$moduleInfo = $this->addModuleExtraVars($moduleInfo);
@ -1424,6 +1424,43 @@
return $skin_vars;
}
/**
* Get default skin name
**/
function getModuleDefaultSkin($module_name, $skin_type = 'P', $site_srl = 0)
{
$target = ($skin_type == 'M') ? 'mskin' : 'skin';
$designInfoFile = sprintf(_XE_PATH_.'files/site_design/design_%s.php', $site_srl);
if(is_readable($designInfoFile))
{
@include($designInfoFile);
$skinName = $designInfo->module->{$module_name}->{$target};
}
if(!$skinName)
{
$dir = ($skin_type == 'M') ? 'm.skins/' : 'skins';
$moduleSkinPath = ModuleHandler::getModulePath($module_name).$dir;
$skins = FileHandler::readDir($moduleSkinPath);
if(count($skins) > 0)
{
$skinName = $skins[0];
$designInfo->module->{$module_name}->{$target} = $skinName;
$oAdminController = getAdminController('admin');
$oAdminController->makeDefaultDesignFile($designInfo, $site_srl);
}
else
{
$skinName = NULL;
}
}
return $skinName;
}
/**
* @brief Combine skin information with module information
**/

View file

@ -0,0 +1,11 @@
<query id="getAllMobileSkinSetModule" action="select">
<tables>
<table name="modules" />
</tables>
<columns>
<column name="module_srl" />
</columns>
<conditions>
<condition operation="notequal" column="mskin" default=" " />
</conditions>
</query>

View file

@ -17,7 +17,9 @@
<column name="modules.use_mobile" alias="use_mobile" />
<column name="modules.menu_srl" alias="menu_srl" />
<column name="modules.mid" alias="mid" />
<column name="modules.is_skin_fix" alias="is_skin_fix" />
<column name="modules.skin" alias="skin" />
<column name="modules.is_mskin_fix" alias="is_mskin_fix" />
<column name="modules.mskin" alias="mskin" />
<column name="modules.browser_title" alias="browser_title" />
<column name="modules.description" alias="description" />

View file

@ -8,7 +8,8 @@
<column name="module_category_srl" var="module_category_srl" default="0" />
<column name="mid" var="mid" notnull="notnull" minlength="1" maxlength="40" />
<column name="skin" var="skin" minlength="1" maxlength="250" />
<column name="is_skin_fix" var="is_skin_fix" default="Y" />
<column name="is_skin_fix" var="is_skin_fix" default="N" />
<column name="is_mskin_fix" var="is_mskin_fix" default="N" />
<column name="mskin" var="mskin" />
<column name="browser_title" var="browser_title" notnull="notnull" minlength="1" maxlength="250" />
<column name="layout_srl" var="layout_srl" />

View file

@ -0,0 +1,11 @@
<query id="updateMobileSkinFixModules" action="update">
<tables>
<table name="modules" />
</tables>
<columns>
<column name="is_mskin_fix" var="is_mskin_fix" />
</columns>
<conditions>
<condition operation="in" column="module_srl" var="module_srls" notnull="notnull" />
</conditions>
</query>

View file

@ -7,8 +7,9 @@
<column name="module_category_srl" var="module_category_srl" />
<column name="layout_srl" var="layout_srl" />
<column name="skin" var="skin" minlength="0" maxlength="250" />
<column name="is_skin_fix" var="is_skin_fix" default="Y" />
<column name="is_skin_fix" var="is_skin_fix" default="N" />
<column name="mskin" var="mskin" />
<column name="is_mskin_fix" var="is_mskin_fix" default="N" />
<column name="menu_srl" var="menu_srl" filter="number" />
<column name="mid" var="mid" notnull="notnull" minlength="1" maxlength="40" />
<column name="browser_title" var="browser_title" notnull="notnull" minlength="1" maxlength="250" />

View file

@ -10,6 +10,7 @@
<column name="mid" type="varchar" size="40" notnull="notnull" />
<column name="is_skin_fix" type="char" size="1" notnull="notnull" default="Y" />
<column name="skin" type="varchar" size="250" />
<column name="is_mskin_fix" type="char" size="1" notnull="notnull" default="Y" />
<column name="mskin" type="varchar" size="250" />
<column name="browser_title" type="varchar" size="250" notnull="notnull" />
<column name="description" type="text" />