virtual site + homepage package 추가. 아직 미완성 버전이므로 서비스 반영하지 말아주세요. 테스트중
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4871 201d5d3c-b55e-5fd7-737f-ddc643e51545
|
|
@ -3,11 +3,8 @@
|
|||
* @class Context
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief Request Argument/환경변수등의 모든 Context를 관리
|
||||
*
|
||||
* Context 클래스는 Context::methodname() 처럼 쉽게 사용하기 위해 만들어진 객체를 받아서
|
||||
* 호출하는 구조를 위해 이중 method 구조를 가지고 있다.
|
||||
* php5에서 static variables를 사용하게 된다면 불필요한 구조를 제거할 수 있다.
|
||||
* php5 쓰고 싶당.. ㅡ.ㅜ
|
||||
**/
|
||||
|
||||
define('FOLLOW_REQUEST_SSL',0);
|
||||
|
|
@ -35,7 +32,6 @@
|
|||
|
||||
/**
|
||||
* @brief 언어 정보
|
||||
*
|
||||
* 기본으로 ko. HTTP_USER_AGENT나 사용자의 직접 세팅(쿠키이용)등을 통해 변경됨
|
||||
**/
|
||||
var $lang_type = ''; ///< 언어 종류
|
||||
|
|
@ -50,7 +46,6 @@
|
|||
|
||||
/**
|
||||
* @brief 유일한 Context 객체를 반환 (Singleton)
|
||||
*
|
||||
* Context는 어디서든 객체 선언없이 사용하기 위해서 static 하게 사용
|
||||
**/
|
||||
function &getInstance() {
|
||||
|
|
@ -61,9 +56,7 @@
|
|||
|
||||
/**
|
||||
* @brief DB정보, Request Argument등을 세팅
|
||||
*
|
||||
* Context::init()은 단 한번만 호출되어야 하며 init()시에
|
||||
* Request Argument, DB/언어/세션정보등의 모든 정보를 세팅한다
|
||||
* Context::init()은 단 한번만 호출되어야 하며 init()시에 Request Argument, DB/언어/세션정보등의 모든 정보를 세팅한다
|
||||
**/
|
||||
function init() {
|
||||
// context 변수를 $GLOBALS의 변수로 지정
|
||||
|
|
@ -114,6 +107,11 @@
|
|||
|
||||
// 인증 관련 정보를 Context와 세션에 설정
|
||||
if(Context::isInstalled()) {
|
||||
// site_module_info를 구함
|
||||
$oModuleModel = &getModel('module');
|
||||
$site_module_info = $oModuleModel->getDefaultMid();
|
||||
Context::set('site_module_info', $site_module_info);
|
||||
|
||||
// 인증관련 데이터를 Context에 설정
|
||||
$oMemberModel = &getModel('member');
|
||||
$oMemberController = &getController('member');
|
||||
|
|
@ -665,15 +663,20 @@
|
|||
/**
|
||||
* @brief 요청받은 url에 args_list를 적용하여 return
|
||||
**/
|
||||
function getUrl($num_args=0, $args_list=array()) {
|
||||
function getUrl($num_args=0, $args_list=array(), $domain = null) {
|
||||
$oContext = &Context::getInstance();
|
||||
return $oContext->_getUrl($num_args, $args_list);
|
||||
return $oContext->_getUrl($num_args, $args_list, $domain);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 요청받은 url에 args_list를 적용하여 return
|
||||
**/
|
||||
function _getUrl($num_args=0, $args_list=array()) {
|
||||
function _getUrl($num_args=0, $args_list=array(), $domain = null) {
|
||||
if($domain) {
|
||||
$domain = preg_replace('/^(http|https):\/\//i','', trim($domain));
|
||||
if(substr($domain,-1) != '/') $domain .= '/';
|
||||
}
|
||||
|
||||
if(!$this->get_vars || $args_list[0]=='') {
|
||||
$get_vars = null;
|
||||
if($args_list[0]=='') {
|
||||
|
|
@ -698,11 +701,16 @@
|
|||
if($get_vars['act'] == 'dispMemberFriend') $get_vars['act'] = 'dispCommunicationFriend';
|
||||
elseif($get_vars['act'] == 'dispMemberMessages') $get_vars['act'] = 'dispCommunicationMessages';
|
||||
|
||||
$var_count = count($get_vars);
|
||||
if(!$var_count) return '';
|
||||
if(!$domain) {
|
||||
if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = $this->getRequestUri(ENFORCE_SSL);
|
||||
else $path = $this->getRequestUri(RELEASE_SSL);
|
||||
} else {
|
||||
if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = 'https://'.$domain;
|
||||
else $path = 'http://'.$domain;
|
||||
}
|
||||
|
||||
if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = $this->getRequestUri(ENFORCE_SSL);
|
||||
else $path = $this->getRequestUri(RELEASE_SSL);
|
||||
$var_count = count($get_vars);
|
||||
if(!$var_count) return $path;
|
||||
|
||||
// rewrite모듈을 사용할때 getUrl()을 이용한 url 생성
|
||||
if($this->allow_rewrite) {
|
||||
|
|
@ -768,6 +776,10 @@
|
|||
* @brief 요청이 들어온 URL에서 argument를 제거하여 return
|
||||
**/
|
||||
function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL) {
|
||||
static $url = array();
|
||||
|
||||
if(isset($url[$ssl_mode])) return $url[$ssl_mode];
|
||||
|
||||
switch($ssl_mode) {
|
||||
case FOLLOW_REQUEST_SSL :
|
||||
if($_SERVER['HTTPS']=='on') $use_ssl = true;
|
||||
|
|
@ -781,7 +793,16 @@
|
|||
break;
|
||||
}
|
||||
|
||||
return sprintf("%s://%s%s",$use_ssl?'https':'http',$_SERVER['HTTP_HOST'], getScriptPath());
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
$domain = trim($site_module_info->domain);
|
||||
if($domain) {
|
||||
$domain = preg_replace('/^(http|https):\/\//i','', trim($domain));
|
||||
if(substr($domain,-1) != '/') $domain .= '/';
|
||||
} else $domain = $_SERVER['HTTP_HOST'].getScriptPath();
|
||||
|
||||
$url[$ssl_mode] = sprintf("%s://%s",$use_ssl?'https':'http',$domain);
|
||||
|
||||
return $url[$ssl_mode];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -307,7 +307,7 @@
|
|||
break;
|
||||
case 'number' :
|
||||
case 'numbers' :
|
||||
if(!preg_match('/^[0-9,]+$/is', $val)) return new Object(-1, sprintf($lang->filter->invalid_number, $lang->{$key}?$lang->{$key}:$key));
|
||||
if(!preg_match('/^(-?)[0-9,]+$/is', $val)) return new Object(-1, sprintf($lang->filter->invalid_number, $lang->{$key}?$lang->{$key}:$key));
|
||||
break;
|
||||
case 'alpha' :
|
||||
if(!preg_match('/^[a-z]+$/is', $val)) return new Object(-1, sprintf($lang->filter->invalid_alpha, $lang->{$key}?$lang->{$key}:$key));
|
||||
|
|
|
|||
|
|
@ -248,6 +248,15 @@
|
|||
$this->_query($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||
**/
|
||||
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||
$query = sprintf("drop %s index %s on %s%s", $is_unique?'unique':'', $index_name, $this->prefix, $table_name);
|
||||
$this->_query($query);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 index 정보를 return
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -418,6 +418,15 @@
|
|||
@ibase_commit($this->fd);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||
**/
|
||||
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||
$query = sprintf('DROP INDEX "%s" ON "%s%s"', $index_name, $this->prefix, $table_name);
|
||||
$this->_query($query);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 index 정보를 return
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -260,6 +260,15 @@
|
|||
$this->_query($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||
**/
|
||||
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||
$query = sprintf("alter table %s%s drop index %s;", $this->prefix, $table_name, $index_name);
|
||||
$this->_query($query);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 index 정보를 return
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -270,6 +270,14 @@
|
|||
$this->_query($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||
**/
|
||||
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||
$query = sprintf("alter table %s%s drop index %s;", $this->prefix, $table_name, $index_name);
|
||||
$this->_query($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 index 정보를 return
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -249,6 +249,20 @@
|
|||
$this->_query($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||
**/
|
||||
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||
if(strpos($table_name,$this->prefix)===false) $table_name = $this->prefix.$table_name;
|
||||
|
||||
// index_name의 경우 앞에 table이름을 붙여줘서 중복을 피함
|
||||
$index_name = $table_name.$index_name;
|
||||
|
||||
$query = sprintf("drop index %s", $index_name);
|
||||
$this->_query($query);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 index 정보를 return
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -242,6 +242,15 @@
|
|||
return $this->_query($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||
**/
|
||||
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||
$key_name = sprintf('%s%s_%s', $this->prefix, $table_name, $index_name);
|
||||
$query = sprintf("DROP INDEX %s", $this->prefix, $table_name, $key_name);
|
||||
$this->_query($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 index 정보를 return
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -265,6 +265,15 @@
|
|||
$this->_execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||
**/
|
||||
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||
$key_name = sprintf('%s%s_%s', $this->prefix, $table_name, $index_name);
|
||||
$query = sprintf("DROP INDEX %s", $this->prefix, $table_name, $key_name);
|
||||
$this->_query($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 테이블의 index 정보를 return
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -73,6 +73,9 @@
|
|||
// ModuleModel 객체 생성
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
$site_srl = $site_module_info->site_srl;
|
||||
|
||||
// document_srl만 있을 경우 document_srl로 모듈과 모듈 정보를 구함
|
||||
if($this->document_srl && !$this->mid && !$this->module_srl) {
|
||||
$module_info = $oModuleModel->getModuleInfoByDocumentSrl($this->document_srl);
|
||||
|
|
@ -81,10 +84,18 @@
|
|||
|
||||
// 아직 모듈을 못 찾았고 $mid값이 있으면 $mid로 모듈을 구함
|
||||
if(!$module_info && $this->mid) {
|
||||
$module_info = $oModuleModel->getModuleInfoByMid($this->mid);
|
||||
$module_info = $oModuleModel->getModuleInfoByMid($this->mid, $site_srl);
|
||||
if($this->module && $module_info->module != $this->module) unset($module_info);
|
||||
}
|
||||
|
||||
// 모듈정보와 사이트 모듈정보가 다르면(다른 사이트이면) 페이지 리다이렉트
|
||||
if($module_info && $site_module_info && $module_info->site_srl != $site_module_info->site_srl) {
|
||||
$site_info = $oModuleModel->getSiteInfo($module_info->site_srl);
|
||||
$redirect_url = getSiteUrl($site_info->domain, 'mid',Context::get('mid'),'document_srl',Context::get('document_srl'),'module_srl',Context::get('module_srl'));
|
||||
header("location:".$redirect_url);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 모듈을 여전히(;;) 못 찾고 $module_srl이 있으면 해당 모듈을 구함
|
||||
if(!$module_info && $this->module_srl) {
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($this->module_srl);
|
||||
|
|
@ -92,7 +103,13 @@
|
|||
}
|
||||
|
||||
// 역시 모듈을 못 찾았고 $module이 없다면 기본 모듈을 찾아봄
|
||||
if(!$module_info && !$this->module) $module_info = $oModuleModel->getModuleInfoByMid();
|
||||
if(!$module_info && !$this->module) $module_info = $site_module_info;
|
||||
|
||||
if($module_info && $site_module_info && $site_module_info->site_srl != $module_info->site_srl) {
|
||||
unset($site_module_info);
|
||||
$site_module_info = $oModuleModel->getSiteInfo($module_info->site_srl);
|
||||
}
|
||||
Context::set('site_module_info', $site_module_info);
|
||||
|
||||
// 모듈 정보가 찾아졌을 경우 모듈 정보에서 기본 변수들을 구함, 모듈 정보에서 module 이름을 구해움
|
||||
if($module_info) {
|
||||
|
|
@ -117,7 +134,12 @@
|
|||
|
||||
// 실제 동작을 하기 전에 trigger 호출
|
||||
$output = ModuleHandler::triggerCall('display', 'before', $content);
|
||||
if(!$output->toBool()) die($output->getMessage());
|
||||
if(!$output->toBool()) {
|
||||
$this->error = $output->getMessage();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -251,9 +273,6 @@
|
|||
// 컨텐츠 출력
|
||||
$oDisplayHandler = new DisplayHandler();
|
||||
$oDisplayHandler->printContent($oModule);
|
||||
|
||||
// DB 및 기타 자원의 종결 처리
|
||||
Context::close();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -86,6 +86,8 @@
|
|||
$user_group = $logged_info->group_list;
|
||||
$grant->is_admin = false;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
// 로그인되어 있다면 관리자 여부를 확인
|
||||
if($is_logged) {
|
||||
/* 로그인 사용자에 대한 관리자 여부는 다양한 방법으로 체크가 됨 */
|
||||
|
|
@ -93,11 +95,16 @@
|
|||
if($logged_info->is_admin == 'Y') {
|
||||
$grant->is_admin = true;
|
||||
|
||||
// 2. 최고 관리자는 아니지만 모듈 object가 있고 admin_id 컬럼에 로그인 사용자의 아이디가 있을 경우
|
||||
// 2. 사이트 관리자일 경우 사이트 관리 권한을 줌
|
||||
} elseif($oModuleModel->isSiteAdmin()) {
|
||||
$grant->is_admin = true;
|
||||
|
||||
|
||||
// 3. 최고 관리자는 아니지만 모듈 object가 있고 admin_id 컬럼에 로그인 사용자의 아이디가 있을 경우
|
||||
} elseif($this->module_info->admin_id) {
|
||||
if(is_array($this->module_info->admin_id) && in_array($user_id, $this->module_info->admin_id)) $grant->is_admin = true;
|
||||
|
||||
// 4. 1/2번이 아닐 경우 그룹을 체크하고 직접 모듈에 요청을 하여 체크를 함. (모듈.class.php에 정의)
|
||||
// 4. 1/2/3번이 아닐 경우 그룹을 체크하고 직접 모듈에 요청을 하여 체크를 함. (모듈.class.php에 정의)
|
||||
} else {
|
||||
$manager_group = $this->module_info->grants['manager'];
|
||||
if(count($user_group) && count($manager_group)) {
|
||||
|
|
@ -123,7 +130,7 @@
|
|||
$title = $grant_item->title;
|
||||
$default = $grant_item->default;
|
||||
|
||||
// 관리자이면 모든 권한에 대해 true 설정
|
||||
// 최고 관리자이면 모든 권한에 대해 true 설정
|
||||
if($grant->is_admin) {
|
||||
$grant->{$grant_name} = true;
|
||||
continue;
|
||||
|
|
@ -153,7 +160,7 @@
|
|||
if($is_logged) $grant->{$grant_name} = true;
|
||||
break;
|
||||
case 'root' :
|
||||
if($grant->is_admin) $grant->{$grant_name} = true;
|
||||
if($logged_info->is_admin == 'Y') $grant->{$grant_name} = true;
|
||||
break;
|
||||
default :
|
||||
$grant->{$grant_name} = true;
|
||||
|
|
@ -172,11 +179,12 @@
|
|||
}
|
||||
}
|
||||
|
||||
// act값에 admin이 들어 있는데 관리자가 아닌 경우 오류 표시
|
||||
// act값에 admin이 들어 있는데 관리자가 아닌 경우 해당 모듈의 관리자 체크
|
||||
if(substr_count($this->act, 'Admin')) {
|
||||
// 로그인 되어 있지 않다면 무조건 금지
|
||||
if(!$is_logged) $this->setAct("dispMemberLoginForm");
|
||||
elseif(!$grant->is_admin) $this->stop('msg_not_permitted_act');
|
||||
else if($logged_info->is_admin != 'Y' && (!method_exists($this, 'checkAdminActionGrant') || !$this->checkAdminActionGrant())) {
|
||||
$this->stop('msg_not_permitted_act');
|
||||
}
|
||||
}
|
||||
|
||||
// 권한변수 설정
|
||||
|
|
|
|||
|
|
@ -482,7 +482,7 @@ function displayPopupMenu(ret_obj, response_tags, params) {
|
|||
} else {
|
||||
if(menus) {
|
||||
var item = menus['item'];
|
||||
if(item.length<1) item = new Array(item);
|
||||
if(typeof(item.length)=='undefined' || item.length<1) item = new Array(item);
|
||||
if(item.length) {
|
||||
for(var i=0;i<item.length;i++) {
|
||||
var url = item[i].url;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
* 이 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며
|
||||
* config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함
|
||||
**/
|
||||
define('__ZBXE_VERSION__', '1.0.6');
|
||||
define('__ZBXE_VERSION__', '1.1.0');
|
||||
|
||||
/**
|
||||
* @brief 디버깅 메세지 출력
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief Context::getUrl($args_list)를 쓰기 쉽게 함수로 선언
|
||||
* @brief Context::getUrl()를 쓰기 쉽게 함수로 선언
|
||||
* @return string
|
||||
*
|
||||
* getUrl()은 현재 요청된 RequestURI에 주어진 인자의 값으로 변형하여 url을 리턴한다\n
|
||||
|
|
@ -210,6 +210,25 @@
|
|||
return Context::getUrl($num_args, $args_list);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Context::getUrl()를 쓰기 쉽게 함수로 선언
|
||||
* @return string
|
||||
*
|
||||
* getSiteUrl()은 지정된 도메인에 대해 주어진 인자의 값으로 변형하여 url을 리턴한다\n
|
||||
* 첫 인자는 도메인(http://등이 제외된)+path 여야 함.
|
||||
**/
|
||||
function getSiteUrl() {
|
||||
$num_args = func_num_args();
|
||||
$args_list = func_get_args();
|
||||
|
||||
if(!$num_args) return Context::getRequestUri();
|
||||
|
||||
$domain = array_shift($args_list);
|
||||
$num_args = count($args_list);
|
||||
|
||||
return Context::getUrl($num_args, $args_list, $domain);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 주어진 문자를 주어진 크기로 자르고 잘라졌을 경우 주어진 꼬리를 담
|
||||
* @param string 자를 원 문자열
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
* 그리고 해당 모듈을 실행후 컨텐츠를 출력한다\n
|
||||
**/
|
||||
$oModuleHandler = new ModuleHandler();
|
||||
$oModuleHandler->init();
|
||||
$oModule = &$oModuleHandler->procModule();
|
||||
$oModuleHandler->displayContent($oModule);
|
||||
if($oModuleHandler->init()) {
|
||||
$oModule = &$oModuleHandler->procModule();
|
||||
$oModuleHandler->displayContent($oModule);
|
||||
}
|
||||
|
||||
$oContext->close();
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<!--@if($logged_info->is_admin=='Y')--><li><a href="{getUrl('','module','admin','act','dispAdminConfig')}">{$lang->cmd_setup}</a></li><!--@end-->
|
||||
<li><a href="{getUrl('','module','admin','act','dispMemberLogout')}">{$lang->cmd_logout}</a></li>
|
||||
</ul>
|
||||
<!--@if($logged_info->is_admin=='Y')-->
|
||||
<div class="mainNavigator">
|
||||
<ul class="mainNavigator">
|
||||
<!--@foreach($lang->module_category_title as $key => $val)-->
|
||||
|
|
@ -28,6 +29,7 @@
|
|||
<!--@end-->
|
||||
</ul>
|
||||
</div>
|
||||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<div class="adminFolder"><a href="#" onclick="toggleXEMainNavigator(); return false;"><img src="./images/n_folder_btn<!--@if($_COOKIE['XEMN']=='none')-->_off<!--@end-->.png" alt="folding" id="btnFolder"/></a></div>
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
Context::set('module_srl','');
|
||||
$this->act = 'list';
|
||||
} else {
|
||||
ModuleModel::syncModuleToSite($module_info);
|
||||
$this->module_info = $module_info;
|
||||
Context::set('module_info',$module_info);
|
||||
}
|
||||
|
|
@ -60,7 +61,9 @@
|
|||
$args->list_count = 40;
|
||||
$args->page_count = 10;
|
||||
$args->s_module_category_srl = Context::get('module_category_srl');
|
||||
$output = executeQuery('board.getBoardList', $args);
|
||||
$output = executeQueryArray('board.getBoardList', $args);
|
||||
ModuleModel::syncModuleToSite($output->data);
|
||||
|
||||
|
||||
// 템플릿에 쓰기 위해서 context::set
|
||||
Context::set('total_count', $output->total_count);
|
||||
|
|
@ -158,7 +161,7 @@
|
|||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
|
||||
if(!$skin_info) {
|
||||
$skin = 'xe_default';
|
||||
$skin = 'xe_board';
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -37,31 +37,6 @@
|
|||
// 2007. 10. 17 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가
|
||||
$oModuleController->insertTrigger('member.getMemberMenu', 'board', 'controller', 'triggerMemberMenu', 'after');
|
||||
|
||||
// 기본 게시판 생성
|
||||
$output = executeQuery('module.getDefaultMidInfo');
|
||||
if($output->data) return new Object();
|
||||
|
||||
// 기본 모듈을 찾음
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByMid();
|
||||
|
||||
// 기본 모듈이 없으면 새로 등록
|
||||
if(!$module_info->module_srl) {
|
||||
$args->board_name = 'board';
|
||||
$args->browser_title = 'test module';
|
||||
$args->is_default = 'Y';
|
||||
$args->skin = 'xe_default';
|
||||
|
||||
// board 라는 이름의 모듈이 있는지 확인
|
||||
$module_info = $oModuleModel->getModuleInfoByMid($args->board_name);
|
||||
if($module_info->module_srl) $args->module_srl = $module_info->module_srl;
|
||||
else $args->module_srl = 0;
|
||||
|
||||
// 게시판 controller 생성
|
||||
$oBoardController = &getAdminController('board');
|
||||
$oBoardController->procBoardAdminInsertBoard($args);
|
||||
}
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
|
|
@ -118,5 +93,23 @@
|
|||
**/
|
||||
function recompileCache() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Action중 Admin이 들어갔을 경우 권한 체크
|
||||
**/
|
||||
function checkAdminActionGrant() {
|
||||
if(!Context::get('is_logged')) return false;
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
if($logged_info->is_admin=='Y') return true;
|
||||
|
||||
$actions = array('getBoardAdminCategoryTplInfo','dispBoardAdminCategoryInfo','procBoardAdminInsertCategory','procBoardAdminUpdateCategory','procBoardAdminDeleteCategory','procBoardAdminMoveCategory');
|
||||
if(!in_array($this->act, $actions)) return false;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
if($oModuleModel->isSiteAdmin()) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
|
||||
// 만약 스킨 경로가 없다면 xe_board로 변경
|
||||
if(!is_dir($template_path)) {
|
||||
$this->module_info->skin = 'xe_default';
|
||||
$this->module_info->skin = 'xe_board';
|
||||
$template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<!--@if($module_info)-->
|
||||
<div class="header4">
|
||||
<!--@if($module_info->mid)-->
|
||||
<h4>{$module_info->mid} <!--@if($module_info->is_default=='Y')--><span class="bracket">({$lang->is_default})</span><!--@end--> <span class="vr">|</span> <a href="{getUrl('','mid',$module_info->mid)}" onclick="window.open(this.href); return false;" class="view">View</a></h4>
|
||||
<h4>{$module_info->mid} <!--@if($module_info->is_default=='Y')--><span class="bracket">({$lang->is_default})</span><!--@end--> <span class="vr">|</span> <a href="{getSiteUrl($module_info->domain,'','mid',$module_info->mid)}" onclick="window.open(this.href); return false;" class="view">View</a></h4>
|
||||
<!--@end-->
|
||||
|
||||
<ul class="localNavigation">
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
<td><a href="{getUrl('act','dispBoardAdminBoardInfo','module_srl',$val->module_srl)}">{htmlspecialchars($val->mid)}</a></td>
|
||||
<td><a href="{getUrl('act','dispBoardAdminBoardInfo','module_srl',$val->module_srl)}">{htmlspecialchars($val->browser_title)}</a></td>
|
||||
<td class="date center nowrap">{zdate($val->regdate,"Y-m-d")}</td>
|
||||
<td class="view center"><a href="{getUrl('','mid',$val->mid)}" onclick="window.open(this.href); return false;">{$lang->cmd_view}</a></td>
|
||||
<td class="view center"><a href="{getSiteUrl($val->domain,'','mid',$val->mid)}" onclick="window.open(this.href); return false;">{$lang->cmd_view}</a></td>
|
||||
<td class="copy center"><a href="./?module=module&act=dispModuleAdminCopyModule&module_srl={$val->module_srl}" onclick="popopen(this.href);return false;">{$lang->cmd_copy}</a></td>
|
||||
<td class="delete center"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispBoardAdminDeleteBoard','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@else--> <!--@end--></td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -68,30 +68,5 @@
|
|||
return $output;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 댓글의 모듈별 추가 확장 폼을 저장
|
||||
**/
|
||||
function procCommentAdminInsertModuleConfig() {
|
||||
$module_srl = Context::get('target_module_srl');
|
||||
if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl);
|
||||
else $module_srl = array($module_srl);
|
||||
|
||||
$comment_config = null;
|
||||
$comment_config->comment_count = (int)Context::get('comment_count');
|
||||
if(!$comment_config->comment_count) $comment_config->comment_count = 50;
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
for($i=0;$i<count($module_srl);$i++) {
|
||||
$srl = trim($module_srl[$i]);
|
||||
if(!$srl) continue;
|
||||
$output = $oModuleController->insertModulePartConfig('comment',$srl,$comment_config);
|
||||
}
|
||||
|
||||
$this->setError(-1);
|
||||
$this->setMessage('success_updated');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -563,5 +563,27 @@
|
|||
Context::set('comment_popup_menu_list', $comment_popup_menu_list);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 댓글의 모듈별 추가 확장 폼을 저장
|
||||
**/
|
||||
function procCommentInsertModuleConfig() {
|
||||
$module_srl = Context::get('target_module_srl');
|
||||
if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl);
|
||||
else $module_srl = array($module_srl);
|
||||
|
||||
$comment_config = null;
|
||||
$comment_config->comment_count = (int)Context::get('comment_count');
|
||||
if(!$comment_config->comment_count) $comment_config->comment_count = 50;
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
for($i=0;$i<count($module_srl);$i++) {
|
||||
$srl = trim($module_srl[$i]);
|
||||
if(!$srl) continue;
|
||||
$output = $oModuleController->insertModulePartConfig('comment',$srl,$comment_config);
|
||||
}
|
||||
|
||||
$this->setError(-1);
|
||||
$this->setMessage('success_updated');
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@
|
|||
<action name="procCommentVoteUp" type="controller" standalone="true" />
|
||||
<action name="procCommentVoteDown" type="controller" standalone="true" />
|
||||
<action name="procCommentDeclare" type="controller" standalone="true" />
|
||||
<action name="procCommentInsertModuleConfig" type="controller" standalone="true" />
|
||||
<action name="procCommentAdminDeleteChecked" type="controller" standalone="true" />
|
||||
<action name="procCommentAdminCancelDeclare" type="controller" standalone="true" />
|
||||
<action name="procCommentAdminInsertModuleConfig" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<filter name="insert_comment_module_config" module="comment" act="procCommentAdminInsertModuleConfig" confirm_msg_code="confirm_submit">
|
||||
<filter name="insert_comment_module_config" module="comment" act="procCommentInsertModuleConfig" confirm_msg_code="confirm_submit">
|
||||
<form />
|
||||
<response>
|
||||
<tag name="error" />
|
||||
|
|
|
|||
|
|
@ -116,31 +116,35 @@
|
|||
$module_categories = $oModuleModel->getModuleCategories();
|
||||
|
||||
// 모듈의 목록을 가져옴
|
||||
$module_list = $oModuleModel->getMidList();
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
$args->site_srl = $site_module_info->site_srl;
|
||||
$module_list = $oModuleModel->getMidList($args);
|
||||
|
||||
// 최고 관리자가 아닌 경우 자신의 관리 대상 모듈만 구해옴
|
||||
$logged_info = Context::get('logged_info');
|
||||
$user_id = $logged_info->user_id;
|
||||
$group_list = $logged_info->group_list;
|
||||
// 사이트 운영자가 아닌 경우
|
||||
if(!$oModuleModel->isSiteAdmin()) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
$user_id = $logged_info->user_id;
|
||||
$group_list = $logged_info->group_list;
|
||||
|
||||
if($logged_info->is_admin != 'Y') {
|
||||
foreach($module_list as $key => $val) {
|
||||
$info = $oModuleModel->arrangeModuleInfo($val);
|
||||
if($logged_info->is_admin != 'Y') {
|
||||
foreach($module_list as $key => $val) {
|
||||
$info = $oModuleModel->arrangeModuleInfo($val);
|
||||
|
||||
// 직접 최고 관리자로 지정이 안되어 있으면 그룹을 체크
|
||||
if(!in_array($user_id, $info->admin_id)) {
|
||||
// 직접 최고 관리자로 지정이 안되어 있으면 그룹을 체크
|
||||
if(!in_array($user_id, $info->admin_id)) {
|
||||
|
||||
$is_granted = false;
|
||||
$manager_group = $info->grants['manager'];
|
||||
if(count($group_list) && count($manager_group)) {
|
||||
foreach($group_list as $group_srl => $group_info) {
|
||||
if(in_array($group_srl, $manager_group)) {
|
||||
$is_granted = true;
|
||||
break;
|
||||
$is_granted = false;
|
||||
$manager_group = $info->grants['manager'];
|
||||
if(count($group_list) && count($manager_group)) {
|
||||
foreach($group_list as $group_srl => $group_info) {
|
||||
if(in_array($group_srl, $manager_group)) {
|
||||
$is_granted = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!$is_granted) unset($module_list[$key]);
|
||||
}
|
||||
if(!$is_granted) unset($module_list[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -205,6 +205,24 @@
|
|||
FileHandler::removeFilesInDir(_XE_PATH_."files/cache/document_category");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Action중 Admin이 들어갔을 경우 권한 체크
|
||||
**/
|
||||
function checkAdminActionGrant() {
|
||||
if(!Context::get('is_logged')) return false;
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
if($logged_info->is_admin=='Y') return true;
|
||||
|
||||
$actions = array('procDocumentAdminAddCart','dispDocumentAdminManageDocument','procDocumentAdminManageCheckedDocument');
|
||||
if(!in_array($this->act, $actions)) return false;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
if($oModuleModel->isSiteAdmin()) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 권한 체크를 실행하는 method
|
||||
* 모듈 객체가 생성된 경우는 직접 권한을 체크하지만 기능성 모듈등 스스로 객체를 생성하지 않는 모듈들의 경우에는
|
||||
|
|
|
|||
|
|
@ -9,13 +9,14 @@
|
|||
<action name="dispEditorAdminSetupComponent" type="view" standalone="true" />
|
||||
<action name="dispEditorAdminSkinColorset" type="view" standalone="true" />
|
||||
<action name="dispEditorPreview" type="view" />
|
||||
<action name="dispEditorSkinColorset" type="view" />
|
||||
|
||||
|
||||
<action name="procEditorSaveDoc" type="controller" standalone="true" />
|
||||
<action name="procEditorRemoveSavedDoc" type="controller" standalone="true" />
|
||||
<action name="procEditorCall" type="controller" standalone="true" />
|
||||
<action name="procEditorInsertModuleConfig" type="controller" standalone="true" />
|
||||
|
||||
<action name="procEditorAdminInsertModuleConfig" type="controller" standalone="true" />
|
||||
<action name="procEditorAdminEnableComponent" type="controller" standalone="true" />
|
||||
<action name="procEditorAdminDisableComponent" type="controller" standalone="true" />
|
||||
<action name="procEditorAdminMoveListOrder" type="controller" standalone="true" />
|
||||
|
|
|
|||
|
|
@ -99,80 +99,6 @@
|
|||
$this->setMessage('success_updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 에디터의 모듈별 추가 확장 폼을 저장
|
||||
**/
|
||||
function procEditorAdminInsertModuleConfig() {
|
||||
$module_srl = Context::get('target_module_srl');
|
||||
|
||||
// 여러개의 모듈 일괄 설정일 경우
|
||||
if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl);
|
||||
else $module_srl = array($module_srl);
|
||||
|
||||
$editor_config = null;
|
||||
|
||||
$editor_config->editor_skin = Context::get('editor_skin');
|
||||
$editor_config->comment_editor_skin = Context::get('comment_editor_skin');
|
||||
$editor_config->sel_editor_colorset = Context::get('sel_editor_colorset');
|
||||
$editor_config->sel_comment_editor_colorset = Context::get('sel_comment_editor_colorset');
|
||||
|
||||
$enable_html_grant = trim(Context::get('enable_html_grant'));
|
||||
if($enable_html_grant) $editor_config->enable_html_grant = explode('|@|', $enable_html_grant);
|
||||
else $editor_config->enable_html_grant = array();
|
||||
|
||||
$enable_comment_html_grant = trim(Context::get('enable_comment_html_grant'));
|
||||
if($enable_comment_html_grant) $editor_config->enable_comment_html_grant = explode('|@|', $enable_comment_html_grant);
|
||||
else $editor_config->enable_comment_html_grant = array();
|
||||
|
||||
$upload_file_grant = trim(Context::get('upload_file_grant'));
|
||||
if($upload_file_grant) $editor_config->upload_file_grant = explode('|@|', $upload_file_grant);
|
||||
else $editor_config->upload_file_grant = array();
|
||||
|
||||
$comment_upload_file_grant = trim(Context::get('comment_upload_file_grant'));
|
||||
if($comment_upload_file_grant) $editor_config->comment_upload_file_grant = explode('|@|', $comment_upload_file_grant);
|
||||
else $editor_config->comment_upload_file_grant = array();
|
||||
|
||||
$enable_default_component_grant = trim(Context::get('enable_default_component_grant'));
|
||||
if($enable_default_component_grant) $editor_config->enable_default_component_grant = explode('|@|', $enable_default_component_grant);
|
||||
else $editor_config->enable_default_component_grant = array();
|
||||
|
||||
$enable_comment_default_component_grant = trim(Context::get('enable_comment_default_component_grant'));
|
||||
if($enable_comment_default_component_grant) $editor_config->enable_comment_default_component_grant = explode('|@|', $enable_comment_default_component_grant);
|
||||
else $editor_config->enable_comment_default_component_grant = array();
|
||||
|
||||
$enable_component_grant = trim(Context::get('enable_component_grant'));
|
||||
if($enable_component_grant) $editor_config->enable_component_grant = explode('|@|', $enable_component_grant);
|
||||
else $editor_config->enable_component_grant = array();
|
||||
|
||||
$enable_comment_component_grant = trim(Context::get('enable_comment_component_grant'));
|
||||
if($enable_comment_component_grant) $editor_config->enable_comment_component_grant = explode('|@|', $enable_comment_component_grant);
|
||||
else $editor_config->enable_comment_component_grant = array();
|
||||
|
||||
$editor_config->editor_height = (int)Context::get('editor_height');
|
||||
|
||||
$editor_config->comment_editor_height = (int)Context::get('comment_editor_height');
|
||||
|
||||
$editor_config->enable_height_resizable = Context::get('enable_height_resizable');
|
||||
|
||||
$editor_config->enable_comment_height_resizable = Context::get('enable_comment_height_resizable');
|
||||
|
||||
$editor_config->enable_autosave = Context::get('enable_autosave');
|
||||
|
||||
if($editor_config->enable_height_resizable != 'Y') $editor_config->enable_height_resizable = 'N';
|
||||
if($editor_config->enable_comment_height_resizable != 'Y') $editor_config->enable_comment_height_resizable = 'N';
|
||||
if($editor_config->enable_autosave != 'Y') $editor_config->enable_autosave = 'N';
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
for($i=0;$i<count($module_srl);$i++) {
|
||||
$srl = trim($module_srl[$i]);
|
||||
if(!$srl) continue;
|
||||
$oModuleController->insertModulePartConfig('editor',$srl,$editor_config);
|
||||
}
|
||||
|
||||
$this->setError(-1);
|
||||
$this->setMessage('success_updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 컴포넌트를 DB에 추가
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -68,12 +68,5 @@
|
|||
$this->setLayoutFile("popup_layout");
|
||||
}
|
||||
|
||||
function dispEditorAdminSkinColorset(){
|
||||
$skin = Context::get('skin');
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path,$skin);
|
||||
$colorset = $skin_info->colorset;
|
||||
Context::set('colorset', $colorset);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
**/
|
||||
|
||||
class editorAPI extends editor {
|
||||
function dispEditorAdminSkinColorset(&$oModule) {
|
||||
function dispEditorSkinColorset(&$oModule) {
|
||||
$oModule->add('colorset', Context::get('colorset'));
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -102,5 +102,80 @@
|
|||
// 일단 이전 저장본 삭제
|
||||
return executeQuery('editor.deleteSavedDoc', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 에디터의 모듈별 추가 확장 폼을 저장
|
||||
**/
|
||||
function procEditorInsertModuleConfig() {
|
||||
$module_srl = Context::get('target_module_srl');
|
||||
|
||||
// 여러개의 모듈 일괄 설정일 경우
|
||||
if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl);
|
||||
else $module_srl = array($module_srl);
|
||||
|
||||
$editor_config = null;
|
||||
|
||||
$editor_config->editor_skin = Context::get('editor_skin');
|
||||
$editor_config->comment_editor_skin = Context::get('comment_editor_skin');
|
||||
$editor_config->sel_editor_colorset = Context::get('sel_editor_colorset');
|
||||
$editor_config->sel_comment_editor_colorset = Context::get('sel_comment_editor_colorset');
|
||||
|
||||
$enable_html_grant = trim(Context::get('enable_html_grant'));
|
||||
if($enable_html_grant) $editor_config->enable_html_grant = explode('|@|', $enable_html_grant);
|
||||
else $editor_config->enable_html_grant = array();
|
||||
|
||||
$enable_comment_html_grant = trim(Context::get('enable_comment_html_grant'));
|
||||
if($enable_comment_html_grant) $editor_config->enable_comment_html_grant = explode('|@|', $enable_comment_html_grant);
|
||||
else $editor_config->enable_comment_html_grant = array();
|
||||
|
||||
$upload_file_grant = trim(Context::get('upload_file_grant'));
|
||||
if($upload_file_grant) $editor_config->upload_file_grant = explode('|@|', $upload_file_grant);
|
||||
else $editor_config->upload_file_grant = array();
|
||||
|
||||
$comment_upload_file_grant = trim(Context::get('comment_upload_file_grant'));
|
||||
if($comment_upload_file_grant) $editor_config->comment_upload_file_grant = explode('|@|', $comment_upload_file_grant);
|
||||
else $editor_config->comment_upload_file_grant = array();
|
||||
|
||||
$enable_default_component_grant = trim(Context::get('enable_default_component_grant'));
|
||||
if($enable_default_component_grant) $editor_config->enable_default_component_grant = explode('|@|', $enable_default_component_grant);
|
||||
else $editor_config->enable_default_component_grant = array();
|
||||
|
||||
$enable_comment_default_component_grant = trim(Context::get('enable_comment_default_component_grant'));
|
||||
if($enable_comment_default_component_grant) $editor_config->enable_comment_default_component_grant = explode('|@|', $enable_comment_default_component_grant);
|
||||
else $editor_config->enable_comment_default_component_grant = array();
|
||||
|
||||
$enable_component_grant = trim(Context::get('enable_component_grant'));
|
||||
if($enable_component_grant) $editor_config->enable_component_grant = explode('|@|', $enable_component_grant);
|
||||
else $editor_config->enable_component_grant = array();
|
||||
|
||||
$enable_comment_component_grant = trim(Context::get('enable_comment_component_grant'));
|
||||
if($enable_comment_component_grant) $editor_config->enable_comment_component_grant = explode('|@|', $enable_comment_component_grant);
|
||||
else $editor_config->enable_comment_component_grant = array();
|
||||
|
||||
$editor_config->editor_height = (int)Context::get('editor_height');
|
||||
|
||||
$editor_config->comment_editor_height = (int)Context::get('comment_editor_height');
|
||||
|
||||
$editor_config->enable_height_resizable = Context::get('enable_height_resizable');
|
||||
|
||||
$editor_config->enable_comment_height_resizable = Context::get('enable_comment_height_resizable');
|
||||
|
||||
$editor_config->enable_autosave = Context::get('enable_autosave');
|
||||
|
||||
if($editor_config->enable_height_resizable != 'Y') $editor_config->enable_height_resizable = 'N';
|
||||
if($editor_config->enable_comment_height_resizable != 'Y') $editor_config->enable_comment_height_resizable = 'N';
|
||||
if($editor_config->enable_autosave != 'Y') $editor_config->enable_autosave = 'N';
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
for($i=0;$i<count($module_srl);$i++) {
|
||||
$srl = trim($module_srl[$i]);
|
||||
if(!$srl) continue;
|
||||
$oModuleController->insertModulePartConfig('editor',$srl,$editor_config);
|
||||
}
|
||||
|
||||
$this->setError(-1);
|
||||
$this->setMessage('success_updated');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -48,6 +48,9 @@
|
|||
if($editor_config->enable_comment_height_resizable!='Y') $editor_config->enable_comment_height_resizable= "N";
|
||||
if($editor_config->enable_autosave!='N') $editor_config->enable_autosave = "Y";
|
||||
|
||||
if(!$editor_config->editor_skin) $editor_config->editor_skin = 'default';
|
||||
if(!$editor_config->comment_editor_skin) $editor_config->comment_editor_skin = 'default';
|
||||
|
||||
return $editor_config;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -88,7 +88,8 @@
|
|||
|
||||
// 그룹 목록을 구함
|
||||
$oMemberModel = &getModel('member');
|
||||
$group_list = $oMemberModel->getGroups();
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
$group_list = $oMemberModel->getGroups($site_module_info->site_srl);
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
|
|
@ -104,5 +105,13 @@
|
|||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile('preview');
|
||||
}
|
||||
|
||||
function dispEditorSkinColorset(){
|
||||
$skin = Context::get('skin');
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path,$skin);
|
||||
$colorset = $skin_info->colorset;
|
||||
Context::set('colorset', $colorset);
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<filter name="insert_editor_module_config" module="editor" act="procEditorAdminInsertModuleConfig" confirm_msg_code="confirm_submit">
|
||||
<filter name="insert_editor_module_config" module="editor" act="procEditorInsertModuleConfig" confirm_msg_code="confirm_submit">
|
||||
<form />
|
||||
<response>
|
||||
<tag name="error" />
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ function getEditorSkinColorList(skin_name,selected_colorset,type){
|
|||
if(skin_name.length>0){
|
||||
type = type || 'board';
|
||||
var response_tags = new Array('error','message','colorset');
|
||||
exec_xml('editor','dispEditorAdminSkinColorset',{skin:skin_name},resultGetEditorSkinColorList,response_tags,{'selected_colorset':selected_colorset,'type':type});
|
||||
exec_xml('editor','dispEditorSkinColorset',{skin:skin_name},resultGetEditorSkinColorList,response_tags,{'selected_colorset':selected_colorset,'type':type});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@
|
|||
|
||||
// 그룹의 설정을 위한 권한 가져오기
|
||||
$oMemberModel = &getModel('member');
|
||||
$group_list = $oMemberModel->getGroups();
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
$group_list = $oMemberModel->getGroups($site_module_info->site_srl);
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
|
|
|
|||
12
modules/homepage/conf/info.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="0.2">
|
||||
<title xml:lang="ko">홈페이지</title>
|
||||
<description xml:lang="ko">XE의 여러 모듈들을 조합하여 홈페이지를 생성하기 가장 좋은 관리자 기능을 제공합니다</description>
|
||||
<version>0.1</version>
|
||||
<date>2008-11-04</date>
|
||||
<category>package</category>
|
||||
|
||||
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||
<name xml:lang="ko">zero</name>
|
||||
</author>
|
||||
</module>
|
||||
40
modules/homepage/conf/module.xml
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<grants />
|
||||
<actions>
|
||||
<action name="dispHomepageManage" type="view" standalone="true" index="true" />
|
||||
<action name="dispHomepageTopMenu" type="view" standalone="true" />
|
||||
<action name="dispHomepageBottomMenu" type="view" standalone="true" />
|
||||
<action name="dispHomepageMidSetup" type="view" standalone="true" />
|
||||
<action name="dispHomepageBoardInfo" type="view" standalone="true" />
|
||||
<action name="dispHomepageBoardAddition" type="view" standalone="true" />
|
||||
<action name="dispHomepageBoardGrant" type="view" standalone="true" />
|
||||
<action name="dispHomepageBoardSkin" type="view" standalone="true" />
|
||||
|
||||
<action name="getHomepageMenuItem" type="model" standalone="true" />
|
||||
|
||||
<action name="procHomepageChangeLayout" type="controller" standalone="true" />
|
||||
<action name="procHomepageLayoutUpdate" type="controller" standalone="true" />
|
||||
<action name="procHomepageInsertMenuItem" type="controller" standalone="true" />
|
||||
<action name="procHomepageDeleteMenuItem" type="controller" standalone="true" />
|
||||
<action name="procHomepageMenuItemMove" type="controller" standalone="true" />
|
||||
<action name="procHomepageMenuUploadButton" type="controller" standalone="true" />
|
||||
<action name="procHomepageDeleteButton" type="controller" standalone="true" />
|
||||
<action name="procHomepageDeleteGroup" type="controller" standalone="true" />
|
||||
<action name="procHomepageInsertGroup" type="controller" standalone="true" />
|
||||
<action name="procHomepageUpdateMemberGroup" type="controller" standalone="true" />
|
||||
<action name="procHomepageInsertBoard" type="controller" standalone="true" />
|
||||
<action name="procHomepageInsertPage" type="controller" standalone="true" />
|
||||
<action name="procHomepageUpdateBoardSkin" type="controller" standalone="true" />
|
||||
<action name="procHomepageInsertBoardGrant" type="controller" standalone="true" />
|
||||
<action name="procHomepageChangeIndex" type="controller" standalone="true" />
|
||||
|
||||
<action name="dispHomepageAdminContent" type="view" standalone="true" admin_index="true" />
|
||||
<action name="dispHomepageAdminSetup" type="view" standalone="true" />
|
||||
<action name="dispHomepageAdminDelete" type="view" standalone="true" />
|
||||
|
||||
<action name="procHomepageAdminInsertHomepage" type="controller" />
|
||||
<action name="procHomepageAdminUpdateHomepage" type="controller" />
|
||||
<action name="procHomepageAdminDeleteHomepage" type="controller" />
|
||||
</actions>
|
||||
</module>
|
||||
288
modules/homepage/homepage.admin.controller.php
Normal file
21
modules/homepage/homepage.admin.model.php
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* @class homepageAdminModel
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief homepage 모듈의 admin model class
|
||||
**/
|
||||
|
||||
class homepageAdminModel extends homepage {
|
||||
|
||||
function init() {
|
||||
}
|
||||
|
||||
function getHomepageList($page) {
|
||||
if(!$page) $page = 1;
|
||||
$args->page = $page;
|
||||
$output = executeQueryArray('homepage.getHomepageList', $args);
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
57
modules/homepage/homepage.admin.view.php
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
/**
|
||||
* @class homepageAdminView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief homepage 모듈의 admin view class
|
||||
**/
|
||||
|
||||
class homepageAdminView extends homepage {
|
||||
|
||||
function init() {
|
||||
$template_path = sprintf("%stpl/",$this->module_path);
|
||||
$this->setTemplatePath($template_path);
|
||||
}
|
||||
|
||||
function dispHomepageAdminContent() {
|
||||
|
||||
$oHompageAdminModel = &getAdminModel('homepage');
|
||||
$page = Context::get('page');
|
||||
$output = $oHompageAdminModel->getHomepageList($page);
|
||||
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('homepage_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('index');
|
||||
}
|
||||
|
||||
function dispHomepageAdminSetup() {
|
||||
$site_srl = Context::get('site_srl');
|
||||
$oHomepageModel = &getModel('homepage');
|
||||
$homepage_info = $oHomepageModel->getHomepageInfo($site_srl);
|
||||
Context::set('homepage_info', $homepage_info);
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$admin_list = $oModuleModel->getSiteAdmin($site_srl);
|
||||
Context::set('admin_list', $admin_list);
|
||||
|
||||
$this->setTemplateFile('setup');
|
||||
}
|
||||
|
||||
function dispHomepageAdminDelete() {
|
||||
$site_srl = Context::get('site_srl');
|
||||
$oHomepageModel = &getModel('homepage');
|
||||
$homepage_info = $oHomepageModel->getHomepageInfo($site_srl);
|
||||
Context::set('homepage_info', $homepage_info);
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$admin_list = $oModuleModel->getSiteAdmin($site_srl);
|
||||
Context::set('admin_list', $admin_list);
|
||||
|
||||
$this->setTemplateFile('delete');
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
64
modules/homepage/homepage.class.php
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?php
|
||||
/**
|
||||
* @class homepage
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief homepage package
|
||||
**/
|
||||
|
||||
class homepage extends ModuleObject {
|
||||
|
||||
/**
|
||||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertActionForward('homepage', 'view', 'dispHomepageAdminContent');
|
||||
$oModuleController->insertActionForward('homepage', 'view', 'dispHomepageAdminSetup');
|
||||
$oModuleController->insertActionForward('homepage', 'view', 'dispHomepageAdminDelete');
|
||||
|
||||
// 신규 홈페이지 추가
|
||||
$tmp_url = parse_url(Context::getRequestUri());
|
||||
$domain = sprintf('%s%s', $tmp_url['host'], $tmp_url['path']);
|
||||
$oHomepageAdminController = &getAdminController('homepage');
|
||||
$oHomepageAdminController->insertHomepage('homepage', $domain);
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function checkUpdate() {
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
if(!$oModuleModel->getActionForward('dispHomepageAdminContent')) return true;
|
||||
if(!$oModuleModel->getActionForward('dispHomepageAdminSetup')) return true;
|
||||
if(!$oModuleModel->getActionForward('dispHomepageAdminDelete')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
$oModuleModel = &getModel('module');
|
||||
$oModuleController = &getController('module');
|
||||
|
||||
if(!$oModuleModel->getActionForward('dispHomepageAdminContent'))
|
||||
$oModuleController->insertActionForward('homepage', 'view', 'dispHomepageAdminContent');
|
||||
if(!$oModuleModel->getActionForward('dispHomepageAdminSetup'))
|
||||
$oModuleController->insertActionForward('homepage', 'view', 'dispHomepageAdminSetup');
|
||||
if(!$oModuleModel->getActionForward('dispHomepageAdminDelete'))
|
||||
$oModuleController->insertActionForward('homepage', 'view', 'dispHomepageAdminDelete');
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 캐시 파일 재생성
|
||||
**/
|
||||
function recompileCache() {
|
||||
}
|
||||
}
|
||||
?>
|
||||
394
modules/homepage/homepage.controller.php
Normal file
|
|
@ -0,0 +1,394 @@
|
|||
<?php
|
||||
/**
|
||||
* @class homepageController
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief homepage 모듈의 controller class
|
||||
**/
|
||||
|
||||
class homepageController extends homepage {
|
||||
|
||||
var $site_module_info = null;
|
||||
var $site_srl = null;
|
||||
var $homepage_info = null;
|
||||
var $selected_layout = null;
|
||||
|
||||
function init() {
|
||||
$oModuleModel = &getModel('module');
|
||||
if(!$oModuleModel->isSiteAdmin()) return $this->stop('msg_not_permitted');
|
||||
|
||||
// site_module_info값으로 홈페이지의 정보를 구함
|
||||
$this->site_module_info = Context::get('site_module_info');
|
||||
$this->site_srl = $this->site_module_info->site_srl;
|
||||
|
||||
$oHomepageModel = &getModel('homepage');
|
||||
$this->homepage_info = $oHomepageModel->getHomepageInfo($this->site_srl);
|
||||
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$this->selected_layout = $oLayoutModel->getLayout($this->homepage_info->layout_srl);
|
||||
|
||||
}
|
||||
|
||||
function procHomepageChangeLayout() {
|
||||
$layout = Context::get('layout');
|
||||
if(!$layout || !is_dir(_XE_PATH_.'layouts/'.$layout)) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
$layout_srl = $this->selected_layout->layout_srl;
|
||||
|
||||
if($layout == $this->selected_layout->layout) return;
|
||||
|
||||
$oLayoutAdminController = &getAdminController('layout');
|
||||
$args->layout_srl = $layout_srl;
|
||||
$args->layout = $layout;
|
||||
$args->layout_path = '';
|
||||
return $oLayoutAdminController->updateLayout($args);
|
||||
}
|
||||
|
||||
function procHomepageLayoutUpdate() {
|
||||
$layout_srl = Context::get('layout_srl');
|
||||
if(!$layout_srl || $layout_srl!=$this->selected_layout->layout_srl) exit();
|
||||
$oLayoutAdminController = &getAdminController('layout');
|
||||
$oLayoutAdminController->procLayoutAdminUpdate();
|
||||
|
||||
$this->setLayoutPath( $oLayoutAdminController->getLayoutPath() );
|
||||
$this->setLayoutFile( $oLayoutAdminController->getLayoutFile() );
|
||||
$this->setTemplatePath( $oLayoutAdminController->getTemplatePath() );
|
||||
$this->setTemplateFile( $oLayoutAdminController->getTemplateFile() );
|
||||
}
|
||||
|
||||
function procHomepageInsertMenuItem() {
|
||||
global $lang;
|
||||
|
||||
// 기본 변수 체크
|
||||
$source_args = Context::getRequestVars();
|
||||
unset($source_args->body);
|
||||
unset($source_args->module);
|
||||
unset($source_args->act);
|
||||
unset($source_args->module_type);
|
||||
unset($source_args->module_id);
|
||||
unset($source_args->url);
|
||||
if($source_args->menu_open_window!="Y") $source_args->menu_open_window = "N";
|
||||
if($source_args->menu_expand !="Y") $source_args->menu_expand = "N";
|
||||
$source_args->group_srls = str_replace('|@|',',',$source_args->group_srls);
|
||||
$source_args->parent_srl = (int)$source_args->parent_srl;
|
||||
|
||||
$module_type = Context::get('module_type');
|
||||
$browser_title = trim(Context::get('browser_title'));
|
||||
$url = trim(Context::get('url'));
|
||||
$module_id = trim(Context::get('module_id'));
|
||||
|
||||
$oMenuAdminModel = &getAdminModel('menu');
|
||||
$oMenuAdminController = &getAdminController('menu');
|
||||
|
||||
// 메뉴 이름 체크
|
||||
$lang_supported = Context::get('lang_supported');
|
||||
$name_inserted = false;
|
||||
foreach($lang_supported as $key => $val) {
|
||||
$menu_name[$key] = $source_args->{"menu_name_".strtolower($key )};
|
||||
if($menu_name[$key]) $name_inserted = true;
|
||||
}
|
||||
if(!$name_inserted) {
|
||||
return new Object(-1, sprintf($lang->filter->isnull, $lang->menu_name));
|
||||
}
|
||||
|
||||
$mode = Context::get('mode');
|
||||
|
||||
// module_type이 url이 아니면 게시판 또는 페이지를 생성한다
|
||||
if($module_type != 'url' && $mode == 'insert') {
|
||||
if(!$browser_title) return new Object(-1, sprintf($lang->filter->isnull, $lang->browser_title));
|
||||
if(!$module_id) return new Object(-1, sprintf($lang->filter->isnull, $lang->module_id));
|
||||
|
||||
// 모듈이름을 검사
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByMid($module_id, $this->site_srl);
|
||||
if($module_info->mid == $module_id) return new Object(-1,'msg_module_name_exists');
|
||||
|
||||
$oHomepageAdminController = &getAdminController('homepage');
|
||||
|
||||
if($module_type == 'page') {
|
||||
$oHomepageAdminController->makePage($this->site_srl, $module_id, $browser_title, '', $this->selected_layout->layout_srl);
|
||||
} else {
|
||||
$oHomepageAdminController->makeBoard($this->site_srl, $module_id, $browser_title, $this->selected_layout->layout_srl);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 변수를 다시 정리 (form문의 column과 DB column이 달라서)
|
||||
$args->menu_srl = $source_args->menu_srl;
|
||||
$args->menu_item_srl = $source_args->menu_item_srl;
|
||||
$args->parent_srl = $source_args->parent_srl;
|
||||
$args->menu_srl = $source_args->menu_srl;
|
||||
$args->name = serialize($menu_name);
|
||||
if($module_type=='url') $args->url = 'http://'.preg_replace('/^(http|https):\/\//i','',$url);
|
||||
else $args->url = $module_id;
|
||||
$args->open_window = $source_args->menu_open_window;
|
||||
$args->expand = $source_args->menu_expand;
|
||||
$args->normal_btn = $source_args->normal_btn;
|
||||
$args->hover_btn = $source_args->hover_btn;
|
||||
$args->active_btn = $source_args->active_btn;
|
||||
$args->group_srls = $source_args->group_srls;
|
||||
|
||||
switch($mode) {
|
||||
case 'insert' :
|
||||
$args->menu_item_srl = getNextSequence();
|
||||
$args->listorder = -1*$args->menu_item_srl;
|
||||
$output = executeQuery('menu.insertMenuItem', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
break;
|
||||
case 'update' :
|
||||
$source_menu_info = $oMenuAdminModel->getMenuItemInfo($args->menu_item_srl);
|
||||
$output = executeQuery('menu.updateMenuItem', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
if($module_type != 'url') {
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByMid($source_menu_info->url, $this->site_srl);
|
||||
if($module_info->mid != $module_id || $module_info->browser_title != $browser_title) {
|
||||
$module_info->browser_title = $browser_title;
|
||||
$module_info->mid = $module_id;
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->updateModule($module_info);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default :
|
||||
return new Object(-1,'msg_invalid_request');
|
||||
break;
|
||||
}
|
||||
|
||||
// 해당 메뉴의 정보를 구함
|
||||
$menu_info = $oMenuAdminModel->getMenu($args->menu_srl);
|
||||
$menu_title = $menu_info->title;
|
||||
|
||||
// XML 파일을 갱신하고 위치을 넘겨 받음
|
||||
$xml_file = $oMenuAdminController->makeXmlFile($args->menu_srl);
|
||||
|
||||
$this->add('xml_file', $xml_file);
|
||||
}
|
||||
|
||||
function procHomepageDeleteMenuItem() {
|
||||
$menu_item_srl = Context::get('menu_item_srl');
|
||||
if(!$menu_item_srl) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
$oMenuAdminModel = &getAdminModel('menu');
|
||||
$oMenuAdminController = &getAdminController('menu');
|
||||
|
||||
$menu_info = $oMenuAdminModel->getMenuItemInfo($menu_item_srl);
|
||||
if(!$menu_info || $menu_info->menu_item_srl != $menu_item_srl) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
Context::set('menu_srl', $menu_info->menu_srl);
|
||||
$output = $oMenuAdminController->procMenuAdminDeleteItem();
|
||||
if(is_object($output) && !$output->toBool()) return $output;
|
||||
$this->add('xml_file', $oMenuAdminController->get('xml_file'));
|
||||
|
||||
$mid = $menu_info->url;
|
||||
if(!preg_match('/^http/i',$mid)) {
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByMid($mid, $this->site_srl);
|
||||
if($module_info && $module_info->mid == $mid) {
|
||||
$oModuleController = &getController('module');
|
||||
$output = $oModuleController->deleteModule($module_info->module_srl, $this->site_srl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function procHomepageMenuUploadButton() {
|
||||
$menu_srl = Context::get('menu_srl');
|
||||
$menu_item_srl = Context::get('menu_item_srl');
|
||||
$target = Context::get('target');
|
||||
$target_file = Context::get($target);
|
||||
|
||||
// 필수 요건이 없거나 업로드된 파일이 아니면 오류 발생
|
||||
if(!$menu_srl || !$menu_item_srl || !$target_file || !is_uploaded_file($target_file['tmp_name']) || !preg_match('/\.(gif|jpeg|jpg|png)/i',$target_file['name'])) {
|
||||
Context::set('error_messge', Context::getLang('msg_invalid_request'));
|
||||
|
||||
// 요건을 만족하고 업로드된 파일이면 지정된 위치로 이동
|
||||
} else {
|
||||
$tmp_arr = explode('.',$target_file['name']);
|
||||
$ext = $tmp_arr[count($tmp_arr)-1];
|
||||
|
||||
$path = sprintf('./files/attach/menu_button/%d/', $menu_srl);
|
||||
$filename = sprintf('%s%d.%s.%s', $path, $menu_item_srl, $target, $ext);
|
||||
|
||||
if(!is_dir($path)) FileHandler::makeDir($path);
|
||||
|
||||
move_uploaded_file($target_file['tmp_name'], $filename);
|
||||
Context::set('filename', $filename);
|
||||
}
|
||||
|
||||
$this->setTemplatePath('./modules/menu/tpl');
|
||||
$this->setTemplateFile('menu_file_uploaded');
|
||||
}
|
||||
|
||||
function procHomepageDeleteButton() {
|
||||
$menu_srl = Context::get('menu_srl');
|
||||
$menu_item_srl = Context::get('menu_item_srl');
|
||||
$target = Context::get('target');
|
||||
$filename = Context::get('filename');
|
||||
FileHandler::removeFile($filename);
|
||||
|
||||
$this->add('target', $target);
|
||||
}
|
||||
|
||||
function procHomepageMenuItemMove() {
|
||||
$menu_srl = Context::get('menu_srl');
|
||||
$mode = Context::get('mode');
|
||||
$parent_srl = Context::get('parent_srl');
|
||||
$source_srl = Context::get('source_srl');
|
||||
$target_srl = Context::get('target_srl');
|
||||
|
||||
if(!$menu_srl || !$mode || !$target_srl) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
// 원본 메뉴들을 구함
|
||||
$oMenuAdminModel = &getAdminModel('menu');
|
||||
$oMenuAdminController = &getAdminController('menu');
|
||||
|
||||
$target_item = $oMenuAdminModel->getMenuItemInfo($target_srl);
|
||||
if($target_item->menu_item_srl != $target_srl) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
// 위치 이동 (순서 조절)
|
||||
if($mode == 'move') {
|
||||
$args->parent_srl = $parent_srl;
|
||||
$args->menu_srl = $menu_srl;
|
||||
|
||||
if($source_srl) {
|
||||
$source_item = $oMenuAdminModel->getMenuItemInfo($source_srl);
|
||||
if($source_item->menu_item_srl != $source_srl) return new Object(-1,'msg_invalid_request');
|
||||
$args->listorder = $source_item->listorder-1;
|
||||
} else {
|
||||
$output = executeQuery('menu.getMaxListorder', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
$args->listorder = (int)$output->data->listorder;
|
||||
if(!$args->listorder) $args->listorder= 0;
|
||||
}
|
||||
$args->parent_srl = $parent_srl;
|
||||
$output = executeQuery('menu.updateMenuItemListorder', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$args->parent_srl = $parent_srl;
|
||||
$args->menu_item_srl = $target_srl;
|
||||
$output = executeQuery('menu.updateMenuItemNode', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
// 자식으로 추가
|
||||
} elseif($mode == 'insert') {
|
||||
$args->menu_item_srl = $target_srl;
|
||||
$args->parent_srl = $parent_srl;
|
||||
$args->listorder = -1*getNextSequence();
|
||||
$output = executeQuery('menu.updateMenuItemNode', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
}
|
||||
|
||||
$xml_file = $oMenuAdminController->makeXmlFile($menu_srl);
|
||||
$this->add('xml_file', $xml_file);
|
||||
}
|
||||
|
||||
function procHomepageInsertBoard() {
|
||||
$oBoardAdminController = &getAdminController('board');
|
||||
$output = $oBoardAdminController->procBoardAdminInsertBoard();
|
||||
if(is_object($output) && !$output->toBool()) return $output;
|
||||
$this->add('module_srl', $oBoardAdminController->get('module_srl'));
|
||||
$this->setMessage($oBoardAdminController->getMessage());
|
||||
}
|
||||
|
||||
function procHomepageDeleteGroup() {
|
||||
$oMemberAdminController = &getAdminController('member');
|
||||
$group_srl = Context::get('group_srl');
|
||||
$output = $oMemberAdminController->deleteGroup($group_srl, $this->site_srl);
|
||||
if(!$output->toBool()) return $output;
|
||||
}
|
||||
|
||||
function procHomepageInsertGroup() {
|
||||
$args->group_srl = Context::get('group_srl');
|
||||
$args->title = Context::get('title');
|
||||
$args->is_default = Context::get('is_default');
|
||||
if($args->is_default!='Y') $args->is_default = 'N';
|
||||
$args->description = Context::get('description');
|
||||
$args->site_srl = $this->site_srl;
|
||||
|
||||
$oMemberAdminController = &getAdminController('member');
|
||||
if($args->group_srl) {
|
||||
$output = $oMemberAdminController->updateGroup($args);
|
||||
} else {
|
||||
$output = $oMemberAdminController->insertGroup($args);
|
||||
}
|
||||
if(!$output->toBool()) return $output;
|
||||
}
|
||||
|
||||
function procHomepageUpdateMemberGroup() {
|
||||
if(!Context::get('cart')) return new Object();
|
||||
$args->site_srl = $this->site_srl;
|
||||
$args->member_srl = explode('|@|',Context::get('cart'));
|
||||
$args->group_srl = Context::get('group_srl');
|
||||
$oMemberController = &getController('member');
|
||||
return $oMemberController->replaceMemberGroup($args);
|
||||
}
|
||||
|
||||
function procHomepageUpdateBoardSkin() {
|
||||
$oBoardAdminController = &getAdminController('board');
|
||||
$oBoardAdminController->procBoardAdminUpdateSkinInfo();
|
||||
|
||||
$this->setLayoutPath($oBoardAdminController->getLayoutPath());
|
||||
$this->setLayoutFile($oBoardAdminController->getLayoutFile());
|
||||
$this->setTemplatePath($oBoardAdminController->getTemplatePath());
|
||||
$this->setTemplateFile($oBoardAdminController->getTemplateFile());
|
||||
}
|
||||
|
||||
function procHomepageInsertBoardGrant() {
|
||||
$module_srl = Context::get('module_srl');
|
||||
|
||||
// 현 모듈의 권한 목록을 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$xml_info = $oModuleModel->getModuleActionXml('board');
|
||||
$grant_list = $xml_info->grant;
|
||||
|
||||
if(count($grant_list)) {
|
||||
foreach($grant_list as $key => $val) {
|
||||
$group_srls = Context::get($key);
|
||||
if($group_srls) $arr_grant[$key] = explode('|@|',$group_srls);
|
||||
}
|
||||
$grants = serialize($arr_grant);
|
||||
}
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->updateModuleGrant($module_srl, $grants);
|
||||
|
||||
$this->add('module_srl',Context::get('module_srl'));
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
function procHomepageInsertPage() {
|
||||
$module_srl = Context::get('module_srl');
|
||||
|
||||
// 현 모듈의 권한 목록을 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$xml_info = $oModuleModel->getModuleActionXml('page');
|
||||
$grant_list = $xml_info->grant;
|
||||
|
||||
if(count($grant_list)) {
|
||||
foreach($grant_list as $key => $val) {
|
||||
$group_srls = Context::get($key);
|
||||
if($group_srls) $arr_grant[$key] = explode('|@|',$group_srls);
|
||||
}
|
||||
$grants = serialize($arr_grant);
|
||||
}
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->updateModuleGrant($module_srl, $grants);
|
||||
|
||||
$this->add("module_srl", $args->module_srl);
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
function procHomepageChangeIndex() {
|
||||
$index_mid = Context::get('index_mid');
|
||||
if(!$index_mid) return new Object(-1,'msg_invalid_request');
|
||||
$args->index_module_srl = $index_mid;
|
||||
$args->domain = $this->homepage_info->domain;
|
||||
$args->site_srl= $this->site_srl;
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
$output = $oModuleController->updateSite($args);
|
||||
debugPrint($output);
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
?>
|
||||
50
modules/homepage/homepage.model.php
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
/**
|
||||
* @class homepageModel
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief homepage 모듈의 model class
|
||||
**/
|
||||
|
||||
class homepageModel extends homepage {
|
||||
|
||||
var $site_module_info = null;
|
||||
var $site_srl = 0;
|
||||
|
||||
function init() {
|
||||
// site_module_info값으로 홈페이지의 정보를 구함
|
||||
$this->site_module_info = Context::get('site_module_info');
|
||||
$this->site_srl = $this->site_module_info->site_srl;
|
||||
}
|
||||
|
||||
function getHomepageInfo($site_srl) {
|
||||
$args->site_srl = $site_srl;
|
||||
$output = executeQuery('homepage.getHomepageInfo', $args);
|
||||
if(!$output->toBool() || !$output->data) return;
|
||||
return $output->data;
|
||||
}
|
||||
|
||||
function getHomepageMenuItem() {
|
||||
$node_srl = Context::get('node_srl');
|
||||
if(!$node_srl) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
$oMenuAdminModel = &getAdminModel('menu');
|
||||
$menu_info = $oMenuAdminModel->getMenuItemInfo($node_srl);
|
||||
|
||||
if(!preg_match('/^http/i',$menu_info->url)) {
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByMid($menu_info->url, $this->site_srl);
|
||||
if($module_info->mid == $menu_info->url) {
|
||||
$menu_info->module_type = $module_info->module;
|
||||
$menu_info->module_id = $module_info->mid;
|
||||
$menu_info->browser_title = $module_info->browser_title;
|
||||
unset($menu_info->url);
|
||||
}
|
||||
} else {
|
||||
$menu_info->module_type = 'url';
|
||||
$menu_info->url = preg_replace('/^(http|https):\/\//i','',$menu_info->url);
|
||||
}
|
||||
$this->add('menu_info', $menu_info);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
247
modules/homepage/homepage.view.php
Normal file
|
|
@ -0,0 +1,247 @@
|
|||
<?php
|
||||
/**
|
||||
* @class homepageView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief homepage 모듈의 view class
|
||||
**/
|
||||
|
||||
class homepageView extends homepage {
|
||||
|
||||
var $site_module_info = null;
|
||||
var $site_srl = 0;
|
||||
var $homepage_info = null;
|
||||
|
||||
function init() {
|
||||
$oModuleModel = &getModel('module');
|
||||
if(!$oModuleModel->isSiteAdmin()) return $this->stop('msg_not_permitted');
|
||||
|
||||
// site_module_info값으로 홈페이지의 정보를 구함
|
||||
$this->site_module_info = Context::get('site_module_info');
|
||||
$this->site_srl = $this->site_module_info->site_srl;
|
||||
if(!$this->site_srl) exit();
|
||||
|
||||
// 홈페이지 정보를 추출하여 세팅
|
||||
$oHomepageModel = &getModel('homepage');
|
||||
$this->homepage_info = $oHomepageModel->getHomepageInfo($this->site_srl);
|
||||
Context::set('homepage_info', $this->homepage_info);
|
||||
|
||||
// 기본 스킨 디렉토리를 구함
|
||||
$template_path = sprintf("%sskins/xe_official",$this->module_path);
|
||||
$this->setTemplatePath($template_path);
|
||||
|
||||
// 홈페이지 관리 화면은 별도의 레이아웃으로 설정하여 운영
|
||||
$this->setLayoutPath($template_path);
|
||||
$this->setLayoutFile('layout');
|
||||
|
||||
// 레이아웃 정보 가져옴
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$this->selected_layout = $oLayoutModel->getLayout($this->homepage_info->layout_srl);
|
||||
Context::set('selected_layout', $this->selected_layout);
|
||||
}
|
||||
|
||||
function dispHomepageManage() {
|
||||
// 다운로드 되어 있는 레이아웃 목록을 구함
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$layout_list = $oLayoutModel->getDownloadedLayoutList();
|
||||
Context::set('layout_list', $layout_list);
|
||||
|
||||
// 메뉴 목록을 가져옴
|
||||
$oMenuAdminModel = &getAdminModel('menu');
|
||||
$menu_list = $oMenuAdminModel->getMenus();
|
||||
Context::set('menu_list', $menu_list);
|
||||
|
||||
$this->setTemplateFile('index');
|
||||
}
|
||||
|
||||
function dispHomepageMemberGroupManage() {
|
||||
// 멤버모델 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// group_srl이 있으면 미리 체크하여 selected_group 세팅
|
||||
$group_srl = Context::get('group_srl');
|
||||
if($group_srl) {
|
||||
$selected_group = $oMemberModel->getGroup($group_srl);
|
||||
Context::set('selected_group',$selected_group);
|
||||
}
|
||||
|
||||
// group 목록 가져오기
|
||||
$this->group_list = $oMemberModel->getGroups($this->site_srl);
|
||||
Context::set('group_list', $this->group_list);
|
||||
|
||||
$this->setTemplateFile('group_list');
|
||||
}
|
||||
|
||||
function dispHomepageTopMenu() {
|
||||
// 메뉴 정보 가져오기
|
||||
$menu_srl = $this->homepage_info->first_menu_srl;
|
||||
$oMenuModel = &getAdminModel('menu');
|
||||
$menu_info = $oMenuModel->getMenu($menu_srl);
|
||||
Context::set('menu_info', $menu_info);
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
$group_list = $oMemberModel->getGroups();
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
$_menu_info = get_object_vars($this->selected_layout->menu);
|
||||
$menu = array_shift($_menu_info);
|
||||
Context::set('menu_max_depth', $menu->maxdepth);
|
||||
|
||||
$this->setTemplateFile('menu_manage');
|
||||
}
|
||||
|
||||
function dispHomepageBottomMenu() {
|
||||
// 메뉴 정보 가져오기
|
||||
$menu_srl = $this->homepage_info->second_menu_srl;
|
||||
$oMenuModel = &getAdminModel('menu');
|
||||
$menu_info = $oMenuModel->getMenu($menu_srl);
|
||||
Context::set('menu_info', $menu_info);
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
$group_list = $oMemberModel->getGroups();
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
$_menu_info = get_object_vars($this->selected_layout->menu);
|
||||
$menu = array_pop($_menu_info);
|
||||
Context::set('menu_max_depth', $menu->maxdepth);
|
||||
|
||||
$this->setTemplateFile('menu_manage');
|
||||
}
|
||||
|
||||
function dispHomepageMidSetup() {
|
||||
// 현재 site_srl 에 등록된 것들을 가져오기
|
||||
$args->site_srl = $this->site_srl;
|
||||
$oModuleModel = &getModel('module');
|
||||
$mid_list = $oModuleModel->getMidList($args);
|
||||
Context::set('mid_list', $mid_list);
|
||||
|
||||
$this->setTemplateFile('mid_list');
|
||||
}
|
||||
|
||||
function dispHomepageBoardInfo() {
|
||||
$module_srl = Context::get('module_srl');
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
if(!$module_info || $module_info->site_srl != $this->site_srl) return new Object(-1,'msg_invalid_request');
|
||||
Context::set('module_info', $module_info);
|
||||
|
||||
// 스킨 목록을 구해옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_list = $oModuleModel->getSkins($this->module_path);
|
||||
Context::set('skin_list',$skin_list);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
if($module_info->module == 'board') {
|
||||
$oBoardAdminView = &getAdminView('board');
|
||||
$oBoardAdminView->init();
|
||||
$this->setTemplateFile('board_insert');
|
||||
} else {
|
||||
$oMemberModel = &getModel('member');
|
||||
$group_list = $oMemberModel->getGroups($this->site_srl);
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
$xml_info = $oModuleModel->getModuleActionXml('page');
|
||||
$grant_list = $xml_info->grant;
|
||||
Context::set('grant_list', $grant_list);
|
||||
|
||||
$oPage = &getClass('page');
|
||||
$this->setTemplateFile('page_insert');
|
||||
}
|
||||
}
|
||||
|
||||
function dispHomepageBoardAddition() {
|
||||
$module_srl = Context::get('module_srl');
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
if(!$module_info || $module_info->site_srl != $this->site_srl) return new Object(-1,'msg_invalid_request');
|
||||
Context::set('module_info', $module_info);
|
||||
// content는 다른 모듈에서 call by reference로 받아오기에 미리 변수 선언만 해 놓음
|
||||
$content = '';
|
||||
|
||||
// 추가 설정을 위한 트리거 호출
|
||||
// 게시판 모듈이지만 차후 다른 모듈에서의 사용도 고려하여 trigger 이름을 공용으로 사용할 수 있도록 하였음
|
||||
$output = ModuleHandler::triggerCall('module.dispAdditionSetup', 'before', $content);
|
||||
$output = ModuleHandler::triggerCall('module.dispAdditionSetup', 'after', $content);
|
||||
Context::set('setup_content', $content);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('board_addition_setup');
|
||||
}
|
||||
|
||||
function dispHomepageBoardGrant() {
|
||||
$module_srl = Context::get('module_srl');
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
if(!$module_info || $module_info->site_srl != $this->site_srl) return new Object(-1,'msg_invalid_request');
|
||||
Context::set('module_info', $module_info);
|
||||
|
||||
$xml_info = $oModuleModel->getModuleActionXml('board');
|
||||
$grant_list = $xml_info->grant;
|
||||
Context::set('grant_list', $grant_list);
|
||||
|
||||
// 권한 그룹의 목록을 가져온다
|
||||
$oMemberModel = &getModel('member');
|
||||
$group_list = $oMemberModel->getGroups($this->site_srl);
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
$this->setTemplateFile('board_grant_list');
|
||||
}
|
||||
|
||||
function dispHomepageBoardSkin() {
|
||||
$module_srl = Context::get('module_srl');
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
if(!$module_info || $module_info->site_srl != $this->site_srl) return new Object(-1,'msg_invalid_request');
|
||||
Context::set('module_info', $module_info);
|
||||
$skin = $module_info->skin;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo('./modules/board/', $skin);
|
||||
if(!$skin_info) {
|
||||
$skin = 'xe_board';
|
||||
$skin_info = $oModuleModel->loadSkinInfo('./modules/board/', $skin);
|
||||
}
|
||||
|
||||
// skin_info에 extra_vars 값을 지정
|
||||
if(count($skin_info->extra_vars)) {
|
||||
foreach($skin_info->extra_vars as $key => $val) {
|
||||
$group = $val->group;
|
||||
$name = $val->name;
|
||||
$type = $val->type;
|
||||
$value = $module_info->{$name};
|
||||
if($type=="checkbox"&&!$value) $value = array();
|
||||
$skin_info->extra_vars[$key]->value= $value;
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('skin_info', $skin_info);
|
||||
$this->setTemplateFile('board_skin_info');
|
||||
}
|
||||
|
||||
function dispHomepageMemberManage() {
|
||||
// member model 객체 생성후 목록을 구해옴
|
||||
$oMemberAdminModel = &getAdminModel('member');
|
||||
$oMemberModel = &getModel('member');
|
||||
$output = $oMemberAdminModel->getSiteMemberList($this->site_srl);
|
||||
|
||||
$members = array();
|
||||
foreach($output->data as $key=>$val) {
|
||||
$members[] = $val->member_srl;
|
||||
}
|
||||
$members_groups = $oMemberModel->getMembersGroups($members, $this->site_srl);
|
||||
Context::set('members_groups',$members_groups);
|
||||
|
||||
$group_list = $oMemberModel->getGroups($this->site_srl);
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
// 템플릿에 쓰기 위해서 context::set
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('member_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('member_list');
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
87
modules/homepage/lang/ko.lang.php
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
<?php
|
||||
/**
|
||||
* @file ko.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 홈페이지(homepage) 모듈의 기본 언어팩
|
||||
**/
|
||||
|
||||
$lang->homepage = "홈페이지";
|
||||
$lang->homepage_title = "홈페이지 이름";
|
||||
$lang->domain = "도메인";
|
||||
$lang->module_type = "대상";
|
||||
$lang->board = "게시판";
|
||||
$lang->page = "페이지";
|
||||
$lang->url = "URL";
|
||||
$lang->module_id = "모듈 ID";
|
||||
$lang->item_group_grant = "보여줄 그룹";
|
||||
$lang->homepage_admin = "홈페이지 관리자";
|
||||
$lang->do_selected_member = "선택된 회원을 : ";
|
||||
|
||||
$lang->homepage_default_menus = array(
|
||||
'first' => array(
|
||||
'home' => '홈',
|
||||
'notice' => '공지사항',
|
||||
'download' => '자료실',
|
||||
'gallery' => '갤러리',
|
||||
'community' => '커뮤니티',
|
||||
'freeboard' => '자유게시판',
|
||||
'humor' => '재밌는 이야기',
|
||||
'qa' => '질문&답변',
|
||||
),
|
||||
'second' => array(
|
||||
'profile' => '홈페이지 소개',
|
||||
'rule' => '운영원칙',
|
||||
),
|
||||
'menu' => array(
|
||||
'first' => '기본메뉴',
|
||||
'second' => '아래메뉴',
|
||||
),
|
||||
'widget' => array(
|
||||
'download_rank' => '다운로드 순위',
|
||||
),
|
||||
);
|
||||
|
||||
$lang->cmd_homepage_menus = array(
|
||||
"dispHomepageManage" => "홈페이지 설정",
|
||||
"dispHomepageMemberGroupManage" => "회원그룹관리",
|
||||
"dispHomepageMemberManage" => "회원 목록",
|
||||
"dispHomepageTopMenu" => "기본 메뉴 관리",
|
||||
"dispHomepageBottomMenu" => "하부 메뉴 관리",
|
||||
"dispHomepageMidSetup" => "모듈 세부 설정",
|
||||
);
|
||||
$lang->cmd_homepage_registration = "홈페이지 생성";
|
||||
$lang->cmd_homepage_setup = "홈페이지 설정";
|
||||
$lang->cmd_homepage_delete = "홈페이지 삭제";
|
||||
$lang->cmd_go_home = "홈으로 이동";
|
||||
$lang->cmd_go_homepage_admin = '홈페이지 전체 관리';
|
||||
$lang->cmd_change_layout = "변경";
|
||||
$lang->cmd_change_layout = "변경";
|
||||
$lang->cmd_select_index = "초기화면 선택";
|
||||
$lang->cmd_add_new_menu = "새로운 메뉴 추가";
|
||||
|
||||
$lang->about_homepage_act = array(
|
||||
"dispHomepageManage" => "홈페이지의 모양을 꾸밀 수 있습니다",
|
||||
"dispHomepageMemberGroupManage" => "홈페이지 내에서 사용되는 그룹 관리를 할 수 있습니다",
|
||||
"dispHomepageMemberManage" => "홈페이지에 등록된 회원들을 보거나 관리할 수 있습니다",
|
||||
"dispHomepageTopMenu" => "홈페이지의 상단이나 좌측등에 나타나는 일반적인 메뉴를 수정하거나 추가할 수 있습니다",
|
||||
"dispHomepageBottomMenu" => "홈페이지의 하단에 나타나는 작은 메뉴들을 수정하거나 추가할 수 있습니다",
|
||||
"dispHomepageMidSetup" => "홈페이지에서 사용하는 게시판, 페이지등의 모듈 세부 설정을 할 수 있습니다",
|
||||
);
|
||||
$lang->about_homepage = "홈페이지 서비스 관리자는 다수의 홈페이지를 만들 수 있고 또 각 홈페이지를 편하게 설정할 수 있도록 합니다.";
|
||||
$lang->about_homepage_title = "홈페이지 이름은 관리를 위해서만 사용될 뿐 서비스에는 나타나지 않습니다";
|
||||
$lang->about_domain = "1개 이상의 홈페이지를 만들기 위해서는 전용 도메인이 있어야 합니다.<br/>독립 도메인이나 서브 도메인이 있으면 되고 XE가 설치된 경로까지 같이 넣어주세요.<br />ex) www.zeroboard.com/zbxe";
|
||||
$lang->about_menu_names = "홈페이지에 나타날 메뉴 이름을 언어에 따라서 지정할 수 있습니다.<br/>하나만 입력하셔도 모두 같이 적용됩니다";
|
||||
$lang->about_menu_option = "메뉴를 선택시 새창으로 열지를 선택할 수 있습니다.<br />펼침 메뉴는 레이아웃에 따라 동작합니다";
|
||||
$lang->about_group_grant = "그룹을 선택하면 선택된 그룹만 메뉴가 보입니다.<br/>모두 해제하면 비회원도 볼 수 있습니다";
|
||||
$lang->about_module_type = "게시판,페이지는 모듈을 생성하고 URL은 링크만 합니다.<br/>생성후 수정할 수 없습니다";
|
||||
$lang->about_browser_title = "메뉴에 접속시 브라우저의 제목으로 나타날 내용입니다";
|
||||
$lang->about_module_id = "게시판,페이지등 접속할때 사용될 주소입니다.<br/>예) http://도메인/[모듈ID], http://도메인/?mid=[모듈ID]";
|
||||
$lang->about_menu_item_url = "대상을 URL로 할때 연결할 링크주소입니다.<br/>http://는 빼고 입력해주세요";
|
||||
$lang->about_menu_image_button = "메뉴명 대신 이미지로 메뉴를 사용할 수 있습니다.";
|
||||
$lang->about_homepage_delete = "홈페이지를 삭제하게 되면 연결되어 있는 모든 모듈(게시판,페이지등)과 그에 따른 글들이 삭제됩니다.<br />주의가 필요합니다";
|
||||
$lang->about_homepage_admin = "홈페이지 관리자를 설정할 수 있습니다.<br/>홈페이지 관리자는 http://주소/?module=homepage 로 관리자 페이지로 접속할 수 있으며 존재하지 않는 사용자는 관리자로 등록되지 않습니다";
|
||||
|
||||
$lang->confirm_change_layout = "레이아웃을 변경할 경우 레이아웃 정보들 중 일부가 사라질 수가 있습니다. 변경하시겠습니까?";
|
||||
$lang->confirm_delete_menu_item = "메뉴 항목 삭제시 연결되어 있는 게시판이나 페이지 모듈도 같이 삭제가 됩니다. 그래도 삭제하시겠습니까?";
|
||||
$lang->msg_already_registed_domain = "이미 등록된 도메인입니다. 다른 도메인을 사용해주세요";
|
||||
?>
|
||||
8
modules/homepage/queries/deleteHomepage.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="deleteHomepage" action="delete">
|
||||
<tables>
|
||||
<table name="homepages" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="site_srl" var="site_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
17
modules/homepage/queries/getHomepageInfo.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<query id="getHomepageInfo" action="select">
|
||||
<tables>
|
||||
<table name="homepages" />
|
||||
<table name="sites" />
|
||||
<table name="modules" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="homepages.*" />
|
||||
<column name="sites.domain" alias="domain" />
|
||||
<column name="modules.*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="homepages.site_srl" var="site_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="equal" column="sites.site_srl" default="homepages.site_srl" filter="number" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="modules.module_srl" default="sites.index_module_srl" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
23
modules/homepage/queries/getHomepageList.xml
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<query id="getHomepageList" action="select">
|
||||
<tables>
|
||||
<table name="homepages" />
|
||||
<table name="sites" />
|
||||
<table name="modules" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="homepages.site_srl" alias="site_srl" />
|
||||
<column name="homepages.title" alias="homepage_title" />
|
||||
<column name="sites.domain" alias="domain" />
|
||||
<column name="modules.*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="sites.site_srl" default="homepages.site_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="equal" column="modules.module_srl" default="sites.index_module_srl" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="homepages.list_order" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
14
modules/homepage/queries/insertHomepage.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<query id="insertHomepage" action="insert">
|
||||
<tables>
|
||||
<table name="homepages" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="site_srl" var="site_srl" notnull="notnull" />
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
<column name="layout_srl" var="layout_srl" notnull="notnull" />
|
||||
<column name="first_menu_srl" var="first_menu_srl" notnull="notnull" />
|
||||
<column name="second_menu_srl" var="second_menu_srl" notnull="notnull" />
|
||||
<column name="list_order" var="list_order" notnull="notnull" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
12
modules/homepage/queries/updateHomepage.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="updateHomepage" action="update">
|
||||
<tables>
|
||||
<table name="homepages" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
<column name="domain" var="layout_srl" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="site_srl" var="site_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/homepage/queries/updateHomepageTitle.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="updateHomepageTitle" action="update">
|
||||
<tables>
|
||||
<table name="homepages" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="site_srl" var="site_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
9
modules/homepage/schemas/homepages.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<table name="homepages">
|
||||
<column name="site_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="title" type="varchar" size="255" notnull="notnull" />
|
||||
<column name="layout_srl" type="number" size="11" default="0" />
|
||||
<column name="first_menu_srl" type="number" size="11" notnull="notnull" />
|
||||
<column name="second_menu_srl" type="number" size="11" notnull="notnull" />
|
||||
<column name="list_order" type="number" size="11" notnull="notnull" index="idx_list_order" />
|
||||
<column name="regdate" type="date" />
|
||||
</table>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<!--#include("board_header.html")-->
|
||||
|
||||
{$setup_content}
|
||||
38
modules/homepage/skins/xe_official/board_grant_list.html
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<!--#include("./board_header.html")-->
|
||||
<!--%import("filter/insert_grant.xml")-->
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_grant)">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl?$module_srl:$module_srls}" />
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{$lang->about_grant}</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col"><div>{$lang->grant}</div></th>
|
||||
<th scope="col" colspan="3"><div>{$lang->target}</div></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<!--@foreach($grant_list as $key => $val)-->
|
||||
<tr class="row{$cycle_idx}">
|
||||
<th scope="row"><div>{$val->title}</div></th>
|
||||
<td class="wide">
|
||||
<!--@foreach($group_list as $k => $v)-->
|
||||
<input type="checkbox" class="checkbox" name="{$key}" value="{$v->group_srl}" id="grant_{$key}_{$v->group_srl}" <!--@if(is_array($module_info->grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"<!--@end-->/>
|
||||
<label for="grant_{$key}_{$v->group_srl}">{$v->title}</label>
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td class="selectAll center"><a href="#" onclick="doSelectAll(this, '{$key}');return false;">{$lang->cmd_select_all}</a></td>
|
||||
<td class="deSelectAll center"><a href="#" onclick="doUnSelectAll(this, '{$key}');return false;">{$lang->cmd_unselect_all}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<td colspan="4" class="right">
|
||||
<span class="button blue"><input type="submit" value="{$lang->cmd_save}" accesskey="s" /></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
9
modules/homepage/skins/xe_official/board_header.html
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<h3 class="title">{$lang->board} > {$module_info->browser_title} <span class="gray">{$lang->cmd_setup}</span></h3>
|
||||
|
||||
<ul class="localNavigation">
|
||||
<li><a href="{getUrl('act','dispHomepageBoardInfo','module_srl',$module_srl)}">{$lang->cmd_setup}</a></li>
|
||||
<li><a href="{getUrl('act','dispHomepageBoardAddition','module_srl',$module_srl)}">{$lang->cmd_addition_setup}</a></li>
|
||||
<li><a href="{getUrl('act','dispHomepageBoardGrant','module_srl',$module_srl)}">{$lang->grant}</a></li>
|
||||
<li><a href="{getUrl('act','dispHomepageBoardSkin','module_srl',$module_srl)}">{$lang->skin}</a></li>
|
||||
<li><a href="{getUrl('','mid',$module_info->mid)}" onclick="window.open(this.href); return false;">{$lang->cmd_view}</a></li>
|
||||
</ul>
|
||||
171
modules/homepage/skins/xe_official/board_insert.html
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
<!--%import("./filter/insert_board.xml")-->
|
||||
<!--#include("board_header.html")-->
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_board)" enctype="multipart/form-data">
|
||||
<input type="hidden" name="module_srl" value="{$module_info->module_srl}" />
|
||||
<input type="hidden" name="is_default" value="N" />
|
||||
<input type="hidden" name="mid" value="{$module_info->mid}" />
|
||||
<input type="hidden" name="layout_srl" value="{$module_info->layout_srl}" />
|
||||
<input type="hidden" name="browser_title" value="{htmlspecialchars($module_info->browser_title)}" />
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->skin}</div></th>
|
||||
<td>
|
||||
<select name="skin">
|
||||
<!--@foreach($skin_list as $key=>$val)-->
|
||||
<option value="{$key}" <!--@if($module_info->skin==$key ||(!$module_info->skin && $key=='xe_board'))-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<p>{$lang->about_skin}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->use_category}</div></th>
|
||||
<td>
|
||||
<input type="checkbox" name="use_category" value="Y" <!--@if($module_info->use_category=='Y')-->checked="checked"<!--@end--> class="checkbox" id="fld_for_category" />
|
||||
<a href="{getUrl('','act','dispBoardAdminCategoryInfo','module_srl',$module_info->module_srl)}" onclick="winopen(this.href,'BoardMenu','width=850,height=800,resizable=yes,scrollbars=yes,toolbars=no');return false;">{$lang->cmd_manage_category}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->order_target}</div></th>
|
||||
<td>
|
||||
<select name="order_target">
|
||||
<!--@foreach($order_target as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($module_info->order_target == $key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->order_type}</div></th>
|
||||
<td>
|
||||
<select name="order_type">
|
||||
<option value="asc" <!--@if($module_info->order_type != 'desc')-->selected="selected"<!--@end-->>{$lang->order_asc}</option>
|
||||
<option value="desc" <!--@if($module_info->order_type == 'desc')-->selected="selected"<!--@end-->>{$lang->order_desc}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->list_count}</div></th>
|
||||
<td>
|
||||
<input type="text" name="list_count" value="{$module_info->list_count?$module_info->list_count:20}" class="inputTypeText" />
|
||||
<p>{$lang->about_list_count}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->search_list_count}</div></th>
|
||||
<td>
|
||||
<input type="text" name="search_list_count" value="{$module_info->search_list_count?$module_info->search_list_count:20}" class="inputTypeText" />
|
||||
<p>{$lang->about_search_list_count}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->page_count}</div></th>
|
||||
<td>
|
||||
<input type="text" name="page_count" value="{$module_info->page_count?$module_info->page_count:10}" class="inputTypeText" />
|
||||
<p>{$lang->about_page_count}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->except_notice}</div></th>
|
||||
<td>
|
||||
<input type="checkbox" name="except_notice" value="Y" <!--@if($module_info->except_notice!='N')-->checked="checked"<!--@end--> />
|
||||
<p>{$lang->about_except_notice}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->consultation}</div></th>
|
||||
<td>
|
||||
<input type="checkbox" name="consultation" value="Y" <!--@if($module_info->consultation=='Y')-->checked="checked"<!--@end--> />
|
||||
<p>{nl2br($lang->about_consultation)}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->admin_mail}</div></th>
|
||||
<td>
|
||||
<input type="text" name="admin_mail" value="{$module_info->admin_mail}" class="inputTypeText w400" />
|
||||
<p>{$lang->about_admin_mail}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->header_text}</div></th>
|
||||
<td>
|
||||
<textarea name="header_text" class="inputTypeTextArea fixWidth">{htmlspecialchars($module_info->header_text)}</textarea>
|
||||
<p>{$lang->about_header_text}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->footer_text}</div></th>
|
||||
<td>
|
||||
<textarea name="footer_text" class="inputTypeTextArea fixWidth">{htmlspecialchars($module_info->footer_text)}</textarea>
|
||||
<p>{$lang->about_footer_text}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<td colspan="2" class="right">
|
||||
<span class="button blue"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<!--@if(!$module_srls)-->
|
||||
<!--@for($i=1;$i<=20;$i++)-->
|
||||
<div class="gap1"></div>
|
||||
{@ $extra_vars_name = ''}
|
||||
{@ $extra_vars_type = ''}
|
||||
{@ $extra_vars_is_required = ''}
|
||||
{@ $extra_vars_default_value = ''}
|
||||
{@ $extra_vars_desc = ''}
|
||||
{@ $extra_vars_search = ''}
|
||||
<!--@if($module_info->extra_vars[$i])-->
|
||||
{@ $extra_vars_name = $module_info->extra_vars[$i]->name}
|
||||
{@ $extra_vars_type = $module_info->extra_vars[$i]->type}
|
||||
{@ $extra_vars_is_required = $module_info->extra_vars[$i]->is_required}
|
||||
{@ $extra_vars_default_value = $module_info->extra_vars[$i]->default}
|
||||
{@ $extra_vars_desc = $module_info->extra_vars[$i]->desc}
|
||||
{@ $extra_vars_search = $module_info->extra_vars[$i]->search}
|
||||
<!--@end-->
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{$lang->extra_vars} {$i}</caption>
|
||||
<tr class="row2">
|
||||
<th><div>{$lang->column_name}</div></th>
|
||||
<td class="wide"><input type="text" name="extra_vars_{$i}_name" value="{$extra_vars_name}" class="inputTypeText w200" /> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><div>{$lang->column_type}</div></th>
|
||||
<td>
|
||||
<select name="extra_vars_{$i}_type">
|
||||
<!--@foreach($lang->column_type_list as $key => $val)-->
|
||||
<!--@if($key != 'kr_zip')-->
|
||||
<option value="{$key}" <!--@if($extra_vars_type==$key)-->selected="selected"<!--@end-->>{$lang->column_type_list[$key]}</option>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th><div>{$lang->is_required}</div></th>
|
||||
<td><input type="checkbox" name="extra_vars_{$i}_is_required" value="Y" <!--@if($extra_vars_is_required=='Y')-->checked="checked"<!--@end--> /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><div>{$lang->default_value}</div></th>
|
||||
<td><input type="text" name="extra_vars_{$i}_default" value="{$extra_vars_default_value}" class="inputTypeText w400" /><p>{$lang->about_extra_vars_default_value}</p></td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th><div>{$lang->description}</div></th>
|
||||
<td><input type="text" name="extra_vars_{$i}_desc" value="{$extra_vars_desc}" class="inputTypeText w400" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><div>{$lang->cmd_search}</div></th>
|
||||
<td><input type="checkbox" name="extra_vars_{$i}_search" value="Y" <!--@if($extra_vars_search=='Y')-->checked="checked"<!--@end--> /></td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<td colspan="2" class="right"><span class="button blue"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span></div></th>
|
||||
</tr>
|
||||
</table>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
|
||||
|
||||
</form>
|
||||
146
modules/homepage/skins/xe_official/board_skin_info.html
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
<!--#include("./board_header.html")-->
|
||||
|
||||
<form action="{Context::getRequestUri()}" method="post" enctype="multipart/form-data" target="hidden_iframe">
|
||||
<input type="hidden" name="module" value="homepage" />
|
||||
<input type="hidden" name="act" value="procHomepageUpdateBoardSkin" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{$lang->skin_default_info}</caption>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->skin}</div></th>
|
||||
<td class="wide" >{$skin_info->title}</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->skin_author}</div></th>
|
||||
<td>
|
||||
<!--@foreach($skin_info->author as $author)-->
|
||||
{$author->name} (<a href="{$author->homepage}" onclick="window.open(this.href);return false;">{$author->homepage}</a>, <a href="mailto:{$author->email_address}">{$author->email_address}</a>)<br />
|
||||
<!--@endforeach-->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->homepage}</div></th>
|
||||
<td><a href="{$skin_info->homepage}" onclick="window.open(this.href);return false;">{$skin_info->homepage}</a></td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->date}</div></th>
|
||||
<td>{zdate($skin_info->date, 'Y-m-d')} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->skin_license}</div></th>
|
||||
<td>
|
||||
{nl2br(trim($skin_info->license))}
|
||||
<!--@if($skin_info->license_link)-->
|
||||
<p><a href="{$skin_info->license_link}" onclick="window.close(); return false;">{$skin_info->license_link}</a></p>
|
||||
<!--@end-->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->description}</div></th>
|
||||
<td>{nl2br(trim($skin_info->description))}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{$lang->extra_vars}</caption>
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row"><div>{$lang->colorset}</div></th>
|
||||
<td class="wide">
|
||||
<!--@foreach($skin_info->colorset as $key => $val)-->
|
||||
<!--@if($val->screenshot)-->
|
||||
{@ $_img_info = getImageSize($val->screenshot); $_height = $_img_info[1]+40; $_width = $_img_info[0]+20; $_talign = "center"; }
|
||||
<!--@else-->
|
||||
{@ $_width = 200; $_height = 20; $_talign = "left"; }
|
||||
<!--@end-->
|
||||
<div style="float:left;text-align:{$_talign};margin-bottom:1em;width:{$_width}px;height:{$_height}px;margin-right:10px;">
|
||||
<input type="radio" name="colorset" value="{$val->name}" id="colorset_{$key}" <!--@if($module_info->colorset==$val->name)-->checked="checked"<!--@end-->/>
|
||||
<label for="colorset_{$key}">{$val->title}</label>
|
||||
<!--@if($val->screenshot)-->
|
||||
<br />
|
||||
<img src="{$val->screenshot}" alt="{$val->title}" style="border:1px solid #888888;padding:2px;margin:2px;"/>
|
||||
<!--@end-->
|
||||
</div>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<!--@foreach($skin_info->extra_vars as $key => $val)-->
|
||||
|
||||
<!--@if($val->group && ((!$group) || $group != $val->group))-->
|
||||
{@$group = $val->group}
|
||||
</table>
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{$group}</caption>
|
||||
<!--@end-->
|
||||
|
||||
<tr class="row{$cycle_idx}">
|
||||
<th scope="row"><div>{$val->title}</div></th>
|
||||
<td class="wide">
|
||||
<!--@if($val->type=="text")-->
|
||||
<input type="text" name="{$val->name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
|
||||
|
||||
<!--@elseif($val->type=="textarea")-->
|
||||
<textarea name="{$val->name}" class="inputTypeTextArea w400">{htmlspecialchars($val->value)}</textarea>
|
||||
|
||||
<!--@elseif($val->type=="select")-->
|
||||
<select name="{$val->name}">
|
||||
<!--@foreach($val->options as $k=>$v)-->
|
||||
<option value="{$v->value}" <!--@if($v->value == $val->value)-->selected="selected"<!--@end-->>{$v->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
|
||||
<!--@elseif($val->type=="checkbox")-->
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<span>
|
||||
<input type="checkbox" name="{$val->name}[]" value="{$v}" id="ch_{$key}_{$k}" <!--@if(in_array($v, $val->value))-->checked="checked"<!--@end--> class="checkbox" />
|
||||
<label for="ch_{$key}_{$k}">{$v}</label>
|
||||
</span>
|
||||
<!--@end-->
|
||||
|
||||
<!--@elseif($val->type=="radio")-->
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<span>
|
||||
<input type="radio" name="{$val->name}" value="{$v}" id="ch_{$key}_{$k}" <!--@if($v==$val->value)-->checked="checked"<!--@end-->/>
|
||||
<label for="ch_{$key}_{$k}">{$v}</label>
|
||||
</span>
|
||||
<!--@end-->
|
||||
|
||||
<!--@elseif($val->type=="image")-->
|
||||
<!--@if($val->value)-->
|
||||
<div>
|
||||
<img src="{$val->value}" /><br />
|
||||
<input type="checkbox" name="del_{$val->name}" value="Y" id="del_{$val->name}" class="checkbox" />
|
||||
<label for="del_{$val->name}">{$lang->cmd_delete}</label>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<input type="file" name="{$val->name}" value="" />
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($val->description)-->
|
||||
<p>{nl2br(trim($val->description))}</p>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($group)-->
|
||||
</table>
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<!--@end-->
|
||||
|
||||
<tr class="row2">
|
||||
<td colspan="2" class="right">
|
||||
<span class="button blue"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
<iframe name="hidden_iframe" frameborder="0" style="display:none"></iframe>
|
||||
196
modules/homepage/skins/xe_official/css/default.css
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
@charset "utf-8";
|
||||
|
||||
#menu ul { margin-top:10px; }
|
||||
#menu li { padding-bottom:10px; }
|
||||
|
||||
#menuItem { visibility:hidden; position:absolute; left:0; top:0; background-color:#FFFFFF; z-index:1000; border:2px solid #DDDDDD; padding:10px;}
|
||||
#menu_normal_btn_zone { display:none; }
|
||||
#menu_hover_btn_zone { display:none; }
|
||||
#menu_active_btn_zone { display:none; }
|
||||
|
||||
.topGap { margin-top:10px; }
|
||||
.rightGap { margin-right:10px; }
|
||||
.bottomGap { margin-bottom:15px; }
|
||||
.leftGap { margin-left:10px; }
|
||||
textarea { padding:.3em 0 0 .3em;}
|
||||
|
||||
h3.title { margin:0; padding:8px 0 0 10px; border:1px solid #5E95BC; border-left:1px solid #8EB9D8; border-top:1px solid #8EB9D8; background:url("../images/n_title_bg.gif") repeat-x left top; font-size:1em; color:#27536C; height:22px;}
|
||||
h3.title .gray { color:#8AB2CE;}
|
||||
.infoText { background:#FFFFFF; padding:10px; color:#27536C; border-left:1px solid #8AB2CE; border-bottom:1px solid #8AB2CE; border-right:1px solid #8AB2CE; line-height:1.5; margin-bottom:10px; }
|
||||
.subInfoText { background:#FFFFFF; padding:10px; color:#27536C; border:1px solid #EEEEEE; line-height:1.5; margin-bottom:10px; }
|
||||
|
||||
h4 { text-align:right; font-size:12pt; color:#f2250d; padding-left:10px; margin:0;}
|
||||
h4 .bracket { font-weight:normal; color:#9d9d9d;}
|
||||
h4 .vr { font-weight:normal; color:#d1d1d1;}
|
||||
h4 .view { color:#158692; padding-right:.6em; font:bold 9pt Tahoma; text-decoration:none; }
|
||||
|
||||
div.summary { clear:both; font:8pt tahoma; color:#636363; margin-bottom:5px; }
|
||||
div.summary .vr { font-weight:normal; color:#d1d1d1; }
|
||||
div.summary em { color:#ff1d00; font-style:normal;}
|
||||
|
||||
.adminLeftContent { float:left; width:60%; margin-right:2%; _margin-right:1.9%;}
|
||||
.adminRightExtra { float:left; width:38%; }
|
||||
|
||||
.adminTable { width:100%; border:1px solid #9BC2DE; border-bottom:none; border-right:none; margin-bottom:15px; }
|
||||
.adminTable caption { background:url("../images/n_caption_head.gif") no-repeat left top; padding:8px 0 5px 30px; text-align:left; font-weight:bold; color:#FFFFFF; background-color:#548DB5; border-bottom:1px solid #FFFFFF; }
|
||||
|
||||
.adminTable thead tr th div { text-align:center;}
|
||||
.adminTable thead tr th { background-color:#70A2C6; color:#FFFFFF; }
|
||||
.adminTable tr th { background-color:#FFFFFF; padding:6px; font-weight:bold; text-align:left; color:#666; border-right:1px solid #9BC2DE; border-bottom:1px solid #9BC2DE; }
|
||||
.adminTable tr.row2 th { background-color:#F3F3F3; }
|
||||
.adminTable tr th { width:10px; }
|
||||
.adminTable tr th div { white-space:nowrap; margin:0 5px; }
|
||||
.adminTable tr th select { height:20px; }
|
||||
.adminTable tr th.wide { width:100%; }
|
||||
.adminTable tr th.half_wide { width:50%; }
|
||||
.adminTable tr th.quarter_wide { width:25%; }
|
||||
.adminTable tr td.wide { width:100%; }
|
||||
|
||||
.adminTable tr td { background-color:#FFFFFF;white-space:normal; font-weight:normal; text-align:left; color:#222222; border-bottom:1px solid #9BC2DE; border-right:1px solid #9BC2DE; padding:4px 6px 4px 6px;}
|
||||
.adminTable tr.row2 td { background-color:#F3F3F3; }
|
||||
.adminTable tr a { color:#222222; text-decoration:none; }
|
||||
.adminTable tr a:hover { color:#3D83B8; }
|
||||
.adminTable tr td.nowrap { white-space:nowrap !important; }
|
||||
.adminTable tr td.alert, .adminTable tr td.alert a { color:red; }
|
||||
.adminTable tr td.number { font-size:8pt; font-family:tahoma; color:#27536C; }
|
||||
.adminTable tr td.date,
|
||||
.adminTable tr td span.date { font-size:8pt; font-family:tahoma; color:#666666;}
|
||||
.adminTable tr td.center { text-align:center; }
|
||||
.adminTable tr td.right { text-align:right; }
|
||||
.adminTable tr td.paper { background:transparent url("../images/n_paper_bullet.gif") no-repeat 6px 8px; padding-left:20px; }
|
||||
.adminTable tr.row2 td.paper { background:#F3F3F3 url("../images/n_paper_bullet.gif") no-repeat 6px 8px; padding-left:20px; }
|
||||
.adminTable tr td.circle { background:#FFFFFF url("../images/n_circle_bullet.gif") no-repeat 6px 8px; padding-left:20px; }
|
||||
.adminTable tr.row2 td.circle { background:#F3F3F3 url("../images/n_circle_bullet.gif") no-repeat 6px 8px; padding-left:20px; }
|
||||
.adminTable tr td strong.alert { color:red; }
|
||||
.adminTable tr td p { padding:0; margin:5px 0 0 5px; color:#777777; }
|
||||
.adminTable tr td p a { color:#9F875F; font-weight:bold; text-decoration:underline; }
|
||||
.adminTable tr td.modify a,
|
||||
.adminTable tr td.delete a,
|
||||
.adminTable tr td.copy a,
|
||||
.adminTable tr td.setup a,
|
||||
.adminTable tr td.activated a,
|
||||
.adminTable tr td.deactivated a,
|
||||
.adminTable tr td.moveupdown a,
|
||||
.adminTable tr td.selectAll a,
|
||||
.adminTable tr td.deSelectAll a,
|
||||
.adminTable tr td.view a { margin:0 auto; }
|
||||
.adminTable tr td.modify a { width:14px; height:14px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/n_icon_modify.gif") no-repeat left top; }
|
||||
.adminTable tr td.delete a { width:14px; height:14px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/n_icon_delete.gif") no-repeat left top; }
|
||||
.adminTable tr td.copy a { width:16px; height:16px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/n_icon_copy.gif") no-repeat left top; }
|
||||
.adminTable tr td.view a { width:14px; height:14px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/n_icon_view.gif") no-repeat left top; }
|
||||
.adminTable tr td.setup a { width:16px; height:16px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/n_setup.gif") no-repeat left top; }
|
||||
.adminTable tr td.activated a { width:16px; height:16px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/n_light_on.gif") no-repeat left top; }
|
||||
.adminTable tr td.deactivated a { width:16px; height:16px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/n_light_off.gif") no-repeat left top; }
|
||||
.adminTable tr td.selectAll a { width:16px; height:16px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/n_icon_select_all.gif") no-repeat left top; }
|
||||
.adminTable tr td.deSelectAll a { width:16px; height:16px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/n_icon_remove.gif") no-repeat left top; }
|
||||
.adminTable tr td.moveupdown a.up { float:left; width:14px; height:14px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/button_up.gif") no-repeat left top; margin-right:5px; }
|
||||
.adminTable tr td.moveupdown a.down{ float:left; width:14px; height:14px; overflow:hidden; display:block; font-size:1px; line-height:100px; background:url("../images/button_down.gif") no-repeat left top; }
|
||||
.adminTable tr td.blue, .adminTable tr td.blue a { color:blue; }
|
||||
.adminTable tr td.red, .adminTable tr td.red a { color:red; }
|
||||
|
||||
ul.localNavigation { position:relative; clear:both; margin:10px 0 10px 0; padding:0 0 0 10px; height:25px; overflow:hidden; border-bottom:1px solid #86B4D2; }
|
||||
ul.localNavigation li { list-style:none; background:url("../images/n_small_tab.gif") no-repeat scroll left -26px; float:left; margin-right:10px; position:relative; text-align:center; top:4px; height:25px;}
|
||||
ul.localNavigation li a { background:url("../images/n_small_tab.gif") no-repeat scroll right -26px; color:#27536C; display:block; float:left; left:3px; padding:5px 15px 0 10px; position:relative; text-decoration:none; height:25px;}
|
||||
ul.localNavigation li a:hover { color:#000000; }
|
||||
ul.localNavigation li.on { background-position:left top; top:0; height:25px; }
|
||||
ul.localNavigation li.on a { background-position:right top; padding:8px 15px 5px 10px; height:25px; color:#222227; font-weight:bold; }
|
||||
|
||||
#popHeadder, #popHistoryHeadder { margin-bottom:10px;}
|
||||
#popHeadder h1, #popHistoryHeadder h1 { background:url("../images/top_head_title_bg.gif") repeat-x left top; font-size:1em; border:1px solid #E3E3E2; padding:9px; color:#555555; margin:0; }
|
||||
#popBody, #popHistoryBody { width:600px; padding:10px; background:#ffffff;}
|
||||
#popHistoryBody { height: 200px; overflow: auto; padding-right:0; }
|
||||
#popFooter { width:620px; background:#70A2C6; border-top:1px solid #e8e8e7; padding:.5em 0 .5em 0; overflow:hidden; }
|
||||
#popFooter .close { position:relative; left:50%; margin-left:-1em; float:left;}
|
||||
|
||||
.adminSearch { text-align:right; clear:both; width:100%; margin:0 0 10px 0;}
|
||||
.adminSearch fieldset { border:none; display:inline; overflow:visible; padding:0;}
|
||||
.adminSearch * { vertical-align:middle;}
|
||||
|
||||
.buttonTypeGo { border:none; cursor:pointer; width:24px; height:20px; position:relative; top:-1px; font:.75em Tahoma; text-align:center; background:url(../images/buttonTypeInput24.gif) no-repeat; }
|
||||
|
||||
.layout_editor { width:99%; height:500px; border:0px; font-size:1em; }
|
||||
.layout_editor_box { padding:10px; border:1px solid #DDDDDD; }
|
||||
|
||||
.fixWidth { width:90%; }
|
||||
|
||||
/* Pagination Reset */
|
||||
.pagination{ padding:15px 0; margin:0; text-align:center;}
|
||||
.pagination *{ margin:0; padding:0;}
|
||||
.pagination img{ border:0;}
|
||||
.pagination a,
|
||||
.pagination strong{ position:relative; display:inline-block; text-decoration:none; line-height:normal; color:#333; font-family:Tahoma, Sans-serif; vertical-align:middle;}
|
||||
.pagination a:hover,
|
||||
.pagination a:active,
|
||||
.pagination a:focus{ background-color:#f4f4f4 !important; }
|
||||
.pagination strong{ color:#ff6600 !important;}
|
||||
.pagination a.prev,
|
||||
.pagination a.prevEnd,
|
||||
.pagination a.next,
|
||||
.pagination a.nextEnd{ font-weight:normal !important; border:none !important; margin:0 !important; white-space:nowrap; }
|
||||
|
||||
/* Pagination A1 */
|
||||
.pagination.a1 a,
|
||||
.pagination.a1 strong{ margin:0 -4px; padding:1px 10px 1px 8px; border:none; border-left:1px solid #ccc; border-right:1px solid #ddd; font-weight:bold; font-size:12px; background:#fff;}
|
||||
.pagination.a1 a.prev{ padding-left:10px; background:#fff url(../images/arrowPrevA1.gif) no-repeat left center; }
|
||||
.pagination.a1 a.prevEnd{ padding-left:15px; background:#fff url(../images/arrowPrevEndA1.gif) no-repeat left center; }
|
||||
.pagination.a1 a.next{ padding-right:10px; background:#fff url(../images/arrowNextA1.gif) no-repeat right center; }
|
||||
.pagination.a1 a.nextEnd{ padding-right:15px; background:#fff url(../images/arrowNextEndA1.gif) no-repeat right center; }
|
||||
|
||||
/* Pagination A2 */
|
||||
.pagination.a2 a,
|
||||
.pagination.a2 strong{ margin:0 -4px; padding:0 10px 0 8px; font-weight:bold; font-size:11px; border:none; border-left:1px solid #ddd; border-right:1px solid #ccc; background:#fff; }
|
||||
.pagination.a2 a.prev{ padding-left:10px; background:#fff url(../images/arrowPrevA1.gif) no-repeat left center; }
|
||||
.pagination.a2 a.prevEnd{ padding-left:15px; background:#fff url(../images/arrowPrevEndA1.gif) no-repeat left center; }
|
||||
.pagination.a2 a.next{ padding-right:10px; background:#fff url(../images/arrowNextA1.gif) no-repeat right center; }
|
||||
.pagination.a2 a.nextEnd{ padding-right:15px; background:#fff url(../images/arrowNextEndA1.gif) no-repeat right center; }
|
||||
|
||||
/* Pagination B1 */
|
||||
.pagination.b1 a,
|
||||
.pagination.b1 strong{ margin:0 -2px; padding:2px 8px; font-weight:bold; font-size:12px;}
|
||||
.pagination.b1 a.prev{ padding-left:16px; background:url(../images/arrowPrevB1.gif) no-repeat left center; }
|
||||
.pagination.b1 a.next{ padding-right:16px; background:url(../images/arrowNextB1.gif) no-repeat right center; }
|
||||
|
||||
/* Pagination B2 */
|
||||
.pagination.b2 a,
|
||||
.pagination.b2 strong{ margin:0 -2px; padding:2px 6px; font-size:11px;}
|
||||
.pagination.b2 a.prev{ padding-left:12px; background:url(../images/arrowPrevB1.gif) no-repeat left center; }
|
||||
.pagination.b2 a.next{ padding-right:12px; background:url(../images/arrowNextB1.gif) no-repeat right center; }
|
||||
|
||||
/* Pagination C1 */
|
||||
.pagination.c1 a,
|
||||
.pagination.c1 strong{ margin:0 -2px; padding:2px 4px; font-size:12px;}
|
||||
.pagination.c1 a.prev,
|
||||
.pagination.c1 a.next{ display:inline-block; width:13px; height:14px; padding:3px 4px; margin:0;}
|
||||
.pagination.c1 a.prev{ background:url(../images/arrowPrevC1.gif) no-repeat center;}
|
||||
.pagination.c1 a.next{ background:url(../images/arrowNextC1.gif) no-repeat center;}
|
||||
.pagination.c1 a.prev span,
|
||||
.pagination.c1 a.next span{ position:absolute; width:0; height:0; overflow:hidden; visibility:hidden;}
|
||||
|
||||
/* Pagination C2 */
|
||||
.pagination.c2 a,
|
||||
.pagination.c2 strong{ margin:0 -2px; padding:2px 4px; font-size:11px;}
|
||||
.pagination.c2 a.prev,
|
||||
.pagination.c2 a.next{ display:inline-block; width:13px; height:14px; padding:3px 4px; margin:0;}
|
||||
.pagination.c2 a.prev{ background:url(../images/arrowPrevC1.gif) no-repeat center;}
|
||||
.pagination.c2 a.next{ background:url(../images/arrowNextC1.gif) no-repeat center;}
|
||||
.pagination.c2 a.prev span,
|
||||
.pagination.c2 a.next span{ position:absolute; width:0; height:0; overflow:hidden; visibility:hidden;}
|
||||
|
||||
|
||||
.midDefault { border:1px solid #EEEEEE; padding:10px; margin-bottom:10px; color:#888888;}
|
||||
.midDefault select { margin-left:5px; }
|
||||
|
||||
div.page { padding-left:20px; background:transparent url("../images/page.gif") no-repeat left 5px; }
|
||||
div.page { color:#444444; font-weight:bold; }
|
||||
div.page a.insert img { background:transparent url("../images/btn_insert.gif") no-repeat left top; width:14px; height:14px; margin-left:10px;}
|
||||
div.page a.modify img { background:transparent url("../images/btn_modify.gif") no-repeat left top; width:14px; height:14px; margin-left:2px;}
|
||||
div.page a.delete img { background:transparent url("../images/btn_delete.gif") no-repeat left top; width:14px; height:14px; margin-left:2px;}
|
||||
|
||||
ul.nav { margin:0 !important; padding:0; border:1px solid #EEEEEE; background-color:#EFEFEF;}
|
||||
ul.nav li { margin:5px; padding:8px !important; border:1px solid #5E95BC; list-style:none; background-color:#FFFFFF;}
|
||||
ul.nav li.active { background-color:#70A2C6; }
|
||||
ul.nav li a { color:#27536C; text-decoration:none; }
|
||||
ul.nav li.active a { font-weight:bold; color:#FFFFFF; }
|
||||
|
||||
div.blog_widget_ ul.items li { text-decoration:none; color:#000000; margin-bottom:5px;}
|
||||
div.blog_widget_ ul.items li a { text-decoration:none; color:#000000;}
|
||||
44
modules/homepage/skins/xe_official/css/layout.css
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
@charset "utf-8";
|
||||
@import url("./layoutTemplate.css");
|
||||
/* NHN > UIT Center > Open UI Technology Team > Jeong Chan Myeong(dece24@nhncorp.com) */
|
||||
|
||||
/* Reset */
|
||||
body { margin:2em; font-size:.75em; font-family:Sans-serif; }
|
||||
.liquid hr { display:none; }
|
||||
.liquid address { font-style:normal; }
|
||||
.liquid h1.title { margin:0;}
|
||||
.liquid ul.gnb { position:absolute; right:0; top:0; margin:0; padding:0;}
|
||||
.liquid ul.gnb li { display:inline; margin:0; padding:0;}
|
||||
|
||||
/* Container */
|
||||
#container { margin:0 auto; } /* alignCenter = margin:0 auto | alignLeft = margin:0 | alignRight = margin:0 0 0 auto */
|
||||
|
||||
/* Header */
|
||||
#header { margin-bottom:2em; border-bottom:3px solid #5E95BC; }
|
||||
#header h1 a { color:#000000; text-decoration:none; color:#27536C;}
|
||||
|
||||
/* Body */
|
||||
#body { *margin-bottom:2em; }
|
||||
|
||||
/* Content */
|
||||
#content { text-align:justify; margin-bottom:2em; }
|
||||
#content .section { margin-bottom:2em; }
|
||||
|
||||
/* Navigation */
|
||||
#navigation { }
|
||||
#navigation .section { margin-bottom:2em; }
|
||||
#navigation .section .nav{ padding:0; margin:0; margin-left:1.25em;}
|
||||
|
||||
/* Extra */
|
||||
#extra { }
|
||||
#extra .section { margin-bottom:2em; }
|
||||
#extra .section ul{ padding:0; margin:0; margin-left:1.25em;}
|
||||
|
||||
/* Footer */
|
||||
#footer { padding:1em 0; border-top:1px solid #000; }
|
||||
|
||||
/* Heading : h1~h6 */
|
||||
#body h2 { position:relative; border-bottom:2px solid #ddd; margin:0 0 1em 0; }
|
||||
#body p{ margin:0 0 1em 0;}
|
||||
|
||||
|
||||
555
modules/homepage/skins/xe_official/css/layoutTemplate.css
Normal file
|
|
@ -0,0 +1,555 @@
|
|||
@charset "utf-8";
|
||||
/* NHN > UIT Center > Open UI Technology Team > Jeong Chan Myeong(dece24@nhncorp.com) */
|
||||
|
||||
/* Float Clear */
|
||||
.fClear { display:block; float:none; clear:both; margin:0; padding:0; width:0; height:0; overflow:hidden; font:0/0 Sans-serif; visibility:hidden; } /* Use it when you want to float clearing */
|
||||
|
||||
/* Container */
|
||||
#container { position:relative; height:auto !important;}
|
||||
|
||||
/* Header */
|
||||
#header { position:relative; *zoom:1; }
|
||||
|
||||
/* Body */
|
||||
#body { position:relative; *zoom:1; }
|
||||
#body:after { content:""; display:block; clear:both; }
|
||||
|
||||
/* Content */
|
||||
#content { position:relative; }
|
||||
#content .section { position:relative; }
|
||||
|
||||
/* Navigation */
|
||||
#navigation { position:relative; }
|
||||
#navigation .section { position:relative; }
|
||||
|
||||
/* Extra */
|
||||
#extra { position:relative; }
|
||||
#extra .section { position:relative; }
|
||||
|
||||
/* Footer */
|
||||
#footer { position:relative; }
|
||||
|
||||
/* ---------- Common Display ---------- */
|
||||
/* c = #content, n = #navigation, e = #extra */
|
||||
.c1 #navigation,
|
||||
.c2 #navigation,
|
||||
.c3 #navigation,
|
||||
.c1 #extra,
|
||||
.c2 #extra,
|
||||
.c3 #extra
|
||||
.cn #extra,
|
||||
.nc #extra { display:none; }
|
||||
|
||||
.cn #navigation,
|
||||
.nc #navigation,
|
||||
.ce #navigation,
|
||||
.ec #navigation,
|
||||
.ne #navigation,
|
||||
.en #navigation,
|
||||
.cne #navigation,
|
||||
.ecn #navigation,
|
||||
.nec #navigation,
|
||||
.cen #navigation,
|
||||
.nce #navigation,
|
||||
.enc #navigation,
|
||||
.cee #navigation,
|
||||
.eec #navigation,
|
||||
.ece #navigation,
|
||||
.ce #extra,
|
||||
.ec #extra,
|
||||
.ne #extra,
|
||||
.en #extra,
|
||||
.cne #extra,
|
||||
.ecn #extra,
|
||||
.nec #extra,
|
||||
.cen #extra,
|
||||
.nce #extra,
|
||||
.enc #extra,
|
||||
.cee #extra,
|
||||
.eec #extra,
|
||||
.ece #extra { display:block; }
|
||||
|
||||
#extra .section{ display:none; }
|
||||
.e0 #extra { display:none;}
|
||||
.e1 #extra,
|
||||
.e2 #extra,
|
||||
.e3 #extra,
|
||||
.e4 #extra,
|
||||
.e5 #extra,
|
||||
.e6 #extra,
|
||||
.e7 #extra,
|
||||
.e8 #extra,
|
||||
.e9 #extra,
|
||||
.e10 #extra,
|
||||
.e1 #extra .extra1,
|
||||
.e2 #extra .extra1,
|
||||
.e2 #extra .extra2,
|
||||
.e3 #extra .extra1,
|
||||
.e3 #extra .extra2,
|
||||
.e3 #extra .extra3,
|
||||
.e4 #extra .extra1,
|
||||
.e4 #extra .extra2,
|
||||
.e4 #extra .extra3,
|
||||
.e4 #extra .extra4,
|
||||
.e5 #extra .extra1,
|
||||
.e5 #extra .extra2,
|
||||
.e5 #extra .extra3,
|
||||
.e5 #extra .extra4,
|
||||
.e5 #extra .extra5,
|
||||
.e6 #extra .extra1,
|
||||
.e6 #extra .extra2,
|
||||
.e6 #extra .extra3,
|
||||
.e6 #extra .extra4,
|
||||
.e6 #extra .extra5,
|
||||
.e6 #extra .extra6,
|
||||
.e7 #extra .extra1,
|
||||
.e7 #extra .extra2,
|
||||
.e7 #extra .extra3,
|
||||
.e7 #extra .extra4,
|
||||
.e7 #extra .extra5,
|
||||
.e7 #extra .extra6,
|
||||
.e7 #extra .extra7,
|
||||
.e8 #extra .extra1,
|
||||
.e8 #extra .extra2,
|
||||
.e8 #extra .extra3,
|
||||
.e8 #extra .extra4,
|
||||
.e8 #extra .extra5,
|
||||
.e8 #extra .extra6,
|
||||
.e8 #extra .extra7,
|
||||
.e8 #extra .extra8,
|
||||
.e9 #extra .extra1,
|
||||
.e9 #extra .extra2,
|
||||
.e9 #extra .extra3,
|
||||
.e9 #extra .extra4,
|
||||
.e9 #extra .extra5,
|
||||
.e9 #extra .extra6,
|
||||
.e9 #extra .extra7,
|
||||
.e9 #extra .extra8,
|
||||
.e9 #extra .extra9,
|
||||
.e10 #extra .extra1,
|
||||
.e10 #extra .extra2,
|
||||
.e10 #extra .extra3,
|
||||
.e10 #extra .extra4,
|
||||
.e10 #extra .extra5,
|
||||
.e10 #extra .extra6,
|
||||
.e10 #extra .extra7,
|
||||
.e10 #extra .extra8,
|
||||
.e10 #extra .extra9,
|
||||
.e10 #extra .extra10 { display:block;}
|
||||
|
||||
.nTop #navigation { display:block; }
|
||||
|
||||
.ne #navigation,
|
||||
.ne #extra,
|
||||
.ne #extra .section { float:left; }
|
||||
.en #navigation,
|
||||
.en #extra,
|
||||
.en #extra .section { float:right; }
|
||||
|
||||
/* ---------- Fixed Layout Preset ---------- */
|
||||
/* c = #content, n = #navigation, e = #extra */
|
||||
|
||||
/* Width */
|
||||
.fixed #container { width:960px; }
|
||||
.fixed #body { width:auto; }
|
||||
.fixed #navigation,
|
||||
.fixed #extra .section { width:200px; }
|
||||
.fixed .c1 #content { width:100%; }
|
||||
.fixed .c1 #navigation { width:300px; }
|
||||
.fixed .c1 #extra { width:auto; }
|
||||
.fixed .c1 #extra .section { width:300px; }
|
||||
.fixed .c2 #content { width:740px; }
|
||||
.fixed .c3 #content { width:520px;}
|
||||
.fixed .cee #extra,
|
||||
.fixed .eec #extra{ width:420px;}
|
||||
.fixed .ece #extra { width:100%;}
|
||||
|
||||
/* Floating 1 Columns */
|
||||
.fixed .c1 #content { clear:both; }
|
||||
|
||||
.fixed .ne #navigation,
|
||||
.fixed .ne #extra .extra1,
|
||||
.fixed .ne #extra .extra3,
|
||||
.fixed .ne #extra .extra5,
|
||||
.fixed .ne #extra .extra7,
|
||||
.fixed .ne #extra .extra9 { margin-right:30px; clear:left; *clear:none; }
|
||||
|
||||
.fixed .ne #extra .extra2,
|
||||
.fixed .ne #extra .extra4,
|
||||
.fixed .ne #extra .extra6,
|
||||
.fixed .ne #extra .extra8,
|
||||
.fixed .ne #extra .extra10 { clear:right; }
|
||||
|
||||
.fixed .en #navigation,
|
||||
.fixed .en #extra .extra1,
|
||||
.fixed .en #extra .extra3,
|
||||
.fixed .en #extra .extra5,
|
||||
.fixed .en #extra .extra7
|
||||
.fixed .en #extra .extra9 { margin-left:30px; clear:right; *clear:none; }
|
||||
|
||||
.fixed .en #extra .extra2,
|
||||
.fixed .en #extra .extra4,
|
||||
.fixed .en #extra .extra6,
|
||||
.fixed .en #extra .extra8,
|
||||
.fixed .en #extra .extra10 { clear:left; }
|
||||
|
||||
/* Floating 2 Columns */
|
||||
.fixed .cn #content { float:left; }
|
||||
.fixed .cn #navigation,
|
||||
.fixed .cn #extra { float:right; }
|
||||
|
||||
.fixed .nc #content { float:right; }
|
||||
.fixed .nc #navigation,
|
||||
.fixed .nc #extra { float:left; }
|
||||
|
||||
.fixed .ce #content { float:left; }
|
||||
.fixed .ce #navigation,
|
||||
.fixed .ce #extra { float:right; *float:none; *left:20px; _left:17px; }
|
||||
|
||||
.fixed .ec #content { float:right; }
|
||||
.fixed .ec #navigation,
|
||||
.fixed .ec #extra { float:left; *float:none; }
|
||||
|
||||
/* Floating 3 Columns */
|
||||
.fixed .cne #content { float:left; margin-right:20px; }
|
||||
.fixed .cne #navigation { float:left; }
|
||||
.fixed .cne #extra { float:right; }
|
||||
|
||||
.fixed .ecn #content { float:left; margin-right:-520px; left:220px; }
|
||||
.fixed .ecn #navigation { float:right; }
|
||||
.fixed .ecn #extra { float:left; }
|
||||
|
||||
.fixed .nec #content { float:right; }
|
||||
.fixed .nec #navigation { float:left; margin-right:20px; }
|
||||
.fixed .nec #extra { float:left; }
|
||||
|
||||
.fixed .cen #content { float:left; margin-right:20px; }
|
||||
.fixed .cen #navigation { float:right; }
|
||||
.fixed .cen #extra { float:left; }
|
||||
|
||||
.fixed .nce #content { float:left; margin-right:-520px; left:220px; }
|
||||
.fixed .nce #navigation { float:left; }
|
||||
.fixed .nce #extra { float:right; }
|
||||
|
||||
.fixed .enc #content { float:right; margin-left:20px; }
|
||||
.fixed .enc #navigation { float:right; }
|
||||
.fixed .enc #extra { float:left; }
|
||||
|
||||
.fixed .cee #content { float:left; _margin-right:-3px; }
|
||||
.fixed .cee #extra { float:right; *float:none; *left:20px; }
|
||||
.fixed .cee .section { float:left; }
|
||||
.fixed .cee .extra1,
|
||||
.fixed .cee .extra3,
|
||||
.fixed .cee .extra5,
|
||||
.fixed .cee .extra7,
|
||||
.fixed .cee .extra9{ margin-right:20px; }
|
||||
|
||||
.fixed .eec #content { float:right; _margin-left:-3px; }
|
||||
.fixed .eec #extra { float:left; *float:none; *left:0; }
|
||||
.fixed .eec .section{ float:left;}
|
||||
.fixed .eec .extra1,
|
||||
.fixed .eec .extra3,
|
||||
.fixed .eec .extra5,
|
||||
.fixed .eec .extra7,
|
||||
.fixed .eec .extra9{ margin-right:20px; }
|
||||
|
||||
.fixed .ece #content { float:left; margin-right:-100%; left:220px;}
|
||||
.fixed .ece #extra { float:left; }
|
||||
.fixed .ece .extra1,
|
||||
.fixed .ece .extra3,
|
||||
.fixed .ece .extra5,
|
||||
.fixed .ece .extra7,
|
||||
.fixed .ece .extra9 { float:left; clear:left; *clear:both;}
|
||||
.fixed .ece .extra2,
|
||||
.fixed .ece .extra4,
|
||||
.fixed .ece .extra6,
|
||||
.fixed .ece .extra8,
|
||||
.fixed .ece .extra10 { float:right; clear:right; }
|
||||
|
||||
/* ---------- Liquid Layout Preset ---------- */
|
||||
/* c = #content, n = #navigation, e = #extra */
|
||||
|
||||
/* Width */
|
||||
.liquid #container { width:100%; }
|
||||
.liquid #body { width:auto; }
|
||||
.liquid .c1 #content { width:100%; }
|
||||
.liquid .c1 #navigation { width:32%; }
|
||||
.liquid .c1 #extra { width:66%; }
|
||||
.liquid .c1 #extra .section { width:48.4%; }
|
||||
.liquid .c2 #content { width:75%; }
|
||||
.liquid .c2 #navigation,
|
||||
.liquid .c2 #extra { width:23%; }
|
||||
.liquid .c3 #content { width:56%; }
|
||||
.liquid .c3 #navigation { width:20%; }
|
||||
.liquid .c3 #extra { width:20%; }
|
||||
.liquid .cee #extra,
|
||||
.liquid .eec #extra { width:42%;}
|
||||
.liquid .ece #extra { width:100%;}
|
||||
.liquid .cee #extra .section,
|
||||
.liquid .eec #extra .section{ width:48%; }
|
||||
.liquid .ece #extra .section { width:20%; }
|
||||
|
||||
/* Floating 1 Columns */
|
||||
.liquid .c1 #content { clear:both; }
|
||||
|
||||
.liquid .ne #navigation { margin-right:2%; }
|
||||
.liquid .ne #extra .extra1,
|
||||
.liquid .ne #extra .extra3,
|
||||
.liquid .ne #extra .extra5,
|
||||
.liquid .ne #extra .extra7,
|
||||
.liquid .ne #extra .extra9 { float:left; clear:left; }
|
||||
|
||||
.liquid .ne #extra .extra2,
|
||||
.liquid .ne #extra .extra4,
|
||||
.liquid .ne #extra .extra6,
|
||||
.liquid .ne #extra .extra8,
|
||||
.liquid .ne #extra .extra10 { float:right; clear:right; }
|
||||
|
||||
.liquid .en #navigation { margin-left:2%; }
|
||||
.liquid .en #extra .extra1,
|
||||
.liquid .en #extra .extra3,
|
||||
.liquid .en #extra .extra5,
|
||||
.liquid .en #extra .extra7,
|
||||
.liquid .en #extra .extra9 { float:right; clear:right; }
|
||||
|
||||
.liquid .en #extra .extra2,
|
||||
.liquid .en #extra .extra4,
|
||||
.liquid .en #extra .extra6,
|
||||
.liquid .en #extra .extra8,
|
||||
.liquid .en #extra .extra10 { float:left; clear:left; }
|
||||
|
||||
/* Floating 2 Columns */
|
||||
.liquid .cn #content { float:left; }
|
||||
.liquid .cn #navigation,
|
||||
.liquid .cn #extra { float:right; }
|
||||
|
||||
.liquid .nc #content { float:right; }
|
||||
.liquid .nc #navigation,
|
||||
.liquid .nc #extra { float:left; }
|
||||
|
||||
.liquid .ce #content { float:left; _margin-right:-3px; }
|
||||
.liquid .ce #navigation,
|
||||
.liquid .ce #extra { float:right; *float:none; *left:2%; }
|
||||
|
||||
.liquid .ec #content { float:right; }
|
||||
.liquid .ec #navigation,
|
||||
.liquid .ec #extra { float:left; *float:none; }
|
||||
|
||||
/* Floating 3 Columns */
|
||||
.liquid .cne #content { float:left; margin-right:2%; }
|
||||
.liquid .cne #navigation { float:left; }
|
||||
.liquid .cne #extra { float:right; }
|
||||
|
||||
.liquid .ecn #content { float:left; margin-right:-100%; left:22%; }
|
||||
.liquid .ecn #navigation { float:right; }
|
||||
.liquid .ecn #extra { float:left; }
|
||||
|
||||
.liquid .nec #content { float:right; }
|
||||
.liquid .nec #navigation { float:left; margin-right:2%; }
|
||||
.liquid .nec #extra { float:left; }
|
||||
|
||||
.liquid .cen #content { float:left; margin-right:2%; }
|
||||
.liquid .cen #navigation { float:right; }
|
||||
.liquid .cen #extra { float:left; }
|
||||
|
||||
.liquid .nce #content { float:left; margin-right:-100%; left:22%; }
|
||||
.liquid .nce #navigation { float:left; }
|
||||
.liquid .nce #extra { float:right; }
|
||||
|
||||
.liquid .enc #content { float:right; margin-left:2%; }
|
||||
.liquid .enc #navigation { float:right; }
|
||||
.liquid .enc #extra { float:left; }
|
||||
|
||||
.liquid .cee #content { float:left; _margin-right:-3px; }
|
||||
.liquid .cee #extra { float:right; *float:none; *left:2%; }
|
||||
.liquid .cee .extra1,
|
||||
.liquid .cee .extra3,
|
||||
.liquid .cee .extra5,
|
||||
.liquid .cee .extra7,
|
||||
.liquid .cee .extra9 { float:left; clear:left; }
|
||||
.liquid .cee .extra2,
|
||||
.liquid .cee .extra4,
|
||||
.liquid .cee .extra6,
|
||||
.liquid .cee .extra8,
|
||||
.liquid .cee .extra10 { float:right; clear:right; }
|
||||
|
||||
.liquid .eec #content { float:right; _margin-left:-3px; }
|
||||
.liquid .eec #extra { float:left; *float:none; *left:0; }
|
||||
.liquid .eec .extra1,
|
||||
.liquid .eec .extra3,
|
||||
.liquid .eec .extra5,
|
||||
.liquid .eec .extra7,
|
||||
.liquid .eec .extra9 { float:left; clear:left; }
|
||||
.liquid .eec .extra2,
|
||||
.liquid .eec .extra4,
|
||||
.liquid .eec .extra6,
|
||||
.liquid .eec .extra8,
|
||||
.liquid .eec .extra10 { float:right; clear:right; }
|
||||
|
||||
.liquid .ece #content { float:left; margin-right:-100%; left:22%;}
|
||||
.liquid .ece #extra { float:left; }
|
||||
.liquid .ece .extra1,
|
||||
.liquid .ece .extra3,
|
||||
.liquid .ece .extra5,
|
||||
.liquid .ece .extra7,
|
||||
.liquid .ece .extra9 { float:left; clear:left; *clear:both; }
|
||||
.liquid .ece .extra2,
|
||||
.liquid .ece .extra4,
|
||||
.liquid .ece .extra6,
|
||||
.liquid .ece .extra8,
|
||||
.liquid .ece .extra10 { float:right; clear:right; }
|
||||
|
||||
/* ---------- Hybrid Layout Preset ---------- */
|
||||
/* c = #content, n = #navigation, e = #extra */
|
||||
|
||||
/* Width */
|
||||
.hybrid #container { width:100%; }
|
||||
.hybrid #body { width:auto; }
|
||||
.hybrid #content { width:100%; }
|
||||
.hybrid #navigation { width:200px; }
|
||||
.hybrid #extra { width:200px; }
|
||||
.hybrid .c1 #navigation { width:300px; }
|
||||
.hybrid .c1 #extra { width:auto; }
|
||||
.hybrid .c1 #extra .section { width:300px; }
|
||||
.hybrid .cee #extra,
|
||||
.hybrid .eec #extra { width:420px;}
|
||||
.hybrid .ece #extra { width:100%;}
|
||||
.hybrid .cee #extra .section,
|
||||
.hybrid .eec #extra .section,
|
||||
.hybrid .ece #extra .section { width:200px; }
|
||||
|
||||
/* Floating 1 Columns */
|
||||
.hybrid .c1 #content { clear:both; }
|
||||
|
||||
.hybrid .ne #navigation,
|
||||
.hybrid .ne #extra .extra1,
|
||||
.hybrid .ne #extra .extra3,
|
||||
.hybrid .ne #extra .extra5,
|
||||
.hybrid .ne #extra .extra7,
|
||||
.hybrid .ne #extra .extra9 { margin-right:30px; clear:left; *clear:none; }
|
||||
.hybrid .ne #extra .extra2,
|
||||
.hybrid .ne #extra .extra4,
|
||||
.hybrid .ne #extra .extra6,
|
||||
.hybrid .ne #extra .extra8,
|
||||
.hybrid .ne #extra .extra10 { margin-left:30px; clear:right; }
|
||||
|
||||
.hybrid .en #navigation,
|
||||
.hybrid .en #extra .extra1,
|
||||
.hybrid .en #extra .extra3,
|
||||
.hybrid .en #extra .extra5,
|
||||
.hybrid .en #extra .extra7,
|
||||
.hybrid .en #extra .extra9 { margin-left:30px; clear:right; *clear:none; }
|
||||
.hybrid .en #extra .extra2,
|
||||
.hybrid .en #extra .extra4,
|
||||
.hybrid .en #extra .extra6,
|
||||
.hybrid .en #extra .extra8,
|
||||
.hybrid .en #extra .extra10 { margin-right:30px; clear:left; }
|
||||
|
||||
/* Floating 2 Columns */
|
||||
.hybrid .cn #body { margin-right:220px; }
|
||||
.hybrid .cn #content { float:left; margin-right:-100%; }
|
||||
.hybrid .cn #navigation,
|
||||
.hybrid .cn #extra { float:right; left:220px; clear:right; }
|
||||
|
||||
.hybrid .nc #body { margin-left:220px; }
|
||||
.hybrid .nc #content { float:right; margin-left:-100%; *margin-left:0; }
|
||||
.hybrid .nc #navigation,
|
||||
.hybrid .nc #extra { float:left; left:-220px; clear:left; }
|
||||
|
||||
.hybrid .ce #body { margin-right:220px; }
|
||||
.hybrid .ce #content { float:left; margin-right:-100%; }
|
||||
.hybrid .ce #navigation,
|
||||
.hybrid .ce #extra { float:right; left:220px; clear:right; *float:none; *left:100%; *margin-left:20px; *margin-right:-200px; }
|
||||
.hybrid .ce #navigation { width:100% !important; right:-220px; }
|
||||
|
||||
.hybrid .ec #body { margin-left:220px; }
|
||||
.hybrid .ec #content { float:right; margin-left:-100%; _float:left; _margin-left:0; _margin-right:-100%; }
|
||||
.hybrid .ec #navigation,
|
||||
.hybrid .ec #extra { float:left; left:-220px; clear:left; *float:none; *margin-right:-200px; }
|
||||
.hybrid .ec #navigation { width:100% !important; }
|
||||
|
||||
/* Floating 3 Columns */
|
||||
.hybrid .cne #body { margin-right:440px; }
|
||||
.hybrid .cne #content { float:left; }
|
||||
.hybrid .cne #navigation { float:left; margin-right:-200px; left:20px; }
|
||||
.hybrid .cne #extra { float:right; margin-left:-200px; left:440px; }
|
||||
|
||||
.hybrid .ecn #body { margin-left:220px; margin-right:220px; }
|
||||
.hybrid .ecn #content { float:left; margin-right:-100%; }
|
||||
.hybrid .ecn #navigation { float:right; margin-left:-200px; left:220px; }
|
||||
.hybrid .ecn #extra { float:left; left:-220px; }
|
||||
|
||||
.hybrid .nec #body { margin-left:440px; }
|
||||
.hybrid .nec #content { float:right; }
|
||||
.hybrid .nec #navigation { float:left; margin-right:-200px; left:-440px; }
|
||||
.hybrid .nec #extra { float:left; margin-right:-200px; left:-220px; }
|
||||
|
||||
.hybrid .cen #body { margin-right:440px; }
|
||||
.hybrid .cen #content { float:left; }
|
||||
.hybrid .cen #navigation { float:right; margin-left:-200px; left:440px; }
|
||||
.hybrid .cen #extra { float:left; margin-right:-200px; left:20px; }
|
||||
|
||||
.hybrid .nce #body { margin-left:220px; margin-right:220px; }
|
||||
.hybrid .nce #content { float:left; margin-right:-100%; }
|
||||
.hybrid .nce #navigation { float:left; margin-right:-200px; left:-220px; }
|
||||
.hybrid .nce #extra { float:right; right:-220px; }
|
||||
|
||||
.hybrid .enc #body { margin-left:440px; }
|
||||
.hybrid .enc #content { float:right; }
|
||||
.hybrid .enc #navigation { float:right; margin-left:-200px; left:-20px; }
|
||||
.hybrid .enc #extra { float:left; margin-right:-200px; left:-440px; }
|
||||
|
||||
.hybrid .cee #body { margin-right:440px;}
|
||||
.hybrid .cee #content { float:left; margin-right:-100%; }
|
||||
.hybrid .cee #navigation { right:-440px;}
|
||||
.hybrid .cee #extra { float:right; left:440px; *float:none; *left:100%; *margin-left:20px; *margin-right:-420px; }
|
||||
|
||||
.hybrid .cee .extra1,
|
||||
.hybrid .cee .extra3,
|
||||
.hybrid .cee .extra5,
|
||||
.hybrid .cee .extra7,
|
||||
.hybrid .cee .extra9{ float:left; clear:left; }
|
||||
|
||||
.hybrid .cee .extra2,
|
||||
.hybrid .cee .extra4,
|
||||
.hybrid .cee .extra6,
|
||||
.hybrid .cee .extra8,
|
||||
.hybrid .cee .extra10{ float:right; clear:right; }
|
||||
|
||||
.hybrid .eec #body { margin-left:440px;}
|
||||
.hybrid .eec #content { float:left; margin-right:-100%; }
|
||||
.hybrid .eec #extra { float:left; left:-440px; *float:none; *margin-right:-420px; }
|
||||
.hybrid .eec .section{ float:left;}
|
||||
.hybrid .eec .extra1,
|
||||
.hybrid .eec .extra3,
|
||||
.hybrid .eec .extra5,
|
||||
.hybrid .eec .extra7,
|
||||
.hybrid .eec .extra9{ float:left; clear:left; }
|
||||
.hybrid .eec .extra2,
|
||||
.hybrid .eec .extra4,
|
||||
.hybrid .eec .extra6,
|
||||
.hybrid .eec .extra8,
|
||||
.hybrid .eec .extra10{ float:right; clear:right; }
|
||||
|
||||
.hybrid .ece #body { margin:0 220px; }
|
||||
.hybrid .ece #content { float:left; margin-right:-100%; }
|
||||
.hybrid .ece #navigation { right:-220px; }
|
||||
.hybrid .ece #extra { float:left; }
|
||||
.hybrid .ece .extra1,
|
||||
.hybrid .ece .extra3,
|
||||
.hybrid .ece .extra5,
|
||||
.hybrid .ece .extra7,
|
||||
.hybrid .ece .extra9{ float:left; left:-220px; margin-right:-200px; *margin-right:0; clear:left; *clear:both; }
|
||||
.hybrid .ece .extra2,
|
||||
.hybrid .ece .extra4,
|
||||
.hybrid .ece .extra6,
|
||||
.hybrid .ece .extra8,
|
||||
.hybrid .ece .extra10{ float:right; right:-220px; margin-left:-200px; *margin-left:0; clear:right; *clear:both; }
|
||||
|
||||
/* Navigation Top */
|
||||
.nTop #navigation { position:absolute; float:right !important; width:960px !important; margin:0 !important; *clear:none !important; overflow:visible; top:-4em; left:auto !important; right:0; }
|
||||
.nTop #navigation .section { position:absolute; float:right; top:0; right:0; width:auto; margin:0; padding:0; }
|
||||
.nTop #navigation .section:after { content:""; display:block; clear:both; width:0; height:0; overflow:hidden; visibility:hidden; font:0/0 Sans-serif;}
|
||||
.nTop #navigation h2 { position:absolute; left:0; top:0; width:0; height:0; border:0; overflow:hidden; visibility:hidden; font:0/0 Sans-serif; }
|
||||
.nTop #navigation ul.nav { position:relative; display:block; float:right; margin:0; padding:0; list-style:none; overflow:hidden; text-align:right; white-space:nowrap; }
|
||||
.nTop #navigation ul.nav li { position:relative; left:-1px; display:inline; white-space:nowrap; border-left:1px solid #ccc; padding-left:5px; }
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<filter name="change_layout" module="homepage" act="procHomepageChangeLayout" confirm_msg_code="confirm_change_layout">
|
||||
<form>
|
||||
<node target="layout" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeChangeLayout">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<filter name="delete_group" module="homepage" act="procHomepageDeleteGroup" confirm_msg_code="confirm_delete">
|
||||
<form>
|
||||
<node target="title" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeDeleteGroup">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<filter name="delete_menu_item" module="homepage" act="procHomepageDeleteMenuItem" confirm_msg_code="confirm_delete_menu_item">
|
||||
<form>
|
||||
<node target="menu_item_srl" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeInsertMenuItem">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="xml_file" />
|
||||
</response>
|
||||
</filter>
|
||||
159
modules/homepage/skins/xe_official/filter/insert_board.xml
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
<filter name="insert_board" module="homepage" act="procHomepageInsertBoard" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="mid" required="true" filter="alpha_number" />
|
||||
<node target="browser_title" required="true" maxlength="250" />
|
||||
<node target="list_count" required="true" filter="number" />
|
||||
<node target="search_list_count" required="true" filter="number" />
|
||||
<node target="page_count" required="true" filter="number" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="board_name" target="mid" />
|
||||
<param name="module_srl" target="module_srl" />
|
||||
<param name="module_category_srl" target="module_category_srl" />
|
||||
<param name="layout_srl" target="layout_srl" />
|
||||
<param name="skin" target="skin" />
|
||||
<param name="browser_title" target="browser_title" />
|
||||
<param name="use_category" target="use_category" />
|
||||
<param name="order_target" target="order_target" />
|
||||
<param name="order_type" target="order_type" />
|
||||
<param name="list_count" target="list_count" />
|
||||
<param name="search_list_count" target="search_list_count" />
|
||||
<param name="except_notice" target="except_notice" />
|
||||
<param name="consultation" target="consultation" />
|
||||
<param name="admin_mail" target="admin_mail" />
|
||||
<param name="page_count" target="page_count" />
|
||||
<param name="is_default" target="is_default" />
|
||||
<param name="description" target="description" />
|
||||
<param name="header_text" target="header_text" />
|
||||
<param name="footer_text" target="footer_text" />
|
||||
<param name="admin_id" target="admin_id" />
|
||||
<param name="extra_vars_1_name" target="extra_vars_1_name" />
|
||||
<param name="extra_vars_1_type" target="extra_vars_1_type" />
|
||||
<param name="extra_vars_1_is_required" target="extra_vars_1_is_required" />
|
||||
<param name="extra_vars_1_search" target="extra_vars_1_search" />
|
||||
<param name="extra_vars_1_default" target="extra_vars_1_default" />
|
||||
<param name="extra_vars_1_desc" target="extra_vars_1_desc" />
|
||||
<param name="extra_vars_2_name" target="extra_vars_2_name" />
|
||||
<param name="extra_vars_2_type" target="extra_vars_2_type" />
|
||||
<param name="extra_vars_2_is_required" target="extra_vars_2_is_required" />
|
||||
<param name="extra_vars_2_search" target="extra_vars_2_search" />
|
||||
<param name="extra_vars_2_default" target="extra_vars_2_default" />
|
||||
<param name="extra_vars_2_desc" target="extra_vars_2_desc" />
|
||||
<param name="extra_vars_3_name" target="extra_vars_3_name" />
|
||||
<param name="extra_vars_3_type" target="extra_vars_3_type" />
|
||||
<param name="extra_vars_3_is_required" target="extra_vars_3_is_required" />
|
||||
<param name="extra_vars_3_search" target="extra_vars_3_search" />
|
||||
<param name="extra_vars_3_default" target="extra_vars_3_default" />
|
||||
<param name="extra_vars_3_desc" target="extra_vars_3_desc" />
|
||||
<param name="extra_vars_4_name" target="extra_vars_4_name" />
|
||||
<param name="extra_vars_4_type" target="extra_vars_4_type" />
|
||||
<param name="extra_vars_4_is_required" target="extra_vars_4_is_required" />
|
||||
<param name="extra_vars_4_search" target="extra_vars_4_search" />
|
||||
<param name="extra_vars_4_default" target="extra_vars_4_default" />
|
||||
<param name="extra_vars_4_desc" target="extra_vars_4_desc" />
|
||||
<param name="extra_vars_5_name" target="extra_vars_5_name" />
|
||||
<param name="extra_vars_5_type" target="extra_vars_5_type" />
|
||||
<param name="extra_vars_5_is_required" target="extra_vars_5_is_required" />
|
||||
<param name="extra_vars_5_search" target="extra_vars_5_search" />
|
||||
<param name="extra_vars_5_default" target="extra_vars_5_default" />
|
||||
<param name="extra_vars_5_desc" target="extra_vars_5_desc" />
|
||||
<param name="extra_vars_6_name" target="extra_vars_6_name" />
|
||||
<param name="extra_vars_6_type" target="extra_vars_6_type" />
|
||||
<param name="extra_vars_6_is_required" target="extra_vars_6_is_required" />
|
||||
<param name="extra_vars_6_search" target="extra_vars_6_search" />
|
||||
<param name="extra_vars_6_default" target="extra_vars_6_default" />
|
||||
<param name="extra_vars_6_desc" target="extra_vars_6_desc" />
|
||||
<param name="extra_vars_7_name" target="extra_vars_7_name" />
|
||||
<param name="extra_vars_7_type" target="extra_vars_7_type" />
|
||||
<param name="extra_vars_7_is_required" target="extra_vars_7_is_required" />
|
||||
<param name="extra_vars_7_search" target="extra_vars_7_search" />
|
||||
<param name="extra_vars_7_default" target="extra_vars_7_default" />
|
||||
<param name="extra_vars_7_desc" target="extra_vars_7_desc" />
|
||||
<param name="extra_vars_8_name" target="extra_vars_8_name" />
|
||||
<param name="extra_vars_8_type" target="extra_vars_8_type" />
|
||||
<param name="extra_vars_8_is_required" target="extra_vars_8_is_required" />
|
||||
<param name="extra_vars_8_search" target="extra_vars_8_search" />
|
||||
<param name="extra_vars_8_default" target="extra_vars_8_default" />
|
||||
<param name="extra_vars_8_desc" target="extra_vars_8_desc" />
|
||||
<param name="extra_vars_9_name" target="extra_vars_9_name" />
|
||||
<param name="extra_vars_9_type" target="extra_vars_9_type" />
|
||||
<param name="extra_vars_9_is_required" target="extra_vars_9_is_required" />
|
||||
<param name="extra_vars_9_search" target="extra_vars_9_search" />
|
||||
<param name="extra_vars_9_default" target="extra_vars_9_default" />
|
||||
<param name="extra_vars_9_desc" target="extra_vars_9_desc" />
|
||||
<param name="extra_vars_10_name" target="extra_vars_10_name" />
|
||||
<param name="extra_vars_10_type" target="extra_vars_10_type" />
|
||||
<param name="extra_vars_10_is_required" target="extra_vars_10_is_required" />
|
||||
<param name="extra_vars_10_search" target="extra_vars_10_search" />
|
||||
<param name="extra_vars_10_default" target="extra_vars_10_default" />
|
||||
<param name="extra_vars_10_desc" target="extra_vars_10_desc" />
|
||||
<param name="extra_vars_11_name" target="extra_vars_11_name" />
|
||||
<param name="extra_vars_11_type" target="extra_vars_11_type" />
|
||||
<param name="extra_vars_11_is_required" target="extra_vars_11_is_required" />
|
||||
<param name="extra_vars_11_search" target="extra_vars_11_search" />
|
||||
<param name="extra_vars_11_default" target="extra_vars_11_default" />
|
||||
<param name="extra_vars_11_desc" target="extra_vars_11_desc" />
|
||||
<param name="extra_vars_12_name" target="extra_vars_12_name" />
|
||||
<param name="extra_vars_12_type" target="extra_vars_12_type" />
|
||||
<param name="extra_vars_12_is_required" target="extra_vars_12_is_required" />
|
||||
<param name="extra_vars_12_search" target="extra_vars_12_search" />
|
||||
<param name="extra_vars_12_default" target="extra_vars_12_default" />
|
||||
<param name="extra_vars_12_desc" target="extra_vars_12_desc" />
|
||||
<param name="extra_vars_13_name" target="extra_vars_13_name" />
|
||||
<param name="extra_vars_13_type" target="extra_vars_13_type" />
|
||||
<param name="extra_vars_13_is_required" target="extra_vars_13_is_required" />
|
||||
<param name="extra_vars_13_search" target="extra_vars_13_search" />
|
||||
<param name="extra_vars_13_default" target="extra_vars_13_default" />
|
||||
<param name="extra_vars_13_desc" target="extra_vars_13_desc" />
|
||||
<param name="extra_vars_14_name" target="extra_vars_14_name" />
|
||||
<param name="extra_vars_14_type" target="extra_vars_14_type" />
|
||||
<param name="extra_vars_14_is_required" target="extra_vars_14_is_required" />
|
||||
<param name="extra_vars_14_search" target="extra_vars_14_search" />
|
||||
<param name="extra_vars_14_default" target="extra_vars_14_default" />
|
||||
<param name="extra_vars_14_desc" target="extra_vars_14_desc" />
|
||||
<param name="extra_vars_15_name" target="extra_vars_15_name" />
|
||||
<param name="extra_vars_15_type" target="extra_vars_15_type" />
|
||||
<param name="extra_vars_15_is_required" target="extra_vars_15_is_required" />
|
||||
<param name="extra_vars_15_search" target="extra_vars_15_search" />
|
||||
<param name="extra_vars_15_default" target="extra_vars_15_default" />
|
||||
<param name="extra_vars_15_desc" target="extra_vars_15_desc" />
|
||||
<param name="extra_vars_16_name" target="extra_vars_16_name" />
|
||||
<param name="extra_vars_16_type" target="extra_vars_16_type" />
|
||||
<param name="extra_vars_16_is_required" target="extra_vars_16_is_required" />
|
||||
<param name="extra_vars_16_search" target="extra_vars_16_search" />
|
||||
<param name="extra_vars_16_default" target="extra_vars_16_default" />
|
||||
<param name="extra_vars_16_desc" target="extra_vars_16_desc" />
|
||||
<param name="extra_vars_17_name" target="extra_vars_17_name" />
|
||||
<param name="extra_vars_17_type" target="extra_vars_17_type" />
|
||||
<param name="extra_vars_17_is_required" target="extra_vars_17_is_required" />
|
||||
<param name="extra_vars_17_search" target="extra_vars_17_search" />
|
||||
<param name="extra_vars_17_default" target="extra_vars_17_default" />
|
||||
<param name="extra_vars_17_desc" target="extra_vars_17_desc" />
|
||||
<param name="extra_vars_18_name" target="extra_vars_18_name" />
|
||||
<param name="extra_vars_18_type" target="extra_vars_18_type" />
|
||||
<param name="extra_vars_18_is_required" target="extra_vars_18_is_required" />
|
||||
<param name="extra_vars_18_search" target="extra_vars_18_search" />
|
||||
<param name="extra_vars_18_default" target="extra_vars_18_default" />
|
||||
<param name="extra_vars_18_desc" target="extra_vars_18_desc" />
|
||||
<param name="extra_vars_19_name" target="extra_vars_19_name" />
|
||||
<param name="extra_vars_19_type" target="extra_vars_19_type" />
|
||||
<param name="extra_vars_19_is_required" target="extra_vars_19_is_required" />
|
||||
<param name="extra_vars_19_search" target="extra_vars_19_search" />
|
||||
<param name="extra_vars_19_default" target="extra_vars_19_default" />
|
||||
<param name="extra_vars_19_desc" target="extra_vars_19_desc" />
|
||||
<param name="extra_vars_20_name" target="extra_vars_20_name" />
|
||||
<param name="extra_vars_20_type" target="extra_vars_20_type" />
|
||||
<param name="extra_vars_20_is_required" target="extra_vars_20_is_required" />
|
||||
<param name="extra_vars_20_search" target="extra_vars_20_search" />
|
||||
<param name="extra_vars_20_default" target="extra_vars_20_default" />
|
||||
<param name="extra_vars_20_desc" target="extra_vars_20_desc" />
|
||||
</parameter>
|
||||
<response callback_func="completeInsertBoard">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="module" />
|
||||
<tag name="act" />
|
||||
<tag name="page" />
|
||||
<tag name="module_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
11
modules/homepage/skins/xe_official/filter/insert_grant.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<filter name="insert_grant" module="homepage" act="procHomepageInsertBoardGrant" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="module_srl" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeInsertGrant">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="page" />
|
||||
<tag name="module_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<filter name="insert_group" module="homepage" act="procHomepageInsertGroup" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="title" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeInsertGroup">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<filter name="insert_menu_item" module="homepage" act="procHomepageInsertMenuItem" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="menu_srl" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeInsertMenuItem">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="xml_file" />
|
||||
</response>
|
||||
</filter>
|
||||
10
modules/homepage/skins/xe_official/filter/insert_page.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<filter name="insert_page" module="homepage" act="procHomepageInsertPage" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="module_srl" required="true" filter="number" />
|
||||
</form>
|
||||
<parameter />
|
||||
<response callback_func="completeInsertPage">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<filter name="update_index_mid" module="homepage" act="procHomepageChangeIndex" confirm_msg_code="confirm_update">
|
||||
<form>
|
||||
<node target="index_mid" required="true" />
|
||||
</form>
|
||||
<response>
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<filter name="update_member_group" module="homepage" act="procHomepageUpdateMemberGroup" confirm_msg_code="confirm_submit">
|
||||
<form />
|
||||
<parameter>
|
||||
<param name="cart" target="cart" />
|
||||
<param name="group_srl" target="group_srl" />
|
||||
</parameter>
|
||||
<response>
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
84
modules/homepage/skins/xe_official/group_list.html
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
<!--%import("filter/insert_group.xml")-->
|
||||
<!--%import("filter/delete_group.xml")-->
|
||||
|
||||
<h3 class="title">{$lang->cmd_homepage_menus[$act]}</h3>
|
||||
<p class="infoText">{$lang->about_homepage_act[$act]}</p>
|
||||
|
||||
<form id="fo_group">
|
||||
<input type="hidden" name="group_srl" value=""/>
|
||||
</form>
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="half_wide"><div>{$lang->group_title}</div></th>
|
||||
<th scope="col" class="half_wide"><div>{$lang->description}</div></th>
|
||||
<th scope="col"><div>{$lang->regdate}</div></th>
|
||||
<th scope="col"><div>{$lang->is_default}</div></th>
|
||||
<th scope="col" colspan="2"><div> </div></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!--@if(!count($group_list))-->
|
||||
<tr>
|
||||
<td colspan="7">{$lang->msg_group_is_null}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<!--@foreach($group_list as $group_srl => $group_info)-->
|
||||
<tr class="row{$cycle_idx}">
|
||||
<td class="nowrap">{$group_info->title}</td>
|
||||
<td>{nl2br($group_info->description)} </td>
|
||||
<td class="date center nowrap">{zdate($group_info->regdate,"Y-m-d H:i:s")}</td>
|
||||
<td class="center number"><!--@if($group_info->is_default=='Y')-->Y<!--@else--> <!--@end--></td>
|
||||
<td class="modify"><a href="{getUrl('group_srl',$group_info->group_srl)}">{$lang->cmd_modify}</a></td>
|
||||
<td class="delete">
|
||||
<!--@if($group_info->is_default!='Y' && $group_info->is_admin !='Y')-->
|
||||
<a href="#" onclick="doDeleteGroup({$group_info->group_srl});return false;">{$lang->cmd_delete}</a>
|
||||
<!--@else-->
|
||||
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br />
|
||||
|
||||
|
||||
<!-- 그룹 추가 -->
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, insert_group)">
|
||||
<input type="hidden" name="group_srl" value="{$selected_group->group_srl}" />
|
||||
<!--@if($selected_group->group_srl && $selected_group->is_default == 'Y')-->
|
||||
<input type="hidden" name="is_default" value="Y" />
|
||||
<!--@end-->
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->group_title}</div></th>
|
||||
<td class="wide"><input type="text" name="title" value="{$selected_group->title}" class="inputTypeText w400" /></td>
|
||||
</tr>
|
||||
<!--@if(!$selected_group->group_srl || $selected_group->is_default != 'Y')-->
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->is_default}</div></th>
|
||||
<td><input type="checkbox" name="is_default" value="Y" class="checkbox" <!--@if($selected_group->is_default=='Y')-->checked="checked"<!--@end--> /> {$lang->about_member_default}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->description}</div></th>
|
||||
<td><textarea name="description" class="inputTypeTextArea w400">{$selected_group->description}</textarea></td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<td colspan="2" class="right">
|
||||
<!--@if($selected_group->group_srl)-->
|
||||
<span class="button blue"><input type="submit" value="{$lang->cmd_modify}" accesskey="s" /></span>
|
||||
<span class="button"><input type="button" value="{$lang->cmd_cancel}" onclick="location.href=current_url.setQuery('group_srl','');return false;"/></span>
|
||||
<!--@else-->
|
||||
<span class="button blue"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</form>
|
||||
BIN
modules/homepage/skins/xe_official/images/btn_delete.gif
Normal file
|
After Width: | Height: | Size: 1,018 B |
BIN
modules/homepage/skins/xe_official/images/btn_insert.gif
Normal file
|
After Width: | Height: | Size: 1,019 B |
BIN
modules/homepage/skins/xe_official/images/btn_modify.gif
Normal file
|
After Width: | Height: | Size: 1,019 B |
BIN
modules/homepage/skins/xe_official/images/button_down.gif
Normal file
|
After Width: | Height: | Size: 208 B |
BIN
modules/homepage/skins/xe_official/images/button_up.gif
Normal file
|
After Width: | Height: | Size: 206 B |
BIN
modules/homepage/skins/xe_official/images/n_caption_head.gif
Normal file
|
After Width: | Height: | Size: 493 B |
BIN
modules/homepage/skins/xe_official/images/n_circle_bullet.gif
Normal file
|
After Width: | Height: | Size: 79 B |
BIN
modules/homepage/skins/xe_official/images/n_icon_copy.gif
Normal file
|
After Width: | Height: | Size: 221 B |
BIN
modules/homepage/skins/xe_official/images/n_icon_delete.gif
Normal file
|
After Width: | Height: | Size: 337 B |
BIN
modules/homepage/skins/xe_official/images/n_icon_modify.gif
Normal file
|
After Width: | Height: | Size: 336 B |
BIN
modules/homepage/skins/xe_official/images/n_icon_remove.gif
Normal file
|
After Width: | Height: | Size: 565 B |
BIN
modules/homepage/skins/xe_official/images/n_icon_select_all.gif
Normal file
|
After Width: | Height: | Size: 636 B |
BIN
modules/homepage/skins/xe_official/images/n_icon_view.gif
Normal file
|
After Width: | Height: | Size: 568 B |
BIN
modules/homepage/skins/xe_official/images/n_paper_bullet.gif
Normal file
|
After Width: | Height: | Size: 60 B |
BIN
modules/homepage/skins/xe_official/images/n_setup.gif
Normal file
|
After Width: | Height: | Size: 619 B |
BIN
modules/homepage/skins/xe_official/images/n_small_tab.gif
Normal file
|
After Width: | Height: | Size: 484 B |
BIN
modules/homepage/skins/xe_official/images/n_title_bg.gif
Normal file
|
After Width: | Height: | Size: 318 B |
BIN
modules/homepage/skins/xe_official/images/page.gif
Normal file
|
After Width: | Height: | Size: 1 KiB |
134
modules/homepage/skins/xe_official/index.html
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
<h3 class="title">{$lang->cmd_homepage_menus[$act]}</h3>
|
||||
<p class="infoText">{$lang->about_homepage_act[$act]}</p>
|
||||
|
||||
<!--%import("./filter/change_layout.xml")-->
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, change_layout);">
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{$lang->layout}</caption>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->layout}</div></th>
|
||||
<td>
|
||||
<select name="layout">
|
||||
<!--@foreach($layout_list as $key => $val)-->
|
||||
<option value="{$val->layout}" <!--@if($selected_layout->layout == $val->layout)-->selected="selected"<!--@end-->>{$val->title} ver {$val->version} ({$val->layout})</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<span class="button blue"><input type="submit" value="{$lang->cmd_change_layout}" /></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->path}</div></th>
|
||||
<td>{$selected_layout->path}</td>
|
||||
</tr>
|
||||
<!--@if(count($selected_layout->author))-->
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->author}</div></th>
|
||||
<td>
|
||||
<!--@foreach($selected_layout->author as $k => $v)-->
|
||||
<a href="{$v->homepage}" onclick="window.open(this.href);return false;" class="blue">{$v->name}</a>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($selected_layout->description)-->
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->description}</div></th>
|
||||
<td>{nl2br(trim($selected_layout->description))}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<form id="fo_layout" action="./" method="post" enctype="multipart/form-data" target="hidden_iframe">
|
||||
<input type="hidden" name="module" value="homepage" />
|
||||
<input type="hidden" name="act" value="procHomepageLayoutUpdate" />
|
||||
<input type="hidden" name="layout_srl" value="{$selected_layout->layout_srl}" />
|
||||
<input type="hidden" name="title" value="{htmlspecialchars($homepage_info->title)}" />
|
||||
<!--@if($logged_info->is_admin != 'Y')-->
|
||||
<!--@foreach($selected_layout->menu as $menu_name => $menu_info)-->
|
||||
<input type="hidden" name="{$menu_name}" value="{$menu_info->menu_srl}" />
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->header_script}</div></th>
|
||||
<td>
|
||||
<textarea name="header_script" class="inputTypeTextArea w400">{htmlspecialchars($selected_layout->header_script)}</textarea>
|
||||
<p>{$lang->about_header_script}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@foreach($selected_layout->extra_var as $name => $var)-->
|
||||
|
||||
<!--@if($var->group && ((!$group) || $group != $var->group))-->
|
||||
{@$group = $var->group}
|
||||
</table>
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="150" />
|
||||
<col width="*" />
|
||||
<caption>{$group}</caption>
|
||||
<!--@end-->
|
||||
|
||||
<tr class="row{$cycle_idx+1}">
|
||||
<th scope="row"><div>{$var->title}</div></th>
|
||||
|
||||
<td>
|
||||
<!--@if($var->type == "text")-->
|
||||
<input type="text" name="{$name}" value="{htmlspecialchars($var->value)}" class="inputTypeText w400"/>
|
||||
|
||||
<!--@elseif($var->type == "textarea")-->
|
||||
<textarea name="{$name}" class="inputTypeTextArea w400">{htmlspecialchars($var->value)}</textarea>
|
||||
|
||||
<!--@elseif($var->type=="image")-->
|
||||
|
||||
<!--@if($var->value)-->
|
||||
<div>
|
||||
<img src="{$var->value}" alt="image" /><br />
|
||||
<input type="checkbox" name="del_{$name}" value="Y" id="del_{$name}" class="checkbox" />
|
||||
<label for="del_{$name}">{$lang->cmd_delete}</label>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<input type="file" name="{$name}" value="" />
|
||||
|
||||
<!--@elseif($var->type == "select")-->
|
||||
<select name="{$name}">
|
||||
<!--@foreach($var->options as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($key==$var->value)-->selected="selected"<!--@end-->>{$val}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<!--@end-->
|
||||
<p>{$var->description}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($var->group)-->
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($logged_info->is_admin == 'Y')-->
|
||||
<!--@foreach($selected_layout->menu as $menu_name => $menu_info)-->
|
||||
<tr>
|
||||
<th scope="row"><div>{$menu_info->title}<br />({$menu_name})</div></th>
|
||||
<td class="left tahoma">
|
||||
<select name="{$menu_name}">
|
||||
<option value="0">------------------------</option>
|
||||
<!--@foreach($menu_list as $key => $val)-->
|
||||
<option value="{$val->menu_srl}" <!--@if($val->menu_srl == $menu_info->menu_srl)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<tr class="row2">
|
||||
<td colspan="2" class="right">
|
||||
<span class="button strong blue"><input type="submit" value="{$lang->cmd_save}" /></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<iframe name="hidden_iframe" frameborder="0" style="display:none"></iframe>
|
||||
</form>
|
||||
579
modules/homepage/skins/xe_official/js/homepage.js
Normal file
|
|
@ -0,0 +1,579 @@
|
|||
var max_menu_depth = 1;
|
||||
var menuList = new Array();
|
||||
var mousePos = {x:0,y:0}
|
||||
|
||||
function chkMousePosition(evt) {
|
||||
var e = new xEvent(evt);
|
||||
mousePos = {x:e.pageX, y:e.pageY};
|
||||
|
||||
var pobj = e.target;
|
||||
while(pobj) {
|
||||
pobj = pobj.parentNode;
|
||||
if(pobj && pobj.id == 'menuItem') return;
|
||||
}
|
||||
|
||||
hideMenuItem();
|
||||
}
|
||||
|
||||
function homepageLoadMenuInfo(xml_file) {
|
||||
var oXml = new xml_handler();
|
||||
oXml.reset();
|
||||
oXml.xml_path = xml_file;
|
||||
oXml.request(completeHomepageLoadMenuInfo, oXml);
|
||||
}
|
||||
|
||||
function completeHomepageLoadMenuInfo(oXml) {
|
||||
var waiting_obj = xGetElementById("waitingforserverresponse");
|
||||
if(waiting_obj) waiting_obj.style.visibility = "hidden";
|
||||
|
||||
var xmlDoc = oXml.getResponseXml();
|
||||
if(!xmlDoc) return null;
|
||||
|
||||
// node 태그에 해당하는 값들을 가져와서 html을 작성
|
||||
var node_list = xmlDoc.getElementsByTagName("node");
|
||||
if(node_list.length<1) return;
|
||||
|
||||
// select 내용 없앰
|
||||
xInnerHtml('menu','');
|
||||
|
||||
var root = xmlDoc.getElementsByTagName("root")[0];
|
||||
root.setAttribute('node_srl',0);
|
||||
root.setAttribute('parent_srl',0);
|
||||
xGetElementById('menu').appendChild(getGabItem(0,0,0));
|
||||
homepageInsertMenuObject(xGetElementById('menu'), root, 0);
|
||||
|
||||
}
|
||||
|
||||
function getGabItem(parent_srl, up_srl, depth) {
|
||||
if(typeof(parent_srl)=='undefined' || !parent_srl) parent_srl = 0;
|
||||
if(typeof(up_srl)=='undefined' || !up_srl) up_srl = 0;
|
||||
if(typeof(depth)=='undefined' || !depth) depth = 0;
|
||||
|
||||
var gabObj = xCreateElement('div');
|
||||
gabObj.id = 'gab_'+parent_srl+'_'+up_srl;
|
||||
gabObj.style.cursor = "pointer";
|
||||
gabObj.style.width = '100%';
|
||||
gabObj.style.height = '1px';
|
||||
gabObj.style.marign = '5px 0 0 0';
|
||||
gabObj.style.padding = '0 0 5px 0';
|
||||
gabObj.style.overflow = "hidden";
|
||||
gabObj.style.whitespace = "nowrap";
|
||||
return gabObj;
|
||||
}
|
||||
|
||||
// root부터 시작해서 recursive하게 노드를 표혐
|
||||
function homepageInsertMenuObject(drawObj, parent_node, depth) {
|
||||
|
||||
for (var i=0; i< parent_node.childNodes.length; i++) {
|
||||
|
||||
var html = "";
|
||||
|
||||
var node = parent_node.childNodes.item(i);
|
||||
if(node.nodeName!="node") continue;
|
||||
|
||||
var node_srl = node.getAttribute("node_srl");
|
||||
var parent_srl = node.getAttribute("parent_srl");
|
||||
var text = node.getAttribute("text");
|
||||
var url = node.getAttribute("url");
|
||||
|
||||
if(!text) continue;
|
||||
|
||||
var itemObj = xCreateElement('div');
|
||||
itemObj.style.margin = "0 0 0 "+(depth*20)+"px";
|
||||
|
||||
if(parent_srl>0 && i<1) itemObj.appendChild(getGabItem(parent_srl, 0, depth));
|
||||
|
||||
var textObj = xCreateElement('div');
|
||||
textObj.className = "page";
|
||||
textObj.style.cursor = "pointer";
|
||||
textObj.id = "node_"+node_srl;
|
||||
textObj.style.padding = "5px 0 5px 20px";
|
||||
xInnerHtml(textObj, text);
|
||||
|
||||
if(depth < max_menu_depth-1)
|
||||
xInnerHtml(textObj, xInnerHtml(textObj) + '<a href="#" onclick="homepageAddMenu('+node_srl+'); return false;" class="insert"><img src="./common/tpl/images/blank.gif" alt="" /></a> ');
|
||||
|
||||
xInnerHtml(textObj, xInnerHtml(textObj) + '<a href="#" onclick="homepageModifyMenu('+node_srl+'); return false;" class="modify"><img src="./common/tpl/images/blank.gif" alt="" /></a> ');
|
||||
|
||||
if(!node.hasChildNodes()) {
|
||||
xInnerHtml(textObj, xInnerHtml(textObj) + '<a href="#" onclick="homepageDeleteMenu('+node_srl+'); return false;" class="delete"><img src="./common/tpl/images/blank.gif" alt="" /></a> ');
|
||||
}
|
||||
itemObj.appendChild(textObj);
|
||||
|
||||
if(node.hasChildNodes()) homepageInsertMenuObject(itemObj, node, depth+1);
|
||||
itemObj.appendChild(getGabItem(parent_srl, node_srl, depth));
|
||||
|
||||
drawObj.appendChild(itemObj);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function homepageAddMenu(node_srl) {
|
||||
menuFormReset();
|
||||
var obj = new Array();
|
||||
obj['mode'] = 'insert';
|
||||
if(typeof(node_srl)!='undefined' && node_srl > 0) {
|
||||
obj['parent_srl'] = node_srl;
|
||||
}
|
||||
menuFormInsert(obj)
|
||||
showMenuItem();
|
||||
}
|
||||
|
||||
function homepageModifyMenu(node_srl) {
|
||||
var params = new Array();
|
||||
params['node_srl'] = node_srl;
|
||||
var response_tags = new Array('error','message','menu_info');
|
||||
exec_xml('homepage','getHomepageMenuItem', params, completeModifyMenu, response_tags);
|
||||
}
|
||||
|
||||
function completeModifyMenu(ret_obj) {
|
||||
var menu_info = ret_obj['menu_info'];
|
||||
menu_info['mode'] = 'update';
|
||||
menuFormInsert(menu_info)
|
||||
showMenuItem();
|
||||
showMenuButton();
|
||||
}
|
||||
|
||||
function homepageDeleteMenu(node_srl) {
|
||||
var fo_obj = xGetElementById('menu_item_form');
|
||||
fo_obj.menu_item_srl.value = node_srl;
|
||||
|
||||
procFilter(fo_obj, delete_menu_item);
|
||||
}
|
||||
|
||||
function completeChangeLayout(ret_obj) {
|
||||
location.reload();
|
||||
}
|
||||
|
||||
function hideMenuItem() {
|
||||
xGetElementById('menuItem').style.visibility = 'hidden';
|
||||
menuFormReset();
|
||||
}
|
||||
|
||||
function showMenuButton() {
|
||||
xGetElementById('itemAttr4').style.display = 'block';
|
||||
}
|
||||
|
||||
function showMenuItem() {
|
||||
var obj = xGetElementById('menuItem');
|
||||
xLeft(obj, mousePos.x - xWidth('navigation') - 40);
|
||||
xTop(obj, mousePos.y - xHeight('header') - 70 );
|
||||
obj.style.visibility = 'visible';
|
||||
}
|
||||
|
||||
function menuFormReset() {
|
||||
var fo_obj = xGetElementById("fo_menu");
|
||||
|
||||
fo_obj.parent_srl.value = '';
|
||||
fo_obj.menu_item_srl.value = '';
|
||||
fo_obj.mode.value = '';
|
||||
|
||||
var names = xGetElementsByClassName("menu_names");
|
||||
for(var i in names) names[i].value = "";
|
||||
|
||||
fo_obj.browser_title.value = '';
|
||||
|
||||
fo_obj.menu_open_window.checked = false;
|
||||
fo_obj.menu_expand.checked = false;
|
||||
|
||||
for(var i=0; i<fo_obj.group_srls.length;i++) fo_obj.group_srls[i].checked = false;
|
||||
|
||||
fo_obj.module_type.selectedIndex = 0;
|
||||
fo_obj.module_type.disabled = "";
|
||||
|
||||
fo_obj.module_id.value = '';
|
||||
fo_obj.url.value = '';
|
||||
xGetElementById('itemAttr3').style.display = "none";
|
||||
|
||||
xGetElementById("menu_normal_btn_zone").style.display = "none";
|
||||
xGetElementById('menu_normal_btn_img').src = "";
|
||||
xGetElementById("menu_hover_btn_zone").style.display = "none";
|
||||
xGetElementById('menu_hover_btn_img').src = "";
|
||||
xGetElementById("menu_active_btn_zone").style.display = "none";
|
||||
xGetElementById('menu_active_btn_img').src = "";
|
||||
|
||||
xGetElementById('itemAttr4').style.display = 'none';
|
||||
|
||||
fo_obj.reset();
|
||||
}
|
||||
|
||||
function menuFormInsert(obj) {
|
||||
if(typeof(obj)=='undefined') return;
|
||||
|
||||
var fo_obj = xGetElementById("fo_menu");
|
||||
|
||||
if(typeof(obj.parent_srl)!='undefined') fo_obj.parent_srl.value = obj.parent_srl;
|
||||
if(typeof(obj.menu_item_srl)!='undefined') fo_obj.menu_item_srl.value = obj.menu_item_srl;
|
||||
if(typeof(obj.mode)!='undefined') fo_obj.mode.value = obj.mode;
|
||||
|
||||
if(typeof(obj.name)!='undefined') {
|
||||
for(var i in obj.name) {
|
||||
var o = fo_obj['menu_name_'+i];
|
||||
if(!o) continue;
|
||||
o.value = obj.name[i];
|
||||
}
|
||||
}
|
||||
|
||||
if(typeof(obj.browser_title)!='undefined') fo_obj.browser_title.value = obj.browser_title;
|
||||
|
||||
if(typeof(obj.open_window)!='undefined' && obj.open_window=='Y') fo_obj.menu_open_window.checked = true;
|
||||
if(typeof(obj.expand)!='undefined' && obj.expand=='Y') fo_obj.menu_expand.checked = true;
|
||||
|
||||
if(typeof(obj.group_srls)!='undefined' && obj.group_srls && typeof(obj.group_srls.item)!='undefined' && obj.group_srls.item) {
|
||||
for(var j in obj.group_srls.item) {
|
||||
for(var i=0; i<fo_obj.group_srls.length;i++) {
|
||||
if(obj.group_srls.item[j]==fo_obj.group_srls[i].value) fo_obj.group_srls[i].checked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(typeof(obj.module_type)!='undefined') {
|
||||
if(obj.module_type == 'url') {
|
||||
fo_obj.module_type.selectedIndex = 2;
|
||||
if(typeof(obj.url)!='undefined') fo_obj.url.value = obj.url;
|
||||
fo_obj.module_type.disabled = "disabled";
|
||||
xGetElementById('itemAttr2').style.display = 'none';
|
||||
xGetElementById('itemAttr3').style.display = 'block';
|
||||
} else {
|
||||
if(obj.module_type == 'page') fo_obj.module_type.selectedIndex = 1;
|
||||
else fo_obj.module_type.selectedIndex = 1;
|
||||
if(typeof(obj.module_id)!='undefined') fo_obj.module_id.value = obj.module_id;
|
||||
fo_obj.module_type.disabled = "disabled";
|
||||
xGetElementById('itemAttr2').style.display = 'block';
|
||||
xGetElementById('itemAttr3').style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
if(typeof(obj.normal_btn)!='undefined' && obj.normal_btn) {
|
||||
xGetElementById('menu_normal_btn_img').src = obj.normal_btn;
|
||||
xGetElementById('menu_normal_btn_zone').style.display = "block";
|
||||
xGetElementById('itemAttr4').style.display = 'block';
|
||||
fo_obj.normal_btn.value = obj.normal_btn;
|
||||
}
|
||||
if(typeof(obj.hover_btn)!='undefined' && obj.hover_btn) {
|
||||
xGetElementById('menu_hover_btn_img').src = obj.hover_btn;
|
||||
xGetElementById('menu_hover_btn_zone').style.display = "block";
|
||||
xGetElementById('itemAttr4').style.display = 'block';
|
||||
fo_obj.hover_btn.value = obj.hover_btn;
|
||||
}
|
||||
if(typeof(obj.active_btn)!='undefined' && obj.active_btn) {
|
||||
xGetElementById('menu_active_btn_img').src = obj.active_btn;
|
||||
xGetElementById('menu_active_btn_zone').style.display = "block";
|
||||
xGetElementById('itemAttr4').style.display = 'block';
|
||||
fo_obj.active_btn.value = obj.active_btn;
|
||||
}
|
||||
}
|
||||
|
||||
function changeMenuType(obj) {
|
||||
if(obj.selectedIndex == 2) {
|
||||
xGetElementById('itemAttr2').style.display = 'none';
|
||||
xGetElementById('itemAttr3').style.display = 'block';
|
||||
return;
|
||||
}
|
||||
|
||||
xGetElementById('itemAttr2').style.display = 'block';
|
||||
xGetElementById('itemAttr3').style.display = 'none';
|
||||
|
||||
}
|
||||
|
||||
function completeInsertMenuItem(ret_obj) {
|
||||
var xml_file = ret_obj['xml_file'];
|
||||
if(!xml_file) return;
|
||||
|
||||
hideMenuItem();
|
||||
homepageLoadMenuInfo(xml_file);
|
||||
}
|
||||
|
||||
function doHomepageMenuUploadButton(obj) {
|
||||
// 이미지인지 체크
|
||||
if(!/\.(gif|jpg|jpeg|png)$/i.test(obj.value)) return alert(alertImageOnly);
|
||||
|
||||
var fo_obj = xGetElementById("fo_menu");
|
||||
var act = fo_obj.act.value;
|
||||
fo_obj.act.value = "procHomepageMenuUploadButton";
|
||||
fo_obj.target.value = obj.name;
|
||||
fo_obj.submit();
|
||||
fo_obj.act.value = act;
|
||||
fo_obj.target.value = "";
|
||||
}
|
||||
|
||||
/* 메뉴 이미지 업로드 후처리 */
|
||||
function completeMenuUploadButton(target, filename) {
|
||||
var column_name = target.replace(/^menu_/,'');
|
||||
var fo_obj = xGetElementById("fo_menu");
|
||||
var zone_obj = xGetElementById(target+'_zone');
|
||||
var img_obj = xGetElementById(target+'_img');
|
||||
|
||||
fo_obj[column_name].value = filename;
|
||||
|
||||
var img = new Image();
|
||||
img.src = filename;
|
||||
img_obj.src = img.src;
|
||||
zone_obj.style.display = "block";
|
||||
}
|
||||
|
||||
function doDeleteButton(target) {
|
||||
var fo_obj = xGetElementById("fo_menu");
|
||||
|
||||
var col_name = target.replace(/^menu_/,'');
|
||||
|
||||
var params = new Array();
|
||||
params['target'] = target;
|
||||
params['menu_srl'] = fo_obj.menu_srl.value;
|
||||
params['menu_item_srl'] = fo_obj.menu_item_srl.value;
|
||||
params['filename'] = fo_obj[col_name].value;
|
||||
|
||||
var response_tags = new Array('error','message', 'target');
|
||||
|
||||
exec_xml('homepage','procHomepageDeleteButton', params, completeDeleteButton, response_tags);
|
||||
}
|
||||
|
||||
function completeDeleteButton(ret_obj) {
|
||||
var target = ret_obj['target'];
|
||||
|
||||
var column_name = target.replace(/^menu_/,'');
|
||||
var fo_obj = xGetElementById("fo_menu");
|
||||
var zone_obj = xGetElementById(target+'_zone');
|
||||
var img_obj = xGetElementById(target+'_img');
|
||||
fo_obj[column_name].value = "";
|
||||
img_obj.src = "";
|
||||
zone_obj.style.display = "none";
|
||||
}
|
||||
|
||||
/* drag item */
|
||||
xAddEventListener(document, 'mousedown', dragItem);
|
||||
|
||||
var dragObj = null;
|
||||
var dragTarget = null;
|
||||
var dragTmpObjectect = new Array();
|
||||
var dragDisappear = 0;
|
||||
|
||||
function dragItem(evt) {
|
||||
var e = new xEvent(evt);
|
||||
if(!e.target) return;
|
||||
var obj = e.target;
|
||||
while(obj) {
|
||||
if(obj && obj.nodeName == 'DIV' && typeof(obj.id)!='undefined' && obj.id.indexOf('node_')>-1) {
|
||||
dragEnable(obj, evt);
|
||||
return;
|
||||
}
|
||||
obj = obj.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
function getDragTmpObject(obj) {
|
||||
if(!dragTmpObjectect[obj.id]) {
|
||||
tmpObj = xCreateElement('div');
|
||||
tmpObj.id = obj.id + '_tmp';
|
||||
tmpObj.style.display = 'none';
|
||||
tmpObj.style.position = 'absolute';
|
||||
tmpObj.style.opacity = 0.5;
|
||||
tmpObj.style.filter = 'alpha(opacity=50)';
|
||||
tmpObj.style.cursor = "pointer";
|
||||
|
||||
xInnerHtml(tmpObj,xInnerHtml(obj));
|
||||
|
||||
document.body.appendChild(tmpObj);
|
||||
dragTmpObjectect[obj.id] = tmpObj;
|
||||
}
|
||||
return dragTmpObjectect[obj.id];
|
||||
}
|
||||
|
||||
function removeDragTmpObject(obj) {
|
||||
if(!dragTmpObjectect[obj.id]) return;
|
||||
dragTmpObjectect[obj.id] = null;
|
||||
}
|
||||
|
||||
function dragEnable(obj, evt) {
|
||||
if(obj.id.indexOf('node_')<0) return;
|
||||
obj.draggable = true;
|
||||
|
||||
dragObj = obj;
|
||||
dragObj.id = obj.id;
|
||||
|
||||
var e = new xEvent(evt);
|
||||
xPreventDefault(evt);
|
||||
obj.xDPX = e.pageX;
|
||||
obj.xDPY = e.pageY;
|
||||
|
||||
xAddEventListener(document, 'mouseup', dragUp, false);
|
||||
xAddEventListener(document, 'mousemove', dragMove, false);
|
||||
|
||||
var tmpObj = getDragTmpObject(obj);
|
||||
xLeft(tmpObj, e.pageX+1);
|
||||
xTop(tmpObj, e.pageY+1);
|
||||
xWidth(tmpObj, xWidth(obj));
|
||||
xHeight(tmpObj, xHeight(obj));
|
||||
xDisplay(tmpObj, 'block');
|
||||
}
|
||||
|
||||
function dragMove(evt) {
|
||||
if(!dragObj) return;
|
||||
|
||||
var e = new xEvent(evt);
|
||||
var target = e.target;
|
||||
var obj = dragObj;
|
||||
var tobj = getDragTmpObject(obj);
|
||||
xLeft(tobj, e.pageX+1);
|
||||
xTop(tobj, e.pageY+1);
|
||||
|
||||
if(target && target.nodeName == "DIV" && typeof(target.id)!='undefined' && (target.id.indexOf('gab_')>-1||target.id.indexOf('node_')>-1)) {
|
||||
var isChilds = false;
|
||||
var pObj = target.parentNode;
|
||||
while(pObj) {
|
||||
if(pObj.firstChild && typeof(pObj.firstChild.id)!='undefined' && pObj.firstChild.id == dragObj.id) {
|
||||
isChilds = true;
|
||||
break;
|
||||
}
|
||||
pObj = pObj.parentNode;
|
||||
}
|
||||
if(dragTarget) {
|
||||
dragTarget.style.backgroundColor = '';
|
||||
dragTarget.style.borderTop = '0px solid #000';
|
||||
dragTarget = null;
|
||||
}
|
||||
|
||||
if(!isChilds) {
|
||||
dragTarget = target;
|
||||
if(target.id.indexOf('gab_')>-1) {
|
||||
dragTarget.style.borderTop = '1px solid #000';
|
||||
} else {
|
||||
dragTarget.style.backgroundColor = '#DDDDDD';
|
||||
}
|
||||
}
|
||||
} else if(dragTarget) {
|
||||
dragTarget.style.backgroundColor = '';
|
||||
dragTarget.style.borderTop = '0px solid #000';
|
||||
dragTarget = null;
|
||||
}
|
||||
|
||||
xPreventDefault(evt);
|
||||
}
|
||||
|
||||
function dragUp(evt) {
|
||||
if(!dragObj) return;
|
||||
|
||||
if(dragTarget && dragTarget.id != dragObj.id && confirm(confirmMenuMove)) {
|
||||
var mode = null;
|
||||
if(dragTarget.id.indexOf('gab_')>-1) mode = 'move';
|
||||
else mode = 'insert';
|
||||
|
||||
var tmpArr = dragTarget.id.split('_');
|
||||
var parent_srl = tmpArr[1];
|
||||
var source_srl = mode=='move'?tmpArr[2]:0;
|
||||
|
||||
var tmpArr = dragObj.id.split('_');
|
||||
var target_srl = tmpArr[1];
|
||||
|
||||
var params = new Array();
|
||||
params['menu_srl'] = xGetElementById('fo_menu').menu_srl.value;
|
||||
params['mode'] = mode;
|
||||
params['parent_srl'] = parent_srl;
|
||||
params['source_srl'] = source_srl;
|
||||
params['target_srl'] = target_srl;
|
||||
var response_tags = new Array('error','message','xml_file');
|
||||
exec_xml('homepage','procHomepageMenuItemMove', params, completeInsertMenuItem, response_tags);
|
||||
}
|
||||
|
||||
var tobj = getDragTmpObject(dragObj);
|
||||
|
||||
xRemoveEventListener(document, 'mouseup', dragUp, false);
|
||||
xRemoveEventListener(document, 'mousemove', dragMove, false);
|
||||
|
||||
dragDisappear = dragDisapearObject(tobj, dragObj);
|
||||
|
||||
var e = new xEvent(evt);
|
||||
xPreventDefault(evt);
|
||||
dragObj = null;
|
||||
|
||||
if(dragTarget) {
|
||||
dragTarget.style.backgroundColor = '';
|
||||
dragTarget.style.borderTop = '0px solid #000';
|
||||
dragTarget = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 스르르 사라지게 함;;
|
||||
function dragDisapearObject(obj, tobj) {
|
||||
var it = 20;
|
||||
var ib = 20;
|
||||
|
||||
var x = parseInt(xPageX(obj),10);
|
||||
var y = parseInt(xPageY(obj),10);
|
||||
var ldt = (x - parseInt(xPageX(tobj),10)) / ib;
|
||||
var tdt = (y - parseInt(xPageY(tobj),10)) / ib;
|
||||
|
||||
return setInterval(function() {
|
||||
if(ib < 1) {
|
||||
clearInterval(dragDisappear);
|
||||
xDisplay(obj, 'none');
|
||||
removeDragTmpObject(tobj);
|
||||
return;
|
||||
}
|
||||
ib -= 3;
|
||||
x-=ldt;
|
||||
y-=tdt;
|
||||
xLeft(obj, x);
|
||||
xTop(obj, y);
|
||||
}, it/ib);
|
||||
}
|
||||
|
||||
function completeInsertBoard(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
location.reload();
|
||||
}
|
||||
|
||||
function completeInsertPage(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
location.reload();
|
||||
}
|
||||
|
||||
function doDeleteGroup(group_srl) {
|
||||
var fo_obj = xGetElementById('fo_group');
|
||||
fo_obj.group_srl.value = group_srl;
|
||||
procFilter(fo_obj, delete_group);
|
||||
}
|
||||
|
||||
function completeInsertGroup(ret_obj) {
|
||||
location.href = current_url.setQuery('group_srl','');
|
||||
}
|
||||
|
||||
function completeDeleteGroup(ret_obj) {
|
||||
location.href = current_url.setQuery('group_srl','');
|
||||
|
||||
}
|
||||
|
||||
function doSelectAll(obj, key) {
|
||||
var fo_obj = obj.parentNode;
|
||||
while(fo_obj.nodeName != 'FORM') {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
|
||||
for(var i=0;i<fo_obj.length;i++) {
|
||||
var tobj = fo_obj[i];
|
||||
if(tobj.name == key) tobj.checked=true;
|
||||
}
|
||||
}
|
||||
|
||||
function doUnSelectAll(obj, key) {
|
||||
var fo_obj = obj.parentNode;
|
||||
while(fo_obj.nodeName != 'FORM') {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
|
||||
for(var i=0;i<fo_obj.length;i++) {
|
||||
var tobj = fo_obj[i];
|
||||
if(tobj.name == key) tobj.checked = false;
|
||||
}
|
||||
}
|
||||
|
||||
function completeInsertGrant(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var page = ret_obj['page'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
|
||||
alert(message);
|
||||
}
|
||||
|
||||
50
modules/homepage/skins/xe_official/layout.html
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
<!--%import("./css/layout.css",optimized=false)-->
|
||||
<!--%import("./css/default.css",optimized=false)-->
|
||||
<!--%import("./js/homepage.js",optimized=false)-->
|
||||
|
||||
<div class="liquid">
|
||||
<div id="container" class="c3 nce e2">
|
||||
<div id="header">
|
||||
<h1 class="title"><a href="{getUrl('','module','homepage','act','dispHomepageManage')}">{$homepage_info->title}</a></h1>
|
||||
|
||||
<ul class="gnb">
|
||||
<!--@if($logged_info->is_admin == 'Y')--><li><a href="{getUrl('','module','admin','act','dispHomepageAdminContent')}" class="button red"><span>{$lang->cmd_go_homepage_admin}</span></a></li><!--@end-->
|
||||
<li><a href="{getSiteUrl($site_module_info->domain, '', 'mid', $site_module_info->mid)}" class="button blue"><span>{$lang->cmd_go_home}</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr />
|
||||
<div id="body">
|
||||
<div id="content">
|
||||
<div class="section">
|
||||
{$content}
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div id="navigation">
|
||||
<div class="section">
|
||||
<ul class="nav">
|
||||
|
||||
<!--@foreach($lang->cmd_homepage_menus as $key => $val)-->
|
||||
<li <!--@if($key==$act)-->class="active"<!--@end-->><a href="{getUrl('','module','homepage','act', $key)}" <!--@if($act==$val)-->class="selected"<!--@end-->>{$val}</a></li>
|
||||
<!--@end-->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="extra">
|
||||
<div class="section extra1">
|
||||
<img widget="newest_document" skin="blog_newest_document" colorset="layout" list_count="5" subject_cut_size="100"/>
|
||||
</div>
|
||||
<div class="section extra2">
|
||||
<img widget="newest_comment" skin="blog_newest_comment" colorset="layout" list_count="5" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="fClear"></div>
|
||||
</div>
|
||||
<hr />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
63
modules/homepage/skins/xe_official/member_list.html
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
<!--%import("filter/update_member_group.xml")-->
|
||||
|
||||
<h3 class="title">{$lang->cmd_homepage_menus[$act]}</h3>
|
||||
<p class="infoText">{$lang->about_homepage_act[$act]}</p>
|
||||
|
||||
<form method="post" action="./" onsubmit="return procFilter(this,update_member_group);">
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col"><div>{$lang->no}</div></th>
|
||||
<th scope="col" class="quarter_wide"><div>{$lang->user_id}</div></th>
|
||||
<th scope="col"><div>{$lang->user_name}</div></th>
|
||||
<th scope="col"><div>{$lang->nick_name}</div></th>
|
||||
<th scope="col"><div>{$lang->group}</div></th>
|
||||
<th scope="col"><div>{$lang->signup_date}</div></th>
|
||||
<th scope="col"><div>{$lang->last_login}</div></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!--@foreach($member_list as $no => $val)-->
|
||||
{@ $val->group_list = implode(', ', $val->group_list)}
|
||||
<tr class="row{$cycle_idx}">
|
||||
<td class="center number" >{$no}</td>
|
||||
<td><input type="checkbox" name="cart" value="{$val->member_srl}" />{htmlspecialchars($val->user_id)}</td>
|
||||
<td>{htmlspecialchars($val->user_name)}</td>
|
||||
<td>{htmlspecialchars($val->nick_name)}</td>
|
||||
<td class="nowrap">
|
||||
<!--@if($members_groups[$val->member_srl])-->
|
||||
{implode(',',$members_groups[$val->member_srl])}
|
||||
<!--@else-->
|
||||
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td><span class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</span></td>
|
||||
<td class="date center nowrap">{zdate($val->last_login,"Y-m-d H:i:s")}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr class="row1">
|
||||
<td colspan="8">
|
||||
{$lang->do_selected_member}
|
||||
<select name="group_srl">
|
||||
<!--@foreach($group_list as $key=>$val)-->
|
||||
<option value="{$val->group_srl}">{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select><input type="submit" value="{$lang->cmd_modify}" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<!-- 페이지 네비게이션 -->
|
||||
<div class="pagination a1">
|
||||
<a href="{getUrl('page','','module_srl','')}" class="prevEnd">{$lang->first_page}</a>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
<strong>{$page_no}</strong>
|
||||
<!--@else-->
|
||||
<a href="{getUrl('page',$page_no,'module_srl','')}">{$page_no}</a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="nextEnd">{$lang->last_page}</a>
|
||||
</div>
|
||||
158
modules/homepage/skins/xe_official/menu_manage.html
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
<!--%import("./filter/insert_menu_item.xml")-->
|
||||
|
||||
<!--%import("./filter/delete_menu_item.xml")-->
|
||||
<!--%import("./filter/move_up_menu_item.xml")-->
|
||||
<!--%import("./filter/move_down_menu_item.xml")-->
|
||||
|
||||
<h3 class="title">{$lang->cmd_homepage_menus[$act]}</h1>
|
||||
<p class="infoText">{$lang->about_homepage_act[$act]}</p>
|
||||
|
||||
<form method="post" action="./" id="menu_item_form">
|
||||
<input type="hidden" name="menu_item_srl" value="" />
|
||||
</form>
|
||||
|
||||
<form method="post" action="./" id="menu_form">
|
||||
<input type="hidden" name="menu_srl" value="{$menu_info->menu_srl}" />
|
||||
<div id="menu"></div>
|
||||
<br />
|
||||
<a href="#" onclick="homepageAddMenu(); return false;" class="button blue"><span>{$lang->cmd_add_new_menu}</span></a>
|
||||
</form>
|
||||
|
||||
<div id="menuItem">
|
||||
<form id="fo_menu" action="./" method="post" onsubmit="return procFilter(this, insert_menu_item);" class="clear" target="tmp_upload_iframe" enctype="multipart/form-data">
|
||||
<input type="hidden" name="module" value="homepage" />
|
||||
<input type="hidden" name="act" value="procHompageUpdateMenuItem" />
|
||||
<input type="hidden" name="menu_srl" value="{$menu_info->menu_srl}" />
|
||||
<input type="hidden" name="parent_srl" value="" />
|
||||
<input type="hidden" name="menu_item_srl" value="" />
|
||||
<input type="hidden" name="mode" value="" />
|
||||
<input type="hidden" name="target" value="" />
|
||||
<input type="hidden" name="normal_btn" value="" />
|
||||
<input type="hidden" name="hover_btn" value="" />
|
||||
<input type="hidden" name="active_btn" value="" />
|
||||
|
||||
<table cellspacing="0" class="adminTable" id="itemAttr1">
|
||||
{@ $_row = 0;}
|
||||
<!--@foreach($lang_supported as $key => $val)-->
|
||||
<tr>
|
||||
<!--@if($_row==0)--><th scope="row" rowspan="{count($lang_supported)+1}"><div>{$lang->menu_name}</div></th><!--@end-->
|
||||
<th><div>{$val}</div></th>
|
||||
<td><input type="text" name="menu_name_{$key}" value="" class="inputTypeText w400 menu_names"/></td>
|
||||
{@ $_row ++ }
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<td colspan="2">{$lang->about_menu_names}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2"><div>{$lang->cmd_option}</div></th>
|
||||
<td>
|
||||
<input type="checkbox" id="menu_open_window" name="menu_open_window" value="Y" />
|
||||
<label for="menu_open_window">{$lang->menu_open_window}</label>
|
||||
<input type="checkbox" id="menu_expand" name="menu_expand" value="Y" />
|
||||
<label for="menu_expand">{$lang->menu_expand}</label>
|
||||
<p>{$lang->about_menu_option}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2"><div>{$lang->item_group_grant}</div></th>
|
||||
<td>
|
||||
<!--@foreach($group_list as $key=>$val)-->
|
||||
<input type="checkbox" name="group_srls" value="{$key}" id="group_{$key}" <!--@if(is_array($item_info->group_srls)&&in_array($key, $item_info->group_srls))-->checked="checked"<!--@end-->/>
|
||||
<label for="group_{$key}">{$val->title}</label>
|
||||
<!--@end-->
|
||||
<p>{$lang->about_group_grant}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2"><div>{$lang->module_type}</div></th>
|
||||
<td>
|
||||
<select name="module_type" onchange="changeMenuType(this)">
|
||||
<option value="board">{$lang->board}</option>
|
||||
<option value="page">{$lang->page}</option>
|
||||
<option value="url">{$lang->url}</option>
|
||||
</select>
|
||||
<p>{$lang->about_module_type}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" class="adminTable" id="itemAttr2">
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->browser_title}</div></th>
|
||||
<td>
|
||||
<input type="text" name="browser_title" value="" class="inputTypeText w400" />
|
||||
<p>{$lang->about_browser_title}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->module_id}</div></th>
|
||||
<td>
|
||||
<input type="text" name="module_id" value="" class="inputTypeText w400" />
|
||||
<p>{$lang->about_module_id}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" class="adminTable" id="itemAttr3">
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->url}</div></th>
|
||||
<td>
|
||||
http://<input type="text" name="url" value="" class="inputTypeText w400" />
|
||||
<p>{$lang->about_menu_item_url}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" class="adminTable" id="itemAttr4">
|
||||
<tr>
|
||||
<th scope="row" rowspan="4"><div>{$lang->menu_img_btn}</div></th>
|
||||
<th scope="row"><div>{$lang->menu_normal_btn}</div></th>
|
||||
<td>
|
||||
<div id="menu_normal_btn_zone" <!--@if(!$item_info->normal_btn)-->style="display:none;"<!--@end-->>
|
||||
<img src="" alt="" id="menu_normal_btn_img" /><br />
|
||||
<a href="#" onclick="doDeleteButton('menu_normal_btn');return false;" class="button"><span>{$lang->cmd_delete}</span></a>
|
||||
</div>
|
||||
<input type="file" name="menu_normal_btn" value="" class="inputTypeText" onchange="doHomepageMenuUploadButton(this); return false;"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->menu_hover_btn}</div></th>
|
||||
<td>
|
||||
<div id="menu_hover_btn_zone") <!--@if(!$item_info->hover_btn)-->style="display:none;"<!--@end-->>
|
||||
<img src="" alt="" id="menu_hover_btn_img" /><br />
|
||||
<a href="#" onclick="doDeleteButton('menu_hover_btn');return false;" class="button"><span>{$lang->cmd_delete}</span></a>
|
||||
</div>
|
||||
<input type="file" name="menu_hover_btn" value="" class="inputTypeText" onchange="doHomepageMenuUploadButton(this); return false;"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->menu_active_btn}</div></th>
|
||||
<td>
|
||||
<div id="menu_active_btn_zone" <!--@if(!$item_info->active_btn)-->style="display:none;"<!--@end-->>
|
||||
<img src="" alt="" id="menu_active_btn_img" /><br />
|
||||
<a href="#" onclick="doDeleteButton('menu_active_btn');return false;" class="button"><span>{$lang->cmd_delete}</span></a>
|
||||
</div>
|
||||
<input type="file" name="menu_active_btn" value="" class="inputTypeText" onchange="doHomepageMenuUploadButton(this); return false;"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{$lang->about_menu_image_button}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<span class="button green"><input type="submit" value="{$lang->cmd_save}" /></span>
|
||||
<a href="#" onclick="hideMenuItem();return false" class="button red"><span>{$lang->cmd_close}</span></a>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<iframe id='tmp_upload_iframe' name='tmp_upload_iframe' style='display:none;width:1px;height:1px;position:absolute;top:-10px;left:-10px'></iframe>
|
||||
|
||||
<script type="text/javascript">
|
||||
max_menu_depth = {$menu_max_depth};
|
||||
xAddEventListener(window,'load',function() { homepageLoadMenuInfo("{$menu_info->xml_file}"); } );
|
||||
xAddEventListener(document,'mousedown',chkMousePosition);
|
||||
var alertImageOnly = "{$lang->alert_image_only}";
|
||||
var confirmMenuMove = "{$lang->confirm_move}";
|
||||
</script>
|
||||
45
modules/homepage/skins/xe_official/mid_list.html
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<h3 class="title">{$lang->cmd_homepage_menus[$act]}</h1>
|
||||
<p class="infoText">{$lang->about_homepage_act[$act]}</p>
|
||||
|
||||
<!--%import("filter/update_index_mid.xml")-->
|
||||
|
||||
<form method="post" action="./" onsubmit="return procFilter(this,update_index_mid)" class="midDefault">
|
||||
{$lang->cmd_select_index}
|
||||
<select name="index_mid">
|
||||
<!--@foreach($mid_list as $no => $val)-->
|
||||
<option value="{$val->module_srl}" <!--@if($val->module_srl==$homepage_info->module_srl)-->selected="selected"<!--@end-->>{$val->browser_title} ({$val->mid})</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_select}" /></span>
|
||||
</form>
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col"><div>{$lang->module}</div></th>
|
||||
<th scope="col" class="half_wide"><div>{$lang->mid}</div></th>
|
||||
<th scope="col" class="half_wide"><div>{$lang->browser_title}</div></th>
|
||||
<th scope="col"><div>{$lang->regdate}</div></th>
|
||||
<th scope="col"><div>{$lang->cmd_setup}</div></th>
|
||||
<th scope="col"><div>{$lang->cmd_view}</div></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!--@foreach($mid_list as $no => $val)-->
|
||||
<tr class="row{$cycle_idx}">
|
||||
<td class="center">{Context::getLang($val->module)}</td>
|
||||
<td>{htmlspecialchars($val->mid)}</td>
|
||||
<td>{htmlspecialchars($val->browser_title)}</td>
|
||||
<td class="date center nowrap">{zdate($val->regdate,"Y-m-d")}</td>
|
||||
<!--@if($val->module=='board')-->
|
||||
<td class="setup center"><a href="{getUrl('act','dispHomepageBoardInfo','module_srl',$val->module_srl)}">{$lang->cmd_setup}</a></td>
|
||||
<!--@else-->
|
||||
<td class="setup center"><a href="{getUrl('act','dispHomepageBoardInfo','module_srl',$val->module_srl)}">{$lang->cmd_setup}</a></td>
|
||||
<!--@end-->
|
||||
<td class="view center"><a href="{getSiteUrl($site_module_info->domain,'','mid',$val->mid)}" onclick="window.open(this.href); return false;">{$lang->cmd_view}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
35
modules/homepage/skins/xe_official/page_insert.html
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<!--%import("filter/insert_page.xml")-->
|
||||
|
||||
<h3 class="title">{$lang->page} > {$module_info->browser_title}</h1>
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_page)" enctype="multipart/form-data">
|
||||
<input type="hidden" name="module_srl" value="{$module_info->module_srl}" />
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col"><div>{$lang->grant}</div></th>
|
||||
<th scope="col" colspan="3" >{$lang->target}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!--@foreach($grant_list as $key => $val)-->
|
||||
<tr class="row{$cycle_idx}">
|
||||
<th scope="row"><div>{$val->title}</div></th>
|
||||
<td class="wide">
|
||||
<!--@foreach($group_list as $k => $v)-->
|
||||
<input type="checkbox" class="checkbox" name="{$key}" value="{$v->group_srl}" id="grant_{$key}_{$v->group_srl}" <!--@if(is_array($module_info->grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"<!--@end-->/>
|
||||
<label for="grant_{$key}_{$v->group_srl}">{$v->title}</label>
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td class="center selectAll"><a href="#" onclick="doSelectAll(this, '{$key}'); return false;">{$lang->cmd_select_all}</a></td>
|
||||
<td class="center deSelectAll"><a href="#" onclick="doUnSelectAll(this, '{$key}'); return false;">{$lang->cmd_unselect_all}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr class="row2">
|
||||
<td colspan="4" class="right">
|
||||
<span class="button blue"><input type="submit" value="{$lang->cmd_save}" accesskey="s" /></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
45
modules/homepage/tpl/delete.html
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<!--%import("./js/homepage.js",optimized=false)-->
|
||||
<!--%import("./filter/delete_homepage.xml")-->
|
||||
|
||||
<h3>{$lang->homepage} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
|
||||
<div class="infoText">{nl2br($lang->about_homepage)}</div>
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, delete_homepage)" id="fo_homepage">
|
||||
<input type="hidden" name="site_srl" value="{$homepage_info->site_srl}" />
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="2">{$lang->cmd_homepage_delete}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->homepage_title}</div></th>
|
||||
<td>{$homepage_info->title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->domain}</div></th>
|
||||
<td>http://{$homepage_info->domain}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><div>{$lang->homepage_admin}</div></th>
|
||||
<td>
|
||||
<!--@foreach($admin_list as $key => $val)-->
|
||||
{$val->nick_name} ({$val->user_id})<br />
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" class="red">
|
||||
<p>{$lang->about_homepage_delete}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<td colspan="2" class="right">
|
||||
<span class="button red strong"><input type="submit" value="{$lang->cmd_delete}" accesskey="s" /></span></div>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
12
modules/homepage/tpl/filter/delete_homepage.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<filter name="delete_homepage" module="homepage" act="procHomepageAdminDeleteHomepage" confirm_msg_code="confirm_delete">
|
||||
<form>
|
||||
<node target="site_srl" required="true" maxlength="250" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="site_srl" target="site_srl" />
|
||||
</parameter>
|
||||
<response callback_func="completeDeleteHomepage">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||