위젯 검출 정규 표현식을 수정

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2892 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-11-01 10:28:42 +00:00
parent f9896fe51a
commit 90aa62a6ac
993 changed files with 9190 additions and 10457 deletions

View file

@ -12,9 +12,17 @@
* 파일내에서 이루어집니다. * 파일내에서 이루어집니다.
**/ **/
// called_position가 before_module_init 이고 module이 admin이 아닐 경우 // module이 admin이면 패스~ called_position가 before_display_content 이고 module이 admin이 아닐 경우
if($called_position == 'before_module_init' && !$GLOBALS['__counter_addon_called__']) { if(
if($this->module != 'admin') Context::addJsFile('./modules/counter/tpl/js/counter.js'); Context::get('act')=='procFileDelete' ||
$GLOBALS['__counter_addon_called__'] = true; 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();
?> ?>

View file

@ -65,7 +65,7 @@
// 로그인된 사용자 정보를 구함 // 로그인된 사용자 정보를 구함
$logged_info = Context::get('logged_info'); $logged_info = Context::get('logged_info');
$member_srl = Context::get('member_srl'); $member_srl = Context::get('target_srl');
// 템플릿에서 사용되기 전의 menu_list를 가져옴 // 템플릿에서 사용되기 전의 menu_list를 가져옴
$menu_list = $this->get('menu_list'); $menu_list = $this->get('menu_list');

View file

@ -2,237 +2,7 @@
if(!defined("__ZBXE__")) exit(); if(!defined("__ZBXE__")) exit();
/** /**
* @file point.addon.php * @brief 포인트 애드온은 포인트 모듈의 trigger 기능으로 인하여 이상 사용하지 않음
* @author zero (zero@nzeo.com)
* @brief 포인트 애드온
*
* 포인트 시스템 모듈에 설정된 내용을 토대로 하여 포인트를 부여/차감하고,
* 다운로드를 금지시키고,
* 회원 이름 앞에 레벨 아이콘을 표시한다.
**/ **/
return;
// 관리자 모듈이면 패스~
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);
}
}
?> ?>

View file

