issue 2370, issue 2373, issue 2374 add the site design info.

git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@11303 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
devjin 2012-09-18 08:41:42 +00:00
parent abef8deda9
commit ffde9607d9
5 changed files with 233 additions and 9 deletions

View file

@ -158,7 +158,27 @@
}
else
{
$layoutSrl = $module_info->layout_srl;
// use the site default layout.
if($module_info->layout_srl == -1000)
{
$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;
}
$part_config= $oModuleModel->getModulePartConfig('layout',$layoutSrl);

View file

@ -338,12 +338,42 @@
$this->stop("msg_not_permitted_act");
return FALSE;
}
// integrate skin information of the module(change to sync skin info with the target module only by seperating its table)
$oModuleModel = &getModel('module');
$oModuleModel->syncSkinInfoToModuleInfo($this->module_info);
Context::set('module_info', $this->module_info);
// Run
$output = $this->{$this->act}();
if($this->module_info->is_skin_fix == 'N' && $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))
{
@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;
}
}
}
}
else
{
$oModuleModel = &getModel('module');
$oModuleModel->syncSkinInfoToModuleInfo($this->module_info);
}
Context::set('module_info', $this->module_info);
// Run
$output = $this->{$this->act}();
}
else {
return false;

View file

@ -108,6 +108,82 @@
header('Location: '.getNotEncodedUrl('', 'module','admin'));
}
public function procAdminInsertDefaultDesignInfo()
{
$vars = Context::getRequestVars();
if(!$vars->site_srl)
{
$vars->site_srl = 0;
}
// create a DesignInfo file
$output = $this->updateDefaultDesignInfo($vars);
return $this->setRedirectUrl(Context::get('error_return_url'), $output);
}
public function updateDefaultDesignInfo($vars)
{
$siteDesignPath = _XE_PATH_.'files/site_design/';
if(!is_dir($siteDesignPath))
{
FileHandler::makeDir($siteDesignPath);
}
$siteDesignFile = _XE_PATH_.'files/site_design/design_'.$vars->site_srl.'.php';
$buff = '';
if(is_readable($siteDesignFile))
{
@include($siteDesignFile);
}
else
{
$designInfo = new stdClass();
}
$layoutSrl = (!$vars->layout_srl) ? $designInfo->layout_srl : $vars->layout_srl;
if($layoutSrl)
{
$buff .= sprintf('$designInfo->layout_srl = %s;', $layoutSrl);
}
if($vars->module)
{
if($designInfo->module)
{
foreach($designInfo->module as $key => $val)
{
if($key == $vars->module)
{
$skin = $vars->module_skin;
$skin_vars = serialize($vars->skin_vars);
}
else
{
$skin = $val->skin;
$skin_vars = $val->skin_vars;
}
$buff .= sprintf('$designInfo->module->%s->skin = \'%s\';', $key, $skin);
$buff .= sprintf('$designInfo->module->%s->skin_vars = \'%s\';', $key, $skin_vars);
}
}
else
{
$buff .= sprintf('$designInfo->module->%s->skin = \'%s\';', $vars->module, $vars->module_skin);
$buff .= sprintf('$designInfo->module->%s->skin_vars = \'%s\';', $vars->module, serialize($vars->skin_vars));
}
}
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); if(!defined("__XE__")) exit(); %s ?>', $buff);
FileHandler::writeFile($siteDesignFile, $buff);
return new Object();
}
/**
* Insert theme information
* @return void|object

View file

@ -319,7 +319,8 @@
$oModuleModel = &getModel('module');
$columnList = array('module_srl', 'module', 'skin', 'mskin');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl, $columnList);
if($module_info->module_srl) {
if($module_info->module_srl)
{
if($mode === 'M')
{
$skin = $module_info->mskin;
@ -353,8 +354,10 @@
unset($obj->module);
unset($obj->_mode);
// Separately handle if a type of extra_vars is an image in the original skin_info
if($skin_info->extra_vars) {
foreach($skin_info->extra_vars as $vars) {
if($skin_info->extra_vars)
{
foreach($skin_info->extra_vars as $vars)
{
if($vars->type!='image') continue;
$image_obj = $obj->{$vars->name};

View file

@ -0,0 +1,95 @@
<?php
error_reporting(0);
class adminAdminControllerTest extends PHPUnit_Framework_TestCase
{
private $oAdminAdminController;
protected function setUp()
{
define('__ZBXE__', TRUE);
define('__XE__', TRUE);
require_once '../../../config/config.inc.php';
require_once _XE_PATH_.'classes/file/FileHandler.class.php';
require_once _XE_PATH_.'classes/context/Context.class.php';
require_once _XE_PATH_.'modules/admin/admin.class.php';
require_once _XE_PATH_.'modules/admin/admin.admin.controller.php';
$logged_info = new stdclass;
$logged_info->member_srl = 4;
$logged_info->user_id = 'admin';
$logged_info->email_address = 'admin@admin.com';
$logged_info->password = 'c4ca4238a0b923820dcc509a6f75849b';
$logged_info->email_id = 'admin';
$logged_info->email_host = 'admin.com';
$logged_info->user_name = 'admin';
$logged_info->nick_name = 'admin';
$logged_info->find_account_question = 1;
$logged_info->find_account_answer = 'admin@naver.com';
$logged_info->allow_mailing = 'Y';
$logged_info->allow_message = 'Y';
$logged_info->denied = 'N';
$logged_info->regdate = '20110520142031';
$logged_info->last_login = '20120905135102';
$logged_info->change_password_date = '20110520142031';
$logged_info->is_admin = 'Y';
$logged_info->list_order = -1;
$oContext = &Context::getInstance();
//$oContext->init();
$oContext->set('is_logged', true);
$oContext->set('logged_info', $logged_info);
$oContext->set('is_admin', 'Y');
$this->oAdminAdminController = &getAdminController('admin');
}
public function testInsertLayout()
{
$args->layout_srl = 62;
$args->module = 'board';
$args->module_skin = 'xe_board';
$args->site_srl = 0;
$args->skin_vars->colorset = 'white';
$args->skin_vars->colorset = 'red';
$args->skin_vars->default_style = 'gallery';
$args->skin_vars->display_login_info = 'N';
$args->skin_vars->display_setup_button = 'N';
$args->skin_vars->header_title_format = 'h1';
$args->skin_vars->document_title_format = 'h1';
$args->skin_vars->display_number = 'Y';
$args->skin_vars->display_author = 'Y';
$args->skin_vars->display_regdate = 'Y';
$args->skin_vars->display_readed_count = 'Y';
$args->skin_vars->display_voted_count = 'Y';
$args->skin_vars->display_blamed_count = 'Y';
$args->skin_vars->display_ip_address = 'Y';
$args->skin_vars->display_last_update = 'Y';
$args->skin_vars->display_sign = 'Y';
$args->skin_vars->duration_new = '24';
$args->skin_vars->thumbnail_type = 'crop';
$args->skin_vars->thumbnail_width = '100';
$args->skin_vars->thumbnail_height = '100';
$oContext = &Context::getInstance();
//$oContext->init();
$oContext->set('layout_srl', $args->layout_srl);
$oContext->set('module', $args->module);
$oContext->set('module_skin', $args->module_skin);
$oContext->set('skin_vars', $args->skin_vars);
$oContext->set('site_srl', $args->site_srl);
$this->oAdminAdminController->updateDefaultDesignInfo($args);
$file = _XE_PATH_.'files/site_design/design_0.php';
$this->assertFileExists($file);
@include($file);
$this->assertEquals($designInfo->layout_srl, $args->layout_srl);
$this->assertEquals($designInfo->module->{$args->module}->skin, $args->module_skin);
}
}
?>