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 RewriteEngine On
# reserve XE Layout Template Source File (*.html)
RewriteRule ^layouts/(.+)/(.+).html$ ./index.php [L]
# static files # static files
RewriteRule ^(.+)/files/member_extra_info/(.*) ./files/member_extra_info/$2 [L] RewriteRule ^(.+)/files/member_extra_info/(.*) ./files/member_extra_info/$2 [L]
RewriteRule ^(.+)/files/attach/(.*) ./files/attach/$2 [L] RewriteRule ^(.+)/files/attach/(.*) ./files/attach/$2 [L]

View file

@ -243,7 +243,6 @@
} }
} }
debugPrint($obj->content);
// 문서 번호 설정 // 문서 번호 설정
$document_srl = getNextSequence(); $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'); $oDocumentController = &getController('document');
$obj->allow_comment = 'Y'; $obj->allow_comment = 'Y';
@ -356,7 +355,7 @@
$obj->uploaded_count += $file_count; $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'); $oDocumentController = &getController('document');
$output = $oDocumentController->updateDocument($oDocument,$obj); $output = $oDocumentController->updateDocument($oDocument,$obj);

View file

@ -20,6 +20,7 @@
$target_acts = array('procBoardInsertDocument','procBoardInsertComment','procIssuetrackerInsertIssue','procIssuetrackerInsertHistory'); $target_acts = array('procBoardInsertDocument','procBoardInsertComment','procIssuetrackerInsertIssue','procIssuetrackerInsertHistory');
if($addon_info->apply_find_account=='apply') $target_acts[] = 'procMemberFindAccount'; 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>'); 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="zh-CN">비밀번호 찾기 적용</title>
<title xml:lang="jp">비밀번호 찾기 적용</title> <title xml:lang="jp">비밀번호 찾기 적용</title>
<title xml:lang="zh-TW">비밀번호 찾기 적용</title> <title xml:lang="zh-TW">비밀번호 찾기 적용</title>
<description xml:lang="ko">적용으로 하시면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description> <description xml:lang="ko">적용으로 하시면 비밀번호 찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="zh-CN">적용으로 하시면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description> <description xml:lang="zh-CN">적용으로 하시면 비밀번호 찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="jp">적용으로 하시면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description> <description xml:lang="jp">적용으로 하시면 비밀번호 찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<description xml:lang="zh-TW">적용으로 하시면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description> <description xml:lang="zh-TW">적용으로 하시면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다.</description>
<options value=""> <options value="">
<title xml:lang="ko">적용하지 않음</title> <title xml:lang="ko">적용하지 않음</title>
@ -96,5 +96,27 @@
<title xml:lang="zh-TW">적용</title> <title xml:lang="zh-TW">적용</title>
</options> </options>
</var> </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> </extra_vars>
</addon> </addon>

View file

@ -5,7 +5,7 @@
* @brief English Language Pack * @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( $lang->target_captcha = array(
"airplane" => "airplane", "airplane" => "airplane",
"apple" => "apple", "apple" => "apple",

View file

@ -445,7 +445,7 @@
// 변환 후 출력 // 변환 후 출력
if(strtolower($this->charset) == 'utf-8') print $content; 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(); exit();
} }

View file

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

View file

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

View file

@ -22,7 +22,7 @@
</description> </description>
<description xml:lang="en"> <description xml:lang="en">
This addon displays level icon in front of the user name when you are using the point system. 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>
<description xml:lang="ge"> <description xml:lang="ge">
Dieses Addon zeigt Level Icon vor dem Benutzernamen, wenn Sie die Punkte-System. 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 &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>
<description xml:lang="jp"> <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>
<description xml:lang="ru"> <description xml:lang="ru">
Этот аддон добавляет файл с именем &quot;rainbow.js&quot; в заголовки HTML, и тогда связанный текс приобретает эффект смены цвета, подобно радуге или хамелеону. Этот аддон добавляет файл с именем &quot;rainbow.js&quot; в заголовки HTML, и тогда связанный текс приобретает эффект смены цвета, подобно радуге или хамелеону.

View file