@ -74,18 +74,18 @@
else $this->lang_type = $this->db_info->lang_type; 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']); $accept_lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach($lang_files as $key => $val) { foreach($langs as $val) {
list($lang_prefix) = explode('.',$val); list($lang_prefix, $lang_text) = explode(',',$val);
$lang_supported[] = $lang_prefix; $lang_supported[$lang_prefix] = $lang_text;
if(!$this->lang_type && ereg($lang_prefix, strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']))) { if(!$this->lang_type && ereg($lang_prefix, strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']))) {
$this->lang_type = $lang_prefix; $this->lang_type = $lang_prefix;
setcookie('lang_type', $this->lang_type, time()+60*60*24*365, '/'); 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"; if(!$this->lang_type) $this->lang_type = "en";
Context::set('lang_supported', $lang_supported); Context::set('lang_supported', $lang_supported);
@ -282,6 +282,7 @@
function setLangType($lang_type = 'ko') { function setLangType($lang_type = 'ko') {
$oContext = &Context::getInstance(); $oContext = &Context::getInstance();
$oContext->_setLangType($lang_type); $oContext->_setLangType($lang_type);
$_SESSION['lang_type'] = $lang_type;
} }
/** /**

View file

@ -534,8 +534,8 @@
foreach($output->columns as $key => $val) { foreach($output->columns as $key => $val) {
$name = $val['name']; $name = $val['name'];
$alias = $val['alias']; $alias = $val['alias'];
if($name == '*') { if(substr($name,-1) == '*') {
$column_list[] = '*'; $column_list[] = $name;
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) { } elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
if($alias) $column_list[] = sprintf('"%s" as "%s"', $name, $alias); if($alias) $column_list[] = sprintf('"%s" as "%s"', $name, $alias);
else $column_list[] = sprintf('"%s"',$name); else $column_list[] = sprintf('"%s"',$name);

View file

@ -484,8 +484,8 @@
foreach($output->columns as $key => $val) { foreach($output->columns as $key => $val) {
$name = $val['name']; $name = $val['name'];
$alias = $val['alias']; $alias = $val['alias'];
if($name == '*') { if(substr($name,-1) == '*') {
$column_list[] = '*'; $column_list[] = $name;
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) { } elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
if($alias) $column_list[] = sprintf('`%s` as `%s`', $name, $alias); if($alias) $column_list[] = sprintf('`%s` as `%s`', $name, $alias);
else $column_list[] = sprintf('`%s`',$name); else $column_list[] = sprintf('`%s`',$name);

View file

@ -493,8 +493,8 @@
foreach($output->columns as $key => $val) { foreach($output->columns as $key => $val) {
$name = $val['name']; $name = $val['name'];
$alias = $val['alias']; $alias = $val['alias'];
if($name == '*') { if(substr($name,-1) == '*') {
$column_list[] = '*'; $column_list[] = $name;
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) { } elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
if($alias) $column_list[] = sprintf('`%s` as `%s`', $name, $alias); if($alias) $column_list[] = sprintf('`%s` as `%s`', $name, $alias);
else $column_list[] = sprintf('`%s`',$name); else $column_list[] = sprintf('`%s`',$name);

View file

@ -505,8 +505,8 @@
foreach($output->columns as $key => $val) { foreach($output->columns as $key => $val) {
$name = $val['name']; $name = $val['name'];
$alias = $val['alias']; $alias = $val['alias'];
if($name == '*') { if(substr($name,-1) == '*') {
$column_list[] = '*'; $column_list[] = $name;
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) { } elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
if($alias) $column_list[] = sprintf('%s as %s', $name, $alias); if($alias) $column_list[] = sprintf('%s as %s', $name, $alias);
else $column_list[] = sprintf('%s',$name); else $column_list[] = sprintf('%s',$name);

View file

@ -546,8 +546,8 @@
foreach($output->columns as $key => $val) { foreach($output->columns as $key => $val) {
$name = $val['name']; $name = $val['name'];
$alias = $val['alias']; $alias = $val['alias'];
if($name == '*') { if(substr($name,-1) == '*') {
$column_list[] = '*'; $column_list[] = $name;
} elseif(strpos($name,'.')===false && strpos($name,'(')===false) { } elseif(strpos($name,'.')===false && strpos($name,'(')===false) {
if($alias) $column_list[] = sprintf('%s as %s', $name, $alias); if($alias) $column_list[] = sprintf('%s as %s', $name, $alias);
else $column_list[] = sprintf('%s',$name); else $column_list[] = sprintf('%s',$name);

View file

@ -32,7 +32,7 @@
// 요청방식에 따라 출력을 별도로 // 요청방식에 따라 출력을 별도로
if(Context::getResponseMethod()!="XMLRPC") { if(Context::getResponseMethod()!="XMLRPC") {
Context::set('content', $content); 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}(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); $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); if($this->gz_enabled) print ob_gzhandler($content, 5);
else print $content; else print $content;
} }

View file

@ -209,6 +209,23 @@
break; 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을 구함 // 타겟 파일의 type을 구함
if(!$target_type) $target_type = $type; if(!$target_type) $target_type = $type;
$target_type = strtolower($target_type); $target_type = strtolower($target_type);
@ -220,24 +237,6 @@
$white = @imagecolorallocate($thumb, 255,255,255); $white = @imagecolorallocate($thumb, 255,255,255);
@imagefilledrectangle($thumb,0,0,$resize_width-1,$resize_height-1,$white); @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) { switch($type) {
case 'gif' : case 'gif' :
@ -269,8 +268,13 @@
$new_width = (int)($width * $per); $new_width = (int)($width * $per);
$new_height = (int)($height * $per); $new_height = (int)($height * $per);
$x = (int)($resize_width/2 - $new_width/2); if($thumbnail_type == 'crop') {
$y = (int)($resize_height/2 - $new_height/2); $x = (int)($resize_width/2 - $new_width/2);
$y = (int)($resize_height/2 - $new_height/2);
} else {
$x = 0;
$y = 0;
}
if($source) { if($source) {
if(function_exists('imagecopyresampled')) @imagecopyresampled($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height); if(function_exists('imagecopyresampled')) @imagecopyresampled($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height);

View file

@ -107,6 +107,13 @@
// mid값이 있을 경우 mid값을 세팅 // mid값이 있을 경우 mid값을 세팅
if($this->mid) Context::set('mid', $this->mid, true); 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]; 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();
}
} }
?> ?>

View file

@ -96,10 +96,13 @@
// css 일경우 background:url() 변경 // css 일경우 background:url() 변경
if($type == "css") $str = $this->replaceCssPath($file, $str); 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); if($type!="css" && Context::isGzEnabled()) $content_buff = ob_gzhandler($content_buff, 5);
$content_file = eregi_replace("\.php$","",$filename); $content_file = eregi_replace("\.php$","",$filename);
$content_filename = str_replace($this->cache_path, '', $content_file); $content_filename = str_replace($this->cache_path, '', $content_file);
@ -142,6 +145,8 @@ EndOfBuff;
$str = preg_replace('!\/([^\/]*)\/\.\.\/!is','/', $str); $str = preg_replace('!\/([^\/]*)\/\.\.\/!is','/', $str);
$str = preg_replace('!@charset([^;]*?);!is','',$str);
return $str; return $str;
} }

View file

@ -41,6 +41,9 @@
if(!is_dir(sprintf('./widgets/%s/',$widget))) return; if(!is_dir(sprintf('./widgets/%s/',$widget))) return;
$cache_path = './files/cache/widget_cache/';
if(!is_dir($cache_path)) FileHandler::makeDir($cache_path);
// $widget의 객체를 받음 // $widget의 객체를 받음
$oWidget = WidgetHandler::getObject($widget); $oWidget = WidgetHandler::getObject($widget);

View file

@ -1,167 +1,211 @@
/* a.button, span.button, del.button{
http://www.hedgerwow.com/360/dhtml/css-round-button/demo.php
*/ display:-moz-inline-box;
display:inline-block;
a.button, span.button, del.button { cursor:pointer;
display:-moz-inline-box; border:none;
display:inline-block;
cursor:pointer;
border:none;
font-size:0; font-size:0;
line-height:0; line-height:0;
/* /*
for Safari, read this first for Safari, read this first
http://creativebits.org/webdev/safari_background_repeat_bug_fix http://creativebits.org/webdev/safari_background_repeat_bug_fix
*/ */
background-position:0 -3px; background-position:0 0;
background-repeat:no-repeat; background-repeat:no-repeat;
height:24px; height:30px;
text-decoration:none; text-decoration:none;
color:#2e523b; color:#2e523b;
font-style:normal; font-style:normal;
margin:0 6px 0px 0; margin:0 6px 0px 0;
padding:0 10px 0 0; padding:0 10px 0 0;
vertical-align:middle; vertical-align:middle;
padding-top:-2px; padding-top:-2px;
position:relative; _position:relative;
_width:10px; _top:-4px;
_overflow-y:hidden; _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.png);
_background-image:url(../tpl/images/form_buttons.gif); _background-image:url(../tpl/images/form_buttons.gif);
} }
a.button span, span.button button, span.button input, del.button span { a.button span, span.button button, span.button input, del.button span{
white-space:nowrap;
cursor:pointer; white-space:nowrap;
cursor:pointer;
color:#222; color:#222;
display:-moz-inline-box; display:-moz-inline-box;
display:inline-block; display:inline-block;
line-height:1; line-height:1;
letter-spacing:0 !important; letter-spacing:0 !important;
font-family:"Arial" !important;
font-size:12px !important; font-size:12px !important;
font-style:normal; font-style:normal;
background-color:transparent; background-color:transparent;
background-position:100% -3px; background-position:100% 0;
background-repeat:no-repeat; background-repeat:no-repeat;
height:24px; height:30px;
padding:4px 11px 0 7px; padding:8px 20px 0 10px;
margin:0 -18px 0 6px; margin:0 -16px 0 10px;
border:none; border:none;
vertical-align:text-top; zoom:1;
zoom:1; _position:relative;
_position:relative; _padding-left:0px;
_padding:3px 13px 0 4px; _padding-right:12px;
_margin:0 -10px 0 4px; _margin-right:-10px;
_display:block; _display:block;
_top:0; _right:-5px;
_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 { html.safari a.button span,
line-height:1.3; html.safari del.button span{
line-height:1.3;
} }
html.safari span.button button { html.safari span.button button{
line-height:2.6; 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; outline:none;
} }
del.button{ del.button{
/* cursor:not-allowed; */ /* cursor:not-allowed; */
background-position:0 -123px; background-position:0 -120px;
} }
del.button span { del.button span{
cursor:default; cursor:default;
color:#aaa !important; 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 { span.button button, span.button input{
padding:0 6px 0 0; padding-top:0px;
line-height:2.5;/*Opera need this*/ line-height:2.5;/*Opera need this*/
} }
/** optional **/ /** optional **/
/* /*
a.button:visited{ a.button:visited{
color:#aaa; color:#aaa;
} }
*/ */
/*Hover Style*/ /*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 { a.button:hover,
background-position:100% -63px; 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; a.button:active, a.button:focus span{
/* cursor:not-allowed; */ 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*/ /*Optional hack for IE6 to simulate :hover selector*/
span.button button, del.button span, span.button input { span.button button, del.button span, span.button input{
_behavior:expression(
(function(el){
if( typeof( behavior_onMouseEnter) == 'undefined'){
behavior_onMouseEnter = function(el) { _behavior:expression(
var dEl = this.parentNode; (function(el){
var sClass = dEl.className ;
dEl.__defaultClassName = sClass ; if( typeof( behavior_onMouseEnter) == 'undefined'){
dEl.className = sClass + ' button-behavior-hover';
this.setCapture();
}; 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));
} }

View file

@ -27,7 +27,7 @@ IE7 & IE6 & Below
html { width:100%; } html { width:100%; }
body { margin:0; font-size:.75em; font-family:sans-serif;} body { margin:0; font-size:.75em; font-family:sans-serif;}
img { border:none; } img { border:none; }
label { cursor:pointer; position:relative; left:5px; } label { cursor:pointer; }
form { margin:0; padding:0; } form { margin:0; padding:0; }
.iePngFix { behavior:url(./common/js/iePngFix.htc); } .iePngFix { behavior:url(./common/js/iePngFix.htc); }
@ -66,15 +66,16 @@ a.bold { font-weight:bold; }
.folder_closer { display: none; } .folder_closer { display: none; }
.folder_area { display: none; } .folder_area { display: none; }
.zbxe_widget_output { background-image:url(../tpl/images/widget_text.gif) no-repeat center bottom; display:block;} .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; } .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; } #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; } #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; } #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; } #fororiginalimage { z-index:1002; }
#closeOriginalImageBtn { position:absolute; right:8px; top:5px; cursor:pointer; width:50px; height:12px; z-index:1003; } #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; } #popup_menu_area { 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;} #popup_menu_area .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;} #popup_menu_area .item { color:#333333; cursor:pointer; margin:0; padding:3px 0 3px 0; 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 .item_on { color:#333333; font-weight:bold; margin:0; cursor:pointer; padding:3px 0 3px 0; height:22px; letter-spacing:-1px; white-space:nowrap;}

View file

@ -456,68 +456,91 @@ function origImageDragMouseMove(evt) {
} }
/** /**
* @brief 이름을 클릭하였을 경우 메뉴를 보여주는 함수 * @brief 이름, 게시글등을 클릭하였을 경우 팝업 메뉴를 보여주는 함수
* 이름 클릭시 MemberModel::getMemberMenu 호출하여 결과를 보여줌 (사용자의 속성에 따라 메뉴가 달라지고 애드온의 연결을 하기 위해서임)
**/ **/
xAddEventListener(document, 'click', chkMemberMenu); xAddEventListener(document, 'click', chkPopupMenu);
xAddEventListener(window, 'load', function() { setMemberMenuObjCursor(xGetElementsByTagName("div")); xGetElementsByTagName("span"); } ); var loaded_popup_menu_list = new Array();
var loaded_member_menu_list = new Array();
// className = "member_*" 일 경우의 object가 클릭되면 해당 회원의 메뉴를 출력함 // 클릭 이벤트 발생시 이벤트가 일어난 대상을 검사하여 적절한 규칙에 맞으면 처리
function chkMemberMenu(evt) { function chkPopupMenu(evt) {
var area = xGetElementById("membermenuarea"); // 이전에 호출되었을지 모르는 팝업메뉴 숨김
var area = xGetElementById("popup_menu_area");
if(!area) return; if(!area) return;
if(area.style.visibility!="hidden") area.style.visibility="hidden"; if(area.style.visibility!="hidden") area.style.visibility="hidden";
// 이벤트 대상이 없으면 무시
var e = new xEvent(evt); var e = new xEvent(evt);
if(!e) return; if(!e) return;
// 대상의 객체 구함
var obj = e.target; var obj = e.target;
while(obj) { if(!obj) return;
if(obj && obj.className && obj.className.search("member_")!=-1) break;
// obj의 nodeName이 div나 span이 아니면 나올대까지 상위를 찾음
if(obj && obj.nodeName != 'DIV' && obj.nodeName != 'SPAN') {
obj = obj.parentNode; obj = obj.parentNode;
} }
if(!obj || !obj.className || obj.className.search("member_")==-1) { if(!obj || (obj.nodeName != 'DIV' && obj.nodeName != 'SPAN')) return;
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); // action이름을 규칙에 맞게 작성
if(!member_srl) return; var action_name = "get" + module_name.substr(0,1).toUpperCase() + module_name.substr(1,module_name.length-1) + "Menu";
// 현재 글의 mid, module를 구함
var mid = current_mid;
// 서버에 메뉴를 요청 // 서버에 메뉴를 요청
var params = new Array(); var params = new Array();
params["member_srl"] = member_srl; params["target_srl"] = target_srl;
params["cur_mid"] = mid; params["cur_mid"] = current_mid;
params["cur_act"] = current_url.getQuery('act'); params["cur_act"] = current_url.getQuery('act');
params["menu_id"] = menu_id;
params["page_x"] = e.pageX; params["page_x"] = e.pageX;
params["page_y"] = e.pageY; params["page_y"] = e.pageY;
var response_tags = new Array("error","message","menu_list"); var response_tags = new Array("error","message","menu_list");
if(loaded_member_menu_list[member_srl]) { if(loaded_popup_menu_list[menu_id]) {
params["menu_list"] = loaded_member_menu_list[member_srl]; params["menu_list"] = loaded_popup_menu_list[menu_id];
displayMemberMenu(params, response_tags, params); displayPopupMenu(params, response_tags, params);
return; return;
} }
show_waiting_message = false; 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; show_waiting_message = true;
} }
function displayMemberMenu(ret_obj, response_tags, params) { function displayPopupMenu(ret_obj, response_tags, params) {
var area = xGetElementById("membermenuarea"); var area = xGetElementById("popup_menu_area");
var menu_list = ret_obj['menu_list']; 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 = ""; var html = "";
if(loaded_member_menu_list[member_srl]) { if(loaded_popup_menu_list[menu_id]) {
html = loaded_member_menu_list[member_srl]; html = loaded_popup_menu_list[menu_id];
} else { } else {
var infos = menu_list.split("\n"); var infos = menu_list.split("\n");
if(infos.length) { 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 func = info_str.substr(pos+1, info_str.length).trim();
var className = "item"; var className = "item";
//if(i==infos.length-1) className = "item";
if(!str || !func) continue; 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) { if(html) {
// 레이어 출력 // 레이어 출력
xInnerHtml('membermenuarea', "<div class=\"box\">"+html+"</div>"); xInnerHtml('popup_menu_area', "<div class=\"box\">"+html+"</div>");
xWidth(area, xWidth(area)); xWidth(area, xWidth(area));
xLeft(area, params["page_x"]); xLeft(area, params["page_x"]);
xTop(area, params["page_y"]); xTop(area, params["page_y"]);
@ -554,19 +577,24 @@ function displayMemberMenu(ret_obj, response_tags, params) {
} }
} }
// className = "member_*" 의 object의 cursor를 pointer로 본경 /**
function setMemberMenuObjCursor(obj) { * @brief 추천/비추천,스크랩,신고기능등 특정 srl에 대한 특정 module/action을 호출하는 함수
for (var i = 0; i < obj.length; ++i) { **/
var node = obj[i]; function doCallModuleAction(module, action, target_srl) {
if(node.className && node.className.search(/member_([0-9]+)/ig)!=-1) { var params = new Array();
var member_srl = parseInt(node.className.replace(/member_([0-9]+)/ig,'$1').replace(/([^0-9]*)/ig,''),10); params['target_srl'] = target_srl;
if(member_srl<1) continue; params['cur_mid'] = current_mid;
node.style.cursor = "pointer"; 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) { function open_calendar(fo_id, day_str, callback_func) {
if(typeof(day_str)=="undefined") day_str = ""; if(typeof(day_str)=="undefined") day_str = "";
@ -601,8 +629,9 @@ function doDocumentPreview(obj) {
fo_obj = fo_obj.parentNode; fo_obj = fo_obj.parentNode;
} }
if(fo_obj.nodeName != "FORM") return; 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"); 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) { function viewSkinInfo(module, skin) {
popopen("./?module=module&act=dispModuleSkinInfo&selected_module="+module+"&skin="+skin, 'SkinInfo'); popopen("./?module=module&act=dispModuleSkinInfo&selected_module="+module+"&skin="+skin, 'SkinInfo');

View file

@ -239,7 +239,7 @@ function drawNode(parent_node, menu_id) {
// html 작성 // 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;">'; if(hasChild) html+= '<span style="cursor:pointer;" onclick="toggleFolder(\''+zone_id+'\');return false;">';
else html+= '<span>'; else html+= '<span>';

View file

@ -21,11 +21,15 @@
$lang->cmd_comment_registration = 'Add Comment'; $lang->cmd_comment_registration = 'Add Comment';
$lang->cmd_insert = 'Insert'; $lang->cmd_insert = 'Insert';
$lang->cmd_save = 'Save'; $lang->cmd_save = 'Save';
$lang->cmd_load = '불러오기';
$lang->cmd_input = 'Input'; $lang->cmd_input = 'Input';
$lang->cmd_search = 'Search'; $lang->cmd_search = 'Search';
$lang->cmd_cancel = 'Cancel'; $lang->cmd_cancel = 'Cancel';
$lang->cmd_back = 'Go Back'; $lang->cmd_back = 'Go Back';
$lang->cmd_vote = 'Vote'; $lang->cmd_vote = 'Vote';
$lang->cmd_vote_down = '비추천';
$lang->cmd_declare = '신고';
$lang->cmd_declared_list = '신고 목록';
$lang->cmd_copy = 'Copy'; $lang->cmd_copy = 'Copy';
$lang->cmd_move = 'Move'; $lang->cmd_move = 'Move';
$lang->cmd_move_up = 'Up'; $lang->cmd_move_up = 'Up';
@ -37,12 +41,14 @@
$lang->cmd_select = 'Select'; $lang->cmd_select = 'Select';
$lang->cmd_select_all = 'Select All'; $lang->cmd_select_all = 'Select All';
$lang->cmd_unselect_all = 'Deselect All'; $lang->cmd_unselect_all = 'Deselect All';
$lang->cmd_reverse_all = 'Reverse';
$lang->cmd_close_all = 'Close All'; $lang->cmd_close_all = 'Close All';
$lang->cmd_open_all = 'Open All'; $lang->cmd_open_all = 'Open All';
$lang->cmd_reload = 'Reload'; $lang->cmd_reload = 'Reload';
$lang->cmd_close = 'Close'; $lang->cmd_close = 'Close';
$lang->cmd_open = 'Open'; $lang->cmd_open = 'Open';
$lang->cmd_setup = 'Configure'; $lang->cmd_setup = 'Configure';
$lang->cmd_addition_setup = '추가 설정';
$lang->cmd_option = 'Option'; $lang->cmd_option = 'Option';
$lang->cmd_apply = 'Apply'; $lang->cmd_apply = 'Apply';
$lang->cmd_open_calendar = 'Select a Date'; $lang->cmd_open_calendar = 'Select a Date';
@ -52,6 +58,7 @@
$lang->cmd_preview = 'Preview'; $lang->cmd_preview = 'Preview';
$lang->cmd_reset = 'Reset'; $lang->cmd_reset = 'Reset';
$lang->cmd_remake_cache = "Re-create cache file"; $lang->cmd_remake_cache = "Re-create cache file";
$lang->cmd_publish = "발행";
$lang->enable = 'Enable'; $lang->enable = 'Enable';
$lang->disable = 'Disable'; $lang->disable = 'Disable';
@ -78,6 +85,8 @@
$lang->browser_title = 'Browser Title'; $lang->browser_title = 'Browser Title';
$lang->title = 'Subject'; $lang->title = 'Subject';
$lang->title_content = 'Subject+Content'; $lang->title_content = 'Subject+Content';
$lang->topic = '주제';
$lang->replies = '응답';
$lang->content = 'Content'; $lang->content = 'Content';
$lang->document = 'Article'; $lang->document = 'Article';
$lang->comment = 'Comment'; $lang->comment = 'Comment';
@ -120,6 +129,7 @@
$lang->date = 'Date'; $lang->date = 'Date';
$lang->regdate = 'Registered Date'; $lang->regdate = 'Registered Date';
$lang->last_update = 'Latest Update'; $lang->last_update = 'Latest Update';
$lang->last_post = '최근 등록';
$lang->signup_date = 'Join Date'; $lang->signup_date = 'Join Date';
$lang->last_login = 'Latest Login'; $lang->last_login = 'Latest Login';
$lang->first_page = 'First Page'; $lang->first_page = 'First Page';
@ -168,6 +178,7 @@
$lang->msg_module_is_not_standalone = 'Requested module cannot be executed independently'; $lang->msg_module_is_not_standalone = 'Requested module cannot be executed independently';
$lang->success_registed = 'Registered successfully'; $lang->success_registed = 'Registered successfully';
$lang->success_declared = '신고되었습니다';
$lang->success_updated = 'Updated successfully'; $lang->success_updated = 'Updated successfully';
$lang->success_deleted = 'Deleted successfully'; $lang->success_deleted = 'Deleted successfully';
$lang->success_voted = 'Voted successfully'; $lang->success_voted = 'Voted successfully';
@ -175,11 +186,13 @@
$lang->success_sended = 'Sent successfully'; $lang->success_sended = 'Sent successfully';
$lang->success_reset = 'Reset successfully'; $lang->success_reset = 'Reset successfully';
$lang->success_leaved = 'All member data have been deleted completely.'; $lang->success_leaved = 'All member data have been deleted completely.';
$lang->success_saved = '저장되었습니다';
$lang->fail_to_delete = 'Could not be deleted'; $lang->fail_to_delete = 'Could not be deleted';
$lang->fail_to_move = 'Could not be moved'; $lang->fail_to_move = 'Could not be moved';
$lang->failed_voted = 'Could not vote'; $lang->failed_voted = 'Could not vote';
$lang->failed_declared = '신고를 하실 수 없습니다';
$lang->fail_to_delete_have_children = 'Please try again after removing replies first'; $lang->fail_to_delete_have_children = 'Please try again after removing replies first';
$lang->confirm_submit = 'Are you sure to submit?'; $lang->confirm_submit = 'Are you sure to submit?';

View file

@ -21,11 +21,15 @@
$lang->cmd_comment_registration = 'Agregar commentarios'; $lang->cmd_comment_registration = 'Agregar commentarios';
$lang->cmd_insert = 'Insertar'; $lang->cmd_insert = 'Insertar';
$lang->cmd_save = 'Guardar'; $lang->cmd_save = 'Guardar';
$lang->cmd_load = '불러오기';
$lang->cmd_input = 'Ingresar'; $lang->cmd_input = 'Ingresar';
$lang->cmd_search = 'Buscar'; $lang->cmd_search = 'Buscar';
$lang->cmd_cancel = 'Cancelar'; $lang->cmd_cancel = 'Cancelar';
$lang->cmd_back = 'Atrás'; $lang->cmd_back = 'Atrás';
$lang->cmd_vote = 'Recomendar'; $lang->cmd_vote = 'Recomendar';
$lang->cmd_vote_down = '비추천';
$lang->cmd_declare = '신고';
$lang->cmd_declared_list = '신고 목록';
$lang->cmd_copy = 'Copia'; $lang->cmd_copy = 'Copia';
$lang->cmd_move = 'Mover'; $lang->cmd_move = 'Mover';
$lang->cmd_move_up = 'Arriba'; $lang->cmd_move_up = 'Arriba';
@ -43,6 +47,7 @@
$lang->cmd_close = 'Cerrar'; $lang->cmd_close = 'Cerrar';
$lang->cmd_open = 'Abrir'; $lang->cmd_open = 'Abrir';
$lang->cmd_setup = 'Configuración'; $lang->cmd_setup = 'Configuración';
$lang->cmd_addition_setup = '추가 설정';
$lang->cmd_option = 'Opción'; $lang->cmd_option = 'Opción';
$lang->cmd_apply = 'Aplicar'; $lang->cmd_apply = 'Aplicar';
$lang->cmd_open_calendar = 'Abrir el calendario'; $lang->cmd_open_calendar = 'Abrir el calendario';
@ -51,6 +56,8 @@
$lang->cmd_scrap = 'Scrap'; $lang->cmd_scrap = 'Scrap';
$lang->cmd_preview = 'Previo'; $lang->cmd_preview = 'Previo';
$lang->cmd_reset = 'Rehacer'; $lang->cmd_reset = 'Rehacer';
$lang->cmd_remake_cache = "캐시파일 재생성";
$lang->cmd_publish = "발행";
$lang->enable = 'Activar'; $lang->enable = 'Activar';
$lang->disable = 'Desactivar'; $lang->disable = 'Desactivar';
@ -77,6 +84,8 @@
$lang->browser_title = 'Título del navegador'; $lang->browser_title = 'Título del navegador';
$lang->title = 'Título'; $lang->title = 'Título';
$lang->title_content = 'Título+Contenido'; $lang->title_content = 'Título+Contenido';
$lang->topic = '주제';
$lang->replies = '응답';
$lang->content = 'Contenidos'; $lang->content = 'Contenidos';
$lang->document = 'Documentos'; $lang->document = 'Documentos';
$lang->comment = 'Commentarios'; $lang->comment = 'Commentarios';
@ -119,6 +128,7 @@
$lang->date = 'Fecha'; $lang->date = 'Fecha';
$lang->regdate = 'Fecha publicada'; $lang->regdate = 'Fecha publicada';
$lang->last_update = 'Ultima actualización'; $lang->last_update = 'Ultima actualización';
$lang->last_post = '최근 등록';
$lang->signup_date = 'Fecha del registro'; $lang->signup_date = 'Fecha del registro';
$lang->last_login = 'Ultima conección'; $lang->last_login = 'Ultima conección';
$lang->first_page = 'Primera página'; $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->msg_module_is_not_standalone = 'Módulo solicitado no puede ser ejecutado independientemente';
$lang->success_registed = 'Agregado con éxito'; $lang->success_registed = 'Agregado con éxito';
$lang->success_declared = '신고되었습니다';
$lang->success_updated = 'Actualizado con éxito'; $lang->success_updated = 'Actualizado con éxito';
$lang->success_deleted = 'Boarrado con éxito'; $lang->success_deleted = 'Boarrado con éxito';
$lang->success_voted = 'Recomendado con éxito'; $lang->success_voted = 'Recomendado con éxito';
@ -174,11 +185,13 @@
$lang->success_sended = 'Enviado con éxito'; $lang->success_sended = 'Enviado con éxito';
$lang->success_reset = 'Reajustado con éxito'; $lang->success_reset = 'Reajustado con éxito';
$lang->success_leaved = 'Abandonado con éxito'; $lang->success_leaved = 'Abandonado con éxito';
$lang->success_saved = '저장되었습니다';
$lang->fail_to_delete = 'No puede ser borrado'; $lang->fail_to_delete = 'No puede ser borrado';
$lang->fail_to_move = 'No puede ser movido'; $lang->fail_to_move = 'No puede ser movido';
$lang->failed_voted = 'No puede ser recomendado'; $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->fail_to_delete_have_children = 'No puede ser borrado, ya que el mensaje posee respuestas ';
$lang->confirm_submit = '¿Está seguro que desea enviar?'; $lang->confirm_submit = '¿Está seguro que desea enviar?';

View file

@ -21,11 +21,15 @@
$lang->cmd_comment_registration = 'Ajouter le Commentaire'; $lang->cmd_comment_registration = 'Ajouter le Commentaire';
$lang->cmd_insert = 'Insérer'; $lang->cmd_insert = 'Insérer';
$lang->cmd_save = 'Economiser'; $lang->cmd_save = 'Economiser';
$lang->cmd_load = '불러오기';
$lang->cmd_input = 'Entrer'; $lang->cmd_input = 'Entrer';
$lang->cmd_search = 'Rechercher'; $lang->cmd_search = 'Rechercher';
$lang->cmd_cancel = 'Decommander'; $lang->cmd_cancel = 'Decommander';
$lang->cmd_back = 'Retour'; $lang->cmd_back = 'Retour';
$lang->cmd_vote = 'Voter'; $lang->cmd_vote = 'Voter';
$lang->cmd_vote_down = '비추천';
$lang->cmd_declare = '신고';
$lang->cmd_declared_list = '신고 목록';
$lang->cmd_copy = 'Copie'; $lang->cmd_copy = 'Copie';
$lang->cmd_move = 'Deplacer'; $lang->cmd_move = 'Deplacer';
$lang->cmd_move_up = 'Relever'; $lang->cmd_move_up = 'Relever';
@ -43,11 +47,17 @@
$lang->cmd_close = 'Fermer'; $lang->cmd_close = 'Fermer';
$lang->cmd_open = 'Cloturer'; $lang->cmd_open = 'Cloturer';
$lang->cmd_setup = 'Configurer'; $lang->cmd_setup = 'Configurer';
$lang->cmd_addition_setup = '추가 설정';
$lang->cmd_option = 'Option'; $lang->cmd_option = 'Option';
$lang->cmd_apply = 'Appliquer'; $lang->cmd_apply = 'Appliquer';
$lang->cmd_open_calendar = 'Choisir la Date'; $lang->cmd_open_calendar = 'Choisir la Date';
$lang->cmd_send = 'Envoyer'; $lang->cmd_send = 'Envoyer';
$lang->cmd_print = 'Imprimer'; $lang->cmd_print = 'Imprimer';
$lang->cmd_scrap = '스크랩';
$lang->cmd_preview = '미리 보기';
$lang->cmd_reset = '초기화';
$lang->cmd_remake_cache = "캐시파일 재생성";
$lang->cmd_publish = "발행";
$lang->enable = 'Permettre'; $lang->enable = 'Permettre';
$lang->disable = 'Neutraliser'; $lang->disable = 'Neutraliser';
@ -74,6 +84,8 @@
$lang->browser_title = 'Titre de Navigateur'; $lang->browser_title = 'Titre de Navigateur';
$lang->title = 'Titre'; $lang->title = 'Titre';
$lang->title_content = 'Titre + Contenu'; $lang->title_content = 'Titre + Contenu';
$lang->topic = '주제';
$lang->replies = '응답';
$lang->content = 'Contenu'; $lang->content = 'Contenu';
$lang->document = 'Article'; $lang->document = 'Article';
$lang->comment = 'Commentaire'; $lang->comment = 'Commentaire';
@ -115,6 +127,7 @@
$lang->date = 'Date'; $lang->date = 'Date';
$lang->regdate = 'Date d\'Enregistrement'; $lang->regdate = 'Date d\'Enregistrement';
$lang->last_update = 'La Dernière Mise a Jour'; $lang->last_update = 'La Dernière Mise a Jour';
$lang->last_post = '최근 등록';
$lang->signup_date = 'Date d\'Enregistrement'; $lang->signup_date = 'Date d\'Enregistrement';
$lang->last_login = 'La Dernière Ouverture'; $lang->last_login = 'La Dernière Ouverture';
$lang->first_page = 'Première Page'; $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->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_registed = 'L\'enregistrement a été avec succès exécuté.';
$lang->success_declared = '신고되었습니다';
$lang->success_updated = 'Avec succès mis a jour.'; $lang->success_updated = 'Avec succès mis a jour.';
$lang->success_deleted = 'Avec succès supprime'; $lang->success_deleted = 'Avec succès supprime';
$lang->success_voted = 'Avec succès voté'; $lang->success_voted = 'Avec succès voté';
@ -170,11 +184,13 @@
$lang->success_sended = 'Avec succès envoyé'; $lang->success_sended = 'Avec succès envoyé';
$lang->success_reset = 'Avec succès remisé'; $lang->success_reset = 'Avec succès remisé';
$lang->success_leaved = 'Avec succès fait cécession'; $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_delete = 'N\'a pas pu être supprimé.';
$lang->fail_to_move = 'N\'a pas pu être déplacé'; $lang->fail_to_move = 'N\'a pas pu être déplacé';
$lang->failed_voted = 'La demande de voter a échoué'; $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->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?'; $lang->confirm_submit = 'Etes-vous sur vous voulez-vous soumettre?';

View file

@ -21,11 +21,15 @@
$lang->cmd_comment_registration = 'コメント登録'; $lang->cmd_comment_registration = 'コメント登録';
$lang->cmd_insert = '挿入'; $lang->cmd_insert = '挿入';
$lang->cmd_save = '保存'; $lang->cmd_save = '保存';
$lang->cmd_load = '불러오기';
$lang->cmd_input = '入力'; $lang->cmd_input = '入力';
$lang->cmd_search = '検索'; $lang->cmd_search = '検索';
$lang->cmd_cancel = 'キャンセル'; $lang->cmd_cancel = 'キャンセル';
$lang->cmd_back = '戻る'; $lang->cmd_back = '戻る';
$lang->cmd_vote = '推薦'; $lang->cmd_vote = '推薦';
$lang->cmd_vote_down = '비추천';
$lang->cmd_declare = '신고';
$lang->cmd_declared_list = '신고 목록';
$lang->cmd_copy = 'コピー'; $lang->cmd_copy = 'コピー';
$lang->cmd_move = '移動'; $lang->cmd_move = '移動';
$lang->cmd_move_up = '上へ'; $lang->cmd_move_up = '上へ';
@ -43,6 +47,7 @@
$lang->cmd_close = '閉じる'; $lang->cmd_close = '閉じる';
$lang->cmd_open = '開く'; $lang->cmd_open = '開く';
$lang->cmd_setup = '設定'; $lang->cmd_setup = '設定';
$lang->cmd_addition_setup = '추가 설정';
$lang->cmd_apply = '適用'; $lang->cmd_apply = '適用';
$lang->cmd_option = 'オプション'; $lang->cmd_option = 'オプション';
$lang->cmd_open_calendar = 'カレンダーを開く'; $lang->cmd_open_calendar = 'カレンダーを開く';
@ -52,6 +57,7 @@
$lang->cmd_preview = 'プレビュー'; $lang->cmd_preview = 'プレビュー';
$lang->cmd_reset = '初期化'; $lang->cmd_reset = '初期化';
$lang->cmd_remake_cache = "キャッシュファイル再生成"; $lang->cmd_remake_cache = "キャッシュファイル再生成";
$lang->cmd_publish = "발행";
$lang->enable = '可能'; $lang->enable = '可能';
$lang->disable = '不可'; $lang->disable = '不可';
@ -78,6 +84,8 @@
$lang->browser_title = 'ブラウザタイトル'; $lang->browser_title = 'ブラウザタイトル';
$lang->title = 'タイトル'; $lang->title = 'タイトル';
$lang->title_content = 'タイトル+内容'; $lang->title_content = 'タイトル+内容';
$lang->topic = '주제';
$lang->replies = '응답';
$lang->content = '内容'; $lang->content = '内容';
$lang->document = '書き込み'; $lang->document = '書き込み';
$lang->comment = 'コメント'; $lang->comment = 'コメント';
@ -120,6 +128,7 @@
$lang->date = '年月日'; $lang->date = '年月日';
$lang->regdate = '登録日'; $lang->regdate = '登録日';
$lang->last_update = '最近修正日'; $lang->last_update = '最近修正日';
$lang->last_post = '최근 등록';
$lang->signup_date = '加入日'; $lang->signup_date = '加入日';
$lang->last_login = '最近ログイン'; $lang->last_login = '最近ログイン';
$lang->first_page = '最初のページ'; $lang->first_page = '最初のページ';
@ -168,6 +177,7 @@
$lang->msg_module_is_not_standalone = 'このモジュールはスタンドアローンでは作動しません。'; $lang->msg_module_is_not_standalone = 'このモジュールはスタンドアローンでは作動しません。';
$lang->success_registed = '登録しました。'; $lang->success_registed = '登録しました。';
$lang->success_declared = '신고되었습니다';
$lang->success_updated = '修正しました。'; $lang->success_updated = '修正しました。';
$lang->success_deleted = '削除しました。'; $lang->success_deleted = '削除しました。';
$lang->success_voted = '推薦しました。'; $lang->success_voted = '推薦しました。';
@ -175,11 +185,13 @@
$lang->success_sended = '送信しました。'; $lang->success_sended = '送信しました。';
$lang->success_reset = '初期化しました。'; $lang->success_reset = '初期化しました。';
$lang->success_leaved = '脱会しました。'; $lang->success_leaved = '脱会しました。';
$lang->success_saved = '저장되었습니다';
$lang->fail_to_delete = '削除に失敗しました。'; $lang->fail_to_delete = '削除に失敗しました。';
$lang->fail_to_move = '移動に失敗しました。'; $lang->fail_to_move = '移動に失敗しました。';
$lang->failed_voted = '推薦できません。'; $lang->failed_voted = '推薦できません。';
$lang->failed_declared = '신고를 하실 수 없습니다';
$lang->fail_to_delete_have_children = '返信の書き込みがあり、削除できません。'; $lang->fail_to_delete_have_children = '返信の書き込みがあり、削除できません。';
$lang->confirm_submit = '登録しますか?'; $lang->confirm_submit = '登録しますか?';

View file

@ -21,11 +21,15 @@
$lang->cmd_comment_registration = '댓글 등록'; $lang->cmd_comment_registration = '댓글 등록';
$lang->cmd_insert = '추가'; $lang->cmd_insert = '추가';
$lang->cmd_save = '저장'; $lang->cmd_save = '저장';
$lang->cmd_load = '불러오기';
$lang->cmd_input = '입력'; $lang->cmd_input = '입력';
$lang->cmd_search = '검색'; $lang->cmd_search = '검색';
$lang->cmd_cancel = '취소'; $lang->cmd_cancel = '취소';
$lang->cmd_back = '돌아가기'; $lang->cmd_back = '돌아가기';
$lang->cmd_vote = '추천'; $lang->cmd_vote = '추천';
$lang->cmd_vote_down = '비추천';
$lang->cmd_declare = '신고';
$lang->cmd_declared_list = '신고 목록';
$lang->cmd_copy = '복사'; $lang->cmd_copy = '복사';
$lang->cmd_move = '이동'; $lang->cmd_move = '이동';
$lang->cmd_move_up = '위로'; $lang->cmd_move_up = '위로';
@ -44,6 +48,7 @@
$lang->cmd_close = '닫기'; $lang->cmd_close = '닫기';
$lang->cmd_open = '열기'; $lang->cmd_open = '열기';
$lang->cmd_setup = '설정'; $lang->cmd_setup = '설정';
$lang->cmd_addition_setup = '추가 설정';
$lang->cmd_option = '옵션'; $lang->cmd_option = '옵션';
$lang->cmd_apply = '적용'; $lang->cmd_apply = '적용';
$lang->cmd_open_calendar = '날짜 선택'; $lang->cmd_open_calendar = '날짜 선택';
@ -53,6 +58,7 @@
$lang->cmd_preview = '미리 보기'; $lang->cmd_preview = '미리 보기';
$lang->cmd_reset = '초기화'; $lang->cmd_reset = '초기화';
$lang->cmd_remake_cache = "캐시파일 재생성"; $lang->cmd_remake_cache = "캐시파일 재생성";
$lang->cmd_publish = "발행";
$lang->enable = '가능'; $lang->enable = '가능';
$lang->disable = '불가능'; $lang->disable = '불가능';
@ -79,6 +85,8 @@
$lang->browser_title = '브라우저 제목'; $lang->browser_title = '브라우저 제목';
$lang->title = '제목'; $lang->title = '제목';
$lang->title_content = '제목+내용'; $lang->title_content = '제목+내용';
$lang->topic = '주제';
$lang->replies = '응답';
$lang->content = '내용'; $lang->content = '내용';
$lang->document = '게시물'; $lang->document = '게시물';
$lang->comment = '댓글'; $lang->comment = '댓글';
@ -120,7 +128,8 @@
$lang->member_count = '회원수'; $lang->member_count = '회원수';
$lang->date = '날짜'; $lang->date = '날짜';
$lang->regdate = '등록일'; $lang->regdate = '등록일';
$lang->last_update = '최근수정일'; $lang->last_update = '최근 수정일';
$lang->last_post = '최근 등록';
$lang->signup_date = '가입일'; $lang->signup_date = '가입일';
$lang->last_login = '최근로그인'; $lang->last_login = '최근로그인';
$lang->first_page = '첫페이지'; $lang->first_page = '첫페이지';
@ -169,6 +178,7 @@
$lang->msg_module_is_not_standalone = '요청하신 모듈은 독립적으로 동작할 수가 없습니다'; $lang->msg_module_is_not_standalone = '요청하신 모듈은 독립적으로 동작할 수가 없습니다';
$lang->success_registed = '등록되었습니다'; $lang->success_registed = '등록되었습니다';
$lang->success_declared = '신고되었습니다';
$lang->success_updated = '수정되었습니다'; $lang->success_updated = '수정되었습니다';
$lang->success_deleted = '삭제되었습니다'; $lang->success_deleted = '삭제되었습니다';
$lang->success_voted = '추천되었습니다'; $lang->success_voted = '추천되었습니다';
@ -176,11 +186,13 @@
$lang->success_sended = '발송되었습니다'; $lang->success_sended = '발송되었습니다';
$lang->success_reset = '초기화되었습니다'; $lang->success_reset = '초기화되었습니다';
$lang->success_leaved = '탈퇴되었습니다'; $lang->success_leaved = '탈퇴되었습니다';
$lang->success_saved = '저장되었습니다';
$lang->fail_to_delete = '삭제 실패하였습니다'; $lang->fail_to_delete = '삭제 실패하였습니다';
$lang->fail_to_move = '이동 실패하였습니다'; $lang->fail_to_move = '이동 실패하였습니다';
$lang->failed_voted = '추천하실 수 없습니다'; $lang->failed_voted = '추천하실 수 없습니다';
$lang->failed_declared = '신고를 하실 수 없습니다';
$lang->fail_to_delete_have_children = '답글이 있어서 삭제할 수 없습니다'; $lang->fail_to_delete_have_children = '답글이 있어서 삭제할 수 없습니다';
$lang->confirm_submit = '등록하시겠습니까?'; $lang->confirm_submit = '등록하시겠습니까?';

5
common/lang/lang.info Normal file
View file

@ -0,0 +1,5 @@
ko,한국어
en,English
zh-CN,中文
jp,日本語
es,Español

View file

@ -21,11 +21,15 @@
$lang->cmd_comment_registration = '提交评论'; $lang->cmd_comment_registration = '提交评论';
$lang->cmd_insert = '添加'; $lang->cmd_insert = '添加';
$lang->cmd_save = '保存'; $lang->cmd_save = '保存';
$lang->cmd_load = '불러오기';
$lang->cmd_input = '输入'; $lang->cmd_input = '输入';
$lang->cmd_search = '搜索'; $lang->cmd_search = '搜索';
$lang->cmd_cancel = '取消'; $lang->cmd_cancel = '取消';
$lang->cmd_back = '返回'; $lang->cmd_back = '返回';
$lang->cmd_vote = '推荐'; $lang->cmd_vote = '推荐';
$lang->cmd_vote_down = '비추천';
$lang->cmd_declare = '신고';
$lang->cmd_declared_list = '신고 목록';
$lang->cmd_copy = '复制'; $lang->cmd_copy = '复制';
$lang->cmd_move = '查看'; $lang->cmd_move = '查看';
$lang->cmd_move_up = '向上'; $lang->cmd_move_up = '向上';
@ -44,6 +48,7 @@
$lang->cmd_close = '关闭'; $lang->cmd_close = '关闭';
$lang->cmd_open = '打开'; $lang->cmd_open = '打开';
$lang->cmd_setup = '设置'; $lang->cmd_setup = '设置';
$lang->cmd_addition_setup = '추가 설정';
$lang->cmd_option = '选项'; $lang->cmd_option = '选项';
$lang->cmd_apply = '应用'; $lang->cmd_apply = '应用';
$lang->cmd_open_calendar = '选择日期'; $lang->cmd_open_calendar = '选择日期';
@ -53,6 +58,7 @@
$lang->cmd_preview = '预览'; $lang->cmd_preview = '预览';
$lang->cmd_reset = '初始化'; $lang->cmd_reset = '初始化';
$lang->cmd_remake_cache = "重新生成缓冲文件"; $lang->cmd_remake_cache = "重新生成缓冲文件";
$lang->cmd_publish = "발행";
$lang->enable = '可用'; $lang->enable = '可用';
$lang->disable = '禁用'; $lang->disable = '禁用';
@ -79,6 +85,8 @@
$lang->browser_title = '浏览器标题'; $lang->browser_title = '浏览器标题';
$lang->title = '标题'; $lang->title = '标题';
$lang->title_content = '标题+内容'; $lang->title_content = '标题+内容';
$lang->topic = '주제';
$lang->replies = '응답';
$lang->content = '内容'; $lang->content = '内容';
$lang->document = '文章'; $lang->document = '文章';
$lang->comment = '评论'; $lang->comment = '评论';
@ -121,6 +129,7 @@
$lang->date = '日期'; $lang->date = '日期';
$lang->regdate = '登录日期'; $lang->regdate = '登录日期';
$lang->last_update = '最后更新'; $lang->last_update = '最后更新';
$lang->last_post = '최근 등록';
$lang->signup_date = '注册日期'; $lang->signup_date = '注册日期';
$lang->last_login = '最近登录'; $lang->last_login = '最近登录';
$lang->first_page = '第一页'; $lang->first_page = '第一页';
@ -169,6 +178,7 @@
$lang->msg_module_is_not_standalone = '您请求的模块不能单独执行'; $lang->msg_module_is_not_standalone = '您请求的模块不能单独执行';
$lang->success_registed = '提交成功!'; $lang->success_registed = '提交成功!';
$lang->success_declared = '신고되었습니다';
$lang->success_updated = '修改成功!'; $lang->success_updated = '修改成功!';
$lang->success_deleted = '删除成功!'; $lang->success_deleted = '删除成功!';
$lang->success_voted = '推荐成功!'; $lang->success_voted = '推荐成功!';
@ -176,11 +186,13 @@
$lang->success_sended = '发送成功!'; $lang->success_sended = '发送成功!';
$lang->success_reset = '初始化成功'; $lang->success_reset = '初始化成功';
$lang->success_leaved = '注销成功!'; $lang->success_leaved = '注销成功!';
$lang->success_saved = '저장되었습니다';
$lang->fail_to_delete = '删除成功!'; $lang->fail_to_delete = '删除成功!';
$lang->fail_to_move = '移动成功!'; $lang->fail_to_move = '移动成功!';
$lang->failed_voted = '您不能推荐!'; $lang->failed_voted = '您不能推荐!';
$lang->failed_declared = '신고를 하실 수 없습니다';
$lang->fail_to_delete_have_children = '不能删除有回复的评论!'; $lang->fail_to_delete_have_children = '不能删除有回复的评论!';
$lang->confirm_submit = '确定要提交吗?'; $lang->confirm_submit = '确定要提交吗?';

View file

@ -7,14 +7,14 @@
$min_year = 1900;//년 (0년 부터) $min_year = 1900;//년 (0년 부터)
#################### ####################
$year = $_REQUEST['year']; $year = htmlspecialchars($_REQUEST['year']);
$month = $_REQUEST['month']; $month = htmlspecialchars($_REQUEST['month']);
$method = $_REQUEST['method']; $method = htmlspecialchars($_REQUEST['method']);
$fo_id = $_REQUEST['fo_id']; $fo_id = htmlspecialchars($_REQUEST['fo_id']);
$callback_func = $_REQUEST['callback_func']; $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)) { if($day_str && strlen($day_str)) {
$year = substr($day_str, 0, 4); $year = substr($day_str, 0, 4);
$month = substr($day_str, 4, 2); $month = substr($day_str, 4, 2);
@ -151,7 +151,7 @@ $before_month_month_day = convertDatetoDay( $month == 1 ? $year - 1 : $year, $mo
<body> <body>
<div id="popup_content" > <div id="popup_content" >
<div id="popHeadder"> <div id="popHeadder">
<h1>Calendar</h1> <h3>Calendar</h3>
</div> </div>
<form action="./calendar.php" method="get"> <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="calendar">
<div class="yymm"> <div class="yymm">
<div class="yy"> <div class="yy">
<a href="./calendar.php?fo_id=<?php echo $fo_id?>&amp;year=<?php echo $year?>&amp;month=<?php echo $month?>&amp;method=prev_year&amp;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?>&amp;year=<?php echo $year?>&amp;month=<?php echo $month?>&amp;method=next_year&amp;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>
<div class="mm"> <div class="mm">
<p><?php echo $monthLongName[$month]?></p> <p><?php echo $monthLongName[$month]?></p>
<a href="./calendar.php?fo_id=<?php echo $fo_id?>&amp;year=<?php echo $year?>&amp;month=<?php echo $month?>&amp;method=prev_month&amp;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?>&amp;year=<?php echo $year?>&amp;month=<?php echo $month?>&amp;method=next_month&amp;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>
<div class="go"> <div class="go">
@ -184,7 +183,7 @@ $before_month_month_day = convertDatetoDay( $month == 1 ? $year - 1 : $year, $mo
</select> </select>
</div> </div>
<br /><br /> <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> </div>
<table cellspacing="0" class="dd"> <table cellspacing="0" class="dd">

View file

@ -32,7 +32,7 @@
<img src="./images/original_image_box_close.gif" alt="close original image" border="0" onclick="closeOriginalImage()" id="closeOriginalImageBtn"/> <img src="./images/original_image_box_close.gif" alt="close original image" border="0" onclick="closeOriginalImage()" id="closeOriginalImageBtn"/>
</div> </div>
</div> </div>
<div id="membermenuarea"></div> <div id="popup_menu_area"></div>
{Context::getHtmlFooter()} {Context::getHtmlFooter()}

View file

@ -198,13 +198,17 @@
* 손쉽고 확실한 변환을 위해 2byte unicode로 변형한후 처리를 한다 * 손쉽고 확실한 변환을 위해 2byte unicode로 변형한후 처리를 한다
**/ **/
function cut_str($string, $cut_size, $tail='...') { function cut_str($string, $cut_size, $tail='...') {
if(!function_exists('iconv')) return $string;
if(!$string || !$cut_size) 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); if(function_exists('iconv')) {
return iconv("UCS-2","UTF-8",$output_str).$tail; $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); $year = (int)substr($str,0,4);
$month = (int)substr($str,4,2); $month = (int)substr($str,4,2);
$day = (int)substr($str,6,2); $day = (int)substr($str,6,2);
if(strlen($str) <= 8) if(strlen($str) <= 8) {
{ $gap = 0;
$gap = 0; } else {
} $time_zone = $GLOBALS['_time_zone'];
else if($time_zone<0) $to = -1; else $to = 1;
{ $t_hour = substr($time_zone,1,2)*$to;
$time_zone = $GLOBALS['_time_zone']; $t_min = substr($time_zone,3,2)*$to;
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"); $server_time_zone = date("O");
if($server_time_zone<0) $so = -1; else $so = 1; if($server_time_zone<0) $so = -1; else $so = 1;
$c_hour = substr($server_time_zone,1,2)*$so; $c_hour = substr($server_time_zone,1,2)*$so;
$c_min = substr($server_time_zone,3,2)*$so; $c_min = substr($server_time_zone,3,2)*$so;
$g_min = $t_min - $c_min; $g_min = $t_min - $c_min;
$g_hour = $t_hour - $c_hour; $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; return mktime($hour, $min, $sec, $month?$month:1, $day?$day:1, $year)+$gap;
} }
@ -379,9 +380,6 @@
// script code 제거 // script code 제거
$content = preg_replace("!<script(.*?)<\/script>!is","",$content); $content = preg_replace("!<script(.*?)<\/script>!is","",$content);
// 제로보드XE전용 주석 태그를 본문에서 제거
$content = preg_replace('!<\!--(Before|After)Document\(([0-9]+),([0-9]+)\)-->!is', '', $content);
return $content; return $content;
} }

View file

@ -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> <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"> <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"> <ul id="selectLang">
<!--@foreach($lang_supported as $val)--><!--@if($val != $lang_type)--> <!--@foreach($lang_supported as $key => $val)--><!--@if($key!= $lang_type)-->
<li><a href="#" onclick="doChangeLangType('{$val}');return false;">{$val}</a></li> <li><a href="#" onclick="doChangeLangType('{$key}');return false;">{$val}</a></li>
<!--@end--><!--@end--> <!--@end--><!--@end-->
</ul> </ul>
</div> </div>
@ -67,12 +67,10 @@
<input type="radio" name="search_target" value="title_content" id="search_target3" /> <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> <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>
<!--
<li> <li>
<input type="radio" name="search_target" value="comment" id="search_target4" /> <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> <label for="search_target4" onclick="chkIsKind(4, '{$lang->comment}'); return false;" onmouseover="this.className='on'" onmouseout="this.style.background='none'">{$lang->comment}</label>
</li> </li>
-->
</ul> </ul>
<input name="is_keyword" type="text" class="inputText" title="keyword" /> <input name="is_keyword" type="text" class="inputText" title="keyword" />

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?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="ko">애드온</title>
<title xml:lang="en">Addon</title> <title xml:lang="en">Addon</title>
<title xml:lang="es">Addon</title> <title xml:lang="es">Addon</title>

View file

@ -3,30 +3,32 @@
</div> </div>
<div id="popBody"> <div id="popBody">
<table cellspacing="0" class="tableType5">
<table cellspacing="0" class="adminTable">
<col width="100" /> <col width="100" />
<col /> <col />
<tr> <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> <td>{$addon_info->title} ver. {$addon_info->version}</td>
</tr> </tr>
<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> <td class="blue"><a href="mailto:{$addon_info->author->email_address}">{$addon_info->author->name}</a></td>
</tr> </tr>
<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> <td class="blue"><a href="{$addon_info->author->homepage}" onclick="window.open(this.href);return false;">{$addon_info->author->homepage}</a></td>
</tr> </tr>
<tr> <tr>
<th scope="row"><label for="textfield2">{$lang->regdate}</label></th> <th scope="row">{$lang->regdate}</th>
<td>{$addon_info->author->date}<td> <td>{$addon_info->author->date}</td>
</tr> </tr>
<tr> <tr>
<th scope="row" class="borderBottomNone">{$lang->description}</th> <th scope="row">{$lang->description}</th>
<td class="borderBottomNone">{nl2br($addon_info->author->description)}</td> <td>{nl2br(trim($addon_info->author->description))}</td>
</tr> </tr>
</table> </table>
</div> </div>
<div id="popFooter" class="tCenter"> <div id="popFooter" class="tCenter">

View file

@ -10,11 +10,18 @@
</form> </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> <thead>
<tr> <tr>
<th scope="col">{$lang->addon_name}</th> <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->author}</th>
<th scope="col">{$lang->date}</th> <th scope="col">{$lang->date}</th>
<th scope="col">{$lang->installed_path}</th> <th scope="col">{$lang->installed_path}</th>
@ -50,7 +57,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td colspan="7" class="colSpan"> <td colspan="6">
{nl2br($val->author->description)} {nl2br($val->author->description)}
</td> </td>
</tr> </tr>

View file

@ -8,7 +8,7 @@
<input type="hidden" name="addon_name" value="{$addon_info->addon_name}" /> <input type="hidden" name="addon_name" value="{$addon_info->addon_name}" />
<div id="popBody"> <div id="popBody">
<table cellspacing="0" class="tableType5"> <table cellspacing="0" class="adminTable">
<col width="100" /> <col width="100" />
<col /> <col />
<tr> <tr>
@ -29,7 +29,7 @@
<th scope="row">{$val->title}</th> <th scope="row">{$val->title}</th>
<td> <td>
<input type="text" name="{$val->name}" value="{$val->value}" class="inputTypeText w100" /> <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> </td>
</tr> </tr>
<!--@end--> <!--@end-->

View file

@ -24,10 +24,11 @@
$this->setLayoutPath($this->getTemplatePath()); $this->setLayoutPath($this->getTemplatePath());
$this->setLayoutFile('layout.html'); $this->setLayoutFile('layout.html');
// shortcut 가져오기 // 설치된 모듈 목록 가져오기
$oAdminModel = &getAdminModel('admin'); $oModuleModel = &getModel('module');
$shortcut_list = $oAdminModel->getShortCuts(); $installed_module_list = $oModuleModel->getModulesXmlInfo();
Context::set('shortcut_list', $shortcut_list); Context::set('installed_module_list', $installed_module_list);
// 현재 실행중인 모듈을 구해 놓음 // 현재 실행중인 모듈을 구해 놓음
$running_module = strtolower(preg_replace('/([a-z]+)([A-Z]+)([a-z]+)(.*)/', '\\2\\3', $this->act)); $running_module = strtolower(preg_replace('/([a-z]+)([A-Z]+)([a-z]+)(.*)/', '\\2\\3', $this->act));

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?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="ko">관리자 모듈</title>
<title xml:lang="en">Administrator Module</title> <title xml:lang="en">Administrator Module</title>
<title xml:lang="es">Módulo del administrador</title> <title xml:lang="es">Módulo del administrador</title>

View file

@ -5,6 +5,17 @@
* @brief English Language Pack (Only basic words are included here) * @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->newest_news = "Latest News";
$lang->env_setup = "Setting"; $lang->env_setup = "Setting";

View file

@ -5,6 +5,17 @@
* @sumario Paquete del idioma español (sólo los básicos) * @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->newest_news = "Noticias recientes";
$lang->env_setup = "Configuración"; $lang->env_setup = "Configuración";

View file

@ -5,6 +5,17 @@
* @brief 日本語言語パッケージ(基本的な内容のみ) * @brief 日本語言語パッケージ(基本的な内容のみ)
**/ **/
$lang->admin_info = '관리자 정보';
$lang->admin_index = '관리자 초기 페이지';
$lang->module_category_title = array(
'service' => '서비스형 모듈',
'manager' => '관리형 모듈',
'utility' => '기능성 모듈',
'accessory' => '부가 모듈',
'base' => '기본 모듈',
);
$lang->newest_news = "最新ニュース"; $lang->newest_news = "最新ニュース";
$lang->env_setup = "環境設定"; $lang->env_setup = "環境設定";

View file

@ -5,6 +5,17 @@
* @brief 한국어 언어팩 (기본적인 내용만 수록) * @brief 한국어 언어팩 (기본적인 내용만 수록)
**/ **/
$lang->admin_info = '관리자 정보';
$lang->admin_index = '관리자 초기 페이지';
$lang->module_category_title = array(
'service' => '서비스형 모듈',
'manager' => '관리형 모듈',
'utility' => '기능성 모듈',
'accessory' => '부가 모듈',
'base' => '기본 모듈',
);
$lang->newest_news = "최신 소식"; $lang->newest_news = "최신 소식";
$lang->env_setup = "환경 설정"; $lang->env_setup = "환경 설정";

View file

@ -5,6 +5,17 @@
* @brief 简体中文语言包 (只收录基本内容) * @brief 简体中文语言包 (只收录基本内容)
**/ **/
$lang->admin_info = '관리자 정보';
$lang->admin_index = '관리자 초기 페이지';
$lang->module_category_title = array(
'service' => '서비스형 모듈',
'manager' => '관리형 모듈',
'utility' => '기능성 모듈',
'accessory' => '부가 모듈',
'base' => '기본 모듈',
);
$lang->newest_news = "最新消息"; $lang->newest_news = "最新消息";
$lang->env_setup = "环境设置"; $lang->env_setup = "环境设置";

View file

@ -15,29 +15,76 @@ IE7 Only
*/ */
body { margin:0; } 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; }
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 .gray { color:#9d9d9d;} 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;} .header4 { overflow:hidden;}
h4 { font-size:1em; color:#f2250d; 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
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 .vr { font-weight:normal; color:#d1d1d1; margin:0 .5em;} .header4 div.summary .vr { font-weight:normal; color:#d1d1d1; margin:0 .5em;}
.header4 div.summary em { color:#ff1d00; font-style:normal;} .header4 div.summary em { color:#ff1d00; font-style:normal;}
.header4 table.summary { border-right:1px solid #f2f2f2; width:100%; height:35px; margin-bottom:15px;} .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 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;} .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 ----- */ .localNavigation { float:right; margin-bottom:10px;}
.localNavigation li { float:left; margin-right:.3em; list-style:none;}
/* ----- Content | Start ----- */
/* localNavigation */
.localNavigation { float:right;margin-bottom:10px;}
.localNavigation li { float:left; margin-right:.3em;}
.localNavigation li.on { margin-right:.3em;} .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 a:hover { border:2px solid #ff1a00; color:#f2250d; text-decoration:none;}
.localNavigation li.on a { color:#f2250d; border:2px solid #ff1a00; text-decoration:none;} .localNavigation li.on a { color:#f2250d; border:2px solid #ff1a00; text-decoration:none;}
/* pageNavigation */ .tableSummaryType1 { font:bold .9em Tahoma; color:#a0a0a0; margin-bottom:10px;}
.pageNavigation { display:block; padding:1.5em 0 2em 0; text-align:center; font:bold .8em Tahoma; } .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 { 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:hover { background:#F7F7F7; text-decoration:none; }
.pageNavigation a:visited { color:#999999;} .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 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; } .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 { text-align:right; clear:both; width:100%;}
.adminSearch fieldset { border:none; display:inline; overflow:visible; } .adminSearch fieldset { border:none; display:inline; overflow:visible; }
.adminSearch * { vertical-align:middle;} .adminSearch * { vertical-align:middle;}
.title { font-size:1.5em; font-weight:bold; margin-top:2em; margin-bottom:.5em; color:#666666; } .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; }
.desc { font-size:1em; margin-bottom:.5em; color:#ADADAD;}
.w700 { width:700px; } #popHeadder { height:40px; background:url(../images/popupTopBg.png) repeat-x left top; padding:10px;}
.w5 { width:5em; } #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; } .layout_editor { width:100%; height:500px; border:0px; font-size:1em; }
.mid_list { width:7em; } .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; }

View file

@ -1,65 +1,40 @@
@charset "utf-8"; @charset "utf-8";
/*
NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/)
Jeong, Chan Myeong 070601~070630
*/
/* body { background:url("../images/admin_background.gif") repeat-x left top; background-color:#DBD8D3; }
Used Hack
IE6 & Below #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; }
{ property:value; _property:value;}
IE7 Only #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; }
*:first-child+html #selector
*/ #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 */ #adminMenuContent { width:179px; float:left; margin-top:70px; padding-bottom:20px; vertical-align:top; background:none; overflow:hidden; border-right:1px solid #B2B2B2; }
li { list-style:none;}
a { text-decoration:none;}
a:hover { text-decoration:underline;}
address { font-style:normal;}
/* Special Class Selector */ #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;}
.fr { float:right;} #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; }
.fl { float:left;} #adminMenuContent .adminInfoBox .adminInfo div.expandButton { float:right; height:16px; overflow:hidden; }
.fwB { font-weight:bold;} #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;} #adminMenuContent ul { width:170px; overflow:hidden; }
#header h1 { float:left; width:180px; height:71px; position:relative; background:url(../images/h1_bg.gif) no-repeat;} #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; }
#header h1 img { position:absolute; top:29px; left:29px;} #adminMenuContent ul li:hover { background-color:#EFE6D3; border-left:1px solid #E3E3E2; border-right:1px solid #E3E3E2;}
#header #logout { width:470px; height:71px; float:right; background:url(../images/headerBgEnd.png) no-repeat right top;} #adminMenuContent li.on { background-color:#EFE6D3; border-left:1px solid #E3E3E2; border-right:1px solid #E3E3E2;}
#header #logout a { float:right; position:relative; top:29px; right:24px;} #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; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 724 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 908 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 608 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 617 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 623 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -3,8 +3,10 @@
<h3>{$lang->welcome_to_zeroboard_xe}</h3> <h3>{$lang->welcome_to_zeroboard_xe}</h3>
<table cellspacing="0" class="tableType4"> <div class="gap1"></div>
<col width="200" />
<table cellspacing="0" class="adminTable">
<col width="150" />
<col /> <col />
<caption>{$lang->env_information}</caption> <caption>{$lang->env_information}</caption>
<!--@if($current_version < $released_version)--> <!--@if($current_version < $released_version)-->
@ -30,8 +32,8 @@
</table> </table>
<form action="./" method="get" onsubmit="return procFilter(this, update_env_config);"> <form action="./" method="get" onsubmit="return procFilter(this, update_env_config);">
<table cellspacing="0" class="tableType4"> <table cellspacing="0" class="adminTable">
<col width="200" /> <col width="150" />
<col /> <col />
<caption>{$lang->env_setup}</caption> <caption>{$lang->env_setup}</caption>
<tr> <tr>
@ -52,10 +54,10 @@
<th scope="row">Lang</th> <th scope="row">Lang</th>
<td> <td>
<select name="lang_type" onchange="doChangeLangType(this)"> <select name="lang_type" onchange="doChangeLangType(this)">
<option value="{$lang_type}">{$lang_type}</option> <option value="{$lang_type}">{$lang_supported[$lang_type]}</option>
<!--@foreach($lang_supported as $val)--> <!--@foreach($lang_supported as $key => $val)-->
<!--@if($val != $lang_type)--> <!--@if($key != $lang_type)-->
<option value="{$val}">{$val}</option> <option value="{$key}">{$val}</option>
<!--@end--> <!--@end-->
<!--@end--> <!--@end-->
</select> </select>
@ -73,30 +75,27 @@
<p>{$lang->about_time_zone}</p> <p>{$lang->about_time_zone}</p>
</td> </td>
</tr> </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> </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> </form>
<div class="admin_news clear"> <div class="admin_news clear">
<!--@if($news)--> <!--@if($news)-->
<table cellspacing="0" class="tableType1"> <table cellspacing="0" class="adminTable">
<col width="120" />
<col />
<caption>{$lang->newest_news}</caption> <caption>{$lang->newest_news}</caption>
<thead>
<tr>
<th scope="col">{$lang->title}</th>
<th scope="col">{$lang->regdate}</th>
</tr>
</thead>
<tbody> <tbody>
<!--@foreach($news as $key => $val)--> <!--@foreach($news as $key => $val)-->
<tr> <tr>
<td class="left">&nbsp;<a href="{$val->url}" onclick="window.open(this.href);return false;">{$val->title}</a></td> <th class="tahoma">{zdate($val->date,"Y-m-d H:i")}</th>
<td class="tahoma">{zdate($val->date,"Y-m-d H:i")}</td> <td><a href="{$val->url}" onclick="window.open(this.href);return false;">{$val->title}</a></td>
</tr> </tr>
<!--@end--> <!--@end-->
</tbody> </tbody>
@ -106,27 +105,16 @@
<div class="admin_link"> <div class="admin_link">
<!-- 사용자 링크 --> <!-- 사용자 링크 -->
<table cellspacing="0" class="tableType3"> <table cellspacing="0" class="adminTable">
<col width="250" />
<col />
<caption>{$lang->zeroboard_xe_user_links}</caption> <caption>{$lang->zeroboard_xe_user_links}</caption>
<!--@foreach($lang->xe_user_links as $key => $val)--> <!--@foreach($lang->xe_user_links as $key => $val)-->
<tr> <tr>
<th scope="col">{$key}</th> <td><a href="{$val}" onclick="winopen(this.href); return false;">{$key}</a></td>
<td class="left blue"><a href="{$val}" onclick="winopen(this.href); return false;">{$val}</a></td>
</tr> </tr>
<!--@end--> <!--@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)--> <!--@foreach($lang->xe_developer_links as $key => $val)-->
<tr> <tr>
<th scope="col">{$key}</th> <td><a href="{$val}" onclick="winopen(this.href); return false;">{$key}</a></td>
<td class="left blue"><a href="{$val}" onclick="winopen(this.href); return false;">{$val}</a></td>
</tr> </tr>
<!--@end--> <!--@end-->
</table> </table>

View file

@ -11,6 +11,11 @@ function doDeleteShortCut(selected_module) {
procFilter(fo_obj, delete_shortcut); procFilter(fo_obj, delete_shortcut);
} }
// 캐시파일 모두 재 생성
function doRecompileCacheFile() {
exec_xml("admin","procAdminRecompileCacheFile");
}
// footer를 화면 크기에 맞춰 설정 (폐기) // footer를 화면 크기에 맞춰 설정 (폐기)
//xAddEventListener(window, 'load', fixAdminLayoutFooter); //xAddEventListener(window, 'load', fixAdminLayoutFooter);
//xAddEventListener(window, 'resize', fixAdminLayoutFooter); //xAddEventListener(window, 'resize', fixAdminLayoutFooter);
@ -18,19 +23,30 @@ function fixAdminLayoutFooter(height) {
return; return;
} }
if(xIE6) { function setMenuContentScale() {
xAddEventListener(window,'load',fixAdminNaviHeight); 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'); function toggleAdminMenu(id) {
var bodyHeight = xHeight('content'); var obj = xGetElementById(id);
if(naviHeight<bodyHeight) xHeight('gNavigation',bodyHeight); var rh = 0;
else xHeight('content',naviHeight); if(obj.style.display == 'none') {
setTimeout(fixAdminNaviHeight, 500); 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);
}
// 캐시파일 모두 재 생성 var expire = new Date();
function doRecompileCacheFile() { expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
exec_xml("admin","procAdminRecompileCacheFile"); xSetCookie(id, obj.style.display, expire);
setMenuContentScale();
} }

View file

@ -1,34 +1,58 @@
<!--%import("css/admin_layout.css")--> <!--%import("css/admin_layout.css")-->
<!--%import("js/admin.js")--> <!--%import("js/admin.js")-->
<div id="header"> <div id="adminLayout">
<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"> <div id="adminMenuContent">
<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="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"> <h3 class="summary">
<h2><img src="./images/h2.gif" alt="Administration" width="180" height="45" /></h2> <span class="fl"><a href="{getUrl('','module','admin')}">{$lang->admin_index}</a></span>
<ul> </h3>
<!--@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> <!--@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--> <!--@end-->
</ul> </ul>
<div class="menuEdit"> <!--@end-->
<a href="{getUrl('','module','admin','act','dispAdminShortCut')}" class="button"><span>{$lang->cmd_shortcut_management}</span></a>
</div>
</div> </div>
<div id="content">{$content}</div> <div id="adminContentBody">{$content}</div>
<div class="clear"></div>
</div> </div>
<div id="footer"> <div id="adminLayoutBottom"></div>
<img src="./images/footerLine.gif" alt="" class="footerLine" /><img src="./images/footerLeft.gif" alt="" width="350" height="35" class="footerLeft" />
<address> <div id="adminLayoutCopyright">
<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> © 2007 <a href="http://www.zeroboard.com"><strong>zeroboard <span class="red">XE</span></strong></a>
</address>
</div> </div>
<script type="text/javascript">
xAddEventListener(window,"load",setMenuContentScale);
</script>

View file

@ -136,13 +136,15 @@
} }
// serialize하여 저장 // 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; $obj->mid = $module_info->mid;
$skin_vars = serialize($obj); $skin_vars = serialize($obj);
$oModuleController->updateModuleSkinVars($module_srl, $skin_vars); $oModuleController->updateModuleSkinVars($module_srl, $skin_vars);
// 레이아웃 확장변수 수정 // 레이아웃 확장변수 수정
$layout_args->mid = $obj->mid;
$layout_args->extra_vars = $skin_vars; $layout_args->extra_vars = $skin_vars;
$layout_args->layout_srl = $module_srl; $layout_args->layout_srl = $module_srl;
$oLayoutAdminController = &getAdminController('layout'); $oLayoutAdminController = &getAdminController('layout');
@ -163,7 +165,7 @@
**/ **/
function procBlogAdminInsertBlog() { function procBlogAdminInsertBlog() {
// 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 // 일단 입력된 값들을 모두 받아서 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->module = 'blog';
$args->mid = $args->blog_name; $args->mid = $args->blog_name;
unset($args->blog_name); unset($args->blog_name);
@ -175,6 +177,19 @@
unset($extra_var->page); unset($extra_var->page);
unset($extra_var->blog_name); 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 = &DB::getInstance();
$oDB->begin(); $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->category_srl = getNextSequence();
$category_args->name = 'Story'; $category_args->title = 'Story';
$category_args->expand = 'N'; $category_args->expand = 'N';
$this->procBlogAdminInsertCategory($category_args); $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->layout_srl = $layout_args->module_srl = $module_srl = $output->get('module_srl');
$layout_args->title = $args->browser_title; $layout_args->title = $args->browser_title;
$layout_args->layout_path = sprintf('./modules/blog/skins/%s/layout.html', $args->skin); $layout_args->layout_path = sprintf('./modules/blog/skins/%s/layout.html', $args->skin);
@ -272,6 +288,58 @@
$this->setMessage($msg_code); $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 블로그 삭제 * @brief 블로그 삭제
**/ **/
@ -291,7 +359,6 @@
// 레이아웃 삭제 // 레이아웃 삭제
$layout_args->layout_srl = $layout_args->module_srl = $module_srl; $layout_args->layout_srl = $layout_args->module_srl = $module_srl;
$oLayoutAdminController = &getAdminController('layout'); $oLayoutAdminController = &getAdminController('layout');
$output = $oLayoutAdminController->deleteLayout($layout_args); $output = $oLayoutAdminController->deleteLayout($layout_args);
if(!$output->toBool()) { if(!$output->toBool()) {
@ -299,15 +366,6 @@
return $output; 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(); $oDB->commit();
$this->add('module','blog'); $this->add('module','blog');
@ -315,69 +373,6 @@
$this->setMessage('success_deleted'); $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 카테고리 삭제 * @brief 카테고리 삭제
**/ **/
@ -388,32 +383,17 @@
$oDB = &DB::getInstance(); $oDB = &DB::getInstance();
$oDB->begin(); $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; if($category_info->parent_srl) $parent_srl = $category_info->parent_srl;
// 자식 노드가 있는지 체크하여 있으면 삭제 못한다는 에러 출력 // 자식 노드가 있는지 체크하여 있으면 삭제 못한다는 에러 출력
$output = executeQuery('blog.getChildCategoryCount', $args); if($oDocumentModel->getCategoryChlidCount($args->category_srl)) return new Object(-1, 'msg_cannot_delete_for_child');
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
if($output->data->count>0) {
$oDB->rollback();
return new Object(-1, 'msg_cannot_delete_for_child');
}
// DB에서 삭제 // DB에서 삭제
$output = executeQuery("blog.deleteCategory", $args); $oDocumentController = &getController('document');
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
$oDocumentController = &getAdminController('document');
$output = $oDocumentController->deleteCategory($args->category_srl); $output = $oDocumentController->deleteCategory($args->category_srl);
if(!$output->toBool()) { if(!$output->toBool()) {
$oDB->rollback(); $oDB->rollback();
@ -421,7 +401,7 @@
} }
// XML 파일을 갱신하고 위치을 넘겨 받음 // XML 파일을 갱신하고 위치을 넘겨 받음
$xml_file = $this->makeXmlFile($args->module_srl); $xml_file = $oDocumentController->makeCategoryXmlFile($args->module_srl);
$oDB->commit(); $oDB->commit();
@ -437,26 +417,28 @@
$source_category_srl = Context::get('source_category_srl'); $source_category_srl = Context::get('source_category_srl');
$target_category_srl = Context::get('target_category_srl'); $target_category_srl = Context::get('target_category_srl');
$oBlogModel = &getModel('blog'); $oDocumentModel = &getModel('document');
$target_category = $oBlogModel->getCategoryInfo($target_category_srl); $oDocumentController = &getController('document');
$source_category = $oBlogModel->getCategoryInfo($source_category_srl);
$target_category = $oDocumentModel->getCategory($target_category_srl);
$source_category = $oDocumentModel->getCategory($source_category_srl);
// source_category에 target_category_srl의 parent_srl, listorder 값을 입력 // source_category에 target_category_srl의 parent_srl, listorder 값을 입력
$source_args->category_srl = $source_category_srl; $source_args->category_srl = $source_category_srl;
$source_args->parent_srl = $target_category->parent_srl; $source_args->parent_srl = $target_category->parent_srl;
$source_args->listorder = $target_category->listorder; $source_args->listorder = $target_category->listorder;
$output = executeQuery('blog.updateCategoryParent', $source_args); $output = $oDocumentController->updateCategory($source_args);
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
// target_category의 listorder값을 +1해 준다 // target_category의 listorder값을 +1해 준다
$target_args->category_srl = $target_category_srl; $target_args->category_srl = $target_category_srl;
$target_args->parent_srl = $target_category->parent_srl; $target_args->parent_srl = $target_category->parent_srl;
$target_args->listorder = $target_category->listorder -1; $target_args->listorder = $target_category->listorder -1;
$output = executeQuery('blog.updateCategoryParent', $target_args); $output = $oDocumentController->updateCategory($target_args);
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
// xml파일 재생성 // xml파일 재생성
$xml_file = $this->makeXmlFile($target_category->module_srl); $xml_file = $oDocumentController->makeCategoryXmlFile($source_category->module_srl);
// return 변수 설정 // return 변수 설정
$this->add('xml_file', $xml_file); $this->add('xml_file', $xml_file);
@ -474,104 +456,11 @@
$module_srl = Context::get('module_srl'); $module_srl = Context::get('module_srl');
// xml파일 재생성 // xml파일 재생성
$xml_file = $this->makeXmlFile($module_srl); $oDocumentController = &getController('document');
$xml_file = $oDocumentController->makeCategoryXmlFile($module_srl);
// return 값 설정 // return 값 설정
$this->add('xml_file',$xml_file); $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('&amp;','&quot;','&lt;','&gt;'),$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;
}
} }
?> ?>

View file

@ -28,22 +28,22 @@
$group_list = $oMemberModel->getGroups(); $group_list = $oMemberModel->getGroups();
Context::set('group_list', $group_list); Context::set('group_list', $group_list);
$oBlogModel = &getModel('blog'); $oDocumentModel = &getModel('document');
// parent_srl이 있고 category_srl 이 없으면 하부 메뉴 추가임 // parent_srl이 있고 category_srl 이 없으면 하부 메뉴 추가임
if(!$category_srl && $parent_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->category_srl = getNextSequence();
$category_info->parent_srl = $parent_srl; $category_info->parent_srl = $parent_srl;
$category_info->parent_category_name = $parent_info->name; $category_info->parent_category_title = $parent_info->title;
// root에 메뉴 추가하거나 기존 메뉴의 수정일 경우 // root에 메뉴 추가하거나 기존 메뉴의 수정일 경우
} else { } else {
// category_srl 이 있으면 해당 메뉴의 정보를 가져온다 // category_srl 이 있으면 해당 메뉴의 정보를 가져온다
if($category_srl) $category_info = $oBlogModel->getCategoryInfo($category_srl); if($category_srl) $category_info = $oDocumentModel->getCategory($category_srl);
// 찾아진 값이 없다면 신규 메뉴 추가로 보고 category_srl값만 구해줌 // 찾아진 값이 없다면 신규 메뉴 추가로 보고 category_srl값만 구해줌
if(!$category_info->category_srl) { if(!$category_info->category_srl) {

Some files were not shown because too many files have changed in this diff Show more