위젯 검출 정규 표현식을 수정
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2892 201d5d3c-b55e-5fd7-737f-ddc643e51545
|
|
@ -12,9 +12,17 @@
|
|||
* 파일내에서 이루어집니다.
|
||||
**/
|
||||
|
||||
// called_position가 before_module_init 이고 module이 admin이 아닐 경우
|
||||
if($called_position == 'before_module_init' && !$GLOBALS['__counter_addon_called__']) {
|
||||
if($this->module != 'admin') Context::addJsFile('./modules/counter/tpl/js/counter.js');
|
||||
$GLOBALS['__counter_addon_called__'] = true;
|
||||
}
|
||||
// module이 admin이면 패스~ called_position가 before_display_content 이고 module이 admin이 아닐 경우
|
||||
if(
|
||||
Context::get('act')=='procFileDelete' ||
|
||||
Context::get('module')=='admin' ||
|
||||
$called_position != 'before_display_content' ||
|
||||
Context::getRequestMethod()=='XMLRPC' ||
|
||||
$GLOBALS['__counter_addon_called__']
|
||||
) return;
|
||||
|
||||
$GLOBALS['__counter_addon_called__'] = true;
|
||||
|
||||
$oCounterController = &getController('counter');
|
||||
$oCounterController->procCounterExecute();
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
|
||||
// 로그인된 사용자 정보를 구함
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = Context::get('member_srl');
|
||||
$member_srl = Context::get('target_srl');
|
||||
|
||||
// 템플릿에서 사용되기 전의 menu_list를 가져옴
|
||||
$menu_list = $this->get('menu_list');
|
||||
|
|
|
|||
|
|
@ -2,237 +2,7 @@
|
|||
if(!defined("__ZBXE__")) exit();
|
||||
|
||||
/**
|
||||
* @file point.addon.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 포인트 애드온
|
||||
*
|
||||
* 포인트 시스템 모듈에 설정된 내용을 토대로 하여 포인트를 부여/차감하고,
|
||||
* 다운로드를 금지시키고,
|
||||
* 회원 이름 앞에 레벨 아이콘을 표시한다.
|
||||
* @brief 포인트 애드온은 포인트 모듈의 trigger 기능으로 인하여 더 이상 사용하지 않음
|
||||
**/
|
||||
|
||||
// 관리자 모듈이면 패스~
|
||||
if(Context::get('module')=='admin') return;
|
||||
|
||||
// 로그인 상태일때만 실행
|
||||
$logged_info = Context::get('logged_info');
|
||||
if(!$logged_info->member_srl) return;
|
||||
|
||||
// point action cache file을 가져와서 현재 속한 캐시파일인지 확인
|
||||
$act_cache_file = "./files/cache/point.act.cache";
|
||||
$buff = FileHandler::readFile($act_cache_file);
|
||||
if(strpos($buff,$this->act)===false) return;
|
||||
|
||||
// point 모듈 정보 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('point');
|
||||
|
||||
// 현재 로그인 사용자의 포인트를 가져옴
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$oPointModel = &getModel('point');
|
||||
$cur_point = $oPointModel->getPoint($member_srl, true);
|
||||
|
||||
// 파일다운로드를 제외한 action은 called_position가 before_module_proc일때 실행
|
||||
if($called_position == 'after_module_proc') {
|
||||
|
||||
// 게시글 작성
|
||||
if(strpos($config->insert_document_act,$this->act)!==false) {
|
||||
if(!$this->toBool()) return;
|
||||
$document_srl = $this->get('document_srl');
|
||||
|
||||
$oDocumentModel = &getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
|
||||
// 신규 글인지 체크
|
||||
if($oDocument->get('regdate')!=$oDocument->get('last_update')) return;
|
||||
$module_srl = $oDocument->get('module_srl');
|
||||
|
||||
// 포인트를 구해옴
|
||||
$point = $config->module_point[$module_srl]['insert_document'];
|
||||
if($point == null) $point = $config->insert_document;
|
||||
|
||||
// 포인트 증감
|
||||
$cur_point += $point;
|
||||
$oPointController = &getController('point');
|
||||
$oPointController->setPoint($member_srl,$cur_point);
|
||||
|
||||
// 게시글 삭제
|
||||
} elseif(strpos($config->delete_document_act,$this->act)!==false) {
|
||||
if(!$this->toBool()) return;
|
||||
$target_member_srl = Context::get('_point_target_member_srl');
|
||||
if(!$target_member_srl) return;
|
||||
|
||||
$module_srl = $this->module_srl;
|
||||
|
||||
// 포인트를 구해옴
|
||||
$point = $config->module_point[$module_srl]['insert_document'];
|
||||
if($point == null) $point = $config->insert_document;
|
||||
|
||||
// 포인트 차감
|
||||
$cur_point = $oPointModel->getPoint($target_member_srl, true);
|
||||
$cur_point -= $point;
|
||||
|
||||
$oPointController = &getController('point');
|
||||
$oPointController->setPoint($target_member_srl,$cur_point);
|
||||
|
||||
// 댓글 작성
|
||||
} elseif(strpos($config->insert_comment_act,$this->act)!==false) {
|
||||
$comment_srl = $this->get('comment_srl');
|
||||
$oCommentModel = &getModel('comment');
|
||||
$comment = $oCommentModel->getComment($comment_srl);
|
||||
|
||||
// 이미 존재하는 댓글인지 체크
|
||||
if($comment->last_update) return;
|
||||
|
||||
// 포인트를 구해옴
|
||||
$module_srl = $comment->module_srl;
|
||||
|
||||
// 포인트를 구해옴
|
||||
$point = $config->module_point[$module_srl]['insert_comment'];
|
||||
if($point == null) $point = $config->insert_comment;
|
||||
|
||||
// 포인트 증감
|
||||
$cur_point += $point;
|
||||
$oPointController = &getController('point');
|
||||
$oPointController->setPoint($member_srl,$cur_point);
|
||||
|
||||
|
||||
// 댓글 삭제
|
||||
} elseif(strpos($config->delete_comment_act,$this->act)!==false) {
|
||||
if(!$this->toBool()) return;
|
||||
$target_member_srl = Context::get('_point_target_member_srl');
|
||||
if(!$target_member_srl) return;
|
||||
|
||||
// 포인트를 구해옴
|
||||
$module_srl = $this->module_srl;
|
||||
|
||||
// 포인트를 구해옴
|
||||
$point = $config->module_point[$module_srl]['insert_comment'];
|
||||
if($point == null) $point = $config->insert_comment;
|
||||
|
||||
// 포인트 증감
|
||||
$cur_point = $oPointModel->getPoint($target_member_srl, true);
|
||||
$cur_point -= $point;
|
||||
|
||||
$oPointController = &getController('point');
|
||||
$oPointController->setPoint($target_member_srl,$cur_point);
|
||||
|
||||
// 파일업로드
|
||||
} elseif(strpos($config->upload_file_act,$this->act)!==false) {
|
||||
if(!$output->toBool()||!$output->get('file_srl')) return;
|
||||
$file_srl = $output->get('file_srl');
|
||||
|
||||
$oFileModel = &getModel('file');
|
||||
$file_info = $oFileModel->getFile($file_srl);
|
||||
|
||||
$module_srl = $this->module_srl;
|
||||
|
||||
// 포인트를 구해옴
|
||||
$point = $config->module_point[$module_srl]['upload_file'];
|
||||
if($point == null) $point = $config->upload_file;
|
||||
|
||||
// 포인트 증감
|
||||
$cur_point += $point;
|
||||
$oPointController = &getController('point');
|
||||
$oPointController->setPoint($member_srl,$cur_point);
|
||||
|
||||
// 파일삭제
|
||||
} elseif(strpos($config->delete_file_act,$this->act)!==false) {
|
||||
// 파일 정보를 구해옴
|
||||
$file_srl = Context::get('file_srl');
|
||||
if(!$file_srl) return;
|
||||
$target_member_srl = Context::get('_point_target_member_srl');
|
||||
if(!$target_member_srl) return;
|
||||
|
||||
$module_srl = $this->module_srl;
|
||||
|
||||
$target_member_srl = Context::get('_point_target_member_srl');
|
||||
if(!$target_member_srl) return;
|
||||
|
||||
// 포인트를 구해옴
|
||||
$point = $config->module_point[$module_srl]['upload_file'];
|
||||
if($point == null) $point = $config->upload_file;
|
||||
|
||||
// 포인트 차감
|
||||
$cur_point = $oPointModel->getPoint($target_member_srl, true);
|
||||
$cur_point -= $point;
|
||||
$oPointController = &getController('point');
|
||||
$oPointController->setPoint($target_member_srl,$cur_point);
|
||||
|
||||
// 회원 가입일 경우
|
||||
} elseif(strpos($config->signup_act,$this->act)!==false) {
|
||||
// 가입이 제대로 되었는지 체크
|
||||
if(!$this->toBool()||!$this->get('member_srl')) return;
|
||||
$member_srl = $this->get('member_srl');
|
||||
|
||||
// 포인트를 구해옴
|
||||
$point = $config->module_point[$module_srl]['signup'];
|
||||
if($point == null) $point = $config->signup;
|
||||
|
||||
// 포인트 증감
|
||||
$cur_point += $point;
|
||||
$oPointController = &getController('point');
|
||||
$oPointController->setPoint($member_srl,$cur_point);
|
||||
}
|
||||
|
||||
// 파일다운로드는 before_module_proc 일때 체크
|
||||
} else if($called_position == "before_module_proc") {
|
||||
|
||||
// 파일다운로드
|
||||
if(strpos($config->download_file_act,$this->act)!==false) {
|
||||
// 파일 정보를 구해옴
|
||||
$file_srl = Context::get('file_srl');
|
||||
if(!$file_srl) return;
|
||||
|
||||
$oFileModel = &getModel('file');
|
||||
$file_info = $oFileModel->getFile($file_srl);
|
||||
if($file_info->file_srl != $file_srl) return;
|
||||
|
||||
$module_srl = $file_info->module_srl;
|
||||
|
||||
// 포인트를 구해옴
|
||||
$point = $config->module_point[$module_srl]['download_file'];
|
||||
if($point == null) $point = $config->download_file;
|
||||
|
||||
// 포인트가 0보다 작고 포인트가 없으면 파일 다운로드가 안되도록 했다면 오류
|
||||
if($cur_point + $point < 0 && $config->disable_download == 'Y') {
|
||||
$this->stop('msg_cannot_download');
|
||||
} else {
|
||||
// 포인트 차감
|
||||
$cur_point += $point;
|
||||
$oPointController = &getController('point');
|
||||
$oPointController->setPoint($member_srl,$cur_point);
|
||||
}
|
||||
|
||||
// 글 삭제일 경우 대상 글의 사용자 번호 저장
|
||||
} elseif(strpos($config->delete_document_act,$this->act)!==false) {
|
||||
$document_srl = Context::get('document_srl');
|
||||
$oDocumentModel = &getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
$target_member_srl = $oDocument->get('member_srl');
|
||||
if($target_member_srl) Context::set('_point_target_member_srl', $target_member_srl);
|
||||
|
||||
// 댓글 삭제일 경우 대상 댓글의 사용자 번호 저장
|
||||
} elseif(strpos($config->delete_comment_act,$this->act)!==false) {
|
||||
$comment_srl = Context::get('comment_srl');
|
||||
$oCommentModel = &getModel('comment');
|
||||
$comment = $oCommentModel->getComment($comment_srl);
|
||||
$target_member_srl = $comment->member_srl;
|
||||
if($target_member_srl) Context::set('_point_target_member_srl', $target_member_srl);
|
||||
|
||||
// 파일삭제일 경우 대상 파일의 정보에서 사용자 번호 저장
|
||||
} elseif(strpos($config->delete_file_act,$this->act)!==false) {
|
||||
// 파일 정보를 구해옴
|
||||
$file_srl = Context::get('file_srl');
|
||||
if(!$file_srl) return;
|
||||
|
||||
$oFileModel = &getModel('file');
|
||||
$file_info = $oFileModel->getFile($file_srl);
|
||||
if($file_info->file_srl != $file_srl) return;
|
||||
|
||||
$target_member_srl = $file_info->member_srl;
|
||||
if($target_member_srl) Context::set('_point_target_member_srl', $target_member_srl);
|
||||
}
|
||||
}
|
||||
return;
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -74,18 +74,18 @@
|
|||
else $this->lang_type = $this->db_info->lang_type;
|
||||
|
||||
// 등록된 기본 언어파일 찾기
|
||||
$lang_files = FileHandler::readDir('./common/lang');
|
||||
$langs = file('./common/lang/lang.info');
|
||||
$accept_lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
||||
foreach($lang_files as $key => $val) {
|
||||
list($lang_prefix) = explode('.',$val);
|
||||
$lang_supported[] = $lang_prefix;
|
||||
foreach($langs as $val) {
|
||||
list($lang_prefix, $lang_text) = explode(',',$val);
|
||||
$lang_supported[$lang_prefix] = $lang_text;
|
||||
if(!$this->lang_type && ereg($lang_prefix, strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']))) {
|
||||
$this->lang_type = $lang_prefix;
|
||||
setcookie('lang_type', $this->lang_type, time()+60*60*24*365, '/');
|
||||
}
|
||||
}
|
||||
|
||||
if(!in_array($this->lang_type, $lang_supported)) $this->lang_type = $this->db_info->lang_type;
|
||||
if(!in_array($this->lang_type, array_keys($lang_supported))) $this->lang_type = $this->db_info->lang_type;
|
||||
if(!$this->lang_type) $this->lang_type = "en";
|
||||
|
||||
Context::set('lang_supported', $lang_supported);
|
||||
|
|
@ -282,6 +282,7 @@
|
|||
function setLangType($lang_type = 'ko') {
|
||||
$oContext = &Context::getInstance();
|
||||
$oContext->_setLangType($lang_type);
|
||||
$_SESSION['lang_type'] = $lang_type;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -534,8 +534,8 @@
|
|||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($name == '*') {
|
||||
$column_list[] = '*';
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[] = sprintf('"%s" as "%s"', $name, $alias);
|
||||
else $column_list[] = sprintf('"%s"',$name);
|
||||
|
|
|
|||
|
|
@ -484,8 +484,8 @@
|
|||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($name == '*') {
|
||||
$column_list[] = '*';
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[] = sprintf('`%s` as `%s`', $name, $alias);
|
||||
else $column_list[] = sprintf('`%s`',$name);
|
||||
|
|
|
|||
|
|
@ -493,8 +493,8 @@
|
|||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($name == '*') {
|
||||
$column_list[] = '*';
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[] = sprintf('`%s` as `%s`', $name, $alias);
|
||||
else $column_list[] = sprintf('`%s`',$name);
|
||||
|
|
|
|||
|
|
@ -505,8 +505,8 @@
|
|||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($name == '*') {
|
||||
$column_list[] = '*';
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[] = sprintf('%s as %s', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
|
|
|
|||
|
|
@ -546,8 +546,8 @@
|
|||
foreach($output->columns as $key => $val) {
|
||||
$name = $val['name'];
|
||||
$alias = $val['alias'];
|
||||
if($name == '*') {
|
||||
$column_list[] = '*';
|
||||
if(substr($name,-1) == '*') {
|
||||
$column_list[] = $name;
|
||||
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
|
||||
if($alias) $column_list[] = sprintf('%s as %s', $name, $alias);
|
||||
else $column_list[] = sprintf('%s',$name);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
// 요청방식에 따라 출력을 별도로
|
||||
if(Context::getResponseMethod()!="XMLRPC") {
|
||||
|
||||
|
||||
Context::set('content', $content);
|
||||
|
||||
// 레이아웃을 컴파일
|
||||
|
|
@ -92,6 +92,10 @@
|
|||
$content = preg_replace('!(href|src)=("|\'){0,1}(commons|modules|widgets|layouts|addons|files)!is', '\\1=\\2'.$path.'\\3', $content);
|
||||
$content = preg_replace('!(href|src)=("|\'){0,1}\.\/([a-zA-Z0-9\_^\/]+)\/!is', '\\1=\\2'.$path.'\\3/', $content);
|
||||
|
||||
// 출력하기 전에 trigger 호출 (after)
|
||||
ModuleHandler::triggerCall('display', 'after', $content);
|
||||
|
||||
|
||||
if($this->gz_enabled) print ob_gzhandler($content, 5);
|
||||
else print $content;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -209,6 +209,23 @@
|
|||
break;
|
||||
}
|
||||
|
||||
// 이미지 정보가 정해진 크기보다 크면 크기를 바꿈 (%를 구해서 처리)
|
||||
if($resize_width > 0 && $width >= $resize_width) $width_per = $resize_width / $width;
|
||||
else $width_per = $width / $resize_width;
|
||||
|
||||
if($resize_height>0 && $height >= $resize_height) $height_per = $resize_height / $height;
|
||||
else $height_per = $height / $resize_height;
|
||||
|
||||
if($thumbnail_type == 'ratio') {
|
||||
$per = $width_per;
|
||||
$resize_height = $height * $per;
|
||||
} else {
|
||||
if($width_per < $height_per) $per = $height_per;
|
||||
else $per = $width_per;
|
||||
}
|
||||
|
||||
if(!$per) $per = 1;
|
||||
|
||||
// 타겟 파일의 type을 구함
|
||||
if(!$target_type) $target_type = $type;
|
||||
$target_type = strtolower($target_type);
|
||||
|
|
@ -220,24 +237,6 @@
|
|||
$white = @imagecolorallocate($thumb, 255,255,255);
|
||||
@imagefilledrectangle($thumb,0,0,$resize_width-1,$resize_height-1,$white);
|
||||
|
||||
// 이미지 정보가 정해진 크기보다 크면 크기를 바꿈 (%를 구해서 처리)
|
||||
if($resize_width > 0 && $width >= $resize_width) $width_per = $resize_width / $width;
|
||||
else $width_per = $width / $resize_width;
|
||||
|
||||
if($resize_height>0 && $height >= $resize_height) $height_per = $resize_height / $height;
|
||||
else $height_per = $height / $resize_height;
|
||||
|
||||
if($thumbnail_type == 'ratio') {
|
||||
if($width_per > $height_per) $per = $height_per;
|
||||
else $per = $width_per;
|
||||
} else {
|
||||
if($width_per < $height_per) $per = $height_per;
|
||||
else $per = $width_per;
|
||||
|
||||
}
|
||||
|
||||
if(!$per) $per = 1;
|
||||
|
||||
// 원본 이미지의 타입으로 임시 이미지 생성
|
||||
switch($type) {
|
||||
case 'gif' :
|
||||
|
|
@ -269,8 +268,13 @@
|
|||
$new_width = (int)($width * $per);
|
||||
$new_height = (int)($height * $per);
|
||||
|
||||
$x = (int)($resize_width/2 - $new_width/2);
|
||||
$y = (int)($resize_height/2 - $new_height/2);
|
||||
if($thumbnail_type == 'crop') {
|
||||
$x = (int)($resize_width/2 - $new_width/2);
|
||||
$y = (int)($resize_height/2 - $new_height/2);
|
||||
} else {
|
||||
$x = 0;
|
||||
$y = 0;
|
||||
}
|
||||
|
||||
if($source) {
|
||||
if(function_exists('imagecopyresampled')) @imagecopyresampled($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height);
|
||||
|
|
|
|||
|
|
@ -107,6 +107,13 @@
|
|||
|
||||
// mid값이 있을 경우 mid값을 세팅
|
||||
if($this->mid) Context::set('mid', $this->mid, true);
|
||||
|
||||
// 현재 모듈의 정보를 세팅
|
||||
Context::set('current_module_info', $module_info);
|
||||
|
||||
// 실제 동작을 하기 전에 trigger 호출
|
||||
$output = ModuleHandler::triggerCall('display', 'before', $content);
|
||||
if(!$output->toBool()) die($output->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -336,5 +343,45 @@
|
|||
// 객체 리턴
|
||||
return $GLOBALS['_loaded_module'][$module][$type][$kind];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief trigger_name, called_position을 주고 trigger 호출
|
||||
**/
|
||||
function triggerCall($trigger_name, $called_position, &$obj) {
|
||||
// 설치가 안되어 있다면 trigger call을 하지 않고 바로 return
|
||||
if(!Context::isInstalled()) return new Object();
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
$cache_dir = sprintf("./files/cache/triggers/");
|
||||
if(!is_dir($cache_dir)) FileHandler::makeDir($cache_dir);
|
||||
|
||||
$cache_file = sprintf("%s%s.%s", $cache_dir, $trigger_name, $called_position);
|
||||
|
||||
if(!@file_exists($cache_file)) {
|
||||
$triggers = $oModuleModel->getTriggers($trigger_name, $called_position);
|
||||
FileHandler::writeFile($cache_file, serialize($triggers));
|
||||
} else {
|
||||
$buff = FileHandler::readFile($cache_file);
|
||||
$triggers = unserialize($buff);
|
||||
}
|
||||
|
||||
if(!$triggers || !count($triggers)) return new Object();
|
||||
|
||||
foreach($triggers as $item) {
|
||||
$module = $item->module;
|
||||
$type = $item->type;
|
||||
$called_method = $item->called_method;
|
||||
|
||||
$oModule = null;
|
||||
$oModule = &getModule($module, $type);
|
||||
if(!$oModule || !method_exists($oModule, $called_method)) continue;
|
||||
|
||||
$output = $oModule->{$called_method}($obj);
|
||||
if(!$output->toBool()) return $output;
|
||||
}
|
||||
|
||||
return new Object();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -96,10 +96,13 @@
|
|||
// css 일경우 background:url() 변경
|
||||
if($type == "css") $str = $this->replaceCssPath($file, $str);
|
||||
|
||||
$content_buff .= $str."\r\n";
|
||||
$content_buff .= $str."\n";
|
||||
}
|
||||
if($type == "css") $content_buff = '@charset "utf-8";'."\n".$content_buff;
|
||||
|
||||
if($type!="css" && Context::isGzEnabled()) $content_buff = ob_gzhandler($content_buff, 5);
|
||||
|
||||
|
||||
$content_file = eregi_replace("\.php$","",$filename);
|
||||
$content_filename = str_replace($this->cache_path, '', $content_file);
|
||||
|
||||
|
|
@ -142,6 +145,8 @@ EndOfBuff;
|
|||
|
||||
$str = preg_replace('!\/([^\/]*)\/\.\.\/!is','/', $str);
|
||||
|
||||
$str = preg_replace('!@charset([^;]*?);!is','',$str);
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,6 +41,9 @@
|
|||
|
||||
if(!is_dir(sprintf('./widgets/%s/',$widget))) return;
|
||||
|
||||
$cache_path = './files/cache/widget_cache/';
|
||||
if(!is_dir($cache_path)) FileHandler::makeDir($cache_path);
|
||||
|
||||
// $widget의 객체를 받음
|
||||
$oWidget = WidgetHandler::getObject($widget);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,167 +1,211 @@
|
|||
/*
|
||||
http://www.hedgerwow.com/360/dhtml/css-round-button/demo.php
|
||||
*/
|
||||
|
||||
a.button, span.button, del.button {
|
||||
display:-moz-inline-box;
|
||||
display:inline-block;
|
||||
cursor:pointer;
|
||||
border:none;
|
||||
a.button, span.button, del.button{
|
||||
|
||||
display:-moz-inline-box;
|
||||
display:inline-block;
|
||||
cursor:pointer;
|
||||
border:none;
|
||||
font-size:0;
|
||||
line-height:0;
|
||||
|
||||
/*
|
||||
for Safari, read this first
|
||||
http://creativebits.org/webdev/safari_background_repeat_bug_fix
|
||||
*/
|
||||
background-position:0 -3px;
|
||||
background-repeat:no-repeat;
|
||||
height:24px;
|
||||
text-decoration:none;
|
||||
color:#2e523b;
|
||||
font-style:normal;
|
||||
margin:0 6px 0px 0;
|
||||
padding:0 10px 0 0;
|
||||
vertical-align:middle;
|
||||
|
||||
|
||||
/*
|
||||
for Safari, read this first
|
||||
http://creativebits.org/webdev/safari_background_repeat_bug_fix
|
||||
*/
|
||||
background-position:0 0;
|
||||
background-repeat:no-repeat;
|
||||
height:30px;
|
||||
text-decoration:none;
|
||||
color:#2e523b;
|
||||
font-style:normal;
|
||||
margin:0 6px 0px 0;
|
||||
padding:0 10px 0 0;
|
||||
vertical-align:middle;
|
||||
|
||||
padding-top:-2px;
|
||||
position:relative;
|
||||
_width:10px;
|
||||
_overflow-y:hidden;
|
||||
_position:relative;
|
||||
_top:-4px;
|
||||
_width:10px;
|
||||
_overflow-y:hidden;
|
||||
}
|
||||
*:first-child+html a.button, *:first-child+html span.button,*:first-child+html del.button {
|
||||
position:relative;
|
||||
top:-4px;
|
||||
}
|
||||
|
||||
a.button, span.button, del.button, a.button span, span.button button, span.button input, del.button span {
|
||||
|
||||
|
||||
a.button, span.button, del.button,
|
||||
a.button span, span.button button, span.button input, del.button span{
|
||||
background-image:url(../tpl/images/form_buttons.png);
|
||||
_background-image:url(../tpl/images/form_buttons.gif);
|
||||
}
|
||||
|
||||
|
||||
a.button span, span.button button, span.button input, del.button span {
|
||||
white-space:nowrap;
|
||||
cursor:pointer;
|
||||
a.button span, span.button button, span.button input, del.button span{
|
||||
|
||||
white-space:nowrap;
|
||||
cursor:pointer;
|
||||
color:#222;
|
||||
display:-moz-inline-box;
|
||||
display:inline-block;
|
||||
line-height:1;
|
||||
display:-moz-inline-box;
|
||||
display:inline-block;
|
||||
line-height:1;
|
||||
letter-spacing:0 !important;
|
||||
font-family:"Arial" !important;
|
||||
font-size:12px !important;
|
||||
font-style:normal;
|
||||
background-color:transparent;
|
||||
background-position:100% -3px;
|
||||
background-repeat:no-repeat;
|
||||
height:24px;
|
||||
padding:4px 11px 0 7px;
|
||||
margin:0 -18px 0 6px;
|
||||
border:none;
|
||||
vertical-align:text-top;
|
||||
zoom:1;
|
||||
_position:relative;
|
||||
_padding:3px 13px 0 4px;
|
||||
_margin:0 -10px 0 4px;
|
||||
_display:block;
|
||||
_top:0;
|
||||
_right:-5px;
|
||||
background-position:100% 0;
|
||||
background-repeat:no-repeat;
|
||||
height:30px;
|
||||
padding:8px 20px 0 10px;
|
||||
margin:0 -16px 0 10px;
|
||||
border:none;
|
||||
zoom:1;
|
||||
_position:relative;
|
||||
_padding-left:0px;
|
||||
_padding-right:12px;
|
||||
_margin-right:-10px;
|
||||
_display:block;
|
||||
_right:-5px;
|
||||
|
||||
}
|
||||
|
||||
*:first-child+html a.button span, span.button button, span.button input, del.button span { padding-top:6px; }
|
||||
|
||||
|
||||
span.button button {
|
||||
line-height:2.5;/*Opera need this*/
|
||||
span.button button{
|
||||
line-height:2.5;/*Opera need this*/
|
||||
}
|
||||
|
||||
html.safari a.button span, html.safari del.button span {
|
||||
line-height:1.3;
|
||||
html.safari a.button span,
|
||||
html.safari del.button span{
|
||||
line-height:1.3;
|
||||
}
|
||||
|
||||
html.safari span.button button {
|
||||
line-height:2.6;
|
||||
html.safari span.button button{
|
||||
line-height:2.6;
|
||||
}
|
||||
|
||||
html.safari a.button:focus, html.safari span.button button:focus {
|
||||
html.safari a.button:focus,
|
||||
html.safari span.button button:focus{
|
||||
outline:none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
del.button{
|
||||
/* cursor:not-allowed; */
|
||||
background-position:0 -123px;
|
||||
|
||||
/* cursor:not-allowed; */
|
||||
background-position:0 -120px;
|
||||
|
||||
}
|
||||
|
||||
del.button span {
|
||||
cursor:default;
|
||||
del.button span{
|
||||
cursor:default;
|
||||
color:#aaa !important;
|
||||
background-position:100% -123px;
|
||||
background-position:100% -120px;
|
||||
}
|
||||
|
||||
a.button span {
|
||||
_padding-top:7px;
|
||||
}
|
||||
*:first-child+html a.button span { padding-top:7px; }
|
||||
|
||||
span.button button, span.button input {
|
||||
padding:0 6px 0 0;
|
||||
line-height:2.5;/*Opera need this*/
|
||||
span.button button, span.button input{
|
||||
padding-top:0px;
|
||||
line-height:2.5;/*Opera need this*/
|
||||
}
|
||||
|
||||
|
||||
/** optional **/
|
||||
/*
|
||||
a.button:visited{
|
||||
color:#aaa;
|
||||
color:#aaa;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
/*Hover Style*/
|
||||
a.button:hover, span.button:hover, a.button:focus, a.dom-button-focus, span.button-behavior-hover {
|
||||
background-position:0 -63px;
|
||||
color:#222;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
a.button:hover span, span.button:hover input, span.button:hover button, a.button:focus span, span.button-behavior-hover button, span.button-behavior-hover input {
|
||||
background-position:100% -63px;
|
||||
a.button:hover,
|
||||
span.button:hover,
|
||||
a.button:focus,
|
||||
|
||||
a.dom-button-focus,
|
||||
span.button-behavior-hover{
|
||||
background-position:0 -60px;
|
||||
color:#222;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
|
||||
a.button:active, a.button:focus span {
|
||||
color:#444;
|
||||
|
||||
|
||||
|
||||
a.button:hover span,
|
||||
span.button:hover button,
|
||||
a.button:focus span,
|
||||
|
||||
span.button-behavior-hover button,
|
||||
span.button-behavior-hover input{
|
||||
background-position:100% -60px;
|
||||
}
|
||||
|
||||
del.button-behavior-hover, del.button:hover {
|
||||
background-position:0 -183px;
|
||||
/* cursor:not-allowed; */
|
||||
|
||||
a.button:active, a.button:focus span{
|
||||
color:#444;
|
||||
}
|
||||
|
||||
del.button-behavior-hover span, del.button:hover span {
|
||||
background-position:100% -183px;
|
||||
/* cursor:not-allowed; */
|
||||
|
||||
|
||||
|
||||
del.button-behavior-hover, del.button:hover{
|
||||
background-position:0 -180px;
|
||||
/* cursor:not-allowed; */
|
||||
}
|
||||
|
||||
|
||||
del.button-behavior-hover span, del.button:hover span{
|
||||
background-position:100% -180px;
|
||||
/* cursor:not-allowed; */
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*Optional hack for IE6 to simulate :hover selector*/
|
||||
|
||||
span.button button, del.button span, span.button input {
|
||||
_behavior:expression(
|
||||
(function(el){
|
||||
if( typeof( behavior_onMouseEnter) == 'undefined'){
|
||||
behavior_onMouseEnter = function(el) {
|
||||
var dEl = this.parentNode;
|
||||
var sClass = dEl.className ;
|
||||
dEl.__defaultClassName = sClass ;
|
||||
dEl.className = sClass + ' button-behavior-hover';
|
||||
this.setCapture();
|
||||
};
|
||||
span.button button, del.button span, span.button input{
|
||||
|
||||
|
||||
|
||||
_behavior:expression(
|
||||
(function(el){
|
||||
|
||||
if( typeof( behavior_onMouseEnter) == 'undefined'){
|
||||
|
||||
|
||||
behavior_onMouseEnter = function(el){
|
||||
|
||||
var dEl = this.parentNode;
|
||||
var sClass = dEl.className ;
|
||||
dEl.__defaultClassName = sClass ;
|
||||
dEl.className = sClass + ' button-behavior-hover';
|
||||
this.setCapture();
|
||||
};
|
||||
|
||||
behavior_onMouseLeave = function(el) {
|
||||
var dEl = this.parentNode;
|
||||
dEl.className = dEl.__defaultClassName ;
|
||||
dEl.__defaultClassName = undefined;
|
||||
this.releaseCapture();
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
el.runtimeStyle.behavior = 'none';
|
||||
el.onmouseenter = behavior_onMouseEnter;
|
||||
el.onmouseleave = behavior_onMouseLeave;
|
||||
|
||||
|
||||
})(this));
|
||||
|
||||
|
||||
|
||||
behavior_onMouseLeave = function(el) {
|
||||
var dEl = this.parentNode;
|
||||
dEl.className = dEl.__defaultClassName ;
|
||||
dEl.__defaultClassName = undefined;
|
||||
this.releaseCapture();
|
||||
};
|
||||
};
|
||||
|
||||
el.runtimeStyle.behavior = 'none';
|
||||
el.onmouseenter = behavior_onMouseEnter;
|
||||
el.onmouseleave = behavior_onMouseLeave;
|
||||
}
|
||||
)(this));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ IE7 & IE6 & Below
|
|||
html { width:100%; }
|
||||
body { margin:0; font-size:.75em; font-family:sans-serif;}
|
||||
img { border:none; }
|
||||
label { cursor:pointer; position:relative; left:5px; }
|
||||
label { cursor:pointer; }
|
||||
form { margin:0; padding:0; }
|
||||
|
||||
.iePngFix { behavior:url(./common/js/iePngFix.htc); }
|
||||
|
|
@ -66,15 +66,16 @@ a.bold { font-weight:bold; }
|
|||
.folder_closer { display: none; }
|
||||
.folder_area { display: none; }
|
||||
|
||||
.zbxe_widget_output { background-image:url(../tpl/images/widget_text.gif) no-repeat center bottom; display:block;}
|
||||
.member_signature { margin-top:10px; border:1px solid #DDDDDD; padding:10px; }
|
||||
.zbxe_widget_output { background:url(../tpl/images/widget_text.gif) no-repeat center bottom; display:block;}
|
||||
.member_signature { margin-top:10px; border:1px solid #DDDDDD; padding:10px; overflow:hidden;}
|
||||
.member_profile_image { float:left; margin-right:10px; }
|
||||
|
||||
#waitingforserverresponse { display:inline; border:2px solid #444444; background-color:#FFFFFF; padding:15px 20px 13px 20px; font-weight:bold; color:#444444; top:40px; left:40px; position:absolute; z-index:100; visibility:hidden; }
|
||||
#fororiginalimageareabg { z-index:1001; background-color:#FFFFFF; width:100%; height:100%; top:0px; left:0px; position:relative; padding:20px 10px 10px 10px; border:8px solid #DDDDDD; }
|
||||
#fororiginalimagearea { visibility:hidden; padding:0px; margin:0px; width:100%; height:100%; top:0px; left:0px; position:absolute; z-index:1000; text-align:left; overflow:hidden; }
|
||||
#fororiginalimage { z-index:1002; }
|
||||
#closeOriginalImageBtn { position:absolute; right:8px; top:5px; cursor:pointer; width:50px; height:12px; z-index:1003; }
|
||||
#membermenuarea { position:absolute; left:0px; top:0px; z-index:1003; visibility:hidden; border:2px solid #D9D9D9; background-color:#FFFFFF; padding:0; }
|
||||
#membermenuarea .box { border:1px solid #CACACA; background-color:#FFFFFF; padding:7px; line-height:22px;}
|
||||
#membermenuarea .item { color:#333333; cursor:pointer; margin:0; padding:3px 0 3px 18px; white-space:nowrap; height:22px;}
|
||||
#membermenuarea .item_on { color:#333333; font-weight:bold; margin:0; cursor:pointer; padding:3px 0 3px 18px; height:22px; letter-spacing:-1px; white-space:nowrap;}
|
||||
#popup_menu_area { position:absolute; left:0px; top:0px; z-index:1003; visibility:hidden; border:2px solid #D9D9D9; background-color:#FFFFFF; padding:0; }
|
||||
#popup_menu_area .box { border:1px solid #CACACA; background-color:#FFFFFF; padding:7px; line-height:22px;}
|
||||
#popup_menu_area .item { color:#333333; cursor:pointer; margin:0; padding:3px 0 3px 0; white-space:nowrap; height:22px;}
|
||||
#popup_menu_area .item_on { color:#333333; font-weight:bold; margin:0; cursor:pointer; padding:3px 0 3px 0; height:22px; letter-spacing:-1px; white-space:nowrap;}
|
||||
|
|
|
|||
|
|
@ -456,68 +456,91 @@ function origImageDragMouseMove(evt) {
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief 이름을 클릭하였을 경우 메뉴를 보여주는 함수
|
||||
* 이름 클릭시 MemberModel::getMemberMenu 를 호출하여 그 결과를 보여줌 (사용자의 속성에 따라 메뉴가 달라지고 애드온의 연결을 하기 위해서임)
|
||||
* @brief 이름, 게시글등을 클릭하였을 경우 팝업 메뉴를 보여주는 함수
|
||||
**/
|
||||
xAddEventListener(document, 'click', chkMemberMenu);
|
||||
xAddEventListener(window, 'load', function() { setMemberMenuObjCursor(xGetElementsByTagName("div")); xGetElementsByTagName("span"); } );
|
||||
var loaded_member_menu_list = new Array();
|
||||
xAddEventListener(document, 'click', chkPopupMenu);
|
||||
var loaded_popup_menu_list = new Array();
|
||||
|
||||
// className = "member_*" 일 경우의 object가 클릭되면 해당 회원의 메뉴를 출력함
|
||||
function chkMemberMenu(evt) {
|
||||
var area = xGetElementById("membermenuarea");
|
||||
// 클릭 이벤트 발생시 이벤트가 일어난 대상을 검사하여 적절한 규칙에 맞으면 처리
|
||||
function chkPopupMenu(evt) {
|
||||
// 이전에 호출되었을지 모르는 팝업메뉴 숨김
|
||||
var area = xGetElementById("popup_menu_area");
|
||||
if(!area) return;
|
||||
if(area.style.visibility!="hidden") area.style.visibility="hidden";
|
||||
|
||||
// 이벤트 대상이 없으면 무시
|
||||
var e = new xEvent(evt);
|
||||
if(!e) return;
|
||||
|
||||
// 대상의 객체 구함
|
||||
var obj = e.target;
|
||||
while(obj) {
|
||||
if(obj && obj.className && obj.className.search("member_")!=-1) break;
|
||||
if(!obj) return;
|
||||
|
||||
// obj의 nodeName이 div나 span이 아니면 나올대까지 상위를 찾음
|
||||
if(obj && obj.nodeName != 'DIV' && obj.nodeName != 'SPAN') {
|
||||
obj = obj.parentNode;
|
||||
}
|
||||
if(!obj || !obj.className || obj.className.search("member_")==-1) {
|
||||
return;
|
||||
if(!obj || (obj.nodeName != 'DIV' && obj.nodeName != 'SPAN')) return;
|
||||
|
||||
// 객체의 className값을 구함
|
||||
var class_name = obj.className;
|
||||
if(!class_name) return;
|
||||
|
||||
// className을 분리
|
||||
var class_name_list = class_name.split(' ');
|
||||
var menu_id = '';
|
||||
var menu_id_regx = /^([a-zA-Z]+)_([0-9]+)$/ig;
|
||||
for(var i in class_name_list) {
|
||||
if(menu_id_regx.test(class_name_list[i])) {
|
||||
menu_id = class_name_list[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!menu_id) return;
|
||||
|
||||
if(obj.className.indexOf('member_-1')>=0) return;
|
||||
// module명과 대상 번호가 없으면 return
|
||||
var tmp_arr = menu_id.split('_');
|
||||
var module_name = tmp_arr[0];
|
||||
var target_srl = tmp_arr[1];
|
||||
if(!module_name || !target_srl || target_srl < 1) return;
|
||||
|
||||
var member_srl = parseInt(obj.className.replace(/member_([0-9]+)/ig,'$1').replace(/([^0-9]*)/ig,''),10);
|
||||
if(!member_srl) return;
|
||||
|
||||
// 현재 글의 mid, module를 구함
|
||||
var mid = current_mid;
|
||||
// action이름을 규칙에 맞게 작성
|
||||
var action_name = "get" + module_name.substr(0,1).toUpperCase() + module_name.substr(1,module_name.length-1) + "Menu";
|
||||
|
||||
// 서버에 메뉴를 요청
|
||||
var params = new Array();
|
||||
params["member_srl"] = member_srl;
|
||||
params["cur_mid"] = mid;
|
||||
params["target_srl"] = target_srl;
|
||||
params["cur_mid"] = current_mid;
|
||||
params["cur_act"] = current_url.getQuery('act');
|
||||
params["menu_id"] = menu_id;
|
||||
params["page_x"] = e.pageX;
|
||||
params["page_y"] = e.pageY;
|
||||
|
||||
var response_tags = new Array("error","message","menu_list");
|
||||
|
||||
if(loaded_member_menu_list[member_srl]) {
|
||||
params["menu_list"] = loaded_member_menu_list[member_srl];
|
||||
displayMemberMenu(params, response_tags, params);
|
||||
if(loaded_popup_menu_list[menu_id]) {
|
||||
params["menu_list"] = loaded_popup_menu_list[menu_id];
|
||||
displayPopupMenu(params, response_tags, params);
|
||||
return;
|
||||
}
|
||||
|
||||
show_waiting_message = false;
|
||||
exec_xml("member", "getMemberMenu", params, displayMemberMenu, response_tags, params);
|
||||
exec_xml(module_name, action_name, params, displayPopupMenu, response_tags, params);
|
||||
show_waiting_message = true;
|
||||
}
|
||||
|
||||
function displayMemberMenu(ret_obj, response_tags, params) {
|
||||
var area = xGetElementById("membermenuarea");
|
||||
function displayPopupMenu(ret_obj, response_tags, params) {
|
||||
var area = xGetElementById("popup_menu_area");
|
||||
|
||||
var menu_list = ret_obj['menu_list'];
|
||||
var member_srl = params["member_srl"];
|
||||
|
||||
var target_srl = params["target_srl"];
|
||||
var menu_id = params["menu_id"];
|
||||
|
||||
var html = "";
|
||||
|
||||
if(loaded_member_menu_list[member_srl]) {
|
||||
html = loaded_member_menu_list[member_srl];
|
||||
if(loaded_popup_menu_list[menu_id]) {
|
||||
html = loaded_popup_menu_list[menu_id];
|
||||
} else {
|
||||
var infos = menu_list.split("\n");
|
||||
if(infos.length) {
|
||||
|
|
@ -532,19 +555,19 @@ function displayMemberMenu(ret_obj, response_tags, params) {
|
|||
var func = info_str.substr(pos+1, info_str.length).trim();
|
||||
|
||||
var className = "item";
|
||||
//if(i==infos.length-1) className = "item";
|
||||
|
||||
if(!str || !func) continue;
|
||||
|
||||
html += "<span class=\""+className+"\" onmouseover=\"this.className='"+className+"_on'\" onmouseout=\"this.className='"+className+"'\" style=\"background:url("+icon+") no-repeat left center;\" onclick=\""+func+"\">"+str+"</span><br />";
|
||||
if(icon) html += "<span class=\""+className+"\" onmouseover=\"this.className='"+className+"_on'\" onmouseout=\"this.className='"+className+"'\" style=\"background:url("+icon+") no-repeat left center; padding-left:18px;\" onclick=\""+func+"\">"+str+"</span><br />";
|
||||
else html += "<span class=\""+className+"\" onmouseover=\"this.className='"+className+"_on'\" onmouseout=\"this.className='"+className+"'\" onclick=\""+func+"\">"+str+"</span><br />";
|
||||
}
|
||||
}
|
||||
loaded_member_menu_list[member_srl] = html;
|
||||
loaded_popup_menu_list[menu_id] = html;
|
||||
}
|
||||
|
||||
if(html) {
|
||||
// 레이어 출력
|
||||
xInnerHtml('membermenuarea', "<div class=\"box\">"+html+"</div>");
|
||||
xInnerHtml('popup_menu_area', "<div class=\"box\">"+html+"</div>");
|
||||
xWidth(area, xWidth(area));
|
||||
xLeft(area, params["page_x"]);
|
||||
xTop(area, params["page_y"]);
|
||||
|
|
@ -554,19 +577,24 @@ function displayMemberMenu(ret_obj, response_tags, params) {
|
|||
}
|
||||
}
|
||||
|
||||
// className = "member_*" 의 object의 cursor를 pointer로 본경
|
||||
function setMemberMenuObjCursor(obj) {
|
||||
for (var i = 0; i < obj.length; ++i) {
|
||||
var node = obj[i];
|
||||
if(node.className && node.className.search(/member_([0-9]+)/ig)!=-1) {
|
||||
var member_srl = parseInt(node.className.replace(/member_([0-9]+)/ig,'$1').replace(/([^0-9]*)/ig,''),10);
|
||||
if(member_srl<1) continue;
|
||||
node.style.cursor = "pointer";
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief 추천/비추천,스크랩,신고기능등 특정 srl에 대한 특정 module/action을 호출하는 함수
|
||||
**/
|
||||
function doCallModuleAction(module, action, target_srl) {
|
||||
var params = new Array();
|
||||
params['target_srl'] = target_srl;
|
||||
params['cur_mid'] = current_mid;
|
||||
exec_xml(module, action, params, completeCallModuleAction);
|
||||
}
|
||||
|
||||
// 날짜 선택 (달력 열기)
|
||||
function completeCallModuleAction(ret_obj, response_tags) {
|
||||
if(ret_obj['message']!='success') alert(ret_obj['message']);
|
||||
location.reload();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 날짜 선택 (달력 열기)
|
||||
**/
|
||||
function open_calendar(fo_id, day_str, callback_func) {
|
||||
if(typeof(day_str)=="undefined") day_str = "";
|
||||
|
||||
|
|
@ -601,8 +629,9 @@ function doDocumentPreview(obj) {
|
|||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
if(fo_obj.nodeName != "FORM") return;
|
||||
var editor_sequence = fo_obj.getAttribute('editor_sequence');
|
||||
|
||||
var content = fo_obj.content.value;
|
||||
var content = editorGetContent(editor_sequence);
|
||||
|
||||
var win = window.open("","previewDocument","toolbars=no,width=700px;height=800px,scrollbars=yes,resizable=yes");
|
||||
|
||||
|
|
@ -626,6 +655,49 @@ function doDocumentPreview(obj) {
|
|||
}
|
||||
}
|
||||
|
||||
/* 게시글 저장 */
|
||||
function doDocumentSave(obj) {
|
||||
var editor_sequence = obj.form.getAttribute('editor_sequence');
|
||||
var prev_content = editorRelKeys[editor_sequence]['content'].value;
|
||||
if(typeof(editor_sequence)!='undefined' && editor_sequence && typeof(editorRelKeys)!='undefined' && typeof(editorGetContent)=='function') {
|
||||
var content = editorGetContent(editor_sequence);
|
||||
editorRelKeys[editor_sequence]['content'].value = content;
|
||||
}
|
||||
|
||||
var oFilter = new XmlJsFilter(obj.form, "member", "procMemberSaveDocument", completeDocumentSave);
|
||||
oFilter.addResponseItem("error");
|
||||
oFilter.addResponseItem("message");
|
||||
oFilter.proc();
|
||||
|
||||
editorRelKeys[editor_sequence]['content'].value = prev_content;
|
||||
return false;
|
||||
}
|
||||
|
||||
function completeDocumentSave(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
}
|
||||
|
||||
/* 저장된 게시글 불러오기 */
|
||||
var objForSavedDoc = null;
|
||||
function doDocumentLoad(obj) {
|
||||
// 저장된 게시글 목록 불러오기
|
||||
objForSavedDoc = obj.form;
|
||||
popopen(request_uri.setQuery('module','member').setQuery('act','dispSavedDocumentList'));
|
||||
}
|
||||
|
||||
/* 저장된 게시글의 선택 */
|
||||
function doDocumentSelect(document_srl) {
|
||||
if(!opener || !opener.objForSavedDoc) {
|
||||
window.close();
|
||||
return;
|
||||
}
|
||||
|
||||
// 게시글을 가져와서 등록하기
|
||||
opener.location.href = opener.current_url.setQuery('document_srl', document_srl);
|
||||
window.close();
|
||||
}
|
||||
|
||||
|
||||
/* 스킨 정보 */
|
||||
function viewSkinInfo(module, skin) {
|
||||
popopen("./?module=module&act=dispModuleSkinInfo&selected_module="+module+"&skin="+skin, 'SkinInfo');
|
||||
|
|
|
|||
|
|
@ -239,7 +239,7 @@ function drawNode(parent_node, menu_id) {
|
|||
|
||||
|
||||
// html 작성
|
||||
html += '<div id="'+zone_id+'" style="margin:0px;font-size:9pt;">';
|
||||
html += '<div id="'+zone_id+'" style="margin:0px;font-size:9pt;white-space:nowrap;overflow:hidden;">';
|
||||
|
||||
if(hasChild) html+= '<span style="cursor:pointer;" onclick="toggleFolder(\''+zone_id+'\');return false;">';
|
||||
else html+= '<span>';
|
||||
|
|
|
|||
|
|
@ -21,11 +21,15 @@
|
|||
$lang->cmd_comment_registration = 'Add Comment';
|
||||
$lang->cmd_insert = 'Insert';
|
||||
$lang->cmd_save = 'Save';
|
||||
$lang->cmd_load = '불러오기';
|
||||
$lang->cmd_input = 'Input';
|
||||
$lang->cmd_search = 'Search';
|
||||
$lang->cmd_cancel = 'Cancel';
|
||||
$lang->cmd_back = 'Go Back';
|
||||
$lang->cmd_vote = 'Vote';
|
||||
$lang->cmd_vote_down = '비추천';
|
||||
$lang->cmd_declare = '신고';
|
||||
$lang->cmd_declared_list = '신고 목록';
|
||||
$lang->cmd_copy = 'Copy';
|
||||
$lang->cmd_move = 'Move';
|
||||
$lang->cmd_move_up = 'Up';
|
||||
|
|
@ -37,12 +41,14 @@
|
|||
$lang->cmd_select = 'Select';
|
||||
$lang->cmd_select_all = 'Select All';
|
||||
$lang->cmd_unselect_all = 'Deselect All';
|
||||
$lang->cmd_reverse_all = 'Reverse';
|
||||
$lang->cmd_close_all = 'Close All';
|
||||
$lang->cmd_open_all = 'Open All';
|
||||
$lang->cmd_reload = 'Reload';
|
||||
$lang->cmd_close = 'Close';
|
||||
$lang->cmd_open = 'Open';
|
||||
$lang->cmd_setup = 'Configure';
|
||||
$lang->cmd_addition_setup = '추가 설정';
|
||||
$lang->cmd_option = 'Option';
|
||||
$lang->cmd_apply = 'Apply';
|
||||
$lang->cmd_open_calendar = 'Select a Date';
|
||||
|
|
@ -52,6 +58,7 @@
|
|||
$lang->cmd_preview = 'Preview';
|
||||
$lang->cmd_reset = 'Reset';
|
||||
$lang->cmd_remake_cache = "Re-create cache file";
|
||||
$lang->cmd_publish = "발행";
|
||||
|
||||
$lang->enable = 'Enable';
|
||||
$lang->disable = 'Disable';
|
||||
|
|
@ -78,6 +85,8 @@
|
|||
$lang->browser_title = 'Browser Title';
|
||||
$lang->title = 'Subject';
|
||||
$lang->title_content = 'Subject+Content';
|
||||
$lang->topic = '주제';
|
||||
$lang->replies = '응답';
|
||||
$lang->content = 'Content';
|
||||
$lang->document = 'Article';
|
||||
$lang->comment = 'Comment';
|
||||
|
|
@ -120,6 +129,7 @@
|
|||
$lang->date = 'Date';
|
||||
$lang->regdate = 'Registered Date';
|
||||
$lang->last_update = 'Latest Update';
|
||||
$lang->last_post = '최근 등록';
|
||||
$lang->signup_date = 'Join Date';
|
||||
$lang->last_login = 'Latest Login';
|
||||
$lang->first_page = 'First Page';
|
||||
|
|
@ -168,6 +178,7 @@
|
|||
$lang->msg_module_is_not_standalone = 'Requested module cannot be executed independently';
|
||||
|
||||
$lang->success_registed = 'Registered successfully';
|
||||
$lang->success_declared = '신고되었습니다';
|
||||
$lang->success_updated = 'Updated successfully';
|
||||
$lang->success_deleted = 'Deleted successfully';
|
||||
$lang->success_voted = 'Voted successfully';
|
||||
|
|
@ -175,11 +186,13 @@
|
|||
$lang->success_sended = 'Sent successfully';
|
||||
$lang->success_reset = 'Reset successfully';
|
||||
$lang->success_leaved = 'All member data have been deleted completely.';
|
||||
$lang->success_saved = '저장되었습니다';
|
||||
|
||||
$lang->fail_to_delete = 'Could not be deleted';
|
||||
$lang->fail_to_move = 'Could not be moved';
|
||||
|
||||
$lang->failed_voted = 'Could not vote';
|
||||
$lang->failed_declared = '신고를 하실 수 없습니다';
|
||||
$lang->fail_to_delete_have_children = 'Please try again after removing replies first';
|
||||
|
||||
$lang->confirm_submit = 'Are you sure to submit?';
|
||||
|
|
|
|||
|
|
@ -21,11 +21,15 @@
|
|||
$lang->cmd_comment_registration = 'Agregar commentarios';
|
||||
$lang->cmd_insert = 'Insertar';
|
||||
$lang->cmd_save = 'Guardar';
|
||||
$lang->cmd_load = '불러오기';
|
||||
$lang->cmd_input = 'Ingresar';
|
||||
$lang->cmd_search = 'Buscar';
|
||||
$lang->cmd_cancel = 'Cancelar';
|
||||
$lang->cmd_back = 'Atrás';
|
||||
$lang->cmd_vote = 'Recomendar';
|
||||
$lang->cmd_vote_down = '비추천';
|
||||
$lang->cmd_declare = '신고';
|
||||
$lang->cmd_declared_list = '신고 목록';
|
||||
$lang->cmd_copy = 'Copia';
|
||||
$lang->cmd_move = 'Mover';
|
||||
$lang->cmd_move_up = 'Arriba';
|
||||
|
|
@ -43,6 +47,7 @@
|
|||
$lang->cmd_close = 'Cerrar';
|
||||
$lang->cmd_open = 'Abrir';
|
||||
$lang->cmd_setup = 'Configuración';
|
||||
$lang->cmd_addition_setup = '추가 설정';
|
||||
$lang->cmd_option = 'Opción';
|
||||
$lang->cmd_apply = 'Aplicar';
|
||||
$lang->cmd_open_calendar = 'Abrir el calendario';
|
||||
|
|
@ -51,6 +56,8 @@
|
|||
$lang->cmd_scrap = 'Scrap';
|
||||
$lang->cmd_preview = 'Previo';
|
||||
$lang->cmd_reset = 'Rehacer';
|
||||
$lang->cmd_remake_cache = "캐시파일 재생성";
|
||||
$lang->cmd_publish = "발행";
|
||||
|
||||
$lang->enable = 'Activar';
|
||||
$lang->disable = 'Desactivar';
|
||||
|
|
@ -77,6 +84,8 @@
|
|||
$lang->browser_title = 'Título del navegador';
|
||||
$lang->title = 'Título';
|
||||
$lang->title_content = 'Título+Contenido';
|
||||
$lang->topic = '주제';
|
||||
$lang->replies = '응답';
|
||||
$lang->content = 'Contenidos';
|
||||
$lang->document = 'Documentos';
|
||||
$lang->comment = 'Commentarios';
|
||||
|
|
@ -119,6 +128,7 @@
|
|||
$lang->date = 'Fecha';
|
||||
$lang->regdate = 'Fecha publicada';
|
||||
$lang->last_update = 'Ultima actualización';
|
||||
$lang->last_post = '최근 등록';
|
||||
$lang->signup_date = 'Fecha del registro';
|
||||
$lang->last_login = 'Ultima conección';
|
||||
$lang->first_page = 'Primera página';
|
||||
|
|
@ -167,6 +177,7 @@
|
|||
$lang->msg_module_is_not_standalone = 'Módulo solicitado no puede ser ejecutado independientemente';
|
||||
|
||||
$lang->success_registed = 'Agregado con éxito';
|
||||
$lang->success_declared = '신고되었습니다';
|
||||
$lang->success_updated = 'Actualizado con éxito';
|
||||
$lang->success_deleted = 'Boarrado con éxito';
|
||||
$lang->success_voted = 'Recomendado con éxito';
|
||||
|
|
@ -174,11 +185,13 @@
|
|||
$lang->success_sended = 'Enviado con éxito';
|
||||
$lang->success_reset = 'Reajustado con éxito';
|
||||
$lang->success_leaved = 'Abandonado con éxito';
|
||||
$lang->success_saved = '저장되었습니다';
|
||||
|
||||
$lang->fail_to_delete = 'No puede ser borrado';
|
||||
$lang->fail_to_move = 'No puede ser movido';
|
||||
|
||||
$lang->failed_voted = 'No puede ser recomendado';
|
||||
$lang->failed_declared = '신고를 하실 수 없습니다';
|
||||
$lang->fail_to_delete_have_children = 'No puede ser borrado, ya que el mensaje posee respuestas ';
|
||||
|
||||
$lang->confirm_submit = '¿Está seguro que desea enviar?';
|
||||
|
|
|
|||
|
|
@ -21,11 +21,15 @@
|
|||
$lang->cmd_comment_registration = 'Ajouter le Commentaire';
|
||||
$lang->cmd_insert = 'Insérer';
|
||||
$lang->cmd_save = 'Economiser';
|
||||
$lang->cmd_load = '불러오기';
|
||||
$lang->cmd_input = 'Entrer';
|
||||
$lang->cmd_search = 'Rechercher';
|
||||
$lang->cmd_cancel = 'Decommander';
|
||||
$lang->cmd_back = 'Retour';
|
||||
$lang->cmd_vote = 'Voter';
|
||||
$lang->cmd_vote_down = '비추천';
|
||||
$lang->cmd_declare = '신고';
|
||||
$lang->cmd_declared_list = '신고 목록';
|
||||
$lang->cmd_copy = 'Copie';
|
||||
$lang->cmd_move = 'Deplacer';
|
||||
$lang->cmd_move_up = 'Relever';
|
||||
|
|
@ -43,11 +47,17 @@
|
|||
$lang->cmd_close = 'Fermer';
|
||||
$lang->cmd_open = 'Cloturer';
|
||||
$lang->cmd_setup = 'Configurer';
|
||||
$lang->cmd_addition_setup = '추가 설정';
|
||||
$lang->cmd_option = 'Option';
|
||||
$lang->cmd_apply = 'Appliquer';
|
||||
$lang->cmd_open_calendar = 'Choisir la Date';
|
||||
$lang->cmd_send = 'Envoyer';
|
||||
$lang->cmd_print = 'Imprimer';
|
||||
$lang->cmd_scrap = '스크랩';
|
||||
$lang->cmd_preview = '미리 보기';
|
||||
$lang->cmd_reset = '초기화';
|
||||
$lang->cmd_remake_cache = "캐시파일 재생성";
|
||||
$lang->cmd_publish = "발행";
|
||||
|
||||
$lang->enable = 'Permettre';
|
||||
$lang->disable = 'Neutraliser';
|
||||
|
|
@ -74,6 +84,8 @@
|
|||
$lang->browser_title = 'Titre de Navigateur';
|
||||
$lang->title = 'Titre';
|
||||
$lang->title_content = 'Titre + Contenu';
|
||||
$lang->topic = '주제';
|
||||
$lang->replies = '응답';
|
||||
$lang->content = 'Contenu';
|
||||
$lang->document = 'Article';
|
||||
$lang->comment = 'Commentaire';
|
||||
|
|
@ -115,6 +127,7 @@
|
|||
$lang->date = 'Date';
|
||||
$lang->regdate = 'Date d\'Enregistrement';
|
||||
$lang->last_update = 'La Dernière Mise a Jour';
|
||||
$lang->last_post = '최근 등록';
|
||||
$lang->signup_date = 'Date d\'Enregistrement';
|
||||
$lang->last_login = 'La Dernière Ouverture';
|
||||
$lang->first_page = 'Première Page';
|
||||
|
|
@ -163,6 +176,7 @@
|
|||
$lang->msg_module_is_not_standalone = 'Le module demandé ne peut pas être exécuté indépendamment.';
|
||||
|
||||
$lang->success_registed = 'L\'enregistrement a été avec succès exécuté.';
|
||||
$lang->success_declared = '신고되었습니다';
|
||||
$lang->success_updated = 'Avec succès mis a jour.';
|
||||
$lang->success_deleted = 'Avec succès supprime';
|
||||
$lang->success_voted = 'Avec succès voté';
|
||||
|
|
@ -170,11 +184,13 @@
|
|||
$lang->success_sended = 'Avec succès envoyé';
|
||||
$lang->success_reset = 'Avec succès remisé';
|
||||
$lang->success_leaved = 'Avec succès fait cécession';
|
||||
$lang->success_saved = '저장되었습니다';
|
||||
|
||||
$lang->fail_to_delete = 'N\'a pas pu être supprimé.';
|
||||
$lang->fail_to_move = 'N\'a pas pu être déplacé';
|
||||
|
||||
$lang->failed_voted = 'La demande de voter a échoué';
|
||||
$lang->failed_declared = '신고를 하실 수 없습니다';
|
||||
$lang->fail_to_delete_have_children = 'Une ou plusieurs reponses existent et ne pourraient pas être supprimees ainsi';
|
||||
|
||||
$lang->confirm_submit = 'Etes-vous sur vous voulez-vous soumettre?';
|
||||
|
|
|
|||
|
|
@ -21,11 +21,15 @@
|
|||
$lang->cmd_comment_registration = 'コメント登録';
|
||||
$lang->cmd_insert = '挿入';
|
||||
$lang->cmd_save = '保存';
|
||||
$lang->cmd_load = '불러오기';
|
||||
$lang->cmd_input = '入力';
|
||||
$lang->cmd_search = '検索';
|
||||
$lang->cmd_cancel = 'キャンセル';
|
||||
$lang->cmd_back = '戻る';
|
||||
$lang->cmd_vote = '推薦';
|
||||
$lang->cmd_vote_down = '비추천';
|
||||
$lang->cmd_declare = '신고';
|
||||
$lang->cmd_declared_list = '신고 목록';
|
||||
$lang->cmd_copy = 'コピー';
|
||||
$lang->cmd_move = '移動';
|
||||
$lang->cmd_move_up = '上へ';
|
||||
|
|
@ -43,6 +47,7 @@
|
|||
$lang->cmd_close = '閉じる';
|
||||
$lang->cmd_open = '開く';
|
||||
$lang->cmd_setup = '設定';
|
||||
$lang->cmd_addition_setup = '추가 설정';
|
||||
$lang->cmd_apply = '適用';
|
||||
$lang->cmd_option = 'オプション';
|
||||
$lang->cmd_open_calendar = 'カレンダーを開く';
|
||||
|
|
@ -52,6 +57,7 @@
|
|||
$lang->cmd_preview = 'プレビュー';
|
||||
$lang->cmd_reset = '初期化';
|
||||
$lang->cmd_remake_cache = "キャッシュファイル再生成";
|
||||
$lang->cmd_publish = "발행";
|
||||
|
||||
$lang->enable = '可能';
|
||||
$lang->disable = '不可';
|
||||
|
|
@ -78,6 +84,8 @@
|
|||
$lang->browser_title = 'ブラウザタイトル';
|
||||
$lang->title = 'タイトル';
|
||||
$lang->title_content = 'タイトル+内容';
|
||||
$lang->topic = '주제';
|
||||
$lang->replies = '응답';
|
||||
$lang->content = '内容';
|
||||
$lang->document = '書き込み';
|
||||
$lang->comment = 'コメント';
|
||||
|
|
@ -120,6 +128,7 @@
|
|||
$lang->date = '年月日';
|
||||
$lang->regdate = '登録日';
|
||||
$lang->last_update = '最近修正日';
|
||||
$lang->last_post = '최근 등록';
|
||||
$lang->signup_date = '加入日';
|
||||
$lang->last_login = '最近ログイン';
|
||||
$lang->first_page = '最初のページ';
|
||||
|
|
@ -168,6 +177,7 @@
|
|||
$lang->msg_module_is_not_standalone = 'このモジュールはスタンドアローンでは作動しません。';
|
||||
|
||||
$lang->success_registed = '登録しました。';
|
||||
$lang->success_declared = '신고되었습니다';
|
||||
$lang->success_updated = '修正しました。';
|
||||
$lang->success_deleted = '削除しました。';
|
||||
$lang->success_voted = '推薦しました。';
|
||||
|
|
@ -175,11 +185,13 @@
|
|||
$lang->success_sended = '送信しました。';
|
||||
$lang->success_reset = '初期化しました。';
|
||||
$lang->success_leaved = '脱会しました。';
|
||||
$lang->success_saved = '저장되었습니다';
|
||||
|
||||
$lang->fail_to_delete = '削除に失敗しました。';
|
||||
$lang->fail_to_move = '移動に失敗しました。';
|
||||
|
||||
$lang->failed_voted = '推薦できません。';
|
||||
$lang->failed_declared = '신고를 하실 수 없습니다';
|
||||
$lang->fail_to_delete_have_children = '返信の書き込みがあり、削除できません。';
|
||||
|
||||
$lang->confirm_submit = '登録しますか?';
|
||||
|
|
|
|||
|
|
@ -21,11 +21,15 @@
|
|||
$lang->cmd_comment_registration = '댓글 등록';
|
||||
$lang->cmd_insert = '추가';
|
||||
$lang->cmd_save = '저장';
|
||||
$lang->cmd_load = '불러오기';
|
||||
$lang->cmd_input = '입력';
|
||||
$lang->cmd_search = '검색';
|
||||
$lang->cmd_cancel = '취소';
|
||||
$lang->cmd_back = '돌아가기';
|
||||
$lang->cmd_vote = '추천';
|
||||
$lang->cmd_vote_down = '비추천';
|
||||
$lang->cmd_declare = '신고';
|
||||
$lang->cmd_declared_list = '신고 목록';
|
||||
$lang->cmd_copy = '복사';
|
||||
$lang->cmd_move = '이동';
|
||||
$lang->cmd_move_up = '위로';
|
||||
|
|
@ -44,6 +48,7 @@
|
|||
$lang->cmd_close = '닫기';
|
||||
$lang->cmd_open = '열기';
|
||||
$lang->cmd_setup = '설정';
|
||||
$lang->cmd_addition_setup = '추가 설정';
|
||||
$lang->cmd_option = '옵션';
|
||||
$lang->cmd_apply = '적용';
|
||||
$lang->cmd_open_calendar = '날짜 선택';
|
||||
|
|
@ -53,6 +58,7 @@
|
|||
$lang->cmd_preview = '미리 보기';
|
||||
$lang->cmd_reset = '초기화';
|
||||
$lang->cmd_remake_cache = "캐시파일 재생성";
|
||||
$lang->cmd_publish = "발행";
|
||||
|
||||
$lang->enable = '가능';
|
||||
$lang->disable = '불가능';
|
||||
|
|
@ -79,6 +85,8 @@
|
|||
$lang->browser_title = '브라우저 제목';
|
||||
$lang->title = '제목';
|
||||
$lang->title_content = '제목+내용';
|
||||
$lang->topic = '주제';
|
||||
$lang->replies = '응답';
|
||||
$lang->content = '내용';
|
||||
$lang->document = '게시물';
|
||||
$lang->comment = '댓글';
|
||||
|
|
@ -120,7 +128,8 @@
|
|||
$lang->member_count = '회원수';
|
||||
$lang->date = '날짜';
|
||||
$lang->regdate = '등록일';
|
||||
$lang->last_update = '최근수정일';
|
||||
$lang->last_update = '최근 수정일';
|
||||
$lang->last_post = '최근 등록';
|
||||
$lang->signup_date = '가입일';
|
||||
$lang->last_login = '최근로그인';
|
||||
$lang->first_page = '첫페이지';
|
||||
|
|
@ -169,6 +178,7 @@
|
|||
$lang->msg_module_is_not_standalone = '요청하신 모듈은 독립적으로 동작할 수가 없습니다';
|
||||
|
||||
$lang->success_registed = '등록되었습니다';
|
||||
$lang->success_declared = '신고되었습니다';
|
||||
$lang->success_updated = '수정되었습니다';
|
||||
$lang->success_deleted = '삭제되었습니다';
|
||||
$lang->success_voted = '추천되었습니다';
|
||||
|
|
@ -176,11 +186,13 @@
|
|||
$lang->success_sended = '발송되었습니다';
|
||||
$lang->success_reset = '초기화되었습니다';
|
||||
$lang->success_leaved = '탈퇴되었습니다';
|
||||
$lang->success_saved = '저장되었습니다';
|
||||
|
||||
$lang->fail_to_delete = '삭제 실패하였습니다';
|
||||
$lang->fail_to_move = '이동 실패하였습니다';
|
||||
|
||||
$lang->failed_voted = '추천하실 수 없습니다';
|
||||
$lang->failed_declared = '신고를 하실 수 없습니다';
|
||||
$lang->fail_to_delete_have_children = '답글이 있어서 삭제할 수 없습니다';
|
||||
|
||||
$lang->confirm_submit = '등록하시겠습니까?';
|
||||
|
|
|
|||
5
common/lang/lang.info
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
ko,한국어
|
||||
en,English
|
||||
zh-CN,中文
|
||||
jp,日本語
|
||||
es,Español
|
||||
|
|
@ -21,11 +21,15 @@
|
|||
$lang->cmd_comment_registration = '提交评论';
|
||||
$lang->cmd_insert = '添加';
|
||||
$lang->cmd_save = '保存';
|
||||
$lang->cmd_load = '불러오기';
|
||||
$lang->cmd_input = '输入';
|
||||
$lang->cmd_search = '搜索';
|
||||
$lang->cmd_cancel = '取消';
|
||||
$lang->cmd_back = '返回';
|
||||
$lang->cmd_vote = '推荐';
|
||||
$lang->cmd_vote_down = '비추천';
|
||||
$lang->cmd_declare = '신고';
|
||||
$lang->cmd_declared_list = '신고 목록';
|
||||
$lang->cmd_copy = '复制';
|
||||
$lang->cmd_move = '查看';
|
||||
$lang->cmd_move_up = '向上';
|
||||
|
|
@ -44,6 +48,7 @@
|
|||
$lang->cmd_close = '关闭';
|
||||
$lang->cmd_open = '打开';
|
||||
$lang->cmd_setup = '设置';
|
||||
$lang->cmd_addition_setup = '추가 설정';
|
||||
$lang->cmd_option = '选项';
|
||||
$lang->cmd_apply = '应用';
|
||||
$lang->cmd_open_calendar = '选择日期';
|
||||
|
|
@ -53,6 +58,7 @@
|
|||
$lang->cmd_preview = '预览';
|
||||
$lang->cmd_reset = '初始化';
|
||||
$lang->cmd_remake_cache = "重新生成缓冲文件";
|
||||
$lang->cmd_publish = "발행";
|
||||
|
||||
$lang->enable = '可用';
|
||||
$lang->disable = '禁用';
|
||||
|
|
@ -79,6 +85,8 @@
|
|||
$lang->browser_title = '浏览器标题';
|
||||
$lang->title = '标题';
|
||||
$lang->title_content = '标题+内容';
|
||||
$lang->topic = '주제';
|
||||
$lang->replies = '응답';
|
||||
$lang->content = '内容';
|
||||
$lang->document = '文章';
|
||||
$lang->comment = '评论';
|
||||
|
|
@ -121,6 +129,7 @@
|
|||
$lang->date = '日期';
|
||||
$lang->regdate = '登录日期';
|
||||
$lang->last_update = '最后更新';
|
||||
$lang->last_post = '최근 등록';
|
||||
$lang->signup_date = '注册日期';
|
||||
$lang->last_login = '最近登录';
|
||||
$lang->first_page = '第一页';
|
||||
|
|
@ -169,6 +178,7 @@
|
|||
$lang->msg_module_is_not_standalone = '您请求的模块不能单独执行';
|
||||
|
||||
$lang->success_registed = '提交成功!';
|
||||
$lang->success_declared = '신고되었습니다';
|
||||
$lang->success_updated = '修改成功!';
|
||||
$lang->success_deleted = '删除成功!';
|
||||
$lang->success_voted = '推荐成功!';
|
||||
|
|
@ -176,11 +186,13 @@
|
|||
$lang->success_sended = '发送成功!';
|
||||
$lang->success_reset = '初始化成功';
|
||||
$lang->success_leaved = '注销成功!';
|
||||
$lang->success_saved = '저장되었습니다';
|
||||
|
||||
$lang->fail_to_delete = '删除成功!';
|
||||
$lang->fail_to_move = '移动成功!';
|
||||
|
||||
$lang->failed_voted = '您不能推荐!';
|
||||
$lang->failed_declared = '신고를 하실 수 없습니다';
|
||||
$lang->fail_to_delete_have_children = '不能删除有回复的评论!';
|
||||
|
||||
$lang->confirm_submit = '确定要提交吗?';
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@
|
|||
$min_year = 1900;//년 (0년 부터)
|
||||
####################
|
||||
|
||||
$year = $_REQUEST['year'];
|
||||
$month = $_REQUEST['month'];
|
||||
$year = htmlspecialchars($_REQUEST['year']);
|
||||
$month = htmlspecialchars($_REQUEST['month']);
|
||||
|
||||
$method = $_REQUEST['method'];
|
||||
$fo_id = $_REQUEST['fo_id'];
|
||||
$callback_func = $_REQUEST['callback_func'];
|
||||
$method = htmlspecialchars($_REQUEST['method']);
|
||||
$fo_id = htmlspecialchars($_REQUEST['fo_id']);
|
||||
$callback_func = htmlspecialchars($_REQUEST['callback_func']);
|
||||
|
||||
$day_str = $_REQUEST['day_str']; // 날짜 (ex. 20080101)
|
||||
$day_str = htmlspecialchars($_REQUEST['day_str']); // 날짜 (ex. 20080101)
|
||||
if($day_str && strlen($day_str)) {
|
||||
$year = substr($day_str, 0, 4);
|
||||
$month = substr($day_str, 4, 2);
|
||||
|
|
@ -151,7 +151,7 @@ $before_month_month_day = convertDatetoDay( $month == 1 ? $year - 1 : $year, $mo
|
|||
<body>
|
||||
<div id="popup_content" >
|
||||
<div id="popHeadder">
|
||||
<h1>Calendar</h1>
|
||||
<h3>Calendar</h3>
|
||||
</div>
|
||||
|
||||
<form action="./calendar.php" method="get">
|
||||
|
|
@ -163,12 +163,11 @@ $before_month_month_day = convertDatetoDay( $month == 1 ? $year - 1 : $year, $mo
|
|||
<div class="calendar">
|
||||
<div class="yymm">
|
||||
<div class="yy">
|
||||
<a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=prev_year&callback_func=<?php echo $callback_func?>" class="left"><img src="./images/buttonLeft2.gif" alt="<?php echo $year - 1?>" width="11" height="11" /></a><?php echo $year?><a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=next_year&callback_func=<?php echo $callback_func?>" class="right"><img src="./images/buttonRight2.gif" alt="<?php echo $year + 1?>" width="11" height="11" /></a>
|
||||
<a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=prev_year&callback_func=<?php echo $callback_func?>" class="left"><img src="./images/buttonLeft2.gif" alt="<?php echo $year - 1?>" width="11" height="11" /></a><?php echo $year?><a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=next_year&callback_func=<?php echo $callback_func?>" class="right"><img src="./images/buttonRight2.gif" alt="<?php echo $year + 1?>" width="11" height="11" /></a>
|
||||
</div>
|
||||
<div class="mm">
|
||||
<p><?php echo $monthLongName[$month]?></p>
|
||||
<a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=prev_month&callback_func=<?php echo $callback_func?>" class="left"><img src="./images/buttonLeft2.gif" alt="prev" width="11" height="11" /></a><span><?php echo $month?></span><a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=next_month&callback_func=<?php echo $callback_func?>" class="right"><img src="./images/buttonRight2.gif" alt="next" width="11" height="11" /></a>
|
||||
|
||||
<a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=prev_month&callback_func=<?php echo $callback_func?>" class="left"><img src="./images/buttonLeft2.gif" alt="prev" width="11" height="11" /></a><span><?php echo $month?></span><a href="./calendar.php?fo_id=<?php echo $fo_id?>&year=<?php echo $year?>&month=<?php echo $month?>&method=next_month&callback_func=<?php echo $callback_func?>" class="right"><img src="./images/buttonRight2.gif" alt="next" width="11" height="11" /></a>
|
||||
</div>
|
||||
|
||||
<div class="go">
|
||||
|
|
@ -184,7 +183,7 @@ $before_month_month_day = convertDatetoDay( $month == 1 ? $year - 1 : $year, $mo
|
|||
</select>
|
||||
</div>
|
||||
<br /><br />
|
||||
<center><a href="./calendar.php" class="button"><span>Go Today</span></a></center>
|
||||
<center><a href="./calendar.php?fo_id=<?php echo $fo_id?>&callback_func=<?php echo $callback_func?>" class="button"><span>Go Today</span></a></center>
|
||||
</div>
|
||||
|
||||
<table cellspacing="0" class="dd">
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
<img src="./images/original_image_box_close.gif" alt="close original image" border="0" onclick="closeOriginalImage()" id="closeOriginalImageBtn"/>
|
||||
</div>
|
||||
</div>
|
||||
<div id="membermenuarea"></div>
|
||||
<div id="popup_menu_area"></div>
|
||||
|
||||
{Context::getHtmlFooter()}
|
||||
|
||||
|
|
|
|||
|
|
@ -198,13 +198,17 @@
|
|||
* 손쉽고 확실한 변환을 위해 2byte unicode로 변형한후 처리를 한다
|
||||
**/
|
||||
function cut_str($string, $cut_size, $tail='...') {
|
||||
if(!function_exists('iconv')) return $string;
|
||||
if(!$string || !$cut_size) return $string;
|
||||
$unicode_str = iconv("UTF-8","UCS-2",$string);
|
||||
if(strlen($unicode_str) < $cut_size*2) return $string;
|
||||
|
||||
$output_str = substr($unicode_str, 0, $cut_size*2);
|
||||
return iconv("UCS-2","UTF-8",$output_str).$tail;
|
||||
if(function_exists('iconv')) {
|
||||
$unicode_str = iconv("UTF-8","UCS-2",$string);
|
||||
if(strlen($unicode_str) < $cut_size*2) return $string;
|
||||
$output_str = substr($unicode_str, 0, $cut_size*2);
|
||||
return iconv("UCS-2","UTF-8",$output_str).$tail;
|
||||
}
|
||||
|
||||
$arr = array();
|
||||
return preg_match('/.{'.$cut_size.'}/su', $string, $arr) ? $arr[0].$tail : $string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -220,27 +224,24 @@
|
|||
$year = (int)substr($str,0,4);
|
||||
$month = (int)substr($str,4,2);
|
||||
$day = (int)substr($str,6,2);
|
||||
if(strlen($str) <= 8)
|
||||
{
|
||||
$gap = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$time_zone = $GLOBALS['_time_zone'];
|
||||
if($time_zone<0) $to = -1; else $to = 1;
|
||||
$t_hour = substr($time_zone,1,2)*$to;
|
||||
$t_min = substr($time_zone,3,2)*$to;
|
||||
if(strlen($str) <= 8) {
|
||||
$gap = 0;
|
||||
} else {
|
||||
$time_zone = $GLOBALS['_time_zone'];
|
||||
if($time_zone<0) $to = -1; else $to = 1;
|
||||
$t_hour = substr($time_zone,1,2)*$to;
|
||||
$t_min = substr($time_zone,3,2)*$to;
|
||||
|
||||
$server_time_zone = date("O");
|
||||
if($server_time_zone<0) $so = -1; else $so = 1;
|
||||
$c_hour = substr($server_time_zone,1,2)*$so;
|
||||
$c_min = substr($server_time_zone,3,2)*$so;
|
||||
$server_time_zone = date("O");
|
||||
if($server_time_zone<0) $so = -1; else $so = 1;
|
||||
$c_hour = substr($server_time_zone,1,2)*$so;
|
||||
$c_min = substr($server_time_zone,3,2)*$so;
|
||||
|
||||
$g_min = $t_min - $c_min;
|
||||
$g_hour = $t_hour - $c_hour;
|
||||
$g_min = $t_min - $c_min;
|
||||
$g_hour = $t_hour - $c_hour;
|
||||
|
||||
$gap = $g_min*60 + $g_hour*60*60;
|
||||
}
|
||||
$gap = $g_min*60 + $g_hour*60*60;
|
||||
}
|
||||
|
||||
return mktime($hour, $min, $sec, $month?$month:1, $day?$day:1, $year)+$gap;
|
||||
}
|
||||
|
|
@ -379,9 +380,6 @@
|
|||
// script code 제거
|
||||
$content = preg_replace("!<script(.*?)<\/script>!is","",$content);
|
||||
|
||||
// 제로보드XE전용 주석 태그를 본문에서 제거
|
||||
$content = preg_replace('!<\!--(Before|After)Document\(([0-9]+),([0-9]+)\)-->!is', '', $content);
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,10 +25,10 @@
|
|||
<h1><a href="{$layout_info->index_url}"><!--@if(!$layout_info->logo_image)--><img src="./images/{$layout_info->colorset}/zeroBoardXE.png" alt="ZeroBoard™ XE" class="iePngFix" /><!--@else--><img src="{$layout_info->logo_image}" alt="logo" border="0" class="iePngFix" /><!--@end--></a></h1>
|
||||
|
||||
<div id="language">
|
||||
<strong title="{$lang_type}">{$lang_type}</strong> <a href="#selectLang" onclick="showHide('selectLang');return false;"><img src="./images/{$layout_info->colorset}/buttonLang.gif" alt="Select Language" width="87" height="15" /></a>
|
||||
<strong title="{$lang_type}">{$lang_supported[$lang_type]}</strong> <a href="#selectLang" onclick="showHide('selectLang');return false;"><img src="./images/{$layout_info->colorset}/buttonLang.gif" alt="Select Language" width="87" height="15" /></a>
|
||||
<ul id="selectLang">
|
||||
<!--@foreach($lang_supported as $val)--><!--@if($val != $lang_type)-->
|
||||
<li><a href="#" onclick="doChangeLangType('{$val}');return false;">{$val}</a></li>
|
||||
<!--@foreach($lang_supported as $key => $val)--><!--@if($key!= $lang_type)-->
|
||||
<li><a href="#" onclick="doChangeLangType('{$key}');return false;">{$val}</a></li>
|
||||
<!--@end--><!--@end-->
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -67,12 +67,10 @@
|
|||
<input type="radio" name="search_target" value="title_content" id="search_target3" />
|
||||
<label for="search_target3" onclick="chkIsKind(3, '{$lang->title}+{$lang->content}'); return false;" onmouseover="this.className='on'" onmouseout="this.style.background='none'">{$lang->title}+{$lang->content}</label>
|
||||
</li>
|
||||
<!--
|
||||
<li>
|
||||
<input type="radio" name="search_target" value="comment" id="search_target4" />
|
||||
<label for="search_target4" onclick="chkIsKind(4, '{$lang->comment}'); return false;" onmouseover="this.className='on'" onmouseout="this.style.background='none'">{$lang->comment}</label>
|
||||
</li>
|
||||
-->
|
||||
</ul>
|
||||
<input name="is_keyword" type="text" class="inputText" title="keyword" />
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module version="0.1">
|
||||
<module version="0.1" category="manager">
|
||||
<title xml:lang="ko">애드온</title>
|
||||
<title xml:lang="en">Addon</title>
|
||||
<title xml:lang="es">Addon</title>
|
||||
|
|
|
|||
|
|
@ -3,30 +3,32 @@
|
|||
</div>
|
||||
|
||||
<div id="popBody">
|
||||
<table cellspacing="0" class="tableType5">
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="100" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield1">{$lang->title}</label></th>
|
||||
<th scope="row">{$lang->title}</th>
|
||||
<td>{$addon_info->title} ver. {$addon_info->version}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield2">{$lang->author}</label></th>
|
||||
<th scope="row">{$lang->author}</th>
|
||||
<td class="blue"><a href="mailto:{$addon_info->author->email_address}">{$addon_info->author->name}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield2">{$lang->homepage}</label></th>
|
||||
<th scope="row">{$lang->homepage}</th>
|
||||
<td class="blue"><a href="{$addon_info->author->homepage}" onclick="window.open(this.href);return false;">{$addon_info->author->homepage}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield2">{$lang->regdate}</label></th>
|
||||
<td>{$addon_info->author->date}<td>
|
||||
<th scope="row">{$lang->regdate}</th>
|
||||
<td>{$addon_info->author->date}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" class="borderBottomNone">{$lang->description}</th>
|
||||
<td class="borderBottomNone">{nl2br($addon_info->author->description)}</td>
|
||||
<th scope="row">{$lang->description}</th>
|
||||
<td>{nl2br(trim($addon_info->author->description))}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="popFooter" class="tCenter">
|
||||
|
|
|
|||
|
|
@ -10,11 +10,18 @@
|
|||
</form>
|
||||
|
||||
<!-- 애드온의 목록 -->
|
||||
<table cellspacing="0" class="tableType3">
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col />
|
||||
<col width="50" />
|
||||
<col width="100" />
|
||||
<col width="70" />
|
||||
<col width="150" />
|
||||
<col width="50" />
|
||||
<col width="60" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{$lang->addon_name}</th>
|
||||
<th scope="col">{$lang->version}</th>
|
||||
<th scope="col">{$lang->version}</TH>
|
||||
<th scope="col">{$lang->author}</th>
|
||||
<th scope="col">{$lang->date}</th>
|
||||
<th scope="col">{$lang->installed_path}</th>
|
||||
|
|
@ -50,7 +57,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="7" class="colSpan">
|
||||
<td colspan="6">
|
||||
{nl2br($val->author->description)}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<input type="hidden" name="addon_name" value="{$addon_info->addon_name}" />
|
||||
|
||||
<div id="popBody">
|
||||
<table cellspacing="0" class="tableType5">
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="100" />
|
||||
<col />
|
||||
<tr>
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
<th scope="row">{$val->title}</th>
|
||||
<td>
|
||||
<input type="text" name="{$val->name}" value="{$val->value}" class="inputTypeText w100" />
|
||||
<p>{$val->description}</p>
|
||||
<!--@if($val->description)--><p>{$val->description}</p><!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
|
|
|||
|
|
@ -24,10 +24,11 @@
|
|||
$this->setLayoutPath($this->getTemplatePath());
|
||||
$this->setLayoutFile('layout.html');
|
||||
|
||||
// shortcut 가져오기
|
||||
$oAdminModel = &getAdminModel('admin');
|
||||
$shortcut_list = $oAdminModel->getShortCuts();
|
||||
Context::set('shortcut_list', $shortcut_list);
|
||||
// 설치된 모듈 목록 가져오기
|
||||
$oModuleModel = &getModel('module');
|
||||
$installed_module_list = $oModuleModel->getModulesXmlInfo();
|
||||
Context::set('installed_module_list', $installed_module_list);
|
||||
|
||||
|
||||
// 현재 실행중인 모듈을 구해 놓음
|
||||
$running_module = strtolower(preg_replace('/([a-z]+)([A-Z]+)([a-z]+)(.*)/', '\\2\\3', $this->act));
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module version="0.1">
|
||||
<module version="0.1" category="base">
|
||||
<title xml:lang="ko">관리자 모듈</title>
|
||||
<title xml:lang="en">Administrator Module</title>
|
||||
<title xml:lang="es">Módulo del administrador</title>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,17 @@
|
|||
* @brief English Language Pack (Only basic words are included here)
|
||||
**/
|
||||
|
||||
$lang->admin_info = '관리자 정보';
|
||||
$lang->admin_index = '관리자 초기 페이지';
|
||||
|
||||
$lang->module_category_title = array(
|
||||
'service' => '서비스형 모듈',
|
||||
'manager' => '관리형 모듈',
|
||||
'utility' => '기능성 모듈',
|
||||
'accessory' => '부가 모듈',
|
||||
'base' => '기본 모듈',
|
||||
);
|
||||
|
||||
$lang->newest_news = "Latest News";
|
||||
|
||||
$lang->env_setup = "Setting";
|
||||
|
|
|
|||
|
|
@ -5,6 +5,17 @@
|
|||
* @sumario Paquete del idioma español (sólo los básicos)
|
||||
**/
|
||||
|
||||
$lang->admin_info = '관리자 정보';
|
||||
$lang->admin_index = '관리자 초기 페이지';
|
||||
|
||||
$lang->module_category_title = array(
|
||||
'service' => '서비스형 모듈',
|
||||
'manager' => '관리형 모듈',
|
||||
'utility' => '기능성 모듈',
|
||||
'accessory' => '부가 모듈',
|
||||
'base' => '기본 모듈',
|
||||
);
|
||||
|
||||
$lang->newest_news = "Noticias recientes";
|
||||
|
||||
$lang->env_setup = "Configuración";
|
||||
|
|
|
|||
|
|
@ -5,6 +5,17 @@
|
|||
* @brief 日本語言語パッケージ(基本的な内容のみ)
|
||||
**/
|
||||
|
||||
$lang->admin_info = '관리자 정보';
|
||||
$lang->admin_index = '관리자 초기 페이지';
|
||||
|
||||
$lang->module_category_title = array(
|
||||
'service' => '서비스형 모듈',
|
||||
'manager' => '관리형 모듈',
|
||||
'utility' => '기능성 모듈',
|
||||
'accessory' => '부가 모듈',
|
||||
'base' => '기본 모듈',
|
||||
);
|
||||
|
||||
$lang->newest_news = "最新ニュース";
|
||||
|
||||
$lang->env_setup = "環境設定";
|
||||
|
|
|
|||
|
|
@ -5,6 +5,17 @@
|
|||
* @brief 한국어 언어팩 (기본적인 내용만 수록)
|
||||
**/
|
||||
|
||||
$lang->admin_info = '관리자 정보';
|
||||
$lang->admin_index = '관리자 초기 페이지';
|
||||
|
||||
$lang->module_category_title = array(
|
||||
'service' => '서비스형 모듈',
|
||||
'manager' => '관리형 모듈',
|
||||
'utility' => '기능성 모듈',
|
||||
'accessory' => '부가 모듈',
|
||||
'base' => '기본 모듈',
|
||||
);
|
||||
|
||||
$lang->newest_news = "최신 소식";
|
||||
|
||||
$lang->env_setup = "환경 설정";
|
||||
|
|
|
|||
|
|
@ -5,6 +5,17 @@
|
|||
* @brief 简体中文语言包 (只收录基本内容)
|
||||
**/
|
||||
|
||||
$lang->admin_info = '관리자 정보';
|
||||
$lang->admin_index = '관리자 초기 페이지';
|
||||
|
||||
$lang->module_category_title = array(
|
||||
'service' => '서비스형 모듈',
|
||||
'manager' => '관리형 모듈',
|
||||
'utility' => '기능성 모듈',
|
||||
'accessory' => '부가 모듈',
|
||||
'base' => '기본 모듈',
|
||||
);
|
||||
|
||||
$lang->newest_news = "最新消息";
|
||||
|
||||
$lang->env_setup = "环境设置";
|
||||
|
|
|
|||
|
|
@ -15,29 +15,76 @@ IE7 Only
|
|||
|
||||
*/
|
||||
|
||||
body { margin:0; }
|
||||
li { list-style:none; }
|
||||
a { text-decoration:none;}
|
||||
a:hover { text-decoration:underline;}
|
||||
address { font-style:normal;}
|
||||
|
||||
/* Special Class Selector */
|
||||
.fr { float:right;}
|
||||
.fl { float:left;}
|
||||
.fwB { font-weight:bold;}
|
||||
.gl3 { padding-left:2em; }
|
||||
|
||||
/* ----- cBody | Start ----- */
|
||||
|
||||
h3 { padding:22px 0 7px 0; border-bottom:2px solid #f2250d; background:url(../images/h3.gif) no-repeat 1px 24px; font-size:1.4em; margin-bottom:10px; text-indent:24px; z-index:99;}
|
||||
h3 { background:url("../images/top_head_title_bg.gif") repeat-x left top; font-size:1em; border:1px solid #E3E3E2; padding:11px 9px 7px 25px; color:#555555; }
|
||||
h3 .gray { color:#9d9d9d;}
|
||||
.pass { background:url(../images/h4.gif) no-repeat .5em center; padding-left:1em; color:#606060; font-size:1em;}
|
||||
|
||||
.adminTable { width:100%; border-left:1px solid #E3E3E2; border-top:1px solid #E3E3E2; margin-bottom:10px; table-layout:fixed;}
|
||||
.adminTable caption { background:url("../images/s_application.gif") no-repeat 3px 5px; padding:6px 5px 4px 22px; text-align:left; border:1px solid #E3E3E2; border-bottom:none; font-weight:bold; background-color:#F9F8F5; color:#5E6266; }
|
||||
.adminTable th { background-color:#FAF8F4; padding:5px; font-weight:normal; text-align:left; padding-left:10px; color:#606060; border-right:1px solid #E3E3E2; border-bottom:1px solid #E3E3E2; white-space:nowrap; }
|
||||
|
||||
.adminTable th.button { text-align:right; }
|
||||
.adminTable th.centerButton { text-align:center; }
|
||||
|
||||
.adminTable th a { color:#555555; text-decoration:none; }
|
||||
.adminTable th a:hover { text-decoration:underline; }
|
||||
|
||||
.adminTable th.tahoma { font-family:tahoma; font-size:7pt; }
|
||||
.adminTable th.tahoma a { font-family:tahoma; font-size:7pt; }
|
||||
|
||||
.adminTable th.blue { color:#1473C3; }
|
||||
.adminTable th.red { color:#C31414; }
|
||||
.adminTable th.green { color:#218E08; }
|
||||
|
||||
.adminTable th.blue a { color:#1473C3; }
|
||||
.adminTable th.red a { color:#C31414; }
|
||||
.adminTable th.green a { color:#218E08; }
|
||||
|
||||
.adminTable th a.blue { color:#1473C3; }
|
||||
.adminTable th a.red { color:#C31414; }
|
||||
.adminTable th a.green { color:#218E08; }
|
||||
|
||||
.adminTable th select { height:20px; }
|
||||
.adminTable td { background-color:#FFFFFF; padding:5px; font-weight:normal; text-align:left; padding-left:10px; color:#5A5A5A; border-right:1px solid #E3E3E2; border-bottom:1px solid #E3E3E2;}
|
||||
|
||||
.adminTable td.tahoma { font-family:tahoma; font-size:7pt; }
|
||||
.adminTable td.tahoma a { font-family:tahoma; font-size:7pt; }
|
||||
|
||||
.adminTable td.blue { color:#1473C3; }
|
||||
.adminTable td.red { color:#C31414; }
|
||||
.adminTable td.green { color:#218E08; }
|
||||
|
||||
.adminTable td.blue a { color:#1473C3; }
|
||||
.adminTable td.red a { color:#C31414; }
|
||||
.adminTable td.green a { color:#218E08; }
|
||||
|
||||
.adminTable td a.blue { color:#1473C3; }
|
||||
.adminTable td a.red { color:#C31414; }
|
||||
.adminTable td a.green { color:#218E08; }
|
||||
|
||||
.adminTable td.tCenter { text-align:center; }
|
||||
|
||||
.adminTable td select { height:20px; }
|
||||
.adminTable td textarea { width:98%; height:50px; }
|
||||
.adminTable td a { color:#555555; text-decoration:none; }
|
||||
.adminTable td a:hover { text-decoration:underline; }
|
||||
.adminTable td p, .adminTable td label { color:#AAAAAA; font-size:.9em; margin-top:5px; }
|
||||
.adminTable td p a, .adminTable td label a { text-decoration:underline; color:#999999; }
|
||||
|
||||
.adminTable.counter th { font-size:.9em; text-align:center; padding:0;}
|
||||
.adminTable.counter th em { font:normal 1em Tahoma;}
|
||||
.adminTable td .graph { width:90%; position:relative;}
|
||||
.adminTable td .graph .bar { width:100%; position:absolute; margin-top:4px;}
|
||||
.adminTable td .graph .num { position:relative; background:#ffffff; color:#636363; font:.9em Tahoma; padding-left:10px; white-space:nowrap;}
|
||||
|
||||
.admin_news { width:540px; float:left; margin-right:10px; }
|
||||
.admin_link { width:250px; float:right; }
|
||||
select.time_zone { width:70%; position:relative; top:4px; }
|
||||
.gap1 { margin-top:.8em; }
|
||||
|
||||
.infoText { clear:both; border:1px solid #f2f2f0; margin-bottom:12px; background:#f9f9f6; padding:1.2em; color:#7b7972; font-size:1em; line-height:1.4em; border-top:none; }
|
||||
|
||||
.header4 { overflow:hidden;}
|
||||
h4 { font-size:1em; color:#f2250d; float:left; padding:.5em 0 1.2em 2em;}
|
||||
h4 .bracket { font-weight:normal; color:#9d9d9d;}
|
||||
h4 .vr { font-weight:normal; color:#d1d1d1;}
|
||||
h4 .view { color:#158692; padding-right:.6em; font:bold .9em Tahoma; background:url(../images/iconView.gif) no-repeat right center;}
|
||||
.header4 div.summary { font:.9em Tahoma; color:#636363; float:left; padding:.5em 0 1.2em 2em;}
|
||||
.header4 div.summary { font:.9em Tahoma; color:#636363; float:left; padding:.5em 0 1.2em 2em;}4v
|
||||
.header4 div.summary .vr { font-weight:normal; color:#d1d1d1; margin:0 .5em;}
|
||||
.header4 div.summary em { color:#ff1d00; font-style:normal;}
|
||||
.header4 table.summary { border-right:1px solid #f2f2f2; width:100%; height:35px; margin-bottom:15px;}
|
||||
|
|
@ -46,22 +93,22 @@ h4 .view { color:#158692; padding-right:.6em; font:bold .9em Tahoma; background:
|
|||
.header4 table.summary th .vr { color:#a3a39f; margin:0 4px; font-weight:normal;}
|
||||
.header4 table.summary td { border-top:1px solid #f2f2f2; border-bottom:1px solid #f2f2f2; font:.9em Tahoma; padding-left:17px;}
|
||||
|
||||
select.time_zone { width:70%; position:relative; top:4px; }
|
||||
h4 { font-size:1em; color:#f2250d; padding-left:10px; }
|
||||
h4 .bracket { font-weight:normal; color:#9d9d9d;}
|
||||
h4 .vr { font-weight:normal; color:#d1d1d1;}
|
||||
h4 .view { color:#158692; padding-right:.6em; font:bold .9em Tahoma; background:url(../images/iconView.gif) no-repeat right center; text-decoration:none; }
|
||||
|
||||
/* ----- cBody | End ----- */
|
||||
|
||||
/* ----- Content | Start ----- */
|
||||
|
||||
/* localNavigation */
|
||||
.localNavigation { float:right;margin-bottom:10px;}
|
||||
.localNavigation li { float:left; margin-right:.3em;}
|
||||
.localNavigation { float:right; margin-bottom:10px;}
|
||||
.localNavigation li { float:left; margin-right:.3em; list-style:none;}
|
||||
.localNavigation li.on { margin-right:.3em;}
|
||||
.localNavigation li a { padding:.4em 1em .2em 1em; display:block; float:left; font-size:.9em; color:#606060; border:2px solid #e0dfde;}
|
||||
.localNavigation li a { padding:.4em 1em .2em 1em; display:block; float:left; font-size:.9em; color:#606060; border:2px solid #e0dfde; text-decoration:none; }
|
||||
.localNavigation li a:hover { border:2px solid #ff1a00; color:#f2250d; text-decoration:none;}
|
||||
.localNavigation li.on a { color:#f2250d; border:2px solid #ff1a00; text-decoration:none;}
|
||||
|
||||
/* pageNavigation */
|
||||
.pageNavigation { display:block; padding:1.5em 0 2em 0; text-align:center; font:bold .8em Tahoma; }
|
||||
.tableSummaryType1 { font:bold .9em Tahoma; color:#a0a0a0; margin-bottom:10px;}
|
||||
.tableSummaryType1 strong { font:bold 1em Tahoma; color:#ff1a00;}
|
||||
|
||||
.pageNavigation { display:block; padding:1.5em 0 2em 0; text-align:center; font:bold .9em Tahoma; }
|
||||
.pageNavigation a { margin-left:-4px; font:bold 1em Tahoma; color:#666666; display:inline-block; padding:1px 7px 2px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
.pageNavigation a:hover { background:#F7F7F7; text-decoration:none; }
|
||||
.pageNavigation a:visited { color:#999999;}
|
||||
|
|
@ -71,142 +118,18 @@ select.time_zone { width:70%; position:relative; top:4px; }
|
|||
.pageNavigation a.goToLast img { display:inline-block; padding:2px 0; top:2px; _top:1px;}
|
||||
.pageNavigation .current { margin-left:-4px; font:bold 1em Tahoma; color:#ff6600; display:inline-block; padding:1px 7px 1px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
|
||||
/* tableStyle */
|
||||
.infoText { clear:both; border:1px solid #f2f2f0; margin-bottom:12px; background:#f9f9f6; padding:1.2em; color:#7b7972; font-size:.9em; line-height:1.4em;}
|
||||
|
||||
.gap1 { margin-top:.8em; }
|
||||
.tableSummaryType1 { font:bold .8em Tahoma; color:#a0a0a0; margin-bottom:10px;}
|
||||
.tableSummaryType1 strong { font:bold 1em Tahoma; color:#ff1a00;}
|
||||
|
||||
.tableType1 { width:100%; border-bottom:2px solid #c1c0bd;}
|
||||
.tableType1 caption { padding:2em 0 .5em 1.5em; font-weight:bold; text-align:left; background:url(../images/iconH3.gif) no-repeat .5em 2em;}
|
||||
.tableType1 th { font-weight:normal; color:#ffffff; background:url(../images/tableType1Header.gif) repeat-x; height:28px;}
|
||||
.tableType1 th select { vertical-align:middle; }
|
||||
.tableType1 td { text-align:center; color:#636363; height:30px; border-top:1px solid #ededed;}
|
||||
.tableType1 td.left { text-align:left }
|
||||
.tableType1 td a { color:#1d1d1d;}
|
||||
.tableType1 .tahoma { font-size:.9em; font-family:Tahoma;}
|
||||
.tableType1 .tahoma a { font-size:1em;}
|
||||
.tableType1 td.subject { padding:3px 0 3px 0; line-height:140%;}
|
||||
.tableType1 td.blue a { color:#158692;}
|
||||
.tableType1 td.red a { color:#c95b53;}
|
||||
.tableType1 td.red { color:#c95b53;}
|
||||
.tableType1 td .blue { color:#158692;}
|
||||
.tableType1 td .red { color:#c95b53;}
|
||||
|
||||
.tableType2 { border:2px solid #c1c0bd; border-left:none; border-right:none; width:100%;}
|
||||
.tableType2 caption { padding:2em 0 .5em 1.5em; font-weight:bold; text-align:left; background:url(../images/iconH3.gif) no-repeat .5em 2em;}
|
||||
.tableType2 th { border-top:1px solid #fbfbfb; border-bottom:1px solid #e4e4e4; background:#f5f5f5; padding:10px 10px 10px 2em; font-weight:normal; text-align:left; color:#606060;}
|
||||
.tableType2 td { border-bottom:1px solid #ededed; padding:10px 10px 7px 10px; font-size:.9em; color:#7b7972;}
|
||||
.tableType2 td input,
|
||||
.tableType2 td textarea,
|
||||
.tableType2 td select { margin-bottom:.5em; vertical-align:middle; font-size:1em; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6;}
|
||||
.tableType2 td .w100 { width:100%; display:block;}
|
||||
.tableType2 td .checkbox { margin:-3px;}
|
||||
.tableType2 td p { line-height:1.4em;}
|
||||
.tableType2 td a { color:#1d1d1d;}
|
||||
.tableType2 td a.blue { color:#158692;}
|
||||
.tableType2 td a.red { color:#c95b53;}
|
||||
|
||||
.tableType3 { width:100%; border-bottom:2px solid #c1c0bd;}
|
||||
.tableType3 caption { padding:2em 0 .5em 1.5em; font-weight:bold; text-align:left; background:url(../images/iconH3.gif) no-repeat .5em 2em;}
|
||||
.tableType3 th.bold { font-weight:bold; }
|
||||
.tableType3 th,
|
||||
.tableType3 td { border-top:1px solid #bfbfbf;}
|
||||
.tableType3 thead th { font-weight:normal; color:#ffffff; background:url(../images/tableType1Header.gif) repeat-x; height:28px;}
|
||||
.tableType3 tbody th { font-weight:normal; color:#606060; text-align:left; background:#f5f5f5; padding:10px 10px 10px 2em;}
|
||||
.tableType3 tbody th img { vertical-align:middle; margin-top:-2px;}
|
||||
.tableType3 td { text-align:center; color:#636363; border-left:1px solid #ededed; padding:10px 10px 7px 10px;}
|
||||
.tableType3 td.colSpan { text-align:left; border-top:1px solid #ededed;}
|
||||
.tableType3 td a { color:#1d1d1d;}
|
||||
.tableType3 th a.blue { color:#158692;}
|
||||
.tableType3 th a.red { color:#c95b53;}
|
||||
.tableType3 .tahoma { font-size:.9em; font-family:Tahoma;}
|
||||
.tableType3 .tahoma a { font-size:1em;}
|
||||
.tableType3 td.left { text-align:left; }
|
||||
.tableType3 td label { margin-right:1em; }
|
||||
.tableType3 td.blue a { color:#158692;}
|
||||
.tableType3 td.red a { color:#c95b53;}
|
||||
.tableType3 td a.blue { color:#158692;}
|
||||
.tableType3 td a.red { color:#c95b53;}
|
||||
/*.tableType3 td input,*/
|
||||
.tableType3 td textarea,
|
||||
.tableType3 td select { margin-bottom:.5em; vertical-align:middle; font-size:1em; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6;}
|
||||
.tableType3 td .w100 { width:100%; display:block;}
|
||||
|
||||
.tableType4 { border:2px solid #c1c0bd; border-left:none; border-right:none; width:100%;}
|
||||
.tableType4 th { border-top:1px solid #fbfbfb; border-bottom:1px solid #e4e4e4; background:#f5f5f5; padding:10px 10px 10px 2em; font-weight:normal; text-align:left; color:#606060;}
|
||||
.tableType4 caption { padding:2em 0 .5em 1.5em; font-weight:bold; text-align:left; background:url(../images/iconH3.gif) no-repeat .5em 2em;}
|
||||
.tableType4.counter th { font-size:.9em; text-align:center; padding:0;}
|
||||
.tableType4.counter th em { font:normal 1em Tahoma;}
|
||||
.tableType4 td { border-bottom:1px solid #ededed; padding:10px 10px 7px 10px; color:#7b7972;}
|
||||
.tableType4 td a { color:#1d1d1d;}
|
||||
.tableType4 .tahoma { font-size:.9em; font-family:Tahoma;}
|
||||
.tableType4 .tahoma a { font-size:1em;}
|
||||
.tableType4 td.blue a { color:#158692;}
|
||||
.tableType4 td.red a { color:#c95b53;}
|
||||
/*.tableType4 td input,*/
|
||||
.tableType4 td textarea,
|
||||
.tableType4 td select { margin-bottom:.5em; vertical-align:middle;font-size:1em; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6;}
|
||||
.tableType4 td label { margin-right:1em; }
|
||||
.tableType4 td .w100 { width:100%; display:block;}
|
||||
.tableType4 td .checkbox { margin:-3px;}
|
||||
.tableType4 td p { line-height:1.4em;}
|
||||
.tableType4 td .graph { width:90%; position:relative;}
|
||||
.tableType4 td .graph .bar { width:100%; position:absolute; margin-top:4px;}
|
||||
.tableType4 td .graph .num { position:relative; background:#ffffff; color:#636363; font:.9em Tahoma; padding-left:10px;}
|
||||
|
||||
|
||||
.widgetBox { border:1px solid #c1c0bd; width:100%;}
|
||||
.widgetBox th { text-align:center; font-weight:normal; background-color:#EFEFEF; }
|
||||
.widgetBox td { text-align:left; padding:.5em; }
|
||||
|
||||
/* ----- Content | End ----- */
|
||||
|
||||
/* ----- Popup | Start ----- */
|
||||
|
||||
/* popup */
|
||||
#popHeadder { width:620px; height:40px; background:url(../images/popupTopBg.png) repeat-x left top; }
|
||||
#popHeadder h1 { padding:13px 0 0 19px; height:27px; background:url(../images/popupTopBgEnd.png) no-repeat right top; font-size:1.2em; color:#d8d8d8;}
|
||||
#popBody { width:600px; padding:10px; background:#ffffff;}
|
||||
#popFooter { width:620px; background:#f7f7f6; border-top:1px solid #e8e8e7; padding:.5em 0 .5em 0; overflow:hidden; }
|
||||
#popFooter .close { position:relative; left:50%; margin-left:-1em; float:left;}
|
||||
|
||||
#popBody .tableType5 { border:1px solid #c1c0bd; border-left:none; border-right:none; width:100%;}
|
||||
#popBody .tableType5 th { border-top:1px solid #fbfbfb; border-bottom:1px solid #e4e4e4; background:#f5f5f5; padding:8px 10px 7px 2em; font-weight:normal; text-align:left; color:#606060;}
|
||||
#popBody .tableType5 td { border-bottom:1px solid #ededed; padding:8px 10px 7px 10px; color:#7b7972;}
|
||||
/*#popBody .tableType5 td input,*/
|
||||
#popBody .tableType5 td textarea,
|
||||
#popBody .tableType5 td select { margin-bottom:.5em; vertical-align:middle;}
|
||||
#popBody .tableType5 td .w100 { width:100%; display:block;}
|
||||
#popBody .tableType5 td .checkbox { margin:-3px; margin-bottom:1em; }
|
||||
#popBody .tableType5 td p { line-height:1.4em;}
|
||||
#popBody .tableType5 td.blue a { color:#158692;}
|
||||
#popBody .tableType5 .borderBottomNone { border-bottom:none;}
|
||||
|
||||
/* ----- Popup | End ----- */
|
||||
|
||||
.widget_item { margin-bottom:.5em; }
|
||||
.layout_editor { width:100%; height:500px; border:0px; font-size:1em; }
|
||||
.layout_editor_box { padding:10px; border:1px solid #DDDDDD; }
|
||||
|
||||
/* adminSearch */
|
||||
.adminSearch { text-align:right; clear:both; width:100%;}
|
||||
.adminSearch fieldset { border:none; display:inline; overflow:visible; }
|
||||
.adminSearch * { vertical-align:middle;}
|
||||
|
||||
.title { font-size:1.5em; font-weight:bold; margin-top:2em; margin-bottom:.5em; color:#666666; }
|
||||
.desc { font-size:1em; margin-bottom:.5em; color:#ADADAD;}
|
||||
.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; }
|
||||
|
||||
.w700 { width:700px; }
|
||||
.w5 { width:5em; }
|
||||
#popHeadder { height:40px; background:url(../images/popupTopBg.png) repeat-x left top; padding:10px;}
|
||||
#popHeadder h1 { background:url("../images/top_head_title_bg.gif") repeat-x left top; font-size:1em; border:1px solid #E3E3E2; padding:9px; color:#555555; }
|
||||
#popBody { width:600px; padding:10px; background:#ffffff;}
|
||||
#popFooter { width:620px; background:#f7f7f6; border-top:1px solid #e8e8e7; padding:.5em 0 .5em 0; overflow:hidden; }
|
||||
#popFooter .close { position:relative; left:50%; margin-left:-1em; float:left;}
|
||||
|
||||
.nowrap { white-space:nowrap; }
|
||||
.mid_list { width:7em; }
|
||||
.layout_editor { width:100%; height:500px; border:0px; font-size:1em; }
|
||||
.layout_editor_box { padding:10px; border:1px solid #DDDDDD; }
|
||||
|
||||
ul.extra_vars li { margin-bottom:.5em;}
|
||||
li.type_key { float:left; width:10em; }
|
||||
li.type_value { clear:right; }
|
||||
|
||||
.admin_news { width:49%; float:left; margin-right:10px; }
|
||||
.admin_link { width:49%; float:right; }
|
||||
|
|
|
|||
|
|
@ -1,65 +1,40 @@
|
|||
@charset "utf-8";
|
||||
/*
|
||||
NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/)
|
||||
Jeong, Chan Myeong 070601~070630
|
||||
*/
|
||||
|
||||
/*
|
||||
Used Hack
|
||||
body { background:url("../images/admin_background.gif") repeat-x left top; background-color:#DBD8D3; }
|
||||
|
||||
IE6 & Below
|
||||
{ property:value; _property:value;}
|
||||
#adminLayout { background:url("../images/admin_logo.gif") no-repeat left top; background-color:#F8F6F2; overflow:hidden; width:1000px; border-right:1px solid #B2B2B2; margin:5px 0 0 5px; }
|
||||
|
||||
IE7 Only
|
||||
*:first-child+html #selector
|
||||
#adminContentBody { width:800px; float:left; background-color:#FFFFFF; padding:25px 10px 20px 10px; vertical-align:top; background:url(../images/admin_top_bg.gif) repeat-x left top; background-color:#FFFFFF; }
|
||||
|
||||
*/
|
||||
#adminLayoutBottom { background:url("../images/admin_bottom_bg.gif") repeat-x left top; height:3px; clear:both; overflow:hidden; width:1001px; margin:0 0 0 5px; }
|
||||
|
||||
/* default.css - Type Selector Definition */
|
||||
li { list-style:none;}
|
||||
a { text-decoration:none;}
|
||||
a:hover { text-decoration:underline;}
|
||||
address { font-style:normal;}
|
||||
#adminMenuContent { width:179px; float:left; margin-top:70px; padding-bottom:20px; vertical-align:top; background:none; overflow:hidden; border-right:1px solid #B2B2B2; }
|
||||
|
||||
/* Special Class Selector */
|
||||
.fr { float:right;}
|
||||
.fl { float:left;}
|
||||
.fwB { font-weight:bold;}
|
||||
#adminMenuContent .adminInfoBox { border:1px solid #E3E3E2; padding:3px; margin:0 0 0 8px; width:130px; background-color:#FFFFFF; overflow:hidden; width:154px; margin-bottom:10px;}
|
||||
#adminMenuContent .adminInfoBox .adminInfo { border:1px solid #E3E3E2; padding:5px 3px 3px 23px; background:url("../images/icon_key.gif") no-repeat 3px 3px; color:#555555; font-weight:bold; overflow:hidden; background-color:#F8F6F2; }
|
||||
#adminMenuContent .adminInfoBox .adminInfo div.expandButton { float:right; height:16px; overflow:hidden; }
|
||||
#adminMenuContent .adminInfoBox div.logoutButton { margin-top:5px; text-align:center; clear:both; }
|
||||
#adminMemberInfo { padding:10px 5px 10px 24px; background:url("../images/icon_user.gif") no-repeat 5px 8px; color:#336699; font-weight:bold; letter-spacing:-1px;}
|
||||
|
||||
/* ----- Header | Start ----- */
|
||||
#adminMenuContent h3 { border:1px solid #E3E3E2; border-top:none; color:#555555; font-size:1em; text-indent:none; padding:6px 5px 3px 25px; white-space:nowrap; margin:0 0 0 8px; width:130px; overflow:hidden;}
|
||||
#adminMenuContent h3 a { color:#555555; text-decoration:none; }
|
||||
#adminMenuContent h3 span.expandButton { float:right; height:16px; overflow:hidden; }
|
||||
#adminMenuContent h3.summary { background:url("../images/icon_summary.gif") no-repeat 3px 3px; background-color:#FFFFFF; margin-top:0px; border-top:1px solid #E3E3E2; }
|
||||
#adminMenuContent h3.service { background:url("../images/icon_service_module.gif") no-repeat 3px 5px; background-color:#FFFFFF; }
|
||||
#adminMenuContent h3.manager { background:url("../images/icon_manager_module.gif") no-repeat 3px 5px; background-color:#FFFFFF;}
|
||||
#adminMenuContent h3.utility { background:url("../images/icon_utility_module.gif") no-repeat 3px 5px; background-color:#FFFFFF;}
|
||||
#adminMenuContent h3.accessory { background:url("../images/icon_accessory_module.gif") no-repeat 3px 5px; background-color:#FFFFFF;}
|
||||
#adminMenuContent h3.base { background:url("../images/icon_base_module.gif") no-repeat 3px 5px; background-color:#FFFFFF;}
|
||||
|
||||
#header { position:relative; height:71px; background:url(../images/headerBg.gif) repeat-x; overflow:hidden; clear:both; z-index:99;}
|
||||
#header h1 { float:left; width:180px; height:71px; position:relative; background:url(../images/h1_bg.gif) no-repeat;}
|
||||
#header h1 img { position:absolute; top:29px; left:29px;}
|
||||
#header #logout { width:470px; height:71px; float:right; background:url(../images/headerBgEnd.png) no-repeat right top;}
|
||||
#header #logout a { float:right; position:relative; top:29px; right:24px;}
|
||||
#adminMenuContent ul { width:170px; overflow:hidden; }
|
||||
#adminMenuContent ul li { background-color:#F8F6F3; list-style:none; padding:5px 10px 3px 10px; margin-left:8px; white-space:nowrap; overflow:hidden; color:#888785; border-bottom:1px solid #E3E3E2; cursor:pointer; }
|
||||
#adminMenuContent ul li:hover { background-color:#EFE6D3; border-left:1px solid #E3E3E2; border-right:1px solid #E3E3E2;}
|
||||
#adminMenuContent li.on { background-color:#EFE6D3; border-left:1px solid #E3E3E2; border-right:1px solid #E3E3E2;}
|
||||
#adminMenuContent ul li a { text-decoration:none; color:#888785; }
|
||||
#adminMenuContent ul li:hover a { color:#000000; }
|
||||
#adminMenuContent li.on a { color:#000000; }
|
||||
|
||||
/* ----- Header | End ----- */
|
||||
|
||||
#cBody { clear:both; padding:0px 18px 0px 198px; margin:-71px 0 -38px 0; overflow:hidden; background:#ffffff url(../images/menuBg.gif) repeat-y;}
|
||||
|
||||
#gNavigation { float:left; width:180px; padding:71px 0 200px 0; margin-right:18px; margin-left:-198px; _margin-left:-99px; background:#ffffff url(../images/menuBg.gif) repeat-y;}
|
||||
#gNavigation h2 { }
|
||||
#gNavigation ul { width:180px;}
|
||||
#gNavigation ul li { width:180px; height:30px; background:url(../images/menuBg.png) no-repeat left top; } /* behavior:url(./common/js/iePngFix.htc);}*/
|
||||
#gNavigation ul li.on { background-position:left -30px; margin-top:-2px; _background:url(../images/menuBgIeFix.png) no-repeat left top;}
|
||||
#gNavigation ul li.on a { color:#ffffff; font-weight:bold;}
|
||||
#gNavigation ul li a { display:block; padding:9px 0 0 28px; height:21px; color:#606060;}
|
||||
#gNavigation ul li a:hover { background:url(../images/menuBgIeFix.png) no-repeat; margin-top:-2px; font-weight:bold; color:#ffffff; text-decoration:none;}
|
||||
#gNavigation ul li.on a:hover { background:url(../images/menuBgIeFix.png) no-repeat; margin-top:0; font-weight:bold; color:#ffffff; text-decoration:none;}
|
||||
#gNavigation .menuEdit { width:180px; height:30px; text-align:center; margin-top:1em;}
|
||||
|
||||
#content { float:left; width:100%; padding:71px 0 100px 0;}
|
||||
|
||||
/* ----- Footer | Start ----- */
|
||||
|
||||
#footer { width:100%; clear:both; height:38px; margin-bottom:-38px; overflow:hidden; background:url(../images/footerBg.gif) repeat-x left 3px;}
|
||||
#footer .footerLine { height:3px; width:100%; float:left; clear:both;}
|
||||
#footer .footerLeft { float:left;}
|
||||
#footer address { float:right; width:350px; height:35px; background:url(../images/addressBg.gif) no-repeat right top;}
|
||||
#footer address img { margin:15px 10px 0 0}
|
||||
#footer address .version { font:.8em Tahoma; color:#ffffff;}
|
||||
#footer address .version strong { font:bold 1em Tahoma; color:#ff0000; }
|
||||
|
||||
/* ----- Footer | End ----- */
|
||||
|
||||
#adminLayoutCopyright { width:1000px; text-align:right; margin-top:10px; font-size:.8em; font-family:tahoma; color:#888888; padding-bottom:50px; }
|
||||
#adminLayoutCopyright a { color:#666666; text-decoration:none; }
|
||||
#adminLayoutCopyright a span.red { color:#9A1827; }
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 231 B |
|
Before Width: | Height: | Size: 6.7 KiB |
BIN
modules/admin/tpl/images/admin_background.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
modules/admin/tpl/images/admin_bottom_bg.gif
Normal file
|
After Width: | Height: | Size: 52 B |
BIN
modules/admin/tpl/images/admin_logo.gif
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
modules/admin/tpl/images/admin_top_bg.gif
Normal file
|
After Width: | Height: | Size: 56 B |
|
Before Width: | Height: | Size: 445 B |
|
Before Width: | Height: | Size: 188 B |
|
Before Width: | Height: | Size: 72 B |
|
Before Width: | Height: | Size: 170 B |
|
Before Width: | Height: | Size: 183 B |
|
Before Width: | Height: | Size: 72 B |
|
Before Width: | Height: | Size: 72 B |
BIN
modules/admin/tpl/images/expand.gif
Normal file
|
After Width: | Height: | Size: 361 B |
|
Before Width: | Height: | Size: 724 B |
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 556 B |
|
Before Width: | Height: | Size: 44 B |
|
Before Width: | Height: | Size: 908 B |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 49 B |
|
Before Width: | Height: | Size: 608 B |
|
Before Width: | Height: | Size: 346 B |
|
Before Width: | Height: | Size: 58 B |
|
Before Width: | Height: | Size: 617 B |
|
Before Width: | Height: | Size: 160 B |
|
Before Width: | Height: | Size: 582 B |
|
Before Width: | Height: | Size: 195 B |
|
Before Width: | Height: | Size: 623 B |
|
Before Width: | Height: | Size: 343 B |
|
Before Width: | Height: | Size: 73 B |
|
Before Width: | Height: | Size: 356 B |
BIN
modules/admin/tpl/images/icon_accessory_module.gif
Normal file
|
After Width: | Height: | Size: 367 B |
BIN
modules/admin/tpl/images/icon_base_module.gif
Normal file
|
After Width: | Height: | Size: 340 B |
BIN
modules/admin/tpl/images/icon_key.gif
Normal file
|
After Width: | Height: | Size: 354 B |
BIN
modules/admin/tpl/images/icon_manager_module.gif
Normal file
|
After Width: | Height: | Size: 362 B |
BIN
modules/admin/tpl/images/icon_service_module.gif
Normal file
|
After Width: | Height: | Size: 650 B |
BIN
modules/admin/tpl/images/icon_summary.gif
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/admin/tpl/images/icon_user.gif
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/admin/tpl/images/icon_utility_module.gif
Normal file
|
After Width: | Height: | Size: 390 B |
BIN
modules/admin/tpl/images/icon_vcard.gif
Normal file
|
After Width: | Height: | Size: 1 KiB |
|
Before Width: | Height: | Size: 122 B |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 179 B |
|
Before Width: | Height: | Size: 11 KiB |
BIN
modules/admin/tpl/images/s_application.gif
Normal file
|
After Width: | Height: | Size: 580 B |
|
Before Width: | Height: | Size: 347 B |
BIN
modules/admin/tpl/images/top_head_title_bg.gif
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
|
|
@ -3,8 +3,10 @@
|
|||
|
||||
<h3>{$lang->welcome_to_zeroboard_xe}</h3>
|
||||
|
||||
<table cellspacing="0" class="tableType4">
|
||||
<col width="200" />
|
||||
<div class="gap1"></div>
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<caption>{$lang->env_information}</caption>
|
||||
<!--@if($current_version < $released_version)-->
|
||||
|
|
@ -30,8 +32,8 @@
|
|||
</table>
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, update_env_config);">
|
||||
<table cellspacing="0" class="tableType4">
|
||||
<col width="200" />
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<caption>{$lang->env_setup}</caption>
|
||||
<tr>
|
||||
|
|
@ -52,10 +54,10 @@
|
|||
<th scope="row">Lang</th>
|
||||
<td>
|
||||
<select name="lang_type" onchange="doChangeLangType(this)">
|
||||
<option value="{$lang_type}">{$lang_type}</option>
|
||||
<!--@foreach($lang_supported as $val)-->
|
||||
<!--@if($val != $lang_type)-->
|
||||
<option value="{$val}">{$val}</option>
|
||||
<option value="{$lang_type}">{$lang_supported[$lang_type]}</option>
|
||||
<!--@foreach($lang_supported as $key => $val)-->
|
||||
<!--@if($key != $lang_type)-->
|
||||
<option value="{$key}">{$val}</option>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</select>
|
||||
|
|
@ -73,30 +75,27 @@
|
|||
<p>{$lang->about_time_zone}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="2" class="button">
|
||||
<span class="button"><input type="button" value="{$lang->cmd_remake_cache}" onclick="doRecompileCacheFile(); return false;"/></span>
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_save}" /></span>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="fl tLeft gap1">
|
||||
<span class="button"><input type="button" value="{$lang->cmd_remake_cache}" onclick="doRecompileCacheFile(); return false;"/></span>
|
||||
</div>
|
||||
<div class="fr tRight gap1">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_save}" /></span>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="admin_news clear">
|
||||
|
||||
<!--@if($news)-->
|
||||
<table cellspacing="0" class="tableType1">
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="120" />
|
||||
<col />
|
||||
<caption>{$lang->newest_news}</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{$lang->title}</th>
|
||||
<th scope="col">{$lang->regdate}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!--@foreach($news as $key => $val)-->
|
||||
<tr>
|
||||
<td class="left"> <a href="{$val->url}" onclick="window.open(this.href);return false;">{$val->title}</a></td>
|
||||
<td class="tahoma">{zdate($val->date,"Y-m-d H:i")}</td>
|
||||
<th class="tahoma">{zdate($val->date,"Y-m-d H:i")}</th>
|
||||
<td><a href="{$val->url}" onclick="window.open(this.href);return false;">{$val->title}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
|
|
@ -106,27 +105,16 @@
|
|||
|
||||
<div class="admin_link">
|
||||
<!-- 사용자 링크 -->
|
||||
<table cellspacing="0" class="tableType3">
|
||||
<col width="250" />
|
||||
<col />
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{$lang->zeroboard_xe_user_links}</caption>
|
||||
<!--@foreach($lang->xe_user_links as $key => $val)-->
|
||||
<tr>
|
||||
<th scope="col">{$key}</th>
|
||||
<td class="left blue"><a href="{$val}" onclick="winopen(this.href); return false;">{$val}</a></td>
|
||||
<td><a href="{$val}" onclick="winopen(this.href); return false;">{$key}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
|
||||
<!-- 개발자 링크 -->
|
||||
<table cellspacing="0" class="tableType3">
|
||||
<col width="250" />
|
||||
<col />
|
||||
<caption>{$lang->zeroboard_xe_developer_links}</caption>
|
||||
<!--@foreach($lang->xe_developer_links as $key => $val)-->
|
||||
<tr>
|
||||
<th scope="col">{$key}</th>
|
||||
<td class="left blue"><a href="{$val}" onclick="winopen(this.href); return false;">{$val}</a></td>
|
||||
<td><a href="{$val}" onclick="winopen(this.href); return false;">{$key}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,11 @@ function doDeleteShortCut(selected_module) {
|
|||
procFilter(fo_obj, delete_shortcut);
|
||||
}
|
||||
|
||||
// 캐시파일 모두 재 생성
|
||||
function doRecompileCacheFile() {
|
||||
exec_xml("admin","procAdminRecompileCacheFile");
|
||||
}
|
||||
|
||||
// footer를 화면 크기에 맞춰 설정 (폐기)
|
||||
//xAddEventListener(window, 'load', fixAdminLayoutFooter);
|
||||
//xAddEventListener(window, 'resize', fixAdminLayoutFooter);
|
||||
|
|
@ -18,19 +23,30 @@ function fixAdminLayoutFooter(height) {
|
|||
return;
|
||||
}
|
||||
|
||||
if(xIE6) {
|
||||
xAddEventListener(window,'load',fixAdminNaviHeight);
|
||||
function setMenuContentScale() {
|
||||
var menuHeight = xHeight("adminMenuContent")+70;
|
||||
var bodyHeight = xHeight("adminContentBody");
|
||||
if(bodyHeight>menuHeight) xHeight("adminMenuContent", bodyHeight-70);
|
||||
else if(bodyHeight<menuHeight) xHeight("adminContentBody", menuHeight);
|
||||
}
|
||||
|
||||
function fixAdminNaviHeight() {
|
||||
var naviHeight = xHeight('gNavigation');
|
||||
var bodyHeight = xHeight('content');
|
||||
if(naviHeight<bodyHeight) xHeight('gNavigation',bodyHeight);
|
||||
else xHeight('content',naviHeight);
|
||||
setTimeout(fixAdminNaviHeight, 500);
|
||||
}
|
||||
// 메뉴 여닫기
|
||||
function toggleAdminMenu(id) {
|
||||
var obj = xGetElementById(id);
|
||||
var rh = 0;
|
||||
if(obj.style.display == 'none') {
|
||||
obj.style.display = 'block';
|
||||
rh = xHeight(obj);
|
||||
xHeight("adminMenuContent", xHeight('adminMenuContent')+rh);
|
||||
} else {
|
||||
rh = xHeight(obj);
|
||||
obj.style.display = 'none';
|
||||
xHeight("adminMenuContent", xHeight('adminMenuContent')-rh);
|
||||
}
|
||||
|
||||
// 캐시파일 모두 재 생성
|
||||
function doRecompileCacheFile() {
|
||||
exec_xml("admin","procAdminRecompileCacheFile");
|
||||
var expire = new Date();
|
||||
expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
|
||||
xSetCookie(id, obj.style.display, expire);
|
||||
|
||||
setMenuContentScale();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,34 +1,58 @@
|
|||
<!--%import("css/admin_layout.css")-->
|
||||
<!--%import("js/admin.js")-->
|
||||
|
||||
<div id="header">
|
||||
<h1><a href="{getUrl('','module','admin')}"><img src="./images/h1.png" alt="Zeroboard XE" width="128" height="20" class="iePngFix" /></a></h1>
|
||||
<div id="logout" class="iePngFix">
|
||||
<a href="{getUrl('','module','admin','act','dispMemberLogout')}"><img src="./images/buttonLogout.png" alt="{$lang->cmd_logout}" width="53" height="10" class="iePngFix" /></a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="adminLayout">
|
||||
|
||||
<div id="adminMenuContent">
|
||||
|
||||
<div id="cBody">
|
||||
<div class="adminInfoBox">
|
||||
<div class="adminInfo">
|
||||
<div class="fl">{$lang->admin_info}</div>
|
||||
<div class="expandButton"><a href="#" onclick="toggleDisplay('adminMemberInfo','block'); return false;"><img src="./images/expand.gif" alt="toggle" /></a></div>
|
||||
</div>
|
||||
<div id="adminMemberInfo" style="display:none;">
|
||||
{$logged_info->nick_name} ({$logged_info->user_id})
|
||||
</div>
|
||||
<div class="logoutButton">
|
||||
<a href="{getUrl('','module','admin','act','dispMemberLogout')}" class="button"><span>{$lang->cmd_logout}</span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="gNavigation">
|
||||
<h2><img src="./images/h2.gif" alt="Administration" width="180" height="45" /></h2>
|
||||
<ul>
|
||||
<!--@foreach($shortcut_list as $key => $val)-->
|
||||
<li <!--@if($running_module==$val->module)-->class="on"<!--@end-->><a href="{getUrl('','module','admin','act',$val->default_act)}">{cut_str($val->title,14,'..')}</a></li>
|
||||
<h3 class="summary">
|
||||
<span class="fl"><a href="{getUrl('','module','admin')}">{$lang->admin_index}</a></span>
|
||||
</h3>
|
||||
|
||||
<!--@foreach($lang->module_category_title as $key => $val)-->
|
||||
<h3 class="{$key}">
|
||||
<span class="fl"><a href="#" onclick="toggleAdminMenu('amm_{$key}'); return false;">{$val}</a></span>
|
||||
<span class="expandButton"><a href="#" onclick="toggleAdminMenu('amm_{$key}'); return false;"><img src="./images/expand.gif" alt="toggle" /></a></span>
|
||||
</h3>
|
||||
|
||||
<ul id="amm_{$key}" style="display:{$_COOKIE['amm_'.$key]}">
|
||||
<!--@foreach($installed_module_list as $k => $v)-->
|
||||
<!--@if($v->category == $key)-->
|
||||
<!--@if($v->admin_index_act)-->
|
||||
<li <!--@if($running_module==$v->module)-->class="on"<!--@end--> onclick="location.href='{getUrl('','module','admin','act',$v->admin_index_act)}'; return false;">
|
||||
<a href="{getUrl('','module','admin','act',$v->admin_index_act)}">{$v->title}</a>
|
||||
</li>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</ul>
|
||||
<div class="menuEdit">
|
||||
<a href="{getUrl('','module','admin','act','dispAdminShortCut')}" class="button"><span>{$lang->cmd_shortcut_management}</span></a>
|
||||
</div>
|
||||
</ul>
|
||||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<div id="content">{$content}</div>
|
||||
<div id="adminContentBody">{$content}</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
<img src="./images/footerLine.gif" alt="" class="footerLine" /><img src="./images/footerLeft.gif" alt="" width="350" height="35" class="footerLeft" />
|
||||
<address>
|
||||
<a href="http://www.zeroboard.com"><img src="./images/address.gif" alt="Copyright 2000, Zeroboard All Rights Reserved. Version" width="255" height="7" /><span class="version"><strong>XE</strong> Beta</span></a>
|
||||
</address>
|
||||
<div id="adminLayoutBottom"></div>
|
||||
|
||||
<div id="adminLayoutCopyright">
|
||||
© 2007 <a href="http://www.zeroboard.com"><strong>zeroboard <span class="red">XE</span></strong></a>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
xAddEventListener(window,"load",setMenuContentScale);
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -136,13 +136,15 @@
|
|||
}
|
||||
|
||||
// serialize하여 저장
|
||||
$obj->category_xml_file = sprintf("./files/cache/blog_category/%s.xml.php", $module_srl);
|
||||
$oDocumentModel = &getModel('document');
|
||||
$obj->category_xml_file = $oDocumentModel->getCategoryXmlFile($module_srl);
|
||||
$obj->mid = $module_info->mid;
|
||||
$skin_vars = serialize($obj);
|
||||
|
||||
$oModuleController->updateModuleSkinVars($module_srl, $skin_vars);
|
||||
|
||||
// 레이아웃 확장변수 수정
|
||||
$layout_args->mid = $obj->mid;
|
||||
$layout_args->extra_vars = $skin_vars;
|
||||
$layout_args->layout_srl = $module_srl;
|
||||
$oLayoutAdminController = &getAdminController('layout');
|
||||
|
|
@ -163,7 +165,7 @@
|
|||
**/
|
||||
function procBlogAdminInsertBlog() {
|
||||
// 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리
|
||||
$args = Context::gets('module_srl','module_category_srl','blog_name','skin','browser_title','description','is_default','header_text','footer_text','admin_id','open_rss');
|
||||
$args = Context::gets('module_srl','module_category_srl','blog_name','skin','browser_title','description','is_default','header_text','footer_text','admin_id');
|
||||
$args->module = 'blog';
|
||||
$args->mid = $args->blog_name;
|
||||
unset($args->blog_name);
|
||||
|
|
@ -175,6 +177,19 @@
|
|||
unset($extra_var->page);
|
||||
unset($extra_var->blog_name);
|
||||
|
||||
// 확장변수(20개로 제한된 고정 변수) 체크
|
||||
$user_defined_extra_vars = array();
|
||||
foreach($extra_var as $key => $val) {
|
||||
if(substr($key,0,11)!='extra_vars_') continue;
|
||||
preg_match('/^extra_vars_([0-9]+)_(.*)$/i', $key, $matches);
|
||||
if(!$matches[1] || !$matches[2]) continue;
|
||||
|
||||
$user_defined_extra_vars[$matches[1]]->{$matches[2]} = $val;
|
||||
unset($extra_var->{$key});
|
||||
}
|
||||
for($i=1;$i<=20;$i++) if(!$user_defined_extra_vars[$i]->name) unset($user_defined_extra_vars[$i]);
|
||||
$extra_var->extra_vars = $user_defined_extra_vars;
|
||||
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
|
|
@ -235,9 +250,9 @@
|
|||
}
|
||||
|
||||
// 기본 카테고리 등록
|
||||
$category_args->module_srl = $module_srl;
|
||||
$category_args->module_srl = $args->module_srl;
|
||||
$category_args->category_srl = getNextSequence();
|
||||
$category_args->name = 'Story';
|
||||
$category_args->title = 'Story';
|
||||
$category_args->expand = 'N';
|
||||
$this->procBlogAdminInsertCategory($category_args);
|
||||
|
||||
|
|
@ -251,6 +266,7 @@
|
|||
}
|
||||
|
||||
// 레이아웃 수정
|
||||
$layout_args->mid = $args->mid;
|
||||
$layout_args->layout_srl = $layout_args->module_srl = $module_srl = $output->get('module_srl');
|
||||
$layout_args->title = $args->browser_title;
|
||||
$layout_args->layout_path = sprintf('./modules/blog/skins/%s/layout.html', $args->skin);
|
||||
|
|
@ -272,6 +288,58 @@
|
|||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 카테고리 추가
|
||||
**/
|
||||
function procBlogAdminInsertCategory($args = null) {
|
||||
// 입력할 변수 정리
|
||||
if(!$args) $args = Context::gets('module_srl','category_srl','parent_srl','title','expand','group_srls');
|
||||
|
||||
if($args->expand !="Y") $args->expand = "N";
|
||||
$args->group_srls = str_replace('|@|',',',$args->group_srls);
|
||||
$args->parent_srl = (int)$args->parent_srl;
|
||||
|
||||
$oDocumentController = &getController('document');
|
||||
$oDocumentModel = &getModel('document');
|
||||
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// 이미 존재하는지를 확인
|
||||
if($args->category_srl) {
|
||||
$category_info = $oDocumentModel->getCategory($args->category_srl);
|
||||
if($category_info->category_srl != $args->category_srl) $args->category_srl = null;
|
||||
}
|
||||
|
||||
// 존재하게 되면 update를 해준다
|
||||
if($args->category_srl) {
|
||||
$output = $oDocumentController->updateCategory($args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
// 존재하지 않으면 insert를 해준다
|
||||
} else {
|
||||
$output = $oDocumentController->insertCategory($args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
// XML 파일을 갱신하고 위치을 넘겨 받음
|
||||
$xml_file = $oDocumentController->makeCategoryXmlFile($args->module_srl);
|
||||
|
||||
$oDB->commit();
|
||||
|
||||
$this->add('xml_file', $xml_file);
|
||||
$this->add('module_srl', $args->module_srl);
|
||||
$this->add('category_srl', $args->category_srl);
|
||||
$this->add('parent_srl', $args->parent_srl);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 블로그 삭제
|
||||
**/
|
||||
|
|
@ -291,7 +359,6 @@
|
|||
|
||||
// 레이아웃 삭제
|
||||
$layout_args->layout_srl = $layout_args->module_srl = $module_srl;
|
||||
|
||||
$oLayoutAdminController = &getAdminController('layout');
|
||||
$output = $oLayoutAdminController->deleteLayout($layout_args);
|
||||
if(!$output->toBool()) {
|
||||
|
|
@ -299,15 +366,6 @@
|
|||
return $output;
|
||||
}
|
||||
|
||||
// 블로그 카테고리 삭제
|
||||
$category_args->module_srl = $module_srl;
|
||||
$output = executeQuery('blog.deleteCategories', $category_args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
@unlink( sprintf('./files/cache/blog_category/%d.xml.php', $module_srl) );
|
||||
|
||||
$oDB->commit();
|
||||
|
||||
$this->add('module','blog');
|
||||
|
|
@ -315,69 +373,6 @@
|
|||
$this->setMessage('success_deleted');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 카테고리 추가
|
||||
**/
|
||||
function procBlogAdminInsertCategory($args = null) {
|
||||
// 입력할 변수 정리
|
||||
if(!$args) $args = Context::gets('module_srl','category_srl','parent_srl','name','expand','group_srls');
|
||||
|
||||
if($args->expand !="Y") $args->expand = "N";
|
||||
$args->group_srls = str_replace('|@|',',',$args->group_srls);
|
||||
$args->parent_srl = (int)$args->parent_srl;
|
||||
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// 이미 존재하는지를 확인
|
||||
$oBlogModel = &getModel('blog');
|
||||
$category_info = $oBlogModel->getCategoryInfo($args->category_srl);
|
||||
|
||||
// 존재하게 되면 update를 해준다
|
||||
if($category_info->category_srl == $args->category_srl) {
|
||||
$output = executeQuery('blog.updateCategory', $args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$oDocumentController = &getAdminController('document');
|
||||
$document_args->category_srl = $args->category_srl;
|
||||
$document_args->title = $args->name ;
|
||||
$output = $oDocumentController->updateCategory($document_args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
// 존재하지 않으면 insert를 해준다
|
||||
} else {
|
||||
$args->listorder = -1*$args->category_srl;
|
||||
$output = executeQuery('blog.insertCategory', $args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$oDocumentController = &getAdminController('document');
|
||||
$output = $oDocumentController->insertCategory($args->module_srl, $args->name, $args->category_srl);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
// XML 파일을 갱신하고 위치을 넘겨 받음
|
||||
$xml_file = $this->makeXmlFile($args->module_srl);
|
||||
|
||||
$oDB->commit();
|
||||
|
||||
$this->add('xml_file', $xml_file);
|
||||
$this->add('module_srl', $args->module_srl);
|
||||
$this->add('category_srl', $args->category_srl);
|
||||
$this->add('parent_srl', $args->parent_srl);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 카테고리 삭제
|
||||
**/
|
||||
|
|
@ -388,32 +383,17 @@
|
|||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
$oBlogModel = &getModel('blog');
|
||||
$oDocumentModel = &getModel('document');
|
||||
|
||||
// 원정보를 가져옴
|
||||
$category_info = $oBlogModel->getCategoryInfo($args->category_srl);
|
||||
$category_info = $oDocumentModel->getCategory($args->category_srl);
|
||||
if($category_info->parent_srl) $parent_srl = $category_info->parent_srl;
|
||||
|
||||
// 자식 노드가 있는지 체크하여 있으면 삭제 못한다는 에러 출력
|
||||
$output = executeQuery('blog.getChildCategoryCount', $args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
if($output->data->count>0) {
|
||||
$oDB->rollback();
|
||||
return new Object(-1, 'msg_cannot_delete_for_child');
|
||||
}
|
||||
if($oDocumentModel->getCategoryChlidCount($args->category_srl)) return new Object(-1, 'msg_cannot_delete_for_child');
|
||||
|
||||
// DB에서 삭제
|
||||
$output = executeQuery("blog.deleteCategory", $args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$oDocumentController = &getAdminController('document');
|
||||
$oDocumentController = &getController('document');
|
||||
$output = $oDocumentController->deleteCategory($args->category_srl);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
|
|
@ -421,7 +401,7 @@
|
|||
}
|
||||
|
||||
// XML 파일을 갱신하고 위치을 넘겨 받음
|
||||
$xml_file = $this->makeXmlFile($args->module_srl);
|
||||
$xml_file = $oDocumentController->makeCategoryXmlFile($args->module_srl);
|
||||
|
||||
$oDB->commit();
|
||||
|
||||
|
|
@ -437,26 +417,28 @@
|
|||
$source_category_srl = Context::get('source_category_srl');
|
||||
$target_category_srl = Context::get('target_category_srl');
|
||||
|
||||
$oBlogModel = &getModel('blog');
|
||||
$target_category = $oBlogModel->getCategoryInfo($target_category_srl);
|
||||
$source_category = $oBlogModel->getCategoryInfo($source_category_srl);
|
||||
$oDocumentModel = &getModel('document');
|
||||
$oDocumentController = &getController('document');
|
||||
|
||||
$target_category = $oDocumentModel->getCategory($target_category_srl);
|
||||
$source_category = $oDocumentModel->getCategory($source_category_srl);
|
||||
|
||||
// source_category에 target_category_srl의 parent_srl, listorder 값을 입력
|
||||
$source_args->category_srl = $source_category_srl;
|
||||
$source_args->parent_srl = $target_category->parent_srl;
|
||||
$source_args->listorder = $target_category->listorder;
|
||||
$output = executeQuery('blog.updateCategoryParent', $source_args);
|
||||
$output = $oDocumentController->updateCategory($source_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// target_category의 listorder값을 +1해 준다
|
||||
$target_args->category_srl = $target_category_srl;
|
||||
$target_args->parent_srl = $target_category->parent_srl;
|
||||
$target_args->listorder = $target_category->listorder -1;
|
||||
$output = executeQuery('blog.updateCategoryParent', $target_args);
|
||||
$output = $oDocumentController->updateCategory($target_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// xml파일 재생성
|
||||
$xml_file = $this->makeXmlFile($target_category->module_srl);
|
||||
$xml_file = $oDocumentController->makeCategoryXmlFile($source_category->module_srl);
|
||||
|
||||
// return 변수 설정
|
||||
$this->add('xml_file', $xml_file);
|
||||
|
|
@ -474,104 +456,11 @@
|
|||
$module_srl = Context::get('module_srl');
|
||||
|
||||
// xml파일 재생성
|
||||
$xml_file = $this->makeXmlFile($module_srl);
|
||||
$oDocumentController = &getController('document');
|
||||
$xml_file = $oDocumentController->makeCategoryXmlFile($module_srl);
|
||||
|
||||
// return 값 설정
|
||||
$this->add('xml_file',$xml_file);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 블로그 카테고리를 xml파일로 저장
|
||||
**/
|
||||
function makeXmlFile($module_srl) {
|
||||
// xml파일 생성시 필요한 정보가 없으면 그냥 return
|
||||
if(!$module_srl) return;
|
||||
|
||||
// 캐시 파일의 이름을 지정
|
||||
$xml_file = sprintf("./files/cache/blog_category/%s.xml.php", $module_srl);
|
||||
|
||||
// 모듈정보를 구해옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$this->module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
|
||||
// DB에서 module_srl 에 해당하는 메뉴 아이템 목록을 listorder순으로 구해옴
|
||||
$oBlogModel = &getModel('blog');
|
||||
$list = $oBlogModel->getCategoryList($module_srl);
|
||||
|
||||
// 구해온 데이터가 없다면 노드데이터가 없는 xml 파일만 생성
|
||||
if(!$list) {
|
||||
$xml_buff = "<root />";
|
||||
FileHandler::writeFile($xml_file, $xml_buff);
|
||||
return $xml_file;
|
||||
}
|
||||
|
||||
// 구해온 데이터가 하나라면 array로 바꾸어줌
|
||||
if(!is_array($list)) $list = array($list);
|
||||
|
||||
// 루프를 돌면서 tree 구성
|
||||
$list_count = count($list);
|
||||
for($i=0;$i<$list_count;$i++) {
|
||||
$node = $list[$i];
|
||||
$category_srl = $node->category_srl;
|
||||
$parent_srl = $node->parent_srl;
|
||||
|
||||
$tree[$parent_srl][$category_srl] = $node;
|
||||
}
|
||||
|
||||
// 세션 디렉토리 변경 구문
|
||||
$php_script = "";
|
||||
if(!ini_get('session.auto_start')) {
|
||||
if(!is_dir("./files/sessions")) {
|
||||
FileHandler::makeDir("./files/sessions");
|
||||
@chmod("./files/sessions", 0777);
|
||||
}
|
||||
|
||||
$php_script = 'session_cache_limiter("no-cache, must-revalidate"); ini_set("session.gc_maxlifetime", "18000"); if(is_dir("../../sessions")) session_save_path("../../sessions/"); session_start();';
|
||||
}
|
||||
|
||||
// xml 캐시 파일 생성
|
||||
$xml_buff = sprintf('<?php %s header("Content-Type: text/xml; charset=UTF-8"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); @session_start(); ?><root>%s</root>', $php_script, $this->getXmlTree($tree[0], $tree));
|
||||
|
||||
// 파일 저장
|
||||
FileHandler::writeFile($xml_file, $xml_buff);
|
||||
return $xml_file;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief array로 정렬된 노드들을 parent_srl을 참조하면서 recursive하게 돌면서 xml 데이터 생성
|
||||
* 메뉴 xml파일은 node라는 tag가 중첩으로 사용되며 이 xml doc으로 관리자 페이지에서 메뉴를 구성해줌\n
|
||||
* (tree_menu.js 에서 xml파일을 바로 읽고 tree menu를 구현)
|
||||
**/
|
||||
function getXmlTree($source_node, $tree) {
|
||||
if(!$source_node) return;
|
||||
foreach($source_node as $category_srl => $node) {
|
||||
$child_buff = "";
|
||||
|
||||
// 자식 노드의 데이터 가져옴
|
||||
if($category_srl && $tree[$category_srl]) $child_buff = $this->getXmlTree($tree[$category_srl], $tree);
|
||||
|
||||
// 변수 정리
|
||||
$name = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->name);
|
||||
$expand = $node->expand;
|
||||
$group_srls = $node->group_srls;
|
||||
|
||||
// node->group_srls값이 있으면
|
||||
if($group_srls) $group_check_code = sprintf('($_SESSION["is_admin"]==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$group_srls);
|
||||
else $group_check_code = "true";
|
||||
|
||||
$attribute = sprintf(
|
||||
'node_srl="%s" text="<?=(%s?"%s":"")?>" url="%s" expand="%s" ',
|
||||
$category_srl,
|
||||
$group_check_code,
|
||||
$name,
|
||||
getUrl('','mid',$this->module_info->mid,'category',$category_srl),
|
||||
$expand
|
||||
);
|
||||
|
||||
if($child_buff) $buff .= sprintf('<node %s>%s</node>', $attribute, $child_buff);
|
||||
else $buff .= sprintf('<node %s />', $attribute);
|
||||
}
|
||||
return $buff;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -28,22 +28,22 @@
|
|||
$group_list = $oMemberModel->getGroups();
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
$oBlogModel = &getModel('blog');
|
||||
$oDocumentModel = &getModel('document');
|
||||
|
||||
// parent_srl이 있고 category_srl 이 없으면 하부 메뉴 추가임
|
||||
if(!$category_srl && $parent_srl) {
|
||||
// 상위 메뉴의 정보를 가져옴
|
||||
$parent_info = $oBlogModel->getCategoryInfo($parent_srl);
|
||||
$parent_info = $oDocumentModel->getCategory($parent_srl);
|
||||
|
||||
// 추가하려는 메뉴의 기본 변수 설정
|
||||
$category_info->category_srl = getNextSequence();
|
||||
$category_info->parent_srl = $parent_srl;
|
||||
$category_info->parent_category_name = $parent_info->name;
|
||||
$category_info->parent_category_title = $parent_info->title;
|
||||
|
||||
// root에 메뉴 추가하거나 기존 메뉴의 수정일 경우
|
||||
} else {
|
||||
// category_srl 이 있으면 해당 메뉴의 정보를 가져온다
|
||||
if($category_srl) $category_info = $oBlogModel->getCategoryInfo($category_srl);
|
||||
if($category_srl) $category_info = $oDocumentModel->getCategory($category_srl);
|
||||
|
||||
// 찾아진 값이 없다면 신규 메뉴 추가로 보고 category_srl값만 구해줌
|
||||
if(!$category_info->category_srl) {
|
||||
|
|
|
|||