diff --git a/Gruntfile.js b/Gruntfile.js
index eada99fb9..c98f6a5cd 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -60,6 +60,9 @@ module.exports = function(grunt) {
'modules/editor/skins/xpresseditor/js/xpresseditor.min.js': ['modules/editor/skins/xpresseditor/js/xpresseditor.js'],
'modules/editor/skins/xpresseditor/js/xe_textarea.min.js': ['modules/editor/skins/xpresseditor/js/xe_textarea.js'],
'modules/editor/tpl/js/editor_common.min.js': ['modules/editor/tpl/js/editor_common.js'],
+ 'modules/editor/tpl/js/swfupload.min.js': ['modules/editor/tpl/js/swfupload.js'],
+ 'modules/editor/tpl/js/uploader.min.js': ['modules/editor/tpl/js/uploader.js'],
+ 'modules/editor/tpl/js/editor.min.js': ['modules/editor/tpl/js/editor.js'],
// module/admin
'modules/admin/tpl/js/admin.min.js': ['modules/admin/tpl/js/admin.js'],
'modules/admin/tpl/js/config.min.js': ['modules/admin/tpl/js/config.js'],
diff --git a/modules/editor/tpl/js/editor.js b/modules/editor/tpl/js/editor.js
index 592a7165b..c16146354 100755
--- a/modules/editor/tpl/js/editor.js
+++ b/modules/editor/tpl/js/editor.js
@@ -14,52 +14,52 @@
// editor_sequence값에 해당하는 textarea object를 return
function editorGetTextArea(editor_sequence) {
- return jQuery('#editor_textarea_' + editor_sequence)[0];
+ return jQuery('#editor_textarea_' + editor_sequence)[0];
}
function editorGetPreviewArea(editor_sequence) {
- return jQuery( '#editor_preview_' + editor_sequence )[0];
+ return jQuery( '#editor_preview_' + editor_sequence )[0];
}
// editor_sequence에 해당하는 form문 구함
function editorGetForm(editor_sequence) {
- var iframe_obj = editorGetIFrame(editor_sequence);
- if(!iframe_obj) return;
+ var iframe_obj = editorGetIFrame(editor_sequence);
+ if(!iframe_obj) return;
- var fo_obj = iframe_obj.parentNode;
- while(fo_obj.nodeName != 'FORM') { fo_obj = fo_obj.parentNode; }
- if(fo_obj.nodeName == 'FORM') return fo_obj;
- return;
+ var fo_obj = iframe_obj.parentNode;
+ while(fo_obj.nodeName != 'FORM') { fo_obj = fo_obj.parentNode; }
+ if(fo_obj.nodeName == 'FORM') return fo_obj;
+ return;
}
// 에디터의 전체 내용 return
function editorGetContent_xe(editor_sequence) {
- var html = "";
- if(editorMode[editor_sequence]=='html') {
- var textarea_obj = editorGetTextArea(editor_sequence);
- if(!textarea_obj) return "";
- html = textarea_obj.value;
- } else {
- var iframe_obj = editorGetIFrame(editor_sequence);
- if(!iframe_obj) return "";
- html = jQuery(iframe_obj.contentWindow.document.body).html().replace(/^
]*)>$/i,'');
- }
- return html;
+ var html = "";
+ if(editorMode[editor_sequence]=='html') {
+ var textarea_obj = editorGetTextArea(editor_sequence);
+ if(!textarea_obj) return "";
+ html = textarea_obj.value;
+ } else {
+ var iframe_obj = editorGetIFrame(editor_sequence);
+ if(!iframe_obj) return "";
+ html = jQuery(iframe_obj.contentWindow.document.body).html().replace(/^
]*)>$/i,'');
+ }
+ return html;
}
// 에디터 내의 선택된 부분의 NODE를 return
function editorGetSelectedNode(editor_sequence) {
- var iframe_obj = editorGetIFrame(editor_sequence), w, range;
+ var iframe_obj = editorGetIFrame(editor_sequence), w, range;
w = iframe_obj.contentWindow;
- if(w.document.selection) {
- range = w.document.selection.createRange();
- return jQuery('
",e.target); - xPreventDefault(evt); - xStopPropagation(evt); - break; - // ie에서 ctrlKey + enter일 경우 P 태그 입력 - case 13 : - if(xIE4Up) { - if(e.target.parentElement.document.designMode!="On") return; - var obj = e.target.parentElement.document.selection.createRange(); - obj.pasteHTML('
');
- obj.select();
- evt.cancelBubble = true;
- evt.returnValue = false;
- return;
- }
- // bold
- case 98 :
- editorDo('Bold',null,e.target);
- xPreventDefault(evt);
- xStopPropagation(evt);
- break;
- // italic
- case 105 :
- editorDo('Italic',null,e.target);
- xPreventDefault(evt);
- xStopPropagation(evt);
- break;
- // underline
- case 117 :
- editorDo('Underline',null,e.target);
- xPreventDefault(evt);
- xStopPropagation(evt);
- break;
- //RemoveFormat
- case 100 :
- editorDo('RemoveFormat',null,e.target);
- xPreventDefault(evt);
- xStopPropagation(evt);
- break;
+ switch(e.keyCode) {
+ // ctrl+1~6
+ case 49 :
+ case 50 :
+ case 51 :
+ case 52 :
+ case 53 :
+ case 54 :
+ editorDo('formatblock'," ",e.target);
+ xPreventDefault(evt);
+ xStopPropagation(evt);
+ break;
+ // ie에서 ctrlKey + enter일 경우 P 태그 입력
+ case 13 :
+ if(xIE4Up) {
+ if(e.target.parentElement.document.designMode!="On") return;
+ var obj = e.target.parentElement.document.selection.createRange();
+ obj.pasteHTML(' ');
+ obj.select();
+ evt.cancelBubble = true;
+ evt.returnValue = false;
+ return;
+ }
+ // bold
+ case 98 :
+ editorDo('Bold',null,e.target);
+ xPreventDefault(evt);
+ xStopPropagation(evt);
+ break;
+ // italic
+ case 105 :
+ editorDo('Italic',null,e.target);
+ xPreventDefault(evt);
+ xStopPropagation(evt);
+ break;
+ // underline
+ case 117 :
+ editorDo('Underline',null,e.target);
+ xPreventDefault(evt);
+ xStopPropagation(evt);
+ break;
+ //RemoveFormat
+ case 100 :
+ editorDo('RemoveFormat',null,e.target);
+ xPreventDefault(evt);
+ xStopPropagation(evt);
+ break;
- // strike
- /*
- case 83 :
- case 115 :
- editorDo('StrikeThrough',null,e.target);
- xPreventDefault(evt);
- xStopPropagation(evt);
- break;
- */
- }
- }
+ // strike
+ /*
+ case 83 :
+ case 115 :
+ editorDo('StrikeThrough',null,e.target);
+ xPreventDefault(evt);
+ xStopPropagation(evt);
+ break;
+ */
+ }
+ }
}
// 편집 기능 실행
function editorDo(command, value, target) {
- var doc = null;
+ var doc = null;
- // target이 object인지 editor_sequence인지에 따라 document를 구함
- if(typeof(target)=="object") {
- if(xIE4Up) doc = target.parentElement.document;
- else doc = target.parentNode;
- } else {
- var iframe_obj = editorGetIFrame(target);
- doc = iframe_obj.contentWindow.document;
- }
+ // target이 object인지 editor_sequence인지에 따라 document를 구함
+ if(typeof(target)=="object") {
+ if(xIE4Up) doc = target.parentElement.document;
+ else doc = target.parentNode;
+ } else {
+ var iframe_obj = editorGetIFrame(target);
+ doc = iframe_obj.contentWindow.document;
+ }
- var editor_sequence = doc.body.getAttribute('editor_sequence');
- if(editorMode[editor_sequence]) return;
+ var editor_sequence = doc.body.getAttribute('editor_sequence');
+ if(editorMode[editor_sequence]) return;
- // 포커스
- if(typeof(target)=="object") target.focus();
- else editorFocus(target);
+ // 포커스
+ if(typeof(target)=="object") target.focus();
+ else editorFocus(target);
- // 실행
- doc.execCommand(command, false, value);
+ // 실행
+ doc.execCommand(command, false, value);
- // 포커스
- if(typeof(target)=="object") target.focus();
- else editorFocus(target);
+ // 포커스
+ if(typeof(target)=="object") target.focus();
+ else editorFocus(target);
}
// 폰트를 변경
function editorChangeFontName(obj,srl) {
- var value = obj.options[obj.selectedIndex].value;
- if(!value) return;
- editorDo('FontName',value,srl);
- obj.selectedIndex = 0;
+ var value = obj.options[obj.selectedIndex].value;
+ if(!value) return;
+ editorDo('FontName',value,srl);
+ obj.selectedIndex = 0;
}
function editorChangeFontSize(obj,srl) {
- var value = obj.options[obj.selectedIndex].value;
- if(!value) return;
- editorDo('FontSize',value,srl);
- obj.selectedIndex = 0;
+ var value = obj.options[obj.selectedIndex].value;
+ if(!value) return;
+ editorDo('FontSize',value,srl);
+ obj.selectedIndex = 0;
}
function editorUnDo(obj,srl) {
- editorDo('undo','',srl);
- obj.selectedIndex = 0;
+ editorDo('undo','',srl);
+ obj.selectedIndex = 0;
}
function editorReDo(obj,srl) {
- editorDo('redo','',srl);
- obj.selectedIndex = 0;
+ editorDo('redo','',srl);
+ obj.selectedIndex = 0;
}
function editorChangeHeader(obj,srl) {
- var value = obj.options[obj.selectedIndex].value;
- if(!value) return;
- value = "<"+value+">";
- editorDo('formatblock',value,srl);
- obj.selectedIndex = 0;
+ var value = obj.options[obj.selectedIndex].value;
+ if(!value) return;
+ value = "<"+value+">";
+ editorDo('formatblock',value,srl);
+ obj.selectedIndex = 0;
}
/**
@@ -426,100 +426,100 @@ function editorChangeHeader(obj,srl) {
function editorChangeMode(mode, editor_sequence) {
- if(mode == 'html' || mode ==''){
- var expire = new Date();
- expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
- xSetCookie('editor_mode', mode, expire);
- }
+ if(mode == 'html' || mode ==''){
+ var expire = new Date();
+ expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
+ xSetCookie('editor_mode', mode, expire);
+ }
- var iframe_obj = editorGetIFrame(editor_sequence);
- if(!iframe_obj) return;
+ var iframe_obj = editorGetIFrame(editor_sequence);
+ if(!iframe_obj) return;
- var textarea_obj = editorGetTextArea(editor_sequence);
- var preview_obj = editorGetPreviewArea(editor_sequence);
- var contentDocument = iframe_obj.contentWindow.document;
+ var textarea_obj = editorGetTextArea(editor_sequence);
+ var preview_obj = editorGetPreviewArea(editor_sequence);
+ var contentDocument = iframe_obj.contentWindow.document;
- var html = null;
- if(editorMode[editor_sequence]=='html') {
- html = textarea_obj.value;
- contentDocument.body.innerHTML = textarea_obj.value;
- } else if (editorMode[editor_sequence]=='preview') {
+ var html = null;
+ if(editorMode[editor_sequence]=='html') {
+ html = textarea_obj.value;
+ contentDocument.body.innerHTML = textarea_obj.value;
+ } else if (editorMode[editor_sequence]=='preview') {
// html = xInnerHtml(preview_obj);
- html = textarea_obj.value;
- preview_obj.contentWindow.document.body.innerHTML = '';
+ html = textarea_obj.value;
+ preview_obj.contentWindow.document.body.innerHTML = '';
// xAddEventListener(xGetElementById('editor_preview_'+editor_sequence), 'load', function(){setPreviewHeight(editor_sequence)});
- } else {
- html = contentDocument.body.innerHTML;
- textarea_obj.value = html
- html = html.replace(/ ",b.target),xPreventDefault(a),xStopPropagation(a);break;case 13:if(xIE4Up){if("On"!=b.target.parentElement.document.designMode)return;var c=b.target.parentElement.document.selection.createRange();return c.pasteHTML(" "),c.select(),a.cancelBubble=!0,a.returnValue=!1,void 0}case 98:editorDo("Bold",null,b.target),xPreventDefault(a),xStopPropagation(a);break;case 105:editorDo("Italic",null,b.target),xPreventDefault(a),xStopPropagation(a);break;case 117:editorDo("Underline",null,b.target),xPreventDefault(a),xStopPropagation(a);break;case 100:editorDo("RemoveFormat",null,b.target),xPreventDefault(a),xStopPropagation(a)}}}}}function editorDo(a,b,c){var d=null;if("object"==typeof c)d=xIE4Up?c.parentElement.document:c.parentNode;else{var e=editorGetIFrame(c);d=e.contentWindow.document}var f=d.body.getAttribute("editor_sequence");editorMode[f]||("object"==typeof c?c.focus():editorFocus(c),d.execCommand(a,!1,b),"object"==typeof c?c.focus():editorFocus(c))}function editorChangeFontName(a,b){var c=a.options[a.selectedIndex].value;c&&(editorDo("FontName",c,b),a.selectedIndex=0)}function editorChangeFontSize(a,b){var c=a.options[a.selectedIndex].value;c&&(editorDo("FontSize",c,b),a.selectedIndex=0)}function editorUnDo(a,b){editorDo("undo","",b),a.selectedIndex=0}function editorReDo(a,b){editorDo("redo","",b),a.selectedIndex=0}function editorChangeHeader(a,b){var c=a.options[a.selectedIndex].value;c&&(c="<"+c+">",editorDo("formatblock",c,b),a.selectedIndex=0)}function editorChangeMode(a,b){if("html"==a||""==a){var c=new Date;c.setTime(c.getTime()+6048e8),xSetCookie("editor_mode",a,c)}var d=editorGetIFrame(b);if(d){var e=editorGetTextArea(b),f=editorGetPreviewArea(b),g=d.contentWindow.document,h=null;if("html"==editorMode[b]?(h=e.value,g.body.innerHTML=e.value):"preview"==editorMode[b]?(h=e.value,f.contentWindow.document.body.innerHTML=""):(h=g.body.innerHTML,e.value=h,h=h.replace(/
/ig,"
\n");
- html = html.replace(/
\n\n/ig,"
\n");
- }
+ } else {
+ html = contentDocument.body.innerHTML;
+ textarea_obj.value = html
+ html = html.replace(/
/ig,"
\n");
+ html = html.replace(/
\n\n/ig,"
\n");
+ }
- // html 편집 사용시
- if(mode == 'html' && textarea_obj) {
- preview_obj.style.display='none';
- if(xGetElementById('fileUploader_'+editor_sequence)) xGetElementById('fileUploader_'+editor_sequence).style.display='block';
- textarea_obj.value = html;
- xWidth(textarea_obj, xWidth(iframe_obj.parentNode));
- xHeight(textarea_obj, xHeight(iframe_obj.parentNode));
- editorMode[editor_sequence] = 'html';
+ // html 편집 사용시
+ if(mode == 'html' && textarea_obj) {
+ preview_obj.style.display='none';
+ if(xGetElementById('fileUploader_'+editor_sequence)) xGetElementById('fileUploader_'+editor_sequence).style.display='block';
+ textarea_obj.value = html;
+ xWidth(textarea_obj, xWidth(iframe_obj.parentNode));
+ xHeight(textarea_obj, xHeight(iframe_obj.parentNode));
+ editorMode[editor_sequence] = 'html';
- if(xGetElementById('xeEditor_'+editor_sequence)) {
- xGetElementById('xeEditor_'+editor_sequence).className = 'xeEditor html';
- xGetElementById('use_rich_'+editor_sequence).className = '';
- xGetElementById('preview_html_'+editor_sequence).className = '';
- xGetElementById('use_html_'+editor_sequence).className = 'active';
- }
- // 미리보기
- } else if(mode == 'preview' && preview_obj) {
- preview_obj.style.display='';
- if(xGetElementById('fileUploader_'+editor_sequence)) xGetElementById('fileUploader_'+editor_sequence).style.display='none';
+ if(xGetElementById('xeEditor_'+editor_sequence)) {
+ xGetElementById('xeEditor_'+editor_sequence).className = 'xeEditor html';
+ xGetElementById('use_rich_'+editor_sequence).className = '';
+ xGetElementById('preview_html_'+editor_sequence).className = '';
+ xGetElementById('use_html_'+editor_sequence).className = 'active';
+ }
+ // 미리보기
+ } else if(mode == 'preview' && preview_obj) {
+ preview_obj.style.display='';
+ if(xGetElementById('fileUploader_'+editor_sequence)) xGetElementById('fileUploader_'+editor_sequence).style.display='none';
- var fo_obj = xGetElementById("preview_form");
- if(!fo_obj) {
- fo_obj = xCreateElement('form');
- fo_obj.id = "preview_form";
- fo_obj.method = "post";
- fo_obj.action = request_uri;
- fo_obj.target = "editor_preview_"+editor_sequence;
- xInnerHtml(fo_obj,'');
- document.body.appendChild(fo_obj);
- }
- fo_obj.content.value = html;
- fo_obj.submit();
+ var fo_obj = xGetElementById("preview_form");
+ if(!fo_obj) {
+ fo_obj = xCreateElement('form');
+ fo_obj.id = "preview_form";
+ fo_obj.method = "post";
+ fo_obj.action = request_uri;
+ fo_obj.target = "editor_preview_"+editor_sequence;
+ xInnerHtml(fo_obj,'');
+ document.body.appendChild(fo_obj);
+ }
+ fo_obj.content.value = html;
+ fo_obj.submit();
- xWidth(preview_obj, xWidth(iframe_obj.parentNode));
- editorMode[editor_sequence] = 'preview';
+ xWidth(preview_obj, xWidth(iframe_obj.parentNode));
+ editorMode[editor_sequence] = 'preview';
- if(xGetElementById('xeEditor_'+editor_sequence)) {
- xGetElementById('xeEditor_'+editor_sequence).className = 'xeEditor preview';
- xGetElementById('use_rich_'+editor_sequence).className = '';
- xGetElementById('preview_html_'+editor_sequence).className = 'active';
- if(xGetElementById('use_html_'+editor_sequence)) xGetElementById('use_html_'+editor_sequence).className = '';
- }
- // 위지윅 모드 사용시
- } else {
- preview_obj.style.display='none';
- if(xGetElementById('fileUploader_'+editor_sequence)) xGetElementById('fileUploader_'+editor_sequence).style.display='block';
- contentDocument.body.innerHTML = html;
- editorMode[editor_sequence] = null;
+ if(xGetElementById('xeEditor_'+editor_sequence)) {
+ xGetElementById('xeEditor_'+editor_sequence).className = 'xeEditor preview';
+ xGetElementById('use_rich_'+editor_sequence).className = '';
+ xGetElementById('preview_html_'+editor_sequence).className = 'active';
+ if(xGetElementById('use_html_'+editor_sequence)) xGetElementById('use_html_'+editor_sequence).className = '';
+ }
+ // 위지윅 모드 사용시
+ } else {
+ preview_obj.style.display='none';
+ if(xGetElementById('fileUploader_'+editor_sequence)) xGetElementById('fileUploader_'+editor_sequence).style.display='block';
+ contentDocument.body.innerHTML = html;
+ editorMode[editor_sequence] = null;
- if(xGetElementById('xeEditor_'+editor_sequence)) {
- xGetElementById('xeEditor_'+editor_sequence).className = 'xeEditor rich';
- xGetElementById('use_rich_'+editor_sequence).className = 'active';
- xGetElementById('preview_html_'+editor_sequence).className = '';
- if(xGetElementById('use_html_'+editor_sequence)) xGetElementById('use_html_'+editor_sequence).className = '';
- }
- }
+ if(xGetElementById('xeEditor_'+editor_sequence)) {
+ xGetElementById('xeEditor_'+editor_sequence).className = 'xeEditor rich';
+ xGetElementById('use_rich_'+editor_sequence).className = 'active';
+ xGetElementById('preview_html_'+editor_sequence).className = '';
+ if(xGetElementById('use_html_'+editor_sequence)) xGetElementById('use_html_'+editor_sequence).className = '';
+ }
+ }
}
// Editor Info Close
function closeEditorInfo(editor_sequence) {
- xGetElementById('editorInfo_'+editor_sequence).style.display='none';
- var expire = new Date();
- expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
- xSetCookie('EditorInfo', '1', expire);
+ xGetElementById('editorInfo_'+editor_sequence).style.display='none';
+ var expire = new Date();
+ expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
+ xSetCookie('EditorInfo', '1', expire);
}
@@ -528,39 +528,39 @@ function showEditorHelp(e,editor_sequence){
}
function showEditorExtension(evt,editor_sequence){
- var oid = '#editorExtension_'+editor_sequence;
- var e = new xEvent(evt);
- if(jQuery(oid).hasClass('extension2')){
+ var oid = '#editorExtension_'+editor_sequence;
+ var e = new xEvent(evt);
+ if(jQuery(oid).hasClass('extension2')){
jQuery(oid).addClass('open');
- if(e.pageX <= xWidth('editor_component_'+editor_sequence)){
+ if(e.pageX <= xWidth('editor_component_'+editor_sequence)){
jQuery('#editor_component_'+editor_sequence).css('right','auto').css('left', 0);
- }else{
+ }else{
jQuery('#editor_component_'+editor_sequence).css('right', 0).css('left', 'auto');
- }
- }else{
+ }
+ }else{
jQuery(oid).attr('class', 'extension2');
- }
+ }
}
function showPreviewContent(editor_sequence) {
- if(typeof(editor_sequence)=='undefined') return;
- if(typeof(_editorFontColor[editor_sequence])=='undefined') return;
- var preview_obj = editorGetPreviewArea(editor_sequence);
- preview_obj.contentWindow.document.body.style.color = _editorFontColor[editor_sequence];
+ if(typeof(editor_sequence)=='undefined') return;
+ if(typeof(_editorFontColor[editor_sequence])=='undefined') return;
+ var preview_obj = editorGetPreviewArea(editor_sequence);
+ preview_obj.contentWindow.document.body.style.color = _editorFontColor[editor_sequence];
}
function setPreviewHeight(editor_sequence){
- var h = xGetElementById('editor_preview_'+editor_sequence).contentWindow.document.body.scrollHeight;
- if(h < 400) h=400;
- xHeight('editor_preview_'+editor_sequence,h+20);
+ var h = xGetElementById('editor_preview_'+editor_sequence).contentWindow.document.body.scrollHeight;
+ if(h < 400) h=400;
+ xHeight('editor_preview_'+editor_sequence,h+20);
}
function getAutoSavedSrl(ret_obj, response_tags, c) {
- var editor_sequence = ret_obj['editor_sequence'];
- var primary_key = ret_obj['key'];
- var fo_obj = editorGetForm(editor_sequence);
+ var editor_sequence = ret_obj['editor_sequence'];
+ var primary_key = ret_obj['key'];
+ var fo_obj = editorGetForm(editor_sequence);
- fo_obj[primary_key].value = ret_obj['document_srl'];
- if(uploadSettingObj[editor_sequence]) editorUploadInit(uploadSettingObj[editor_sequence], true);
+ fo_obj[primary_key].value = ret_obj['document_srl'];
+ if(uploadSettingObj[editor_sequence]) editorUploadInit(uploadSettingObj[editor_sequence], true);
}
diff --git a/modules/editor/tpl/js/editor.min.js b/modules/editor/tpl/js/editor.min.js
new file mode 100644
index 000000000..3f9999bfa
--- /dev/null
+++ b/modules/editor/tpl/js/editor.min.js
@@ -0,0 +1 @@
+function editorGetTextArea(a){return jQuery("#editor_textarea_"+a)[0]}function editorGetPreviewArea(a){return jQuery("#editor_preview_"+a)[0]}function editorGetForm(a){var b=editorGetIFrame(a);if(b){for(var c=b.parentNode;"FORM"!=c.nodeName;)c=c.parentNode;return"FORM"==c.nodeName?c:void 0}}function editorGetContent_xe(a){var b="";if("html"==editorMode[a]){var c=editorGetTextArea(a);if(!c)return"";b=c.value}else{var d=editorGetIFrame(a);if(!d)return"";b=jQuery(d.contentWindow.document.body).html().replace(/^
]*)>$/i,"")}return b}function editorGetSelectedNode(a){var b,c,d=editorGetIFrame(a);return b=d.contentWindow,b.document.selection?(c=b.document.selection.createRange(),jQuery("
");var m=xGetElementById("for_ie_help_"+a);xIE4Up&&m&&(m.style.display="block"),editor_path=editor_path.replace(/^\.\//gi,"");var n=''+l+"";f.contentWindow.document.open("text/html","replace"),f.contentWindow.document.write(n),f.contentWindow.document.close(),editorMode[a]=null;try{f.contentWindow.document.designMode="On"}catch(o){}try{f.contentWindow.document.execCommand("undo",!1,null),f.contentWindow.document.execCommand("useCSS",!1,!0)}catch(o){}try{jQuery(f.contentWindow.document).unbind("dblclick.widget").bind("dblclick.widget",editorSearchComponent)}catch(o){}try{xIE4Up?xAddEventListener(f.contentWindow.document,"keydown",editorKeyPress):xAddEventListener(f.contentWindow.document,"keypress",editorKeyPress)}catch(o){}if("undefined"!=typeof g._saved_doc_title&&editorEnableAutoSave(g,a),"html"==xGetCookie("editor_mode")){var f=editorGetIFrame(a);xGetElementById("fileUploader_"+a)&&(xGetElementById("fileUploader_"+a).style.display="block"),textarea_obj=editorGetTextArea(a),textarea_obj.value=l,xWidth(textarea_obj,xWidth(f.parentNode)),xHeight(textarea_obj,xHeight(f.parentNode)),editorMode[a]="html",xGetElementById("xeEditor_"+a)&&(xGetElementById("xeEditor_"+a).className="xeEditor html",xGetElementById("use_rich_"+a).className="",xGetElementById("preview_html_"+a).className="",xGetElementById("use_html_"+a).className="active")}}}}function editorKeyPress(a){var b=new xEvent(a),c=b.target,d=null;if(d="BODY"==c.nodeName?c:c.firstChild.nextSibling){var e=d.getAttribute("editor_sequence");if(e){if(xIE4Up&&!b.ctrlKey&&!b.shiftKey&&13==b.keyCode&&!editorMode[e]){var f=editorGetIFrame(e);if(!f)return;var g=f.contentWindow.document,c=g.selection.createRange(),h=c.parentElement().tagName.toLowerCase();switch(h){case"li":return;default:c.pasteHTML("
")}return c.select(),a.cancelBubble=!0,a.returnValue=!1,void 0}if(115==b.keyCode&&(b.altKey||b.ctrlKey)){var f=editorGetIFrame(e);if(!f)return;var i=editorGetForm(e);if(!i)return;return editorRelKeys[e].content.value=editorGetContent(e),i.onsubmit&&i.onsubmit(),a.cancelBubble=!0,a.returnValue=!1,xPreventDefault(a),xStopPropagation(a),void 0}if(b.ctrlKey){var f=editorGetIFrame(e);if(!f)return;if(editorMode[e])return a.cancelBubble=!0,a.returnValue=!1,xPreventDefault(a),xStopPropagation(a),void 0;switch(b.keyCode){case 49:case 50:case 51:case 52:case 53:case 54:editorDo("formatblock","
/gi,"
\n"),h=h.replace(/
\n\n/gi,"
\n")),"html"==a&&e)f.style.display="none",xGetElementById("fileUploader_"+b)&&(xGetElementById("fileUploader_"+b).style.display="block"),e.value=h,xWidth(e,xWidth(d.parentNode)),xHeight(e,xHeight(d.parentNode)),editorMode[b]="html",xGetElementById("xeEditor_"+b)&&(xGetElementById("xeEditor_"+b).className="xeEditor html",xGetElementById("use_rich_"+b).className="",xGetElementById("preview_html_"+b).className="",xGetElementById("use_html_"+b).className="active");else if("preview"==a&&f){f.style.display="",xGetElementById("fileUploader_"+b)&&(xGetElementById("fileUploader_"+b).style.display="none");var i=xGetElementById("preview_form");i||(i=xCreateElement("form"),i.id="preview_form",i.method="post",i.action=request_uri,i.target="editor_preview_"+b,xInnerHtml(i,''),document.body.appendChild(i)),i.content.value=h,i.submit(),xWidth(f,xWidth(d.parentNode)),editorMode[b]="preview",xGetElementById("xeEditor_"+b)&&(xGetElementById("xeEditor_"+b).className="xeEditor preview",xGetElementById("use_rich_"+b).className="",xGetElementById("preview_html_"+b).className="active",xGetElementById("use_html_"+b)&&(xGetElementById("use_html_"+b).className=""))}else f.style.display="none",xGetElementById("fileUploader_"+b)&&(xGetElementById("fileUploader_"+b).style.display="block"),g.body.innerHTML=h,editorMode[b]=null,xGetElementById("xeEditor_"+b)&&(xGetElementById("xeEditor_"+b).className="xeEditor rich",xGetElementById("use_rich_"+b).className="active",xGetElementById("preview_html_"+b).className="",xGetElementById("use_html_"+b)&&(xGetElementById("use_html_"+b).className=""))}}function closeEditorInfo(a){xGetElementById("editorInfo_"+a).style.display="none";var b=new Date;b.setTime(b.getTime()+6048e8),xSetCookie("EditorInfo","1",b)}function showEditorHelp(a,b){jQuery("#helpList_"+b).toggleClass("open")}function showEditorExtension(a,b){var c="#editorExtension_"+b,d=new xEvent(a);jQuery(c).hasClass("extension2")?(jQuery(c).addClass("open"),d.pageX<=xWidth("editor_component_"+b)?jQuery("#editor_component_"+b).css("right","auto").css("left",0):jQuery("#editor_component_"+b).css("right",0).css("left","auto")):jQuery(c).attr("class","extension2")}function showPreviewContent(a){if("undefined"!=typeof a&&"undefined"!=typeof _editorFontColor[a]){var b=editorGetPreviewArea(a);b.contentWindow.document.body.style.color=_editorFontColor[a]}}function setPreviewHeight(a){var b=xGetElementById("editor_preview_"+a).contentWindow.document.body.scrollHeight;400>b&&(b=400),xHeight("editor_preview_"+a,b+20)}function getAutoSavedSrl(a){var b=a.editor_sequence,c=a.key,d=editorGetForm(b);d[c].value=a.document_srl,uploadSettingObj[b]&&editorUploadInit(uploadSettingObj[b],!0)}var _editorFontColor=new Array;
\ No newline at end of file
diff --git a/modules/editor/tpl/js/editor_admin.js b/modules/editor/tpl/js/editor_admin.js
index a3e5fd349..c66d495a7 100644
--- a/modules/editor/tpl/js/editor_admin.js
+++ b/modules/editor/tpl/js/editor_admin.js
@@ -1,17 +1,17 @@
/**
* @author NAVER (developers@xpressengine.com)
* @version 0.1
- * @brief 에디터 관리자 페이지용 스크립트
- **/
-
+ * @brief 에디터 관리자 페이지용 스크립트
+ **/
+
function doSetupComponent(component_name) {
- popopen(request_uri.setQuery('module','editor').setQuery('act','dispEditorAdminSetupComponent').setQuery('component_name',component_name), 'SetupComponent');
+ popopen(request_uri.setQuery('module','editor').setQuery('act','dispEditorAdminSetupComponent').setQuery('component_name',component_name), 'SetupComponent');
}
function toggleSectionCheckBox(obj, id) {
- var box_list = xGetElementsByTagName('input', xGetElementById(id));
- if(typeof(box_list.length)=='undefined') return;
- for(var i in box_list) {
- box_list[i].checked = obj.checked;
- }
+ var box_list = xGetElementsByTagName('input', xGetElementById(id));
+ if(typeof(box_list.length)=='undefined') return;
+ for(var i in box_list) {
+ box_list[i].checked = obj.checked;
+ }
}
diff --git a/modules/editor/tpl/js/editor_common.js b/modules/editor/tpl/js/editor_common.js
index 5d79974a0..f78d677e7 100644
--- a/modules/editor/tpl/js/editor_common.js
+++ b/modules/editor/tpl/js/editor_common.js
@@ -7,12 +7,12 @@ var editorRelKeys = new Array(); ///< 에디터와 각 모듈과의 연동을
var editorDragObj = {isDrag:false, y:0, obj:null, id:'', det:0, source_height:0}
function editorGetContent(editor_sequence) {
- // 입력된 내용을 받아옴
- var content = editorRelKeys[editor_sequence]["func"](editor_sequence);
+ // 입력된 내용을 받아옴
+ var content = editorRelKeys[editor_sequence]["func"](editor_sequence);
- // 첨부파일 링크시 url을 변경
- var reg_pattern = new RegExp( request_uri.replace(/\//g,'\\/')+"(files|common|modules|layouts|widgets)", 'ig' );
- return content.replace(reg_pattern, "$1");
+ // 첨부파일 링크시 url을 변경
+ var reg_pattern = new RegExp( request_uri.replace(/\//g,'\\/')+"(files|common|modules|layouts|widgets)", 'ig' );
+ return content.replace(reg_pattern, "$1");
}
// 에디터에 포커스를 줌
@@ -32,83 +32,83 @@ function editorFocus(editor_sequence) {
**/
// 자동 저장 활성화 시키는 함수 (50초마다 자동저장)
function editorEnableAutoSave(fo_obj, editor_sequence, callback) {
- var title = fo_obj.title.value;
- var content = editorRelKeys[editor_sequence]['content'].value;
+ var title = fo_obj.title.value;
+ var content = editorRelKeys[editor_sequence]['content'].value;
- editorAutoSaveObj = {"fo_obj":fo_obj, "editor_sequence":editor_sequence, "title":title, "content":content, locked:false};
+ editorAutoSaveObj = {"fo_obj":fo_obj, "editor_sequence":editor_sequence, "title":title, "content":content, locked:false};
clearTimeout(editorEnableAutoSave.timer);
- editorEnableAutoSave.timer = setTimeout(function(){_editorAutoSave(false, callback)}, 50000);
+ editorEnableAutoSave.timer = setTimeout(function(){_editorAutoSave(false, callback)}, 50000);
}
editorEnableAutoSave.timer = null;
// ajax를 이용하여 editor.procEditorSaveDoc 호출하여 자동 저장시킴 exe는 강제 코드
function _editorAutoSave(exe, callback) {
- var fo_obj = editorAutoSaveObj.fo_obj;
- var editor_sequence = editorAutoSaveObj.editor_sequence;
+ var fo_obj = editorAutoSaveObj.fo_obj;
+ var editor_sequence = editorAutoSaveObj.editor_sequence;
- // 50초마다 동기화를 시킴 강제 실행은 제외
- if(!exe) {
+ // 50초마다 동기화를 시킴 강제 실행은 제외
+ if(!exe) {
clearTimeout(editorEnableAutoSave.timer);
editorEnableAutoSave.timer = setTimeout(function(){ _editorAutoSave(exe, callback) }, 50000);
}
- // 현재 자동저장중이면 중지
- if(editorAutoSaveObj.locked == true) return;
+ // 현재 자동저장중이면 중지
+ if(editorAutoSaveObj.locked == true) return;
- // 대상이 없으면 자동저장 시키는 기능 자체를 중지
- if(!fo_obj || typeof(fo_obj.title)=='undefined' || !editor_sequence) return;
+ // 대상이 없으면 자동저장 시키는 기능 자체를 중지
+ if(!fo_obj || typeof(fo_obj.title)=='undefined' || !editor_sequence) return;
- // 자동저장을 위한 준비
- var title = fo_obj.title.value;
+ // 자동저장을 위한 준비
+ var title = fo_obj.title.value;
var content = '';
try{
content = editorGetContent(editor_sequence);
}catch(e){
}
- // 내용이 이전에 저장하였던 것과 다르면 자동 저장을 함 또는 강제 저장 설정시 자동 저장
- if(title != editorAutoSaveObj.title || content != editorAutoSaveObj.content || exe) {
- var params, oDate = new Date();
+ // 내용이 이전에 저장하였던 것과 다르면 자동 저장을 함 또는 강제 저장 설정시 자동 저장
+ if(title != editorAutoSaveObj.title || content != editorAutoSaveObj.content || exe) {
+ var params, oDate = new Date();
- params = {
+ params = {
title : title,
content : content,
mid : current_mid,
document_srl : editorRelKeys[editor_sequence]['primary'].value
};
- editorAutoSaveObj.title = title;
- editorAutoSaveObj.content = content;
+ editorAutoSaveObj.title = title;
+ editorAutoSaveObj.content = content;
- // 메시지 만들어서 보여줌
- jQuery("#editor_autosaved_message_"+editor_sequence).text(oDate.getHours()+':'+oDate.getMinutes()+' '+auto_saved_msg).show(300);
+ // 메시지 만들어서 보여줌
+ jQuery("#editor_autosaved_message_"+editor_sequence).text(oDate.getHours()+':'+oDate.getMinutes()+' '+auto_saved_msg).show(300);
- // 현재 자동저장중임을 설정
- editorAutoSaveObj.locked = true;
+ // 현재 자동저장중임을 설정
+ editorAutoSaveObj.locked = true;
- // 서버 호출 (서버와 교신중이라는 메세지를 보이지 않도록 함)
- show_waiting_message = false;
- exec_xml(
+ // 서버 호출 (서버와 교신중이라는 메세지를 보이지 않도록 함)
+ show_waiting_message = false;
+ exec_xml(
"editor",
"procEditorSaveDoc",
params,
function() {
var arg = jQuery.extend({}, params, {auto_saved_msg:auto_saved_msg});
-
+
editorAutoSaveObj.locked = false;
if(jQuery.isFunction(callback)) callback(arg);
}
);
- show_waiting_message = true;
- }
+ show_waiting_message = true;
+ }
}
// 자동저장된 모든 메세지를 삭제하는 루틴
function editorRemoveSavedDoc() {
- var param = new Array();
- param['mid'] = current_mid;
- exec_xml("editor","procEditorRemoveSavedDoc", param);
+ var param = new Array();
+ param['mid'] = current_mid;
+ exec_xml("editor","procEditorRemoveSavedDoc", param);
}
/**
@@ -117,26 +117,26 @@ function editorRemoveSavedDoc() {
// editor_sequence값에 해당하는 iframe의 object를 return
function editorGetIFrame(editor_sequence) {
- if(editorRelKeys != undefined && editorRelKeys[editor_sequence] != undefined && editorRelKeys[editor_sequence]['editor'] != undefined)
+ if(editorRelKeys != undefined && editorRelKeys[editor_sequence] != undefined && editorRelKeys[editor_sequence]['editor'] != undefined)
return editorRelKeys[editor_sequence]['editor'].getFrame(editor_sequence);
- return document.getElementById( 'editor_iframe_'+ editor_sequence );
+ return document.getElementById( 'editor_iframe_'+ editor_sequence );
}
function editorGetTextarea(editor_sequence) {
- return document.getElementById( 'editor_textarea_'+ editor_sequence );
+ return document.getElementById( 'editor_textarea_'+ editor_sequence );
}
// Editor Option Button
function eOptionOver(obj) {
- obj.style.marginTop='-21px';
- obj.style.zIndex='99';
+ obj.style.marginTop='-21px';
+ obj.style.zIndex='99';
}
function eOptionOut(obj) {
- obj.style.marginTop='0';
- obj.style.zIndex='1';
+ obj.style.marginTop='0';
+ obj.style.zIndex='1';
}
function eOptionClick(obj) {
- obj.style.marginTop='-42px';
- obj.style.zIndex='99';
+ obj.style.marginTop='-42px';
+ obj.style.zIndex='99';
}
/**
@@ -146,201 +146,201 @@ function eOptionClick(obj) {
// 에디터 상단의 컴포넌트 버튼 클릭시 action 처리 (마우스다운 이벤트 발생시마다 요청이 됨)
var editorPrevSrl = null;
function editorEventCheck(e) {
- editorPrevNode = null;
+ editorPrevNode = null;
- // 이벤트가 발생한 object의 ID를 구함
- var target_id = e.target.id;
- if(!target_id) return;
+ // 이벤트가 발생한 object의 ID를 구함
+ var target_id = e.target.id;
+ if(!target_id) return;
- // editor_sequence와 component name을 구함 (id가 포맷과 다르면 return)
- var info = target_id.split('_');
- if(info[0]!="component") return;
- var editor_sequence = info[1];
- var component_name = target_id.replace(/^component_[0-9]+_/,'');
+ // editor_sequence와 component name을 구함 (id가 포맷과 다르면 return)
+ var info = target_id.split('_');
+ if(info[0]!="component") return;
+ var editor_sequence = info[1];
+ var component_name = target_id.replace(/^component_[0-9]+_/,'');
- if(!editor_sequence || !component_name) return;
- if(editorMode[editor_sequence]=='html') return;
+ if(!editor_sequence || !component_name) return;
+ if(editorMode[editor_sequence]=='html') return;
- switch(component_name) {
+ switch(component_name) {
- // 기본 기능에 대한 동작 (바로 실행)
- case 'Bold' :
- case 'Italic' :
- case 'Underline' :
- case 'StrikeThrough' :
- case 'undo' :
- case 'redo' :
- case 'JustifyLeft' :
- case 'JustifyCenter' :
- case 'JustifyRight' :
- case 'JustifyFull' :
- case 'Indent' :
- case 'Outdent' :
- case 'InsertOrderedList' :
- case 'InsertUnorderedList' :
- case 'SaveAs' :
- case 'Print' :
- case 'Copy' :
- case 'Cut' :
- case 'Paste' :
- case 'RemoveFormat' :
- case 'Subscript' :
- case 'Superscript' :
- editorDo(component_name, '', editor_sequence);
- break;
+ // 기본 기능에 대한 동작 (바로 실행)
+ case 'Bold' :
+ case 'Italic' :
+ case 'Underline' :
+ case 'StrikeThrough' :
+ case 'undo' :
+ case 'redo' :
+ case 'JustifyLeft' :
+ case 'JustifyCenter' :
+ case 'JustifyRight' :
+ case 'JustifyFull' :
+ case 'Indent' :
+ case 'Outdent' :
+ case 'InsertOrderedList' :
+ case 'InsertUnorderedList' :
+ case 'SaveAs' :
+ case 'Print' :
+ case 'Copy' :
+ case 'Cut' :
+ case 'Paste' :
+ case 'RemoveFormat' :
+ case 'Subscript' :
+ case 'Superscript' :
+ editorDo(component_name, '', editor_sequence);
+ break;
- // 추가 컴포넌트의 경우 서버에 요청을 시도
- default :
+ // 추가 컴포넌트의 경우 서버에 요청을 시도
+ default :
openComponent(component_name, editor_sequence);
return false;
- }
+ }
- return;
+ return;
}
jQuery(document).click(editorEventCheck);
// 컴포넌트 팝업 열기
function openComponent(component_name, editor_sequence, manual_url) {
- editorPrevSrl = editor_sequence;
- if(editorMode[editor_sequence]=='html') return;
+ editorPrevSrl = editor_sequence;
+ if(editorMode[editor_sequence]=='html') return;
- var popup_url = request_uri+"?module=editor&act=dispEditorPopup&editor_sequence="+editor_sequence+"&component="+component_name;
- if(typeof(manual_url)!="undefined" && manual_url) popup_url += "&manual_url="+escape(manual_url);
+ var popup_url = request_uri+"?module=editor&act=dispEditorPopup&editor_sequence="+editor_sequence+"&component="+component_name;
+ if(typeof(manual_url)!="undefined" && manual_url) popup_url += "&manual_url="+escape(manual_url);
- popopen(popup_url, 'editorComponent');
+ popopen(popup_url, 'editorComponent');
}
// 더블클릭 이벤트 발생시에 본문내에 포함된 컴포넌트를 찾는 함수
var editorPrevNode = null;
function editorSearchComponent(evt) {
- var e = new xEvent(evt);
+ var e = new xEvent(evt);
- editorPrevNode = null;
- var obj = e.target;
+ editorPrevNode = null;
+ var obj = e.target;
- // 위젯인지 일단 체크
- if(obj.getAttribute("widget")) {
- // editor_sequence을 찾음
- var tobj = obj;
- while(tobj && tobj.nodeName != "BODY") {
- tobj = xParent(tobj);
- }
- if(!tobj || tobj.nodeName != "BODY" || !tobj.getAttribute("editor_sequence")) {
- editorPrevNode = null;
- return;
- }
- var editor_sequence = tobj.getAttribute("editor_sequence");
- var widget = obj.getAttribute("widget");
- editorPrevNode = obj;
+ // 위젯인지 일단 체크
+ if(obj.getAttribute("widget")) {
+ // editor_sequence을 찾음
+ var tobj = obj;
+ while(tobj && tobj.nodeName != "BODY") {
+ tobj = xParent(tobj);
+ }
+ if(!tobj || tobj.nodeName != "BODY" || !tobj.getAttribute("editor_sequence")) {
+ editorPrevNode = null;
+ return;
+ }
+ var editor_sequence = tobj.getAttribute("editor_sequence");
+ var widget = obj.getAttribute("widget");
+ editorPrevNode = obj;
- if(editorMode[editor_sequence]=='html') return;
- popopen(request_uri+"?module=widget&act=dispWidgetGenerateCodeInPage&selected_widget="+widget+"&module_srl="+editor_sequence,'GenerateCodeInPage');
- return;
- }
+ if(editorMode[editor_sequence]=='html') return;
+ popopen(request_uri+"?module=widget&act=dispWidgetGenerateCodeInPage&selected_widget="+widget+"&module_srl="+editor_sequence,'GenerateCodeInPage');
+ return;
+ }
- // 선택되어진 object부터 상단으로 이동하면서 editor_component attribute가 있는지 검사
- if(!obj.getAttribute("editor_component")) {
- while(obj && !obj.getAttribute("editor_component")) {
- if(obj.parentElement) obj = obj.parentElement;
- else obj = xParent(obj);
- }
- }
+ // 선택되어진 object부터 상단으로 이동하면서 editor_component attribute가 있는지 검사
+ if(!obj.getAttribute("editor_component")) {
+ while(obj && !obj.getAttribute("editor_component")) {
+ if(obj.parentElement) obj = obj.parentElement;
+ else obj = xParent(obj);
+ }
+ }
- if(!obj) obj = e.target;
+ if(!obj) obj = e.target;
- var editor_component = obj.getAttribute("editor_component");
+ var editor_component = obj.getAttribute("editor_component");
- // editor_component를 찾지 못했을 경우에 이미지/텍스트/링크의 경우 기본 컴포넌트와 연결
- if(!editor_component) {
- // 이미지일 경우
- if(obj.nodeName == "IMG" && !obj.getAttribute("widget")) {
- editor_component = "image_link";
- editorPrevNode = obj;
- }
- } else {
- editorPrevNode = obj;
- }
+ // editor_component를 찾지 못했을 경우에 이미지/텍스트/링크의 경우 기본 컴포넌트와 연결
+ if(!editor_component) {
+ // 이미지일 경우
+ if(obj.nodeName == "IMG" && !obj.getAttribute("widget")) {
+ editor_component = "image_link";
+ editorPrevNode = obj;
+ }
+ } else {
+ editorPrevNode = obj;
+ }
- // 아무런 editor_component가 없다면 return
- if(!editor_component) {
- editorPrevNode = null;
- return;
- }
+ // 아무런 editor_component가 없다면 return
+ if(!editor_component) {
+ editorPrevNode = null;
+ return;
+ }
- // editor_sequence을 찾음
- var tobj = obj;
- while(tobj && tobj.nodeName != "BODY") {
- tobj = xParent(tobj);
- }
- if(!tobj || tobj.nodeName != "BODY" || !tobj.getAttribute("editor_sequence")) {
- editorPrevNode = null;
- return;
- }
- var editor_sequence = tobj.getAttribute("editor_sequence");
+ // editor_sequence을 찾음
+ var tobj = obj;
+ while(tobj && tobj.nodeName != "BODY") {
+ tobj = xParent(tobj);
+ }
+ if(!tobj || tobj.nodeName != "BODY" || !tobj.getAttribute("editor_sequence")) {
+ editorPrevNode = null;
+ return;
+ }
+ var editor_sequence = tobj.getAttribute("editor_sequence");
- // 해당 컴포넌트를 찾아서 실행
- openComponent(editor_component, editor_sequence);
+ // 해당 컴포넌트를 찾아서 실행
+ openComponent(editor_component, editor_sequence);
}
// 에디터 내의 선택된 부분의 html코드를 변경
function editorReplaceHTML(iframe_obj, html) {
- // 이미지 경로 재지정 (rewrite mod)
- var srcPathRegx = /src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/g;
- html = html.replace(srcPathRegx, 'src="'+request_uri+'$3/$4.$5"');
+ // 이미지 경로 재지정 (rewrite mod)
+ var srcPathRegx = /src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/g;
+ html = html.replace(srcPathRegx, 'src="'+request_uri+'$3/$4.$5"');
- // href 경로 재지정 (rewrite mod)
- var hrefPathRegx = /href=("|\'){1}(\.\/)?\?([^"\']+)("|\'){1}/g;
- html = html.replace(hrefPathRegx, 'href="'+request_uri+'?$3"');
+ // href 경로 재지정 (rewrite mod)
+ var hrefPathRegx = /href=("|\'){1}(\.\/)?\?([^"\']+)("|\'){1}/g;
+ html = html.replace(hrefPathRegx, 'href="'+request_uri+'?$3"');
- // 에디터가 활성화 되어 있는지 확인 후 비활성화시 활성화
- var editor_sequence = iframe_obj.editor_sequence || iframe_obj.contentWindow.document.body.getAttribute("editor_sequence");
+ // 에디터가 활성화 되어 있는지 확인 후 비활성화시 활성화
+ var editor_sequence = iframe_obj.editor_sequence || iframe_obj.contentWindow.document.body.getAttribute("editor_sequence");
- // iframe 에디터에 포커스를 둠
+ // iframe 에디터에 포커스를 둠
try { iframe_obj.contentWindow.focus(); }catch(e){};
-
+
if (jQuery.isFunction(iframe_obj.replaceHTML)) {
iframe_obj.replaceHTML(html);
} else if(xIE4Up) {
- var range = iframe_obj.contentWindow.document.selection.createRange();
- if(range.pasteHTML) {
- range.pasteHTML(html);
- } else if(editorPrevNode) {
- editorPrevNode.outerHTML = html;
- }
- } else {
- try {
- if(iframe_obj.contentWindow.getSelection().focusNode.tagName == "HTML") {
- var range = iframe_obj.contentDocument.createRange();
- range.setStart(iframe_obj.contentDocument.body,0);
- range.setEnd(iframe_obj.contentDocument.body,0);
- range.insertNode(range.createContextualFragment(html));
- } else {
- var range = iframe_obj.contentWindow.getSelection().getRangeAt(0);
- range.deleteContents();
- range.insertNode(range.createContextualFragment(html));
- }
- } catch(e) {
- xInnerHtml(iframe_obj.contentWindow.document.body, html+xInnerHtml(iframe_obj.contentWindow.document.body));
- }
- }
+ var range = iframe_obj.contentWindow.document.selection.createRange();
+ if(range.pasteHTML) {
+ range.pasteHTML(html);
+ } else if(editorPrevNode) {
+ editorPrevNode.outerHTML = html;
+ }
+ } else {
+ try {
+ if(iframe_obj.contentWindow.getSelection().focusNode.tagName == "HTML") {
+ var range = iframe_obj.contentDocument.createRange();
+ range.setStart(iframe_obj.contentDocument.body,0);
+ range.setEnd(iframe_obj.contentDocument.body,0);
+ range.insertNode(range.createContextualFragment(html));
+ } else {
+ var range = iframe_obj.contentWindow.getSelection().getRangeAt(0);
+ range.deleteContents();
+ range.insertNode(range.createContextualFragment(html));
+ }
+ } catch(e) {
+ xInnerHtml(iframe_obj.contentWindow.document.body, html+xInnerHtml(iframe_obj.contentWindow.document.body));
+ }
+ }
}
// 에디터 내의 선택된 부분의 html 코드를 return
function editorGetSelectedHtml(editor_sequence) {
- var iframe_obj = editorGetIFrame(editor_sequence);
+ var iframe_obj = editorGetIFrame(editor_sequence);
if (jQuery.isFunction(iframe_obj.getSelectedHTML)) {
return iframe_obj.getSelectedHTML();
- } else if(xIE4Up) {
- var range = iframe_obj.contentWindow.document.selection.createRange();
- var html = range.htmlText;
- return html;
- } else {
- var range = iframe_obj.contentWindow.getSelection().getRangeAt(0);
- var dummy = xCreateElement('div');
- dummy.appendChild(range.cloneContents());
- var html = xInnerHtml(dummy);
- return html;
- }
+ } else if(xIE4Up) {
+ var range = iframe_obj.contentWindow.document.selection.createRange();
+ var html = range.htmlText;
+ return html;
+ } else {
+ var range = iframe_obj.contentWindow.getSelection().getRangeAt(0);
+ var dummy = xCreateElement('div');
+ dummy.appendChild(range.cloneContents());
+ var html = xInnerHtml(dummy);
+ return html;
+ }
}
@@ -355,19 +355,19 @@ var eventObj = null; // event target object
var targetObj = null; // elements to be resized
function editorDragStart(e) {
- var obj = $(e.target);
+ var obj = $(e.target);
var id = obj.attr('id');
- if(!id || !/^editor_drag_bar_(.+)$/.test(id)) return;
+ if(!id || !/^editor_drag_bar_(.+)$/.test(id)) return;
- dragging = true;
- startY = e.pageY;
- eventObj = obj;
+ dragging = true;
+ startY = e.pageY;
+ eventObj = obj;
editorId = RegExp.$1;
- var iframe_obj = $( editorGetIFrame(editorId) );
- var textarea_obj = $( editorGetTextarea(editorId) );
- var preview_obj = $('#editor_preview_'+editorId);
+ var iframe_obj = $( editorGetIFrame(editorId) );
+ var textarea_obj = $( editorGetTextarea(editorId) );
+ var preview_obj = $('#editor_preview_'+editorId);
var visible_obj = iframe_obj.is(':visible')?iframe_obj:textarea_obj;
startH = parseInt(visible_obj.css('height'));
@@ -391,12 +391,12 @@ function editorDragStart(e) {
}
function editorDragMove(e) {
- if(!dragging) {
- $('#xeEditorMask_' + editorId).hide();
- return;
- }
+ if(!dragging) {
+ $('#xeEditorMask_' + editorId).hide();
+ return;
+ }
- var diff = e.pageY - startY;
+ var diff = e.pageY - startY;
targetObj.css('height', (startH + diff)+'px');
return false;
@@ -404,7 +404,7 @@ function editorDragMove(e) {
function editorDragStop(e) {
$('#xeEditorMask_' + editorId).hide();
- if(!dragging) return;
+ if(!dragging) return;
$(document).unbind('mousemove', editorDragMove);
@@ -414,9 +414,9 @@ function editorDragStop(e) {
fixAdminLayoutFooter( diff );
}
- dragging = false;
- startY = 0;
- eventObj = null;
+ dragging = false;
+ startY = 0;
+ eventObj = null;
targetObj = null;
editorId = '';
diff --git a/modules/editor/tpl/js/editor_module_config.js b/modules/editor/tpl/js/editor_module_config.js
index 343887d6c..b02689d27 100644
--- a/modules/editor/tpl/js/editor_module_config.js
+++ b/modules/editor/tpl/js/editor_module_config.js
@@ -1,13 +1,13 @@
function getEditorSkinColorList(skin_name,selected_colorset,type,testid){
- if(skin_name.length>0){
- type = type || 'document';
- var response_tags = new Array('error','message','colorset');
- exec_xml('editor','dispEditorSkinColorset',{skin:skin_name},resultGetEditorSkinColorList,response_tags,{'selected_colorset':selected_colorset,'type':type,'testid':testid});
- }
+ if(skin_name.length>0){
+ type = type || 'document';
+ var response_tags = new Array('error','message','colorset');
+ exec_xml('editor','dispEditorSkinColorset',{skin:skin_name},resultGetEditorSkinColorList,response_tags,{'selected_colorset':selected_colorset,'type':type,'testid':testid});
+ }
}
function resultGetEditorSkinColorList(ret_obj,response_tags, params) {
- var selectbox = null;
+ var selectbox = null;
jQuery(function($){
if(params.testid){
selectbox = $("#"+params.testid).next('label').children('select');
@@ -19,21 +19,21 @@ function resultGetEditorSkinColorList(ret_obj,response_tags, params) {
if(params.type == 'document'){
$("select[name=sel_editor_colorset]").hide()
.removeAttr('name');
- selectbox.attr('name','sel_editor_colorset');
+ selectbox.attr('name','sel_editor_colorset');
}else{
$("select[name=sel_comment_editor_colorset]").hide()
- .removeAttr('name');
- selectbox.attr('name','sel_comment_editor_colorset');
- }
+ .removeAttr('name');
+ selectbox.attr('name','sel_comment_editor_colorset');
+ }
- if(ret_obj['error'] == 0 && ret_obj.colorset){
+ if(ret_obj['error'] == 0 && ret_obj.colorset){
var it = new Array();
- var items = ret_obj['colorset']['item'];
+ var items = ret_obj['colorset']['item'];
if(typeof(items[0]) == 'undefined'){
it[0] = items;
}else{
it = items;
- }
+ }
var selectAttr = "";
for(var i=0;i
';
} else if(match[1]) { // flash video file
- html = '';
+ html = '';
} else if(match[2]) { // shockwave flash file
html = '';
} else if(match[3]) { // movie file
@@ -392,60 +392,60 @@ function removeUploadedFile(editorSequence) {
function insertUploadedFile(editorSequence) {
- var settings = uploaderSettings[editorSequence];
- var fileListAreaID = settings["fileListAreaID"];
- var fileListObj = get_by_id(fileListAreaID);
- if(!fileListObj) return;
+ var settings = uploaderSettings[editorSequence];
+ var fileListAreaID = settings["fileListAreaID"];
+ var fileListObj = get_by_id(fileListAreaID);
+ if(!fileListObj) return;
- if(editorMode[editorSequence]=='preview') return;
+ if(editorMode[editorSequence]=='preview') return;
- var text = new Array();
- for(var i=0;i
");
- }
+ // 바로 링크 가능한 파일의 경우 (이미지, 플래쉬, 동영상 등..)
+ if(file.direct_download == 'Y') {
+ // 이미지 파일의 경우 image_link 컴포넌트 열결
+ if(/\.(jpg|jpeg|png|gif)$/i.test(file.download_url)) {
+ if(loaded_images[file_srl]) {
+ var obj = loaded_images[file_srl];
+ }
+ else {
+ var obj = new Image();
+ obj.src = file.download_url;
+ }
+ temp_code = '';
+ temp_code += "\r\n";
+ text.push(temp_code);
+ } else {
+ // 이미지외의 경우는 multimedia_link 컴포넌트 연결
+ text.push("
");
+ }
- // binary파일의 경우 url_link 컴포넌트 연결
- } else {
- text.push(""+file.source_filename+"\n");
- }
- }
+ } else {
+ // binary파일의 경우 url_link 컴포넌트 연결
+ text.push(""+file.source_filename+"\n");
+ }
+ }
- // html 모드
- if(editorMode[editorSequence]=='html'){
- if(text.length>0 && get_by_id('editor_textarea_'+editorSequence))
- {
- get_by_id('editor_textarea_'+editorSequence).value += text.join('');
- }
+ // html 모드
+ if(editorMode[editorSequence]=='html'){
+ if(text.length>0 && get_by_id('editor_textarea_'+editorSequence))
+ {
+ get_by_id('editor_textarea_'+editorSequence).value += text.join('');
+ }
- // 위지윅 모드
- }else{
- var iframe_obj = editorGetIFrame(editorSequence);
- if(!iframe_obj) return;
- if(text.length>0) editorReplaceHTML(iframe_obj, text.join(''));
- }
+ // 위지윅 모드
+ }else{
+ var iframe_obj = editorGetIFrame(editorSequence);
+ if(!iframe_obj) return;
+ if(text.length>0) editorReplaceHTML(iframe_obj, text.join(''));
+ }
}
diff --git a/modules/editor/tpl/js/uploader.min.js b/modules/editor/tpl/js/uploader.min.js
new file mode 100644
index 000000000..9f751705a
--- /dev/null
+++ b/modules/editor/tpl/js/uploader.min.js
@@ -0,0 +1 @@
+function previewFiles(a,b){var c,d,e,f,g,h,i=jQuery;if(!b){if(c=i(a.target).parent().andSelf().filter("select").find(">option:selected"),!c.length)return;b=c.attr("value")}b&&is_def(e=uploadedFiles[b])&&(d=i("#"+e.previewAreaID).html(" "),d.length&&(f=e.download_url||"",g=f.match(/\.(?:(flv)|(swf)|(wmv|avi|mpe?g|as[fx]|mp3)|(jpe?g|png|gif))$/i),"Y"==e.direct_download&&g?g[1]?h='':g[2]?h='':g[3]?h='':g[4]&&(h=''):h='
',h&&d.html(h)))}function removeUploadedFile(a){var b=uploaderSettings[a],c=b.fileListAreaID,d=get_by_id(c);if(d&&!(d.selectedIndex<0)){for(var e=new Array,f=0;f
');else e.push(''+h.source_filename+"\n")}}if("html"==editorMode[a])e.length>0&&get_by_id("editor_textarea_"+a)&&(get_by_id("editor_textarea_"+a).value+=e.join(""));else{var j=editorGetIFrame(a);if(!j)return;e.length>0&&editorReplaceHTML(j,e.join(""))}}}var uploadedFiles=[],uploaderSettings=[],loaded_images=[],swfUploadObjs=[],uploadSettingObj=[],uploadAutosaveChecker=!1;!function(a){function b(b){var d=b.editorSequence;is_def(d)&&(b=a.extend({sessionName:"PHPSESSID",allowedFileSize:2097152,allowedFileTypes:"*.*",allowedFileTypesDescription:"All Files",replaceButtonID:"swfUploadButton"+b.editorSequence,insertedFiles:0},b),uploadSettingObj[d]=b,a(function(){c(b)}))}function c(b){var c,d,g,h,i,j,k,l,m,n,o,p;i=b.editorSequence,j=b.replaceButtonID,c=a("#"+j).wrap(''),d=c.width(),g=c.height(),h=a('').insertAfter(c),k={flash_url:request_uri+"modules/editor/tpl/images/SWFUpload.swf",upload_url:request_uri.replace(/^https/i,"http")+"index.php",post_params:{mid:current_mid,act:"procFileUpload",editor_sequence:i,uploadTargetSrl:editorRelKeys[i].primary.value},http_success:[302],file_size_limit:Math.floor((parseInt(b.allowedFileSize,10)||1024)/1024),file_queue_limit:0,file_upload_limit:0,file_types:b.allowedFileTypes,file_types_description:b.allowedFileTypesDescription,custom_settings:{progressTarget:null,cancelButtonId:null},debug:!1,button_window_mode:"transparent",button_placeholder_id:h.attr("id"),button_text:null,button_image_url:request_uri+"common/img/blank.gif",button_width:d,button_height:g,button_text_style:null,button_text_left_padding:0,button_text_top_padding:0,button_cursor:-2,editorSequence:i,uploadTargetSrl:editorRelKeys[i].primary.value,fileListAreaID:b.fileListAreaID,previewAreaID:b.previewAreaID,uploaderStatusID:b.uploaderStatusID},"undefined"!=typeof enforce_ssl&&enforce_ssl&&(k.upload_url=request_uri+"index.php"),a("#"+b.fileListAreaID).click(previewFiles),l={file_queued:"FileQueued",file_queue_error:"FileQueueError",file_dialog_complete:"FileDialogComplete",upload_start:"UploadStart",upload_progress:"UploadProgress",upload_error:"UploadError",upload_success:"UploadSuccess",upload_complete:"UploadComplete",queue_complete:"QueueComplete"};for(m in l)l.hasOwnProperty(m)&&(n="on"+l[m],k[m+"_handler"]=b["on"+n]||f[n]);is_def(window.xeVid)&&(k.post_params.vid=xeVid),k.post_params[b.sessionName]=getCookie(b.sessionName),uploaderSettings[i]=k,o=new SWFUpload(k),p=a("#"+o.movieName),swfUploadObjs[i]=o.movieName,p.length&&(p.css({display:"block",cursor:"pointer",position:"absolute",left:0,top:0,width:d+"px",height:g+"px"}),(b.insertedFiles||editorRelKeys[i].primary.value)&&e(b))}function d(){return!0}function e(b){function c(){"function"==typeof _editorAutoSave&&(uploadAutosaveChecker=!0,_editorAutoSave(!0))}function d(d){var e,f,g,h,i,j,k,l,m,n,o;if(f=d.editor_sequence,g=d.files,i=d.upload_status,h=d.upload_target_srl,j=Math.floor((parseInt(d.left_size,10)||0)/1024),e=a("#"+b.fileListAreaID).empty(),h&&(editorRelKeys[f].primary.value!=h&&(editorRelKeys[f].primary.value=h,c()),editorRelKeys[f].primary.value=h,b.uploadTargetSrl=h),a("#"+b.uploaderStatusID).html(i),a("#"+b.previewAreaID).empty(),g&&g.item){for(k=g.item,a.isArray(k)||(k=[k]),l=0,m=k.length;m>l;l++)n=k[l],o=n.file_srl,uploadedFiles[o]=n,n.previewAreaID=b.previewAreaID,/\.(jpe?g|png|gif)$/i.test(n.download_url)&&(loaded_images[o]=a("").attr("src",n.download_url).get(0)),a("").text(n.source_filename+" ("+n.disp_file_size+" )").attr("value",o).appendTo(e);l&&e.prop("selectedIndex",l-1).click()}uploadAutosaveChecker||c()}var e={mid:current_mid,file_list_area_id:b.fileListAreaID,editor_sequence:b.editorSequence,upload_target_srl:b.uploadTargetSrl};exec_xml("file","getFileList",e,d,"error,message,files,upload_status,upload_target_srl,editor_sequence,left_size".split(","))}var f;f={onFileQueued:d,onFileQueueError:function(a,b,c){try{switch(b){case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:alert("You have attempted to queue too many files.\n"+(0===c?"You have reached the upload limit.":"You may select "+(c>1?"up to "+c+" files.":"one file.")));break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:alert("Error Code: File too big, File name: "+a.name+", File size: "+a.size+", Message: "+c);break;case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:alert("Error Code: Zero byte file, File name: "+a.name+", File size: "+a.size+", Message: "+c);break;case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:alert("Error Code: Invalid File Type, File name: "+a.name+", File size: "+a.size+", Message: "+c);break;default:alert("Error Code: "+b+", File name: "+a.name+", File size: "+a.size+", Message: "+c)}}catch(d){this.debug(d)}},onFileDialogComplete:function(){try{this.startUpload()}catch(a){this.debug(a)}},onUploadStart:d,onUploadProgress:function(b,c,d){try{var e,f,g,h;e=a("#"+this.settings.fileListAreaID),g=Math.ceil(c/d*100),h=b.name,f=e.find(">option:last"),h.length>20&&(h=h.substr(0,20)+"..."),f.length&&f.attr("value")==b.id||(f=a("").attr("value",b.id).appendTo(e)),f.text(h+" ("+g+"%)")}catch(i){this.debug(i)}},onUploadSuccess:function(){try{0!==this.getStats().files_queued&&this.startUpload()}catch(a){this.debug(a)}},onUploadError:function(a,b,c){try{switch(b){case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:alert("Error Code: HTTP Error, File name: "+a.name+", Message: "+c);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:alert("Error Code: Upload Failed, File name: "+a.name+", File size: "+a.size+", Message: "+c);break;case SWFUpload.UPLOAD_ERROR.IO_ERROR:alert("Error Code: IO Error, File name: "+a.name+", Message: "+c);break;case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:alert("Error Code: Security Error, File name: "+a.name+", Message: "+c);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:alert("Error Code: Upload Limit Exceeded, File name: "+a.name+", File size: "+a.size+", Message: "+c);break;case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:alert("Error Code: File Validation Failed, File name: "+a.name+", File size: "+a.size+", Message: "+c);break;case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:0===this.getStats().files_queued&&(document.getElementById(this.customSettings.cancelButtonId).disabled=!0);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:break;default:alert("Error Code: "+b+", File name: "+a.name+", File size: "+a.size+", Message: "+c)}}catch(d){this.debug(d)}},onUploadComplete:function(){try{{this.settings.fileListAreaID,this.settings.uploadTargetSrl}e(this.settings)}catch(a){this.debug(ex)}}},window.editorUploadInit=b,window.reloadFileList=e,a(function(){try{document.execCommand("BackgroundImageCache",!1,!0)}catch(a){}})}(jQuery);
\ No newline at end of file