/** * Preview a layout with module. * * @return Object */ public function dispLayoutPreviewWithModule() { $content = ''; $layoutSrl = Context::get('layout_srl'); $module = Context::get('module_name'); $mid = Context::get('target_mid'); $skin = Context::get('skin'); $skinType = Context::get('skin_type'); try { // admin check // this act is admin view but in normal view because do not load admin css/js files $logged_info = Context::get('logged_info'); if ($logged_info->is_admin != 'Y') { throw new Exception(Context::getLang('msg_invalid_request')); } // if module is 'ARTiCLE' and from site design setting, make content directly if ($module == 'ARTICLE' && !$mid) { $oDocumentModel = getModel('document'); $oDocument = $oDocumentModel->getDocument(0, true); $t = Context::getLang('article_preview_title'); $c = ''; for ($i = 0; $i < 4; $i++) { $c .= '<p>'; for ($j = 0; $j < 20; $j++) { $c .= Context::getLang('article_preview_content') . ' '; } $c .= '</p>'; } $attr = new stdClass(); $attr->title = $t; $attr->content = $c; $attr->document_srl = -1; $oDocument->setAttribute($attr, FALSE); Context::set('oDocument', $oDocument); if ($skinType == 'M') { $templatePath = _XE_PATH_ . 'modules/page/m.skins/' . $skin; $templateFile = 'mobile'; } else { $templatePath = _XE_PATH_ . 'modules/page/skins/' . $skin; $templateFile = 'content'; } $oTemplate = TemplateHandler::getInstance(); $content = $oTemplate->compile($templatePath, $templateFile); } else { $content = $this->procRealModule($module, $mid, $skin, $skinType); } Context::set('content', $content); // find layout if ($layoutSrl) { if ($layoutSrl == -1) { $site_srl = $oModule ? $oModule->module_info->site_srl : 0; $designInfoFile = sprintf(_XE_PATH_ . 'files/site_design/design_%s.php', $site_srl); include $designInfoFile; if ($skinType == 'M') { $layoutSrl = $designInfo->mlayout_srl; } else { $layoutSrl = $designInfo->layout_srl; } } $oLayoutModel = getModel('layout'); $layoutInfo = $oLayoutModel->getLayout($layoutSrl); // If there is no layout, pass it. if ($layoutInfo) { // Adhoc... // Input extra_vars into $layout_info if ($layoutInfo->extra_var_count) { foreach ($layoutInfo->extra_var as $var_id => $val) { if ($val->type == 'image') { if (strncmp('./files/attach/images/', $val->value, 22) === 0) { $val->value = Context::getRequestUri() . substr($val->value, 2); } } $layoutInfo->{$var_id} = $val->value; } } // Set menus into context if ($layoutInfo->menu_count) { foreach ($layoutInfo->menu as $menu_id => $menu) { // set default menu set(included home menu) if (!$menu->menu_srl || $menu->menu_srl == -1) { $oMenuAdminController = getAdminController('menu'); $homeMenuCacheFile = $oMenuAdminController->getHomeMenuCacheFile(); if (file_exists($homeMenuCacheFile)) { include $homeMenuCacheFile; } if (!$menu->menu_srl) { $menu->xml_file = str_replace('.xml.php', $homeMenuSrl . '.xml.php', $menu->xml_file); $menu->php_file = str_replace('.php', $homeMenuSrl . '.php', $menu->php_file); $layoutInfo->menu->{$menu_id}->menu_srl = $homeMenuSrl; } else { $menu->xml_file = str_replace($menu->menu_srl, $homeMenuSrl, $menu->xml_file); $menu->php_file = str_replace($menu->menu_srl, $homeMenuSrl, $menu->php_file); } } $menu->php_file = FileHandler::getRealPath($menu->php_file); if (FileHandler::exists($menu->php_file)) { include $menu->php_file; } Context::set($menu_id, $menu); } } Context::set('layout_info', $layoutInfo); } } } catch (Exception $e) { $content = '<div class="message error"><p id="preview_error">' . $e->getMessage() . '</p></div>'; Context::set('content', $content); $layoutSrl = 0; } // Compile $oTemplate = TemplateHandler::getInstance(); Context::clearHtmlHeader(); if ($layoutInfo) { $layout_path = $layoutInfo->path; $editLayoutTPL = $this->getRealLayoutFile($layoutSrl); $editLayoutCSS = $this->getRealLayoutCSS($layoutSrl); if ($editLayoutCSS != '') { Context::addCSSFile($editLayoutCSS); } $layout_file = 'layout'; $oModuleModel = getModel('module'); $part_config = $oModuleModel->getModulePartConfig('layout', $layoutSrl); Context::addHtmlHeader($part_config->header_script); } else { $layout_path = './common/tpl'; $layout_file = 'default_layout'; } $layout_tpl = $oTemplate->compile($layout_path, $layout_file, $editLayoutTPL); Context::set('layout', 'none'); // Convert widgets and others $oContext = Context::getInstance(); Context::set('layout_tpl', $layout_tpl); $this->setTemplatePath($this->module_path . 'tpl'); $this->setTemplateFile('layout_preview'); }