1.2.4 개발버전을 trunk로 복사

git-svn-id: http://xe-core.googlecode.com/svn/trunk@6673 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2009-06-25 08:51:39 +00:00
commit af67622f54
385 changed files with 14829 additions and 12600 deletions

View file

@ -1,5 +1,8 @@
RewriteEngine On
# reserve XE Layout Template Source File (*.html)
RewriteRule ^layouts/(.+)/(.+).html$ ./index.php [L]
# static files
RewriteRule ^(.+)/files/member_extra_info/(.*) ./files/member_extra_info/$2 [L]
RewriteRule ^(.+)/files/attach/(.*) ./files/attach/$2 [L]

View file

@ -243,7 +243,6 @@
}
}
debugPrint($obj->content);
// 문서 번호 설정
$document_srl = getNextSequence();
@ -265,7 +264,7 @@
}
}
$obj->content = str_replace($uploaded_target_path,sprintf('/files/attach/images/%s/%s%s', $this->module_srl, getNumberingPath($document_srl,3), $filename), $obj->content);
$obj->content = str_replace($uploaded_target_path,sprintf('./files/attach/images/%s/%s%s', $this->module_srl, getNumberingPath($document_srl,3), $filename), $obj->content);
$oDocumentController = &getController('document');
$obj->allow_comment = 'Y';
@ -356,7 +355,7 @@
$obj->uploaded_count += $file_count;
}
}
$obj->content = str_replace($uploaded_target_path,sprintf('/files/attach/images/%s/%s%s', $this->module_srl, getNumberingPath($document_srl,3), $filename), $obj->content);
$obj->content = str_replace($uploaded_target_path,sprintf('./files/attach/images/%s/%s%s', $this->module_srl, getNumberingPath($document_srl,3), $filename), $obj->content);
$oDocumentController = &getController('document');
$output = $oDocumentController->updateDocument($oDocument,$obj);

View file

@ -20,6 +20,7 @@
$target_acts = array('procBoardInsertDocument','procBoardInsertComment','procIssuetrackerInsertIssue','procIssuetrackerInsertHistory');
if($addon_info->apply_find_account=='apply') $target_acts[] = 'procMemberFindAccount';
if($addon_info->apply_resend_auth_mail=='apply') $target_acts[] = 'procMemberResendAuthMail';
Context::addHtmlHeader('<script type="text/javascript"> var captchaTargetAct = new Array("'.implode('","',$target_acts).'"); </script>');

View file

@ -79,9 +79,9 @@
<title xml:lang="zh-CN">비밀번호 찾기 적용</title>
<title xml:lang="jp">비밀번호 찾기 적용</title>
<title xml:lang="zh-TW">비밀번호 찾기 적용</title>
<description xml:lang="ko">적용으로 하시면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="zh-CN">적용으로 하시면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="jp">적용으로 하시면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="ko">적용으로 하시면 비밀번호 찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="zh-CN">적용으로 하시면 비밀번호 찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="jp">적용으로 하시면 비밀번호 찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="zh-TW">적용으로 하시면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<options value="">
<title xml:lang="ko">적용하지 않음</title>
@ -96,5 +96,27 @@
<title xml:lang="zh-TW">적용</title>
</options>
</var>
<var name="apply_resend_auth_mail" type="select">
<title xml:lang="ko">인증 메일 재발송 적용</title>
<title xml:lang="zh-CN">인증 메일 재발송 적용</title>
<title xml:lang="jp">인증 메일 재발송 적용</title>
<title xml:lang="zh-TW">인증 메일 재발송 적용</title>
<description xml:lang="ko">적용으로 하시면 인증 메일 재발송 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="zh-CN">적용으로 하시면 인증 메일 재발송 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="jp">적용으로 하시면 인증 메일 재발송 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="zh-TW">적용으로 하시면 인증 메일 재발송 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<options value="">
<title xml:lang="ko">적용하지 않음</title>
<title xml:lang="zh-CN">적용하지 않음</title>
<title xml:lang="jp">적용하지 않음</title>
<title xml:lang="zh-TW">적용하지 않음</title>
</options>
<options value="apply">
<title xml:lang="ko">적용</title>
<title xml:lang="zh-CN">적용</title>
<title xml:lang="jp">적용</title>
<title xml:lang="zh-TW">적용</title>
</options>
</var>
</extra_vars>
</addon>

View file

@ -5,7 +5,7 @@
* @brief English Language Pack
**/
$lang->about_captcha = "Choose an image whose name is listed below";
$lang->about_captcha = "Please choose an image whose name is listed below";
$lang->target_captcha = array(
"airplane" => "airplane",
"apple" => "apple",

View file

@ -445,7 +445,7 @@
// 변환 후 출력
if(strtolower($this->charset) == 'utf-8') print $content;
else print iconv('UTF-8',$this->charset."//TRANSLIT", $content);
else print iconv('UTF-8',$this->charset."//TRANSLIT//IGNORE", $content);
exit();
}

View file

@ -5,7 +5,13 @@
* @brief 日本語言語パッケージ
**/
// 言語選択部分 by misol
$lang->president_lang = '現在言語';
$lang->select_lang = '言語選択';
$lang->lang_return = '戻る';
$lang->cmd_go_upper = '上位メニュー';
$lang->cmd_go_home = 'トップへ';
$lang->cmd_view_sitemap = 'サイトマップ';
?>

View file

@ -4,6 +4,10 @@
* @author zero (zero@nzeo.com) 翻譯royallin
* @brief XE行動上網正體中文語言
**/
// lang select by misol
$lang->president_lang = '已選擇語言';
$lang->select_lang = '選擇語言';
$lang->lang_return = '返回';
$lang->cmd_go_upper = '回上頁';
$lang->cmd_go_home = '回首頁';

View file

@ -22,7 +22,7 @@
</description>
<description xml:lang="en">
This addon displays level icon in front of the user name when you are using the point system.
You can choose the level icon on Module &gt; Point System.
You can choose the level icon in Module &gt; Point System.
</description>
<description xml:lang="ge">
Dieses Addon zeigt Level Icon vor dem Benutzernamen, wenn Sie die Punkte-System.

View file

@ -29,7 +29,7 @@
&lt;a href=&quot;http://www.dynamicdrive.com&quot; target=&quot;_blank&quot;&gt;Dynamicdrive.com&lt;/a&gt; tiene derecho de autor sobre rainbow.js
</description>
<description xml:lang="jp">
「rainbow.js」をヘッダーに追加し、リンクが張られている文字列の色を虹色で表示します。この機能拡張の「 rainbow.js」は「&lt;a href=&quot;http://www.dynamicdrive.com&quot; target=&quot;_blank&quot;&gt;Dynamicdrive.com&lt;/a&gt;」に著作権があります。
「rainbow.js」をヘッダーに追加し、リンクが張られている文字列の色を虹色で表示します。この機能拡張の「rainbow.js」は「&lt;a href=&quot;http://www.dynamicdrive.com&quot; target=&quot;_blank&quot;&gt;Dynamicdrive.com&lt;/a&gt;」に著作権があります。
</description>
<description xml:lang="ru">
Этот аддон добавляет файл с именем &quot;rainbow.js&quot; в заголовки HTML, и тогда связанный текс приобретает эффект смены цвета, подобно радуге или хамелеону.

View file

@ -157,50 +157,72 @@ function slideshow(event) {
xScreen.xeShow();
}
$(document).ready(function(){
var regx_skip = /(?:modules|addons|classes|common|layouts|libs|widgets)/i;
var regx_parent = /(?:document|comment)_[0-9]+_[0-9]+/i;
/* DOM READY */
$(function() {
var regx_skip = /(?:(modules|addons|classes|common|layouts|libs|widgets|widgetstyles)\/)/i;
var regx_allow_i6pngfix = /(?:common\/tpl\/images\/blank\.gif$)/i;
/**
* 본문 구하기 위한 개체
* IE6에서 본문폭을 넘는 이미지가 있으면 크기로 구해지는 문제 우회용
**/
var dummy = $('<div style="height:1; overflow:hidden; opacity:0; display:block; clear:both;"></div>');
$(".xe_content").each(function() {
$(this).find("img").each(function(){
var img = $(this);
var width = img.attr("width");
if(!width) width = img.width();
img.attr("orig_width",width);
img.attr("width",1);
});
var offsetWidth = $(this).width();
/**
* 리사이즈 실행 함수
**/
function doResize(contentWidth, count) {
// 재시도 회수 제한
if(!count) count = 0;
if(count >= 10) return;
$(this).find("img").each(function(){
var img = $(this);
var src = img.attr("src");
img.attr("width",img.attr("orig_width"));
img.removeAttr("orig_width",'');
var width = img.attr("width");
var height = img.attr("height");
var $img = this;
var beforSize = {'width':$img.width(), 'height':$img.height()};
// XE 내부 프로그램 또는 스킨의 이미지라면 이미지 리사이즈를 하지 않음
if ( !regx_skip.test(src) ) {
// 커스텀 속성 추가
img.attr("rel", "xe_gallery");
// 이미지 사이즈를 구하지 못했을 때 재시도
if(!beforSize.width || !beforSize.height) {
setTimeout(function() {
doResize.call($img, contentWidth, ++count)
}, 200);
return;
}
// 크기를 계산한다
if(width>offsetWidth) {
img.attr("width",offsetWidth-10);
img.attr("height",parseInt(offsetWidth/width*height,10));
}
// 리사이즈 필요 없으면 리턴
if(beforSize.width <= contentWidth) return;
// 링크가 설정되어 있거나 onclick 이벤트가 부여되어 있으면 원본 보기를 하지 않음
if ( !img.parent("a").size() && !img.attr("onclick") ) {
// 스타일 설정
img.css("cursor", "pointer");
var resize_ratio = contentWidth / beforSize.width;
// 클릭하면 슬라이드쇼 시작
img.click(slideshow);
}
}
});
});
$img
.removeAttr('width').removeAttr('height')
.css({
'width':contentWidth,
'height':parseInt(beforSize.height * resize_ratio, 10)
});
}
$('div.xe_content').each(function() {
dummy.appendTo(this);
var contentWidth = dummy.width();
dummy.remove();
if(!contentWidth) return;
$('img', this).each(function() {
var $img = $(this);
var imgSrc = $img.attr('src');
if(regx_skip.test(imgSrc) && !regx_allow_i6pngfix.test(imgSrc)) return;
$img.attr('rel', 'xe_gallery');
doResize.call($img, contentWidth);
});
/* live 이벤트로 적용 (image_gallery 컴포넌트와의 호환 위함) */
$('img[rel=xe_gallery]', this).live('mouseover', function() {
var $img = $(this);
if(!$img.parent('a').length && !$img.attr('onclick')) {
$img.css('cursor', 'pointer').click(slideshow);
}
});
});
});
})(jQuery);

View file

@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">SmartphonePhone XE 애드온</title>
<title xml:lang="zh-TW">SmartphonePhone XE</title>
<title xml:lang="jp">SmartphonePhone XE アドオン</title>
<title xml:lang="ko">SmartPhone XE 애드온</title>
<title xml:lang="en">SmartPhone XE</title>
<title xml:lang="zh-TW">SmartPhone XE</title>
<title xml:lang="jp">SmartPhone XE アドオン</title>
<description xml:lang="ko">
IPhone (touch) 등, smartphone 에서 접속시 최적화된 화면을 보여줍니다.
</description>
<description xml:lang="en">
This addon displays the best screen for users who use smartphones like IPhone (touch).
</description>
<description xml:lang="zh-TW">
以 IPhone (touch) 和 smartphone 瀏覽時會以最適當的畫面顯示。
@ -16,6 +20,7 @@
<date>2009-04-20</date>
<author email_address="haneul0318@gmail.com" link="http://seungyeop.kr">
<name xml:lang="ko">haneul</name>
<name xml:lang="en">haneul</name>
<name xml:lang="zh-TW">haneul</name>
<name xml:lang="jp">haneul</name>
</author>

View file

@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">위키 링크 애드온</title>
<title xml:lang="en">Wiki Linker</title>
<title xml:lang="zh-CN">维基链接插件</title>
<title xml:lang="zh-TW">維基百科</title>
<title xml:lang="jp">wikiリンクアドオン</title>
<description xml:lang="ko">
위키 링크를 추가해주는 애드온.
</description>
<description xml:lang="en">
This addon adds wiki link.
</description>
<description xml:lang="zh-CN">
给维基模块添加链接的插件。
@ -21,6 +25,7 @@
<author email_address="haneul0318@gmail.com" link="http://blog.nzeo.com">
<name xml:lang="ko">haneul</name>
<name xml:lang="en">haneul</name>
<name xml:lang="zh-CN">haneul</name>
<name xml:lang="zh-TW">haneul</name>
<name xml:lang="jp">haneul</name>

View file

