diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php
index 927b1bd97..c9298ad5d 100644
--- a/classes/module/ModuleHandler.class.php
+++ b/classes/module/ModuleHandler.class.php
@@ -313,7 +313,7 @@ class ModuleHandler extends Handler
}
$viewType = (Mobile::isFromMobilePhone()) ? 'M' : 'P';
- $targetSrl = (Mobile::isFromMobilePhone()) ? 'mlayout_srl' : 'layout_srl';
+ $targetSrl = $viewType === 'M' ? 'mlayout_srl' : 'layout_srl';
// use the site default layout.
if($module_info->{$targetSrl} == -1)
@@ -321,6 +321,16 @@ class ModuleHandler extends Handler
$oLayoutAdminModel = getAdminModel('layout');
$layoutSrl = $oLayoutAdminModel->getSiteDefaultLayout($viewType, $module_info->site_srl);
}
+ elseif($module_info->{$targetSrl} == -2 && $viewType === 'M')
+ {
+ $layoutSrl = $module_info->layout_srl;
+ if($layoutSrl == -1)
+ {
+ $viewType = 'P';
+ $oLayoutAdminModel = getAdminModel('layout');
+ $layoutSrl = $oLayoutAdminModel->getSiteDefaultLayout($viewType, $module_info->site_srl);
+ }
+ }
else
{
$layoutSrl = $module_info->{$targetSrl};
@@ -960,9 +970,15 @@ class ModuleHandler extends Handler
}
// Check if layout_srl exists for the module
- if(Mobile::isFromMobilePhone())
+ $viewType = (Mobile::isFromMobilePhone()) ? 'M' : 'P';
+ if($viewType === 'M')
{
$layout_srl = $oModule->module_info->mlayout_srl;
+ if($layout_srl == -2)
+ {
+ $layout_srl = $oModule->module_info->layout_srl;
+ $viewType = 'P';
+ }
}
else
{
@@ -972,7 +988,6 @@ class ModuleHandler extends Handler
// if layout_srl is rollback by module, set default layout
if($layout_srl == -1)
{
- $viewType = (Mobile::isFromMobilePhone()) ? 'M' : 'P';
$oLayoutAdminModel = getAdminModel('layout');
$layout_srl = $oLayoutAdminModel->getSiteDefaultLayout($viewType, $oModule->module_info->site_srl);
}
diff --git a/classes/module/ModuleObject.class.php b/classes/module/ModuleObject.class.php
index 2b969ab79..c0358a319 100644
--- a/classes/module/ModuleObject.class.php
+++ b/classes/module/ModuleObject.class.php
@@ -531,6 +531,9 @@ class ModuleObject extends Object
{
return FALSE;
}
+
+ // Check mobile status
+ $is_mobile = Mobile::isFromMobilePhone();
// trigger call
$triggerOutput = ModuleHandler::triggerCall('moduleObject.proc', 'before', $this);
@@ -544,9 +547,13 @@ class ModuleObject extends Object
// execute an addon(call called_position as before_module_proc)
$called_position = 'before_module_proc';
$oAddonController = getController('addon');
- $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone() ? "mobile" : "pc");
+ $addon_file = $oAddonController->getCacheFilePath($is_mobile ? "mobile" : "pc");
if(FileHandler::exists($addon_file)) include($addon_file);
+
+ // Check mobile status again, in case a trigger changed it
+ $is_mobile = Mobile::isFromMobilePhone();
+ // Perform action if it exists
if(isset($this->xml_info->action->{$this->act}) && method_exists($this, $this->act))
{
// Check permissions
@@ -555,17 +562,17 @@ class ModuleObject extends Object
$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)
- $is_default_skin = ((!Mobile::isFromMobilePhone() && $this->module_info->is_skin_fix == 'N') || (Mobile::isFromMobilePhone() && $this->module_info->is_mskin_fix == 'N'));
- $usedSkinModule = !($this->module == 'page' && ($this->module_info->page_type == 'OUTSIDE' || $this->module_info->page_type == 'WIDGET'));
- if($usedSkinModule && $is_default_skin && $this->module != 'admin' && strpos($this->act, 'Admin') === false && $this->module == $this->module_info->module)
+ $oModuleModel = getModel('module');
+ $default_skin = ((!$is_mobile && $this->module_info->is_skin_fix == 'N') || ($is_mobile && $this->module_info->is_mskin_fix == 'N'));
+ $disable_skin = ($this->module == 'page' && ($this->module_info->page_type == 'OUTSIDE' || $this->module_info->page_type == 'WIDGET'));
+ if(!$disable_skin && $default_skin && $this->module != 'admin' && strpos($this->act, 'Admin') === false && $this->module == $this->module_info->module)
{
- $dir = (Mobile::isFromMobilePhone()) ? 'm.skins' : 'skins';
- $valueName = (Mobile::isFromMobilePhone()) ? 'mskin' : 'skin';
- $oModuleModel = getModel('module');
- $skinType = (Mobile::isFromMobilePhone()) ? 'M' : 'P';
- $skinName = $oModuleModel->getModuleDefaultSkin($this->module, $skinType);
+ $skinType = ($is_mobile && $this->module_info->mskin !== '/USE_RESPONSIVE/') ? 'M' : 'P';
+ $dir = $skinType === 'M' ? 'm.skins' : 'skins';
+ $valueName = $skinType === 'M' ? 'mskin' : 'skin';
+ $skinName = $this->module_info->{$valueName} === '/USE_DEFAULT/' ? $oModuleModel->getModuleDefaultSkin($this->module, $skinType) : $this->module_info->{$valueName};
if($this->module == 'page')
{
$this->module_info->{$valueName} = $skinName;
@@ -580,7 +587,6 @@ class ModuleObject extends Object
}
}
- $oModuleModel = getModel('module');
$oModuleModel->syncSkinInfoToModuleInfo($this->module_info);
Context::set('module_info', $this->module_info);
// Run
@@ -615,7 +621,7 @@ class ModuleObject extends Object
// execute an addon(call called_position as after_module_proc)
$called_position = 'after_module_proc';
$oAddonController = getController('addon');
- $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone() ? "mobile" : "pc");
+ $addon_file = $oAddonController->getCacheFilePath($is_mobile ? "mobile" : "pc");
if(FileHandler::exists($addon_file)) include($addon_file);
if($original_output instanceof Object && !$original_output->toBool())
diff --git a/modules/board/board.mobile.php b/modules/board/board.mobile.php
index 461c83fa4..9bc7ef953 100644
--- a/modules/board/board.mobile.php
+++ b/modules/board/board.mobile.php
@@ -66,12 +66,24 @@ class boardMobile extends boardView
$oDocumentModel = getModel('document');
$extra_keys = $oDocumentModel->getExtraKeys($this->module_info->module_srl);
Context::set('extra_keys', $extra_keys);
-
- $template_path = sprintf("%sm.skins/%s/",$this->module_path, $this->module_info->mskin);
- if(!is_dir($template_path)||!$this->module_info->mskin)
+
+ if($this->module_info->mskin === '/USE_RESPONSIVE/')
+ {
+ $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin);
+ if(!is_dir($template_path)||!$this->module_info->skin)
+ {
+ $this->module_info->skin = 'default';
+ $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin);
+ }
+ }
+ else
{
- $this->module_info->mskin = 'default';
$template_path = sprintf("%sm.skins/%s/",$this->module_path, $this->module_info->mskin);
+ if(!is_dir($template_path)||!$this->module_info->mskin)
+ {
+ $this->module_info->mskin = 'default';
+ $template_path = sprintf("%sm.skins/%s/",$this->module_path, $this->module_info->mskin);
+ }
}
$this->setTemplatePath($template_path);
Context::addJsFilter($this->module_path.'tpl/filter', 'input_password.xml');
diff --git a/modules/board/tpl/board_insert.html b/modules/board/tpl/board_insert.html
index 4de695ac7..e1c0bb6f2 100644
--- a/modules/board/tpl/board_insert.html
+++ b/modules/board/tpl/board_insert.html
@@ -95,20 +95,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{$lang->mobile_settings}
@@ -123,7 +109,7 @@
{$lang->help}
{$lang->about_layout}
@@ -160,6 +146,20 @@
{$lang->about_mobile_page_count}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{$lang->subtitle_advanced}
diff --git a/modules/layout/lang/ko.php b/modules/layout/lang/ko.php
index 0110204f2..a59dd3b89 100644
--- a/modules/layout/lang/ko.php
+++ b/modules/layout/lang/ko.php
@@ -111,6 +111,7 @@ $lang->msg_empty_origin_layout = '원본 Layout이 없습니다.';
$lang->msg_empty_target_layout = '복사할 Layout이 지정되어 있지 않습니다.';
$lang->msg_at_least_one_layout = '해당 레이아웃의 마지막 한개 레이아웃은 삭제할 수 없습니다.';
$lang->use_site_default_layout = '사이트 기본 레이아웃 사용';
+$lang->use_responsive_pc_layout = 'PC와 동일한 반응형 레이아웃 사용';
$lang->msg_unabled_preview = '해당 메뉴 타입의 페이지가 하나도 없어 미리보기가 불가능합니다.';
$lang->article_preview_title = '문서의 제목입니다.';
$lang->article_preview_content = '무궁화 꽃이 피었습니다.';
diff --git a/modules/layout/layout.model.php b/modules/layout/layout.model.php
index 68d608ae8..beb40d12e 100644
--- a/modules/layout/layout.model.php
+++ b/modules/layout/layout.model.php
@@ -50,20 +50,27 @@ class layoutModel extends layout
unset($output->data[$no]);
}
}
-
+
$oLayoutAdminModel = getAdminModel('layout');
$siteDefaultLayoutSrl = $oLayoutAdminModel->getSiteDefaultLayout($layout_type, $site_srl);
if($siteDefaultLayoutSrl)
{
$siteDefaultLayoutInfo = $this->getlayout($siteDefaultLayoutSrl);
- $newLayout = sprintf('%s, %s', $siteDefaultLayoutInfo->title, $siteDefaultLayoutInfo->layout);
$siteDefaultLayoutInfo->layout_srl = -1;
+ $siteDefaultLayoutInfo->layout = $siteDefaultLayoutInfo->title;
$siteDefaultLayoutInfo->title = lang('use_site_default_layout');
- $siteDefaultLayoutInfo->layout = $newLayout;
array_unshift($output->data, $siteDefaultLayoutInfo);
}
-
+ if ($layout_type === 'M')
+ {
+ $responsiveLayoutInfo = new stdClass();
+ $responsiveLayoutInfo->layout_srl = -2;
+ $responsiveLayoutInfo->layout = '';
+ $responsiveLayoutInfo->title = lang('use_responsive_pc_layout');
+ array_unshift($output->data, $responsiveLayoutInfo);
+ }
+
return $output->data;
}
@@ -127,7 +134,7 @@ class layoutModel extends layout
}
$args = new stdClass();
$args->site_srl = $siteSrl;
- $args->layout_type = $layoutType;
+ $args->layout_type = $layoutType === 'P' ? 'P' : 'P,M';
$args->layout = $layout;
$output = executeQueryArray('layout.getLayoutList', $args, $columnList);
@@ -137,7 +144,7 @@ class layoutModel extends layout
{
foreach($output->data as $no => $iInfo)
{
- if($this->isExistsLayoutFile($iInfo->layout, $layoutType))
+ if($this->isExistsLayoutFile($iInfo->layout, $iInfo->layout_type))
{
$instanceList[] = $iInfo->layout;
}
diff --git a/modules/layout/queries/getLayoutList.xml b/modules/layout/queries/getLayoutList.xml
index 612762ab2..7695c19af 100644
--- a/modules/layout/queries/getLayoutList.xml
+++ b/modules/layout/queries/getLayoutList.xml
@@ -7,7 +7,7 @@
-
+
diff --git a/modules/module/lang/en.php b/modules/module/lang/en.php
index 7cfad98f1..c787f1916 100644
--- a/modules/module/lang/en.php
+++ b/modules/module/lang/en.php
@@ -125,3 +125,5 @@ $lang->msg_confirm_save_and_use_multilingual = 'Do you want to save and use this
$lang->msg_empty_multilingual = 'Please enter value for multilingual.';
$lang->cmd_set_multilingual_text = 'Set multilingual text';
$lang->cmd_remove_multilingual_text = 'Remove multilingual text';
+$lang->use_site_default_skin = 'Use site default skin';
+$lang->use_responsive_pc_skin = 'Use responsive PC skin';
diff --git a/modules/module/lang/ko.php b/modules/module/lang/ko.php
index 8137ab0ef..cb61701c0 100644
--- a/modules/module/lang/ko.php
+++ b/modules/module/lang/ko.php
@@ -81,8 +81,8 @@ $lang->about_module_category = '분류를 통한 관리를 할 수 있도록 합
$lang->about_description = '관리용으로 사용되는 설명입니다.';
$lang->about_header_text = '콘텐츠 상단에 표시되는 내용입니다. (HTML 태그 사용 가능)';
$lang->about_footer_text = '콘텐츠 하단에 표시되는 내용입니다. (HTML 태그 사용 가능)';
-$lang->about_mobile_header_text = '입력하지 않을 경우 위에서 지정한 상단 내용을 사용합니다. (HTML 태그 사용 가능)';
-$lang->about_mobile_footer_text = '입력하지 않을 경우 위에서 지정한 하단 내용을 사용합니다. (HTML 태그 사용 가능)';
+$lang->about_mobile_header_text = '입력하지 않을 경우 PC와 동일한 상단 내용을 사용합니다. (HTML 태그 사용 가능)';
+$lang->about_mobile_footer_text = '입력하지 않을 경우 PC와 동일한 하단 내용을 사용합니다. (HTML 태그 사용 가능)';
$lang->skin_fix = '스킨 고정';
$lang->about_skin_fix = '스킨을 고정시킵니다. 일괄 스킨 설정 대상에서 제외됩니다.';
$lang->about_skin = '콘텐츠 스킨을 선택할 수 있습니다.';
@@ -124,3 +124,4 @@ $lang->msg_empty_multilingual = '다국어를 입력해 주세요.';
$lang->cmd_set_multilingual_text = '다국어 텍스트 설정';
$lang->cmd_remove_multilingual_text = '다국어 텍스트 해제';
$lang->use_site_default_skin = '사이트 기본 스킨 사용';
+$lang->use_responsive_pc_skin = 'PC와 동일한 반응형 스킨 사용';
\ No newline at end of file
diff --git a/modules/module/module.admin.controller.php b/modules/module/module.admin.controller.php
index 57f746cea..62fca493f 100644
--- a/modules/module/module.admin.controller.php
+++ b/modules/module/module.admin.controller.php
@@ -380,7 +380,8 @@ class moduleAdminController extends module
}
else
{
- $skin = $oModuleModel->getModuleDefaultSkin($module_info->module, 'M');
+ $skin_type = $module_info->mskin === '/USE_RESPONSIVE/' ? 'P' : 'M';
+ $skin = $oModuleModel->getModuleDefaultSkin($module_info->module, $skin_type);
}
}
else
diff --git a/modules/module/module.admin.model.php b/modules/module/module.admin.model.php
index 0fcc410a8..395fcb37b 100644
--- a/modules/module/module.admin.model.php
+++ b/modules/module/module.admin.model.php
@@ -332,7 +332,8 @@ class moduleAdminModel extends module
{
if($module_info->is_mskin_fix == 'N')
{
- $skin = $oModuleModel->getModuleDefaultSkin($module_info->module, 'M', $module_info->site_srl);
+ $skin_type = $module_info->mskin === '/USE_RESPONSIVE/' ? 'P' : 'M';
+ $skin = $oModuleModel->getModuleDefaultSkin($module_info->module, $skin_type, $module_info->site_srl);
}
else
{
diff --git a/modules/module/module.controller.php b/modules/module/module.controller.php
index 279410ebd..83e9970fe 100644
--- a/modules/module/module.controller.php
+++ b/modules/module/module.controller.php
@@ -409,7 +409,7 @@ class moduleController extends module
}
}
- if($args->mskin == '/USE_DEFAULT/')
+ if($args->mskin == '/USE_DEFAULT/' || $args->mskin == '/USE_RESPONSIVE/')
{
$args->is_mskin_fix = 'N';
}
@@ -540,7 +540,7 @@ class moduleController extends module
}
}
- if($args->mskin == '/USE_DEFAULT/')
+ if($args->mskin == '/USE_DEFAULT/' || $args->mskin == '/USE_RESPONSIVE/')
{
$args->is_mskin_fix = 'N';
}
diff --git a/modules/module/module.model.php b/modules/module/module.model.php
index 825f8de13..9f962c2dd 100644
--- a/modules/module/module.model.php
+++ b/modules/module/module.model.php
@@ -291,7 +291,7 @@ class moduleModel extends module
$layoutSrlPc = ($moduleInfo->layout_srl == -1) ? $oLayoutAdminModel->getSiteDefaultLayout('P', $moduleInfo->site_srl) : $moduleInfo->layout_srl;
$layoutSrlMobile = ($moduleInfo->mlayout_srl == -1) ? $oLayoutAdminModel->getSiteDefaultLayout('M', $moduleInfo->site_srl) : $moduleInfo->mlayout_srl;
$skinNamePc = ($moduleInfo->is_skin_fix == 'N') ? $this->getModuleDefaultSkin($moduleInfo->module, 'P') : $moduleInfo->skin;
- $skinNameMobile = ($moduleInfo->is_mskin_fix == 'N') ? $this->getModuleDefaultSkin($moduleInfo->module, 'M') : $moduleInfo->mskin;
+ $skinNameMobile = ($moduleInfo->is_mskin_fix == 'N') ? $this->getModuleDefaultSkin($moduleInfo->module, $moduleInfo->mskin === '/USE_RESPONSIVE/' ? 'P' : 'M') : $moduleInfo->mskin;
$oLayoutModel = getModel('layout');
$layoutInfoPc = $layoutSrlPc ? $oLayoutModel->getLayoutRawData($layoutSrlPc, array('title')) : NULL;
@@ -315,7 +315,7 @@ class moduleModel extends module
$moduleInfo->designSettings->layout->mobile = $layoutInfoMobile->title;
$moduleInfo->designSettings->skin->pcIsDefault = $moduleInfo->is_skin_fix == 'N' ? 1 : 0;
$moduleInfo->designSettings->skin->pc = $skinInfoPc->title;
- $moduleInfo->designSettings->skin->mobileIsDefault = $moduleInfo->is_mskin_fix == 'N' ? 1 : 0;
+ $moduleInfo->designSettings->skin->mobileIsDefault = ($moduleInfo->is_mskin_fix == 'N' && $moduleInfo->mskin !== '/USE_RESPONSIVE/') ? 1 : 0;
$moduleInfo->designSettings->skin->mobile = $skinInfoMobile->title;
$module_srl = Rhymix\Framework\Cache::get('site_and_module:module_srl:' . $mid . '_' . $site_srl);
@@ -402,11 +402,12 @@ class moduleModel extends module
$moduleInfo->skin = '/USE_DEFAULT/';
}
- if($moduleInfo->is_mskin_fix == 'N')
+ if($moduleInfo->is_mskin_fix == 'N' && $moduleInfo->mskin !== '/USE_RESPONSIVE/')
{
$moduleInfo->mskin = '/USE_DEFAULT/';
}
}
+
/**
* @brief Get module information corresponding to layout_srl
*/
@@ -1125,6 +1126,10 @@ class moduleModel extends module
$useDefault->title = lang('use_site_default_skin') . ' (' . $defaultSkinInfo->title . ')';
$useDefaultList['/USE_DEFAULT/'] = $useDefault;
+ if($type === 'M')
+ {
+ $useDefaultList['/USE_RESPONSIVE/'] = (object)array('title' => lang('use_responsive_pc_skin'));
+ }
$skin_list = array_merge($useDefaultList, $skin_list);
}
@@ -1876,7 +1881,7 @@ class moduleModel extends module
{
if(!$module_info->module_srl) return;
- if(Mobile::isFromMobilePhone())
+ if(Mobile::isFromMobilePhone() && $module_info->mskin !== '/USE_RESPONSIVE/')
{
$skin_vars = $this->getModuleMobileSkinVars($module_info->module_srl);
}
diff --git a/modules/page/tpl/page_info.html b/modules/page/tpl/page_info.html
index c64ec02c8..f49bddf57 100644
--- a/modules/page/tpl/page_info.html
+++ b/modules/page/tpl/page_info.html
@@ -76,7 +76,7 @@
{$lang->help}
{$lang->about_layout}