@ -2,14 +2,14 @@
* @brief 화면내에서 상위 영역보다 이미지가 크면 리사이즈를 하고 클릭시 원본을 보여줄수 있도록 변경 * @brief 화면내에서 상위 영역보다 이미지가 크면 리사이즈를 하고 클릭시 원본을 보여줄수 있도록 변경
**/ **/
(function($){ (function($){
var xScreen = null; var xScreen = null;
// 슬라이드를 위한 블랙 스크린을 만들거나 반환하는 함수 // 슬라이드를 위한 블랙 스크린을 만들거나 반환하는 함수
function getScreen() { function getScreen() {
var body = $(document.body); var body = $(document.body);
var controls, imgframe, closebtn, prevbtn, nextbtn; var controls, imgframe, closebtn, prevbtn, nextbtn;
// 스크린이 없으면 스크린을 만든다. // 스크린이 없으면 스크린을 만든다.
if (!xScreen) { if (!xScreen) {
// 검은 스크린 // 검은 스크린
@ -22,7 +22,7 @@ function getScreen() {
zIndex:500, zIndex:500,
opacity:0.5 opacity:0.5
}); });
// 이미지를 보여주고 컨트롤 버튼을 다룰 레이어 // 이미지를 보여주고 컨트롤 버튼을 다룰 레이어
controls = $("<div>") controls = $("<div>")
.attr("id","xe_gallery_controls") .attr("id","xe_gallery_controls")
@ -32,7 +32,7 @@ function getScreen() {
overflow:"hidden", overflow:"hidden",
zIndex:510 zIndex:510
}); });
// 닫기 버튼 // 닫기 버튼
closebtn = $("<img>") closebtn = $("<img>")
.attr("id", "xe_gallery_closebtn") .attr("id", "xe_gallery_closebtn")
@ -42,7 +42,7 @@ function getScreen() {
}) })
.click(function(){xScreen.xeHide()}) .click(function(){xScreen.xeHide()})
.appendTo(controls); .appendTo(controls);
// 이전 버튼 // 이전 버튼
prevbtn = $("<img>") prevbtn = $("<img>")
.attr("id", "xe_gallery_prevbtn") .attr("id", "xe_gallery_prevbtn")
@ -50,7 +50,7 @@ function getScreen() {
.css("left","10px") .css("left","10px")
.click(function(){xScreen.xePrev()}) .click(function(){xScreen.xePrev()})
.appendTo(controls); .appendTo(controls);
// 다음 버튼 // 다음 버튼
nextbtn = $("<img>") nextbtn = $("<img>")
.attr("id", "xe_gallery_nextbtn") .attr("id", "xe_gallery_nextbtn")
@ -58,7 +58,7 @@ function getScreen() {
.css("right","10px") .css("right","10px")
.click(function(){xScreen.xeNext()}) .click(function(){xScreen.xeNext()})
.appendTo(controls); .appendTo(controls);
// 버튼 공통 속성 // 버튼 공통 속성
controls.find("img") controls.find("img")
.attr({ .attr({
@ -73,7 +73,7 @@ function getScreen() {
zIndex : 530, zIndex : 530,
cursor : "pointer" cursor : "pointer"
}); });
// 이미지 홀더 // 이미지 홀더
imgframe = $("<img>") imgframe = $("<img>")
.attr("id", "xe_gallery_holder") .attr("id", "xe_gallery_holder")
@ -82,12 +82,12 @@ function getScreen() {
.appendTo(controls).draggable(); .appendTo(controls).draggable();
body.append(xScreen).append(controls); body.append(xScreen).append(controls);
// xScreen 객체를 확장한다. // xScreen 객체를 확장한다.
xScreen.xeShow = function() { xScreen.xeShow = function() {
var clientWidth = $(window).width(); var clientWidth = $(window).width();
var clientHeight = $(window).height(); var clientHeight = $(window).height();
$("#xe_gallery_controls,#xe_gallery_screen").css({ $("#xe_gallery_controls,#xe_gallery_screen").css({
display:"block", display:"block",
width : clientWidth + "px", width : clientWidth + "px",
@ -115,19 +115,19 @@ function getScreen() {
xScreen.xeMove = function(val) { xScreen.xeMove = function(val) {
var clientWidth = $(window).width(); var clientWidth = $(window).width();
var clientHeight = $(window).height(); var clientHeight = $(window).height();
this.index += val; this.index += val;
prevbtn.css("visibility", (this.index>0)?"visible":"hidden"); prevbtn.css("visibility", (this.index>0)?"visible":"hidden");
nextbtn.css("visibility", (this.index<this.list.size()-1)?"visible":"hidden"); nextbtn.css("visibility", (this.index<this.list.size()-1)?"visible":"hidden");
imgframe.attr("src", this.list.eq(this.index).attr("src")) imgframe.attr("src", this.list.eq(this.index).attr("src"))
.css({ .css({
left : Math.round( Math.max( (clientWidth-imgframe.width()-14)/2, 0 ) ) + "px", left : Math.round( Math.max( (clientWidth-imgframe.width()-14)/2, 0 ) ) + "px",
top : Math.round( Math.max( (clientHeight-imgframe.height()-14)/2, 0 ) ) + "px" top : Math.round( Math.max( (clientHeight-imgframe.height()-14)/2, 0 ) ) + "px"
}); });
}; };
// 스크린을 닫는 상황 // 스크린을 닫는 상황
$(document).scroll(xScreen.xeHide); $(document).scroll(xScreen.xeHide);
$(document).keydown(xScreen.xeHide); $(document).keydown(xScreen.xeHide);
@ -140,7 +140,7 @@ function getScreen() {
prevbtn = $("#xe_gallery_prevbtn"); prevbtn = $("#xe_gallery_prevbtn");
nextbtn = $("#xe_gallery_nextbtn"); nextbtn = $("#xe_gallery_nextbtn");
} }
return xScreen; return xScreen;
} }
@ -150,57 +150,79 @@ function slideshow(event) {
var imglist = container.find("img[rel=xe_gallery]"); var imglist = container.find("img[rel=xe_gallery]");
var currentIdx = $.inArray($(this).get(0), imglist.get()); var currentIdx = $.inArray($(this).get(0), imglist.get());
var xScreen = getScreen(); var xScreen = getScreen();
// 스크린을 보여주고 // 스크린을 보여주고
xScreen.list = imglist; xScreen.list = imglist;
xScreen.index = currentIdx; xScreen.index = currentIdx;
xScreen.xeShow(); xScreen.xeShow();
} }
$(document).ready(function(){ /* DOM READY */
var regx_skip = /(?:modules|addons|classes|common|layouts|libs|widgets)/i; $(function() {
var regx_parent = /(?:document|comment)_[0-9]+_[0-9]+/i; 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"); function doResize(contentWidth, count) {
if(!width) width = img.width(); // 재시도 회수 제한
img.attr("orig_width",width); if(!count) count = 0;
img.attr("width",1); if(count >= 10) return;
});
var offsetWidth = $(this).width();
$(this).find("img").each(function(){ var $img = this;
var img = $(this); var beforSize = {'width':$img.width(), 'height':$img.height()};
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");
// XE 내부 프로그램 또는 스킨의 이미지라면 이미지 리사이즈를 하지 않음
if ( !regx_skip.test(src) ) {
// 커스텀 속성 추가
img.attr("rel", "xe_gallery");
// 크기를 계산한다 // 이미지 사이즈를 구하지 못했을 때 재시도
if(width>offsetWidth) { if(!beforSize.width || !beforSize.height) {
img.attr("width",offsetWidth-10); setTimeout(function() {
img.attr("height",parseInt(offsetWidth/width*height,10)); doResize.call($img, contentWidth, ++count)
} }, 200);
return;
}
// 링크가 설정되어 있거나 onclick 이벤트가 부여되어 있으면 원본 보기를 하지 않음 // 리사이즈 필요 없으면 리턴
if ( !img.parent("a").size() && !img.attr("onclick") ) { if(beforSize.width <= contentWidth) return;
// 스타일 설정
img.css("cursor", "pointer"); var resize_ratio = contentWidth / beforSize.width;
// 클릭하면 슬라이드쇼 시작 $img
img.click(slideshow); .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); })(jQuery);

View file

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

View file

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

View file

@ -338,7 +338,7 @@
**/ **/
function checkSSO() { function checkSSO() {
// GET 접속이 아니거나 설치가 안되어 있으면 패스 // 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이 없다면 무조건 무사통과 // DB info에 설정된 Default URL이 없다면 무조건 무사통과
$default_url = trim($this->db_info->default_url); $default_url = trim($this->db_info->default_url);
@ -359,8 +359,11 @@
} else { } else {
// SSO 결과를 받는 경우 session_name() 세팅 // SSO 결과를 받는 경우 session_name() 세팅
if(Context::get('SSOID')) { if(Context::get('SSOID')) {
setcookie(session_name(), Context::get('SSOID'), 0, '/'); $session_name = Context::get('SSOID');
header("location:".getUrl('SSOID','')); setcookie(session_name(), $session_name);
$url = preg_replace('/([\?\&])$/','',str_replace('SSOID='.$session_name,'',Context::getRequestUrl()));
header("location:".$url);
return false; return false;
// SSO 결과를 요청 // SSO 결과를 요청
} else if($_COOKIE['sso']!=md5(Context::getRequestUri()) && !Context::get('SSOID')) { } else if($_COOKIE['sso']!=md5(Context::getRequestUri()) && !Context::get('SSOID')) {
@ -768,128 +771,139 @@
**/ **/
function _getUrl($num_args=0, $args_list=array(), $domain = null) { function _getUrl($num_args=0, $args_list=array(), $domain = null) {
static $site_module_info = 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)) { if($domain && isSiteID($domain)) {
$vid = $domain; $vid = $domain;
$domain = ''; $domain = '';
} }
// SiteID가 요청되지 않았다면 현재 site_module_info에서 SiteID 판별 // $domain, $vid값이 없을 경우(= 현재 사이트 정보를 이용함)
if(!$vid && $site_module_info->domain && isSiteID($site_module_info->domain)) { if(!$domain && !$vid) {
$vid = $site_module_info->domain; if($site_module_info->domain && isSiteID($site_module_info->domain)) $vid = $site_module_info->domain;
else $domain = $site_module_info->domain;
} }
if(!$domain) { // $domain값이 있을 경우 현재 요청된 도메인과 비교해서 동일할 경우 제거 그렇지 않으면 http 프로토콜을 제거하고 제일 뒤에 / 를 붙임
if($site_module_info->domain && !isSiteID($site_module_info->domain)) $domain = $site_module_info->domain; 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 { else {
if($this->db_info->default_url) $domain = $this->db_info->default_url; $domain = preg_replace('/^(http|https):\/\//i','', trim($domain));
else if(!$domain) $domain = Context::getRequestUri(); 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]=='') { if(!$this->get_vars || $args_list[0]=='') {
$get_vars = null; // 요청받은 변수가 있고 첫번째 인자가 '' 라서 초기화를 해야 할 경우 요청받은 변수를 정리
if(is_array($args_list) && $args_list[0]=='') { if(is_array($args_list) && $args_list[0]=='') array_shift($args_list);
array_shift($args_list); // 초기화를 원하지 않을 경우 GET 변수를 배열로 처리
$num_args = count($args_list);
}
} else { } else {
$get_vars = get_object_vars($this->get_vars); $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]; $key = $args_list[$i];
$val = trim($args_list[$i+1]); $val = trim($args_list[$i+1]);
// 값이 없으면 GET변수에서 해당 키를 제거
if(!isset($val)) { if(!isset($val)) {
unset($get_vars[$key]); unset($get_vars[$key]);
continue; continue;
} }
// 새로운 변수를 정리
$get_vars[$key] = $val; $get_vars[$key] = $val;
} }
unset($get_vars['vid']);
// 변수중 vid, rnd값 제거
unset($get_vars['rnd']); unset($get_vars['rnd']);
if(isset($get_vars['page'])&&$get_vars['page']<2) unset($get_vars['page']); if($vid) $get_vars['vid'] = $vid;
else unset($get_vars['vid']);
/* member module중의 쪽지함/친구 관리 기능이 communication 모듈로 이전하여 하위 호환성을 위한 act값 변경 */ if(count($get_vars)) {
if($get_vars['act'] == 'dispMemberFriend') $get_vars['act'] = 'dispCommunicationFriend'; foreach($get_vars as $key => $val) {
elseif($get_vars['act'] == 'dispMemberMessages') $get_vars['act'] = 'dispCommunicationMessages'; if(!trim($val)) unset($get_vars[$key]);
/* 기존의 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;
} }
} }
// rewrite 모듈을 사용하지 않고 인자의 값이 2개 이상이거나 rewrite모듈을 위한 인자로 적당하지 않을 경우 // action명이 변경되었던 것에 대해 호환성을 유지하기 위한 강제 값 변경
if($vid) $url = 'vid='.$vid; switch($get_vars['act']) {
foreach($get_vars as $key => $val) { case 'dispMemberFriend' : $get_vars['act'] = 'dispCommunicationFriend'; break;
if(!isset($val)) continue; case 'dispMemberMessages' : $get_vars['act'] = 'dispCommunicationMessages'; break;
if(is_array($val) && count($val)) { case 'dispDocumentAdminManageDocument' : $get_vars['act'] = 'dispDocumentManageDocument'; break;
foreach($val as $k => $v) { case 'dispModuleAdminSelectList' : $get_vars['act'] = 'dispModuleSelectList'; break;
$url .= ($url?'&':'').$key.'['.$k.']='.urlencode($v); }
// 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 * @brief 요청이 들어온 URL에서 argument를 제거하여 return
**/ **/
function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL, $domain = null) { function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL, $domain = null) {
static $url = array();
// HTTP Request가 아니면 패스 // HTTP Request가 아니면 패스
if(!isset($_SERVER['SERVER_PROTOCOL'])) return ; if(!isset($_SERVER['SERVER_PROTOCOL'])) return ;
static $url = array();
if(Context::get('_use_ssl') == "always") $ssl_mode = ENFORCE_SSL; if(Context::get('_use_ssl') == "always") $ssl_mode = ENFORCE_SSL;
if($domain) $domain_key = md5($domain); if($domain) $domain_key = md5($domain);
@ -930,7 +944,7 @@
if(Context::get("_http_port") && Context::get("_http_port") != 80) { if(Context::get("_http_port") && Context::get("_http_port") != 80) {
$url_info['port'] = Context::get("_http_port"); $url_info['port'] = Context::get("_http_port");
} }
else elseif($url_info['port']==80)
{ {
unset($url_info['port']); unset($url_info['port']);
} }

View file

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

View file

@ -110,13 +110,6 @@
//if($this->module && $module_info->module != $this->module) unset($module_info); //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이 없다면 기본 모듈을 찾아봄 // 역시 모듈을 못 찾았고 $module이 없다면 기본 모듈을 찾아봄
if(!$module_info && !$this->module) $module_info = $site_module_info; if(!$module_info && !$this->module) $module_info = $site_module_info;

View file

@ -86,11 +86,16 @@
// module model 객체 생성 // module model 객체 생성
$oModuleModel = &getModel('module'); $oModuleModel = &getModel('module');
// 사이트 관리자이면 로그인 정보의 is_admin 에 'Y'로 세팅
//if($oModuleModel->isSiteAdmin($logged_info)) $logged_info->is_admin = 'Y';
// XE에서 access, manager (== is_admin) 는 고정된 권한명이며 이와 관련된 권한 설정 // 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 권한이 없으면 권한 없음 표시 // 현재 모듈의 access 권한이 없으면 권한 없음 표시
//if(!$grant->access) return $this->stop("msg_not_permitted"); //if(!$grant->access) return $this->stop("msg_not_permitted");

View file

@ -1,30 +1,31 @@
/* Calendar */ @charset "utf-8";
.ui-calendar {display:none; padding:25px 15px 15px 15px; position:absolute; border:2px solid #737373; background:#fff; color:#333;} /* Calendar */
.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 span{ position:absolute; width:0; height:0; font-size:0; line-height:0; overflow:hidden; z-index:-1; visibility:hidden;} .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 table{ border:0; border-spacing:0; _width:200px;} .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 caption{ font-weight:bold; text-align:center; position:relative;} .ui-calendar table{ border:0; border-spacing:0; _width:200px;}
.ui-calendar caption span{ display:block; position:relative; padding:10px 0 15px 0; *zoom:1;} .ui-calendar caption{ font-weight:bold; text-align:center; position:relative;}
.ui-calendar caption .today{ font-size:11px; border:0; padding:0; border-bottom:1px solid; background:none; cursor:pointer;} .ui-calendar caption span{ display:block; position:relative; padding:10px 0 15px 0; *zoom:1;}
.ui-calendar caption .today span{text-decoration:underline;} .ui-calendar caption .today{ font-size:11px; border:0; padding:0; border-bottom:1px solid; background:none; cursor:pointer;}
.ui-calendar caption .navi{ position:absolute; top:10px; border:0; padding:0; width:17px; height:18px; background-color:transparent; background-image:url(./img/buttonPaginate.gif); background-repeat:no-repeat; cursor:pointer;} .ui-calendar caption .today span{text-decoration:underline;}
.ui-calendar caption .navi span{ position:absolute; width:0; height:0; overflow:hidden; font-size:0; line-height:0; z-index:-1; visibility:hidden;} .ui-calendar caption .navi{ position:absolute; top:10px; border:0; padding:0; width:17px; height:18px; background-color:transparent; background-image:url(./img/buttonPaginate.gif); background-repeat:no-repeat; cursor:pointer;}
.ui-calendar caption .navi.prev{ left:0; background-position:left top;} .ui-calendar caption .navi span{ position:absolute; width:0; height:0; overflow:hidden; font-size:0; line-height:0; z-index:-1; visibility:hidden;}
.ui-calendar caption .navi.next{ right:0; background-position:right top;} .ui-calendar caption .navi.prev{ left:0; background-position:left top;}
.ui-calendar th, .ui-calendar caption .navi.next{ right:0; background-position:right top;}
.ui-calendar td{ border:0; text-align:center;} .ui-calendar th,
.ui-calendar th{ color:#666; background:#f2f2f2; padding:3px 8px;} .ui-calendar td{ border:0; text-align:center;}
.ui-calendar td{ font-size:11px; padding:3px 8px;} .ui-calendar th{ color:#666; background:#f2f2f2; padding:3px 8px;}
.ui-calendar td button{ padding:0; border:0; background:none; cursor:pointer; width:20px; font-size:11px; font-family:Tahoma, Sans-serif;} .ui-calendar td{ font-size:11px; padding:3px 8px;}
.ui-calendar td button.today{ font-weight:bold;} .ui-calendar td button{ padding:0; border:0; background:none; cursor:pointer; width:20px; font-size:11px; font-family:Tahoma, Sans-serif;}
.ui-calendar td button.book, .ui-calendar td button.today{ font-weight:bold;}
.ui-calendar td button.active, .ui-calendar td button.book,
.ui-calendar tr.active button{ background:#ff4747; color:#fff;} .ui-calendar td button.active,
.ui-calendar .sun, .ui-calendar tr.active button{ background:#ff4747; color:#fff;}
.ui-calendar .sun button{ color:#ff1a1a;} .ui-calendar .sun,
.ui-calendar .sun button{ color:#ff1a1a;}
.ui-calendar table.month{ border-top:1px solid #f2f2f2; border-left:1px solid #f2f2f2;}
.ui-calendar table.month td{ border-right:1px solid #f2f2f2; border-bottom:1px solid #f2f2f2;} .ui-calendar table.month{ border-top:1px solid #f2f2f2; border-left:1px solid #f2f2f2;}
.ui-calendar table.month td button{ width:50px; color:#bababa;} .ui-calendar table.month td{ border-right:1px solid #f2f2f2; border-bottom:1px solid #f2f2f2;}
.ui-calendar table.month td button.past{ color:#333;} .ui-calendar table.month td button{ width:50px; color:#bababa;}
.ui-calendar table.month td button.active{ color:#fff;} .ui-calendar table.month td button.past{ color:#333;}
.ui-calendar table.month td button.active{ color:#fff;}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -7,7 +7,7 @@
* Request Argument에서 mid, act로 module 객체를 찾아서 생성하고 \n * Request Argument에서 mid, act로 module 객체를 찾아서 생성하고 \n
* 모듈 정보를 세팅함 * 모듈 정보를 세팅함
* *
* @mainpage 첫페이지 * @mainpage XpressEngine
* @section intro 소개 * @section intro 소개
* XE 오픈 프로젝트로 개발되는 오픈 소스입니다.\n * XE 오픈 프로젝트로 개발되는 오픈 소스입니다.\n
* 자세한 내용은 아래 링크를 참조하세요. * 자세한 내용은 아래 링크를 참조하세요.
@ -25,6 +25,7 @@
* GNU 일반 공중 사용 허가서는 프로그램과 함께 제공됩니다. 만약, 문서가 누락되어 있다면 자유 소프트웨어\n * GNU 일반 공중 사용 허가서는 프로그램과 함께 제공됩니다. 만약, 문서가 누락되어 있다면 자유 소프트웨어\n
* 재단으로 문의하시기 바랍니다. \n * 재단으로 문의하시기 바랍니다. \n
* (자유 소프트웨어 재단: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA) * (자유 소프트웨어 재단: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA)
*
**/ **/
/** /**
@ -45,18 +46,9 @@
$oContext->init(); $oContext->init();
/** /**
* @brief SSO 인증 확인이 불필요할때 모듈 동작 * @brief default_url 설정되어 있고 현재 url이 default_url과 다르면 SSO인증을 위한 rediret 시도 모듈 동작
**/ **/
if($oContext->checkSSO()) { if($oContext->checkSSO()) {
/**
* @brief ModuleHandler 객체를 생성/ 실행
*
* 모듈 핸들러는 Request Argument를 바탕으로 모듈을 찾아서\n
* 객체를 생성하고 기본 정보를 setting 해준다.\n
* ModuleHandler는 외에도 설치가 되어 있는지에 대한 체크를\n
* 하여 미설치시 Install 모듈을 실행하도록 한다\n
* 그리고 해당 모듈을 실행후 컨텐츠를 출력한다\n
**/
$oModuleHandler = new ModuleHandler(); $oModuleHandler = new ModuleHandler();
if($oModuleHandler->init()) { if($oModuleHandler->init()) {
$oModule = &$oModuleHandler->procModule(); $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 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{ 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{ list-style:none; position:relative; padding:3px 0 2px 8px; white-space:nowrap;}
.widgetTree ul li a, .widgetTree ul li .nav_tree_label,
.widgetTree ul li span.nav_tree_label{ position:relative; left:16px; _left /**/:0; top:0;} .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 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 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;} .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"> <form action="{getUrl()}" method="post" class="widgetSearch">
<fieldset> <fieldset>
<!--@if($vid)-->
<input type="hidden" name="vid" value="{$vid}" /> <input type="hidden" name="vid" value="{$vid}" />
<!--@end-->
<input type="hidden" name="mid" value="{$mid}" /> <input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="IS" /> <input type="hidden" name="act" value="IS" />
<input type="hidden" name="search_target" value="title" /> <input type="hidden" name="search_target" value="title" />

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -130,7 +130,7 @@
.boxModelControler .buttonArea{ padding:15px 0 0 0; text-align:center;} .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 { 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 .xButton span { position:relative; z-index:-1; visibility:hidden; }
#popup_content * { font-size:12px; } #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;} #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("../../install/lang")-->
<!--%import("../../module/tpl/js/module_admin.js",optimized=false)--> <!--%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/js/addon.js",optimized=false)-->
<!--%import("../../addon/tpl/filter/toggle_activate_addon.xml")--> <!--%import("../../addon/tpl/filter/toggle_activate_addon.xml")-->
@ -201,6 +202,19 @@
</tbody> </tbody>
</table> </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)--> <!--@if($news)-->
<h4 class="xeAdmin">{$lang->newest_news}</h4> <h4 class="xeAdmin">{$lang->newest_news}</h4>

View file

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

View file

@ -38,7 +38,7 @@
**/ **/
function getDefaultListConfig($module_srl) { 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) { foreach($virtual_vars as $key) {
$extra_vars[$key] = new ExtraItem($module_srl, -1, Context::getLang($key), $key, 'N', 'N', 'N', null); $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->cmd_manage_menu = 'Manage Menus';
$lang->list_target_item = 'Target Item'; $lang->list_target_item = 'Target Item';
$lang->list_display_item = 'Display Item'; $lang->list_display_item = 'Display Item';
$lang->summary = 'Summary';
$lang->thumbnail = 'Thumbnail';
$lang->last_post = 'Last post';
// Item // Item
$lang->search_result = 'Search Result'; $lang->search_result = 'Search Result';

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -11,6 +11,9 @@
$lang->cmd_manage_menu = '選單管理'; $lang->cmd_manage_menu = '選單管理';
$lang->list_target_item = '目標項目'; $lang->list_target_item = '目標項目';
$lang->list_display_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 { 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 .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 { 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 .author a { color:#3074a5; margin-right:.3em; text-decoration:none; }
.replyBox .voted { float:left; font-size:.9em; color:#AAAAAA; margin:0 .3em .5em 1em;} .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')--> <!--@if($grant->view && $module_info->default_style != 'blog')-->
<div class="boardSearch"> <div class="boardSearch">
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search"> <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="mid" value="{$mid}" />
<input type="hidden" name="category" value="{$category}" /> <input type="hidden" name="category" value="{$category}" />

View file

@ -142,8 +142,8 @@
<!-- 목록, 수정/삭제 버튼 --> <!-- 목록, 수정/삭제 버튼 -->
<div class="contentButton"> <div class="contentButton">
<!--@if($module_info->default_style != 'blog')--> <!--@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>{$lang->cmd_list}</span></a> <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--> <!--@end-->
<!--@if($oDocument->isEditable())--> <!--@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> <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"> <form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search" class="boardSearchForm">
<fieldset> <fieldset>
<legend>Board Search</legend> <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="mid" value="{$mid}" />
<input type="hidden" name="category" value="{$category}" /> <input type="hidden" name="category" value="{$category}" />

View file

@ -40,7 +40,7 @@
<p>&quot;{$lang->msg_is_secret}&quot;</p> <p>&quot;{$lang->msg_is_secret}&quot;</p>
<dl> <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> <dd><input type="password" name="password" id="cpw" class="inputText" /><span class="button red"><input type="submit" value="{$lang->cmd_input}" /></span></dd>
</dl> </dl>
@ -124,9 +124,9 @@
</div> </div>
<div class="boardNavigation"> <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"> <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> </div>
<!--@end--> <!--@end-->

View file

@ -1,6 +1,5 @@
<!--@if(!$form_include)--><!--#include("header.html")--><!--@end--> <!--@if(!$form_include)--><!--#include("header.html")--><!--@end-->
sadf
<div class="smallBox w400"> <div class="smallBox w400">
<div class="header"> <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 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> <span class="button"><input type="button" value="{$lang->cmd_back}" onclick="history.back(); return false;" /></span>
</th> </th>
</tr>
</table> </table>
</form> </form>

View file

@ -18,6 +18,7 @@
<input type="hidden" name="act" value="{$act}" /> <input type="hidden" name="act" value="{$act}" />
<select name="module_category_srl"> <select name="module_category_srl">
<option value="">{$lang->module_category}</option> <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)--> <!--@foreach($module_category as $key => $val)-->
<option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option> <option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end--> <!--@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><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>{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="{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> <td><a href="{getUrl('act','dispBoardAdminDeleteBoard','module_srl', $val->module_srl)}" class="buttonSet buttonDelete"><span>{$lang->cmd_delete}</span></a></td>
</tr> </tr>
<!--@end--> <!--@end-->

View file

@ -204,8 +204,8 @@
function getSummary($str_size = 50, $tail = '...') { function getSummary($str_size = 50, $tail = '...') {
$content = $this->getContent(false, false); $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> 등의 태그를 공백 문자로 치환 // </p>, </div>, </li> 등의 태그를 공백 문자로 치환
$content = str_replace(array('</p>', '</div>', '</li>'), ' ', $content); $content = str_replace(array('</p>', '</div>', '</li>'), ' ', $content);
@ -216,8 +216,8 @@
// < , > , " 를 치환 // < , > , " 를 치환
$content = str_replace(array('&lt;','&gt;','&quot;','&nbsp;'), array('<','>','"',' '), $content); $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)); $content = trim(cut_str($content, $str_size, $tail));
@ -255,7 +255,9 @@
} }
function getPermanentUrl() { 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() { 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; return $this->get('uploaded_count')? true : false;
} }
function getUploadedFiles() { function getUploadedFiles() {
if($this->isSecret() && !$this->isGranted()) return; if(($this->isSecret() && !$this->isAccessible()) && !$this->isGranted()) return;
if(!$this->get('uploaded_count')) return; if(!$this->get('uploaded_count')) return;
$oFileModel = &getModel('file'); $oFileModel = &getModel('file');

View file

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

View file

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

View file

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

View file

@ -30,7 +30,7 @@
$args->alias_srl = getNextSequence(); $args->alias_srl = getNextSequence();
$args->module_srl = $module_srl; $args->module_srl = $module_srl;
$args->document_srl = $document_srl; $args->document_srl = $document_srl;
$args->alias_title = $alias_title; $args->alias_title = urldecode($alias_title);
$query = "document.insertAlias"; $query = "document.insertAlias";
$output = executeQuery($query, $args); $output = executeQuery($query, $args);
return $output; return $output;
@ -218,7 +218,7 @@
// trigger 호출 (after) // trigger 호출 (after)
if($output->toBool()) { if($output->toBool()) {
$trigger_output = ModuleHandler::triggerCall('document.insertDocument', 'after', $obj); $trigger_output = ModuleHandler::triggerCall('document.insertDocument', 'after', $obj);
if(!$trigger_output->toBool()) { if(!$trigger_output->toBool()) {
$oDB->rollback(); $oDB->rollback();
return $trigger_output; return $trigger_output;
@ -501,6 +501,9 @@
return $output; return $output;
} }
// update category
if($oDocument->get('category_srl')) $this->updateCategoryCount($oDocument->get('module_srl'),$oDocument->get('category_srl'));
// commit // commit
$oDB->commit(); $oDB->commit();
@ -546,7 +549,7 @@
**/ **/
function insertDocumentExtraKey($module_srl, $var_idx, $var_name, $var_type, $var_is_required = 'N', $var_search = 'N', $var_default = '', $var_desc = '', $eid) { function insertDocumentExtraKey($module_srl, $var_idx, $var_name, $var_type, $var_is_required = 'N', $var_search = 'N', $var_default = '', $var_desc = '', $eid) {
if(!$module_srl || !$var_idx || !$var_name || !$var_type || !$eid) return new Object(-1,'msg_invalid_request'); if(!$module_srl || !$var_idx || !$var_name || !$var_type || !$eid) return new Object(-1,'msg_invalid_request');
$obj->module_srl = $module_srl; $obj->module_srl = $module_srl;
$obj->var_idx = $var_idx; $obj->var_idx = $var_idx;
$obj->var_name = $var_name; $obj->var_name = $var_name;
@ -555,14 +558,14 @@
$obj->var_search = $var_search=='Y'?'Y':'N'; $obj->var_search = $var_search=='Y'?'Y':'N';
$obj->var_default = $var_default; $obj->var_default = $var_default;
$obj->var_desc = $var_desc; $obj->var_desc = $var_desc;
$obj->eid = $eid; $obj->eid = $eid;
$output = executeQuery('document.getDocumentExtraKeys', $obj); $output = executeQuery('document.getDocumentExtraKeys', $obj);
if(!$output->data) return executeQuery('document.insertDocumentExtraKey', $obj); if(!$output->data) return executeQuery('document.insertDocumentExtraKey', $obj);
$output = executeQuery('document.updateDocumentExtraKey', $obj); $output = executeQuery('document.updateDocumentExtraKey', $obj);
// extra_vars에서 확장 변수 eid를 일괄 업데이트 // extra_vars에서 확장 변수 eid를 일괄 업데이트
$output = executeQuery('document.updateDocumentExtraVar', $obj); $output = executeQuery('document.updateDocumentExtraVar', $obj);
return $output; return $output;
} }
@ -586,13 +589,13 @@
function insertDocumentExtraVar($module_srl, $document_srl, $var_idx, $value, $eid = null, $lang_code = '') { function insertDocumentExtraVar($module_srl, $document_srl, $var_idx, $value, $eid = null, $lang_code = '') {
if(!$module_srl || !$document_srl || !$var_idx || !isset($value)) return new Object(-1,'msg_invalid_request'); if(!$module_srl || !$document_srl || !$var_idx || !isset($value)) return new Object(-1,'msg_invalid_request');
if(!$lang_code) $lang_code = Context::getLangType(); if(!$lang_code) $lang_code = Context::getLangType();
$obj->module_srl = $module_srl; $obj->module_srl = $module_srl;
$obj->document_srl = $document_srl; $obj->document_srl = $document_srl;
$obj->var_idx = $var_idx; $obj->var_idx = $var_idx;
$obj->value = $value; $obj->value = $value;
$obj->lang_code = $lang_code; $obj->lang_code = $lang_code;
$obj->eid = $eid; $obj->eid = $eid;
executeQuery('document.insertDocumentExtraVar', $obj); executeQuery('document.insertDocumentExtraVar', $obj);
} }
@ -609,7 +612,7 @@
$output = executeQuery('document.deleteDocumentExtraVars', $obj); $output = executeQuery('document.deleteDocumentExtraVars', $obj);
return $output; return $output;
} }
/** /**
* @brief 해당 document의 추천수 증가 * @brief 해당 document의 추천수 증가
@ -824,7 +827,7 @@
function updateCategoryCount($module_srl, $category_srl, $document_count = 0) { function updateCategoryCount($module_srl, $category_srl, $document_count = 0) {
// document model 객체 생성 // document model 객체 생성
$oDocumentModel = &getModel('document'); $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->category_srl = $category_srl;
$args->document_count = $document_count; $args->document_count = $document_count;
@ -998,7 +1001,13 @@
**/ **/
function procDocumentInsertCategory($args = null) { 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'); $oModuleModel = &getModel('module');
@ -1587,6 +1596,5 @@
$this->setError(-1); $this->setError(-1);
$this->setMessage('success_updated'); $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) { 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 = $this->getContent($add_popup_menu, $add_content_info, $resource_realpath, $add_xe_content_class);
$content = $oEditorController->transComponent($content);
return $content; return $content;
} }
@ -311,8 +312,8 @@
function getSummary($str_size = 50, $tail = '...') { function getSummary($str_size = 50, $tail = '...') {
$content = $this->getContent(false,false); $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> 등의 태그를 공백 문자로 치환 // </p>, </div>, </li> 등의 태그를 공백 문자로 치환
$content = str_replace(array('</p>', '</div>', '</li>'), ' ', $content); $content = str_replace(array('</p>', '</div>', '</li>'), ' ', $content);
@ -323,8 +324,8 @@
// < , > , " 를 치환 // < , > , " 를 치환
$content = str_replace(array('&lt;','&gt;','&quot;','&nbsp;'), array('<','>','"',' '), $content); $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)); $content = trim(cut_str($content, $str_size, $tail));
@ -376,7 +377,13 @@
} }
function getPermanentUrl() { 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() { function getTrackbackUrl() {
@ -465,9 +472,19 @@
if(!$output->toBool() || !count($output->data)) return; if(!$output->toBool() || !count($output->data)) return;
// 구해온 목록을 commentItem 객체로 만듬 // 구해온 목록을 commentItem 객체로 만듬
// 계층구조에 따라 부모글에 관리권한이 있으면 자식글에는 보기 권한을 줌
$accessible = array();
foreach($output->data as $key => $val) { foreach($output->data as $key => $val) {
$oCommentItem = new commentItem(); $oCommentItem = new commentItem();
$oCommentItem->setAttribute($val); $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; $comment_list[$val->comment_srl] = $oCommentItem;
} }
@ -557,7 +574,7 @@
$cnt = count($matches); $cnt = count($matches);
for($i=0;$i<$cnt;$i++) { for($i=0;$i<$cnt;$i++) {
$target_src = trim($matches[$i][2]); $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; if(preg_match('/\/(common|modules|widgets|addons|layouts)\//i', $target_src)) continue;
else { else {
if(!preg_match('/^(http|https):\/\//i',$target_src)) $target_src = Context::getRequestUri().$target_src; if(!preg_match('/^(http|https):\/\//i',$target_src)) $target_src = Context::getRequestUri().$target_src;

View file

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

View file

@ -97,7 +97,10 @@
} }
$oModuleModel = &getModel('module'); $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'; if(!isset($document_config->use_history)) $document_config->use_history = 'N';
Context::set('document_config', $document_config); Context::set('document_config', $document_config);

View file

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

View file

@ -7,5 +7,6 @@
</columns> </columns>
<conditions> <conditions>
<condition operation="equal" column="category_srl" var="category_srl" filter="number" notnull="notnull" /> <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> </conditions>
</query> </query>

View file

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

View file

@ -26,4 +26,4 @@
<navigation> <navigation>
<index var="sort_index" default="extra_keys.var_idx" order="asc" /> <index var="sort_index" default="extra_keys.var_idx" order="asc" />
</navigation> </navigation>
</query> </query>

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_linenumber = '行番号を隠す';
$lang->hidden_controls = 'ツールバーを隠す'; $lang->hidden_controls = 'ツールバーを隠す';
$lang->file_path = 'ファイルパス'; $lang->file_path = 'ファイルパス';
$lang->description = '説明'; $lang->description = '説明';
$lang->first_line = '開始する行番号'; $lang->first_line = '開始する行番号';

View file

@ -2,10 +2,10 @@
/** /**
* @class emoticon * @class emoticon
* @author zero (zero@nzeo.com) * @author zero (zero@nzeo.com)
* @brief 이모티콘 이미지 연결 컴포넌트 * @brief 이모티콘 이미지 연결 컴포넌트
**/ **/
class emoticon extends EditorHandler { class emoticon extends EditorHandler {
// editor_sequence 는 에디터에서 필수로 달고 다녀야 함.... // editor_sequence 는 에디터에서 필수로 달고 다녀야 함....
var $editor_sequence = 0; var $editor_sequence = 0;
@ -33,10 +33,10 @@
$this->add('emoticons', implode("\n",$list)); $this->add('emoticons', implode("\n",$list));
} }
/** /**
* @brief 재귀적으로 이모티콘이 법한 파일들을 하위 디렉토리까지 전부 검색한다. 8,000개까지는 테스트 해봤는데 스택오버프로우를 일으킬지 어떨지는 모르겠음.(2007.9.6, 베니) * @brief 재귀적으로 이모티콘이 법한 파일들을 하위 디렉토리까지 전부 검색한다. 8,000개까지는 테스트 해봤는데 스택오버프로우를 일으킬지 어떨지는 모르겠음.(2007.9.6, 베니)
**/ **/
function getEmoticons($path) { function getEmoticons($path) {
$emoticon_path = sprintf("%s/%s", $this->emoticon_path, $path); $emoticon_path = sprintf("%s/%s", $this->emoticon_path, $path);
$output = array(); $output = array();
@ -48,14 +48,20 @@
$oDir->close(); $oDir->close();
if(count($output)) asort($output); if(count($output)) asort($output);
return $output; return $output;
} }
/** /**
* @brief popup window요청시 popup window에 출력할 내용을 추가하면 된다 * @brief popup window요청시 popup window에 출력할 내용을 추가하면 된다
**/ **/
function getPopupContent() { 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); Context::set('emoticon_list', $emoticon_list);
// 첫번째 이모티콘 디렉토리의 이미지 파일을 구함 // 첫번째 이모티콘 디렉토리의 이미지 파일을 구함
@ -70,10 +76,10 @@
return $oTemplate->compile($tpl_path, $tpl_file); return $oTemplate->compile($tpl_path, $tpl_file);
} }
/** /**
* @brief 이모티콘의 경로 문제 해결을 하기 위해 추가하였다. (2007.9.6 베니) * @brief 이모티콘의 경로 문제 해결을 하기 위해 추가하였다. (2007.9.6 베니)
**/ **/
function transHTML($xml_obj) { function transHTML($xml_obj) {
$src = $xml_obj->attrs->src; $src = $xml_obj->attrs->src;
$alt = $xml_obj->attrs->alt; $alt = $xml_obj->attrs->alt;

View file

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

View file

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

View file

@ -58,6 +58,14 @@
$src = str_replace(array('&','"'), array('&amp;','&qout;'), $src); $src = str_replace(array('&','"'), array('&amp;','&qout;'), $src);
$src = str_replace('&amp;amp;', '&amp;', $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; if(!$alt) $alt = $src;
$attr_output = array(); $attr_output = array();

View file

@ -5,19 +5,19 @@
* @brief ウィジウィグエディターeditorモジュール > イメージリンクimage_linkコンポネント言語パッケージ * @brief ウィジウィグエディターeditorモジュール > イメージリンクimage_linkコンポネント言語パッケージ
**/ **/
$lang->image_url = "イメージパス"; $lang->image_url = 'イメージパス';
$lang->image_alt = "説明Alt入力"; $lang->image_alt = '説明Alt入力';
$lang->image_scale = "イメージサイズ"; $lang->image_scale = 'イメージサイズ';
$lang->image_align = "アライン位置"; $lang->image_align = 'アライン位置';
$lang->image_align_normal = "一段落"; $lang->image_align_normal = '一段落';
$lang->image_align_left = "左揃え"; $lang->image_align_left = '左揃え';
$lang->image_align_middle = "中央揃え"; $lang->image_align_middle = '中央揃え';
$lang->image_align_right = "右揃え"; $lang->image_align_right = '右揃え';
$lang->image_border = "ボーダー"; $lang->image_border = 'ボーダー';
$lang->image_margin = '外側の空白(Margin)'; $lang->image_margin = '外側の空白(Margin)';
$lang->urllink_open_window = "新しいウィンドウで開く"; $lang->urllink_open_window = '新しいウィンドウで開く';
$lang->about_url_link_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_width = "가로크기";
$lang->multimedia_height = "세로크기"; $lang->multimedia_height = "세로크기";
$lang->multimedia_auto_start = "자동시작"; $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"; if($auto_start!="true") $auto_start = "false";
else $auto_start = "true"; 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; $caption = $xml_obj->body;
$src = str_replace(array('&','"'), array('&amp;','&qout;'), $src); $src = str_replace(array('&','"'), array('&amp;','&qout;'), $src);
$src = str_replace('&amp;amp;', '&amp;', $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> <th scope="row"><div>{$lang->multimedia_auto_start}</div></th>
<td><input type="checkbox" id="multimedia_auto_start" value="Y" /></td> <td><input type="checkbox" id="multimedia_auto_start" value="Y" /></td>
</tr> </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> </table>
</div> </div>
<div id="popFooter"> <div id="popFooter">

View file

@ -14,6 +14,9 @@ function getMultimedia() {
var width = xWidth(node); var width = xWidth(node);
var height = xHeight(node); var height = xHeight(node);
var auto_start = node.getAttribute("auto_start"); var auto_start = node.getAttribute("auto_start");
var wmode = node.getAttribute("wmode");
var fo_obj = xGetElementById('fo');
xGetElementById("multimedia_url").value = url; xGetElementById("multimedia_url").value = url;
xGetElementById("multimedia_caption").value = caption; xGetElementById("multimedia_caption").value = caption;
@ -21,6 +24,9 @@ function getMultimedia() {
xGetElementById("multimedia_height").value = height-4; xGetElementById("multimedia_height").value = height-4;
if(auto_start=="true") xGetElementById("multimedia_auto_start").checked = true; 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) { function insertMultimedia(obj) {
@ -29,6 +35,9 @@ function insertMultimedia(obj) {
var url = xGetElementById("multimedia_url").value; var url = xGetElementById("multimedia_url").value;
url = url.replace(request_uri,''); url = url.replace(request_uri,'');
// url = encodeURI(url); // 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; var caption = xGetElementById("multimedia_caption").value;
@ -46,7 +55,7 @@ function insertMultimedia(obj) {
return; 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); opener.editorFocus(opener.editorPrevSrl);

View file

@ -1,26 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<module> <module>
<grants /> <grants />
<permissions /> <permissions />
<actions> <actions>
<action name="dispEditorPopup" type="view" standalone="true" /> <action name="dispEditorPopup" type="view" standalone="true" />
<action name="dispEditorComponentInfo" type="view" standalone="true" /> <action name="dispEditorComponentInfo" type="view" standalone="true" />
<action name="dispEditorAdminIndex" type="view" standalone="true" admin_index="true" /> <action name="dispEditorAdminIndex" type="view" standalone="true" admin_index="true" />
<action name="dispEditorAdminSetupComponent" type="view" standalone="true" /> <action name="dispEditorAdminSetupComponent" type="view" standalone="true" />
<action name="dispEditorAdminSkinColorset" type="view" standalone="true" /> <action name="dispEditorAdminSkinColorset" type="view" standalone="true" />
<action name="dispEditorPreview" type="view" /> <action name="dispEditorPreview" type="view" />
<action name="dispEditorSkinColorset" type="view" /> <action name="dispEditorSkinColorset" type="view" />
<action name="procEditorSaveDoc" type="controller" standalone="true" /> <action name="procEditorSaveDoc" type="controller" standalone="true" />
<action name="procEditorRemoveSavedDoc" type="controller" standalone="true" /> <action name="procEditorRemoveSavedDoc" type="controller" standalone="true" />
<action name="procEditorCall" type="controller" standalone="true" /> <action name="procEditorCall" type="controller" standalone="true" />
<action name="procEditorInsertModuleConfig" type="controller" standalone="true" /> <action name="procEditorInsertModuleConfig" type="controller" standalone="true" />
<action name="procEditorAdminEnableComponent" type="controller" standalone="true" /> <action name="procEditorAdminEnableComponent" type="controller" standalone="true" />
<action name="procEditorAdminDisableComponent" type="controller" standalone="true" /> <action name="procEditorAdminDisableComponent" type="controller" standalone="true" />
<action name="procEditorAdminMoveListOrder" type="controller" standalone="true" /> <action name="procEditorAdminMoveListOrder" type="controller" standalone="true" />
<action name="procEditorAdminSetupComponent" type="controller" standalone="true" /> <action name="procEditorAdminSetupComponent" type="controller" standalone="true" />
</actions>
</module> <action name="procEditorLoadSavedDocument" type="controller" standalone="true" />
</actions>
</module>

View file

@ -49,6 +49,15 @@
function checkUpdate() { function checkUpdate() {
$oModuleModel = &getModel('module'); $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 추가 // 2007. 10. 17 글의 입력(신규 or 수정)이 일어날때마다 자동 저장된 문서를 삭제하는 trigger 추가
if(!$oModuleModel->getTrigger('document.insertDocument', 'editor', 'controller', 'triggerDeleteSavedDoc', 'after')) return true; if(!$oModuleModel->getTrigger('document.insertDocument', 'editor', 'controller', 'triggerDeleteSavedDoc', 'after')) return true;
if(!$oModuleModel->getTrigger('document.updateDocument', '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로 독립 // 2009. 04. 14 editor component 변환 코드를 trigger로 독립
if(!$oModuleModel->getTrigger('display', 'editor', 'controller', 'triggerEditorComponentCompile', 'before')) return true; 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; return false;
} }
@ -69,6 +81,17 @@
$oModuleModel = &getModel('module'); $oModuleModel = &getModel('module');
$oModuleController = &getController('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 추가 // 2007. 10. 17 글의 입력(신규 or 수정)이 일어날때마다 자동 저장된 문서를 삭제하는 trigger 추가
if(!$oModuleModel->getTrigger('document.insertDocument', 'editor', 'controller', 'triggerDeleteSavedDoc', 'after')) if(!$oModuleModel->getTrigger('document.insertDocument', 'editor', 'controller', 'triggerDeleteSavedDoc', 'after'))
$oModuleController->insertTrigger('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')) if(!$oModuleModel->getTrigger('display', 'editor', 'controller', 'triggerEditorComponentCompile', 'before'))
$oModuleController->insertTrigger('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'); return new Object(0, 'success_updated');
} }

View file

@ -1,389 +1,446 @@
<?php <?php
/** /**
* @class editor * @class editor
* @author zero (zero@nzeo.com) * @author zero (zero@nzeo.com)
* @brief editor 모듈의 controller class * @brief editor 모듈의 controller class
**/ **/
class editorController extends editor { class editorController extends editor {
/** /**
* @brief 초기화 * @brief 초기화
**/ **/
function init() { function init() {
} }
/** /**
* @brief 자동 저장 * @brief 자동 저장
**/ **/
function procEditorSaveDoc() { function procEditorSaveDoc() {
$this->deleteSavedDoc(); $this->deleteSavedDoc(false);
$args->document_srl = Context::get('document_srl'); $args->document_srl = Context::get('document_srl');
$args->content = Context::get('content'); $args->content = Context::get('content');
$args->title = Context::get('title'); $args->title = Context::get('title');
$output = $this->doSaveDoc($args); $output = $this->doSaveDoc($args);
$this->setMessage('msg_auto_saved'); $this->setMessage('msg_auto_saved');
} }
/** /**
* @brief 자동저장된 문서 삭제 * @brief 자동저장된 문서 삭제
**/ **/
function procEditorRemoveSavedDoc() { function procEditorRemoveSavedDoc() {
$oEditorController = &getController('editor'); $oEditorController = &getController('editor');
$oEditorController->deleteSavedDoc(); $oEditorController->deleteSavedDoc(true);
} }
/** /**
* @brief 컴포넌트에서 ajax요청시 해당 컴포넌트의 method를 실행 * @brief 컴포넌트에서 ajax요청시 해당 컴포넌트의 method를 실행
**/ **/
function procEditorCall() { function procEditorCall() {
$component = Context::get('component'); $component = Context::get('component');
$method = Context::get('method'); $method = Context::get('method');
if(!$component) return new Object(-1, sprintf(Context::getLang('msg_component_is_not_founded'), $component)); if(!$component) return new Object(-1, sprintf(Context::getLang('msg_component_is_not_founded'), $component));
$oEditorModel = &getModel('editor'); $oEditorModel = &getModel('editor');
$oComponent = &$oEditorModel->getComponentObject($component); $oComponent = &$oEditorModel->getComponentObject($component);
if(!$oComponent->toBool()) return $oComponent; if(!$oComponent->toBool()) return $oComponent;
if(!method_exists($oComponent, $method)) return new Object(-1, sprintf(Context::getLang('msg_component_is_not_founded'), $component)); if(!method_exists($oComponent, $method)) return new Object(-1, sprintf(Context::getLang('msg_component_is_not_founded'), $component));
//$output = call_user_method($method, $oComponent); //$output = call_user_method($method, $oComponent);
//$output = call_user_func(array($oComponent, $method)); //$output = call_user_func(array($oComponent, $method));
if(method_exists($oComponent, $method)) $output = $oComponent->{$method}(); if(method_exists($oComponent, $method)) $output = $oComponent->{$method}();
else return new Object(-1,sprintf('%s method is not exists', $method)); else return new Object(-1,sprintf('%s method is not exists', $method));
if((is_a($output, 'Object') || is_subclass_of($output, 'Object')) && !$output->toBool()) return $output; if((is_a($output, 'Object') || is_subclass_of($output, 'Object')) && !$output->toBool()) return $output;
$this->setError($oComponent->getError()); $this->setError($oComponent->getError());
$this->setMessage($oComponent->getMessage()); $this->setMessage($oComponent->getMessage());
$vars = $oComponent->getVariables(); $vars = $oComponent->getVariables();
if(count($vars)) { if(count($vars)) {
foreach($vars as $key=>$val) $this->add($key, $val); foreach($vars as $key=>$val) $this->add($key, $val);
} }
} }
/** /**
* @brief 에디터의 모듈별 추가 확장 폼을 저장 * @brief 에디터의 모듈별 추가 확장 폼을 저장
**/ **/
function procEditorInsertModuleConfig() { function procEditorInsertModuleConfig() {
$module_srl = Context::get('target_module_srl'); $module_srl = Context::get('target_module_srl');
// 여러개의 모듈 일괄 설정일 경우 // 여러개의 모듈 일괄 설정일 경우
if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl); if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl);
else $module_srl = array($module_srl); else $module_srl = array($module_srl);
$editor_config = null; $editor_config = null;
$editor_config->editor_skin = Context::get('editor_skin'); $editor_config->editor_skin = Context::get('editor_skin');
$editor_config->comment_editor_skin = Context::get('comment_editor_skin'); $editor_config->comment_editor_skin = Context::get('comment_editor_skin');
$editor_config->content_style = Context::get('content_style'); $editor_config->content_style = Context::get('content_style');
$editor_config->content_font = Context::get('content_font'); $editor_config->content_font = Context::get('content_font');
if($editor_config->content_font) { if($editor_config->content_font) {
$font_list = array(); $font_list = array();
$fonts = explode(',',$editor_config->content_font); $fonts = explode(',',$editor_config->content_font);
for($i=0,$c=count($fonts);$i<$c;$i++) { for($i=0,$c=count($fonts);$i<$c;$i++) {
$font = trim(str_replace(array('"','\''),'',$fonts[$i])); $font = trim(str_replace(array('"','\''),'',$fonts[$i]));
if(!$font) continue; if(!$font) continue;
$font_list[] = $font; $font_list[] = $font;
} }
if(count($font_list)) $editor_config->content_font = '"'.implode('","',$font_list).'"'; if(count($font_list)) $editor_config->content_font = '"'.implode('","',$font_list).'"';
} }
$editor_config->sel_editor_colorset = Context::get('sel_editor_colorset'); $editor_config->content_font_size = Context::get('content_font_size');
$editor_config->sel_comment_editor_colorset = Context::get('sel_comment_editor_colorset'); $editor_config->sel_editor_colorset = Context::get('sel_editor_colorset');
$editor_config->sel_comment_editor_colorset = Context::get('sel_comment_editor_colorset');
$enable_html_grant = trim(Context::get('enable_html_grant'));
if($enable_html_grant) $editor_config->enable_html_grant = explode('|@|', $enable_html_grant); $enable_html_grant = trim(Context::get('enable_html_grant'));
else $editor_config->enable_html_grant = array(); if($enable_html_grant) $editor_config->enable_html_grant = explode('|@|', $enable_html_grant);
else $editor_config->enable_html_grant = array();
$enable_comment_html_grant = trim(Context::get('enable_comment_html_grant'));
if($enable_comment_html_grant) $editor_config->enable_comment_html_grant = explode('|@|', $enable_comment_html_grant); $enable_comment_html_grant = trim(Context::get('enable_comment_html_grant'));
else $editor_config->enable_comment_html_grant = array(); if($enable_comment_html_grant) $editor_config->enable_comment_html_grant = explode('|@|', $enable_comment_html_grant);
else $editor_config->enable_comment_html_grant = array();
$upload_file_grant = trim(Context::get('upload_file_grant'));
if($upload_file_grant) $editor_config->upload_file_grant = explode('|@|', $upload_file_grant); $upload_file_grant = trim(Context::get('upload_file_grant'));
else $editor_config->upload_file_grant = array(); if($upload_file_grant) $editor_config->upload_file_grant = explode('|@|', $upload_file_grant);
else $editor_config->upload_file_grant = array();
$comment_upload_file_grant = trim(Context::get('comment_upload_file_grant'));
if($comment_upload_file_grant) $editor_config->comment_upload_file_grant = explode('|@|', $comment_upload_file_grant); $comment_upload_file_grant = trim(Context::get('comment_upload_file_grant'));
else $editor_config->comment_upload_file_grant = array(); if($comment_upload_file_grant) $editor_config->comment_upload_file_grant = explode('|@|', $comment_upload_file_grant);
else $editor_config->comment_upload_file_grant = array();
$enable_default_component_grant = trim(Context::get('enable_default_component_grant'));
if($enable_default_component_grant) $editor_config->enable_default_component_grant = explode('|@|', $enable_default_component_grant); $enable_default_component_grant = trim(Context::get('enable_default_component_grant'));
else $editor_config->enable_default_component_grant = array(); if($enable_default_component_grant) $editor_config->enable_default_component_grant = explode('|@|', $enable_default_component_grant);
else $editor_config->enable_default_component_grant = array();
$enable_comment_default_component_grant = trim(Context::get('enable_comment_default_component_grant'));
if($enable_comment_default_component_grant) $editor_config->enable_comment_default_component_grant = explode('|@|', $enable_comment_default_component_grant); $enable_comment_default_component_grant = trim(Context::get('enable_comment_default_component_grant'));
else $editor_config->enable_comment_default_component_grant = array(); if($enable_comment_default_component_grant) $editor_config->enable_comment_default_component_grant = explode('|@|', $enable_comment_default_component_grant);
else $editor_config->enable_comment_default_component_grant = array();
$enable_component_grant = trim(Context::get('enable_component_grant'));
if($enable_component_grant) $editor_config->enable_component_grant = explode('|@|', $enable_component_grant); $enable_component_grant = trim(Context::get('enable_component_grant'));
else $editor_config->enable_component_grant = array(); if($enable_component_grant) $editor_config->enable_component_grant = explode('|@|', $enable_component_grant);
else $editor_config->enable_component_grant = array();
$enable_comment_component_grant = trim(Context::get('enable_comment_component_grant'));
if($enable_comment_component_grant) $editor_config->enable_comment_component_grant = explode('|@|', $enable_comment_component_grant); $enable_comment_component_grant = trim(Context::get('enable_comment_component_grant'));
else $editor_config->enable_comment_component_grant = array(); if($enable_comment_component_grant) $editor_config->enable_comment_component_grant = explode('|@|', $enable_comment_component_grant);
else $editor_config->enable_comment_component_grant = array();
$editor_config->editor_height = (int)Context::get('editor_height');
$editor_config->editor_height = (int)Context::get('editor_height');
$editor_config->comment_editor_height = (int)Context::get('comment_editor_height');
$editor_config->comment_editor_height = (int)Context::get('comment_editor_height');
$editor_config->enable_autosave = Context::get('enable_autosave');
$editor_config->enable_autosave = Context::get('enable_autosave');
if($editor_config->enable_autosave != 'Y') $editor_config->enable_autosave = 'N';
if($editor_config->enable_autosave != 'Y') $editor_config->enable_autosave = 'N';
$oModuleController = &getController('module');
for($i=0;$i<count($module_srl);$i++) { $oModuleController = &getController('module');
$srl = trim($module_srl[$i]); for($i=0;$i<count($module_srl);$i++) {
if(!$srl) continue; $srl = trim($module_srl[$i]);
$oModuleController->insertModulePartConfig('editor',$srl,$editor_config); if(!$srl) continue;
} $oModuleController->insertModulePartConfig('editor',$srl,$editor_config);
}
$this->setError(-1);
$this->setMessage('success_updated'); $this->setError(-1);
} $this->setMessage('success_updated');
}
/**
* @brief 에디터컴포넌트의 코드를 결과물로 변환 + 문서서식 style 지정 /**
**/ * @brief 에디터컴포넌트의 코드를 결과물로 변환 + 문서서식 style 지정
function triggerEditorComponentCompile(&$content) { **/
if(Context::getResponseMethod()!='HTML') return new Object(); function triggerEditorComponentCompile(&$content) {
if(Context::getResponseMethod()!='HTML') return new Object();
$module_info = Context::get('module_info');
$module_srl = $module_info->module_srl; $module_info = Context::get('module_info');
if($module_srl) { $module_srl = $module_info->module_srl;
$oEditorModel = &getModel('editor'); if($module_srl) {
$editor_config = $oEditorModel->getEditorConfig($module_srl); $oEditorModel = &getModel('editor');
$content_style = $editor_config->content_style; $editor_config = $oEditorModel->getEditorConfig($module_srl);
if($content_style) { $content_style = $editor_config->content_style;
$path = _XE_PATH_.'modules/editor/styles/'.$content_style.'/'; if($content_style) {
if(is_dir($path) && file_exists($path.'style.ini')) { $path = _XE_PATH_.'modules/editor/styles/'.$content_style.'/';
$ini = file($path.'style.ini'); if(is_dir($path) && file_exists($path.'style.ini')) {
for($i=0,$c=count($ini);$i<$c;$i++) { $ini = file($path.'style.ini');
$file = trim($ini[$i]); for($i=0,$c=count($ini);$i<$c;$i++) {
if(!$file) continue; $file = trim($ini[$i]);
if(preg_match('/\.css$/i',$file)) Context::addCSSFile('./modules/editor/styles/'.$content_style.'/'.$file, false); if(!$file) continue;
elseif(preg_match('/\.js/i',$file)) Context::addJsFile('./modules/editor/styles/'.$content_style.'/'.$file, false); if(preg_match('/\.css$/i',$file)) Context::addCSSFile('./modules/editor/styles/'.$content_style.'/'.$file, false);
} elseif(preg_match('/\.js/i',$file)) Context::addJsFile('./modules/editor/styles/'.$content_style.'/'.$file, false);
} }
} }
$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 = $editor_config->content_font;
} $content_font_size = $editor_config->content_font_size;
if($content_font || $content_font_size) {
$content = $this->transComponent($content); $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>';
* @brief 에디터 컴포넌트코드를 결과물로 변환 Context::addHtmlHeader($buff);
**/ }
function transComponent($content) { }
$content = preg_replace_callback('!<div([^\>]*)editor_component=([^\>]*)>(.*?)\<\/div\>!is', array($this,'transEditorComponent'), $content);
$content = preg_replace_callback('!<img([^\>]*)editor_component=([^\>]*?)\>!is', array($this,'transEditorComponent'), $content); $content = $this->transComponent($content);
return $content; }
}
/**
/** * @brief 에디터 컴포넌트코드를 결과물로 변환
* @brief 내용의 에디터 컴포넌트 코드를 변환 **/
**/ function transComponent($content) {
function transEditorComponent($matches) { $content = preg_replace_callback('!<div([^\>]*)editor_component=([^\>]*)>(.*?)\<\/div\>!is', array($this,'transEditorComponent'), $content);
$script = sprintf(' %s editor_component=%s', $matches[1], $matches[2]); $content = preg_replace_callback('!<img([^\>]*)editor_component=([^\>]*?)\>!is', array($this,'transEditorComponent'), $content);
$script = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', fixQuotation, $script); return $content;
preg_match_all('/([a-z0-9\-\_]+)\=\"([^\"]+)\"/is', $script, $m); }
for($i=0,$c=count($m[0]);$i<$c;$i++) {
$xml_obj->attrs->{$m[1][$i]} = $m[2][$i]; /**
} * @brief 내용의 에디터 컴포넌트 코드를 변환
$xml_obj->body = $matches[3]; **/
function transEditorComponent($matches) {
if(!$xml_obj->attrs->editor_component) return $matches[0]; $script = sprintf(' %s editor_component=%s', $matches[1], $matches[2]);
$script = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', fixQuotation, $script);
// component::transHTML() 을 이용하여 변환된 코드를 받음 preg_match_all('/([a-z0-9\-\_]+)\=\"([^\"]+)\"/is', $script, $m);
$oEditorModel = &getModel('editor'); for($i=0,$c=count($m[0]);$i<$c;$i++) {
$oComponent = &$oEditorModel->getComponentObject($xml_obj->attrs->editor_component, 0); $xml_obj->attrs->{$m[1][$i]} = $m[2][$i];
if(!is_object($oComponent)||!method_exists($oComponent, 'transHTML')) return $matches[0]; }
$xml_obj->body = $matches[3];
return $oComponent->transHTML($xml_obj);
} if(!$xml_obj->attrs->editor_component) return $matches[0];
// component::transHTML() 을 이용하여 변환된 코드를 받음
/** $oEditorModel = &getModel('editor');
* @brief 자동 저장 $oComponent = &$oEditorModel->getComponentObject($xml_obj->attrs->editor_component, 0);
**/ if(!is_object($oComponent)||!method_exists($oComponent, 'transHTML')) return $matches[0];
function doSaveDoc($args) {
return $oComponent->transHTML($xml_obj);
if(Context::get('is_logged')) { }
$logged_info = Context::get('logged_info');
$args->member_srl = $logged_info->member_srl;
} else { /**
$args->ipaddress = $_SERVER['REMOTE_ADDR']; * @brief 자동 저장
} **/
function doSaveDoc($args) {
// 저장
return executeQuery('editor.insertSavedDoc', $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 {
* @brief 게시글의 입력/수정이 일어났을 경우 자동 저장문서를 제거하는 trigger $args->ipaddress = $_SERVER['REMOTE_ADDR'];
**/ }
function triggerDeleteSavedDoc(&$obj) { // module_srl이 없으면 현재 모듈
$this->deleteSavedDoc(); if(!$args->module_srl) {
return new Object(); $args->module_srl = Context::get('module_srl');
} }
if(!$args->module_srl) {
/** $current_module_info = Context::get('current_module_info');
* @brief 자동 저장된 글을 삭제 $args->module_srl = $current_module_info->module_srl;
* 현재 접속한 사용자를 기준 }
**/
function deleteSavedDoc() { // 저장
if(Context::get('is_logged')) { return executeQuery('editor.insertSavedDoc', $args);
$logged_info = Context::get('logged_info'); }
$args->member_srl = $logged_info->member_srl;
} else { /**
$args->ipaddress = $_SERVER['REMOTE_ADDR']; * @brief 자동 저장글 Srl 로드 - XE 이전 버전 사용자를 위함.
} **/
function procEditorLoadSavedDocument() {
// 일단 이전 저장본 삭제 $editor_sequence = Context::get('editor_sequence');
return executeQuery('editor.deleteSavedDoc', $args); $primary_key = Context::get('primary_key');
} $oEditorModel = &getModel('editor');
$oFileController = &getController('file');
/**
* @brief 가상 사이트에서 사용된 에디터 컴포넌트 정보를 제거 $saved_doc = $oEditorModel->getSavedDoc(null);
**/
function removeEditorConfig($site_srl) { $oFileController->setUploadInfo($editor_sequence, $saved_doc->document_srl);
$args->site_srl = $site_srl; $vars = $this->getVariables();
executeQuery('editor.deleteSiteComponent', $args); $this->add("editor_sequence", $editor_sequence);
} $this->add("key", $primary_key);
$this->add("title", $saved_doc->title);
/** $this->add("content", $saved_doc->content);
* @brief 에디터 컴포넌트 목록 캐싱 (editorModel::getComponentList) $this->add("document_srl", $saved_doc->document_srl);
* 에디터 컴포넌트 목록의 경우 DB query + Xml Parsing 때문에 캐싱 파일을 이용하도록 }
**/
function makeCache($filter_enabled = true, $site_srl) {
$oEditorModel = &getModel('editor'); /**
* @brief 게시글의 입력/수정이 일어났을 경우 자동 저장문서를 제거하는 trigger
if($filter_enabled) $args->enabled = "Y"; **/
function triggerDeleteSavedDoc(&$obj) {
if($site_srl) { $this->deleteSavedDoc(false);
$args->site_srl = $site_srl; return new Object();
$output = executeQuery('editor.getSiteComponentList', $args); }
} else $output = executeQuery('editor.getComponentList', $args);
$db_list = $output->data; /**
* @brief 자동 저장된 글을 삭제
// 파일목록을 구함 * 현재 접속한 사용자를 기준
$downloaded_list = FileHandler::readDir(_XE_PATH_.'modules/editor/components'); **/
function deleteSavedDoc($mode = false) {
// 로그인 여부 및 소속 그룹 구함 if(Context::get('is_logged')) {
$is_logged = Context::get('is_logged'); $logged_info = Context::get('logged_info');
if($is_logged) { $args->member_srl = $logged_info->member_srl;
$logged_info = Context::get('logged_info'); } else {
if($logged_info->group_list && is_array($logged_info->group_list)) { $args->ipaddress = $_SERVER['REMOTE_ADDR'];
$group_list = array_keys($logged_info->group_list); }
} else $group_list = array(); $args->module_srl = Context::get('module_srl');
} // module_srl이 없으면 현재 모듈
if(!$args->module_srl) {
// DB 목록을 loop돌면서 xml정보까지 구함 $current_module_info = Context::get('current_module_info');
if(!is_array($db_list)) $db_list = array($db_list); $args->module_srl = $current_module_info->module_srl;
foreach($db_list as $component) { }
if(in_array($component->component_name, array('colorpicker_text','colorpicker_bg'))) continue;
// 자동저장된 값이 혹시 이미 등록된 글인지 확인
$component_name = $component->component_name; $output = executeQuery('editor.getSavedDocument', $args);
if(!$component_name) continue; $saved_doc = $output->data;
if(!$saved_doc) return;
if(!in_array($component_name, $downloaded_list)) continue;
$oDocumentModel = &getModel('document');
unset($xml_info); $oSaved = $oDocumentModel->getDocument($saved_doc->document_srl);
$xml_info = $oEditorModel->getComponentXmlInfo($component_name); if(!$oSaved->isExists()) {
$xml_info->enabled = $component->enabled; if($mode) {
$output = executeQuery('editor.getSavedDocument', $args);
if($component->extra_vars) { $output = ModuleHandler::triggerCall('editor.deleteSavedDoc', 'after', $saved_doc);
$extra_vars = unserialize($component->extra_vars); }
}
// 사용권한이 있으면 권한 체크
if($extra_vars->target_group) { // 일단 이전 저장본 삭제
// 사용권한이 체크되어 있는데 로그인이 되어 있지 않으면 무조건 사용 중지 return executeQuery('editor.deleteSavedDoc', $args);
if(!$is_logged) continue; }
// 대상 그룹을 구해서 현재 로그인 사용자의 그룹과 비교 /**
$target_group = $extra_vars->target_group; * @brief 가상 사이트에서 사용된 에디터 컴포넌트 정보를 제거
unset($extra_vars->target_group); **/
function removeEditorConfig($site_srl) {
$is_granted = false; $args->site_srl = $site_srl;
foreach($group_list as $group_srl) { executeQuery('editor.deleteSiteComponent', $args);
if(in_array($group_srl, $target_group)) { }
$is_granted = true;
break; /**
} * @brief 에디터 컴포넌트 목록 캐싱 (editorModel::getComponentList)
} * 에디터 컴포넌트 목록의 경우 DB query + Xml Parsing 때문에 캐싱 파일을 이용하도록
if(!$is_granted) continue; **/
} function makeCache($filter_enabled = true, $site_srl) {
$oEditorModel = &getModel('editor');
// 대상 모듈이 있으면 체크
if($extra_vars->mid_list && count($extra_vars->mid_list) && Context::get('mid')) { if($filter_enabled) $args->enabled = "Y";
if(!in_array(Context::get('mid'), $extra_vars->mid_list)) continue;
} if($site_srl) {
$args->site_srl = $site_srl;
// 에디터 컴포넌트의 설정 정보를 체크 $output = executeQuery('editor.getSiteComponentList', $args);
if($xml_info->extra_vars) { } else $output = executeQuery('editor.getComponentList', $args);
foreach($xml_info->extra_vars as $key => $val) { $db_list = $output->data;
$xml_info->extra_vars->{$key}->value = $extra_vars->{$key};
} // 파일목록을 구함
} $downloaded_list = FileHandler::readDir(_XE_PATH_.'modules/editor/components');
}
// 로그인 여부 및 소속 그룹 구함
$component_list->{$component_name} = $xml_info; $is_logged = Context::get('is_logged');
if($is_logged) {
// 버튼, 아이콘 이미지 구함 $logged_info = Context::get('logged_info');
$icon_file = _XE_PATH_.'modules/editor/components/'.$component_name.'/icon.gif'; if($logged_info->group_list && is_array($logged_info->group_list)) {
$component_icon_file = _XE_PATH_.'modules/editor/components/'.$component_name.'/component_icon.gif'; $group_list = array_keys($logged_info->group_list);
if(file_exists($icon_file)) $component_list->{$component_name}->icon = true; } else $group_list = array();
if(file_exists($component_icon_file)) $component_list->{$component_name}->component_icon = true; }
}
// DB 목록을 loop돌면서 xml정보까지 구함
// enabled만 체크하도록 하였으면 그냥 return if(!is_array($db_list)) $db_list = array($db_list);
if($filter_enabled) { foreach($db_list as $component) {
$cache_file = $oEditorModel->getCacheFile($filter_enabled, $site_srl); if(in_array($component->component_name, array('colorpicker_text','colorpicker_bg'))) continue;
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); $component_list = unserialize("%s"); ?>', str_replace('"','\\"',serialize($component_list)));
FileHandler::writeFile($cache_file, $buff); $component_name = $component->component_name;
return $component_list; if(!$component_name) continue;
}
if(!in_array($component_name, $downloaded_list)) continue;
// 다운로드된 목록의 xml_info를 마저 구함
foreach($downloaded_list as $component_name) { unset($xml_info);
if(in_array($component_name, array('colorpicker_text','colorpicker_bg'))) continue; $xml_info = $oEditorModel->getComponentXmlInfo($component_name);
$xml_info->enabled = $component->enabled;
// 설정된 것이라면 패스
if($component_list->{$component_name}) continue; if($component->extra_vars) {
$extra_vars = unserialize($component->extra_vars);
// DB에 입력
$oEditorController = &getAdminController('editor'); // 사용권한이 있으면 권한 체크
$oEditorController->insertComponent($component_name, false, $site_srl); if($extra_vars->target_group) {
// 사용권한이 체크되어 있는데 로그인이 되어 있지 않으면 무조건 사용 중지
// component_list에 추가 if(!$is_logged) continue;
unset($xml_info);
$xml_info = $oEditorModel->getComponentXmlInfo($component_name); // 대상 그룹을 구해서 현재 로그인 사용자의 그룹과 비교
$xml_info->enabled = 'N'; $target_group = $extra_vars->target_group;
unset($extra_vars->target_group);
$component_list->{$component_name} = $xml_info;
} $is_granted = false;
foreach($group_list as $group_srl) {
$cache_file = $oEditorModel->getCacheFile($filter_enabled, $site_srl); if(in_array($group_srl, $target_group)) {
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); $component_list = unserialize("%s"); ?>', str_replace('"','\\"',serialize($component_list))); $is_granted = true;
FileHandler::writeFile($cache_file, $buff); break;
}
return $component_list; }
} if(!$is_granted) continue;
}
/**
* @brief 캐시 파일 삭제 // 대상 모듈이 있으면 체크
**/ if($extra_vars->mid_list && count($extra_vars->mid_list) && Context::get('mid')) {
function removeCache($site_srl = 0) { if(!in_array(Context::get('mid'), $extra_vars->mid_list)) continue;
$oEditorModel = &getModel('editor'); }
FileHandler::removeFile($oEditorModel->getCacheFile(true, $site_srl));
FileHandler::removeFile($oEditorModel->getCacheFile(false, $site_srl)); // 에디터 컴포넌트의 설정 정보를 체크
} if($xml_info->extra_vars) {
} foreach($xml_info->extra_vars as $key => $val) {
?> $xml_info->extra_vars->{$key}->value = $extra_vars->{$key};
}
}
}
$component_list->{$component_name} = $xml_info;
// 버튼, 아이콘 이미지 구함
$icon_file = _XE_PATH_.'modules/editor/components/'.$component_name.'/icon.gif';
$component_icon_file = _XE_PATH_.'modules/editor/components/'.$component_name.'/component_icon.gif';
if(file_exists($icon_file)) $component_list->{$component_name}->icon = true;
if(file_exists($component_icon_file)) $component_list->{$component_name}->component_icon = true;
}
// enabled만 체크하도록 하였으면 그냥 return
if($filter_enabled) {
$cache_file = $oEditorModel->getCacheFile($filter_enabled, $site_srl);
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); $component_list = unserialize("%s"); ?>', str_replace('"','\\"',serialize($component_list)));
FileHandler::writeFile($cache_file, $buff);
return $component_list;
}
// 다운로드된 목록의 xml_info를 마저 구함
foreach($downloaded_list as $component_name) {
if(in_array($component_name, array('colorpicker_text','colorpicker_bg'))) continue;
// 설정된 것이라면 패스
if($component_list->{$component_name}) continue;
// DB에 입력
$oEditorController = &getAdminController('editor');
$oEditorController->insertComponent($component_name, false, $site_srl);
// component_list에 추가
unset($xml_info);
$xml_info = $oEditorModel->getComponentXmlInfo($component_name);
$xml_info->enabled = 'N';
$component_list->{$component_name} = $xml_info;
}
$cache_file = $oEditorModel->getCacheFile($filter_enabled, $site_srl);
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); $component_list = unserialize("%s"); ?>', str_replace('"','\\"',serialize($component_list)));
FileHandler::writeFile($cache_file, $buff);
return $component_list;
}
/**
* @brief 캐시 파일 삭제
**/
function removeCache($site_srl = 0) {
$oEditorModel = &getModel('editor');
FileHandler::removeFile($oEditorModel->getCacheFile(true, $site_srl));
FileHandler::removeFile($oEditorModel->getCacheFile(false, $site_srl));
}
}
?>

File diff suppressed because it is too large Load diff

View file

@ -21,7 +21,7 @@
Context::addCssFile($this->module_path."tpl/css/editor.css"); 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'); $component = Context::get('component');
$site_module_info = Context::get('site_module_info'); $site_module_info = Context::get('site_module_info');

View file

@ -18,6 +18,7 @@
$lang->component_grant = 'Permission Setting'; $lang->component_grant = 'Permission Setting';
$lang->content_style = 'Content Style'; $lang->content_style = 'Content Style';
$lang->content_font = 'Content Font'; $lang->content_font = 'Content Font';
$lang->content_font_size = 'Content Font Size';
$lang->about_component = 'About component'; $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)'; $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->editor_height = 'Height of Editor';
$lang->about_editor_skin = 'You may select the skin of editor.'; $lang->about_editor_skin = 'You may select the skin of editor.';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다'; $lang->about_content_style = 'You may select style for editting article or displaying content';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.'; $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_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_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.'; $lang->about_editor_height = 'You may set the height of editor.';
@ -154,67 +156,69 @@
$lang->edit->hyperlink = 'Hyperlink'; $lang->edit->hyperlink = 'Hyperlink';
$lang->edit->target_blank = 'New Window'; $lang->edit->target_blank = 'New Window';
$lang->edit->quotestyle1 = '왼쪽 실선'; $lang->edit->quotestyle1 = 'Left Solid';
$lang->edit->quotestyle2 = '인용부호'; $lang->edit->quotestyle2 = 'Quote';
$lang->edit->quotestyle3 = '실선'; $lang->edit->quotestyle3 = 'Solid';
$lang->edit->quotestyle4 = '실선 + 배경'; $lang->edit->quotestyle4 = 'Solid + Background';
$lang->edit->quotestyle5 = '굵은 실선'; $lang->edit->quotestyle5 = 'Bold Solid';
$lang->edit->quotestyle6 = '점선'; $lang->edit->quotestyle6 = 'Dotted';
$lang->edit->quotestyle7 = '점선 + 배경'; $lang->edit->quotestyle7 = 'Dotted + Background';
$lang->edit->quotestyle8 = '적용 취소'; $lang->edit->quotestyle8 = 'Cancel';
$lang->edit->jumptoedit = '편집 도구모음 건너뛰기'; $lang->edit->jumptoedit = 'Skip Edit Toolbox';
$lang->edit->set_sel = '칸 수 지정'; $lang->edit->set_sel = 'Set Cell Count';
$lang->edit->row = ''; $lang->edit->row = 'Row';
$lang->edit->col = ''; $lang->edit->col = 'Column';
$lang->edit->add_one_row = '1행추가'; $lang->edit->add_one_row = 'Add 1 Row';
$lang->edit->del_one_row = '1행삭제'; $lang->edit->del_one_row = 'Remove 1 Row';
$lang->edit->add_one_col = '1열추가'; $lang->edit->add_one_col = 'Add 1 Column';
$lang->edit->del_one_col = '1열삭제'; $lang->edit->del_one_col = 'Remove 1 Column';
$lang->edit->table_config = '표 속성 지정'; $lang->edit->table_config = 'Table Config';
$lang->edit->border_width = '테두리 굵기'; $lang->edit->border_width = 'Border Width';
$lang->edit->border_color = '테두리 색'; $lang->edit->border_color = 'Border Color';
$lang->edit->add = '더하기'; $lang->edit->add = 'Add';
$lang->edit->del = '빼기'; $lang->edit->del = 'Sub';
$lang->edit->search_color = '색상찾기'; $lang->edit->search_color = 'Search Colors';
$lang->edit->table_backgroundcolor = '표 배경색'; $lang->edit->table_backgroundcolor = 'Table Background Color';
$lang->edit->special_character = '특수문자'; $lang->edit->special_character = 'Special Characters';
$lang->edit->insert_special_character = '특수문자 삽입'; $lang->edit->insert_special_character = 'Insert Special Characters';
$lang->edit->close_special_character = '특수문자 레이어 닫기'; $lang->edit->close_special_character = 'Close Special Characters Layer';
$lang->edit->symbol = '일반기호'; $lang->edit->symbol = 'Symbols';
$lang->edit->number_unit = '숫자와 단위'; $lang->edit->number_unit = 'Numbers and Units';
$lang->edit->circle_bracket = '원,괄호'; $lang->edit->circle_bracket = 'Circles, Brackets';
$lang->edit->korean = 'Korean'; $lang->edit->korean = 'Korean';
$lang->edit->greece = 'Greek'; $lang->edit->greece = 'Greek';
$lang->edit->Latin = 'Latin'; $lang->edit->Latin = 'Latin';
$lang->edit->japan = 'Japanese'; $lang->edit->japan = 'Japanese';
$lang->edit->selected_symbol = '선택한 기호'; $lang->edit->selected_symbol = 'Selected Symbols';
$lang->edit->search_replace = 'Find/Replace'; $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->replace_all = 'Replace All';
$lang->edit->search_words = '찾을단어'; $lang->edit->search_words = 'Words to Find';
$lang->edit->replace_words = '바꿀단어'; $lang->edit->replace_words = 'Words to Replace';
$lang->edit->next_search_words = '다음찾기'; $lang->edit->next_search_words = 'Find Next';
$lang->edit->edit_height_control = '입력창 크기 조절'; $lang->edit->edit_height_control = 'Set Edit Form Size';
$lang->edit->merge_cells = 'Merge Table Cells'; $lang->edit->merge_cells = 'Merge Table Cells';
$lang->edit->split_row = '행 분할'; $lang->edit->split_row = 'Split Row';
$lang->edit->split_col = '열 분할'; $lang->edit->split_col = 'Split Column';
$lang->edit->toggle_list = '목록 접기/펼치기'; $lang->edit->toggle_list = 'Fold/Unfold';
$lang->edit->minimize_list = '최소화'; $lang->edit->minimize_list = 'Minimize';
$lang->edit->move = '이동'; $lang->edit->move = 'Move';
$lang->edit->materials = '글감보관함'; $lang->edit->materials = 'Materials';
$lang->edit->temporary_savings = '임시저장목록'; $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_prev = 'Prev';
$lang->edit->paging_next = '다음'; $lang->edit->paging_next = 'Next';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.'; $lang->edit->paging_prev_help = 'Move to previous page.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.'; $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->component_grant = 'Ajuste de las atribuciones';
$lang->content_style = 'Content Style'; $lang->content_style = 'Content Style';
$lang->content_font = 'Content Font'; $lang->content_font = 'Content Font';
$lang->content_font_size = '문서 폰트 크기';
$lang->about_component = 'Presentación del componente'; $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)'; $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_editor_skin = 'Usted puede seleccionar la piel del editor.';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다'; $lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.'; $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_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_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.'; $lang->about_editor_height = 'Usted puede configurar la altura del editor.';
@ -207,10 +209,12 @@
$lang->edit->materials = '글감보관함'; $lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록'; $lang->edit->temporary_savings = '임시저장목록';
$lang->edit->drag_here = '글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.'; $lang->edit->drag_here = '아래의 단락추가 툴바에서 원하는 유형의 단락을 추가해 글 쓰기를 시작하세요.<br />글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->paging_prev = '이전'; $lang->edit->paging_prev = '이전';
$lang->edit->paging_next = '다음'; $lang->edit->paging_next = '다음';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.'; $lang->edit->paging_prev_help = '이전 페이지로 이동합니다.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.'; $lang->edit->paging_next_help = '다음 페이지로 이동합니다.';
$lang->edit->toc = '목차';
?> ?>

View file

@ -18,6 +18,7 @@
$lang->component_grant = 'Configuration de la Permission'; $lang->component_grant = 'Configuration de la Permission';
$lang->content_style = 'Content Style'; $lang->content_style = 'Content Style';
$lang->content_font = 'Content Font'; $lang->content_font = 'Content Font';
$lang->content_font_size = '문서 폰트 크기';
$lang->about_component = 'Sur le Composant'; $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)'; $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_editor_skin = 'Vous pouvez choisir l\'habillage de l\'Editeur.';
$lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다'; $lang->about_content_style = '문서 편집 및 내용 출력시 원하는 서식을 지정할 수 있습니다';
$lang->about_content_font = '문서 편집 및 내용 출력시 원하는 폰트를 지정할 수 있습니다.<br/>지정하지 않으면 사용자 설정에 따르게 됩니다<br/> ,(콤마)로 여러 폰트를 지정할 수 있습니다.'; $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_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_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.'; $lang->about_editor_height = 'Vous pouvez configurer l\'hauteur de l\'Editeur.';
@ -211,10 +213,12 @@
$lang->edit->materials = '글감보관함'; $lang->edit->materials = '글감보관함';
$lang->edit->temporary_savings = '임시저장목록'; $lang->edit->temporary_savings = '임시저장목록';
$lang->edit->drag_here = '글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.'; $lang->edit->drag_here = '아래의 단락추가 툴바에서 원하는 유형의 단락을 추가해 글 쓰기를 시작하세요.<br />글감 보관함에 글이 있으면 이곳으로 끌어 넣기 할 수 있습니다.';
$lang->edit->paging_prev = '이전'; $lang->edit->paging_prev = '이전';
$lang->edit->paging_next = '다음'; $lang->edit->paging_next = '다음';
$lang->edit->paging_prev_help = '이전 페이지로 이동합니다.'; $lang->edit->paging_prev_help = '이전 페이지로 이동합니다.';
$lang->edit->paging_next_help = '다음 페이지로 이동합니다.'; $lang->edit->paging_next_help = '다음 페이지로 이동합니다.';
$lang->edit->toc = '목차';
?> ?>

View file

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

View file

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

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +1,7 @@
<table name="editor_autosave"> <table name="editor_autosave">
<column name="member_srl" type="number" size="11" default="0" index="idx_member_srl" /> <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="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="document_srl" type="number" size="11" default="0" notnull="notnull" />
<column name="title" type="varchar" size="250" /> <column name="title" type="varchar" size="250" />
<column name="content" type="bigtext" notnull="notnull" /> <column name="content" type="bigtext" notnull="notnull" />

View file

@ -13,6 +13,7 @@
<!-- 자동저장용 폼 --> <!-- 자동저장용 폼 -->
<!--@if($enable_autosave)--> <!--@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_title" value="{htmlspecialchars($saved_doc->title)}" />
<input type="hidden" name="_saved_doc_content" value="{htmlspecialchars($saved_doc->content)}" /> <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}" /> <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가 없으면 자동저장 하지 않음 if(typeof(fo_obj._saved_doc_title)!="undefined" ) { ///<< _saved_doc_title field가 없으면 자동저장 하지 않음
var saved_title = fo_obj._saved_doc_title.value; var saved_title = fo_obj._saved_doc_title.value;
var saved_content = fo_obj._saved_doc_content.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(saved_title || saved_content) {
// 자동저장된 문서 활용여부를 물은 후 사용하지 않는다면 자동저장된 문서 삭제 // 자동저장된 문서 활용여부를 물은 후 사용하지 않는다면 자동저장된 문서 삭제
if(confirm(fo_obj._saved_doc_message.value)) { if(confirm(fo_obj._saved_doc_message.value)) {
if(typeof(fo_obj.title)!='undefined') fo_obj.title.value = saved_title; if(typeof(fo_obj.title)!='undefined') fo_obj.title.value = saved_title;
setTimeout(function(){ setTimeout(function(){
editorRelKeys[editor_sequence]['primary'].value = saved_srl;
setContent(editor_sequence,saved_content); setContent(editor_sequence,saved_content);
}, 100); }, 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 { } else {
editorRemoveSavedDoc(); editorRemoveSavedDoc();
} }

View file

@ -7,7 +7,7 @@
/* Type Selector */ /* Type Selector */
.xpress-editor *{margin:0; padding:0; font-style:normal; font-size:12px; } .xpress-editor *{margin:0; padding:0; font-style:normal; font-size:12px; }
.xpress-editor img, .xpress-editor img,
.xpress-editor fieldset, .xpress-editor fieldset,
.xpress-editor button{ border:0;} .xpress-editor button{ border:0;}
.xpress-editor button{ background:none; background-repeat:no-repeat; cursor:pointer; _cursor /**/:hand;} .xpress-editor button{ background:none; background-repeat:no-repeat; cursor:pointer; _cursor /**/:hand;}
@ -20,6 +20,7 @@
/* Layout Selector */ /* Layout Selector */
.xpress-editor{ position:relative; background:transparent;} .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 #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;} .xpress-editor #smart_footer{ position:relative; text-align:center; padding:10px 0;}
/* Footer */ /* Footer */

View file

@ -4,16 +4,17 @@
<!--// 기본 JS 로드 --> <!--// 기본 JS 로드 -->
<!--%import("../../tpl/js/editor_common.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")--> <!--@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")--> <!--%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}"> <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-->" /> <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> </div>
<script type="text/javascript">//<![CDATA[ <script type="text/javascript">//<![CDATA[
editorStartTextarea({$editor_sequence}, "{$editor_content_key_name}", "{$editor_primary_key_name}"); editorStartTextarea({$editor_sequence}, "{$editor_content_key_name}", "{$editor_primary_key_name}");
@ -27,464 +28,465 @@
<!-- 자동저장용 폼 --> <!-- 자동저장용 폼 -->
<!--@if($enable_autosave)--> <!--@if($enable_autosave)-->
<input type="hidden" name="_saved_doc_title" value="{htmlspecialchars($saved_doc->title)}" /> <input type="hidden" name="_saved_doc_srl" value="{$saved_doc->document_srl}" />
<input type="hidden" name="_saved_doc_content" value="{htmlspecialchars($saved_doc->content)}" /> <input type="hidden" name="_saved_doc_title" value="{htmlspecialchars($saved_doc->title)}" />
<input type="hidden" name="_saved_doc_message" value="{$lang->msg_load_saved_doc}" /> <input type="hidden" name="_saved_doc_content" value="{htmlspecialchars($saved_doc->content)}" />
<!--@end--> <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> <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)--> <!--@if($enable_default_component||$enable_component||$html_mode)-->
<!-- 편집 컴포넌트 --> <!-- 편집 컴포넌트 -->
<div class="tool off"> <div class="tool off">
<!--@if($enable_default_component)--> <!--@if($enable_default_component)-->
<!-- 기본 컴포넌트 출력 --> <!-- 기본 컴포넌트 출력 -->
<ul class="do item"> <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_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> <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>
<ul class="type"> <ul class="type">
<li class="xpress_xeditor_ui_format"> <li class="xpress_xeditor_ui_format">
<select class="xpress_xeditor_ui_format_select" disabled="true"> <select class="xpress_xeditor_ui_format_select" disabled="disabled">
<option value="">{$lang->edit->header}</option> <option value="">{$lang->edit->header}</option>
<!--@foreach($lang->edit->header_list as $key=>$obj)--> <!--@foreach($lang->edit->header_list as $key=>$obj)-->
<option value="{$key}">{$obj}</option> <option value="{$key}">{$obj}</option>
<!--@end--> <!--@end-->
</select> </select>
</li> </li>
<li class="xpress_xeditor_ui_fontName"> <li class="xpress_xeditor_ui_fontName">
<select class="xpress_xeditor_ui_fontName_select" disabled="true"> <select class="xpress_xeditor_ui_fontName_select" disabled="disabled">
<option value="">{$lang->edit->fontname}</option> <option value="">{$lang->edit->fontname}</option>
<!--@foreach($lang->edit->fontlist as $key=>$obj)--> <!--@foreach($lang->edit->fontlist as $key=>$obj)-->
<option value="{$key}" style="font-family:{$key}">{$obj}</option> <option value="{$key}" style="font-family:{$key}">{$obj}</option>
<!--@end--> <!--@end-->
</select> </select>
</li> </li>
<li class="xpress_xeditor_ui_fontSize"> <li class="xpress_xeditor_ui_fontSize">
<select class="xpress_xeditor_ui_fontSize_select" disabled="true"> <select class="xpress_xeditor_ui_fontSize_select" disabled="disabled">
<option value="">{$lang->edit->fontsize}</option> <option value="">{$lang->edit->fontsize}</option>
<option value="9px" style="font-size:9px">9px</option> <option value="9px" style="font-size:9px">9px</option>
<option value="10px" style="font-size:10px">10px</option> <option value="10px" style="font-size:10px">10px</option>
<option value="11px" style="font-size:11px">11px</option> <option value="11px" style="font-size:11px">11px</option>
<option value="12px" style="font-size:12px">12px</option> <option value="12px" style="font-size:12px">12px</option>
<option value="13px" style="font-size:13px">13px</option> <option value="13px" style="font-size:13px">13px</option>
<option value="14px" style="font-size:14px">14px</option> <option value="14px" style="font-size:14px">14px</option>
<option value="16px" style="font-size:16px">16px</option> <option value="16px" style="font-size:16px">16px</option>
<option value="18px" style="font-size:18px">18px</option> <option value="18px" style="font-size:18px">18px</option>
<option value="24px" style="font-size:24px">24px</option> <option value="24px" style="font-size:24px">24px</option>
<option value="32px" style="font-size:32px">32px</option> <option value="32px" style="font-size:32px">32px</option>
</select> </select>
</li> </li>
<li class="xpress_xeditor_ui_lineHeight"> <li class="xpress_xeditor_ui_lineHeight">
<select class="xpress_xeditor_ui_lineHeight_select" disabled="true"> <select class="xpress_xeditor_ui_lineHeight_select" disabled="disabled">
<option value="">{$lang->edit->lineheight}</option> <option value="">{$lang->edit->lineheight}</option>
<option value="1">100%</option> <option value="1">100%</option>
<option value="1.2">120%</option> <option value="1.2">120%</option>
<option value="1.4">140%</option> <option value="1.4">140%</option>
<option value="1.6">160%</option> <option value="1.6">160%</option>
<option value="1.8">180%</option> <option value="1.8">180%</option>
<option value="2">200%</option> <option value="2">200%</option>
</select> </select>
</li> </li>
</ul> </ul>
<ul class="style"> <ul class="style">
<li class="bold xpress_xeditor_ui_bold"> <li class="bold xpress_xeditor_ui_bold">
<button type="button" title="Ctrl+B:{$lang->edit->help_bold}"><span>{$lang->edit->bold}</span></button> <button type="button" title="Ctrl+B:{$lang->edit->help_bold}"><span>{$lang->edit->bold}</span></button>
</li> </li>
<li class="underline xpress_xeditor_ui_underline"> <li class="underline xpress_xeditor_ui_underline">
<button type="button" title="Ctrl+U:{$lang->edit->help_underline}"><span>{$lang->edit->underline}</span></button> <button type="button" title="Ctrl+U:{$lang->edit->help_underline}"><span>{$lang->edit->underline}</span></button>
</li> </li>
<li class="italic xpress_xeditor_ui_italic"> <li class="italic xpress_xeditor_ui_italic">
<button type="button" title="Ctrl+I:{$lang->edit->help_italic}"><span>{$lang->edit->italic}</span></button> <button type="button" title="Ctrl+I:{$lang->edit->help_italic}"><span>{$lang->edit->italic}</span></button>
</li> </li>
<li class="del xpress_xeditor_ui_lineThrough"> <li class="del xpress_xeditor_ui_lineThrough">
<button type="button" title="Ctrl+D:{$lang->edit->help_strike}"><span>{$lang->edit->strike}</span></button> <button type="button" title="Ctrl+D:{$lang->edit->help_strike}"><span>{$lang->edit->strike}</span></button>
</li> </li>
<li class="fcolor xpress_xeditor_ui_fontColor"> <li class="fcolor xpress_xeditor_ui_fontColor">
<button type="button" title="{$lang->edit->help_fontcolor}"><span>{$lang->edit->fontcolor}</span></button> <button type="button" title="{$lang->edit->help_fontcolor}"><span>{$lang->edit->fontcolor}</span></button>
<!-- 팔레트 레이어 --> <!-- 팔레트 레이어 -->
<div class="layer xpress_xeditor_fontcolor_layer" style="display:none;"> <div class="layer xpress_xeditor_fontcolor_layer" style="display:none;">
<ul class="palette xpress_xeditor_color_palette"> <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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#a800ff" style="background:#a800ff"><span>#a800ff</span></button></li>
<li><button type="button" title="#ff00ff" style="background:#ff00ff"><span>#ff00ff</span></button></li> <li><button type="button" title="#ff00ff" style="background:#ff00ff"><span>#ff00ff</span></button></li>
</ul> </ul>
</div> </div>
<!-- /팔레트 레이어 --> <!-- /팔레트 레이어 -->
</li> </li>
<li class="bcolor xpress_xeditor_ui_bgColor"> <li class="bcolor xpress_xeditor_ui_bgColor">
<button type="button" title="{$lang->edit->help_fontbgcolor}"><span>{$lang->edit->fontbgcolor}</span></button> <button type="button" title="{$lang->edit->help_fontbgcolor}"><span>{$lang->edit->fontbgcolor}</span></button>
<!-- 배경색 + 팔레트 레이어 --> <!-- 배경색 + 팔레트 레이어 -->
<div class="layer xpress_xeditor_bgcolor_layer" style="display:none;"> <div class="layer xpress_xeditor_bgcolor_layer" style="display:none;">
<ul class="background"> <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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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> <li><button type="button" title="#ffffff" style="background:#ffffff; color:#000000"><span>{$lang->edit->fontbgsampletext}</span></button></li>
</ul> </ul>
</div> </div>
<!-- /배경색 + 팔레트 레이어 --> <!-- /배경색 + 팔레트 레이어 -->
</li> </li>
<li class="sup xpress_xeditor_ui_superscript"> <li class="sup xpress_xeditor_ui_superscript">
<button type="button" title="{$lang->edit->help_sup}"><span>{$lang->edit->sup}</span></button> <button type="button" title="{$lang->edit->help_sup}"><span>{$lang->edit->sup}</span></button>
</li> </li>
<li class="sub xpress_xeditor_ui_subscript"> <li class="sub xpress_xeditor_ui_subscript">
<button type="button" title="{$lang->edit->help_sub}"><span>{$lang->edit->sub}</span></button> <button type="button" title="{$lang->edit->help_sub}"><span>{$lang->edit->sub}</span></button>
</li> </li>
</ul> </ul>
<ul class="paragraph"> <ul class="paragraph">
<li class="left xpress_xeditor_ui_justifyleft"> <li class="left xpress_xeditor_ui_justifyleft">
<button type="button" title="{$lang->edit->help_align_left}"><span>{$lang->edit->align_left}</span></button> <button type="button" title="{$lang->edit->help_align_left}"><span>{$lang->edit->align_left}</span></button>
</li> </li>
<li class="center xpress_xeditor_ui_justifycenter"> <li class="center xpress_xeditor_ui_justifycenter">
<button type="button" title="{$lang->edit->help_align_center}"><span>{$lang->edit->align_center}</span></button> <button type="button" title="{$lang->edit->help_align_center}"><span>{$lang->edit->align_center}</span></button>
</li> </li>
<li class="right xpress_xeditor_ui_justifyright"> <li class="right xpress_xeditor_ui_justifyright">
<button type="button" title="{$lang->edit->help_align_right}"><span>{$lang->edit->align_right}</span></button> <button type="button" title="{$lang->edit->help_align_right}"><span>{$lang->edit->align_right}</span></button>
</li> </li>
<li class="justify xpress_xeditor_ui_justifyfull"> <li class="justify xpress_xeditor_ui_justifyfull">
<button type="button" title="{$lang->edit->help_align_justify}"><span>{$lang->edit->align_justify}</span></button> <button type="button" title="{$lang->edit->help_align_justify}"><span>{$lang->edit->align_justify}</span></button>
</li> </li>
<li class="ol xpress_xeditor_ui_orderedlist"> <li class="ol xpress_xeditor_ui_orderedlist">
<button type="button" title="{$lang->edit->help_list_number}"><span>{$lang->edit->list_number}</span></button> <button type="button" title="{$lang->edit->help_list_number}"><span>{$lang->edit->list_number}</span></button>
</li> </li>
<li class="ul xpress_xeditor_ui_unorderedlist"> <li class="ul xpress_xeditor_ui_unorderedlist">
<button type="button" title="{$lang->edit->help_list_bullet}"><span>{$lang->edit->list_bullet}</span></button> <button type="button" title="{$lang->edit->help_list_bullet}"><span>{$lang->edit->list_bullet}</span></button>
</li> </li>
<li class="outdent xpress_xeditor_ui_outdent"> <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> <button type="button" title="Shift+Tab:{$lang->edit->help_remove_indent}"><span>{$lang->edit->help_remove_indent}</span></button>
</li> </li>
<li class="indent xpress_xeditor_ui_indent"> <li class="indent xpress_xeditor_ui_indent">
<button type="button" title="Tab:{$lang->edit->help_add_indent}"><span>{$lang->edit->add_indent}</span></button> <button type="button" title="Tab:{$lang->edit->help_add_indent}"><span>{$lang->edit->add_indent}</span></button>
</li> </li>
</ul> </ul>
<ul class="extra1"> <ul class="extra1">
<li class="blockquote xpress_xeditor_ui_quote"> <li class="blockquote xpress_xeditor_ui_quote">
<button type="button" title="{$lang->edit->blockquote}"><span>{$lang->edit->blockquote}</span></button> <button type="button" title="{$lang->edit->blockquote}"><span>{$lang->edit->blockquote}</span></button>
<!-- 인용 레이어 --> <!-- 인용 레이어 -->
<div class="layer xpress_xeditor_blockquote_layer" style="display:none"> <div class="layer xpress_xeditor_blockquote_layer" style="display:none">
<ul> <ul>
<li class="q1"><button type="button"><span>{$lang->edit->quotestyle1}</span></button></li> <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="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="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="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="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="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="q7"><button type="button"><span>{$lang->edit->quotestyle7}</span></button></li>
<li class="q8"><button type="button"><span>{$lang->edit->quotestyle8}</span></button></li> <li class="q8"><button type="button"><span>{$lang->edit->quotestyle8}</span></button></li>
</ul> </ul>
</div> </div>
<!-- /인용 레이어 --> <!-- /인용 레이어 -->
</li> </li>
<li class="url xpress_xeditor_ui_hyperlink"> <li class="url xpress_xeditor_ui_hyperlink">
<button type="button" title="{$lang->edit->url}"><span>{$lang->edit->url}</span></button> <button type="button" title="{$lang->edit->url}"><span>{$lang->edit->url}</span></button>
<!-- URL 레이어 --> <!-- URL 레이어 -->
<div class="layer xpress_xeditor_hyperlink_layer" style="display:none;"> <div class="layer xpress_xeditor_hyperlink_layer" style="display:none;">
<fieldset> <fieldset>
<h3>{$lang->edit->hyperlink}</h3> <h3>{$lang->edit->hyperlink}</h3>
<input name="" class="link" type="text" value="http://" title="URL" /> <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> <p><input name="" id="target" type="checkbox" value="" /><label for="target">{$lang->edit->target_blank}</label></p>
</fieldset> </fieldset>
<div class="btn_area"> <div class="btn_area">
<button type="button" class="confirm" title="{$lang->cmd_confirm}"><span>{$lang->cmd_confirm}</span></button> <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> <button type="button" class="cancel" title="{$lang->cmd_cancel}"><span>{$lang->cmd_cancel}</span></button>
</div> </div>
</div> </div>
<!-- /URL 레이어 --> <!-- /URL 레이어 -->
</li> </li>
<li class="character xpress_xeditor_ui_sCharacter"> <li class="character xpress_xeditor_ui_sCharacter">
<button type="button" title="{$lang->edit->special_character}"><span>{$lang->edit->special_character}</span></button> <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"> <div class="layer xpress_xeditor_sCharacter_layer" style="display:none">
<h3>{$lang->edit->insert_special_character}</h3> <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> <button type="button" class="close" title="{$lang->edit->close_special_character}"><span>{$lang->edit->close_special_character}</span></button>
<ul class="nav"> <ul class="nav">
<li><a href="#character1" class="on">{$lang->edit->symbol}</a></li> <li><a href="#character1" class="on">{$lang->edit->symbol}</a></li>
<li><a href="#character2">{$lang->edit->number_unit}</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="#character3">{$lang->edit->circle_bracket}</a></li>
<li><a href="#character4">{$lang->edit->korean}</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="#character5">{$lang->edit->greece},{$lang->edit->Latin}</a></li>
<li><a href="#character6">{$lang->edit->japan}</a></li> <li><a href="#character6">{$lang->edit->japan}</a></li>
</ul> </ul>
<ul style="display: block;" id="character1" class="list"></ul> <ul style="display: block;" id="character1" class="list"></ul>
<ul style="display: none;" id="character2" 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="character3" class="list"></ul>
<ul style="display: none;" id="character4" 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="character5" class="list"></ul>
<ul style="display: none;" id="character6" class="list"></ul> <ul style="display: none;" id="character6" class="list"></ul>
<p> <p>
<label for="preview">{$lang->edit->selected_symbol}</label> <label for="preview">{$lang->edit->selected_symbol}</label>
<input id="preview" name="" type="text" /> <input id="preview" name="" type="text" />
<button type="button" title="{$lang->confirm}"><span>{$lang->confirm}</span></button> <button type="button" title="{$lang->confirm}"><span>{$lang->confirm}</span></button>
</p> </p>
<button type="button" class="close" title="{$lang->edit->close_special_character}"><span>{$lang->edit->close_special_character}</span></button> <button type="button" class="close" title="{$lang->edit->close_special_character}"><span>{$lang->edit->close_special_character}</span></button>
</div> </div>
<!-- /특수문자 레이어 --> <!-- /특수문자 레이어 -->
</li> </li>
<li class="find xpress_xeditor_ui_findAndReplace"> <li class="find xpress_xeditor_ui_findAndReplace">
<button type="button" title="{$lang->cmd_find}"><span>{$lang->cmd_find}</span></button> <button type="button" title="{$lang->cmd_find}"><span>{$lang->cmd_find}</span></button>
<!-- 찾기 바꾸기 레이어 --> <!-- 찾기 바꾸기 레이어 -->
<div class="layer find xpress_xeditor_findAndReplace_layer" style="display:none"> <div class="layer find xpress_xeditor_findAndReplace_layer" style="display:none">
<!-- class="layer find" | class="layer replace"--> <!-- class="layer find" | class="layer replace"-->
<h3>{$lang->edit->search_replace}</h3> <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> <button type="button" class="close" title="{$lang->edit->close_search_replace}"><span>{$lang->edit->close_search_replace}</span></button>
<div class="menu_tab"> <div class="menu_tab">
<ul class="layer_tab"> <ul class="layer_tab">
<li class="tab1"><a href="#find" onclick="return false">{$lang->cmd_find}</a></li> <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> <li class="tab2"><a href="#replace" onclick="return false">{$lang->cmd_replace}</a></li>
</ul> </ul>
</div> </div>
<div class="container"> <div class="container">
<div class="bx" id="find"> <div class="bx" id="find">
<fieldset> <fieldset>
<label for="keyword1">{$lang->edit->search_words}</label> <label for="keyword1">{$lang->edit->search_words}</label>
<input id="keyword1" name="" type="text" /> <input id="keyword1" name="" type="text" />
</fieldset> </fieldset>
<span class="cap"></span> </div> <span class="cap"></span> </div>
<div class="bx" id="replace"> <div class="bx" id="replace">
<fieldset> <fieldset>
<label for="keyword2">{$lang->edit->search_words}</label> <label for="keyword2">{$lang->edit->search_words}</label>
<input id="keyword2" name="" type="text" /> <input id="keyword2" name="" type="text" />
<br /> <br />
<label for="keyword3">{$lang->edit->replace_words}</label> <label for="keyword3">{$lang->edit->replace_words}</label>
<input id="keyword3" name="" type="text" /> <input id="keyword3" name="" type="text" />
</fieldset> </fieldset>
</div> </div>
</div> </div>
<div class="btn_area"> <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="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" 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> <button type="button" class="replace_all" title="{$lang->edit->replace_all}"><span>{$lang->edit->replace_all}</span></button>
</div> </div>
<button type="button" class="close" title="{$lang->edit->close_search_replace}"><span>{$lang->edit->close_search_replace}</span></button> <button type="button" class="close" title="{$lang->edit->close_search_replace}"><span>{$lang->edit->close_search_replace}</span></button>
</div> </div>
<!-- /찾기 바꾸기 레이어 --> <!-- /찾기 바꾸기 레이어 -->
</li> </li>
</ul> </ul>
<ul class="table"> <ul class="table">
<li class="table xpress_xeditor_ui_table"> <li class="table xpress_xeditor_ui_table">
<button type="button" title="{$lang->edit->table}"><span>{$lang->edit->table}</span></button> <button type="button" title="{$lang->edit->table}"><span>{$lang->edit->table}</span></button>
<!-- 표 레이어 --> <!-- 표 레이어 -->
<div class="layer xpress_xeditor_table_layer" style="display:none;"> <div class="layer xpress_xeditor_table_layer" style="display:none;">
<fieldset class="num"> <fieldset class="num">
<h3>{$lang->edit->set_sel}</h3> <h3>{$lang->edit->set_sel}</h3>
<dl> <dl>
<dt> <dt>
<label for="row">{$lang->edit->row}</label> <label for="row">{$lang->edit->row}</label>
</dt> </dt>
<dd> <dd>
<input id="row" name="" type="text" maxlength="2" value="4" /> <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="add"><span>{$lang->edit->add_one_row}</span></button>
<button type="button" class="del"><span>{$lang->edit->del_one_row}</span></button> <button type="button" class="del"><span>{$lang->edit->del_one_row}</span></button>
</dd> </dd>
<dt> <dt>
<label for="col">{$lang->edit->col}</label> <label for="col">{$lang->edit->col}</label>
</dt> </dt>
<dd> <dd>
<input id="col" name="" type="text" maxlength="2" value="4" /> <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="add"><span>{$lang->edit->add_one_col}</span></button>
<button type="button" class="del"><span>{$lang->edit->del_one_col}</span></button> <button type="button" class="del"><span>{$lang->edit->del_one_col}</span></button>
</dd> </dd>
</dl> </dl>
<table border="1"> <table border="1">
<tr> <tr>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> </tr>
<tr> <tr>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> </tr>
<tr> <tr>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> </tr>
<tr> <tr>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> </tr>
</table> </table>
</fieldset> </fieldset>
<fieldset class="color"> <fieldset class="color">
<h3>{$lang->edit->table_config}</h3> <h3>{$lang->edit->table_config}</h3>
<dl> <dl>
<dt> <dt>
<label for="table_border_width">{$lang->edit->border_width}</label> <label for="table_border_width">{$lang->edit->border_width}</label>
</dt> </dt>
<dd> <dd>
<input id="table_border_width" name="" type="text" maxlength="2" value="1" /> <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="add"><span>1px {$lang->edit->add}</span></button>
<button type="button" class="del"><span>1px {$lang->edit->del}</span></button> <button type="button" class="del"><span>1px {$lang->edit->del}</span></button>
</dd> </dd>
<dt> <dt>
<label for="table_border_color">{$lang->edit->border_color}</label> <label for="table_border_color">{$lang->edit->border_color}</label>
</dt> </dt>
<dd> <dd>
<span class="preview_palette"><button type="button" style="background:#cccccc;">{$lang->edit->search_color}</button></span> <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" /> <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> <button type="button" class="find_palette"><span>{$lang->edit->search_color}</span></button>
</dd> </dd>
<dt> <dt>
<label for="table_bg_color">{$lang->edit->table_backgroundcolor}</label> <label for="table_bg_color">{$lang->edit->table_backgroundcolor}</label>
</dt> </dt>
<dd> <dd>
<span class="preview_palette"><button type="button" style="background:#000000;">{$lang->edit->search_color}</button></span> <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" /> <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> <button type="button" class="find_palette"><span>{$lang->edit->search_color}</span></button>
</dd> </dd>
</dl> </dl>
</fieldset> </fieldset>
<div class="btn_area"> <div class="btn_area">
<button type="button" class="confirm" title="{$lang->confirm}"><span>{$lang->confirm}</span></button> <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> <button type="button" class="cancel" title="{$lang->cancel}"><span>{$lang->cancel}</span></button>
</div> </div>
</div> </div>
<!-- /표 레이어 --> <!-- /표 레이어 -->
</li> </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="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="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> <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> </ul>
<!--@end--> <!--@end-->
<!--@if($enable_component)--> <!--@if($enable_component)-->
<ul class="extra2"> <ul class="extra2">
<!-- 확장 컴포넌트 출력 --> <!-- 확장 컴포넌트 출력 -->
<li class="extensions xpress_xeditor_ui_extension"> <li class="extensions xpress_xeditor_ui_extension">
<span class="exButton"><button type="button" title="{$lang->edit->extension}">{$lang->edit->extension}</button></span> <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}"> <div class="layer extension2 xpress_xeditor_extension_layer" id="editorExtension_{$editor_sequence}">
<ul id="editor_component_{$editor_sequence}" class="editorComponent"> <ul id="editor_component_{$editor_sequence}" class="editorComponent">
<!--@foreach($component_list as $component_name => $component)--> <!--@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> <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--> <!--@end-->
</ul> </ul>
</div> </div>
</li> </li>
</ul> </ul>
<!--@end--> <!--@end-->
<!--@if($html_mode)--> <!--@if($html_mode)-->
<ul class="extra3"> <ul class="extra3">
<!-- HTML 모드 사용 --> <!-- 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="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--> <!--li class="preview"><span><button type="button" class="xpress_xeditor_preview_button" title="{$lang->cmd_preview}">{$lang->cmd_preview}</button></span></li-->
</ul> </ul>
<!--@end--> <!--@end-->
</div> </div>
<!--@else--> <!--@else-->
<div class="tool off disable"></div> <div class="tool off disable"></div>
<!--@end--> <!--@end-->
<!-- 에디터 출력 --> <!-- 에디터 출력 -->
<div id="xe-editor-container-{$editor_sequence}" class="input_area xpress_xeditor_editing_area_container"> <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> <textarea id="xpress-editor-{$editor_sequence}" cols="10" rows="10"></textarea>
</div> </div>
<!--@if($enable_autosave)--> <!--@if($enable_autosave)-->
<p class="editor_autosaved_message autosave_message" id="editor_autosaved_message_{$editor_sequence}">&nbsp;</p> <p class="editor_autosaved_message autosave_message" id="editor_autosaved_message_{$editor_sequence}">&nbsp;</p>
<!--@end--> <!--@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)--> <!--@if($allow_fileupload)-->
<!--%import("../../tpl/js/uploader.js",optimized=false)--> <!--%import("../../tpl/js/uploader.js",optimized=false)-->
<!--%import("../../tpl/js/swfupload.js",optimized=false)--> <!--%import("../../tpl/js/swfupload.js",optimized=false)-->
<script type="text/javascript">//<![CDATA[ <script type="text/javascript">//<![CDATA[
editorUploadInit( editorUploadInit(
{ {
"editorSequence" : {$editor_sequence}, "editorSequence" : {$editor_sequence},
"sessionName" : "{session_name()}", "sessionName" : "{session_name()}",
"allowedFileSize" : "{$file_config->allowed_filesize}", "allowedFileSize" : "{$file_config->allowed_filesize}",
@ -496,28 +498,28 @@
"previewAreaID" : "preview_uploaded_{$editor_sequence}", "previewAreaID" : "preview_uploaded_{$editor_sequence}",
"uploaderStatusID" : "uploader_status_{$editor_sequence}" "uploaderStatusID" : "uploader_status_{$editor_sequence}"
} }
); );
//]]></script> //]]></script>
<!-- 파일 업로드 영역 --> <!-- 파일 업로드 영역 -->
<div id="fileUploader_{$editor_sequence}" class="fileUploader"> <div id="fileUploader_{$editor_sequence}" class="fileUploader">
<div class="preview {$editor_class}" id="preview_uploaded_{$editor_sequence}"></div> <div class="preview {$btn_class}" id="preview_uploaded_{$editor_sequence}"></div>
<div class="fileListArea {$editor_class}"> <div class="fileListArea {$btn_class}">
<select id="uploaded_file_list_{$editor_sequence}" multiple="multiple" class="fileList" title="Attached File List"><option></option></select> <select id="uploaded_file_list_{$editor_sequence}" multiple="multiple" class="fileList" title="Attached File List"><option></option></select>
</div> </div>
<div class="fileUploadControl"> <div class="fileUploadControl">
<span class="button {$editor_class}" id="swfUploadButton{$editor_sequence}"><button type="button">{$lang->edit->upload_file}</button></span> <span class="button {$btn_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 {$btn_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> <span class="button {$btn_class}"><button type="button" onclick="insertUploadedFile('{$editor_sequence}');return false;">{$lang->edit->link_file}</button></span>
</div> </div>
<div class="file_attach_info" id="uploader_status_{$editor_sequence}">{$upload_status}</div> <div class="file_attach_info" id="uploader_status_{$editor_sequence}">{$upload_status}</div>
</div> </div>
<!--@end--> <!--@end-->
</div> </div>
<!-- 에디터 활성화 --> <!-- 에디터 활성화 -->
<script type="text/javascript">//<![CDATA[ <script type="text/javascript">//<![CDATA[
var editor_path = "{$editor_path}"; var editor_path = "{$editor_path}";
var auto_saved_msg = "{$lang->msg_auto_saved}"; 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}'); 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> //]]></script>
<!--@end--> <!--@end-->

File diff suppressed because it is too large Load diff

View file

@ -1,273 +1,293 @@
if (!window.xe) xe = {}; if (!window.xe) xe = {};
xe.Editors = []; 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(colorset)=='undefined') colorset = 'white';
if(typeof(content_style)=='undefined') content_style = 'xeStyle'; if(typeof(content_style)=='undefined') content_style = 'xeStyle';
if(typeof(content_font)=='undefined') content_font= ''; 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';
var target_src = request_uri+'modules/editor/styles/'+content_style+'/editor.html';
var textarea = jQuery("#xpress-editor-"+editor_sequence);
var iframe = jQuery('<iframe id="editor_iframe_'+editor_sequence+'" allowTransparency="true" frameborder="0" src="'+target_src+'" scrolling="yes" style="width:100%;height:'+editor_height+'px">'); var textarea = jQuery("#xpress-editor-"+editor_sequence);
var htmlsrc = jQuery('<textarea rows="10" cols="20" class="input_syntax '+colorset+'" style="display:none"></textarea>'); var iframe = jQuery('<iframe id="editor_iframe_'+editor_sequence+'" allowTransparency="true" frameborder="0" src="'+target_src+'" scrolling="yes" style="width:100%;height:'+editor_height+'px">');
var form = textarea.get(0).form; var htmlsrc = jQuery('<textarea rows="10" cols="20" class="input_syntax '+colorset+'" style="display:none"></textarea>');
form.setAttribute('editor_sequence', editor_sequence); var form = textarea.get(0).form;
textarea.css("display","none"); form.setAttribute('editor_sequence', editor_sequence);
textarea.css("display","none");
var saved_content = '';
if(jQuery("input[name=content]",form).size()>0){ var saved_content = '';
saved_content=jQuery("input[name=content]",form).val().replace(/src=\"files\/attach/g,'src="'+request_uri+'files/attach'); //' if(jQuery("input[name=content]",form).size()>0){
jQuery("#xpress-editor-"+editor_sequence).val(saved_content); saved_content=jQuery("input[name=content]",form).val().replace(/src=\"files\/attach/g,'src="'+request_uri+'files/attach'); //'
} jQuery("#xpress-editor-"+editor_sequence).val(saved_content);
}
/*
// remove procFilter /*
if(form.comment_srl){ // remove procFilter
form.onsubmit=function(){ if(form.comment_srl){
var content = editorGetContent(editor_sequence); form.onsubmit=function(){
editorRelKeys[editor_sequence]['content'].value = content; var content = editorGetContent(editor_sequence);
insert_comment(form); editorRelKeys[editor_sequence]['content'].value = content;
return false; insert_comment(form);
}; return false;
}else{ };
form.onsubmit=function(){ }else{
var content = editorGetContent(editor_sequence); form.onsubmit=function(){
editorRelKeys[editor_sequence]['content'].value = content; var content = editorGetContent(editor_sequence);
insert(form); editorRelKeys[editor_sequence]['content'].value = content;
return false; insert(form);
}; return false;
} };
*/ }
*/
// hide textarea
textarea.hide().css('width', '99%').before(iframe).after(htmlsrc); // hide textarea
textarea.hide().css('width', '99%').before(iframe).after(htmlsrc);
// create an editor
var oEditor = new xe.XpressCore(); // create an editor
var oWYSIWYGIFrame = iframe.get(0); var oEditor = new xe.XpressCore();
var oIRTextarea = textarea.get(0); var oWYSIWYGIFrame = iframe.get(0);
var oHTMLSrcTextarea = htmlsrc.get(0); var oIRTextarea = textarea.get(0);
var elAppContainer = jQuery('.xpress-editor', form).get(0); var oHTMLSrcTextarea = htmlsrc.get(0);
var elAppContainer = jQuery('.xpress-editor', form).get(0);
oEditor.getFrame = function(){ return oWYSIWYGIFrame;}
oEditor.getFrame = function(){ return oWYSIWYGIFrame;}
var content = form[content_key].value;
var content = form[content_key].value;
// src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경 if(xFF && !content) content = '<p>&nbsp;</p>';
content = content.replace(/(src=|href=|url\()("|\')*([^"\'\)]+)("|\'|\))*(\s|>)*/ig, function(m0,m1,m2,m3,m4,m5) {
if(m1=="url(") { m2=''; m4=')'; } else { if(typeof(m2)=='undefined') m2 = '"'; if(typeof(m4)=='undefined') m4 = '"'; if(typeof(m5)=='undefined') m5 = ''; } // src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경
var val = jQuery.trim(m3).replace(/^\.\//,''); content = content.replace(/(src=|href=|url\()("|\')*([^"\'\)]+)("|\'|\))*(\s|>)*/ig, function(m0,m1,m2,m3,m4,m5) {
if(/^(http|https|ftp|telnet|mms|\/|\.\.)/i.test(val)) return m0; if(m1=="url(") { m2=''; m4=')'; } else { if(typeof(m2)=='undefined') m2 = '"'; if(typeof(m4)=='undefined') m4 = '"'; if(typeof(m5)=='undefined') m5 = ''; }
return m1+m2+request_uri+val+m4+m5; var val = jQuery.trim(m3).replace(/^\.\//,'');
}); if(/^(http|https|ftp|telnet|mms|\/|\.\.)/i.test(val)) return m0;
return m1+m2+request_uri+val+m4+m5;
form[content_key].value = content; });
jQuery("#xpress-editor-"+editor_sequence).val(content);
form[content_key].value = content;
// Set standard API jQuery("#xpress-editor-"+editor_sequence).val(content);
editorRelKeys[editor_sequence] = new Array();
editorRelKeys[editor_sequence]["primary"] = form[primary_key]; // Set standard API
editorRelKeys[editor_sequence]["content"] = form[content_key]; editorRelKeys[editor_sequence] = new Array();
editorRelKeys[editor_sequence]["func"] = editorGetContentTextarea_xe; editorRelKeys[editor_sequence]["primary"] = form[primary_key];
editorRelKeys[editor_sequence]["editor"] = oEditor; editorRelKeys[editor_sequence]["content"] = form[content_key];
editorRelKeys[editor_sequence]["pasteHTML"] = function(text){ editorRelKeys[editor_sequence]["func"] = editorGetContentTextarea_xe;
oEditor.exec('PASTE_HTML',[text]); editorRelKeys[editor_sequence]["editor"] = oEditor;
} editorRelKeys[editor_sequence]["pasteHTML"] = function(text){
xe.Editors[editor_sequence] = oEditor; oEditor.exec('PASTE_HTML',[text]);
}
// register plugins xe.Editors[editor_sequence] = oEditor;
oEditor.registerPlugin(new xe.CorePlugin(null));
// register plugins
oEditor.registerPlugin(new xe.XE_PreservTemplate(jQuery("#xpress-editor-"+editor_sequence).val())); oEditor.registerPlugin(new xe.CorePlugin(null));
oEditor.registerPlugin(new xe.StringConverterManager());
oEditor.registerPlugin(new xe.XE_EditingAreaManager("WYSIWYG", oIRTextarea, {nHeight:parseInt(editor_height), nMinHeight:205}, null, elAppContainer)); oEditor.registerPlugin(new xe.XE_PreservTemplate(jQuery("#xpress-editor-"+editor_sequence).val()));
oEditor.registerPlugin(new xe.XE_EditingArea_HTMLSrc(oHTMLSrcTextarea)); oEditor.registerPlugin(new xe.StringConverterManager());
oEditor.registerPlugin(new xe.XE_EditingAreaVerticalResizer(elAppContainer)); oEditor.registerPlugin(new xe.XE_EditingAreaManager("WYSIWYG", oIRTextarea, {nHeight:parseInt(editor_height), nMinHeight:205}, null, elAppContainer));
oEditor.registerPlugin(new xe.Utils()); oEditor.registerPlugin(new xe.XE_EditingArea_HTMLSrc(oHTMLSrcTextarea));
oEditor.registerPlugin(new xe.DialogLayerManager()); oEditor.registerPlugin(new xe.XE_EditingAreaVerticalResizer(elAppContainer));
oEditor.registerPlugin(new xe.ActiveLayerManager()); oEditor.registerPlugin(new xe.Utils());
oEditor.registerPlugin(new xe.Hotkey()); oEditor.registerPlugin(new xe.DialogLayerManager());
oEditor.registerPlugin(new xe.XE_WYSIWYGStyler()); oEditor.registerPlugin(new xe.ActiveLayerManager());
oEditor.registerPlugin(new xe.XE_WYSIWYGStyleGetter()); oEditor.registerPlugin(new xe.Hotkey());
oEditor.registerPlugin(new xe.MessageManager(oMessageMap)); oEditor.registerPlugin(new xe.XE_WYSIWYGStyler());
oEditor.registerPlugin(new xe.XE_Toolbar(elAppContainer)); oEditor.registerPlugin(new xe.XE_WYSIWYGStyleGetter());
oEditor.registerPlugin(new xe.MessageManager(oMessageMap));
oEditor.registerPlugin(new xe.XE_XHTMLFormatter); oEditor.registerPlugin(new xe.XE_Toolbar(elAppContainer));
oEditor.registerPlugin(new xe.XE_GET_WYSYWYG_MODE(editor_sequence));
oEditor.registerPlugin(new xe.XE_GET_WYSYWYG_CONTENT()); oEditor.registerPlugin(new xe.XE_XHTMLFormatter);
oEditor.registerPlugin(new xe.XE_GET_WYSYWYG_MODE(editor_sequence));
if(jQuery("ul.extra1").length) { oEditor.registerPlugin(new xe.XE_GET_WYSYWYG_CONTENT());
oEditor.registerPlugin(new xe.XE_ColorPalette(elAppContainer));
oEditor.registerPlugin(new xe.XE_FontColor(elAppContainer)); if(jQuery("ul.extra1").length) {
oEditor.registerPlugin(new xe.XE_BGColor(elAppContainer)); oEditor.registerPlugin(new xe.XE_ColorPalette(elAppContainer));
oEditor.registerPlugin(new xe.XE_Quote(elAppContainer)); oEditor.registerPlugin(new xe.XE_FontColor(elAppContainer));
oEditor.registerPlugin(new xe.XE_FontNameWithSelectUI(elAppContainer)); oEditor.registerPlugin(new xe.XE_BGColor(elAppContainer));
oEditor.registerPlugin(new xe.XE_FontSizeWithSelectUI(elAppContainer)); oEditor.registerPlugin(new xe.XE_Quote(elAppContainer));
oEditor.registerPlugin(new xe.XE_LineHeightWithSelectUI(elAppContainer)); oEditor.registerPlugin(new xe.XE_FontNameWithSelectUI(elAppContainer));
oEditor.registerPlugin(new xe.XE_UndoRedo()); oEditor.registerPlugin(new xe.XE_FontSizeWithSelectUI(elAppContainer));
oEditor.registerPlugin(new xe.XE_Table(elAppContainer)); oEditor.registerPlugin(new xe.XE_LineHeightWithSelectUI(elAppContainer));
oEditor.registerPlugin(new xe.XE_Hyperlink(elAppContainer)); oEditor.registerPlugin(new xe.XE_UndoRedo());
oEditor.registerPlugin(new xe.XE_FindReplacePlugin(elAppContainer)); oEditor.registerPlugin(new xe.XE_Table(elAppContainer));
oEditor.registerPlugin(new xe.XE_FormatWithSelectUI(elAppContainer)); oEditor.registerPlugin(new xe.XE_Hyperlink(elAppContainer));
oEditor.registerPlugin(new xe.XE_SCharacter(elAppContainer)); oEditor.registerPlugin(new xe.XE_FindReplacePlugin(elAppContainer));
} oEditor.registerPlugin(new xe.XE_FormatWithSelectUI(elAppContainer));
oEditor.registerPlugin(new xe.XE_SCharacter(elAppContainer));
if(jQuery("ul.extra2").length) { }
oEditor.registerPlugin(new xe.XE_Extension(elAppContainer, editor_sequence));
} if(jQuery("ul.extra2").length) {
oEditor.registerPlugin(new xe.XE_Extension(elAppContainer, editor_sequence));
if(jQuery("ul.extra3").length) { }
oEditor.registerPlugin(new xe.XE_EditingModeToggler(elAppContainer));
} if(jQuery("ul.extra3").length) {
oEditor.registerPlugin(new xe.XE_EditingModeToggler(elAppContainer));
}
//oEditor.registerPlugin(new xe.XE_Preview(elAppContainer));
if (!jQuery.browser.msie && !jQuery.browser.opera) { //oEditor.registerPlugin(new xe.XE_Preview(elAppContainer));
oEditor.registerPlugin(new xe.XE_WYSIWYGEnterKey(oWYSIWYGIFrame));
} if (!jQuery.browser.msie && !jQuery.browser.opera) {
oEditor.registerPlugin(new xe.XE_WYSIWYGEnterKey(oWYSIWYGIFrame));
// 자동 저장 사용 }
if (s=form._saved_doc_title) {
oEditor.registerPlugin(new xe.XE_AutoSave(oIRTextarea, elAppContainer)); // 자동 저장 사용
} if (s=form._saved_doc_title) {
oEditor.registerPlugin(new xe.XE_AutoSave(oIRTextarea, elAppContainer));
function load_proc() { }
try {
var doc = oWYSIWYGIFrame.contentWindow.document, str; function load_proc() {
if (doc.location == 'about:blank') throw 'blank'; try {
var doc = oWYSIWYGIFrame.contentWindow.document, str;
// get innerHTML if (doc.location == 'about:blank') throw 'blank';
str = doc.body.innerHTML;
// get innerHTML
// register plugin str = doc.body.innerHTML;
oEditor.registerPlugin(new xe.XE_EditingArea_WYSIWYG(oWYSIWYGIFrame));
oEditor.registerPlugin(new xe.XpressRangeManager(oWYSIWYGIFrame)); // register plugin
oEditor.registerPlugin(new xe.XE_ExecCommand(oWYSIWYGIFrame)); oEditor.registerPlugin(new xe.XE_EditingArea_WYSIWYG(oWYSIWYGIFrame));
oEditor.registerPlugin(new xe.XpressRangeManager(oWYSIWYGIFrame));
if(content_font && !doc.body.style.fontFamily) { oEditor.registerPlugin(new xe.XE_ExecCommand(oWYSIWYGIFrame));
doc.body.style.fontFamily = content_font;
} if(content_font && !doc.body.style.fontFamily) {
doc.body.style.fontFamily = content_font;
// run }
oEditor.run(); if(content_font_size && !doc.body.style.fontSize) {
} catch(e) { doc.body.style.fontSize = content_font_size;
setTimeout(load_proc, 0); }
}
} // run
oEditor.run();
load_proc(); } catch(e) {
setTimeout(load_proc, 0);
return oEditor; }
} }
function editorGetContentTextarea_xe(editor_sequence) { load_proc();
var oEditor = xe.Editors[editor_sequence] || null;
return oEditor;
if (!oEditor) return ''; }
return oEditor.getIR(); function editorGetContentTextarea_xe(editor_sequence) {
} var oEditor = xe.Editors[editor_sequence] || null;
function editorGetIframe(srl) { if (!oEditor) return '';
return jQuery('iframe#editor_iframe_'+srl).get(0);
} var str = oEditor.getIR();
if(!jQuery.trim(str.replace(/(&nbsp;|<\/?(p|br|span|div)([^>]+)?>)/ig, ''))) return '';
function editorReplaceHTML(iframe_obj, content) {
// src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경 return str;
content = content.replace(/(src=|href=|url\()("|\')*([^"\'\)]+)("|\'|\))*(\s|>)*/ig, function(m0,m1,m2,m3,m4,m5) { }
if(m1=="url(") { m2=''; m4=')'; } else { if(typeof(m2)=='undefined') m2 = '"'; if(typeof(m4)=='undefined') m4 = '"'; if(typeof(m5)=='undefined') m5 = ''; }
var val = jQuery.trim(m3).replace(/^\.\//,''); function editorGetIframe(srl) {
if(/^(http|https|ftp|telnet|mms|\/|\.\.)/i.test(val)) return m0; return jQuery('iframe#editor_iframe_'+srl).get(0);
return m1+m2+request_uri+val+m4+m5; }
});
function editorReplaceHTML(iframe_obj, content) {
var srl = parseInt(iframe_obj.id.replace(/^.*_/,''),10); // src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경
editorRelKeys[srl]["pasteHTML"](content); content = content.replace(/(src=|href=|url\()("|\')*([^"\'\)]+)("|\'|\))*(\s|>)*/ig, function(m0,m1,m2,m3,m4,m5) {
} if(m1=="url(") { m2=''; m4=')'; } else { if(typeof(m2)=='undefined') m2 = '"'; if(typeof(m4)=='undefined') m4 = '"'; if(typeof(m5)=='undefined') m5 = ''; }
var val = jQuery.trim(m3).replace(/^\.\//,'');
// WYSIWYG 모드를 저장하는 확장기능 if(/^(http|https|ftp|telnet|mms|\/|\.\.)/i.test(val)) return m0;
xe.XE_GET_WYSYWYG_MODE = jQuery.Class({ return m1+m2+request_uri+val+m4+m5;
name : "XE_GET_WYSYWYG_MODE", });
$init : function(editor_sequence) { var srl = parseInt(iframe_obj.id.replace(/^.*_/,''),10);
this.editor_sequence = editor_sequence; editorRelKeys[srl]["pasteHTML"](content);
}, }
$ON_CHANGE_EDITING_MODE : function(mode) { function editorGetAutoSavedDoc(form) {
editorMode[this.editor_sequence] = (mode =='HTMLSrc') ? 'html' : 'wysiwyg'; 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");
xe.XE_GET_WYSYWYG_CONTENT = jQuery.Class({ 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);
name : "XE_GET_WYSYWYG_CONTENT",
}, 0);
$ON_MSG_APP_READY : function() {
this.oApp.addConverter("IR_TO_WYSIWYG", this.TO_WYSIWYG_SET); }
this.oApp.addConverter("IR_TO_HTMLSrc", this.IR_TO_HTMLSrc);
}, // WYSIWYG 모드를 저장하는 확장기능
xe.XE_GET_WYSYWYG_MODE = jQuery.Class({
TO_WYSIWYG_SET : function(content) { name : "XE_GET_WYSYWYG_MODE",
// src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경
content = content.replace(/(src=|href=|url\()("|\')*([^"\'\)]+)("|\'|\))*(\s|>)*/ig, function(m0,m1,m2,m3,m4,m5) { $init : function(editor_sequence) {
if(m1=="url(") { m2=''; m4=')'; } else { if(typeof(m2)=='undefined') m2 = '"'; if(typeof(m4)=='undefined') m4 = '"'; if(typeof(m5)=='undefined') m5 = ''; } this.editor_sequence = editor_sequence;
var val = jQuery.trim(m3).replace(/^\.\//,''); },
if(/^(http|https|ftp|telnet|mms|\/|\.\.)/i.test(val)) return m0;
return m1+m2+request_uri+val+m4+m5; $ON_CHANGE_EDITING_MODE : function(mode) {
}); editorMode[this.editor_sequence] = (mode =='HTMLSrc') ? 'html' : 'wysiwyg';
}
return content; });
},
// 이미지등의 상대경로를 절대경로로 바꾸는 플러그인
IR_TO_HTMLSrc : function(content) { xe.XE_GET_WYSYWYG_CONTENT = jQuery.Class({
// src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경 name : "XE_GET_WYSYWYG_CONTENT",
content = content.replace(/(src=|href=|url\()("|\')*([^"\'\)]+)("|\'|\))*(\s|>|\))*/ig, function(m0,m1,m2,m3,m4,m5) {
var uriReg = new RegExp('^'+request_uri.replace('\/','\\/'),'ig'); $ON_MSG_APP_READY : function() {
if(m1=="url(") { m2=''; m4=')'; } else { if(typeof(m2)=='undefined') m2 = '"'; if(typeof(m4)=='undefined') m4 = '"'; if(typeof(m5)=='undefined') m5 = ''; } this.oApp.addConverter("IR_TO_WYSIWYG", this.TO_WYSIWYG_SET);
var val = jQuery.trim(m3); this.oApp.addConverter("IR_TO_HTMLSrc", this.IR_TO_HTMLSrc);
if(uriReg.test(val)) val = val.replace(uriReg,''); },
else val = m3;
return m1+m2+val+m4+m5; TO_WYSIWYG_SET : function(content) {
}); // src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경
return content; content = content.replace(/(src=|href=|url\()("|\')*([^"\'\)]+)("|\'|\))*(\s|>)*/ig, function(m0,m1,m2,m3,m4,m5) {
if(m1=="url(") { m2=''; m4=')'; } else { if(typeof(m2)=='undefined') m2 = '"'; if(typeof(m4)=='undefined') m4 = '"'; if(typeof(m5)=='undefined') m5 = ''; }
} var val = jQuery.trim(m3).replace(/^\.\//,'');
}); if(/^(http|https|ftp|telnet|mms|\/|\.\.)/i.test(val)) return m0;
return m1+m2+request_uri+val+m4+m5;
// 서식 기본 내용을 보존 });
xe.XE_PreservTemplate = jQuery.Class({
name : "XE_PreservTemplate", return content;
isRun : false, },
$BEFORE_SET_IR : function(content) { IR_TO_HTMLSrc : function(content) {
if(!this.isRun && !content) { // src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경
this.isRun = true; content = content.replace(/(src=|href=|url\()("|\')*([^"\'\)]+)("|\'|\))*(\s|>|\))*/ig, function(m0,m1,m2,m3,m4,m5) {
return false; var uriReg = new RegExp('^'+request_uri.replace('\/','\\/'),'ig');
} if(m1=="url(") { m2=''; m4=')'; } else { if(typeof(m2)=='undefined') m2 = '"'; if(typeof(m4)=='undefined') m4 = '"'; if(typeof(m5)=='undefined') m5 = ''; }
} var val = jQuery.trim(m3);
}); if(uriReg.test(val)) val = val.replace(uriReg,'');
else val = m3;
// 미리보기 확장기능 return m1+m2+val+m4+m5;
xe.XE_Preview = jQuery.Class({ });
name : "XE_Preview", return content;
elPreviewButton : null,
}
$init : function(elAppContainer) { });
this._assignHTMLObjects(elAppContainer);
}, // 서식 기본 내용을 보존
xe.XE_PreservTemplate = jQuery.Class({
_assignHTMLObjects : function(elAppContainer) { name : "XE_PreservTemplate",
this.elPreviewButton = jQuery("BUTTON.xpress_xeditor_preview_button", elAppContainer); isRun : false,
},
$BEFORE_SET_IR : function(content) {
$ON_MSG_APP_READY : function() { if(!this.isRun && !content) {
this.oApp.registerBrowserEvent(this.elPreviewButton.get(0), "click", "EVENT_PREVIEW", []); this.isRun = true;
}, return false;
}
$ON_EVENT_PREVIEW : function() { }
// TODO : 버튼이 눌렸을 때의 동작 정의 });
}
}); // 미리보기 확장기능
xe.XE_Preview = jQuery.Class({
name : "XE_Preview",
elPreviewButton : null,
$init : function(elAppContainer) {
this._assignHTMLObjects(elAppContainer);
},
_assignHTMLObjects : function(elAppContainer) {
this.elPreviewButton = jQuery("BUTTON.xpress_xeditor_preview_button", elAppContainer);
},
$ON_MSG_APP_READY : function() {
this.oApp.registerBrowserEvent(this.elPreviewButton.get(0), "click", "EVENT_PREVIEW", []);
},
$ON_EVENT_PREVIEW : function() {
// TODO : 버튼이 눌렸을 때의 동작 정의
}
});

View file

@ -1,41 +1,41 @@
function editorStartTextarea(editor_sequence, content_key, primary_key) { function editorStartTextarea(editor_sequence, content_key, primary_key) {
var obj = xGetElementById('editor_'+editor_sequence); var obj = xGetElementById('editor_'+editor_sequence);
var use_html = xGetElementById('htm_'+editor_sequence).value; var use_html = xGetElementById('htm_'+editor_sequence).value;
obj.form.setAttribute('editor_sequence', editor_sequence); obj.form.setAttribute('editor_sequence', editor_sequence);
obj.style.width = '99%'; obj.style.width = '99%';
editorRelKeys[editor_sequence] = new Array(); editorRelKeys[editor_sequence] = new Array();
editorRelKeys[editor_sequence]["primary"] = obj.form[primary_key]; editorRelKeys[editor_sequence]["primary"] = obj.form[primary_key];
editorRelKeys[editor_sequence]["content"] = obj.form[content_key]; editorRelKeys[editor_sequence]["content"] = obj.form[content_key];
editorRelKeys[editor_sequence]["func"] = editorGetContentTextarea; editorRelKeys[editor_sequence]["func"] = editorGetContentTextarea;
var content = obj.form[content_key].value; var content = obj.form[content_key].value;
if(use_html) { if(use_html) {
content = content.replace(/<br([^>]*)>/ig,"\n"); content = content.replace(/<br([^>]*)>/ig,"\n");
if(use_html!='br') { if(use_html!='br') {
content = content.replace(/&lt;/g, "<"); content = content.replace(/&lt;/g, "<");
content = content.replace(/&gt;/g, ">"); content = content.replace(/&gt;/g, ">");
content = content.replace(/&quot;/g, '"'); content = content.replace(/&quot;/g, '"');
content = content.replace(/&amp;/g, "&"); content = content.replace(/&amp;/g, "&");
} }
} }
obj.value = content; obj.value = content;
} }
function editorGetContentTextarea(editor_sequence) { function editorGetContentTextarea(editor_sequence) {
var obj = xGetElementById('editor_'+editor_sequence); var obj = xGetElementById('editor_'+editor_sequence);
var use_html = xGetElementById('htm_'+editor_sequence).value; var use_html = xGetElementById('htm_'+editor_sequence).value;
var content = obj.value.trim(); var content = obj.value.trim();
if(use_html) { if(use_html) {
if(use_html!='br') { if(use_html!='br') {
content = content.replace(/&/g, "&amp;"); content = content.replace(/&/g, "&amp;");
content = content.replace(/</g, "&lt;"); content = content.replace(/</g, "&lt;");
content = content.replace(/>/g, "&gt;"); content = content.replace(/>/g, "&gt;");
content = content.replace(/\"/g, "&quot;"); content = content.replace(/\"/g, "&quot;");
} }
content = content.replace(/(\r\n|\n)/g, "<br />"); content = content.replace(/(\r\n|\n)/g, "<br />");
} }
return content; return content;
} }

View file

@ -1,110 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<skin version="0.2"> <skin version="0.2">
<title xml:lang="ko">XpressEditor Skin</title> <title xml:lang="ko">XpressEditor Skin</title>
<title xml:lang="es">XpressEditor Skin</title> <title xml:lang="es">XpressEditor Skin</title>
<title xml:lang="en">XpressEditor Skin</title> <title xml:lang="en">XpressEditor Skin</title>
<title xml:lang="jp">XpressEditorスキン</title> <title xml:lang="jp">XpressEditorスキン</title>
<title xml:lang="zh-CN">XpressEditor皮肤</title> <title xml:lang="zh-CN">XpressEditor皮肤</title>
<title xml:lang="zh-TW">XpressEditor面板</title>  <title xml:lang="zh-TW">XpressEditor面板</title> 
<description xml:lang="ko"> <description xml:lang="ko">
XpressEditor based on SmartEditor Basic by 행복한고니 XpressEditor based on SmartEditor Basic by 행복한고니
</description> </description>
<description xml:lang="en"> <description xml:lang="en">
XpressEditor based on SmartEditor Basic by gony XpressEditor based on SmartEditor Basic by gony
</description> </description>
<description xml:lang="es"> <description xml:lang="es">
XpressEditor based on SmartEditor Basic by gony XpressEditor based on SmartEditor Basic by gony
</description> </description>
<description xml:lang="jp"> <description xml:lang="jp">
XpressEditor based on SmartEditor Basic by gony XpressEditor based on SmartEditor Basic by gony
</description> </description>
<description xml:lang="zh-CN"> <description xml:lang="zh-CN">
XpressEditor based on SmartEditor Basic by gony XpressEditor based on SmartEditor Basic by gony
</description> </description>
<description xml:lang="zh-TW"> <description xml:lang="zh-TW">
XpressEditor based on SmartEditor Basic by gony XpressEditor based on SmartEditor Basic by gony
</description> </description>
<version>0.3.16</version> <version>0.3.16</version>
<date>2009-03-22</date> <date>2009-03-22</date>
<author email_address="gonom9@gmail.com" link="http://mygony.com"> <author email_address="gonom9@gmail.com" link="http://mygony.com">
<name xml:lang="ko">행복한고니</name> <name xml:lang="ko">행복한고니</name>
<name xml:lang="es">gony</name> <name xml:lang="es">gony</name>
<name xml:lang="en">gony</name> <name xml:lang="en">gony</name>
<name xml:lang="jp">gony</name> <name xml:lang="jp">gony</name>
<name xml:lang="zh-CN">gony</name> <name xml:lang="zh-CN">gony</name>
<name xml:lang="zh-TW">gony</name> <name xml:lang="zh-TW">gony</name>
</author> </author>
<colorset> <colorset>
<color name="white"> <color name="white">
<title xml:lang="ko">하얀색(기본)</title> <title xml:lang="ko">하얀색(기본)</title>
<title xml:lang="jp">白(デフォルト)</title> <title xml:lang="jp">白(デフォルト)</title>
<title xml:lang="zh-CN">白色(基本)</title> <title xml:lang="zh-CN">白色(基本)</title>
<title xml:lang="en">White (default)</title> <title xml:lang="en">White (default)</title>
<title xml:lang="es">Blanco (por defecto)</title> <title xml:lang="es">Blanco (por defecto)</title>
<title xml:lang="zh-TW">白色(預設)</title> <title xml:lang="zh-TW">白色(預設)</title>
</color> </color>
<color name="black"> <color name="black">
<title xml:lang="ko">검은색</title> <title xml:lang="ko">검은색</title>
<title xml:lang="jp"></title> <title xml:lang="jp"></title>
<title xml:lang="en">Black</title> <title xml:lang="en">Black</title>
<title xml:lang="ru">Черного</title> <title xml:lang="ru">Черного</title>
<title xml:lang="es">Negro</title> <title xml:lang="es">Negro</title>
<title xml:lang="zh-CN">黑色</title> <title xml:lang="zh-CN">黑色</title>
<title xml:lang="zh-TW">黑色</title> <title xml:lang="zh-TW">黑色</title>
</color> </color>
<color name="white_texteditor"> <color name="white_texteditor">
<title xml:lang="ko">하얀색 텍스트편집기(자동 줄 바꿈)</title> <title xml:lang="ko">하얀색 텍스트편집기(자동 줄 바꿈)</title>
<title xml:lang="jp">白色テキストエディター(自動に改行を入れる)</title> <title xml:lang="jp">白色テキストエディター(自動に改行を入れる)</title>
<title xml:lang="en">White Text Editor(Auto Line Break)</title> <title xml:lang="en">White Text Editor(Auto Line Break)</title>
<title xml:lang="ru">White Text Editor(Auto Line Break)</title> <title xml:lang="ru">White Text Editor(Auto Line Break)</title>
<title xml:lang="es">Editor de texto en blanco (Auto de línea)</title> <title xml:lang="es">Editor de texto en blanco (Auto de línea)</title>
<title xml:lang="zh-CN">白色文本编辑器(自动换行)</title> <title xml:lang="zh-CN">白色文本编辑器(自动换行)</title>
<title xml:lang="zh-TW">白色文字編輯器(Auto Line Break)</title> <title xml:lang="zh-TW">白色文字編輯器(Auto Line Break)</title>
</color> </color>
<color name="black_texteditor"> <color name="black_texteditor">
<title xml:lang="ko">검은색 텍스트편집기(자동 줄 바꿈)</title> <title xml:lang="ko">검은색 텍스트편집기(자동 줄 바꿈)</title>
<title xml:lang="jp">黒色テキストエディター(自動に改行を入れる)</title> <title xml:lang="jp">黒色テキストエディター(自動に改行を入れる)</title>
<title xml:lang="en">Black Text Editor(Auto Line Break)</title> <title xml:lang="en">Black Text Editor(Auto Line Break)</title>
<title xml:lang="ru">Black Text Editor(Auto Line Break)</title> <title xml:lang="ru">Black Text Editor(Auto Line Break)</title>
<title xml:lang="es">Editor de texto negro (salto de línea automático)</title> <title xml:lang="es">Editor de texto negro (salto de línea automático)</title>
<title xml:lang="zh-CN">黑色文本编辑器(自动换行)</title> <title xml:lang="zh-CN">黑色文本编辑器(自动换行)</title>
<title xml:lang="zh-TW">黑色文字編輯器(Auto Line Break)</title> <title xml:lang="zh-TW">黑色文字編輯器(Auto Line Break)</title>
</color> </color>
<color name="white_text_usehtml"> <color name="white_text_usehtml">
<title xml:lang="ko">하얀색 텍스트편집기(HTML 사용)</title> <title xml:lang="ko">하얀색 텍스트편집기(HTML 사용)</title>
<title xml:lang="jp">白色テキストエディター(HTMLタグを使う)</title> <title xml:lang="jp">白色テキストエディター(HTMLタグを使う)</title>
<title xml:lang="en">White Text Editor(Use HTML)</title> <title xml:lang="en">White Text Editor(Use HTML)</title>
<title xml:lang="ru">White Text Editor(Use HTML)</title> <title xml:lang="ru">White Text Editor(Use HTML)</title>
<title xml:lang="es">Editor de texto en blanco (Uso de HTML)</title> <title xml:lang="es">Editor de texto en blanco (Uso de HTML)</title>
<title xml:lang="zh-CN">白色文本编辑器(使用HTML)</title> <title xml:lang="zh-CN">白色文本编辑器(使用HTML)</title>
<title xml:lang="zh-TW">白色文字編輯器(Use HTML)</title> <title xml:lang="zh-TW">白色文字編輯器(Use HTML)</title>
</color> </color>
<color name="black_text_usehtml"> <color name="black_text_usehtml">
<title xml:lang="ko">검은색 텍스트편집기(HTML 사용)</title> <title xml:lang="ko">검은색 텍스트편집기(HTML 사용)</title>
<title xml:lang="jp">黒色テキストエディター(HTMLタグを使う)</title> <title xml:lang="jp">黒色テキストエディター(HTMLタグを使う)</title>
<title xml:lang="en">Black Text Editor(Use HTML)</title> <title xml:lang="en">Black Text Editor(Use HTML)</title>
<title xml:lang="ru">Black Text Editor(Use HTML)</title> <title xml:lang="ru">Black Text Editor(Use HTML)</title>
<title xml:lang="es">Editor de texto negro (Uso de HTML)</title> <title xml:lang="es">Editor de texto negro (Uso de HTML)</title>
<title xml:lang="zh-CN">黑色文本编辑器(使用HTML)</title> <title xml:lang="zh-CN">黑色文本编辑器(使用HTML)</title>
<title xml:lang="zh-TW">黑色文字編輯器(Use HTML)</title> <title xml:lang="zh-TW">黑色文字編輯器(Use HTML)</title>
</color> </color>
<color name="white_text_nohtml"> <color name="white_text_nohtml">
<title xml:lang="ko">하얀색 텍스트편집기(HTML 사용 안함)</title> <title xml:lang="ko">하얀색 텍스트편집기(HTML 사용 안함)</title>
<title xml:lang="jp">白色テキストエディター(HTMLタグを使わない)</title> <title xml:lang="jp">白色テキストエディター(HTMLタグを使わない)</title>
<title xml:lang="en">White Text Editor(No HTML)</title> <title xml:lang="en">White Text Editor(No HTML)</title>
<title xml:lang="ru">White Text Editor(No HTML)</title> <title xml:lang="ru">White Text Editor(No HTML)</title>
<title xml:lang="es">Editor de texto en blanco (no HTML)</title> <title xml:lang="es">Editor de texto en blanco (no HTML)</title>
<title xml:lang="zh-CN">白色文本编辑器(不使用HTML)</title> <title xml:lang="zh-CN">白色文本编辑器(不使用HTML)</title>
<title xml:lang="zh-TW">白色文字編輯器(No HTML)</title> <title xml:lang="zh-TW">白色文字編輯器(No HTML)</title>
</color> </color>
<color name="black_text_nohtml"> <color name="black_text_nohtml">
<title xml:lang="ko">검은색 텍스트편집기(HTML 사용 안함)</title> <title xml:lang="ko">검은색 텍스트편집기(HTML 사용 안함)</title>
<title xml:lang="jp">黒色テキストエディター(HTMLタグを使わない)</title> <title xml:lang="jp">黒色テキストエディター(HTMLタグを使わない)</title>
<title xml:lang="en">Black Text Editor(No HTML)</title> <title xml:lang="en">Black Text Editor(No HTML)</title>
<title xml:lang="ru">Black Text Editor(No HTML)</title> <title xml:lang="ru">Black Text Editor(No HTML)</title>
<title xml:lang="es">Editor de texto negro (no HTML)</title> <title xml:lang="es">Editor de texto negro (no HTML)</title>
<title xml:lang="zh-CN">黑色文本编辑器(不使用HTML)</title> <title xml:lang="zh-CN">黑色文本编辑器(不使用HTML)</title>
<title xml:lang="zh-TW">黑色文字編輯器(No HTML)</title> <title xml:lang="zh-TW">黑色文字編輯器(No HTML)</title>
</color> </color>
</colorset> </colorset>
</skin> </skin>

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