@ -338,7 +338,7 @@
**/
function checkSSO() {
// GET 접속이 아니거나 설치가 안되어 있으면 패스
if(Context::getRequestMethod()!='GET' || !Context::isInstalled()) return true;
if(Context::getRequestMethod()!='GET' || !Context::isInstalled() || in_array(Context::get('act'),array('rss','atom'))) return true;
// DB info에 설정된 Default URL이 없다면 무조건 무사통과
$default_url = trim($this->db_info->default_url);
@ -359,8 +359,11 @@
} else {
// SSO 결과를 받는 경우 session_name() 세팅
if(Context::get('SSOID')) {
setcookie(session_name(), Context::get('SSOID'), 0, '/');
header("location:".getUrl('SSOID',''));
$session_name = Context::get('SSOID');
setcookie(session_name(), $session_name);
$url = preg_replace('/([\?\&])$/','',str_replace('SSOID='.$session_name,'',Context::getRequestUrl()));
header("location:".$url);
return false;
// SSO 결과를 요청
} else if($_COOKIE['sso']!=md5(Context::getRequestUri()) && !Context::get('SSOID')) {
@ -768,128 +771,139 @@
**/
function _getUrl($num_args=0, $args_list=array(), $domain = null) {
static $site_module_info = null;
if($domain) $is_site = true;
else $is_site = false;
if(is_null($site_module_info)) {
$site_module_info = Context::get('site_module_info');
}
// 가상 사이트 정보를 구함
if(is_null($site_module_info)) $site_module_info = Context::get('site_module_info');
// SiteID 요청시 전처리
// SiteID 요청시 전처리 ($domain이 vid 형식일 경우 $domain값을 없애고 vid로 처리하도록 함)
if($domain && isSiteID($domain)) {
$vid = $domain;
$domain = '';
}
// SiteID가 요청되지 않았다면 현재 site_module_info에서 SiteID 판별
if(!$vid && $site_module_info->domain && isSiteID($site_module_info->domain)) {
$vid = $site_module_info->domain;
// $domain, $vid값이 없을 경우(= 현재 사이트 정보를 이용함)
if(!$domain && !$vid) {
if($site_module_info->domain && isSiteID($site_module_info->domain)) $vid = $site_module_info->domain;
else $domain = $site_module_info->domain;
}
if(!$domain) {
if($site_module_info->domain && !isSiteID($site_module_info->domain)) $domain = $site_module_info->domain;
// $domain값이 있을 경우 현재 요청된 도메인과 비교해서 동일할 경우 제거 그렇지 않으면 http 프로토콜을 제거하고 제일 뒤에 / 를 붙임
if($domain) {
$domain_info = parse_url($domain);
$current_info = parse_url($_SERVER['HTTP_HOST'].getScriptPath());
if($domain_info['host'].$domain_info['path']==$current_info['host'].$current_info['path']) unset($domain);
else {
if($this->db_info->default_url) $domain = $this->db_info->default_url;
else if(!$domain) $domain = Context::getRequestUri();
$domain = preg_replace('/^(http|https):\/\//i','', trim($domain));
if(substr($domain,-1) != '/') $domain .= '/';
}
}
$domain = preg_replace('/^(http|https):\/\//i','', trim($domain));
if(substr($domain,-1) != '/') $domain .= '/';
// 변수 정리
$get_vars = null;
// GET 변수가 없거나 변수 초기화 지정이 되었을 경우
if(!$this->get_vars || $args_list[0]=='') {
$get_vars = null;
if(is_array($args_list) && $args_list[0]=='') {
array_shift($args_list);
$num_args = count($args_list);
}
// 요청받은 변수가 있고 첫번째 인자가 '' 라서 초기화를 해야 할 경우 요청받은 변수를 정리
if(is_array($args_list) && $args_list[0]=='') array_shift($args_list);
// 초기화를 원하지 않을 경우 GET 변수를 배열로 처리
} else {
$get_vars = get_object_vars($this->get_vars);
}
for($i=0;$i<$num_args;$i=$i+2) {
// 새로 꾸미기를 원하는 변수를 정리
for($i=0,$c=count($args_list);$i<$c;$i=$i+2) {
$key = $args_list[$i];
$val = trim($args_list[$i+1]);
// 값이 없으면 GET변수에서 해당 키를 제거
if(!isset($val)) {
unset($get_vars[$key]);
continue;
}
// 새로운 변수를 정리
$get_vars[$key] = $val;
}
unset($get_vars['vid']);
// 변수중 vid, rnd값 제거
unset($get_vars['rnd']);
if(isset($get_vars['page'])&&$get_vars['page']<2) unset($get_vars['page']);
/* member module중의 쪽지함/친구 관리 기능이 communication 모듈로 이전하여 하위 호환성을 위한 act값 변경 */
if($get_vars['act'] == 'dispMemberFriend') $get_vars['act'] = 'dispCommunicationFriend';
elseif($get_vars['act'] == 'dispMemberMessages') $get_vars['act'] = 'dispCommunicationMessages';
/* 기존의 action의 값이 바뀌어서 이를 강제 변경 */
elseif($get_vars['act'] == 'dispDocumentAdminManageDocument') $get_vars['act'] = 'dispDocumentManageDocument';
elseif($get_vars['act'] == 'dispModuleAdminSelectList') $get_vars['act'] = 'dispModuleSelectList';
if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = $this->getRequestUri(ENFORCE_SSL, $domain);
else $path = $this->getRequestUri(RELEASE_SSL, $domain);
$var_count = count($get_vars);
if(!$var_count) {
if(!$is_site) return $path;
if($vid) {
if($this->allow_rewrite) $path .= $vid;
else $path .= '?vid='.$vid;
}
return $path;
}
// rewrite모듈을 사용할때 getUrl()을 이용한 url 생성
// 2009. 4. 8 mid, document_srl, site id, entry 를 제외하고는 rewrite rule 사용하지 않도록 변경
if($this->allow_rewrite) {
if(count($get_vars)) foreach($get_vars as $key => $value) if(!isset($value) || $value === '') unset($get_vars[$key]);
$var_keys = array_keys($get_vars);
asort($var_keys);
$target = implode('.',$var_keys);
if($vid) $rpath = $path.$vid .'/';
else $rpath = $path;
switch($target) {
case 'mid' :
return $rpath.$get_vars['mid'];
case 'document_srl' :
return $rpath.$get_vars['document_srl'];
case 'document_srl.mid' :
return sprintf('%s%s/%s',$rpath,$get_vars['mid'],$get_vars['document_srl']);
case 'entry.mid' :
return sprintf('%s%s/entry/%s',$rpath,$get_vars['mid'],$get_vars['entry']);
case 'act.document_srl.key' :
if($get_vars['act']=='trackback') return sprintf('%s%s/%s/%s', $rpath,$get_vars['document_srl'],$get_vars['key'],$get_vars['act']);
break;
if($vid) $get_vars['vid'] = $vid;
else unset($get_vars['vid']);
if(count($get_vars)) {
foreach($get_vars as $key => $val) {
if(!trim($val)) unset($get_vars[$key]);
}
}
// rewrite 모듈을 사용하지 않고 인자의 값이 2개 이상이거나 rewrite모듈을 위한 인자로 적당하지 않을 경우
if($vid) $url = 'vid='.$vid;
foreach($get_vars as $key => $val) {
if(!isset($val)) continue;
if(is_array($val) && count($val)) {
foreach($val as $k => $v) {
$url .= ($url?'&':'').$key.'['.$k.']='.urlencode($v);
// action명이 변경되었던 것에 대해 호환성을 유지하기 위한 강제 값 변경
switch($get_vars['act']) {
case 'dispMemberFriend' : $get_vars['act'] = 'dispCommunicationFriend'; break;
case 'dispMemberMessages' : $get_vars['act'] = 'dispCommunicationMessages'; break;
case 'dispDocumentAdminManageDocument' : $get_vars['act'] = 'dispDocumentManageDocument'; break;
case 'dispModuleAdminSelectList' : $get_vars['act'] = 'dispModuleSelectList'; break;
}
// URL 구성
$query = null;
if($var_count = count($get_vars)) {
// rewrite mod 사용시
if($this->allow_rewrite) {
$var_keys = array_keys($get_vars);
asort($var_keys);
$target = implode('.',$var_keys);
switch($target) {
case 'vid' : $query = $get_vars['vid']; break;
case 'mid' : $query = $get_vars['mid']; break;
case 'document_srl' : $query = $get_vars['document_srl']; break;
case 'document_srl.mid' : $query = $get_vars['mid'].'/'.$get_vars['document_srl']; break;
case 'entry.mid' : $query = $get_vars['mid'].'/entry/'.$get_vars['entry']; break;
case 'act.document_srl.key' : $query = $get_vars['act']=='trackback'?$get_vars['document_srl'].'/'.$get_vars['key'].'/'.$get_vars['act']:''; break;
case 'mid.vid' : $query = $get_vars['vid'].'/'.$get_vars['mid']; break;
case 'document_srl.vid' : $query = $get_vars['vid'].'/'.$get_vars['document_srl']; break;
case 'document_srl.mid.vid' : $query = $get_vars['vid'].'/'.$get_vars['mid'].'/'.$get_vars['document_srl']; break;
case 'entry.mid.vid' : $query = $get_vars['vid'].'/'.$get_vars['mid'].'/entry/'.$get_vars['entry']; break;
case 'act.document_srl.key.vid' : $query = $get_vars['act']=='trackback'?$get_vars['vid'].'/'.$get_vars['document_srl'].'/'.$get_vars['key'].'/'.$get_vars['act']:''; break;
}
} else {
$url .= ($url?'&':'').$key.'='.urlencode($val);
}
// rewrite mod 미사용 또는 query값이 생성되지 않았을 경우 get argument로 생성
if(!$query) {
foreach($get_vars as $key => $val) {
if(is_array($val) && count($val)) {
foreach($val as $k => $v) $query .= ($query?'&':'').$key.'['.$k.']='.urlencode($v);
} else {
$query .= ($query?'&':'').$key.'='.urlencode($val);
}
}
if($query) $query = '?'.$query;
}
}
return $path.'?'.htmlspecialchars($url);
// XE가 설치된 절대 경로를 구해서 query를 완성
// 항상 SSL을 이용하고 현재 SSL이 아닌 경우 https에 대한 prefix를 붙임
if(Context::get('_use_ssl')=='always') {
if($_SERVER['HTTPS']!='on') $query = $this->getRequestUri(ENFORCE_SSL, $domain).$query;
// 상황에 따라 혹은 지정된 대상만 SSL 취급될 경우
} else {
// SSL상태인데 대상이 SSL이 아닌 경우
if($_SERVER['HTTPS']=='on') $query = $this->getRequestUri(ENFORCE_SSL, $domain).$query;
// SSL 상태가 아니면 domain값에 따라 query 완성
else if($domain) $query = $this->getRequestUri(FOLLOW_REQUEST_SSL, $domain).$query;
else $query = getScriptPath().$query;
}
return htmlspecialchars($query);
}
/**
* @brief 요청이 들어온 URL에서 argument를 제거하여 return
**/
function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL, $domain = null) {
static $url = array();
// HTTP Request가 아니면 패스
if(!isset($_SERVER['SERVER_PROTOCOL'])) return ;
static $url = array();
if(Context::get('_use_ssl') == "always") $ssl_mode = ENFORCE_SSL;
if($domain) $domain_key = md5($domain);
@ -930,7 +944,7 @@
if(Context::get("_http_port") && Context::get("_http_port") != 80) {
$url_info['port'] = Context::get("_http_port");
}
else
elseif($url_info['port']==80)
{
unset($url_info['port']);
}

View file

@ -18,6 +18,7 @@
var $password = NULL; ///< password
var $database = NULL; ///< database
var $prefix = 'xe'; ///< XE에서 사용할 테이블들의 prefix (한 DB에서 여러개의 XE 설치 가능)
var $idx_no = 0; // 인덱스 생성시 사용할 카운터
/**
* @brief firebird에서 사용될 column type
@ -30,8 +31,8 @@
'number' => 'INTEGER',
'varchar' => 'VARCHAR',
'char' => 'CHAR',
'text' => 'BLOB SUB_TYPE TEXT SEGMENT SIZE 20',
'bigtext' => 'BLOB SUB_TYPE TEXT SEGMENT SIZE 20',
'text' => 'BLOB SUB_TYPE TEXT SEGMENT SIZE 32',
'bigtext' => 'BLOB SUB_TYPE TEXT SEGMENT SIZE 32',
'date' => 'VARCHAR(14)',
'float' => 'FLOAT',
);
@ -176,16 +177,16 @@
$as = $this->addDoubleQuotes($as);
}
// 함수 사용시
$tmpFunc1 = null;
$tmpFunc2 = null;
// 함수 사용시
$tmpFunc1 = null;
$tmpFunc2 = null;
if(($no1 = strpos($string,'('))!==false && ($no2 = strpos($string, ')'))!==false) {
$tmpFunc1 = substr($string, 0, $no1+1);
$tmpFunc2 = substr($string, $no2, strlen($string)-$no2+1);
$tmpFunc2 = substr($string, $no2, strlen($string)-$no2+1);
$string = trim(substr($string, $no1+1, $no2-$no1-1));
}
// 테이블.필드
// 테이블.필드
if(($no1 = strpos($string,'.'))!==false) {
$tmpString1 = substr($string, 0, $no1); // table
$tmpString2 = substr($string, $no1+1, strlen($string)-$no1+1); // field
@ -202,8 +203,8 @@
$string = $this->addDoubleQuotes($string);
}
if($tmpFunc1 != null) $string = $tmpFunc1.$string;
if($tmpFunc2 != null) $string = $string.$tmpFunc2;
if($tmpFunc1 != null) $string = $tmpFunc1.$string;
if($tmpFunc2 != null) $string = $string.$tmpFunc2;
if($as !== false) $string = $string." as ".$as;
return $string;
@ -227,7 +228,7 @@
$isTable = false;
foreach($tables as $key => $val) {
if($key == $tmpString1) $isTable = true;
if($val == $tmpString1) $isTable = true;
if($val == $tmpString1) $isTable = true;
}
if($isTable) {
@ -322,25 +323,25 @@
while($tmp = ibase_fetch_object($result)) {
foreach($tmp as $key => $val) {
$type = $output->column_type[$key];
$type = $output->column_type[$key];
if($type == null) {
foreach($output->columns as $cols) {
if($cols['alias'] == $key) {
$type = $output->column_type[$cols['name']];
}
}
}
if($type == null) {
foreach($output->columns as $cols) {
if($cols['alias'] == $key) {
$type = $output->column_type[$cols['name']];
}
}
}
if($type == "text" || $type == "bigtext") {
$blob_data = ibase_blob_info($tmp->{$key});
$blob_data = ibase_blob_info($tmp->{$key});
$blob_hndl = ibase_blob_open($tmp->{$key});
$tmp->{$key} = ibase_blob_get($blob_hndl, $blob_data[0]);
ibase_blob_close($blob_hndl);
}
else if($type == "char") {
$tmp->{$key} = trim($tmp->{$key}); // DB의 character set이 UTF8일때 생기는 빈칸을 제거
}
else if($type == "char") {
$tmp->{$key} = trim($tmp->{$key}); // DB의 character set이 UTF8일때 생기는 빈칸을 제거
}
}
$return[] = $tmp;
@ -563,24 +564,15 @@
if(count($index_list)) {
foreach($index_list as $key => $val) {
// index name = prefix + table name + index_list
// index name 크기가 31byte로 제한되어 있어 중복되지 않을만큼 테이블명을 줄임
// prefix name을 2byte 보다 크게 할 경우 31byte를 넘는 index name이 생김
// 더 좋은 방법을 찾아봐야겠음.
$tok = strtok($table_name, "_");
// index_name = prefix + 'idx_' + no
// index name 크기가 31byte로 제한되어 있어 일련번호로 대체
$this->idx_no++;
$index_name = $this->prefix;
$tok = strtok("_");
$index_name .= substr($tok, 0, 2);
$index_name .= substr($tok, -1, 1);
$tok = strtok("_");
while($tok !== false) {
$index_name .= substr($tok, 0, 1);
$tok = strtok("_");
}
$index_name .= "idx_";
$index_name .= sprintf("%04d", $this->idx_no);
$schema = sprintf("CREATE INDEX \"%s_%s\" ON \"%s\" (\"%s\");",
$index_name, $key, $table_name, implode($val, "\",\""));
$schema = sprintf("CREATE INDEX \"%s\" ON \"%s\" (\"%s\");",
$index_name, $table_name, implode($val, "\",\""));
$output = $this->_query($schema);
//commit();
@ibase_commit($this->fd);
@ -723,28 +715,18 @@
ibase_blob_add($blh, $value);
$value = ibase_blob_close($blh);
}
else if($output->column_type[$name]!='number') {
//$value = "'".$value."'";
}
elseif(!$value || is_numeric($value)) {
$value = (int)$value;
}
else if($output->column_type[$name]=='number') {
// 연산식이 들어갔을 경우 컬럼명이 있는 지 체크해 더블쿼터를 넣어줌
preg_match("/(?i)[a-z][a-z0-9_-]+/", $value, $matches);
if(strlen($value) != 0) {
$pos = strpos($value, '+');
if($pos == 0) $pos = strpos($value, '-');
if($pos == 0) $pos = strpos($value, '*');
if($pos == 0) {
$pos = strpos($value, '/');
if(substr_count($value, ".") > 1) $pos = 0; // value에 url주소가 들어가는경우
}
foreach($matches as $key => $val) {
$value = str_replace($val, "\"".$val."\"", $value);
}
if($pos != 0) {
$substr = substr($value, 0, $pos);
$value = '"'.$substr.'"'.substr($value, $pos, strlen($value));
$column_list[] = sprintf("\"%s\" = %s", $name, $value);
continue;
}
if($matches != null) {
$column_list[] = sprintf("\"%s\" = %s", $name, $value);
continue;
}
}
$values[] = $value;
@ -973,13 +955,13 @@
foreach($tmp as $key => $val){
$type = $output->column_type[$key];
if($type == null) {
foreach($output->columns as $cols) {
if($cols['alias'] == $key) {
$type = $output->column_type[$cols['name']];
}
}
}
if($type == null) {
foreach($output->columns as $cols) {
if($cols['alias'] == $key) {
$type = $output->column_type[$cols['name']];
}
}
}
if($type == "text" || $type == "bigtext") {
$blob_data = ibase_blob_info($tmp->{$key});

View file

@ -110,6 +110,11 @@
$pattern = '/src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/s';
$output = preg_replace($pattern, 'src=$1'.$real_path.'$3/$4.$5$6', $output);
if(Context::get('vid')) {
$pattern = '/\/'.Context::get('vid').'\?([^=]+)=/is';
$output = preg_replace($pattern, '/?$1=', $output);
}
}
// 간혹 background-image에 url(none) 때문에 request가 한번 더 일어나는 경우가 생기는 것을 방지

View file

@ -110,13 +110,6 @@
//if($this->module && $module_info->module != $this->module) unset($module_info);
}
// 모듈을 여전히(;;) 못 찾고 모듈번호(module_srl)가 있으면 해당 모듈을 구함
// module_srl로 대상 모듈을 찾는 것을 주석 처리함.
if((!$this->module || $this->module != 'admin') && !$module_info && $this->module_srl) {
$module_info = $oModuleModel->getModuleInfoByModuleSrl($this->module_srl);
//if($this->module && $module_info->module != $this->module) unset($module_info);
}
// 역시 모듈을 못 찾았고 $module이 없다면 기본 모듈을 찾아봄
if(!$module_info && !$this->module) $module_info = $site_module_info;

View file

@ -86,11 +86,16 @@
// module model 객체 생성
$oModuleModel = &getModel('module');
// 사이트 관리자이면 로그인 정보의 is_admin 에 'Y'로 세팅
//if($oModuleModel->isSiteAdmin($logged_info)) $logged_info->is_admin = 'Y';
// XE에서 access, manager (== is_admin) 는 고정된 권한명이며 이와 관련된 권한 설정
$grant = $oModuleModel->getGrant($module_info, $logged_info, $xml_info);
$module_srl = Context::get('module_srl');
if(!$module_info->mid && preg_match('/^([0-9]+)$/',$module_srl)) {
$request_module = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
if($request_module->module_srl == $module_srl) {
$grant = $oModuleModel->getGrant($request_module, $logged_info);
}
} else {
$grant = $oModuleModel->getGrant($module_info, $logged_info, $xml_info);
}
// 현재 모듈의 access 권한이 없으면 권한 없음 표시
//if(!$grant->access) return $this->stop("msg_not_permitted");

View file

@ -1,6 +1,7 @@
@charset "utf-8";
/* Calendar */
.ui-calendar {display:none; padding:25px 15px 15px 15px; position:absolute; border:2px solid #737373; background:#fff; color:#333;}
.ui-calendar .close{ position:absolute; top:10px; right:15px; width:17px; height:17px; border:0; padding:0; background:url(./img/buttonCloseLayerX.gif) no-repeat center center; cursor:pointer;}
.ui-calendar {display:none; padding:25px 15px 15px 15px; position:absolute; border:2px solid #737373; background:#fff; color:#333; *zoom:1;}
.ui-calendar .close{ position:absolute; _display:block !important; top:10px; right:15px; width:17px; height:17px; border:0; padding:0; background:url(./img/buttonCloseLayerX.gif) no-repeat center center; cursor:pointer; *zoom:1;}
.ui-calendar .close span{ position:absolute; width:0; height:0; font-size:0; line-height:0; overflow:hidden; z-index:-1; visibility:hidden;}
.ui-calendar table{ border:0; border-spacing:0; _width:200px;}
.ui-calendar caption{ font-weight:bold; text-align:center; position:relative;}

View file

@ -49,7 +49,7 @@ function xml_response_filter(oXml, callback_func, response_tags, callback_func_a
}
if(ret_obj["redirect_url"]) {
location.href=ret_obj["redirect_url"];
location.href=ret_obj["redirect_url"].replace(/&amp;/g,'&');
return null;
}

View file

@ -45,7 +45,7 @@
$lang->cmd_select = '選択';
$lang->cmd_select_all = 'すべて選択';
$lang->cmd_unselect_all = 'すべて解除';
$lang->cmd_reverse_all = "選択の反転";
$lang->cmd_reverse_all = '選択の反転';
$lang->cmd_close_all = 'すべて閉じる';
$lang->cmd_open_all = 'すべて開く';
$lang->cmd_reload = 'リロード';
@ -53,16 +53,16 @@
$lang->cmd_open = '開く';
$lang->cmd_setup = '設定';
$lang->cmd_addition_setup = '追加設定';
$lang->cmd_option = 'オプション';
$lang->cmd_option = 'オプション';
$lang->cmd_apply = '適用';
$lang->cmd_open_calendar = 'カレンダーを開く';
$lang->cmd_open_calendar = 'カレンダーを開く';
$lang->cmd_send = '送信';
$lang->cmd_print = '印刷';
$lang->cmd_scrap = 'スクラップ';
$lang->cmd_preview = 'プレビュー';
$lang->cmd_reset = '初期化';
$lang->cmd_remake_cache = "キャッシュファイル再生成";
$lang->cmd_publish = "発行";
$lang->cmd_remake_cache = 'キャッシュファイル再生成';
$lang->cmd_publish = '発行';
$lang->cmd_layout_setup = 'レイアウト設定';
$lang->cmd_layout_edit = 'レイアウト編集';
$lang->cmd_search_by_ipaddress = 'IPアドレスで検索';
@ -124,7 +124,7 @@
$lang->file = 'ファイル';
$lang->mid = 'モジュール名';
$lang->sid = 'Site Name';
$lang->sid = 'バーチャルVirtualサイト名';
$lang->layout = 'レイアウト';
$lang->widget = 'ウィジェット';
$lang->module = 'モジュール';
@ -132,8 +132,8 @@
$lang->colorset = 'カラーセット';
$lang->extra_vars = '拡張変数';
$lang->domain = "ドメイン";
$lang->url = "URL";
$lang->domain = 'ドメイン';
$lang->url = 'URL';
$lang->document_url = '書き込みURL';
$lang->trackback_url = 'トラックバックURL';
$lang->blog_name = 'ブログ名';
@ -284,19 +284,18 @@
$lang->cmd_check_ftp_connect = 'FTP接続をテストする';
$lang->about_ftp_info = "
FTP情報は次の場合、利用されます。<br />
1. サーバー側のPHPの設定中、「safe_mode=On」になった際、FTP情報を用いてXEが正常に働くようにします。
<br/>
1. サーバー側のPHPの設定中、「safe_mode=On」になった際、FTP情報を用いてXEが正常に働くようにします。<br />
2. FTP経由でXEの自動アップデート等に使われます。<br />
FTP情報は「files/config/ftp.config.php」の中に保存されます。<br/>
FTP情報は「files/config/ftp.config.php」の中に保存されます。<br />
また、XEのインストールの後、管理者画面からFTP情報の変更・削除が可能です。省略可能 <br />
";
$lang->msg_safe_mode_ftp_needed = "PHPのsafe_modeがOnの場合、FTP情報を登録することで、XEのインストール及び利用が可能になります。";
$lang->msg_ftp_not_connected = "localhostへのFTP接続エラーが発生しました。FTPポート(port)番号をはじめ、FTPサービスが可能であるかをご確認下さい。";
$lang->msg_ftp_invalid_auth_info = "ログインが失敗しました。 FTPアクセス情報を再度ご確認下さい。";
$lang->msg_ftp_mkdir_fail = "FTPを用いたディレクトリ生成に失敗しました。FTPサーバーの設定を再度ご確認下さい。";
$lang->msg_ftp_chmod_fail = "FTPを用いたディレクトリパーミッション(permission)変更に失敗しました。FTPサーバーの設定を再度ご確認下さい。";
$lang->msg_ftp_connect_success = "FTP接続に成功しました。";
$lang->msg_safe_mode_ftp_needed = 'PHPのsafe_modeがOnの場合、FTP情報を登録することで、XEのインストール及び利用が可能になります。';
$lang->msg_ftp_not_connected = 'localhostへのFTP接続エラーが発生しました。FTPポート(port)番号をはじめ、FTPサービスが可能であるかをご確認下さい。';
$lang->msg_ftp_invalid_auth_info = 'ログインが失敗しました。 FTPアクセス情報を再度ご確認下さい。';
$lang->msg_ftp_mkdir_fail = 'FTPを用いたディレクトリ生成に失敗しました。FTPサーバーの設定を再度ご確認下さい。';
$lang->msg_ftp_chmod_fail = 'FTPを用いたディレクトリパーミッション(permission)変更に失敗しました。FTPサーバーの設定を再度ご確認下さい。';
$lang->msg_ftp_connect_success = 'FTP接続に成功しました。';
// xml filterで用いられているjavascript用のアラートメッセージ
$lang->filter->isnull = '%sを入力して下さい。';

View file

@ -7,7 +7,7 @@
// 기본적으로 사용되는 action 언어
$lang->cmd_write = '쓰기';
$lang->cmd_reply = '글';
$lang->cmd_reply = '글';
$lang->cmd_delete = '삭제';
$lang->cmd_modify = '수정';
$lang->cmd_edit = '편집';
@ -247,7 +247,7 @@
$lang->failed_voted = '추천하실 수 없습니다';
$lang->failed_blamed = '비추천하실 수 없습니다';
$lang->failed_declared = '신고를 하실 수 없습니다';
$lang->fail_to_delete_have_children = '글이 있어서 삭제할 수 없습니다';
$lang->fail_to_delete_have_children = '글이 있어서 삭제할 수 없습니다';
$lang->confirm_submit = '등록하시겠습니까?';
$lang->confirm_logout = '로그아웃하시겠습니까?';

View file

@ -41,11 +41,12 @@
<!--@end-->
<!--@end-->
<!--@if($rss_url)-->
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{$rss_url}" />
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{$atom_url}" />
<!--@elseif(Context::isInstalled() && $site_module_info->mid == $mid)-->
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{getUrl('','module','rss','act','rss')}" />
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="{getUrl('','module','rss','act','atom')}" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="{$rss_url}" />
<link rel="alternate" type="application/atom+xml" title="Atom" href="{$atom_url}" />
<!--@end-->
<!--@if($general_rss_url)-->
<link rel="alternate" type="application/rss+xml" title="Site RSS" href="{$general_rss_url}" />
<link rel="alternate" type="application/atom+xml" title="Site Atom" href="{$general_atom_url}" />
<!--@end-->
{@ $ssl_actions = Context::getSSLActions() }

View file

@ -13,7 +13,7 @@
* @brief XE의 전체 버전 표기
* 파일의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야
**/
define('__ZBXE_VERSION__', '1.2.3');
define('__ZBXE_VERSION__', '1.2.4');
/**
* @brief zbXE가 설치된 장소의 base path를 구함

View file

@ -7,7 +7,7 @@
* Request Argument에서 mid, act로 module 객체를 찾아서 생성하고 \n
* 모듈 정보를 세팅함
*
* @mainpage 첫페이지
* @mainpage XpressEngine
* @section intro 소개
* XE 오픈 프로젝트로 개발되는 오픈 소스입니다.\n
* 자세한 내용은 아래 링크를 참조하세요.
@ -25,6 +25,7 @@
* GNU 일반 공중 사용 허가서는 프로그램과 함께 제공됩니다. 만약, 문서가 누락되어 있다면 자유 소프트웨어\n
* 재단으로 문의하시기 바랍니다. \n
* (자유 소프트웨어 재단: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA)
*
**/
/**
@ -45,18 +46,9 @@
$oContext->init();
/**
* @brief SSO 인증 확인이 불필요할때 모듈 동작
* @brief default_url 설정되어 있고 현재 url이 default_url과 다르면 SSO인증을 위한 rediret 시도 모듈 동작
**/
if($oContext->checkSSO()) {
/**
* @brief ModuleHandler 객체를 생성/ 실행
*
* 모듈 핸들러는 Request Argument를 바탕으로 모듈을 찾아서\n
* 객체를 생성하고 기본 정보를 setting 해준다.\n
* ModuleHandler는 외에도 설치가 되어 있는지에 대한 체크를\n
* 하여 미설치시 Install 모듈을 실행하도록 한다\n
* 그리고 해당 모듈을 실행후 컨텐츠를 출력한다\n
**/
$oModuleHandler = new ModuleHandler();
if($oModuleHandler->init()) {
$oModule = &$oModuleHandler->procModule();

View file

@ -174,8 +174,8 @@ dl.widgetDivider dd{ display:none; margin:0;}
.widgetTree a strong{ letter-spacing:-1px; cursor:pointer; _cursor /**/:hand;}
.widgetTree ul{ position:relative; display:block; padding:3px 0 0 0 !important; zoom:1;}
.widgetTree ul li{ list-style:none; position:relative; padding:3px 0 2px 8px; white-space:nowrap;}
.widgetTree ul li a,
.widgetTree ul li span.nav_tree_label{ position:relative; left:16px; _left /**/:0; top:0;}
.widgetTree ul li .nav_tree_label,
.widgetTree ul li .sum{ position:relative; left:16px; _left /**/:0; top:0; font-style:normal;}
.widgetTree ul li a.selected {font-weight:bold;}
.widgetTree ul li button{ display:inline-block; position:relative; _left /**/:-16px; *top:-2px; width:13px; height:13px; *width:17px; *height:17px; margin:0 -13px 0 0; *margin:0 -17px -1px -2px; text-indent:-10000px; *text-indent:0; *font:0/0 Sans-serif; border:none; cursor:pointer; _cursor /**/:hand;}
.widgetTree ul li ul{ display:none; padding:2px 0 0 0 !important; margin:0 0 -2px 6px; background-position:left top;}

View file

@ -43,7 +43,9 @@
<form action="{getUrl()}" method="post" class="widgetSearch">
<fieldset>
<!--@if($vid)-->
<input type="hidden" name="vid" value="{$vid}" />
<!--@end-->
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="IS" />
<input type="hidden" name="search_target" value="title" />

View file

@ -93,7 +93,9 @@
<fieldset>
<legend>{$lang->cmd_search}</legend>
<!--@if($vid)-->
<input type="hidden" name="vid" value="{$vid}" />
<!--@end-->
<input type="hidden" name="mid" value="{$layout_info->target_mid}" />
<input type="hidden" name="search_target" value="title_content" />
<input name="search_keyword" type="text" class="inputTypeText w110" value="<!--@if($search_keyword)-->{htmlspecialchars($search_keyword)}<!--@end-->" />

View file

@ -46,7 +46,9 @@
</ul>
<form action="{getUrl()}" method="post" id="isSearch">
<!--@if($vid)-->
<input type="hidden" name="vid" value="{$vid}" />
<!--@end-->
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="IS" />
<input type="hidden" name="search_target" value="title_content" />

View file

@ -12,6 +12,6 @@
$lang->addon_license = 'ライセンス';
$lang->addon_history = '変更履歴';
$lang->about_addon_mid = "アドオンが使われる対象を指定します。<br />(選択なしの場合、全てのモジュールが利用可能対象)";
$lang->about_addon = 'アドオンは、HTMLの出力をコントロールするとうより、動作を制御する役割をします。お好みのアドオンを「使用/未使用」に設定するだけで、サイトの運営に有用な機能が利用出来ます。';
$lang->about_addon_mid = 'アドオンが使われる対象を指定します。<br />(選択なしの場合、全てのモジュールが利用可能対象)';
$lang->about_addon = 'アドオンは、HTMLの出力をコントロールするとうより、動作を制御する役割をします。お好みのアドオンを「使用/未使用」に設定するだけで、サイトの運営に有用な機能が利用出来ます。';
?>

View file

@ -92,6 +92,9 @@
$newest_news_url = sprintf("http://news.xpressengine.com/%s/news.php", Context::getLangType());
$cache_file = sprintf("%sfiles/cache/newest_news.%s.cache.php", _XE_PATH_,Context::getLangType());
if(!file_exists($cache_file) || filemtime($cache_file)+ 60*60 < time()) {
// 네트웍 상태로 데이터를 가져오지 못할 상황을 고려해 일단 filemtime을 변경하여 관리자 페이지 refresh시에 다시 읽ㅇ 오지 않도록 함
// 뉴스를 보지는 못하지만 관리자 페이지 접속은 이상없도록 함
FileHandler::writeFile($cache_file,'');
FileHandler::getRemoteFile($newest_news_url, $cache_file);
}

View file

@ -24,59 +24,59 @@
'system' => 'システム管理',
);
$lang->newest_news = "最新ニュース";
$lang->newest_news = '最新ニュース';
$lang->env_setup = "環境設定";
$lang->env_setup = '環境設定';
$lang->default_url = '基本URL';
$lang->about_sso_url = "複数のバーチャルVirtualサイトを運営する場合、どちらからログインしてもバーチャルVirtualサイトの間でログイン情報を維持出来るようにするためには、基本になるサイトでのXEをインストールしたurlを登録して下さい。 (例: http://ドメイン/インストールパス)";
$lang->about_default_url = '複数のバーチャルVirtualサイトを運営する場合、どちらからログインしてもバーチャルVirtualサイトの間でログイン情報を維持出来るようにするためには、基本になるサイトでのXEをインストールしたurlを登録して下さい。 (例: http://ドメイン/インストールパス)';
$lang->env_information = "環境情報";
$lang->current_version = "インストールバージョン";
$lang->current_path = "インストールパス";
$lang->released_version = "最新バージョン";
$lang->env_information = '環境情報';
$lang->current_version = 'インストールバージョン';
$lang->current_path = 'インストールパス';
$lang->released_version = '最新バージョン';
$lang->about_download_link = "インストールされたバージョンより新しいバージョンが配布されています。\n「ダウンロード」リンクをクリックするとダウンロード出来ます。";
$lang->item_module = "モジュールリスト";
$lang->item_addon = "アドオンリスト";
$lang->item_widget = "ウィジェットリスト";
$lang->item_layout = "レイアウトリスト";
$lang->item_module = 'モジュールリスト';
$lang->item_addon = 'アドオンリスト';
$lang->item_widget = 'ウィジェットリスト';
$lang->item_layout = 'レイアウトリスト';
$lang->module_name = "モジュール名";
$lang->addon_name = "アドオン名";
$lang->version = "バージョン";
$lang->author = "制作者";
$lang->table_count = "テーブル数";
$lang->installed_path = "インストールパス";
$lang->module_name = 'モジュール名';
$lang->addon_name = 'アドオン名';
$lang->version = 'バージョン';
$lang->author = '制作者';
$lang->table_count = 'テーブル数';
$lang->installed_path = 'インストールパス';
$lang->cmd_shortcut_management = "メニューの編集";
$lang->cmd_shortcut_management = 'メニューの編集';
$lang->msg_is_not_administrator = '管理者だけアクセス出来ます';
$lang->msg_manage_module_cannot_delete = 'モジュール、アドオン、ウィジェットのショットカットは削除出来ません。';
$lang->msg_default_act_is_null = 'デフォルトの管理者のアクションが指定されていないため、ショットカットを登録することが出来ません。';
$lang->welcome_to_xe = 'XEの管理者ページです。';
$lang->about_admin_page = "管理者ページはまだ未完成です。\nクローズベータバージョンの期間に、多くの方々からご意見をいただきながら、必ず必要なコンテンツを埋めていきたいと思います。";
$lang->about_lang_env = "初めてサイトに訪問したユーザーに対し、上記の選択した言語でサイトを表示させるためには、必ず下記の「保存」ボタンをクリックして適用して下さい。";
$lang->about_admin_page = "管理者ページはまだ未完成です。\nクローズベータバージョンの期間に、多くの方々からご意見をいただきながら、必ず完成したいと思います。";
$lang->about_lang_env = '初めてサイトに訪問したユーザーに対し、上記の選択した言語でサイトを表示させるためには、必ず下記の「保存」ボタンをクリックして適用して下さい。';
$lang->xe_license = 'XEのライセンスはGPLです。';
$lang->about_shortcut = 'よく使用するモジュールに登録されたショートカットは削除出来ます。';
$lang->yesterday = "昨日";
$lang->today = "今日";
$lang->yesterday = '昨日';
$lang->today = '今日';
$lang->cmd_lang_select = "言語選択";
$lang->about_cmd_lang_select = "選択された言語だけでサービスを行います。";
$lang->about_recompile_cache = "要らないかごみのキャッシューファイルを整理します。";
$lang->use_ssl = "SSL環境設定";
$lang->cmd_lang_select = '言語選択';
$lang->about_cmd_lang_select = '選択された言語だけでサービスを行います。';
$lang->about_recompile_cache = '要らないかごみのキャッシューファイルを整理します。';
$lang->use_ssl = 'SSL環境設定';
$lang->ssl_options = array(
'none' => "使わない",
'optional' => "部分的に使う",
'always' => "常に使う"
'none' => '使わない',
'optional' => '部分的に使う',
'always' => '常に使う'
);
$lang->about_use_ssl = "「部分的に使う場合」は「会員登録/会員情報変更」など特定のactionでSSLを利用する場合、「常に使う」は全てのサービスがSSLを使う場合に選択します。";
$lang->server_ports = "サーバーポート指定";
$lang->about_server_ports = "一般的に使われているHTTPの80、HTTPSの443以外の他のポートを使うために、ポートを指定して下さい。";
$lang->about_use_ssl = '「部分的に使う場合」は「会員登録/会員情報変更」など特定のactionでSSLを利用する場合、「常に使う」は全てのサービスがSSLを使う場合に選択します。';
$lang->server_ports = 'サーバーポート指定';
$lang->about_server_ports = '一般的に使われているHTTPの80、HTTPSの443以外の他のポートを使うために、ポートを指定して下さい。';
$lang->use_db_session = 'DBで認証セッション管理';
$lang->about_db_session = '認証の時に使われるPHPセッションをDBで使う機能です。<br />ウェブサーバーの負荷が低いサイトではこの機能をオフにすることでむしろサイトのレスポンスが向上されることもあります。<br />また、この機能をオンにすると、「現在ログイン中の会員」の機能が不可になります。';
?>

View file

@ -130,7 +130,7 @@
.boxModelControler .buttonArea{ padding:15px 0 0 0; text-align:center;}
#popup_content { border:2px solid #777; margin:0; font-size:12px; background:#fff; position:relative;}
#popup_content .xButton { position:absolute; top:9px; right:18px; width:15px; height:14px; background-color:transparent; background:url(../img/buttonClose.gif) no-repeat; border:0; cursor:pointer; overflow:hidden; }
#popup_content .xButton { position:absolute; top:9px; right:18px; width:15px; height:14px; padding:0; background-color:transparent; background:url(../img/buttonClose.gif) no-repeat; border:0; cursor:pointer; overflow:hidden; }
#popup_content .xButton span { position:relative; z-index:-1; visibility:hidden; }
#popup_content * { font-size:12px; }
#popHeadder h4.xeAdmin, #popHeadder h1.xeAdmin, #popHeadder h3.xeAdmin { font-size:14px !important; font-family:Dotum !important; background:#f4f4f4 !important; padding:8px 30px 8px 15px !important; letter-spacing:-1px !important; border:none !important; margin:0 !important;}

View file

@ -2,6 +2,7 @@
<!--%import("../../install/lang")-->
<!--%import("../../module/tpl/js/module_admin.js",optimized=false)-->
<!--%import("../../session/tpl/js/session.js",optimized=false)-->
<!--%import("../../addon/tpl/js/addon.js",optimized=false)-->
<!--%import("../../addon/tpl/filter/toggle_activate_addon.xml")-->
@ -201,6 +202,19 @@
</tbody>
</table>
<h4 class="xeAdmin">{$lang->cmd_remake_cache}</h4>
<table cellspacing="0" class="rowTable">
<tbody>
<tr>
<td>
<span class="button black strong"><input type="button" value="{$lang->cmd_remake_cache}" onclick="doRecompileCacheFile(); return false;"/></span>
</td>
<td>
<span class="button black strong"><input type="button" value="{$lang->cmd_clear_session}" onclick="doClearSession(); return false; "/></span>
</td>
</tr>
</tbody>
</table>
<!--@if($news)-->
<h4 class="xeAdmin">{$lang->newest_news}</h4>

View file

@ -23,27 +23,22 @@
function moduleInstall() {
// action forward에 등록 (관리자 모드에서 사용하기 위함)
$oModuleController = &getController('module');
$oModuleModel = &getModel('module');
// 2007. 10. 17 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가
$oModuleController->insertTrigger('member.getMemberMenu', 'board', 'controller', 'triggerMemberMenu', 'after');
// 기본 게시판 생성
$output = executeQuery('module.getDefaultMidInfo');
if($output->data) return new Object();
// 기본 모듈을 찾음
$oModuleModel = &getModel('module');
$site_args->site_srl = 0;
$mid_list = $oModuleModel->getMidList($site_args);
if(!count($mid_list)) {
$args->site_srl = 0;
$output = executeQuery('module.getSite', $args);
if(!$output->data->index_module_srl) {
$args->mid = 'board';
$args->module = 'board';
$args->browser_title = 'test module';
$args->browser_title = 'XpressEngine';
$args->skin = 'xe_default';
$args->site_srl = 0;
$output = $oModuleController->insertModule($args);
$module_srl = $output->get('module_srl');
$site_args->site_srl = 0;
$site_args->index_module_srl = $module_srl;
$oModuleController = &getController('module');

View file

@ -38,7 +38,7 @@
**/
function getDefaultListConfig($module_srl) {
// 가상번호, 제목, 등록일, 수정일, 닉네임, 아이디, 이름, 조회수, 추천수 추가
$virtual_vars = array( 'no', 'title', 'regdate', 'last_update', 'nick_name', 'user_id', 'user_name', 'readed_count', 'voted_count' );
$virtual_vars = array( 'no', 'title', 'regdate', 'last_update', 'last_post', 'nick_name', 'user_id', 'user_name', 'readed_count', 'voted_count','thumbnail','summary');
foreach($virtual_vars as $key) {
$extra_vars[$key] = new ExtraItem($module_srl, -1, Context::getLang($key), $key, 'N', 'N', 'N', null);
}

View file

@ -13,6 +13,9 @@
$lang->cmd_manage_menu = 'Manage Menus';
$lang->list_target_item = 'Target Item';
$lang->list_display_item = 'Display Item';
$lang->summary = 'Summary';
$lang->thumbnail = 'Thumbnail';
$lang->last_post = 'Last post';
// Item
$lang->search_result = 'Search Result';

View file

@ -12,6 +12,9 @@
$lang->cmd_manage_menu = 'Manejo del menú';
$lang->list_target_item = 'Target Item';
$lang->list_display_item = 'Display Item';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
$lang->cmd_remake_cache = 'Rehacer archivo caché';
$lang->cmd_layout_setup = 'Configuración del diseño';
$lang->cmd_layout_edit = 'Editar el diseño';

View file

@ -13,6 +13,9 @@
$lang->cmd_manage_menu = 'Administration de Menu';
$lang->list_target_item = 'Target Item';
$lang->list_display_item = 'Display Item';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
// Item
$lang->search_result = 'Résultat de la Recherche';
$lang->consultation = 'Consultation';

View file

@ -11,6 +11,9 @@
$lang->cmd_manage_menu = 'メニュー管理';
$lang->list_target_item = 'ターゲットアイテム';
$lang->list_display_item = '表示アイテム';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
// 項目
@ -29,7 +32,7 @@
// その他
$lang->about_layout_setup = 'ブログのレイアウトのコードを直接修正します。ウィジェットコードを好きなところに入力、又は管理して下さい。';
$lang->about_board_category = 'ブログのカテゴリを作成します。<br />ブログのカテゴリが誤作動する場合、「キャッシュファイルの再生性」を手動で行うことで解決出来ます。';
$lang->about_except_notice = "リストの上段に常に表示されるお知らせの書き込みを一般リストからお知らせの書き込みが表示されないようにします。";
$lang->about_except_notice = 'リストの上段に常に表示されるお知らせの書き込みを一般リストからお知らせの書き込みが表示されないようにします。';
$lang->about_use_anonymous = '匿名掲示板として活用出来ます。スキン設定で登録者の情報を表示しないに設定をお勧めします。';
$lang->about_board = '掲示板の生成、および管理するモジュールです。';
$lang->about_consultation = "相談機能とは、管理権限のない会員に本人の書き込みだけを表示する機能です。\n但し、相談機能を使用する際は、非会員の書き込みは自動的に禁止されます。";

View file

@ -11,7 +11,9 @@
$lang->cmd_manage_menu = '메뉴관리';
$lang->list_target_item = '대상 항목';
$lang->list_display_item = '표시 항목';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
// 항목
$lang->search_result = '검색결과';

View file

@ -13,6 +13,9 @@
$lang->cmd_manage_menu = 'Управление меню';
$lang->list_target_item = 'Target Item';
$lang->list_display_item = 'Display Item';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
$lang->cmd_make_child = 'Добавить дочернюю категорию';
$lang->cmd_enable_move_category = "Изменить позицию категории (Перетащите верхнее меню после выделения)";
$lang->cmd_remake_cache = 'Перепостроить файл кеша';

View file

@ -11,6 +11,9 @@
$lang->cmd_manage_menu = '菜单管理';
$lang->list_target_item = '备选项';
$lang->list_display_item = '显示项';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
// 项目

View file

@ -11,6 +11,9 @@
$lang->cmd_manage_menu = '選單管理';
$lang->list_target_item = '目標項目';
$lang->list_display_item = '顯示項目';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
// 項目

View file

@ -123,7 +123,7 @@ Jeong, Chan Myeong 070601~070630
.replyBox { padding:10px; color:#666666; border:1px solid #e0e1db; margin-top:.5em;}
.replyBox .replyItem { background-color:#FFFFFF; padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; list-style:none;}
.replyBox p { display:inline; margin-bottom:1em;}
.replyBox p { display:inline; }
.replyBox .author { float:left; padding:0 .3em 0 0; color:#3074a5; margin:0 .3em .5em 0;}
.replyBox .author a { color:#3074a5; margin-right:.3em; text-decoration:none; }
.replyBox .voted { float:left; font-size:.9em; color:#AAAAAA; margin:0 .3em .5em 1em;}

View file

@ -56,6 +56,9 @@
<!--@if($grant->view && $module_info->default_style != 'blog')-->
<div class="boardSearch">
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search">
<!--@if($vid)-->
<input type="hidden" name="vid" value="{$vid}" />
<!--@end-->
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="category" value="{$category}" />

View file

@ -142,8 +142,8 @@
<!-- 목록, 수정/삭제 버튼 -->
<div class="contentButton">
<!--@if($module_info->default_style != 'blog')-->
<a href="{getUrl('document_srl','')}" class="button {$btn_class}"><span>{$lang->cmd_list}</span></a>
<!--@if($module_info->default_style != 'blog' || ($module_info->default_style == 'blog' && Context::get('document_srl')))-->
<a href="{getUrl('document_srl','')}" class="button {$btn_class}"><span><!--@if($module_info->default_style != 'blog')-->{$lang->cmd_list}<!--@else-->{$lang->cmd_view_all}<!--@end--></span></a>
<!--@end-->
<!--@if($oDocument->isEditable())-->
<a href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl,'comment_srl','')}" class="button {$btn_class}"><span>{$lang->cmd_modify}</span></a>

View file

@ -51,6 +51,9 @@
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search" class="boardSearchForm">
<fieldset>
<legend>Board Search</legend>
<!--@if($vid)-->
<input type="hidden" name="vid" value="{$vid}" />
<!--@end-->
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="category" value="{$category}" />

View file

@ -40,7 +40,7 @@
<p>&quot;{$lang->msg_is_secret}&quot;</p>
<dl>
<dt><label for="cpw">비밀번호</label> :</dt>
<dt><label for="cpw">{$lang->password}</label> :</dt>
<dd><input type="password" name="password" id="cpw" class="inputText" /><span class="button red"><input type="submit" value="{$lang->cmd_input}" /></span></dd>
</dl>
@ -124,9 +124,9 @@
</div>
<div class="boardNavigation">
<!--@if($module_info->default_style != 'blog')-->
<!--@if($module_info->default_style != 'blog' || ($module_info->default_style == 'blog' && Context::get('document_srl')))-->
<div class="buttonLeft">
<a href="{getUrl('document_srl','')}" class="button"><span>{$lang->cmd_list}</span></a>
<a href="{getUrl('document_srl','')}" class="button"><span><!--@if($module_info->default_style != 'blog')-->{$lang->cmd_list}<!--@else-->{$lang->cmd_view_all}<!--@end--></span></a>
</div>
<!--@end-->

View file

@ -1,6 +1,5 @@
<!--@if(!$form_include)--><!--#include("header.html")--><!--@end-->
sadf
<div class="smallBox w400">
<div class="header">

View file

@ -175,6 +175,7 @@
<span class="button black strong"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
<span class="button"><input type="button" value="{$lang->cmd_back}" onclick="history.back(); return false;" /></span>
</th>
</tr>
</table>
</form>

View file

@ -18,6 +18,7 @@
<input type="hidden" name="act" value="{$act}" />
<select name="module_category_srl">
<option value="">{$lang->module_category}</option>
<option value="0" <!--@if($module_category_srl==="0")-->selected="selected"<!--@end-->>{$lang->not_exists}</option>
<!--@foreach($module_category as $key => $val)-->
<option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
@ -53,7 +54,7 @@
<td><a href="{getSiteUrl($val->domain,'','mid',$val->mid)}" onclick="window.open(this.href); return false;">{$val->browser_title}</a></td>
<td>{zdate($val->regdate,"Y-m-d")}</td>
<td><a href="{getUrl('act','dispBoardAdminBoardInfo','module_srl',$val->module_srl)}" class="buttonSet buttonSetting"><span>{$lang->cmd_setup}</span></a></td>
<td><a href="./?module=module&amp;act=dispModuleAdminCopyModule&amp;module_srl={$val->module_srl}" onclick="popopen(this.href);return false;" class="buttonSet buttonCopy"><span>{$lang->cmd_copy}</span></a></td>
<td><a href="{getUrl('','module','module','act','dispModuleAdminCopyModule','module_srl',$val->module_srl)}" onclick="popopen(this.href);return false;" class="buttonSet buttonCopy"><span>{$lang->cmd_copy}</span></a></td>
<td><a href="{getUrl('act','dispBoardAdminDeleteBoard','module_srl', $val->module_srl)}" class="buttonSet buttonDelete"><span>{$lang->cmd_delete}</span></a></td>
</tr>
<!--@end-->

View file

@ -204,8 +204,8 @@
function getSummary($str_size = 50, $tail = '...') {
$content = $this->getContent(false, false);
// 줄바꿈이 있을 때, 공백문자 삽입
$content = preg_replace('!(<br[\s]*/{0,1}>[\s]*)+!is', ' ', $content);
// 줄바꿈이 있을 때, 공백문자 삽입
$content = preg_replace('!(<br[\s]*/{0,1}>[\s]*)+!is', ' ', $content);
// </p>, </div>, </li> 등의 태그를 공백 문자로 치환
$content = str_replace(array('</p>', '</div>', '</li>'), ' ', $content);
@ -216,8 +216,8 @@
// < , > , " 를 치환
$content = str_replace(array('&lt;','&gt;','&quot;','&nbsp;'), array('<','>','"',' '), $content);
// 연속된 공백문자 삭제
$content = preg_replace('/ ( +)/is', ' ', $content);
// 연속된 공백문자 삭제
$content = preg_replace('/ ( +)/is', ' ', $content);
// 문자열을 자름
$content = trim(cut_str($content, $str_size, $tail));
@ -255,7 +255,9 @@
}
function getPermanentUrl() {
return getUrl('','document_srl',$this->get('document_srl')).'#comment_'.$this->get('comment_srl');
$url = getUrl('','document_srl',$this->get('document_srl')).'#comment_'.$this->get('comment_srl');
if(substr($url,0,1)=='/') $url = substr(Context::getRequestUri(),0,-1).$url;
return $url;
}
@ -274,12 +276,12 @@
}
function hasUploadedFiles() {
if($this->isSecret() && !$this->isGranted()) return false;
if(($this->isSecret() && !$this->isAccessible()) && !$this->isGranted()) return false;
return $this->get('uploaded_count')? true : false;
}
function getUploadedFiles() {
if($this->isSecret() && !$this->isGranted()) return;
if(($this->isSecret() && !$this->isAccessible()) && !$this->isGranted()) return;
if(!$this->get('uploaded_count')) return;
$oFileModel = &getModel('file');

View file

@ -21,7 +21,7 @@
'T' => '保存箱',
);
$lang->readed_date = "開封時間";
$lang->readed_date = '開封時間';
$lang->sender = '送信者';
$lang->receiver = '受信者';

View file

@ -19,7 +19,7 @@
</select>
<select name="editor_colorset" id="sel_editor_colorset" style="display:none">
</select>
<script "text/javascript">//<![CDATA[
<script type="text/javascript">//<![CDATA[
getEditorSkinColorList('{$communication_config->editor_skin}','{$communication_config->editor_colorset}');
//]]></script>
</td>

View file

@ -5,7 +5,7 @@
* @brief 日本語言語パッケージ(基本的な内容のみ)
**/
$lang->counter = "カウンター";
$lang->counter = 'カウンター';
$lang->cmd_select_date = '日付選択';
$lang->cmd_select_counter_type = array(
'hour' => '時間帯別',

View file

@ -30,7 +30,7 @@
$args->alias_srl = getNextSequence();
$args->module_srl = $module_srl;
$args->document_srl = $document_srl;
$args->alias_title = $alias_title;
$args->alias_title = urldecode($alias_title);
$query = "document.insertAlias";
$output = executeQuery($query, $args);
return $output;
@ -218,7 +218,7 @@
// trigger 호출 (after)
if($output->toBool()) {
$trigger_output = ModuleHandler::triggerCall('document.insertDocument', 'after', $obj);
$trigger_output = ModuleHandler::triggerCall('document.insertDocument', 'after', $obj);
if(!$trigger_output->toBool()) {
$oDB->rollback();
return $trigger_output;
@ -501,6 +501,9 @@
return $output;
}
// update category
if($oDocument->get('category_srl')) $this->updateCategoryCount($oDocument->get('module_srl'),$oDocument->get('category_srl'));
// commit
$oDB->commit();
@ -555,14 +558,14 @@
$obj->var_search = $var_search=='Y'?'Y':'N';
$obj->var_default = $var_default;
$obj->var_desc = $var_desc;
$obj->eid = $eid;
$obj->eid = $eid;
$output = executeQuery('document.getDocumentExtraKeys', $obj);
if(!$output->data) return executeQuery('document.insertDocumentExtraKey', $obj);
$output = executeQuery('document.updateDocumentExtraKey', $obj);
// extra_vars에서 확장 변수 eid를 일괄 업데이트
$output = executeQuery('document.updateDocumentExtraVar', $obj);
// extra_vars에서 확장 변수 eid를 일괄 업데이트
$output = executeQuery('document.updateDocumentExtraVar', $obj);
return $output;
}
@ -592,7 +595,7 @@
$obj->var_idx = $var_idx;
$obj->value = $value;
$obj->lang_code = $lang_code;
$obj->eid = $eid;
$obj->eid = $eid;
executeQuery('document.insertDocumentExtraVar', $obj);
}
@ -824,7 +827,7 @@
function updateCategoryCount($module_srl, $category_srl, $document_count = 0) {
// document model 객체 생성
$oDocumentModel = &getModel('document');
if(!$document_count) $document_count = $oDocumentModel->getCategoryDocumentCount($category_srl);
if(!$document_count) $document_count = $oDocumentModel->getCategoryDocumentCount($module_srl,$category_srl);
$args->category_srl = $category_srl;
$args->document_count = $document_count;
@ -998,7 +1001,13 @@
**/
function procDocumentInsertCategory($args = null) {
// 입력할 변수 정리
if(!$args) $args = Context::gets('module_srl','category_srl','parent_srl','title','expand','group_srls','color');
if(!$args) $args = Context::gets('module_srl','category_srl','parent_srl','title','expand','group_srls','color','mid');
if(!$args->module_srl && $args->mid){
$mid = $args->mid;
unset($args->mid);
$args->module_srl = $this->module_srl;
}
// 권한 체크
$oModuleModel = &getModel('module');
@ -1587,6 +1596,5 @@
$this->setError(-1);
$this->setMessage('success_updated');
}
}
?>

View file

@ -301,9 +301,10 @@
* 에디터 코드가 변환된 내용 반환
**/
function getTransContent($add_popup_menu = true, $add_content_info = true, $resource_realpath = false, $add_xe_content_class = true) {
$oContext = &Context::getInstance();
$oEditorController = &getController('editor');
$content = $this->getContent($add_popup_menu, $add_content_info, $resource_realpath, $add_xe_content_class);
$content = $oEditorController->transComponent($content);
return $content;
}
@ -311,8 +312,8 @@
function getSummary($str_size = 50, $tail = '...') {
$content = $this->getContent(false,false);
// 줄바꿈이 있을 때, 공백문자 삽입
$content = preg_replace('!(<br[\s]*/{0,1}>[\s]*)+!is', ' ', $content);
// 줄바꿈이 있을 때, 공백문자 삽입
$content = preg_replace('!(<br[\s]*/{0,1}>[\s]*)+!is', ' ', $content);
// </p>, </div>, </li> 등의 태그를 공백 문자로 치환
$content = str_replace(array('</p>', '</div>', '</li>'), ' ', $content);
@ -323,8 +324,8 @@
// < , > , " 를 치환
$content = str_replace(array('&lt;','&gt;','&quot;','&nbsp;'), array('<','>','"',' '), $content);
// 연속된 공백문자 삭제
$content = preg_replace('/ ( +)/is', ' ', $content);
// 연속된 공백문자 삭제
$content = preg_replace('/ ( +)/is', ' ', $content);
// 문자열을 자름
$content = trim(cut_str($content, $str_size, $tail));
@ -376,7 +377,13 @@
}
function getPermanentUrl() {
return getUrl('','document_srl',$this->document_srl);
$url = getUrl('','document_srl',$this->get('document_srl'));
if(substr($url,0,1)=='/') {
if($_SERVER['HTTPS']=='on') $http_url = 'https://';
else $http_url = 'http://';
$url = $http_url.$_SERVER['HTTP_HOST'].$url;
}
return $url;
}
function getTrackbackUrl() {
@ -465,9 +472,19 @@
if(!$output->toBool() || !count($output->data)) return;
// 구해온 목록을 commentItem 객체로 만듬
// 계층구조에 따라 부모글에 관리권한이 있으면 자식글에는 보기 권한을 줌
$accessible = array();
foreach($output->data as $key => $val) {
$oCommentItem = new commentItem();
$oCommentItem->setAttribute($val);
// 권한이 있는 글에 대해 임시로 권한이 있음을 설정
if($oCommentItem->isGranted()) $accessible[$val->comment_srl] = true;
// 현재 댓글이 비밀글이고 부모글이 있는 답글이고 부모글에 대해 관리 권한이 있으면 보기 가능하도록 수정
if($val->parent_srl>0 && $val->is_secret == 'Y' && !$oCommentItem->isAccessible() && $accessible[$val->parent_srl]===true) {
$oCommentItem->setAccessible();
}
$comment_list[$val->comment_srl] = $oCommentItem;
}
@ -557,7 +574,7 @@
$cnt = count($matches);
for($i=0;$i<$cnt;$i++) {
$target_src = trim($matches[$i][2]);
if(!preg_match("/\.(jpg|png|jpeg|gif|bmp)$/i",$target_src)) continue;
if(!preg_match("/\.(jpg|png|jpeg|gif|bmp)$/i",$target_src)) continue;
if(preg_match('/\/(common|modules|widgets|addons|layouts)\//i', $target_src)) continue;
else {
if(!preg_match('/^(http|https):\/\//i',$target_src)) $target_src = Context::getRequestUri().$target_src;

View file

@ -703,7 +703,8 @@
/**
* @brief 카테고리에 속한 문서의 갯수를 구함
**/
function getCategoryDocumentCount($category_srl) {
function getCategoryDocumentCount($module_srl, $category_srl) {
$args->module_srl = $module_srl;
$args->category_srl = $category_srl;
$output = executeQuery('document.getCategoryDocumentCount', $args);
return (int)$output->data->count;
@ -903,8 +904,10 @@
function getDocumentSrlByAlias($mid, $alias)
{
if(!$mid || !$alias) return null;
$site_module_info = Context::get('site_module_info');
$args->mid = $mid;
$args->alias_title = $alias;
$args->site_srl = $site_module_info->site_srl;
$output = executeQuery('document.getDocumentSrlByAlias', $args);
if(!$output->data) return null;
else return $output->data->document_srl;

View file

@ -97,7 +97,10 @@
}
$oModuleModel = &getModel('module');
$document_config = $oModuleModel->getModulePartConfig('document', $module_srl);
if($current_module_srl)
{
$document_config = $oModuleModel->getModulePartConfig('document', $current_module_srl);
}
if(!isset($document_config->use_history)) $document_config->use_history = 'N';
Context::set('document_config', $document_config);

View file

@ -21,7 +21,7 @@
$lang->category_group_srls = 'グループ制限';
$lang->cmd_make_child = '下位カテゴリ追加';
$lang->cmd_enable_move_category = "カテゴリ位置変更(選択後上のメニューをドラッグして下さい)";
$lang->cmd_enable_move_category = 'カテゴリ位置変更(選択後上のメニューをドラッグして下さい)';
$lang->about_category_title = 'カテゴリ名を入力して下さい。';
$lang->about_expand = 'チェックすると常に展開された状態になります。';
@ -41,7 +41,7 @@
$lang->msg_is_secret = '非公開設定の書き込みです。';
$lang->msg_checked_document_is_deleted = '%d個の書き込みが削除されました。';
$lang->move_target_module = "移動対象モジュール";
$lang->move_target_module = '移動対象モジュール';
// 管理者ページで検索する内容
$lang->search_target_list = array(
@ -66,14 +66,14 @@
'ipaddress' => 'IPアドレス',
);
$lang->alias = "アリアスAlias";
$lang->history = "履歴";
$lang->about_use_history = "履歴機能を使用するかを設定します。履歴機能を使用すると文書修正のバージョンを管理し、過去のバージョンから復元することも可能です。";
$lang->trace_only = "記録だけ残す";
$lang->alias = 'アリアスAlias';
$lang->history = '履歴';
$lang->about_use_history = '履歴機能を使用するかを設定します。履歴機能を使用すると文書修正のバージョンを管理し、過去のバージョンから復元することも可能です。';
$lang->trace_only = '記録だけ残す';
$lang->cmd_trash = "ごみ箱";
$lang->cmd_restore = "復元";
$lang->cmd_restore_all = "すべて復元";
$lang->cmd_restore = "差し戻し";
$lang->cmd_restore_all = "すべて差し戻し";
$lang->in_trash = "ごみ箱";
$lang->trash_nick_name = "削除者のニックネーム";

View file

@ -7,5 +7,6 @@
</columns>
<conditions>
<condition operation="equal" column="category_srl" var="category_srl" filter="number" notnull="notnull" />
<condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" pipe="and" />
</conditions>
</query>

View file

@ -7,7 +7,8 @@
<column name="document_srl" />
</columns>
<conditions>
<condition operation="equal" column="alias_title" var="alias_title" filter="number" notnull="notnull" />
<condition operation="equal" column="alias_title" var="alias_title" notnull="notnull" />
<condition operation="equal" column="modules.site_srl" var="site_srl" filter="number" notnull="notnull" pipe="and" />
<condition operation="equal" column="modules.mid" var="mid" filter="number" notnull="notnull" pipe="and" />
<condition operation="equal" column="modules.module_srl" var="document_aliases.module_srl" filter="number" notnull="notnull" pipe="and" />
</conditions>

View file

@ -0,0 +1,15 @@
<query id="updateDocumentOrder" action="update">
<tables>
<table name="documents" />
</tables>
<columns>
<column name="module_srl" var="module_srl" filter="number" default="0" />
<column name="regdate" var="regdate" default="curdate()" />
<column name="last_update" var="last_update" default="curdate()" />
<column name="list_order" var="list_order" />
<column name="update_order" var="update_order" default="0" />
</columns>
<conditions>
<condition operation="equal" column="document_srl" var="document_srl" filter="number" notnull="notnull" />
</conditions>
</query>

View file

@ -9,6 +9,6 @@ $lang->used_collapse = '折りたたみ機能を使う';
$lang->hidden_linenumber = '行番号を隠す';
$lang->hidden_controls = 'ツールバーを隠す';
$lang->file_path = 'ファイルパス';
$lang->file_path = 'ファイルパス';
$lang->description = '説明';
$lang->first_line = '開始する行番号';

View file

@ -33,10 +33,10 @@
$this->add('emoticons', implode("\n",$list));
}
/**
* @brief 재귀적으로 이모티콘이 법한 파일들을 하위 디렉토리까지 전부 검색한다. 8,000개까지는 테스트 해봤는데 스택오버프로우를 일으킬지 어떨지는 모르겠음.(2007.9.6, 베니)
**/
function getEmoticons($path) {
/**
* @brief 재귀적으로 이모티콘이 법한 파일들을 하위 디렉토리까지 전부 검색한다. 8,000개까지는 테스트 해봤는데 스택오버프로우를 일으킬지 어떨지는 모르겠음.(2007.9.6, 베니)
**/
function getEmoticons($path) {
$emoticon_path = sprintf("%s/%s", $this->emoticon_path, $path);
$output = array();
@ -48,14 +48,20 @@
$oDir->close();
if(count($output)) asort($output);
return $output;
}
}
/**
* @brief popup window요청시 popup window에 출력할 내용을 추가하면 된다
**/
function getPopupContent() {
// 이모티콘 디렉토리 목록을 가져옴
$emoticon_list = FileHandler::readDir($this->emoticon_path);
$emoticon_dirs = FileHandler::readDir($this->emoticon_path);
$emoticon_list = array();
if($emoticon_dirs) {
foreach($emoticon_dirs as $emoticon) {
if(preg_match("/^([a-z0-9\_]+)$/i", $emoticon)) $emoticon_list[] = $emoticon;
}
}
Context::set('emoticon_list', $emoticon_list);
// 첫번째 이모티콘 디렉토리의 이미지 파일을 구함
@ -70,10 +76,10 @@
return $oTemplate->compile($tpl_path, $tpl_file);
}
/**
* @brief 이모티콘의 경로 문제 해결을 하기 위해 추가하였다. (2007.9.6 베니)
**/
function transHTML($xml_obj) {
/**
* @brief 이모티콘의 경로 문제 해결을 하기 위해 추가하였다. (2007.9.6 베니)
**/
function transHTML($xml_obj) {
$src = $xml_obj->attrs->src;
$alt = $xml_obj->attrs->alt;

View file

@ -21,7 +21,7 @@
$lang->gallery_bg_color = "背景色";
$lang->about_image_list = "イメージギャラリーに追加するファイルを選択して下さい。選択した後、ドラッグまたは「Shift+クリック範囲選択、Ctrl+クリック(個別選択)」が出来ます。";
$lang->cmd_gallery_prev = "前のイメージ表示";
$lang->cmd_gallery_prev = "前のイメージ表示";
$lang->cmd_gallery_next = "次のイメージ表示";
$lang->cmd_gallery_thumbnail = "サムネール表示";
?>

View file

@ -72,11 +72,8 @@ function start_list_gallery() {
obj.image.style.marginBottom = "10px";
obj.image.style.display = "block";
// resize_scale이 1이 아니면, 즉 리사이즈 되었다면 해당 이미지 클릭시 원본을 새창으로 띄워줌
if(resize_scale!=1 && typeof(showOriginalImage)=='function') {
obj.image.style.cursor = 'pointer';
xAddEventListener(obj.image, 'click', showOriginalImage);
}
// 리사이즈 되었다면 resize_image 애드온의 slideshow() 기능 사용
if(resize_scale != 1) obj.image.rel = 'xe_gallery';
zone.appendChild(obj.image);
}

View file

@ -58,6 +58,14 @@
$src = str_replace(array('&','"'), array('&amp;','&qout;'), $src);
$src = str_replace('&amp;amp;', '&amp;', $src);
// 이미지 주소를 request uri가 포함된 주소로 변환 (rss출력, 등등을 위함)
$temp_src = explode('/', $src);
if($temp_src[0]=='.') $src = Context::getRequestUri().substr($src, 2);
elseif($temp_src[0]=='' && $src) {
if($_SERVER['HTTPS']=='on') $http_src = 'https://';
else $http_src = 'http://';
$src = $http_src.$_SERVER['HTTP_HOST'].$src;
}
if(!$alt) $alt = $src;
$attr_output = array();

View file

@ -5,19 +5,19 @@
* @brief ウィジウィグエディターeditorモジュール > イメージリンクimage_linkコンポネント言語パッケージ
**/
$lang->image_url = "イメージパス";
$lang->image_alt = "説明Alt入力";
$lang->image_scale = "イメージサイズ";
$lang->image_align = "アライン位置";
$lang->image_align_normal = "一段落";
$lang->image_align_left = "左揃え";
$lang->image_align_middle = "中央揃え";
$lang->image_align_right = "右揃え";
$lang->image_border = "ボーダー";
$lang->image_url = 'イメージパス';
$lang->image_alt = '説明Alt入力';
$lang->image_scale = 'イメージサイズ';
$lang->image_align = 'アライン位置';
$lang->image_align_normal = '一段落';
$lang->image_align_left = '左揃え';
$lang->image_align_middle = '中央揃え';
$lang->image_align_right = '右揃え';
$lang->image_border = 'ボーダー';
$lang->image_margin = '外側の空白(Margin)';
$lang->urllink_open_window = "新しいウィンドウで開く";
$lang->about_url_link_open_window = "チェックすると、リンクをクリックする際、新しいウィンドウで開きます。";
$lang->urllink_open_window = '新しいウィンドウで開く';
$lang->about_url_link_open_window = 'チェックすると、リンクをクリックする際、新しいウィンドウで開きます。';
$lang->cmd_get_scale = "イメージサイズを計算";
$lang->cmd_get_scale = 'イメージサイズを計算';
?>

View file

@ -10,4 +10,9 @@
$lang->multimedia_width = "가로크기";
$lang->multimedia_height = "세로크기";
$lang->multimedia_auto_start = "자동시작";
$lang->multimedia_wmode = '위치';
$lang->multimedia_wmode_window = '항상 위';
$lang->multimedia_wmode_opaque = '배경 불투명';
$lang->multimedia_wmode_transparent = '배경 투명';
?>

View file

@ -53,12 +53,19 @@
if($auto_start!="true") $auto_start = "false";
else $auto_start = "true";
$wmode = $xml_obj->attrs->wmode;
if($wmode == 'window') $wmode = 'window';
elseif($wmode == 'opaque') $wmode = 'opaque';
else $wmode = 'transparent';
$caption = $xml_obj->body;
$src = str_replace(array('&','"'), array('&amp;','&qout;'), $src);
$src = str_replace('&amp;amp;', '&amp;', $src);
return sprintf("<div><script type=\"text/javascript\">displayMultimedia(\"%s\", \"%s\",\"%s\", { autostart : %s });</script></div>", $src, $width, $height, $auto_start);
if(Context::getResponseMethod() != "XMLRPC") return sprintf("<script type=\"text/javascript\">displayMultimedia(\"%s\", \"%s\",\"%s\", { \"autostart\" : %s, \"wmode\" : \"%s\" });</script>", $src, $width, $height, $auto_start, $wmode);
else return sprintf("<div style=\"width: %dpx; height: %dpx;\"><span style=\"position:relative; top:%dpx;left:%d\"><img src=\"%s\" /><br />Attached Multimedia</span></div>", $width, $height, ($height/2-16), ($width/2-31), Context::getRequestUri().'./modules/editor/components/multimedia_link/tpl/multimedia_link_component.gif');
}
}
?>

View file

@ -31,6 +31,16 @@
<th scope="row"><div>{$lang->multimedia_auto_start}</div></th>
<td><input type="checkbox" id="multimedia_auto_start" value="Y" /></td>
</tr>
<tr>
<th scope="row"><div>{$lang->multimedia_wmode}</div></th>
<td>
<select name="multimedia_wmode">
<option value="window">{$lang->multimedia_wmode_window}</option>
<option value="opaque">{$lang->multimedia_wmode_opaque}</option>
<option value="transparent" selected="selected">{$lang->multimedia_wmode_transparent}</option>
</select>
<p>{$lang->about_ccl_allow_modification}</p>
</td>
</table>
</div>
<div id="popFooter">

View file

@ -14,6 +14,9 @@ function getMultimedia() {
var width = xWidth(node);
var height = xHeight(node);
var auto_start = node.getAttribute("auto_start");
var wmode = node.getAttribute("wmode");
var fo_obj = xGetElementById('fo');
xGetElementById("multimedia_url").value = url;
xGetElementById("multimedia_caption").value = caption;
@ -21,6 +24,9 @@ function getMultimedia() {
xGetElementById("multimedia_height").value = height-4;
if(auto_start=="true") xGetElementById("multimedia_auto_start").checked = true;
if(wmode == 'window') fo_obj.multimedia_wmode.selectedIndex = 0;
else if(wmode == 'opaque') fo_obj.multimedia_wmode.selectedIndex = 1;
else fo_obj.multimedia_wmode.selectedIndex = 2;
}
function insertMultimedia(obj) {
@ -29,6 +35,9 @@ function insertMultimedia(obj) {
var url = xGetElementById("multimedia_url").value;
url = url.replace(request_uri,'');
// url = encodeURI(url);
var fo_obj = xGetElementById('fo');
var wmode = fo_obj.multimedia_wmode.options[fo_obj.multimedia_wmode.selectedIndex].value;
var caption = xGetElementById("multimedia_caption").value;
@ -46,7 +55,7 @@ function insertMultimedia(obj) {
return;
}
var text = "<img src=\"./common/tpl/images/blank.gif\" editor_component=\"multimedia_link\" multimedia_src=\""+url+"\" width=\""+width+"\" height=\""+height+"\" style=\"display:block;width:"+width+"px;height:"+height+"px;border:2px dotted #4371B9;background:url(./modules/editor/components/multimedia_link/tpl/multimedia_link_component.gif) no-repeat center;\" auto_start=\""+auto_start+"\" alt=\""+caption+"\" />";
var text = "<img src=\"./common/tpl/images/blank.gif\" editor_component=\"multimedia_link\" multimedia_src=\""+url+"\" width=\""+width+"\" height=\""+height+"\" wmode=\""+wmode+"\" style=\"display:block;width:"+width+"px;height:"+height+"px;border:2px dotted #4371B9;background:url(./modules/editor/components/multimedia_link/tpl/multimedia_link_component.gif) no-repeat center;\" auto_start=\""+auto_start+"\" alt=\""+caption+"\" />";
opener.editorFocus(opener.editorPrevSrl);

View file

@ -22,5 +22,7 @@
<action name="procEditorAdminDisableComponent" type="controller" standalone="true" />
<action name="procEditorAdminMoveListOrder" type="controller" standalone="true" />
<action name="procEditorAdminSetupComponent" type="controller" standalone="true" />
<action name="procEditorLoadSavedDocument" type="controller" standalone="true" />
</actions>
</module>

View file

@ -49,6 +49,15 @@
function checkUpdate() {
$oModuleModel = &getModel('module');
$oDB = &DB::getInstance();
// 2009. 06. 15 자동저장시 module_srl 을 저장
if(!$oDB->isColumnExists("editor_autosave","module_srl")) return true;
// 2009. 06. 15 module_srl을 인덱스로
if(!$oDB->isIndexExists("editor_autosave","idx_module_srl")) return true;
// 2007. 10. 17 글의 입력(신규 or 수정)이 일어날때마다 자동 저장된 문서를 삭제하는 trigger 추가
if(!$oModuleModel->getTrigger('document.insertDocument', 'editor', 'controller', 'triggerDeleteSavedDoc', 'after')) return true;
if(!$oModuleModel->getTrigger('document.updateDocument', 'editor', 'controller', 'triggerDeleteSavedDoc', 'after')) return true;
@ -59,6 +68,9 @@
// 2009. 04. 14 editor component 변환 코드를 trigger로 독립
if(!$oModuleModel->getTrigger('display', 'editor', 'controller', 'triggerEditorComponentCompile', 'before')) return true;
// 2009. 06. 19 사용하지 않는 트리거 제거
if($oModuleModel->getTrigger('file.getIsPermitted', 'editor', 'controller', 'triggerSrlSetting', 'before')) return true;
return false;
}
@ -69,6 +81,17 @@
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
$oDB = &DB::getInstance();
// 자동저장시 module_srl 을 저장 2009.6.15
if(!$oDB->isColumnExists("editor_autosave","module_srl"))
$oDB->addColumn("editor_autosave","module_srl","number",11);
// module_srl을 인덱스로
if(!$oDB->isIndexExists("editor_autosave","idx_module_srl"))
$oDB->addIndex("editor_autosave","idx_module_srl", "module_srl");
// 2007. 10. 17 글의 입력(신규 or 수정)이 일어날때마다 자동 저장된 문서를 삭제하는 trigger 추가
if(!$oModuleModel->getTrigger('document.insertDocument', 'editor', 'controller', 'triggerDeleteSavedDoc', 'after'))
$oModuleController->insertTrigger('document.insertDocument', 'editor', 'controller', 'triggerDeleteSavedDoc', 'after');
@ -83,6 +106,10 @@
if(!$oModuleModel->getTrigger('display', 'editor', 'controller', 'triggerEditorComponentCompile', 'before'))
$oModuleController->insertTrigger('display', 'editor', 'controller', 'triggerEditorComponentCompile', 'before');
// 2009. 06. 19 사용하지 않는 트리거 제거
if($oModuleModel->getTrigger('file.getIsPermitted', 'editor', 'controller', 'triggerSrlSetting', 'before'))
$oModuleController->deleteTrigger('file.getIsPermitted', 'editor', 'controller', 'triggerSrlSetting', 'before');
return new Object(0, 'success_updated');
}

View file

@ -18,7 +18,7 @@
**/
function procEditorSaveDoc() {
$this->deleteSavedDoc();
$this->deleteSavedDoc(false);
$args->document_srl = Context::get('document_srl');
$args->content = Context::get('content');
@ -33,7 +33,7 @@
**/
function procEditorRemoveSavedDoc() {
$oEditorController = &getController('editor');
$oEditorController->deleteSavedDoc();
$oEditorController->deleteSavedDoc(true);
}
/**
@ -92,6 +92,7 @@
}
if(count($font_list)) $editor_config->content_font = '"'.implode('","',$font_list).'"';
}
$editor_config->content_font_size = Context::get('content_font_size');
$editor_config->sel_editor_colorset = Context::get('sel_editor_colorset');
$editor_config->sel_comment_editor_colorset = Context::get('sel_comment_editor_colorset');
@ -171,7 +172,14 @@
}
}
$content_font = $editor_config->content_font;
if($content_font) Context::addHtmlHeader('<style type="text/css" charset="UTF-8"> .xe_content { font-family:'.$content_font.'; } </style>');
$content_font_size = $editor_config->content_font_size;
if($content_font || $content_font_size) {
$buff = '<style type="text/css" charset="UTF-8"> .xe_content { ';
if($content_font) $buff .= 'font-family:'.$content_font.';';
if($content_font_size) $buff .= 'font-size:'.$content_font_size.';';
$buff .= ' }; </style>';
Context::addHtmlHeader($buff);
}
}
$content = $this->transComponent($content);
@ -214,23 +222,52 @@
**/
function doSaveDoc($args) {
if(!$args->document_srl) $args->document_srl = $_SESSION['upload_info'][$editor_sequence]->upload_target_srl;
if(Context::get('is_logged')) {
$logged_info = Context::get('logged_info');
$args->member_srl = $logged_info->member_srl;
} else {
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
}
// module_srl이 없으면 현재 모듈
if(!$args->module_srl) {
$args->module_srl = Context::get('module_srl');
}
if(!$args->module_srl) {
$current_module_info = Context::get('current_module_info');
$args->module_srl = $current_module_info->module_srl;
}
// 저장
return executeQuery('editor.insertSavedDoc', $args);
}
/**
* @brief 자동 저장글 Srl 로드 - XE 이전 버전 사용자를 위함.
**/
function procEditorLoadSavedDocument() {
$editor_sequence = Context::get('editor_sequence');
$primary_key = Context::get('primary_key');
$oEditorModel = &getModel('editor');
$oFileController = &getController('file');
$saved_doc = $oEditorModel->getSavedDoc(null);
$oFileController->setUploadInfo($editor_sequence, $saved_doc->document_srl);
$vars = $this->getVariables();
$this->add("editor_sequence", $editor_sequence);
$this->add("key", $primary_key);
$this->add("title", $saved_doc->title);
$this->add("content", $saved_doc->content);
$this->add("document_srl", $saved_doc->document_srl);
}
/**
* @brief 게시글의 입력/수정이 일어났을 경우 자동 저장문서를 제거하는 trigger
**/
function triggerDeleteSavedDoc(&$obj) {
$this->deleteSavedDoc();
$this->deleteSavedDoc(false);
return new Object();
}
@ -238,13 +275,33 @@
* @brief 자동 저장된 글을 삭제
* 현재 접속한 사용자를 기준
**/
function deleteSavedDoc() {
function deleteSavedDoc($mode = false) {
if(Context::get('is_logged')) {
$logged_info = Context::get('logged_info');
$args->member_srl = $logged_info->member_srl;
} else {
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
}
$args->module_srl = Context::get('module_srl');
// module_srl이 없으면 현재 모듈
if(!$args->module_srl) {
$current_module_info = Context::get('current_module_info');
$args->module_srl = $current_module_info->module_srl;
}
// 자동저장된 값이 혹시 이미 등록된 글인지 확인
$output = executeQuery('editor.getSavedDocument', $args);
$saved_doc = $output->data;
if(!$saved_doc) return;
$oDocumentModel = &getModel('document');
$oSaved = $oDocumentModel->getDocument($saved_doc->document_srl);
if(!$oSaved->isExists()) {
if($mode) {
$output = executeQuery('editor.getSavedDocument', $args);
$output = ModuleHandler::triggerCall('editor.deleteSavedDoc', 'after', $saved_doc);
}
}
// 일단 이전 저장본 삭제
return executeQuery('editor.deleteSavedDoc', $args);

View file

@ -48,7 +48,7 @@
if(!$editor_config->editor_skin) $editor_config->editor_skin = 'xpresseditor';
if(!$editor_config->comment_editor_skin) $editor_config->comment_editor_skin = 'xpresseditor';
//if(!$editor_config->content_style) $editor_config->content_style = 'xeStyle';
if(!$editor_config->content_style) $editor_config->content_style = 'default';
return $editor_config;
}
@ -67,14 +67,16 @@
else $allow_fileupload = true;
// content_style 세팅
if(!$option->content_style) $option->content_style = 'xeStyle';
if(!$option->content_style) $option->content_style = 'default';
Context::set('content_style', $option->content_style);
// 기본 글꼴 지정
Context::set('content_font', $option->content_font);
Context::set('content_font_size', $option->content_font_size);
// 자동 저장 유무 옵션 설정
// 자동 저장 유무 옵션 설정 글 수정시는 사용 안함
if(!$option->enable_autosave) $enable_autosave = false;
elseif(Context::get($option->primary_key_name)) $enable_autosave = false;
else $enable_autosave = true;
// 기본 에디터 컴포넌트 사용 설정
@ -203,6 +205,9 @@
}
Context::set('editor_path', $tpl_path);
// load editor skin lang
Context::loadLang($tpl_path.'lang');
// tpl 파일을 compile한 결과를 return
$oTemplate = new TemplateHandler();
return $oTemplate->compile($tpl_path, $tpl_file);
@ -224,6 +229,7 @@
$config->editor_skin = $editor_config->editor_skin;
$config->content_style = $editor_config->content_style;
$config->content_font = $editor_config->content_font;
$config->content_font_size = $editor_config->content_font_size;
$config->sel_editor_colorset = $editor_config->sel_editor_colorset;
$config->upload_file_grant = $editor_config->upload_file_grant;
$config->enable_default_component_grant = $editor_config->enable_default_component_grant;
@ -235,6 +241,7 @@
$config->editor_skin = $editor_config->comment_editor_skin;
$config->content_style = $editor_config->content_style;
$config->content_font = $editor_config->content_font;
$config->content_font_size = $editor_config->content_font_size;
$config->sel_editor_colorset = $editor_config->sel_comment_editor_colorset;
$config->upload_file_grant = $editor_config->comment_upload_file_grant;
$config->enable_default_component_grant = $editor_config->enable_comment_default_component_grant;
@ -256,6 +263,7 @@
$option->skin = $config->editor_skin;
$option->content_style = $config->content_style;
$option->content_font = $config->content_font;
$option->content_font_size = $config->content_font_size;
$option->colorset = $config->sel_editor_colorset;
// 파일 업로드 권한 체크
@ -329,6 +337,12 @@
} else {
$auto_save_args->ipaddress = $_SERVER['REMOTE_ADDR'];
}
$auto_save_args->module_srl = Context::get('module_srl');
// module_srl이 없으면 현재 모듈
if(!$auto_save_args->module_srl) {
$current_module_info = Context::get('current_module_info');
$auto_save_args->module_srl = $current_module_info->module_srl;
}
// DB에서 자동저장 데이터 추출
$output = executeQuery('editor.getSavedDocument', $auto_save_args);
@ -344,16 +358,16 @@
// 자동저장 데이터에 문서번호가 있고 이 번호에 파일이 있다면 파일을 모두 이동하고
// 해당 문서 번호를 editor_sequence로 세팅함
if($saved_doc->document_srl) {
$module_srl = Context::get('module_srl');
if($saved_doc->document_srl && $upload_target_srl && !Context::get('document_srl')) {
$saved_doc->module_srl = $auto_save_args->module_srl;
$oFileController = &getController('file');
$oFileController->moveFile($saved_doc->document_srl, $module_srl, $upload_target_srl);
$oFileController->moveFile($saved_doc->document_srl, $saved_doc->module_srl, $upload_target_srl);
}
$saved_doc->document_srl = $upload_target_srl;
else if($upload_target_srl) $saved_doc->document_srl = $upload_target_srl;
// 자동 저장 데이터 변경
$oEditorController = &getController('editor');
$oEditorController->deleteSavedDoc();
$oEditorController->deleteSavedDoc(false);
$oEditorController->doSaveDoc($saved_doc);
return $saved_doc;

View file

@ -21,7 +21,7 @@
Context::addCssFile($this->module_path."tpl/css/editor.css");
// 변수 정리
$editor_sequence = Context::get('editor_sequence ');
$editor_sequence = Context::get('editor_sequence');
$component = Context::get('component');
$site_module_info = Context::get('site_module_info');

View file

@ -18,6 +18,7 @@
$lang->component_grant = 'Permission Setting';
$lang->content_style = 'Content Style';
$lang->content_font = 'Content Font';
$lang->content_font_size = 'Content Font Size';
$lang->about_component = 'About component';
$lang->about_component_grant = 'Selected group(s) will be able to use expanded components of editor.<br />(Leave them blank if you want all groups to have permission)';
@ -43,8 +44,9 @@
$lang->editor_height = 'Height of Editor';
$lang->about_editor_skin = 'You may select the skin of editor.';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.';
$lang->about_content_style = 'You may select style for editting article or displaying content';
$lang->about_content_font = 'You may select font for editting article or displaying content.<br/>Default font is your own font<br/> Please use comma(,) for multiple input.';
$lang->about_content_font_size = 'You may select font size for editting article or displaying content.<br/>Please input units such as px or em.';
$lang->about_upload_file_grant = 'Selected group(s) will be able to upload files. (Leave them blank if you want all groups to have permission)';
$lang->about_default_component_grant = 'Selected group(s) will be able to use default components of editor. (Leave them blank if you want all groups to have permission)';
$lang->about_editor_height = 'You may set the height of editor.';
@ -154,67 +156,69 @@
$lang->edit->hyperlink = 'Hyperlink';
$lang->edit->target_blank = 'New Window';
$lang->edit->quotestyle1 = '왼쪽 실선';
$lang->edit->quotestyle2 = '인용부호';
$lang->edit->quotestyle3 = '실선';
$lang->edit->quotestyle4 = '실선 + 배경';
$lang->edit->quotestyle5 = '굵은 실선';
$lang->edit->quotestyle6 = '점선';
$lang->edit->quotestyle7 = '점선 + 배경';
$lang->edit->quotestyle8 = '적용 취소';
$lang->edit->quotestyle1 = 'Left Solid';
$lang->edit->quotestyle2 = 'Quote';
$lang->edit->quotestyle3 = 'Solid';
$lang->edit->quotestyle4 = 'Solid + Background';
$lang->edit->quotestyle5 = 'Bold Solid';
$lang->edit->quotestyle6 = 'Dotted';
$lang->edit->quotestyle7 = 'Dotted + Background';
$lang->edit->quotestyle8 = 'Cancel';
$lang->edit->jumptoedit = '편집 도구모음 건너뛰기';
$lang->edit->set_sel = '칸 수 지정';
$lang->edit->row = '';
$lang->edit->col = '';
$lang->edit->add_one_row = '1행추가';
$lang->edit->del_one_row = '1행삭제';
$lang->edit->add_one_col = '1열추가';
$lang->edit->del_one_col = '1열삭제';
$lang->edit->jumptoedit = 'Skip Edit Toolbox';
$lang->edit->set_sel = 'Set Cell Count';
$lang->edit->row = 'Row';
$lang->edit->col = 'Column';
$lang->edit->add_one_row = 'Add 1 Row';
$lang->edit->del_one_row = 'Remove 1 Row';
$lang->edit->add_one_col = 'Add 1 Column';
$lang->edit->del_one_col = 'Remove 1 Column';
$lang->edit->table_config = '표 속성 지정';
$lang->edit->border_width = '테두리 굵기';
$lang->edit->border_color = '테두리 색';
$lang->edit->add = '더하기';
$lang->edit->del = '빼기';
$lang->edit->search_color = '색상찾기';
$lang->edit->table_backgroundcolor = '표 배경색';
$lang->edit->special_character = '특수문자';
$lang->edit->insert_special_character = '특수문자 삽입';
$lang->edit->close_special_character = '특수문자 레이어 닫기';
$lang->edit->symbol = '일반기호';
$lang->edit->number_unit = '숫자와 단위';
$lang->edit->circle_bracket = '원,괄호';
$lang->edit->table_config = 'Table Config';
$lang->edit->border_width = 'Border Width';
$lang->edit->border_color = 'Border Color';
$lang->edit->add = 'Add';
$lang->edit->del = 'Sub';
$lang->edit->search_color = 'Search Colors';
$lang->edit->table_backgroundcolor = 'Table Background Color';
$lang->edit->special_character = 'Special Characters';
$lang->edit->insert_special_character = 'Insert Special Characters';
$lang->edit->close_special_character = 'Close Special Characters Layer';
$lang->edit->symbol = 'Symbols';
$lang->edit->number_unit = 'Numbers and Units';
$lang->edit->circle_bracket = 'Circles, Brackets';
$lang->edit->korean = 'Korean';
$lang->edit->greece = 'Greek';
$lang->edit->Latin = 'Latin';
$lang->edit->japan = 'Japanese';
$lang->edit->selected_symbol = '선택한 기호';
$lang->edit->selected_symbol = 'Selected Symbols';
$lang->edit->search_replace = 'Find/Replace';
$lang->edit->close_search_replace = '찾기/바꾸기 레이어 닫기';
$lang->edit->close_search_replace = 'Close Find/Replace Layer';
$lang->edit->replace_all = 'Replace All';
$lang->edit->search_words = '찾을단어';
$lang->edit->replace_words = '바꿀단어';
$lang->edit->next_search_words = '다음찾기';
$lang->edit->edit_height_control = '입력창 크기 조절';
$lang->edit->search_words = 'Words to Find';
$lang->edit->replace_words = 'Words to Replace';
$lang->edit->next_search_words = 'Find Next';
$lang->edit->edit_height_control = 'Set Edit Form Size';
$lang->edit->merge_cells = 'Merge Table Cells';
$lang->edit->split_row = '행 분할';
$lang->edit->split_col = '열 분할';
$lang->edit->split_row = 'Split Row';
$lang->edit->split_col = 'Split Column';
$lang->edit->toggle_list = '목록 접기/펼치기';
$lang->edit->minimize_list = '최소화';
$lang->edit->toggle_list = 'Fold/Unfold';
$lang->edit->minimize_list = 'Minimize';
$lang->edit->move = '이동';
$lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록';
$lang->edit->move = 'Move';
$lang->edit->materials = 'Materials';
$lang->edit->temporary_savings = 'Temporary Saved List';
$lang->edit->drag_here = '글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->drag_here = 'You can start writting with a selected paragraph from paragraph toolbar below.<br />If there is an article in temporary saved list, you can drag it to edit form.';
$lang->edit->paging_prev = '이전';
$lang->edit->paging_next = '다음';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.';
$lang->edit->paging_prev = 'Prev';
$lang->edit->paging_next = 'Next';
$lang->edit->paging_prev_help = 'Move to previous page.';
$lang->edit->paging_next_help = 'Move to next page.';
$lang->edit->toc = 'Table of Contents';
?>

View file

@ -18,6 +18,7 @@
$lang->component_grant = 'Ajuste de las atribuciones';
$lang->content_style = 'Content Style';
$lang->content_font = 'Content Font';
$lang->content_font_size = '문서 폰트 크기';
$lang->about_component = 'Presentación del componente';
$lang->about_component_grant = 'Usted puede configurar el permiso de utilizar la ampliación de los componentes de editor.<br /> (Todo el mundo tendría permiso si no comprobado)';
@ -45,6 +46,7 @@
$lang->about_editor_skin = 'Usted puede seleccionar la piel del editor.';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.';
$lang->about_content_font_size = '문서 편집 및 내용 출력시 원하는 폰트의 크기를 지정할 수 있습니다.<br/>12px, 1em등 단위까지 포함해서 입력해주세요.';
$lang->about_upload_file_grant = 'Usted puede configurar el permiso de archivo adjunto. (Todo el mundo tendría permiso si no comprobado)';
$lang->about_default_component_grant = 'Usted puede configurar el permiso de uso de los componentes de editor por defecto. (Todo el mundo tendría permiso si no comprobado)';
$lang->about_editor_height = 'Usted puede configurar la altura del editor.';
@ -207,10 +209,12 @@
$lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록';
$lang->edit->drag_here = '글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->drag_here = '아래의 단락추가 툴바에서 원하는 유형의 단락을 추가해 글 쓰기를 시작하세요.<br />글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->paging_prev = '이전';
$lang->edit->paging_next = '다음';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.';
$lang->edit->toc = '목차';
?>

View file

@ -18,6 +18,7 @@
$lang->component_grant = 'Configuration de la Permission';
$lang->content_style = 'Content Style';
$lang->content_font = 'Content Font';
$lang->content_font_size = '문서 폰트 크기';
$lang->about_component = 'Sur le Composant';
$lang->about_component_grant = 'Vous pouvez configurer la Permission d\'utiliser des composants additionnels de l\'Editeur.<br /> (Tout le monde aura la Permission si vous ne cochez rien)';
@ -45,6 +46,7 @@
$lang->about_editor_skin = 'Vous pouvez choisir l\'habillage de l\'Editeur.';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.';
$lang->about_content_font_size = '문서 편집 및 내용 출력시 원하는 폰트의 크기를 지정할 수 있습니다.<br/>12px, 1em등 단위까지 포함해서 입력해주세요.';
$lang->about_upload_file_grant = 'Vous pouvez configurer la permission d\'attacher les fichiers. (Tout le monde aura la permission si vous ne cochez rien)';
$lang->about_default_component_grant = 'Vous pouvez configurer la permission d\'utiliser les Composants Par Défaut de l\'Editeur. (Tout le monde aura la permission si vous ne cochez rien)';
$lang->about_editor_height = 'Vous pouvez configurer l\'hauteur de l\'Editeur.';
@ -211,10 +213,12 @@
$lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록';
$lang->edit->drag_here = '글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->drag_here = '아래의 단락추가 툴바에서 원하는 유형의 단락을 추가해 글 쓰기를 시작하세요.<br />글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->paging_prev = '이전';
$lang->edit->paging_next = '다음';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.';
$lang->edit->toc = '목차';
?>

View file

@ -5,218 +5,222 @@
* @brief ウィジウィグエディターeditorモジュールの基本言語パッケージ
**/
$lang->editor = 'ウイジウイグエディター';
$lang->component_name = 'コンポーネント';
$lang->component_version = 'バージョン';
$lang->component_author = '作者';
$lang->component_link = 'リンク';
$lang->component_date = '作成日';
$lang->component_license = 'ライセンス';
$lang->component_history = '変更履歴';
$lang->component_description = '説明';
$lang->component_extra_vars = '設定変数';
$lang->component_grant = '権限設定';
$lang->content_style = 'コンテンツスタイル';
$lang->content_font = 'コンテンツフォント';
$lang->editor = 'ウイジウイグエディター';
$lang->component_name = 'コンポーネント';
$lang->component_version = 'バージョン';
$lang->component_author = '作者';
$lang->component_link = 'リンク';
$lang->component_date = '作成日';
$lang->component_license = 'ライセンス';
$lang->component_history = '変更履歴';
$lang->component_description = '説明';
$lang->component_extra_vars = '設定変数';
$lang->component_grant = '権限設定';
$lang->content_style = 'コンテンツスタイル';
$lang->content_font = 'コンテンツフォント';
$lang->content_font_size = '문서 폰트 크기';
$lang->about_component = 'コンポーネント情報';
$lang->about_component_grant = '基本コンポーネント以外の拡張コンポーネント機能が利用可能な権限の設定が出来ます。<br />(選択なしの場合、誰でも利用可能)';
$lang->about_component_mid = 'エディターコンポーネントが使われる対象を指定します。<br />(選択なしの場合、全ての対象で利用可能)';
$lang->about_component = 'コンポーネント情報';
$lang->about_component_grant = '基本コンポーネント以外の拡張コンポーネント機能が利用可能な権限の設定が出来ます。<br />(選択なしの場合、誰でも利用可能)';
$lang->about_component_mid = 'エディターコンポーネントが使われる対象を指定します。<br />(選択なしの場合、全ての対象で利用可能)';
$lang->msg_component_is_not_founded = '%s エディターのコンポーネントが見つかりません。';
$lang->msg_component_is_inserted = '選択されたコンポーネントは既に入力されています。';
$lang->msg_component_is_first_order = '選択されたコンポーネントは最初に位置しています。';
$lang->msg_component_is_last_order = '選択されたコンポーネントは最後に位置しています。';
$lang->msg_load_saved_doc = "自動保存された書き込みがあります。復旧しますか?\n書き終わってから登録すると前の自動保存データは削除されます。";
$lang->msg_auto_saved = '自動保存されました。';
$lang->msg_component_is_not_founded = '%s エディターのコンポーネントが見つかりません。';
$lang->msg_component_is_inserted = '選択されたコンポーネントは既に入力されています。';
$lang->msg_component_is_first_order = '選択されたコンポーネントは最初に位置しています。';
$lang->msg_component_is_last_order = '選択されたコンポーネントは最後に位置しています。';
$lang->msg_load_saved_doc = "自動保存された書き込みがあります。復旧しますか?\n書き終わってから登録すると前の自動保存データは削除されます。";
$lang->msg_auto_saved = '自動保存されました。';
$lang->cmd_disable = '未使用';
$lang->cmd_enable = '使用';
$lang->cmd_disable = '未使用';
$lang->cmd_enable = '使用';
$lang->editor_skin = 'エディタースキン';
$lang->upload_file_grant = 'ファイル添付権限';
$lang->enable_default_component_grant = '基本コンポーネント使用権限';
$lang->enable_component_grant = 'コンポーネント使用権限';
$lang->enable_html_grant = 'HTML編集権限';
$lang->enable_autosave = '自動保存使用';
$lang->height_resizable = '高さの調整';
$lang->editor_height = 'エディターの高さ';
$lang->editor_skin = 'エディタースキン';
$lang->upload_file_grant = 'ファイル添付権限';
$lang->enable_default_component_grant = '基本コンポーネント使用権限';
$lang->enable_component_grant = 'コンポーネント使用権限';
$lang->enable_html_grant = 'HTML編集権限';
$lang->enable_autosave = '自動保存使用';
$lang->height_resizable = '高さの調整';
$lang->editor_height = 'エディターの高さ';
$lang->about_editor_skin = 'エディターのスキンの選択が出来ます。';
$lang->about_content_style = 'コンテンツの編集、および内容表示の際のスタイルを指定します。';
$lang->about_content_font = 'コンテンツの編集、および内容表示の際のフォントを指定します。<br/>指定してない場合、ユーザーの設定を従います。<br/> 半角コンマ(,)区切りで複数フォントの登録が出来ます。';
$lang->about_upload_file_grant = 'ファイル添付可能な権限の設定が出来ます。(選択なしの場合、誰でも添付が可能)';
$lang->about_default_component_grant = 'エディターでの基本コンポーネントを使用可能な権限の設定が出来ます。(選択なしの場合、誰でも利用可能)';
$lang->about_editor_height = 'エディターの基本高さを設定します。';
$lang->about_editor_height_resizable = 'エディターの高さを変更出来るようにします。';
$lang->about_enable_html_grant = 'HTML編集権限を設定します。';
$lang->about_enable_autosave = '書き込みのとき、自動保存機能をオンにします。';
$lang->about_editor_skin = 'エディターのスキンの選択が出来ます。';
$lang->about_content_style = 'コンテンツの編集、および内容表示の際のスタイルを指定します。';
$lang->about_content_font = 'コンテンツの編集、および内容表示の際のフォントを指定します。<br/>指定してない場合、ユーザーの設定を従います。<br/> 半角コンマ(,)区切りで複数フォントの登録が出来ます。';
$lang->about_content_font_size = '문서 편집 및 내용 출력시 원하는 폰트의 크기를 지정할 수 있습니다.<br/>12px, 1em등 단위까지 포함해서 입력해주세요.';
$lang->about_upload_file_grant = 'ファイル添付可能な権限の設定が出来ます。(選択なしの場合、誰でも添付が可能)';
$lang->about_default_component_grant = 'エディターでの基本コンポーネントを使用可能な権限の設定が出来ます。(選択なしの場合、誰でも利用可能)';
$lang->about_editor_height = 'エディターの基本高さを設定します。';
$lang->about_editor_height_resizable = 'エディターの高さを変更出来るようにします。';
$lang->about_enable_html_grant = 'HTML編集権限を設定します。';
$lang->about_enable_autosave = '書き込みのとき、自動保存機能をオンにします。';
$lang->edit->fontname = 'フォント';
$lang->edit->fontsize = 'フォントサイズ';
$lang->edit->use_paragraph = '段落機能';
$lang->edit->fontlist = array(
'MS PGothic'=>' Pゴシック',
'MS PMincho'=>' P明朝',
'MS UI Gothic'=>'MS UI Gothic',
'Arial'=>'Arial',
'Arial Black'=>'Arial Black',
'Tahoma'=>'Tahoma',
'Verdana'=>'Verdana',
'Sans-serif'=>'Sans-serif',
'Serif'=>'Serif',
'Monospace'=>'Monospace',
'Cursive'=>'Cursive',
'Fantasy'=>'Fantasy',
);
$lang->edit->fontname = 'フォント';
$lang->edit->fontsize = 'フォントサイズ';
$lang->edit->use_paragraph = '段落機能';
$lang->edit->fontlist = array(
'MS PGothic' => ' Pゴシック',
'MS PMincho' => ' P明朝',
'MS UI Gothic' => 'MS UI Gothic',
'Arial' => 'Arial',
'Arial Black' => 'Arial Black',
'Tahoma' => 'Tahoma',
'Verdana' => 'Verdana',
'Sans-serif' => 'Sans-serif',
'Serif' => 'Serif',
'Monospace' => 'Monospace',
'Cursive' => 'Cursive',
'Fantasy' => 'Fantasy',
);
$lang->edit->header = '見出し';
$lang->edit->header_list = array(
'h1' => '見出し1',
'h2' => '見出し2',
'h3' => '見出し3',
'h4' => '見出し4',
'h5' => '見出し5',
'h6' => '見出し6',
);
$lang->edit->header = '見出し';
$lang->edit->header_list = array(
'h1' => '見出し1',
'h2' => '見出し2',
'h3' => '見出し3',
'h4' => '見出し4',
'h5' => '見出し5',
'h6' => '見出し6',
);
$lang->edit->submit = '送信';
$lang->edit->submit = '送信';
$lang->edit->fontcolor = 'テキストの色';
$lang->edit->fontbgcolor = 'ハイライト カラー';
$lang->edit->bold = '太字';
$lang->edit->italic = '斜体';
$lang->edit->underline = '下線';
$lang->edit->strike = '取り消し線';
$lang->edit->sup = '上付き文字';
$lang->edit->sub = '下付き文字';
$lang->edit->redo = '繰り返し';
$lang->edit->undo = '元に戻す';
$lang->edit->align_left = '左揃え';
$lang->edit->align_center = '中央揃え';
$lang->edit->align_right = '右揃え';
$lang->edit->align_justify = '均等割付';
$lang->edit->add_indent = 'インデント増';
$lang->edit->remove_indent = 'インデント減';
$lang->edit->list_number = '番号付リスト';
$lang->edit->list_bullet = '箇条書き';
$lang->edit->remove_format = '書式をクリア';
$lang->edit->fontcolor = 'テキストの色';
$lang->edit->fontbgcolor = 'テキストの背景色';
$lang->edit->bold = '太字';
$lang->edit->italic = '斜体';
$lang->edit->underline = '下線';
$lang->edit->strike = '取り消し線';
$lang->edit->sup = '上付き文字';
$lang->edit->sub = '下付き文字';
$lang->edit->redo = '繰り返し';
$lang->edit->undo = '元に戻す';
$lang->edit->align_left = '左揃え';
$lang->edit->align_center = '中央揃え';
$lang->edit->align_right = '右揃え';
$lang->edit->align_justify = '均等割付';
$lang->edit->add_indent = 'インデント増';
$lang->edit->remove_indent = 'インデント減';
$lang->edit->list_number = '番号付リスト';
$lang->edit->list_bullet = '箇条書き';
$lang->edit->remove_format = '書式をクリア';
$lang->edit->help_remove_format = '選択領域の中のタグを消します。';
$lang->edit->help_strike_through = 'テキストに取り消し線を表示します。';
$lang->edit->help_align_full = '左右の余白に合わせて文字列を配置します。';
$lang->edit->help_remove_format = '選択領域の中のタグを消します。';
$lang->edit->help_strike_through = 'テキストに取り消し線を表示します。';
$lang->edit->help_align_full = '左右の余白に合わせて文字列を配置します。';
$lang->edit->help_fontcolor = 'テキストの色を指定します。';
$lang->edit->help_fontbgcolor = 'テキストの背景色を指定します。';
$lang->edit->help_bold = 'テキストを太字に指定します。';
$lang->edit->help_italic = 'テキストを斜体にします。';
$lang->edit->help_underline = 'テキストに下線(アンダーライン)を引きます。';
$lang->edit->help_strike = '取り消し線を引きます。';
$lang->edit->help_sup = '上付き文字';
$lang->edit->help_sub = '下付き文字';
$lang->edit->help_redo = '繰り返し';
$lang->edit->help_undo = '元に戻す';
$lang->edit->help_align_left = 'テキストを左揃えで表示します。';
$lang->edit->help_align_center = 'テキストを中央揃えで表示します。';
$lang->edit->help_align_right = 'テキストを右揃えで表示します。';
$lang->edit->help_add_indent = 'インデントを増やします。';
$lang->edit->help_remove_indent = 'インデントを減らします。';
$lang->edit->help_list_number = '番号付リスト';
$lang->edit->help_list_bullet = '箇条書き';
$lang->edit->help_use_paragraph = '段落機能を使用する場合は、「Ctrl+Enter」を押します書き終わった後、「Alt+S」を押すと保存されます。';
$lang->edit->help_fontcolor = 'テキストの色を指定します。';
$lang->edit->help_fontbgcolor = 'テキストの背景色を指定します。';
$lang->edit->help_bold = 'テキストを太字に指定します。';
$lang->edit->help_italic = 'テキストを斜体にします。';
$lang->edit->help_underline = 'テキストに下線(アンダーライン)を引きます。';
$lang->edit->help_strike = '取り消し線を引きます。';
$lang->edit->help_sup = '上付き文字';
$lang->edit->help_sub = '下付き文字';
$lang->edit->help_redo = '繰り返し';
$lang->edit->help_undo = '元に戻す';
$lang->edit->help_align_left = 'テキストを左揃えで表示します。';
$lang->edit->help_align_center = 'テキストを中央揃えで表示します。';
$lang->edit->help_align_right = 'テキストを右揃えで表示します。';
$lang->edit->help_add_indent = 'インデントを増やします。';
$lang->edit->help_remove_indent = 'インデントを減らします。';
$lang->edit->help_list_number = '番号付リスト';
$lang->edit->help_list_bullet = '箇条書き';
$lang->edit->help_use_paragraph = '段落機能を使用する場合は、「Ctrl+Enter」を押します書き終わった後、「Alt+S」を押すと保存されます。';
$lang->edit->url = 'リンク';
$lang->edit->blockquote = '引用文';
$lang->edit->table = '表';
$lang->edit->image = 'イメージ';
$lang->edit->multimedia = '動画';
$lang->edit->emoticon = '絵文字';
$lang->edit->url = 'リンク';
$lang->edit->blockquote = '引用文';
$lang->edit->table = '表';
$lang->edit->image = 'イメージ';
$lang->edit->multimedia = '動画';
$lang->edit->emoticon = '絵文字';
$lang->edit->upload = '添付';
$lang->edit->upload_file = 'ファイル添付';
$lang->edit->link_file = 'テキスト挿入';
$lang->edit->delete_selected = '選択リスト削除';
$lang->edit->upload = '添付';
$lang->edit->upload_file = 'ファイル添付';
$lang->edit->link_file = 'テキスト挿入';
$lang->edit->delete_selected = '選択リスト削除';
$lang->edit->icon_align_article = '一段落';
$lang->edit->icon_align_left = '左揃え';
$lang->edit->icon_align_middle = '中央揃え';
$lang->edit->icon_align_right = '右揃え';
$lang->edit->icon_align_article = '一段落';
$lang->edit->icon_align_left = '左揃え';
$lang->edit->icon_align_middle = '中央揃え';
$lang->edit->icon_align_right = '右揃え';
$lang->about_dblclick_in_editor = '背景、文字、イメージ、引用文の上にカーソルを合わせ、ダブルクリックすると詳細設定出来るコンポーネントを表示します。';
$lang->about_dblclick_in_editor = '背景、文字、イメージ、引用文の上にカーソルを合わせ、ダブルクリックすると詳細設定出来るコンポーネントを表示します。';
$lang->edit->rich_editor = 'ウイジウイグ編集';
$lang->edit->html_editor = 'HTMLタグ編集';
$lang->edit->extension ='拡張コンポーネント';
$lang->edit->help = 'ヘルプ';
$lang->edit->help_command = 'ショートカット‐キーの説明';
$lang->edit->rich_editor = 'ウイジウイグ編集';
$lang->edit->html_editor = 'HTMLタグ編集';
$lang->edit->extension ='拡張コンポーネント';
$lang->edit->help = 'ヘルプ';
$lang->edit->help_command = 'ショートカット‐キーの説明';
$lang->edit->lineheight = '行間';
$lang->edit->fontbgsampletext = 'あいうえお';
$lang->edit->lineheight = '行間';
$lang->edit->fontbgsampletext = 'あいうえお';
$lang->edit->hyperlink = 'ハイパーリンク';
$lang->edit->target_blank = '別のウィンドウズで';
$lang->edit->hyperlink = 'ハイパーリンク';
$lang->edit->target_blank = '別のウィンドウズで';
$lang->edit->quotestyle1 = '左側実線';
$lang->edit->quotestyle2 = '引用記号';
$lang->edit->quotestyle3 = '実線';
$lang->edit->quotestyle4 = '実線 + 背景';
$lang->edit->quotestyle5 = '太い実線';
$lang->edit->quotestyle6 = '点線';
$lang->edit->quotestyle7 = '点線 + 背景';
$lang->edit->quotestyle8 = '適用取り消し';
$lang->edit->quotestyle1 = '左側実線';
$lang->edit->quotestyle2 = '引用記号';
$lang->edit->quotestyle3 = '実線';
$lang->edit->quotestyle4 = '実線 + 背景';
$lang->edit->quotestyle5 = '太い実線';
$lang->edit->quotestyle6 = '点線';
$lang->edit->quotestyle7 = '点線 + 背景';
$lang->edit->quotestyle8 = '適用取り消し';
$lang->edit->jumptoedit = '編集ツール省略';
$lang->edit->set_sel = 'マス数の指定';
$lang->edit->row = '行';
$lang->edit->col = '列';
$lang->edit->add_one_row = '1行追加';
$lang->edit->del_one_row = '1行削除';
$lang->edit->add_one_col = '1列追加';
$lang->edit->del_one_col = '1列削除';
$lang->edit->jumptoedit = '編集ツール省略';
$lang->edit->set_sel = 'マス数の指定';
$lang->edit->row = '行';
$lang->edit->col = '列';
$lang->edit->add_one_row = '1行追加';
$lang->edit->del_one_row = '1行削除';
$lang->edit->add_one_col = '1列追加';
$lang->edit->del_one_col = '1列削除';
$lang->edit->table_config = '표属性の設定';
$lang->edit->border_width = '外枠太さ';
$lang->edit->border_color = '外枠色';
$lang->edit->add = '挿入';
$lang->edit->del = '削除';
$lang->edit->search_color = 'その他の色';
$lang->edit->table_backgroundcolor = '表の背景色';
$lang->edit->special_character = '特殊文字';
$lang->edit->insert_special_character = '特殊文字挿入';
$lang->edit->close_special_character = '特殊文字レイヤーを閉じる';
$lang->edit->symbol = '一般記号';
$lang->edit->number_unit = '数字と単位';
$lang->edit->circle_bracket = '円、括弧';
$lang->edit->korean = '韓国語';
$lang->edit->greece = 'ギリシャ語';
$lang->edit->Latin = 'ラテン語';
$lang->edit->japan = '日本語';
$lang->edit->selected_symbol = '選択した記号';
$lang->edit->table_config = 'テーブル属性の設定';
$lang->edit->border_width = '外枠太さ';
$lang->edit->border_color = '外枠色';
$lang->edit->add = '挿入';
$lang->edit->del = '削除';
$lang->edit->search_color = 'その他の色';
$lang->edit->table_backgroundcolor = '表の背景色';
$lang->edit->special_character = '特殊文字';
$lang->edit->insert_special_character = '特殊文字挿入';
$lang->edit->close_special_character = '特殊文字レイヤーを閉じる';
$lang->edit->symbol = '一般記号';
$lang->edit->number_unit = '数字と単位';
$lang->edit->circle_bracket = '円、括弧';
$lang->edit->korean = '韓国語';
$lang->edit->greece = 'ギリシャ語';
$lang->edit->Latin = 'ラテン語';
$lang->edit->japan = '日本語';
$lang->edit->selected_symbol = '選択した記号';
$lang->edit->search_replace = '検索/置換';
$lang->edit->close_search_replace = '検索/置換レイヤーを閉じる';
$lang->edit->replace_all = 'すべて置換';
$lang->edit->search_words = '検索テキスト';
$lang->edit->replace_words = '置換テキスト';
$lang->edit->next_search_words = '次を検索';
$lang->edit->edit_height_control = '入力サイズ調整';
$lang->edit->search_replace = '検索/置換';
$lang->edit->close_search_replace = '検索/置換レイヤーを閉じる';
$lang->edit->replace_all = 'すべて置換';
$lang->edit->search_words = '検索テキスト';
$lang->edit->replace_words = '置換テキスト';
$lang->edit->next_search_words = '次を検索';
$lang->edit->edit_height_control = '入力サイズ調整';
$lang->edit->merge_cells = 'セルの結合';
$lang->edit->split_row = '行の挿入';
$lang->edit->split_col = '列の挿入';
$lang->edit->merge_cells = 'セルの結合';
$lang->edit->split_row = '行の挿入';
$lang->edit->split_col = '列の挿入';
$lang->edit->toggle_list = '목록 접기/펼치기';
$lang->edit->minimize_list = '최소화';
$lang->edit->toggle_list = 'リストを折りたたむ/展開する';
$lang->edit->minimize_list = '最小化';
$lang->edit->move = '이동';
$lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록';
$lang->edit->move = '移動';
$lang->edit->materials = '文面テンプレート保存箱';
$lang->edit->temporary_savings = '下書きリスト';
$lang->edit->drag_here = '글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->drag_here = '下の段落追加ツールバーから、好きなタイプの段落を追加してから書き込みを始めて下さい。<br />文面テンプレート保存箱の中からここにドラッグ・アンド・ドロップ出来ます。';
$lang->edit->paging_prev = '이전';
$lang->edit->paging_next = '다음';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.';
$lang->edit->paging_prev = '前へ';
$lang->edit->paging_next = '次へ';
$lang->edit->paging_prev_help = '前のページへ移動します。';
$lang->edit->paging_next_help = '次のページへ移動します。';
$lang->edit->toc = 'リスト';
?>

View file

@ -1,222 +1,227 @@
<?php
/**
* @file modules/editor/lang/ko.lang.php
* @author zero <zero@nzeo.com>
* @brief 위지윅에디터(editor) 모듈의 기본 언어팩
**/
/**
* @file modules/editor/lang/ko.lang.php
* @author zero <zero@nzeo.com>
* @brief 위지윅에디터(editor) 모듈의 기본 언어팩
**/
$lang->editor = '위지윅 에디터';
$lang->component_name = '컴포넌트';
$lang->component_version = '버전';
$lang->component_author = '제작자 ';
$lang->component_link = '링크';
$lang->component_date = '제작일';
$lang->component_license = '라이선스';
$lang->component_history = '변경 이력';
$lang->component_description = '설명';
$lang->component_extra_vars = '설정 변수';
$lang->component_grant = '권한설정';
$lang->content_style = '문서 서식';
$lang->content_font = '문서 폰트';
$lang->editor = '위지윅 에디터';
$lang->component_name = '컴포넌트';
$lang->component_version = '버전';
$lang->component_author = '제작자 ';
$lang->component_link = '링크';
$lang->component_date = '제작일';
$lang->component_license = '라이선스';
$lang->component_history = '변경 이력';
$lang->component_description = '설명';
$lang->component_extra_vars = '설정 변수';
$lang->component_grant = '권한설정';
$lang->content_style = '문서 서식';
$lang->content_font = '문서 폰트';
$lang->content_font_size = '문서 폰트 크기';
$lang->about_component = '컴포넌트 소개';
$lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다.<br /> (모두 해제시 아무나 사용 가능합니다)';
$lang->about_component_mid = '에디터 컴포넌트가 사용될 대상을 지정할 수 있습니다.<br />(모두 해제 시 모든 대상에서 사용 가능합니다)';
$lang->about_component = '컴포넌트 소개';
$lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다.<br /> (모두 해제시 아무나 사용 가능합니다)';
$lang->about_component_mid = '에디터 컴포넌트가 사용될 대상을 지정할 수 있습니다.<br />(모두 해제 시 모든 대상에서 사용 가능합니다)';
$lang->msg_component_is_not_founded = '%s 에디터 컴포넌트를 찾을 수 없습니다.';
$lang->msg_component_is_inserted = '선택하신 컴포넌트는 이미 입력되어 있습니다.';
$lang->msg_component_is_first_order = '선택하신 컴포넌트는 첫번째에 위치하고 있습니다.';
$lang->msg_component_is_last_order = '선택하신 컴포넌트는 마지막에 위치하고 있습니다.';
$lang->msg_load_saved_doc = "자동 저장된 글이 있습니다. 복구하시겠습니까?\n글을 다 쓰신 후 저장하시면 자동 저장본은 사라집니다.";
$lang->msg_auto_saved = '자동 저장되었습니다.';
$lang->msg_component_is_not_founded = '%s 에디터 컴포넌트를 찾을 수 없습니다.';
$lang->msg_component_is_inserted = '선택하신 컴포넌트는 이미 입력되어 있습니다.';
$lang->msg_component_is_first_order = '선택하신 컴포넌트는 첫번째에 위치하고 있습니다.';
$lang->msg_component_is_last_order = '선택하신 컴포넌트는 마지막에 위치하고 있습니다.';
$lang->msg_load_saved_doc = "자동 저장된 글이 있습니다. 복구하시겠습니까?\n글을 다 쓰신 후 저장하시면 자동 저장본은 사라집니다.";
$lang->msg_auto_saved = '자동 저장되었습니다.';
$lang->cmd_disable = '비활성';
$lang->cmd_enable = '활성';
$lang->cmd_disable = '비활성';
$lang->cmd_enable = '활성';
$lang->editor_skin = '에디터 스킨';
$lang->upload_file_grant = '파일 첨부 권한';
$lang->enable_default_component_grant = '기본 컴포넌트 사용 권한';
$lang->enable_component_grant = '컴포넌트 사용 권한';
$lang->enable_html_grant = 'HTML편집 권한';
$lang->enable_autosave = '자동저장 사용';
$lang->height_resizable = '높이 조절 가능';
$lang->editor_height = '에디터 높이';
$lang->editor_skin = '에디터 스킨';
$lang->upload_file_grant = '파일 첨부 권한';
$lang->enable_default_component_grant = '기본 컴포넌트 사용 권한';
$lang->enable_component_grant = '컴포넌트 사용 권한';
$lang->enable_html_grant = 'HTML편집 권한';
$lang->enable_autosave = '자동저장 사용';
$lang->height_resizable = '높이 조절 가능';
$lang->editor_height = '에디터 높이';
$lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.';
$lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다. (모두 해제 시 아무나 첨부 가능합니다)';
$lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제 시 아무나 사용 가능합니다)';
$lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다.';
$lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다.';
$lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.';
$lang->about_enable_autosave = '글 작성시 자동 저장 기능을 활성화 시킬 수 있습니다.';
$lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.';
$lang->about_content_font_size = '문서 편집 및 내용 출력시 원하는 폰트의 크기를 지정할 수 있습니다.<br/>12px, 1em등 단위까지 포함해서 입력해주세요.';
$lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다. (모두 해제 시 아무나 첨부 가능합니다)';
$lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제 시 아무나 사용 가능합니다)';
$lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다.';
$lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다.';
$lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.';
$lang->about_enable_autosave = '글 작성시 자동 저장 기능을 활성화 시킬 수 있습니다.';
$lang->edit->fontname = '글꼴';
$lang->edit->fontsize = '크기';
$lang->edit->use_paragraph = '문단기능';
$lang->edit->fontlist = array(
'Dotum' => '돋움',
'Gulim' => '굴림',
'Batang' => '바탕',
'Arial' => 'Arial',
'Arial Black' => 'Arial Black',
'Tahoma' => 'Tahoma',
'Verdana' => 'Verdana',
'Sans-serif' => 'Sans-serif',
'Serif' => 'Serif',
'Monospace' => 'Monospace',
'Cursive' => 'Cursive',
'Fantasy' => 'Fantasy',
);
$lang->edit->fontname = '글꼴';
$lang->edit->fontsize = '크기';
$lang->edit->use_paragraph = '문단기능';
$lang->edit->fontlist = array(
'Dotum' => '돋움',
'Gulim' => '굴림',
'Batang' => '바탕',
'Arial' => 'Arial',
'Arial Black' => 'Arial Black',
'Tahoma' => 'Tahoma',
'Verdana' => 'Verdana',
'Sans-serif' => 'Sans-serif',
'Serif' => 'Serif',
'Monospace' => 'Monospace',
'Cursive' => 'Cursive',
'Fantasy' => 'Fantasy',
);
$lang->edit->header = '형식';
$lang->edit->header_list = array(
'h1' => '제목 1',
'h2' => '제목 2',
'h3' => '제목 3',
'h4' => '제목 4',
'h5' => '제목 5',
'h6' => '제목 6',
);
$lang->edit->header = '형식';
$lang->edit->header_list = array(
'h1' => '제목 1',
'h2' => '제목 2',
'h3' => '제목 3',
'h4' => '제목 4',
'h5' => '제목 5',
'h6' => '제목 6',
);
$lang->edit->submit = '확인';
$lang->edit->submit = '확인';
$lang->edit->fontcolor = '글자 색';
$lang->edit->fontbgcolor = '글자 배경색';
$lang->edit->bold = '진하게';
$lang->edit->italic = '기울임';
$lang->edit->underline = '밑줄';
$lang->edit->strike = '취소선';
$lang->edit->sup = '위 첨자';
$lang->edit->sub = '아래 첨자';
$lang->edit->redo = '다시 실행';
$lang->edit->undo = '되돌리기';
$lang->edit->align_left = '왼쪽 정렬';
$lang->edit->align_center = '가운데 정렬';
$lang->edit->align_right = '오른쪽 정렬';
$lang->edit->align_justify = '양쪽 정렬';
$lang->edit->add_indent = '들여쓰기';
$lang->edit->remove_indent = '내어쓰기';
$lang->edit->list_number = '번호 매기기';
$lang->edit->list_bullet = '목록';
$lang->edit->remove_format = '글맵시 지우기';
$lang->edit->fontcolor = '글자 색';
$lang->edit->fontbgcolor = '글자 배경색';
$lang->edit->bold = '진하게';
$lang->edit->italic = '기울임';
$lang->edit->underline = '밑줄';
$lang->edit->strike = '취소선';
$lang->edit->sup = '위 첨자';
$lang->edit->sub = '아래 첨자';
$lang->edit->redo = '다시 실행';
$lang->edit->undo = '되돌리기';
$lang->edit->align_left = '왼쪽 정렬';
$lang->edit->align_center = '가운데 정렬';
$lang->edit->align_right = '오른쪽 정렬';
$lang->edit->align_justify = '양쪽 정렬';
$lang->edit->add_indent = '들여쓰기';
$lang->edit->remove_indent = '내어쓰기';
$lang->edit->list_number = '번호 매기기';
$lang->edit->list_bullet = '목록';
$lang->edit->remove_format = '글맵시 지우기';
$lang->edit->help_remove_format = '선택된 영역 내의 태그를 지웁니다.';
$lang->edit->help_strike_through = '글자에 취소선을 표시합니다.';
$lang->edit->help_align_full = '좌우 폭에 맞게 정렬을 합니다.';
$lang->edit->help_remove_format = '선택된 영역 내의 태그를 지웁니다.';
$lang->edit->help_strike_through = '글자에 취소선을 표시합니다.';
$lang->edit->help_align_full = '좌우 폭에 맞게 정렬을 합니다.';
$lang->edit->help_fontcolor = '글자의 색상을 지정합니다.';
$lang->edit->help_fontbgcolor = '글자의 배경색상을 지정합니다.';
$lang->edit->help_bold = '글자를 진하게 합니다.';
$lang->edit->help_italic = '글자를 기울이게 합니다.';
$lang->edit->help_underline = '밑줄을 긋습니다.';
$lang->edit->help_strike = '취소선을 긋습니다.';
$lang->edit->help_sup = '위 첨자를 입력합니다.';
$lang->edit->help_sub = '아래 첨자를 입력합니다.';
$lang->edit->help_redo = '다음 동작으로 돌아갑니다.';
$lang->edit->help_undo = '이전 동작으로 돌아갑니다.';
$lang->edit->help_align_left = '왼쪽 정렬을 합니다.';
$lang->edit->help_align_center = '가운데 정렬을 합니다.';
$lang->edit->help_align_right = '오른쪽 정렬을 합니다.';
$lang->edit->help_add_indent = '단락의 들여쓰기 수준을 높입니다.';
$lang->edit->help_remove_indent = '단락의 들여쓰기 수준을 낮춥니다.';
$lang->edit->help_list_number = '숫자로된 목록을 적용합니다.';
$lang->edit->help_list_bullet = '기호로된 목록을 적용합니다.';
$lang->edit->help_use_paragraph = '문단 나누기를 하시려면 Ctrl+Enter를 누르시면 됩니다. (글 작성완료 후 Alt+S를 누르면 저장이 됩니다.)';
$lang->edit->help_fontcolor = '글자의 색상을 지정합니다.';
$lang->edit->help_fontbgcolor = '글자의 배경색상을 지정합니다.';
$lang->edit->help_bold = '글자를 진하게 합니다.';
$lang->edit->help_italic = '글자를 기울이게 합니다.';
$lang->edit->help_underline = '밑줄을 긋습니다.';
$lang->edit->help_strike = '취소선을 긋습니다.';
$lang->edit->help_sup = '위 첨자를 입력합니다.';
$lang->edit->help_sub = '아래 첨자를 입력합니다.';
$lang->edit->help_redo = '다음 동작으로 돌아갑니다.';
$lang->edit->help_undo = '이전 동작으로 돌아갑니다.';
$lang->edit->help_align_left = '왼쪽 정렬을 합니다.';
$lang->edit->help_align_center = '가운데 정렬을 합니다.';
$lang->edit->help_align_right = '오른쪽 정렬을 합니다.';
$lang->edit->help_add_indent = '단락의 들여쓰기 수준을 높입니다.';
$lang->edit->help_remove_indent = '단락의 들여쓰기 수준을 낮춥니다.';
$lang->edit->help_list_number = '숫자로된 목록을 적용합니다.';
$lang->edit->help_list_bullet = '기호로된 목록을 적용합니다.';
$lang->edit->help_use_paragraph = '문단 나누기를 하시려면 Ctrl+Enter를 누르시면 됩니다. (글 작성완료 후 Alt+S를 누르면 저장이 됩니다.)';
$lang->edit->url = '링크';
$lang->edit->blockquote = '인용문';
$lang->edit->table = '표';
$lang->edit->image = '그림';
$lang->edit->multimedia = '동영상';
$lang->edit->emoticon = '이모티콘';
$lang->edit->url = '링크';
$lang->edit->blockquote = '인용문';
$lang->edit->table = '표';
$lang->edit->image = '그림';
$lang->edit->multimedia = '동영상';
$lang->edit->emoticon = '이모티콘';
$lang->edit->upload = '첨부';
$lang->edit->upload_file = '파일 첨부';
$lang->edit->link_file = '본문 삽입';
$lang->edit->delete_selected = '선택 삭제';
$lang->edit->upload = '첨부';
$lang->edit->upload_file = '파일 첨부';
$lang->edit->link_file = '본문 삽입';
$lang->edit->delete_selected = '선택 삭제';
$lang->edit->icon_align_article = '한 문단을 차지';
$lang->edit->icon_align_left = '글의 왼쪽으로';
$lang->edit->icon_align_middle = '가운데 정렬';
$lang->edit->icon_align_right = '글의 우측으로';
$lang->edit->icon_align_article = '한 문단을 차지';
$lang->edit->icon_align_left = '글의 왼쪽으로';
$lang->edit->icon_align_middle = '가운데 정렬';
$lang->edit->icon_align_right = '글의 우측으로';
$lang->about_dblclick_in_editor = '배경, 글자, 이미지, 인용문등에서 더블클릭을 하시면 상세한 컴포넌트 설정이 가능합니다.';
$lang->about_dblclick_in_editor = '배경, 글자, 이미지, 인용문등에서 더블클릭을 하시면 상세한 컴포넌트 설정이 가능합니다.';
$lang->edit->rich_editor = '스타일 편집기';
$lang->edit->html_editor = 'HTML 편집기';
$lang->edit->extension ='확장 컴포넌트';
$lang->edit->help = '도움말';
$lang->edit->help_command = '단축키 안내';
$lang->edit->rich_editor = '스타일 편집기';
$lang->edit->html_editor = 'HTML 편집기';
$lang->edit->extension ='확장 컴포넌트';
$lang->edit->help = '도움말';
$lang->edit->help_command = '단축키 안내';
$lang->edit->lineheight = '줄간격';
$lang->edit->fontbgsampletext = '가나다';
$lang->edit->lineheight = '줄간격';
$lang->edit->fontbgsampletext = '가나다';
$lang->edit->hyperlink = '하이퍼링크';
$lang->edit->target_blank = '새창으로';
$lang->edit->hyperlink = '하이퍼링크';
$lang->edit->target_blank = '새창으로';
$lang->edit->quotestyle1 = '왼쪽 실선';
$lang->edit->quotestyle2 = '인용 부호';
$lang->edit->quotestyle3 = '실선';
$lang->edit->quotestyle4 = '실선 + 배경';
$lang->edit->quotestyle5 = '굵은 실선';
$lang->edit->quotestyle6 = '점선';
$lang->edit->quotestyle7 = '점선 + 배경';
$lang->edit->quotestyle8 = '적용 취소';
$lang->edit->quotestyle1 = '왼쪽 실선';
$lang->edit->quotestyle2 = '인용 부호';
$lang->edit->quotestyle3 = '실선';
$lang->edit->quotestyle4 = '실선 + 배경';
$lang->edit->quotestyle5 = '굵은 실선';
$lang->edit->quotestyle6 = '점선';
$lang->edit->quotestyle7 = '점선 + 배경';
$lang->edit->quotestyle8 = '적용 취소';
$lang->edit->jumptoedit = '편집 도구모음 건너뛰기';
$lang->edit->set_sel = '칸 수 지정';
$lang->edit->row = '행';
$lang->edit->col = '열';
$lang->edit->add_one_row = '1행추가';
$lang->edit->del_one_row = '1행삭제';
$lang->edit->add_one_col = '1열추가';
$lang->edit->del_one_col = '1열삭제';
$lang->edit->jumptoedit = '편집 도구모음 건너뛰기';
$lang->edit->set_sel = '칸 수 지정';
$lang->edit->row = '행';
$lang->edit->col = '열';
$lang->edit->add_one_row = '1행추가';
$lang->edit->del_one_row = '1행삭제';
$lang->edit->add_one_col = '1열추가';
$lang->edit->del_one_col = '1열삭제';
$lang->edit->table_config = '표 속성 지정';
$lang->edit->border_width = '테두리 굵기';
$lang->edit->border_color = '테두리 색';
$lang->edit->add = '더하기';
$lang->edit->del = '빼기';
$lang->edit->search_color = '색상찾기';
$lang->edit->table_backgroundcolor = '표 배경색';
$lang->edit->special_character = '특수문자';
$lang->edit->insert_special_character = '특수문자 삽입';
$lang->edit->close_special_character = '특수문자 레이어 닫기';
$lang->edit->symbol = '일반기호';
$lang->edit->number_unit = '숫자와 단위';
$lang->edit->circle_bracket = '원,괄호';
$lang->edit->korean = '한글';
$lang->edit->greece = '그리스';
$lang->edit->Latin = '라틴어';
$lang->edit->japan = '일본어';
$lang->edit->selected_symbol = '선택한 기호';
$lang->edit->table_config = '표 속성 지정';
$lang->edit->border_width = '테두리 굵기';
$lang->edit->border_color = '테두리 색';
$lang->edit->add = '더하기';
$lang->edit->del = '빼기';
$lang->edit->search_color = '색상찾기';
$lang->edit->table_backgroundcolor = '표 배경색';
$lang->edit->special_character = '특수문자';
$lang->edit->insert_special_character = '특수문자 삽입';
$lang->edit->close_special_character = '특수문자 레이어 닫기';
$lang->edit->symbol = '일반기호';
$lang->edit->number_unit = '숫자와 단위';
$lang->edit->circle_bracket = '원,괄호';
$lang->edit->korean = '한글';
$lang->edit->greece = '그리스';
$lang->edit->Latin = '라틴어';
$lang->edit->japan = '일본어';
$lang->edit->selected_symbol = '선택한 기호';
$lang->edit->search_replace = '찾기/바꾸기';
$lang->edit->close_search_replace = '찾기/바꾸기 레이어 닫기';
$lang->edit->replace_all = '모두바꾸기';
$lang->edit->search_words = '찾을단어';
$lang->edit->replace_words = '바꿀단어';
$lang->edit->next_search_words = '다음찾기';
$lang->edit->edit_height_control = '입력창 크기 조절';
$lang->edit->search_replace = '찾기/바꾸기';
$lang->edit->close_search_replace = '찾기/바꾸기 레이어 닫기';
$lang->edit->replace_all = '모두바꾸기';
$lang->edit->search_words = '찾을단어';
$lang->edit->replace_words = '바꿀단어';
$lang->edit->next_search_words = '다음찾기';
$lang->edit->edit_height_control = '입력창 크기 조절';
$lang->edit->merge_cells = '셀 병합';
$lang->edit->split_row = '행 분할';
$lang->edit->split_col = '열 분할';
$lang->edit->merge_cells = '셀 병합';
$lang->edit->split_row = '행 분할';
$lang->edit->split_col = '열 분할';
$lang->edit->toggle_list = '목록 접기/펼치기';
$lang->edit->minimize_list = '최소화';
$lang->edit->toggle_list = '목록 접기/펼치기';
$lang->edit->minimize_list = '최소화';
$lang->edit->move = '이동';
$lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록';
$lang->edit->move = '이동';
$lang->edit->refresh = '새로고침';
$lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록';
$lang->edit->drag_here = '글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->drag_here = '아래의 단락추가 툴바에서 원하는 유형의 단락을 추가해 글 쓰기를 시작하세요.<br />글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->paging_prev = '이전';
$lang->edit->paging_next = '다음';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.';
$lang->edit->toc = '목차';
?>

View file

@ -18,6 +18,7 @@
$lang->component_grant = 'Настройки прав доступа';
$lang->content_style = 'Content Style';
$lang->content_font = 'Content Font';
$lang->content_font_size = '문서 폰트 크기';
$lang->about_component = 'О компоненте';
$lang->about_component_grant = 'Только выбранным группам позволено использование.<br /> (Каждый может использовать его, если режим выключен)';
@ -45,6 +46,7 @@
$lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.';
$lang->about_content_font_size = '문서 편집 및 내용 출력시 원하는 폰트의 크기를 지정할 수 있습니다.<br/>12px, 1em등 단위까지 포함해서 입력해주세요.';
$lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)';
$lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)';
$lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다';
@ -207,10 +209,12 @@
$lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록';
$lang->edit->drag_here = '글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->drag_here = '아래의 단락추가 툴바에서 원하는 유형의 단락을 추가해 글 쓰기를 시작하세요.<br />글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->paging_prev = '이전';
$lang->edit->paging_next = '다음';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.';
$lang->edit->toc = '목차';
?>

View file

@ -18,6 +18,7 @@
$lang->component_grant = '权限设置';
$lang->content_style = 'Content Style';
$lang->content_font = 'Content Font';
$lang->content_font_size = '문서 폰트 크기';
$lang->about_component = '组件简介';
$lang->about_component_grant = '可以设置除默认组件外的扩展组件使用权限<br />(全部解除时任何用户都可以使用)。';
@ -45,6 +46,7 @@
$lang->about_editor_skin = '可以选择编辑器皮肤。';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.';
$lang->about_content_font_size = '문서 편집 및 내용 출력시 원하는 폰트의 크기를 지정할 수 있습니다.<br/>12px, 1em등 단위까지 포함해서 입력해주세요.';
$lang->about_upload_file_grant = '可以设置上传文件的权限(全部解除为无限制)。';
$lang->about_default_component_grant = '可以设置编辑器默认组件的使用权限(全部解除为无限制)。';
$lang->about_editor_height = '可以指定编辑器的默认高度。';
@ -213,10 +215,12 @@
$lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록';
$lang->edit->drag_here = '글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->drag_here = '아래의 단락추가 툴바에서 원하는 유형의 단락을 추가해 글 쓰기를 시작하세요.<br />글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->paging_prev = '이전';
$lang->edit->paging_next = '다음';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.';
$lang->edit->toc = '목차';
?>

View file

@ -18,6 +18,7 @@
$lang->component_grant = '權限設置';
$lang->content_style = '內容樣式';
$lang->content_font = '內容字體';
$lang->content_font_size = '문서 폰트 크기';
$lang->about_component = '組件簡介';
$lang->about_component_grant = '除預設組件外,可設置延伸組件的使用權限<br />(全部解除時,任何用戶都可使用)。';
@ -45,6 +46,7 @@
$lang->about_editor_skin = '選擇編輯器面板。';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.';
$lang->about_content_font_size = '문서 편집 및 내용 출력시 원하는 폰트의 크기를 지정할 수 있습니다.<br/>12px, 1em등 단위까지 포함해서 입력해주세요.';
$lang->about_upload_file_grant = '設置上傳檔案的權限(全部解除為無限制)。';
$lang->about_default_component_grant = '設置編輯器預設組件的使用權限(全部解除為無限制)。';
$lang->about_editor_height = '指定編輯器的預設高度。';
@ -214,10 +216,12 @@
$lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록';
$lang->edit->drag_here = '글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->drag_here = '아래의 단락추가 툴바에서 원하는 유형의 단락을 추가해 글 쓰기를 시작하세요.<br />글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->paging_prev = '이전';
$lang->edit->paging_next = '다음';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.';
$lang->edit->toc = '목차';
?>

View file

@ -2,8 +2,10 @@
<tables>
<table name="editor_autosave" />
</tables>
<columns />
<conditions>
<condition operation="equal" column="member_srl" var="member_srl" />
<condition operation="equal" column="ipaddress" var="ipaddress" />
<condition operation="equal" column="module_srl" var="module_srl" />
<condition operation="equal" column="member_srl" var="member_srl" pipe="and" />
<condition operation="equal" column="ipaddress" var="ipaddress" pipe="and" />
</conditions>
</query>

View file

@ -4,6 +4,7 @@
</tables>
<columns />
<conditions>
<condition operation="equal" column="module_srl" var="module_srl" />
<condition operation="equal" column="member_srl" var="member_srl" pipe="and" />
<condition operation="equal" column="ipaddress" var="ipaddress" pipe="and" />
</conditions>

View file

@ -3,6 +3,7 @@
<table name="editor_autosave" />
</tables>
<columns>
<column name="module_srl" var="module_srl" />
<column name="member_srl" var="member_srl" />
<column name="ipaddress" var="ipaddress" />
<column name="document_srl" var="document_srl" />

View file

@ -1,6 +1,7 @@
<table name="editor_autosave">
<column name="member_srl" type="number" size="11" default="0" index="idx_member_srl" />
<column name="ipaddress" type="varchar" size="128" index="idx_ipaddress" />
<column name="module_srl" type="number" size="11" index="idx_module_srl" />
<column name="document_srl" type="number" size="11" default="0" notnull="notnull" />
<column name="title" type="varchar" size="250" />
<column name="content" type="bigtext" notnull="notnull" />

View file

@ -13,6 +13,7 @@
<!-- 자동저장용 폼 -->
<!--@if($enable_autosave)-->
<input type="hidden" name="_saved_doc_srl" value="{$saved_doc->document_srl}" />
<input type="hidden" name="_saved_doc_title" value="{htmlspecialchars($saved_doc->title)}" />
<input type="hidden" name="_saved_doc_content" value="{htmlspecialchars($saved_doc->content)}" />
<input type="hidden" name="_saved_doc_message" value="{$lang->msg_load_saved_doc}" />

View file

@ -51,13 +51,22 @@ function editorStart_fck(editor, element, editor_sequence, content_key, editor_h
if(typeof(fo_obj._saved_doc_title)!="undefined" ) { ///<< _saved_doc_title field가 없으면 자동저장 하지 않음
var saved_title = fo_obj._saved_doc_title.value;
var saved_content = fo_obj._saved_doc_content.value;
var saved_srl = fo_obj._saved_doc_srl.value;
if(saved_title || saved_content) {
// 자동저장된 문서 활용여부를 물은 후 사용하지 않는다면 자동저장된 문서 삭제
if(confirm(fo_obj._saved_doc_message.value)) {
if(typeof(fo_obj.title)!='undefined') fo_obj.title.value = saved_title;
setTimeout(function(){
editorRelKeys[editor_sequence]['primary'].value = saved_srl;
setContent(editor_sequence,saved_content);
}, 100);
xAddEventListener(window,"load",function() { var param = new Array();
param['editor_sequence'] = editor_sequence;
param['primary_key'] = primary_key;
param['mid'] = current_mid;
var response_tags = new Array("error","message","editor_sequence","key","title","content","document_srl");
exec_xml('editor',"procEditorLoadSavedDocument", param, null, response_tags);
});
} else {
editorRemoveSavedDoc();
}

View file

@ -20,6 +20,7 @@
/* Layout Selector */
.xpress-editor{ position:relative; background:transparent;}
.xpress-editor #smart_content{ position:relative; clear:both; margin:0 0 10px 0; border:1px solid #c2c2c2; *zoom:1; z-index:5; background:#fff;}
.xpress-editor.black #smart_content {background:transparent;}
.xpress-editor #smart_footer{ position:relative; text-align:center; padding:10px 0;}
/* Footer */

View file

@ -4,16 +4,17 @@
<!--// 기본 JS 로드 -->
<!--%import("../../tpl/js/editor_common.js")-->
<!--@if($colorset == "black" || $colorset == "black_texteditor" || $colorset == "black_text_nohtml" || $colorset == "black_text_usehtml")-->
<!--%import("css/black.css")-->
{@ $editor_class = "black" }
<!--@end-->
<!--@if($colorset == "white_texteditor" || $colorset == "black_texteditor" || $colorset == "white_text_nohtml" || $colorset == "black_text_nohtml" || $colorset == "white_text_usehtml" || $colorset == "black_text_usehtml")-->
<!--%import("js/xe_textarea.js")-->
<!--@if($colorset == "black_texteditor" || $colorset == "black_text_nohtml" || $colorset == "black_text_usehtml")-->
<!--%import("css/black.css")-->
{@ $editor_class = "black" }
<!--@end-->
<div class="xeTextEditor {$editor_class}">
<input type="hidden" id="htm_{$editor_sequence}" value="<!--@if($colorset == "white_text_nohtml" || $colorset == "black_text_nohtml")-->n<!--@end--><!--@if($colorset == "white_texteditor" || $colorset == "white_texteditor")-->br<!--@end-->" />
<textarea id="editor_{$editor_sequence}" style="height:{$editor_height}px;" cols="5" rows="50" class="inputTextarea"></textarea>
<textarea id="editor_{$editor_sequence}" style="height:{$editor_height}px;" cols="50" rows="5" class="inputTextarea"></textarea>
</div>
<script type="text/javascript">//<![CDATA[
editorStartTextarea({$editor_sequence}, "{$editor_content_key_name}", "{$editor_primary_key_name}");
@ -27,464 +28,465 @@
<!-- 자동저장용 폼 -->
<!--@if($enable_autosave)-->
<input type="hidden" name="_saved_doc_title" value="{htmlspecialchars($saved_doc->title)}" />
<input type="hidden" name="_saved_doc_content" value="{htmlspecialchars($saved_doc->content)}" />
<input type="hidden" name="_saved_doc_message" value="{$lang->msg_load_saved_doc}" />
<!--@end-->
<!-- 에디터 -->
<div class="xpress-editor {$colorset}">
<div id="smart_content"> <a href="#xe-editor-container-{$editor_sequence}" class="skip">&raquo; {$lang->edit->jumptoedit}</a>
<!--@if($enable_autosave)-->
<input type="hidden" name="_saved_doc_srl" value="{$saved_doc->document_srl}" />
<input type="hidden" name="_saved_doc_title" value="{htmlspecialchars($saved_doc->title)}" />
<input type="hidden" name="_saved_doc_content" value="{htmlspecialchars($saved_doc->content)}" />
<input type="hidden" name="_saved_doc_message" value="{$lang->msg_load_saved_doc}" />
<!--@end-->
<!-- 에디터 -->
<div class="xpress-editor {$editor_class}">
<div id="smart_content"> <a href="#xe-editor-container-{$editor_sequence}" class="skip">&raquo; {$lang->edit->jumptoedit}</a>
<!--@if($enable_default_component||$enable_component||$html_mode)-->
<!-- 편집 컴포넌트 -->
<div class="tool off">
<!--@if($enable_default_component)-->
<!-- 기본 컴포넌트 출력 -->
<ul class="do item">
<li class="xpress_xeditor_ui_undo undo"><button type="button" title="Ctrl+Z:{$lang->edit->undo}"><span>{$lang->edit->undo}</span></button></li>
<li class="xpress_xeditor_ui_redo redo"><button type="button" title="Ctrl+Y:{$lang->edit->redo}"><span>{$lang->edit->redo}</span></button></li>
</ul>
<ul class="type">
<li class="xpress_xeditor_ui_format">
<select class="xpress_xeditor_ui_format_select" disabled="true">
<option value="">{$lang->edit->header}</option>
<!--@foreach($lang->edit->header_list as $key=>$obj)-->
<option value="{$key}">{$obj}</option>
<!--@end-->
</select>
</li>
<li class="xpress_xeditor_ui_fontName">
<select class="xpress_xeditor_ui_fontName_select" disabled="true">
<option value="">{$lang->edit->fontname}</option>
<!--@foreach($lang->edit->fontlist as $key=>$obj)-->
<option value="{$key}" style="font-family:{$key}">{$obj}</option>
<!--@end-->
</select>
</li>
<li class="xpress_xeditor_ui_fontSize">
<select class="xpress_xeditor_ui_fontSize_select" disabled="true">
<option value="">{$lang->edit->fontsize}</option>
<option value="9px" style="font-size:9px">9px</option>
<option value="10px" style="font-size:10px">10px</option>
<option value="11px" style="font-size:11px">11px</option>
<option value="12px" style="font-size:12px">12px</option>
<option value="13px" style="font-size:13px">13px</option>
<option value="14px" style="font-size:14px">14px</option>
<option value="16px" style="font-size:16px">16px</option>
<option value="18px" style="font-size:18px">18px</option>
<option value="24px" style="font-size:24px">24px</option>
<option value="32px" style="font-size:32px">32px</option>
</select>
</li>
<li class="xpress_xeditor_ui_lineHeight">
<select class="xpress_xeditor_ui_lineHeight_select" disabled="true">
<option value="">{$lang->edit->lineheight}</option>
<option value="1">100%</option>
<option value="1.2">120%</option>
<option value="1.4">140%</option>
<option value="1.6">160%</option>
<option value="1.8">180%</option>
<option value="2">200%</option>
</select>
</li>
</ul>
<ul class="style">
<li class="bold xpress_xeditor_ui_bold">
<button type="button" title="Ctrl+B:{$lang->edit->help_bold}"><span>{$lang->edit->bold}</span></button>
</li>
<li class="underline xpress_xeditor_ui_underline">
<button type="button" title="Ctrl+U:{$lang->edit->help_underline}"><span>{$lang->edit->underline}</span></button>
</li>
<li class="italic xpress_xeditor_ui_italic">
<button type="button" title="Ctrl+I:{$lang->edit->help_italic}"><span>{$lang->edit->italic}</span></button>
</li>
<li class="del xpress_xeditor_ui_lineThrough">
<button type="button" title="Ctrl+D:{$lang->edit->help_strike}"><span>{$lang->edit->strike}</span></button>
</li>
<li class="fcolor xpress_xeditor_ui_fontColor">
<button type="button" title="{$lang->edit->help_fontcolor}"><span>{$lang->edit->fontcolor}</span></button>
<!-- 팔레트 레이어 -->
<div class="layer xpress_xeditor_fontcolor_layer" style="display:none;">
<ul class="palette xpress_xeditor_color_palette">
<li><button type="button" title="#ff0000" style="background:#ff0000"><span>#ff0000</span></button></li>
<li><button type="button" title="#ff6c00" style="background:#ff6c00"><span>#ff6c00</span></button></li>
<li><button type="button" title="#ffaa00" style="background:#ffaa00"><span>#ffaa00</span></button></li>
<li><button type="button" title="#ffef00" style="background:#ffef00"><span>#ffef00</span></button></li>
<li><button type="button" title="#a6cf00" style="background:#a6cf00"><span>#a6cf00</span></button></li>
<li><button type="button" title="#009e25" style="background:#009e25"><span>#009e25</span></button></li>
<li><button type="button" title="#00b0a2" style="background:#00b0a2"><span>#00b0a2</span></button></li>
<li><button type="button" title="#0075c8" style="background:#0075c8"><span>#0075c8</span></button></li>
<li><button type="button" title="#3a32c3" style="background:#3a32c3"><span>#3a32c3</span></button></li>
<li><button type="button" title="#7820b9" style="background:#7820b9"><span>#7820b9</span></button></li>
<li><button type="button" title="#ef007c" style="background:#ef007c"><span>#ef007c</span></button></li>
<li><button type="button" title="#000000" style="background:#000000"><span>#000000</span></button></li>
<li><button type="button" title="#252525" style="background:#252525"><span>#252525</span></button></li>
<li><button type="button" title="#464646" style="background:#464646"><span>#464646</span></button></li>
<li><button type="button" title="#636363" style="background:#636363"><span>#636363</span></button></li>
<li><button type="button" title="#7d7d7d" style="background:#7d7d7d"><span>#7d7d7d</span></button></li>
<li><button type="button" title="#9a9a9a" style="background:#9a9a9a"><span>#9a9a9a</span></button></li>
<li><button type="button" title="#ffe8e8" style="background:#ffe8e8"><span>#ffe8e8</span></button></li>
<li><button type="button" title="#f7e2d2" style="background:#f7e2d2"><span>#f7e2d2</span></button></li>
<li><button type="button" title="#f5eddc" style="background:#f5eddc"><span>#f5eddc</span></button></li>
<li><button type="button" title="#f5f4e0" style="background:#f5f4e0"><span>#f5f4e0</span></button></li>
<li><button type="button" title="#edf2c2" style="background:#edf2c2"><span>#edf2c2</span></button></li>
<li><button type="button" title="#def7e5" style="background:#def7e5"><span>#def7e5</span></button></li>
<li><button type="button" title="#d9eeec" style="background:#d9eeec"><span>#d9eeec</span></button></li>
<li><button type="button" title="#c9e0f0" style="background:#c9e0f0"><span>#c9e0f0</span></button></li>
<li><button type="button" title="#d6d4eb" style="background:#d6d4eb"><span>#d6d4eb</span></button></li>
<li><button type="button" title="#e7dbed" style="background:#e7dbed"><span>#e7dbed</span></button></li>
<li><button type="button" title="#f1e2ea" style="background:#f1e2ea"><span>#f1e2ea</span></button></li>
<li><button type="button" title="#acacac" style="background:#acacac"><span>#acacac</span></button></li>
<li><button type="button" title="#c2c2c2" style="background:#c2c2c2"><span>#c2c2c2</span></button></li>
<li><button type="button" title="#cccccc" style="background:#cccccc"><span>#cccccc</span></button></li>
<li><button type="button" title="#e1e1e1" style="background:#e1e1e1"><span>#e1e1e1</span></button></li>
<li><button type="button" title="#ebebeb" style="background:#ebebeb"><span>#ebebeb</span></button></li>
<li><button type="button" title="#ffffff" style="background:#ffffff"><span>#ffffff</span></button></li>
<li><button type="button" title="#e97d81" style="background:#e97d81"><span>#e97d81</span></button></li>
<li><button type="button" title="#e19b73" style="background:#e19b73"><span>#e19b73</span></button></li>
<li><button type="button" title="#d1b274" style="background:#d1b274"><span>#d1b274</span></button></li>
<li><button type="button" title="#cfcca2" style="background:#cfcca2"><span>#cfcca2</span></button></li>
<li><button type="button" title="#cfcca2" style="background:#cfcca2"><span>#cfcca2</span></button></li>
<li><button type="button" title="#61b977" style="background:#61b977"><span>#61b977</span></button></li>
<li><button type="button" title="#53aea8" style="background:#53aea8"><span>#53aea8</span></button></li>
<li><button type="button" title="#518fbb" style="background:#518fbb"><span>#518fbb</span></button></li>
<li><button type="button" title="#6a65bb" style="background:#6a65bb"><span>#6a65bb</span></button></li>
<li><button type="button" title="#9a54ce" style="background:#9a54ce"><span>#9a54ce</span></button></li>
<li><button type="button" title="#e573ae" style="background:#e573ae"><span>#e573ae</span></button></li>
<li><button type="button" title="#5a504b" style="background:#5a504b"><span>#5a504b</span></button></li>
<li><button type="button" title="#767b86" style="background:#767b86"><span>#767b86</span></button></li>
<li><button type="button" title="#00ffff" style="background:#00ffff"><span>#00ffff</span></button></li>
<li><button type="button" title="#00ff00" style="background:#00ff00"><span>#00ff00</span></button></li>
<li><button type="button" title="#a0f000" style="background:#a0f000"><span>#a0f000</span></button></li>
<li><button type="button" title="#ffff00" style="background:#ffff00"><span>#ffff00</span></button></li>
<li><button type="button" title="#951015" style="background:#951015"><span>#951015</span></button></li>
<li><button type="button" title="#6e391a" style="background:#6e391a"><span>#6e391a</span></button></li>
<li><button type="button" title="#785c25" style="background:#785c25"><span>#785c25</span></button></li>
<li><button type="button" title="#5f5b25" style="background:#5f5b25"><span>#5f5b25</span></button></li>
<li><button type="button" title="#4c511f" style="background:#4c511f"><span>#4c511f</span></button></li>
<li><button type="button" title="#1c4827" style="background:#1c4827"><span>#1c4827</span></button></li>
<li><button type="button" title="#0d514c" style="background:#0d514c"><span>#0d514c</span></button></li>
<li><button type="button" title="#1b496a" style="background:#1b496a"><span>#1b496a</span></button></li>
<li><button type="button" title="#2b285f" style="background:#2b285f"><span>#2b285f</span></button></li>
<li><button type="button" title="#45245b" style="background:#45245b"><span>#45245b</span></button></li>
<li><button type="button" title="#721947" style="background:#721947"><span>#721947</span></button></li>
<li><button type="button" title="#352e2c" style="background:#352e2c"><span>#352e2c</span></button></li>
<li><button type="button" title="#3c3f45" style="background:#3c3f45"><span>#3c3f45</span></button></li>
<li><button type="button" title="#00aaff" style="background:#00aaff"><span>#00aaff</span></button></li>
<li><button type="button" title="#0000ff" style="background:#0000ff"><span>#0000ff</span></button></li>
<li><button type="button" title="#a800ff" style="background:#a800ff"><span>#a800ff</span></button></li>
<li><button type="button" title="#ff00ff" style="background:#ff00ff"><span>#ff00ff</span></button></li>
</ul>
</div>
<!-- /팔레트 레이어 -->
</li>
<li class="bcolor xpress_xeditor_ui_bgColor">
<button type="button" title="{$lang->edit->help_fontbgcolor}"><span>{$lang->edit->fontbgcolor}</span></button>
<!-- 배경색 + 팔레트 레이어 -->
<div class="layer xpress_xeditor_bgcolor_layer" style="display:none;">
<ul class="background">
<li><button type="button" title="#000000" style="background:#000000; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#9334d8" style="background:#9334d8; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#ff0000" style="background:#ff0000; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#333333" style="background:#333333; color:#ffff00"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#0000ff" style="background:#0000ff; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#ff6600" style="background:#ff6600; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#8e8e8e" style="background:#8e8e8e; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#009999" style="background:#009999; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#ffa700" style="background:#ffa700; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#ffdaed" style="background:#ffdaed; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#e4ff75" style="background:#e4ff75; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#cc9900" style="background:#cc9900; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#99dcff" style="background:#99dcff; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#a6ff4d" style="background:#a6ff4d; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#ffffff" style="background:#ffffff; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
</ul>
</div>
<!-- /배경색 + 팔레트 레이어 -->
</li>
<li class="sup xpress_xeditor_ui_superscript">
<button type="button" title="{$lang->edit->help_sup}"><span>{$lang->edit->sup}</span></button>
</li>
<li class="sub xpress_xeditor_ui_subscript">
<button type="button" title="{$lang->edit->help_sub}"><span>{$lang->edit->sub}</span></button>
</li>
</ul>
<ul class="paragraph">
<li class="left xpress_xeditor_ui_justifyleft">
<button type="button" title="{$lang->edit->help_align_left}"><span>{$lang->edit->align_left}</span></button>
</li>
<li class="center xpress_xeditor_ui_justifycenter">
<button type="button" title="{$lang->edit->help_align_center}"><span>{$lang->edit->align_center}</span></button>
</li>
<li class="right xpress_xeditor_ui_justifyright">
<button type="button" title="{$lang->edit->help_align_right}"><span>{$lang->edit->align_right}</span></button>
</li>
<li class="justify xpress_xeditor_ui_justifyfull">
<button type="button" title="{$lang->edit->help_align_justify}"><span>{$lang->edit->align_justify}</span></button>
</li>
<li class="ol xpress_xeditor_ui_orderedlist">
<button type="button" title="{$lang->edit->help_list_number}"><span>{$lang->edit->list_number}</span></button>
</li>
<li class="ul xpress_xeditor_ui_unorderedlist">
<button type="button" title="{$lang->edit->help_list_bullet}"><span>{$lang->edit->list_bullet}</span></button>
</li>
<li class="outdent xpress_xeditor_ui_outdent">
<button type="button" title="Shift+Tab:{$lang->edit->help_remove_indent}"><span>{$lang->edit->help_remove_indent}</span></button>
</li>
<li class="indent xpress_xeditor_ui_indent">
<button type="button" title="Tab:{$lang->edit->help_add_indent}"><span>{$lang->edit->add_indent}</span></button>
</li>
</ul>
<ul class="extra1">
<li class="blockquote xpress_xeditor_ui_quote">
<button type="button" title="{$lang->edit->blockquote}"><span>{$lang->edit->blockquote}</span></button>
<!-- 인용 레이어 -->
<div class="layer xpress_xeditor_blockquote_layer" style="display:none">
<ul>
<li class="q1"><button type="button"><span>{$lang->edit->quotestyle1}</span></button></li>
<li class="q2"><button type="button"><span>{$lang->edit->quotestyle2}</span></button></li>
<li class="q3"><button type="button"><span>{$lang->edit->quotestyle3}</span></button></li>
<li class="q4"><button type="button"><span>{$lang->edit->quotestyle4}</span></button></li>
<li class="q5"><button type="button"><span>{$lang->edit->quotestyle5}</span></button></li>
<li class="q6"><button type="button"><span>{$lang->edit->quotestyle6}</span></button></li>
<li class="q7"><button type="button"><span>{$lang->edit->quotestyle7}</span></button></li>
<li class="q8"><button type="button"><span>{$lang->edit->quotestyle8}</span></button></li>
</ul>
</div>
<!-- /인용 레이어 -->
</li>
<li class="url xpress_xeditor_ui_hyperlink">
<button type="button" title="{$lang->edit->url}"><span>{$lang->edit->url}</span></button>
<!-- URL 레이어 -->
<div class="layer xpress_xeditor_hyperlink_layer" style="display:none;">
<fieldset>
<h3>{$lang->edit->hyperlink}</h3>
<input name="" class="link" type="text" value="http://" title="URL" />
<p><input name="" id="target" type="checkbox" value="" /><label for="target">{$lang->edit->target_blank}</label></p>
</fieldset>
<div class="btn_area">
<button type="button" class="confirm" title="{$lang->cmd_confirm}"><span>{$lang->cmd_confirm}</span></button>
<button type="button" class="cancel" title="{$lang->cmd_cancel}"><span>{$lang->cmd_cancel}</span></button>
<!-- 편집 컴포넌트 -->
<div class="tool off">
<!--@if($enable_default_component)-->
<!-- 기본 컴포넌트 출력 -->
<ul class="do item">
<li class="xpress_xeditor_ui_undo undo"><button type="button" title="Ctrl+Z:{$lang->edit->undo}"><span>{$lang->edit->undo}</span></button></li>
<li class="xpress_xeditor_ui_redo redo"><button type="button" title="Ctrl+Y:{$lang->edit->redo}"><span>{$lang->edit->redo}</span></button></li>
</ul>
<ul class="type">
<li class="xpress_xeditor_ui_format">
<select class="xpress_xeditor_ui_format_select" disabled="disabled">
<option value="">{$lang->edit->header}</option>
<!--@foreach($lang->edit->header_list as $key=>$obj)-->
<option value="{$key}">{$obj}</option>
<!--@end-->
</select>
</li>
<li class="xpress_xeditor_ui_fontName">
<select class="xpress_xeditor_ui_fontName_select" disabled="disabled">
<option value="">{$lang->edit->fontname}</option>
<!--@foreach($lang->edit->fontlist as $key=>$obj)-->
<option value="{$key}" style="font-family:{$key}">{$obj}</option>
<!--@end-->
</select>
</li>
<li class="xpress_xeditor_ui_fontSize">
<select class="xpress_xeditor_ui_fontSize_select" disabled="disabled">
<option value="">{$lang->edit->fontsize}</option>
<option value="9px" style="font-size:9px">9px</option>
<option value="10px" style="font-size:10px">10px</option>
<option value="11px" style="font-size:11px">11px</option>
<option value="12px" style="font-size:12px">12px</option>
<option value="13px" style="font-size:13px">13px</option>
<option value="14px" style="font-size:14px">14px</option>
<option value="16px" style="font-size:16px">16px</option>
<option value="18px" style="font-size:18px">18px</option>
<option value="24px" style="font-size:24px">24px</option>
<option value="32px" style="font-size:32px">32px</option>
</select>
</li>
<li class="xpress_xeditor_ui_lineHeight">
<select class="xpress_xeditor_ui_lineHeight_select" disabled="disabled">
<option value="">{$lang->edit->lineheight}</option>
<option value="1">100%</option>
<option value="1.2">120%</option>
<option value="1.4">140%</option>
<option value="1.6">160%</option>
<option value="1.8">180%</option>
<option value="2">200%</option>
</select>
</li>
</ul>
<ul class="style">
<li class="bold xpress_xeditor_ui_bold">
<button type="button" title="Ctrl+B:{$lang->edit->help_bold}"><span>{$lang->edit->bold}</span></button>
</li>
<li class="underline xpress_xeditor_ui_underline">
<button type="button" title="Ctrl+U:{$lang->edit->help_underline}"><span>{$lang->edit->underline}</span></button>
</li>
<li class="italic xpress_xeditor_ui_italic">
<button type="button" title="Ctrl+I:{$lang->edit->help_italic}"><span>{$lang->edit->italic}</span></button>
</li>
<li class="del xpress_xeditor_ui_lineThrough">
<button type="button" title="Ctrl+D:{$lang->edit->help_strike}"><span>{$lang->edit->strike}</span></button>
</li>
<li class="fcolor xpress_xeditor_ui_fontColor">
<button type="button" title="{$lang->edit->help_fontcolor}"><span>{$lang->edit->fontcolor}</span></button>
<!-- 팔레트 레이어 -->
<div class="layer xpress_xeditor_fontcolor_layer" style="display:none;">
<ul class="palette xpress_xeditor_color_palette">
<li><button type="button" title="#ff0000" style="background:#ff0000"><span>#ff0000</span></button></li>
<li><button type="button" title="#ff6c00" style="background:#ff6c00"><span>#ff6c00</span></button></li>
<li><button type="button" title="#ffaa00" style="background:#ffaa00"><span>#ffaa00</span></button></li>
<li><button type="button" title="#ffef00" style="background:#ffef00"><span>#ffef00</span></button></li>
<li><button type="button" title="#a6cf00" style="background:#a6cf00"><span>#a6cf00</span></button></li>
<li><button type="button" title="#009e25" style="background:#009e25"><span>#009e25</span></button></li>
<li><button type="button" title="#00b0a2" style="background:#00b0a2"><span>#00b0a2</span></button></li>
<li><button type="button" title="#0075c8" style="background:#0075c8"><span>#0075c8</span></button></li>
<li><button type="button" title="#3a32c3" style="background:#3a32c3"><span>#3a32c3</span></button></li>
<li><button type="button" title="#7820b9" style="background:#7820b9"><span>#7820b9</span></button></li>
<li><button type="button" title="#ef007c" style="background:#ef007c"><span>#ef007c</span></button></li>
<li><button type="button" title="#000000" style="background:#000000"><span>#000000</span></button></li>
<li><button type="button" title="#252525" style="background:#252525"><span>#252525</span></button></li>
<li><button type="button" title="#464646" style="background:#464646"><span>#464646</span></button></li>
<li><button type="button" title="#636363" style="background:#636363"><span>#636363</span></button></li>
<li><button type="button" title="#7d7d7d" style="background:#7d7d7d"><span>#7d7d7d</span></button></li>
<li><button type="button" title="#9a9a9a" style="background:#9a9a9a"><span>#9a9a9a</span></button></li>
<li><button type="button" title="#ffe8e8" style="background:#ffe8e8"><span>#ffe8e8</span></button></li>
<li><button type="button" title="#f7e2d2" style="background:#f7e2d2"><span>#f7e2d2</span></button></li>
<li><button type="button" title="#f5eddc" style="background:#f5eddc"><span>#f5eddc</span></button></li>
<li><button type="button" title="#f5f4e0" style="background:#f5f4e0"><span>#f5f4e0</span></button></li>
<li><button type="button" title="#edf2c2" style="background:#edf2c2"><span>#edf2c2</span></button></li>
<li><button type="button" title="#def7e5" style="background:#def7e5"><span>#def7e5</span></button></li>
<li><button type="button" title="#d9eeec" style="background:#d9eeec"><span>#d9eeec</span></button></li>
<li><button type="button" title="#c9e0f0" style="background:#c9e0f0"><span>#c9e0f0</span></button></li>
<li><button type="button" title="#d6d4eb" style="background:#d6d4eb"><span>#d6d4eb</span></button></li>
<li><button type="button" title="#e7dbed" style="background:#e7dbed"><span>#e7dbed</span></button></li>
<li><button type="button" title="#f1e2ea" style="background:#f1e2ea"><span>#f1e2ea</span></button></li>
<li><button type="button" title="#acacac" style="background:#acacac"><span>#acacac</span></button></li>
<li><button type="button" title="#c2c2c2" style="background:#c2c2c2"><span>#c2c2c2</span></button></li>
<li><button type="button" title="#cccccc" style="background:#cccccc"><span>#cccccc</span></button></li>
<li><button type="button" title="#e1e1e1" style="background:#e1e1e1"><span>#e1e1e1</span></button></li>
<li><button type="button" title="#ebebeb" style="background:#ebebeb"><span>#ebebeb</span></button></li>
<li><button type="button" title="#ffffff" style="background:#ffffff"><span>#ffffff</span></button></li>
<li><button type="button" title="#e97d81" style="background:#e97d81"><span>#e97d81</span></button></li>
<li><button type="button" title="#e19b73" style="background:#e19b73"><span>#e19b73</span></button></li>
<li><button type="button" title="#d1b274" style="background:#d1b274"><span>#d1b274</span></button></li>
<li><button type="button" title="#cfcca2" style="background:#cfcca2"><span>#cfcca2</span></button></li>
<li><button type="button" title="#cfcca2" style="background:#cfcca2"><span>#cfcca2</span></button></li>
<li><button type="button" title="#61b977" style="background:#61b977"><span>#61b977</span></button></li>
<li><button type="button" title="#53aea8" style="background:#53aea8"><span>#53aea8</span></button></li>
<li><button type="button" title="#518fbb" style="background:#518fbb"><span>#518fbb</span></button></li>
<li><button type="button" title="#6a65bb" style="background:#6a65bb"><span>#6a65bb</span></button></li>
<li><button type="button" title="#9a54ce" style="background:#9a54ce"><span>#9a54ce</span></button></li>
<li><button type="button" title="#e573ae" style="background:#e573ae"><span>#e573ae</span></button></li>
<li><button type="button" title="#5a504b" style="background:#5a504b"><span>#5a504b</span></button></li>
<li><button type="button" title="#767b86" style="background:#767b86"><span>#767b86</span></button></li>
<li><button type="button" title="#00ffff" style="background:#00ffff"><span>#00ffff</span></button></li>
<li><button type="button" title="#00ff00" style="background:#00ff00"><span>#00ff00</span></button></li>
<li><button type="button" title="#a0f000" style="background:#a0f000"><span>#a0f000</span></button></li>
<li><button type="button" title="#ffff00" style="background:#ffff00"><span>#ffff00</span></button></li>
<li><button type="button" title="#951015" style="background:#951015"><span>#951015</span></button></li>
<li><button type="button" title="#6e391a" style="background:#6e391a"><span>#6e391a</span></button></li>
<li><button type="button" title="#785c25" style="background:#785c25"><span>#785c25</span></button></li>
<li><button type="button" title="#5f5b25" style="background:#5f5b25"><span>#5f5b25</span></button></li>
<li><button type="button" title="#4c511f" style="background:#4c511f"><span>#4c511f</span></button></li>
<li><button type="button" title="#1c4827" style="background:#1c4827"><span>#1c4827</span></button></li>
<li><button type="button" title="#0d514c" style="background:#0d514c"><span>#0d514c</span></button></li>
<li><button type="button" title="#1b496a" style="background:#1b496a"><span>#1b496a</span></button></li>
<li><button type="button" title="#2b285f" style="background:#2b285f"><span>#2b285f</span></button></li>
<li><button type="button" title="#45245b" style="background:#45245b"><span>#45245b</span></button></li>
<li><button type="button" title="#721947" style="background:#721947"><span>#721947</span></button></li>
<li><button type="button" title="#352e2c" style="background:#352e2c"><span>#352e2c</span></button></li>
<li><button type="button" title="#3c3f45" style="background:#3c3f45"><span>#3c3f45</span></button></li>
<li><button type="button" title="#00aaff" style="background:#00aaff"><span>#00aaff</span></button></li>
<li><button type="button" title="#0000ff" style="background:#0000ff"><span>#0000ff</span></button></li>
<li><button type="button" title="#a800ff" style="background:#a800ff"><span>#a800ff</span></button></li>
<li><button type="button" title="#ff00ff" style="background:#ff00ff"><span>#ff00ff</span></button></li>
</ul>
</div>
<!-- /팔레트 레이어 -->
</li>
<li class="bcolor xpress_xeditor_ui_bgColor">
<button type="button" title="{$lang->edit->help_fontbgcolor}"><span>{$lang->edit->fontbgcolor}</span></button>
<!-- 배경색 + 팔레트 레이어 -->
<div class="layer xpress_xeditor_bgcolor_layer" style="display:none;">
<ul class="background">
<li><button type="button" title="#000000" style="background:#000000; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#9334d8" style="background:#9334d8; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#ff0000" style="background:#ff0000; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#333333" style="background:#333333; color:#ffff00"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#0000ff" style="background:#0000ff; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#ff6600" style="background:#ff6600; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#8e8e8e" style="background:#8e8e8e; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#009999" style="background:#009999; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#ffa700" style="background:#ffa700; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#ffdaed" style="background:#ffdaed; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#e4ff75" style="background:#e4ff75; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#cc9900" style="background:#cc9900; color:#ffffff"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#99dcff" style="background:#99dcff; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#a6ff4d" style="background:#a6ff4d; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
<li><button type="button" title="#ffffff" style="background:#ffffff; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
</ul>
</div>
<!-- /배경색 + 팔레트 레이어 -->
</li>
<li class="sup xpress_xeditor_ui_superscript">
<button type="button" title="{$lang->edit->help_sup}"><span>{$lang->edit->sup}</span></button>
</li>
<li class="sub xpress_xeditor_ui_subscript">
<button type="button" title="{$lang->edit->help_sub}"><span>{$lang->edit->sub}</span></button>
</li>
</ul>
<ul class="paragraph">
<li class="left xpress_xeditor_ui_justifyleft">
<button type="button" title="{$lang->edit->help_align_left}"><span>{$lang->edit->align_left}</span></button>
</li>
<li class="center xpress_xeditor_ui_justifycenter">
<button type="button" title="{$lang->edit->help_align_center}"><span>{$lang->edit->align_center}</span></button>
</li>
<li class="right xpress_xeditor_ui_justifyright">
<button type="button" title="{$lang->edit->help_align_right}"><span>{$lang->edit->align_right}</span></button>
</li>
<li class="justify xpress_xeditor_ui_justifyfull">
<button type="button" title="{$lang->edit->help_align_justify}"><span>{$lang->edit->align_justify}</span></button>
</li>
<li class="ol xpress_xeditor_ui_orderedlist">
<button type="button" title="{$lang->edit->help_list_number}"><span>{$lang->edit->list_number}</span></button>
</li>
<li class="ul xpress_xeditor_ui_unorderedlist">
<button type="button" title="{$lang->edit->help_list_bullet}"><span>{$lang->edit->list_bullet}</span></button>
</li>
<li class="outdent xpress_xeditor_ui_outdent">
<button type="button" title="Shift+Tab:{$lang->edit->help_remove_indent}"><span>{$lang->edit->help_remove_indent}</span></button>
</li>
<li class="indent xpress_xeditor_ui_indent">
<button type="button" title="Tab:{$lang->edit->help_add_indent}"><span>{$lang->edit->add_indent}</span></button>
</li>
</ul>
<ul class="extra1">
<li class="blockquote xpress_xeditor_ui_quote">
<button type="button" title="{$lang->edit->blockquote}"><span>{$lang->edit->blockquote}</span></button>
<!-- 인용 레이어 -->
<div class="layer xpress_xeditor_blockquote_layer" style="display:none">
<ul>
<li class="q1"><button type="button"><span>{$lang->edit->quotestyle1}</span></button></li>
<li class="q2"><button type="button"><span>{$lang->edit->quotestyle2}</span></button></li>
<li class="q3"><button type="button"><span>{$lang->edit->quotestyle3}</span></button></li>
<li class="q4"><button type="button"><span>{$lang->edit->quotestyle4}</span></button></li>
<li class="q5"><button type="button"><span>{$lang->edit->quotestyle5}</span></button></li>
<li class="q6"><button type="button"><span>{$lang->edit->quotestyle6}</span></button></li>
<li class="q7"><button type="button"><span>{$lang->edit->quotestyle7}</span></button></li>
<li class="q8"><button type="button"><span>{$lang->edit->quotestyle8}</span></button></li>
</ul>
</div>
<!-- /인용 레이어 -->
</li>
<li class="url xpress_xeditor_ui_hyperlink">
<button type="button" title="{$lang->edit->url}"><span>{$lang->edit->url}</span></button>
<!-- URL 레이어 -->
<div class="layer xpress_xeditor_hyperlink_layer" style="display:none;">
<fieldset>
<h3>{$lang->edit->hyperlink}</h3>
<input name="" class="link" type="text" value="http://" title="URL" />
<p><input name="" id="target" type="checkbox" value="" /><label for="target">{$lang->edit->target_blank}</label></p>
</fieldset>
<div class="btn_area">
<button type="button" class="confirm" title="{$lang->cmd_confirm}"><span>{$lang->cmd_confirm}</span></button>
<button type="button" class="cancel" title="{$lang->cmd_cancel}"><span>{$lang->cmd_cancel}</span></button>
</div>
</div>
</div>
<!-- /URL 레이어 -->
</li>
<li class="character xpress_xeditor_ui_sCharacter">
<button type="button" title="{$lang->edit->special_character}"><span>{$lang->edit->special_character}</span></button>
<!-- 특수문자 레이어 -->
<div class="layer xpress_xeditor_sCharacter_layer" style="display:none">
<h3>{$lang->edit->insert_special_character}</h3>
<button type="button" class="close" title="{$lang->edit->close_special_character}"><span>{$lang->edit->close_special_character}</span></button>
<ul class="nav">
<li><a href="#character1" class="on">{$lang->edit->symbol}</a></li>
<li><a href="#character2">{$lang->edit->number_unit}</a></li>
<li><a href="#character3">{$lang->edit->circle_bracket}</a></li>
<li><a href="#character4">{$lang->edit->korean}</a></li>
<li><a href="#character5">{$lang->edit->greece},{$lang->edit->Latin}</a></li>
<li><a href="#character6">{$lang->edit->japan}</a></li>
</ul>
<ul style="display: block;" id="character1" class="list"></ul>
<ul style="display: none;" id="character2" class="list"></ul>
<ul style="display: none;" id="character3" class="list"></ul>
<ul style="display: none;" id="character4" class="list"></ul>
<ul style="display: none;" id="character5" class="list"></ul>
<ul style="display: none;" id="character6" class="list"></ul>
<p>
<label for="preview">{$lang->edit->selected_symbol}</label>
<input id="preview" name="" type="text" />
<button type="button" title="{$lang->confirm}"><span>{$lang->confirm}</span></button>
</p>
<button type="button" class="close" title="{$lang->edit->close_special_character}"><span>{$lang->edit->close_special_character}</span></button>
</div>
<!-- /특수문자 레이어 -->
</li>
<li class="find xpress_xeditor_ui_findAndReplace">
<button type="button" title="{$lang->cmd_find}"><span>{$lang->cmd_find}</span></button>
<!-- 찾기 바꾸기 레이어 -->
<div class="layer find xpress_xeditor_findAndReplace_layer" style="display:none">
<!-- class="layer find" | class="layer replace"-->
<h3>{$lang->edit->search_replace}</h3>
<button type="button" class="close" title="{$lang->edit->close_search_replace}"><span>{$lang->edit->close_search_replace}</span></button>
<div class="menu_tab">
<ul class="layer_tab">
<li class="tab1"><a href="#find" onclick="return false">{$lang->cmd_find}</a></li>
<li class="tab2"><a href="#replace" onclick="return false">{$lang->cmd_replace}</a></li>
</ul>
</div>
<div class="container">
<div class="bx" id="find">
<fieldset>
<label for="keyword1">{$lang->edit->search_words}</label>
<input id="keyword1" name="" type="text" />
</fieldset>
<span class="cap"></span> </div>
<div class="bx" id="replace">
<fieldset>
<label for="keyword2">{$lang->edit->search_words}</label>
<input id="keyword2" name="" type="text" />
<br />
<label for="keyword3">{$lang->edit->replace_words}</label>
<input id="keyword3" name="" type="text" />
</fieldset>
</div>
</div>
<div class="btn_area">
<button type="button" class="find_next" title="{$lang->edit->next_search_words}"><span>{$lang->edit->next_search_words}</span></button>
<button type="button" class="replace" title="{$lang->cmd_replace}"><span>{$lang->cmd_replace}</span></button>
<button type="button" class="replace_all" title="{$lang->edit->replace_all}"><span>{$lang->edit->replace_all}</span></button>
</div>
<button type="button" class="close" title="{$lang->edit->close_search_replace}"><span>{$lang->edit->close_search_replace}</span></button>
</div>
<!-- /찾기 바꾸기 레이어 -->
</li>
</ul>
</div>
<!-- /URL 레이어 -->
</li>
<li class="character xpress_xeditor_ui_sCharacter">
<button type="button" title="{$lang->edit->special_character}"><span>{$lang->edit->special_character}</span></button>
<!-- 특수문자 레이어 -->
<div class="layer xpress_xeditor_sCharacter_layer" style="display:none">
<h3>{$lang->edit->insert_special_character}</h3>
<button type="button" class="close" title="{$lang->edit->close_special_character}"><span>{$lang->edit->close_special_character}</span></button>
<ul class="nav">
<li><a href="#character1" class="on">{$lang->edit->symbol}</a></li>
<li><a href="#character2">{$lang->edit->number_unit}</a></li>
<li><a href="#character3">{$lang->edit->circle_bracket}</a></li>
<li><a href="#character4">{$lang->edit->korean}</a></li>
<li><a href="#character5">{$lang->edit->greece},{$lang->edit->Latin}</a></li>
<li><a href="#character6">{$lang->edit->japan}</a></li>
</ul>
<ul style="display: block;" id="character1" class="list"></ul>
<ul style="display: none;" id="character2" class="list"></ul>
<ul style="display: none;" id="character3" class="list"></ul>
<ul style="display: none;" id="character4" class="list"></ul>
<ul style="display: none;" id="character5" class="list"></ul>
<ul style="display: none;" id="character6" class="list"></ul>
<p>
<label for="preview">{$lang->edit->selected_symbol}</label>
<input id="preview" name="" type="text" />
<button type="button" title="{$lang->confirm}"><span>{$lang->confirm}</span></button>
</p>
<button type="button" class="close" title="{$lang->edit->close_special_character}"><span>{$lang->edit->close_special_character}</span></button>
</div>
<!-- /특수문자 레이어 -->
</li>
<li class="find xpress_xeditor_ui_findAndReplace">
<button type="button" title="{$lang->cmd_find}"><span>{$lang->cmd_find}</span></button>
<!-- 찾기 바꾸기 레이어 -->
<div class="layer find xpress_xeditor_findAndReplace_layer" style="display:none">
<!-- class="layer find" | class="layer replace"-->
<h3>{$lang->edit->search_replace}</h3>
<button type="button" class="close" title="{$lang->edit->close_search_replace}"><span>{$lang->edit->close_search_replace}</span></button>
<div class="menu_tab">
<ul class="layer_tab">
<li class="tab1"><a href="#find" onclick="return false">{$lang->cmd_find}</a></li>
<li class="tab2"><a href="#replace" onclick="return false">{$lang->cmd_replace}</a></li>
</ul>
</div>
<div class="container">
<div class="bx" id="find">
<fieldset>
<label for="keyword1">{$lang->edit->search_words}</label>
<input id="keyword1" name="" type="text" />
</fieldset>
<span class="cap"></span> </div>
<div class="bx" id="replace">
<fieldset>
<label for="keyword2">{$lang->edit->search_words}</label>
<input id="keyword2" name="" type="text" />
<br />
<label for="keyword3">{$lang->edit->replace_words}</label>
<input id="keyword3" name="" type="text" />
</fieldset>
</div>
</div>
<div class="btn_area">
<button type="button" class="find_next" title="{$lang->edit->next_search_words}"><span>{$lang->edit->next_search_words}</span></button>
<button type="button" class="replace" title="{$lang->cmd_replace}"><span>{$lang->cmd_replace}</span></button>
<button type="button" class="replace_all" title="{$lang->edit->replace_all}"><span>{$lang->edit->replace_all}</span></button>
</div>
<button type="button" class="close" title="{$lang->edit->close_search_replace}"><span>{$lang->edit->close_search_replace}</span></button>
</div>
<!-- /찾기 바꾸기 레이어 -->
</li>
</ul>
<ul class="table">
<li class="table xpress_xeditor_ui_table">
<button type="button" title="{$lang->edit->table}"><span>{$lang->edit->table}</span></button>
<!-- 표 레이어 -->
<div class="layer xpress_xeditor_table_layer" style="display:none;">
<fieldset class="num">
<h3>{$lang->edit->set_sel}</h3>
<dl>
<dt>
<label for="row">{$lang->edit->row}</label>
</dt>
<dd>
<input id="row" name="" type="text" maxlength="2" value="4" />
<button type="button" class="add"><span>{$lang->edit->add_one_row}</span></button>
<button type="button" class="del"><span>{$lang->edit->del_one_row}</span></button>
</dd>
<dt>
<label for="col">{$lang->edit->col}</label>
</dt>
<dd>
<input id="col" name="" type="text" maxlength="2" value="4" />
<button type="button" class="add"><span>{$lang->edit->add_one_col}</span></button>
<button type="button" class="del"><span>{$lang->edit->del_one_col}</span></button>
</dd>
</dl>
<table border="1">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</fieldset>
<fieldset class="color">
<h3>{$lang->edit->table_config}</h3>
<dl>
<dt>
<label for="table_border_width">{$lang->edit->border_width}</label>
</dt>
<dd>
<input id="table_border_width" name="" type="text" maxlength="2" value="1" />
<button type="button" class="add"><span>1px {$lang->edit->add}</span></button>
<button type="button" class="del"><span>1px {$lang->edit->del}</span></button>
</dd>
<dt>
<label for="table_border_color">{$lang->edit->border_color}</label>
</dt>
<dd>
<span class="preview_palette"><button type="button" style="background:#cccccc;">{$lang->edit->search_color}</button></span>
<input id="table_border_color" name="" type="text" maxlength="7" value="#CCCCCC" />
<button type="button" class="find_palette"><span>{$lang->edit->search_color}</span></button>
</dd>
<dt>
<label for="table_bg_color">{$lang->edit->table_backgroundcolor}</label>
</dt>
<dd>
<span class="preview_palette"><button type="button" style="background:#000000;">{$lang->edit->search_color}</button></span>
<input id="table_bg_color" name="" type="text" maxlength="7" value="#000000" />
<button type="button" class="find_palette"><span>{$lang->edit->search_color}</span></button>
</dd>
</dl>
</fieldset>
<div class="btn_area">
<button type="button" class="confirm" title="{$lang->confirm}"><span>{$lang->confirm}</span></button>
<button type="button" class="cancel" title="{$lang->cancel}"><span>{$lang->cancel}</span></button>
</div>
</div>
<!-- /표 레이어 -->
</li>
<li class="merge xpress_xeditor_ui_merge_cells"><button type="button" title="{$lang->edit->merge_cells}"><span>{$lang->edit->merge_cells}</span></button></li>
<li class="splitCol xpress_xeditor_ui_split_col"><button type="button" title="{$lang->edit->split_col}"><span>{$lang->edit->split_col}</span></button></li>
<li class="splitRow xpress_xeditor_ui_split_row"><button type="button" title="{$lang->edit->split_row}"><span>{$lang->edit->split_row}</span></button></li>
</ul>
<!--@end-->
<ul class="table">
<li class="table xpress_xeditor_ui_table">
<button type="button" title="{$lang->edit->table}"><span>{$lang->edit->table}</span></button>
<!-- 표 레이어 -->
<div class="layer xpress_xeditor_table_layer" style="display:none;">
<fieldset class="num">
<h3>{$lang->edit->set_sel}</h3>
<dl>
<dt>
<label for="row">{$lang->edit->row}</label>
</dt>
<dd>
<input id="row" name="" type="text" maxlength="2" value="4" />
<button type="button" class="add"><span>{$lang->edit->add_one_row}</span></button>
<button type="button" class="del"><span>{$lang->edit->del_one_row}</span></button>
</dd>
<dt>
<label for="col">{$lang->edit->col}</label>
</dt>
<dd>
<input id="col" name="" type="text" maxlength="2" value="4" />
<button type="button" class="add"><span>{$lang->edit->add_one_col}</span></button>
<button type="button" class="del"><span>{$lang->edit->del_one_col}</span></button>
</dd>
</dl>
<table border="1">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</fieldset>
<fieldset class="color">
<h3>{$lang->edit->table_config}</h3>
<dl>
<dt>
<label for="table_border_width">{$lang->edit->border_width}</label>
</dt>
<dd>
<input id="table_border_width" name="" type="text" maxlength="2" value="1" />
<button type="button" class="add"><span>1px {$lang->edit->add}</span></button>
<button type="button" class="del"><span>1px {$lang->edit->del}</span></button>
</dd>
<dt>
<label for="table_border_color">{$lang->edit->border_color}</label>
</dt>
<dd>
<span class="preview_palette"><button type="button" style="background:#cccccc;">{$lang->edit->search_color}</button></span>
<input id="table_border_color" name="" type="text" maxlength="7" value="#CCCCCC" />
<button type="button" class="find_palette"><span>{$lang->edit->search_color}</span></button>
</dd>
<dt>
<label for="table_bg_color">{$lang->edit->table_backgroundcolor}</label>
</dt>
<dd>
<span class="preview_palette"><button type="button" style="background:#000000;">{$lang->edit->search_color}</button></span>
<input id="table_bg_color" name="" type="text" maxlength="7" value="#000000" />
<button type="button" class="find_palette"><span>{$lang->edit->search_color}</span></button>
</dd>
</dl>
</fieldset>
<div class="btn_area">
<button type="button" class="confirm" title="{$lang->confirm}"><span>{$lang->confirm}</span></button>
<button type="button" class="cancel" title="{$lang->cancel}"><span>{$lang->cancel}</span></button>
</div>
</div>
<!-- /표 레이어 -->
</li>
<li class="merge xpress_xeditor_ui_merge_cells"><button type="button" title="{$lang->edit->merge_cells}"><span>{$lang->edit->merge_cells}</span></button></li>
<li class="splitCol xpress_xeditor_ui_split_col"><button type="button" title="{$lang->edit->split_col}"><span>{$lang->edit->split_col}</span></button></li>
<li class="splitRow xpress_xeditor_ui_split_row"><button type="button" title="{$lang->edit->split_row}"><span>{$lang->edit->split_row}</span></button></li>
</ul>
<!--@end-->
<!--@if($enable_component)-->
<ul class="extra2">
<!-- 확장 컴포넌트 출력 -->
<li class="extensions xpress_xeditor_ui_extension">
<span class="exButton"><button type="button" title="{$lang->edit->extension}">{$lang->edit->extension}</button></span>
<div class="layer extension2 xpress_xeditor_extension_layer" id="editorExtension_{$editor_sequence}">
<ul id="editor_component_{$editor_sequence}" class="editorComponent">
<!--@foreach($component_list as $component_name => $component)-->
<li><!--@if($component->component_icon)--><img src="../../components/{$component_name}/component_icon.gif" alt="" width="13" height="12"/> <!--@end--><a href="#" onclick="return false;" id="component_{$editor_sequence}_{$component_name}">{$component->title}</a></li>
<!--@end-->
</ul>
</div>
</li>
</ul>
<!--@end-->
<!--@if($enable_component)-->
<ul class="extra2">
<!-- 확장 컴포넌트 출력 -->
<li class="extensions xpress_xeditor_ui_extension">
<span class="exButton"><button type="button" title="{$lang->edit->extension}">{$lang->edit->extension}</button></span>
<div class="layer extension2 xpress_xeditor_extension_layer" id="editorExtension_{$editor_sequence}">
<ul id="editor_component_{$editor_sequence}" class="editorComponent">
<!--@foreach($component_list as $component_name => $component)-->
<li><!--@if($component->component_icon)--><img src="../../components/{$component_name}/component_icon.gif" alt="" width="13" height="12"/> <!--@end--><a href="#" onclick="return false;" id="component_{$editor_sequence}_{$component_name}">{$component->title}</a></li>
<!--@end-->
</ul>
</div>
</li>
</ul>
<!--@end-->
<!--@if($html_mode)-->
<ul class="extra3">
<!-- HTML 모드 사용 -->
<li class="html"><span><button class="xpress_xeditor_mode_toggle_button" type="button" title="{$lang->edit->html_editor}">{$lang->edit->html_editor}</button></span></li>
<!--li class="preview"><span><button type="button" class="xpress_xeditor_preview_button" title="{$lang->cmd_preview}">{$lang->cmd_preview}</button></span></li-->
</ul>
<!--@end-->
<!--@if($html_mode)-->
<ul class="extra3">
<!-- HTML 모드 사용 -->
<li class="html"><span><button class="xpress_xeditor_mode_toggle_button" type="button" title="{$lang->edit->html_editor}">{$lang->edit->html_editor}</button></span></li>
<!--li class="preview"><span><button type="button" class="xpress_xeditor_preview_button" title="{$lang->cmd_preview}">{$lang->cmd_preview}</button></span></li-->
</ul>
<!--@end-->
</div>
</div>
<!--@else-->
<div class="tool off disable"></div>
<!--@end-->
<!-- 에디터 출력 -->
<div id="xe-editor-container-{$editor_sequence}" class="input_area xpress_xeditor_editing_area_container">
<textarea id="xpress-editor-{$editor_sequence}" cols="10" rows="10"></textarea>
</div>
<!-- 에디터 출력 -->
<div id="xe-editor-container-{$editor_sequence}" class="input_area xpress_xeditor_editing_area_container">
<textarea id="xpress-editor-{$editor_sequence}" cols="10" rows="10"></textarea>
</div>
<!--@if($enable_autosave)-->
<p class="editor_autosaved_message autosave_message" id="editor_autosaved_message_{$editor_sequence}">&nbsp;</p>
<!--@end-->
<!--@if($enable_autosave)-->
<p class="editor_autosaved_message autosave_message" id="editor_autosaved_message_{$editor_sequence}">&nbsp;</p>
<!--@end-->
<!-- /입력 -->
<button type="button" class="input_control xpress_xeditor_editingArea_verticalResizer" title="{$lang->edit->edit_height_control}"><span>{$lang->edit->edit_height_control}</span></button>
<!-- /입력 -->
<button type="button" class="input_control xpress_xeditor_editingArea_verticalResizer" title="{$lang->edit->edit_height_control}"><span>{$lang->edit->edit_height_control}</span></button>
</div>
</div>
<!--@if($allow_fileupload)-->
<!--%import("../../tpl/js/uploader.js",optimized=false)-->
<!--%import("../../tpl/js/swfupload.js",optimized=false)-->
<script type="text/javascript">//<![CDATA[
editorUploadInit(
{
<!--@if($allow_fileupload)-->
<!--%import("../../tpl/js/uploader.js",optimized=false)-->
<!--%import("../../tpl/js/swfupload.js",optimized=false)-->
<script type="text/javascript">//<![CDATA[
editorUploadInit(
{
"editorSequence" : {$editor_sequence},
"sessionName" : "{session_name()}",
"allowedFileSize" : "{$file_config->allowed_filesize}",
@ -496,28 +498,28 @@
"previewAreaID" : "preview_uploaded_{$editor_sequence}",
"uploaderStatusID" : "uploader_status_{$editor_sequence}"
}
);
//]]></script>
<!-- 파일 업로드 영역 -->
<div id="fileUploader_{$editor_sequence}" class="fileUploader">
<div class="preview {$editor_class}" id="preview_uploaded_{$editor_sequence}"></div>
<div class="fileListArea {$editor_class}">
<select id="uploaded_file_list_{$editor_sequence}" multiple="multiple" class="fileList" title="Attached File List"><option></option></select>
</div>
<div class="fileUploadControl">
<span class="button {$editor_class}" id="swfUploadButton{$editor_sequence}"><button type="button">{$lang->edit->upload_file}</button></span>
<span class="button {$editor_class}"><button type="button" onclick="removeUploadedFile('{$editor_sequence}');return false;">{$lang->edit->delete_selected}</button></span>
<span class="button {$editor_class}"><button type="button" onclick="insertUploadedFile('{$editor_sequence}');return false;">{$lang->edit->link_file}</button></span>
</div>
<div class="file_attach_info" id="uploader_status_{$editor_sequence}">{$upload_status}</div>
</div>
<!--@end-->
</div>
<!-- 에디터 활성화 -->
<script type="text/javascript">//<![CDATA[
var editor_path = "{$editor_path}";
var auto_saved_msg = "{$lang->msg_auto_saved}";
var oEditor = editorStart_xe("{$editor_sequence}", "{$editor_primary_key_name}", "{$editor_content_key_name}", "{$editor_height}", "{$colorset}", "{$content_style}",'{$content_font}');
//]]></script>
);
//]]></script>
<!-- 파일 업로드 영역 -->
<div id="fileUploader_{$editor_sequence}" class="fileUploader">
<div class="preview {$btn_class}" id="preview_uploaded_{$editor_sequence}"></div>
<div class="fileListArea {$btn_class}">
<select id="uploaded_file_list_{$editor_sequence}" multiple="multiple" class="fileList" title="Attached File List"><option></option></select>
</div>
<div class="fileUploadControl">
<span class="button {$btn_class}" id="swfUploadButton{$editor_sequence}"><button type="button">{$lang->edit->upload_file}</button></span>
<span class="button {$btn_class}"><button type="button" onclick="removeUploadedFile('{$editor_sequence}');return false;">{$lang->edit->delete_selected}</button></span>
<span class="button {$btn_class}"><button type="button" onclick="insertUploadedFile('{$editor_sequence}');return false;">{$lang->edit->link_file}</button></span>
</div>
<div class="file_attach_info" id="uploader_status_{$editor_sequence}">{$upload_status}</div>
</div>
<!--@end-->
</div>
<!-- 에디터 활성화 -->
<script type="text/javascript">//<![CDATA[
var editor_path = "{$editor_path}";
var auto_saved_msg = "{$lang->msg_auto_saved}";
var oEditor = editorStart_xe("{$editor_sequence}", "{$editor_primary_key_name}", "{$editor_content_key_name}", "{$editor_height}", "{$colorset}", "{$content_style}",'{$content_font}','{$content_font_size}');
//]]></script>
<!--@end-->

View file

@ -3187,9 +3187,38 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({
this._disableWYSIWYG();
},
$ON_EVENT_EDITING_AREA_KEYDOWN : function(oEvent) {
// ctrl-left/right add/remove indent
if(!oEvent.ctrlKey) return;
switch(oEvent.keyCode) {
// outdent
case 37 :
this.oApp.exec("EXECCOMMAND", ["outdent", false, false]);
break;
// indent
case 39 :
this.oApp.exec("EXECCOMMAND", ["indent", false, false]);
break;
// h1 ~ h6, normal
case 49 :
case 50 :
case 51 :
case 52 :
case 53 :
case 54 :
this.oApp.exec("EXECCOMMAND", ["FormatBlock", false, '<h'+(oEvent.keyCode-48)+'>']);
break;
default :
return;
}
oEvent.preventDefault(); oEvent.stopPropagation();
},
$ON_EVENT_EDITING_AREA_KEYUP : function(oEvent){
// 33, 34: page up/down, 35,36: end/home, 37,38,39,40: left, up, right, down
if(oEvent.keyCode == 229 || oEvent.keyCode == 13 || oEvent.altKey || oEvent.ctrlKey || (oEvent.keyCode >= 33 && oEvent.keyCode <= 40) || oEvent.keyCode == 16) return;
if(oEvent.keyCode == 229 || oEvent.keyCode == 13 || oEvent.altKey || oEvent.ctrlKey || (oEvent.keyCode >= 33 && oEvent.keyCode <= 40) || oEvent.keyCode == 16) return;
this._recordUndo(oEvent);
},
@ -3294,13 +3323,9 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({
_enableWYSIWYG : function(){
if (jQuery.browser.msie){
var fake = jQuery('<input type="text" style="position:absolute;width:1px;height:1px;left:-9px">');
jQuery(document.body).prepend(fake);
fake.focus();
this.doc.body.disabled = true;
this.doc.body.contentEditable = true;
setTimeout(function(){fake.remove()}, 100);
this.doc.body.removeAttribute('disabled');
} else {
this.doc.designMode = "on";
}
@ -5465,21 +5490,25 @@ xe.XE_XHTMLFormatter = $.Class({
// remove all useless styles
/*
sContent = sContent.replace(regex_meanless_css1, function(m0,m1,m2,m3){
m2 = m2.replace(regex_meanless_css2, '');
return '<'+m1+(m2?' style="'+m2+'"':'')+m3+'>';
});
*/
// remove all useless classes
/*
sContent = sContent.replace(regex_class, function(m0,m1,m2,m3,m4,m5){
var cls = jQuery.trim((m2 || m3 || m4 || "").replace(regex_class2, ''));
return '<'+(m1||"")+(cls?' class="'+cls+'"':'')+(m5||"")+'>';
});
*/
// remove all event handler
sContent = sContent.replace(regex_handler, '<$1$2>');
//sContent = sContent.replace(regex_handler, '<$1$2>');
// remove all id
//sContent = sContent.replace(regex_id, '<$1$2>');
@ -5521,6 +5550,7 @@ xe.XE_XHTMLFormatter = $.Class({
return '<'+m2+' '+m3+'>';
}
/*
if (replace_tags[m2]) {
stack.push({tag:m2, state:'deleted'});
@ -5602,6 +5632,7 @@ xe.XE_XHTMLFormatter = $.Class({
state = (jQuery.inArray(m2,allow_tags) < 0)?'deleted':'';
if (state == 'deleted') return '';
}
*/
stack.push({tag:m2, state:state});
} else {
@ -5737,8 +5768,11 @@ xe.XE_AutoSave = jQuery.Class({
},
$ON_MSG_APP_READY : function() {
var elSrl = jQuery(this.form._saved_doc_srl);
var elTitle = jQuery(this.form._saved_doc_title);
var elContent = jQuery(this.form._saved_doc_content);
var doc_srl = jQuery.trim(elSrl.val());
var title = jQuery.trim(elTitle.val());
var content = jQuery.trim(elContent.val());
@ -5746,6 +5780,7 @@ xe.XE_AutoSave = jQuery.Class({
if (confirm(this.form._saved_doc_message.value)) {
jQuery(this.form.title).val(title);
this.oApp.setIR(content);
if(typeof(editorGetAutoSavedDoc) == 'function') editorGetAutoSavedDoc(this.form);
} else {
editorRemoveSavedDoc();
}

View file

@ -2,10 +2,11 @@ if (!window.xe) xe = {};
xe.Editors = [];
function editorStart_xe(editor_sequence, primary_key, content_key, editor_height, colorset, content_style, content_font) {
function editorStart_xe(editor_sequence, primary_key, content_key, editor_height, colorset, content_style, content_font, content_font_size) {
if(typeof(colorset)=='undefined') colorset = 'white';
if(typeof(content_style)=='undefined') content_style = 'xeStyle';
if(typeof(content_font)=='undefined') content_font= '';
if(typeof(content_font_size)=='undefined') content_font_size= '';
var target_src = request_uri+'modules/editor/styles/'+content_style+'/editor.html';
@ -22,7 +23,7 @@ function editorStart_xe(editor_sequence, primary_key, content_key, editor_height
jQuery("#xpress-editor-"+editor_sequence).val(saved_content);
}
/*
/*
// remove procFilter
if(form.comment_srl){
form.onsubmit=function(){
@ -54,6 +55,7 @@ function editorStart_xe(editor_sequence, primary_key, content_key, editor_height
oEditor.getFrame = function(){ return oWYSIWYGIFrame;}
var content = form[content_key].value;
if(xFF && !content) content = '<p>&nbsp;</p>';
// src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경
content = content.replace(/(src=|href=|url\()("|\')*([^"\'\)]+)("|\'|\))*(\s|>)*/ig, function(m0,m1,m2,m3,m4,m5) {
@ -135,27 +137,30 @@ function editorStart_xe(editor_sequence, primary_key, content_key, editor_height
}
function load_proc() {
try {
var doc = oWYSIWYGIFrame.contentWindow.document, str;
if (doc.location == 'about:blank') throw 'blank';
try {
var doc = oWYSIWYGIFrame.contentWindow.document, str;
if (doc.location == 'about:blank') throw 'blank';
// get innerHTML
str = doc.body.innerHTML;
// get innerHTML
str = doc.body.innerHTML;
// register plugin
oEditor.registerPlugin(new xe.XE_EditingArea_WYSIWYG(oWYSIWYGIFrame));
oEditor.registerPlugin(new xe.XpressRangeManager(oWYSIWYGIFrame));
oEditor.registerPlugin(new xe.XE_ExecCommand(oWYSIWYGIFrame));
// register plugin
oEditor.registerPlugin(new xe.XE_EditingArea_WYSIWYG(oWYSIWYGIFrame));
oEditor.registerPlugin(new xe.XpressRangeManager(oWYSIWYGIFrame));
oEditor.registerPlugin(new xe.XE_ExecCommand(oWYSIWYGIFrame));
if(content_font && !doc.body.style.fontFamily) {
doc.body.style.fontFamily = content_font;
}
if(content_font_size && !doc.body.style.fontSize) {
doc.body.style.fontSize = content_font_size;
}
// run
oEditor.run();
} catch(e) {
setTimeout(load_proc, 0);
}
// run
oEditor.run();
} catch(e) {
setTimeout(load_proc, 0);
}
}
load_proc();
@ -168,7 +173,10 @@ function editorGetContentTextarea_xe(editor_sequence) {
if (!oEditor) return '';
return oEditor.getIR();
var str = oEditor.getIR();
if(!jQuery.trim(str.replace(/(&nbsp;|<\/?(p|br|span|div)([^>]+)?>)/ig, ''))) return '';
return str;
}
function editorGetIframe(srl) {
@ -188,6 +196,18 @@ function editorReplaceHTML(iframe_obj, content) {
editorRelKeys[srl]["pasteHTML"](content);
}
function editorGetAutoSavedDoc(form) {
var param = new Array();
param['mid'] = current_mid;
param['editor_sequence'] = form.getAttribute('editor_sequence')
setTimeout(function() {
var response_tags = new Array("error","message","editor_sequence","title","content","document_srl");
exec_xml('editor',"procEditorLoadSavedDocument", param, function(a,b,c) { editorRelKeys[param['editor_sequence']]['primary'].value = a['document_srl']; if(typeof(uploadSettingObj[param['editor_sequence']]) == 'object') editorUploadInit(uploadSettingObj[param['editor_sequence']], true); }, response_tags);
}, 0);
}
// WYSIWYG 모드를 저장하는 확장기능
xe.XE_GET_WYSYWYG_MODE = jQuery.Class({
name : "XE_GET_WYSYWYG_MODE",

View file

@ -12,6 +12,7 @@
<!-- 자동저장용 폼 -->
<!--@if($enable_autosave)-->
<input type="hidden" name="_saved_doc_srl" value="{$saved_doc->document_srl}" />
<input type="hidden" name="_saved_doc_title" value="{htmlspecialchars($saved_doc->title)}" />
<input type="hidden" name="_saved_doc_content" value="{htmlspecialchars($saved_doc->content)}" />
<input type="hidden" name="_saved_doc_message" value="{$lang->msg_load_saved_doc}" />
@ -77,7 +78,7 @@
<select id="uploaded_file_list_{$editor_sequence}" multiple="multiple" size="5" class="fileList"></select>
</div>
<div class="fileUploadControl">
<span id="swfUploadButton{$editor_sequence}"><span class="button"><button type="button">{$lang->edit->upload_file}</button></span></span>
<span id="swfUploadButton{$editor_sequence}" style="display : block; float:left;"><span class="button"><button type="button">{$lang->edit->upload_file}</button></span></span>
<a href="#" onclick="removeUploadedFile('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->delete_selected}</span></a>
<a href="#" onclick="insertUploadedFile('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->link_file}</span></a>
</div>

View file

@ -46,12 +46,21 @@ function editorStart_xq(editor, element, editor_sequence, content_key, editor_he
var saved_title = fo_obj._saved_doc_title.value;
var saved_content = fo_obj._saved_doc_content.value;
var saved_srl = fo_obj._saved_doc_srl.value;
if(saved_title || saved_content) {
// 자동저장된 문서 활용여부를 물은 후 사용하지 않는다면 자동저장된 문서 삭제
if(confirm(fo_obj._saved_doc_message.value)) {
if(typeof(fo_obj.title)!='undefined') fo_obj.title.value = saved_title;
editorRelKeys[editor_sequence]['content'].value = saved_content;
editorRelKeys[editor_sequence]['primary'].value = saved_srl;
xAddEventListener(window,"load",function() { var param = new Array();
param['editor_sequence'] = editor_sequence;
param['primary_key'] = primary_key;
param['mid'] = current_mid;
var response_tags = new Array("error","message","editor_sequence","key","title","content","document_srl");
exec_xml('editor',"procEditorLoadSavedDocument", param, null, response_tags);
});
} else {
editorRemoveSavedDoc();
}

View file

@ -2,7 +2,7 @@
/* NHN > UIT Center > Open UI Technology Team > Jeong Chan Myeong(dece24@nhncorp.com) */
html, body { height:100%; background-color:transparent; padding:0; margin:0;}
.xe_content{ color:#000; font-size:12px;}
.xe_content{ color:#000; font-size:12px; line-height:1.5;}
.xe_content blockquote.q1,
.xe_content blockquote.q2,
@ -19,3 +19,5 @@ html, body { height:100%; background-color:transparent; padding:0; margin:0;}
.xe_content blockquote.q5{ border:2px solid #707070;}
.xe_content blockquote.q6{ border:1px dashed #707070;}
.xe_content blockquote.q7{ border:1px dashed #707070; background:#fbfbfb;}
.xe_content p { margin:0; padding:0; }

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