From c503c57477cf8d5122a4662786c9cd53dce7855c Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 22 Jan 2014 13:53:49 +0900 Subject: [PATCH] #358 editor js minify --- Gruntfile.js | 49 +- modules/editor/tpl/js/editor.js | 66 ++- modules/editor/tpl/js/editor.min.js | 2 +- modules/editor/tpl/js/editor_common.js | 198 ++++--- modules/editor/tpl/js/editor_common.min.js | 2 +- modules/editor/tpl/js/editor_module_config.js | 16 +- .../editor/tpl/js/editor_module_config.min.js | 1 + modules/editor/tpl/js/uploader.js | 550 +++++++++--------- modules/editor/tpl/js/uploader.min.js | 2 +- 9 files changed, 464 insertions(+), 422 deletions(-) create mode 100644 modules/editor/tpl/js/editor_module_config.min.js diff --git a/Gruntfile.js b/Gruntfile.js index c98f6a5cd..5f88aad4e 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -63,6 +63,7 @@ module.exports = function(grunt) { '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'], + 'modules/editor/tpl/js/editor_module_config.min.js': ['modules/editor/tpl/js/editor_module_config.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'], @@ -88,6 +89,25 @@ module.exports = function(grunt) { 'addons/oembed/jquery.oembed.min.js': ['addons/oembed/jquery.oembed.js'], 'addons/oembed/oembed.min.js': ['addons/oembed/oembed.js'], } + }, + 'module-board': { + 'common': { + files: { + 'modules/board/tpl/js/board.min.js': ['modules/board/tpl/js/board.js'], + 'modules/board/tpl/js/board_admin.min.js': ['modules/board/tpl/js/board_admin.js'] + } + }, + 'skin': { + files: { + 'modules/board/skins/default/board.default.min.js': ['modules/board/skins/default/board.default.js'], + } + }, + 'm.skin': { + files: { + 'modules/board/m.skins/default/js/mboard.min.js': ['modules/board/m.skins/default/js/mboard.js'], + 'modules/board/m.skins/simpleGray/js/mboard.min.js': ['modules/board/m.skins/simpleGray/js/mboard.js'] + } + }, } }, cssmin: { @@ -134,18 +154,28 @@ module.exports = function(grunt) { files: { 'addons/oembed/jquery.oembed.min.css': ['addons/oembed/jquery.oembed.css'], } + }, + 'module-board': { + 'skin': { + files: { + 'modules/board/skins/default/board.default.min.css': ['modules/board/skins/default/board.default.css'], + } + }, + 'm.skin': { + files: { + 'modules/board/m.skins/default/css/mboard.min.css': ['modules/board/m.skins/default/css/mboard.css'], + 'modules/board/m.skins/simpleGray/css/mboard.min.css': ['modules/board/m.skins/simpleGray/css/mboard.css'] + } + }, } }, jshint: { files: [ 'Gruntfile.js', 'common/js/*.js', '!common/js/html5.js', '!common/js/jquery.js', '!common/js/x.js', '!common/js/xe.js', - 'modules/widget/tpl/js/generate_code.js', - 'modules/widget/tpl/js/widget.js', - 'modules/widget/tpl/js/widget_admin.js', - '!**/jquery*.js', - '!**/*.min.js', - '!**/*-packed.js' + 'modules/board/tpl/js/*.js', + 'modules/widget/tpl/js/*.js', + 'modules/editor/tpl/js/*.js', ], options : { globalstrict: false, @@ -158,9 +188,10 @@ module.exports = function(grunt) { "window" : true }, ignores : [ - 'skins/xe_2010_gallery/js/jquery.easing.1.3.js', - 'skins/xe_2010_gallery/js/json2007.js', + '**/jquery*.js', + '**/swfupload.js', '**/*.min.js', + '**/*-packed.js', '**/*.compressed.js' ] } @@ -215,7 +246,7 @@ module.exports = function(grunt) { md5.update(buffer); var md5Hash = md5.digest('hex'); grunt.verbose.writeln('file md5: ' + md5Hash); - + var md5FileName = file + '.md5'; grunt.file.write(md5FileName, md5Hash); grunt.verbose.writeln('File "' + md5FileName + '" created.').writeln('...'); diff --git a/modules/editor/tpl/js/editor.js b/modules/editor/tpl/js/editor.js index c16146354..670a299ab 100755 --- a/modules/editor/tpl/js/editor.js +++ b/modules/editor/tpl/js/editor.js @@ -65,7 +65,7 @@ function editorGetSelectedNode(editor_sequence) { /** * editor 시작 (editor_sequence로 iframe객체를 얻어서 쓰기 모드로 전환) **/ -var _editorFontColor = new Array(); +var _editorFontColor = []; function editorStart(editor_sequence, primary_key, content_key, editor_height, font_color) { if(typeof(font_color)=='undefined') font_color = '#000'; @@ -84,14 +84,13 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height, f fo_obj.setAttribute('editor_sequence', editor_sequence); // 모듈 연관 키 값을 세팅 - editorRelKeys[editor_sequence] = new Array(); - editorRelKeys[editor_sequence]["primary"] = fo_obj[primary_key]; - editorRelKeys[editor_sequence]["content"] = fo_obj[content_key]; - editorRelKeys[editor_sequence]["func"] = editorGetContent_xe; + editorRelKeys[editor_sequence] = []; + editorRelKeys[editor_sequence].primary = fo_obj[primary_key]; + editorRelKeys[editor_sequence].content = fo_obj[content_key]; + editorRelKeys[editor_sequence].func = editorGetContent_xe; // saved document(자동저장 문서)에 대한 확인 - 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_content = fo_obj._saved_doc_content.value; @@ -99,12 +98,12 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height, f // 자동저장된 문서 활용여부를 물은 후 사용하지 않는다면 자동저장된 문서 삭제 if(confirm(fo_obj._saved_doc_message.value)) { if(typeof(fo_obj.title)!='undefined') fo_obj.title.value = saved_title; - editorRelKeys[editor_sequence]['content'].value = saved_content; + editorRelKeys[editor_sequence].content.value = saved_content; - var param = new Array(); - param['editor_sequence'] = editor_sequence; - param['primary_key'] = primary_key; - param['mid'] = current_mid; + var param = []; + 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, getAutoSavedSrl, response_tags); } else { @@ -114,7 +113,7 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height, f } // 대상 form의 content element에서 데이터를 구함 - var content = editorRelKeys[editor_sequence]['content'].value; + var content = editorRelKeys[editor_sequence].content.value; // IE가 아니고 내용이 없으면
추가 (FF등에서 iframe 선택시 focus를 주기 위한 꽁수) if(!content && !xIE4Up) content = "
"; @@ -184,13 +183,15 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height, f // 좋지는 않으나;; 스타일 변형을 막기 위해 start 할때 html이면 바꿔주자 if (xGetCookie('editor_mode') == 'html'){ - var iframe_obj = editorGetIFrame(editor_sequence); + iframe_obj = editorGetIFrame(editor_sequence); if(xGetElementById('fileUploader_'+editor_sequence)) xGetElementById('fileUploader_'+editor_sequence).style.display='block'; + textarea_obj = editorGetTextArea(editor_sequence); textarea_obj.value = content; 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 = ''; @@ -220,6 +221,7 @@ function editorKeyPress(evt) { var body_obj = null; if(obj.nodeName == "BODY") body_obj = obj; else body_obj = obj.firstChild.nextSibling; + if(!body_obj) return; // editor_sequence는 에디터의 body에 attribute로 정의되어 있음 @@ -231,38 +233,35 @@ function editorKeyPress(evt) { var iframe_obj = editorGetIFrame(editor_sequence); if(!iframe_obj) return; + obj = contentDocument.selection.createRange(); var contentDocument = iframe_obj.contentWindow.document; - - var obj = contentDocument.selection.createRange(); - var pTag = obj.parentElement().tagName.toLowerCase(); switch(pTag) { case 'li' : - return; - break; + return; default : - obj.pasteHTML("
"); + obj.pasteHTML("
"); break; } obj.select(); evt.cancelBubble = true; evt.returnValue = false; + return; } // ctrl-S, alt-S 클릭시 submit하기 if( e.keyCode == 115 && (e.altKey || e.ctrlKey) ) { // iframe 에디터를 찾음 - var iframe_obj = editorGetIFrame(editor_sequence); - if(!iframe_obj) return; + if(!editorGetIFrame(editor_sequence)) return; // 대상 form을 찾음 var fo_obj = editorGetForm(editor_sequence); if(!fo_obj) return; // 데이터 동기화 - editorRelKeys[editor_sequence]['content'].value = editorGetContent(editor_sequence); + editorRelKeys[editor_sequence].content.value = editorGetContent(editor_sequence); // form문 전송 if(fo_obj.onsubmit) fo_obj.onsubmit(); @@ -278,8 +277,7 @@ function editorKeyPress(evt) { // ctrl-b, i, u, s 키에 대한 처리 (파이어폭스에서도 에디터 상태에서 단축키 쓰도록) if (e.ctrlKey) { // iframe 에디터를 찾음 - var iframe_obj = editorGetIFrame(editor_sequence); - if(!iframe_obj) return; + if(!editorGetIFrame(editor_sequence)) return; // html 에디터 모드일 경우 이벤트 취소 시킴 if(editorMode[editor_sequence]) { @@ -287,6 +285,7 @@ function editorKeyPress(evt) { evt.returnValue = false; xPreventDefault(evt); xStopPropagation(evt); + return; } @@ -312,13 +311,16 @@ function editorKeyPress(evt) { case 13 : if(xIE4Up) { if(e.target.parentElement.document.designMode!="On") return; - var obj = e.target.parentElement.document.selection.createRange(); + + obj = e.target.parentElement.document.selection.createRange(); obj.pasteHTML('

'); obj.select(); evt.cancelBubble = true; evt.returnValue = false; + return; } + break; // bold case 98 : editorDo('Bold',null,e.target); @@ -425,8 +427,8 @@ function editorChangeHeader(obj,srl) { **/ function editorChangeMode(mode, editor_sequence) { - - if(mode == 'html' || mode ==''){ + /* jshint -W041 */ + if(mode == 'html' || mode == ''){ var expire = new Date(); expire.setTime(expire.getTime()+ (7000 * 24 * 3600000)); xSetCookie('editor_mode', mode, expire); @@ -450,7 +452,7 @@ function editorChangeMode(mode, editor_sequence) { // xAddEventListener(xGetElementById('editor_preview_'+editor_sequence), 'load', function(){setPreviewHeight(editor_sequence)}); } else { html = contentDocument.body.innerHTML; - textarea_obj.value = html + textarea_obj.value = html; html = html.replace(/
/ig,"
\n"); html = html.replace(/
\n\n/ig,"
\n"); } @@ -557,10 +559,10 @@ function setPreviewHeight(editor_sequence){ } function getAutoSavedSrl(ret_obj, response_tags, c) { - var editor_sequence = ret_obj['editor_sequence']; - var primary_key = ret_obj['key']; + 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']; + 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 index 3f9999bfa..46653619b 100644 --- a/modules/editor/tpl/js/editor.min.js +++ b/modules/editor/tpl/js/editor.min.js @@ -1 +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("

").html(c.htmlText)[0].firstChild):(c=b.getSelection().getRangeAt(0),jQuery("
").append(c.cloneContents())[0].firstChild)}function editorStart(a,b,c,d,e){"undefined"==typeof e&&(e="#000"),_editorFontColor[a]=e;var f=editorGetIFrame(a);if(f){jQuery(f).css("width","100%").parent().css("width","100%");var g=editorGetForm(a);if(g){if(g.setAttribute("editor_sequence",a),editorRelKeys[a]=new Array,editorRelKeys[a].primary=g[b],editorRelKeys[a].content=g[c],editorRelKeys[a].func=editorGetContent_xe,"undefined"!=typeof g._saved_doc_title){var h=g._saved_doc_title.value,i=g._saved_doc_content.value;if(h||i)if(confirm(g._saved_doc_message.value)){"undefined"!=typeof g.title&&(g.title.value=h),editorRelKeys[a].content.value=i;var j=new Array;j.editor_sequence=a,j.primary_key=b,j.mid=current_mid;var k=new Array("error","message","editor_sequence","key","title","content","document_srl");exec_xml("editor","procEditorLoadSavedDocument",j,getAutoSavedSrl,k)}else editorRemoveSavedDoc()}var l=editorRelKeys[a].content.value;l||xIE4Up||(l="
");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","",b.target),xPreventDefault(a),xStopPropagation(a);break;case 55:editorDo("formatblock","

",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(/
/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 +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("

").html(c.htmlText)[0].firstChild):(c=b.getSelection().getRangeAt(0),jQuery("
").append(c.cloneContents())[0].firstChild)}function editorStart(a,b,c,d,e){"undefined"==typeof e&&(e="#000"),_editorFontColor[a]=e;var f=editorGetIFrame(a);if(f){jQuery(f).css("width","100%").parent().css("width","100%");var g=editorGetForm(a);if(g){if(g.setAttribute("editor_sequence",a),editorRelKeys[a]=[],editorRelKeys[a].primary=g[b],editorRelKeys[a].content=g[c],editorRelKeys[a].func=editorGetContent_xe,"undefined"!=typeof g._saved_doc_title){var h=g._saved_doc_title.value,i=g._saved_doc_content.value;if(h||i)if(confirm(g._saved_doc_message.value)){"undefined"!=typeof g.title&&(g.title.value=h),editorRelKeys[a].content.value=i;var j=[];j.editor_sequence=a,j.primary_key=b,j.mid=current_mid;var k=new Array("error","message","editor_sequence","key","title","content","document_srl");exec_xml("editor","procEditorLoadSavedDocument",j,getAutoSavedSrl,k)}else editorRemoveSavedDoc()}var l=editorRelKeys[a].content.value;l||xIE4Up||(l="
");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){}"undefined"!=typeof g._saved_doc_title&&editorEnableAutoSave(g,a),"html"==xGetCookie("editor_mode")&&(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;c=g.selection.createRange();var g=f.contentWindow.document,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)){if(!editorGetIFrame(e))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){if(!editorGetIFrame(e))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","",b.target),xPreventDefault(a),xStopPropagation(a);break;case 55:editorDo("formatblock","

",b.target),xPreventDefault(a),xStopPropagation(a);break;case 13:if(xIE4Up){if("On"!=b.target.parentElement.document.designMode)return;return c=b.target.parentElement.document.selection.createRange(),c.pasteHTML("

"),c.select(),a.cancelBubble=!0,a.returnValue=!1,void 0}break;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(/
/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=[]; \ No newline at end of file diff --git a/modules/editor/tpl/js/editor_common.js b/modules/editor/tpl/js/editor_common.js index f78d677e7..4f3e98959 100644 --- a/modules/editor/tpl/js/editor_common.js +++ b/modules/editor/tpl/js/editor_common.js @@ -1,14 +1,14 @@ /** * 에디터에서 사용하기 위한 변수 **/ -var editorMode = new Array(); ///<< 에디터의 html편집 모드 flag 세팅 변수 (html or null) -var editorAutoSaveObj = {fo_obj:null, editor_sequence:0, title:'', content:'', locked:false} ///< 자동저장을 위한 정보를 가진 object -var editorRelKeys = new Array(); ///< 에디터와 각 모듈과의 연동을 위한 key 값을 보관하는 변수 -var editorDragObj = {isDrag:false, y:0, obj:null, id:'', det:0, source_height:0} +var editorMode = []; ///<< 에디터의 html편집 모드 flag 세팅 변수 (html or null) +var editorAutoSaveObj = {fo_obj:null, editor_sequence:0, title:'', content:'', locked:false}; ///< 자동저장을 위한 정보를 가진 object +var editorRelKeys = []; ///< 에디터와 각 모듈과의 연동을 위한 key 값을 보관하는 변수 +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' ); @@ -33,12 +33,12 @@ 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 content = editorRelKeys[editor_sequence].content.value; 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; @@ -50,11 +50,11 @@ function _editorAutoSave(exe, callback) { // 50초마다 동기화를 시킴 강제 실행은 제외 if(!exe) { clearTimeout(editorEnableAutoSave.timer); - editorEnableAutoSave.timer = setTimeout(function(){ _editorAutoSave(exe, callback) }, 50000); + 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; @@ -63,7 +63,7 @@ function _editorAutoSave(exe, callback) { var title = fo_obj.title.value; var content = ''; try{ - content = editorGetContent(editor_sequence); + content = editorGetContent(editor_sequence); }catch(e){ } @@ -75,7 +75,7 @@ function _editorAutoSave(exe, callback) { title : title, content : content, mid : current_mid, - document_srl : editorRelKeys[editor_sequence]['primary'].value + document_srl : editorRelKeys[editor_sequence].primary.value }; editorAutoSaveObj.title = title; @@ -106,8 +106,8 @@ function _editorAutoSave(exe, callback) { // 자동저장된 모든 메세지를 삭제하는 루틴 function editorRemoveSavedDoc() { - var param = new Array(); - param['mid'] = current_mid; + var param = []; + param.mid = current_mid; exec_xml("editor","procEditorRemoveSavedDoc", param); } @@ -117,8 +117,10 @@ function editorRemoveSavedDoc() { // editor_sequence값에 해당하는 iframe의 object를 return function editorGetIFrame(editor_sequence) { - if(editorRelKeys != undefined && editorRelKeys[editor_sequence] != undefined && editorRelKeys[editor_sequence]['editor'] != undefined) - return editorRelKeys[editor_sequence]['editor'].getFrame(editor_sequence); + 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 ); } function editorGetTextarea(editor_sequence) { @@ -217,11 +219,12 @@ function editorSearchComponent(evt) { editorPrevNode = null; var obj = e.target; + var tobj = obj; + var editor_sequence; // 위젯인지 일단 체크 if(obj.getAttribute("widget")) { // editor_sequence을 찾음 - var tobj = obj; while(tobj && tobj.nodeName != "BODY") { tobj = xParent(tobj); } @@ -229,7 +232,7 @@ function editorSearchComponent(evt) { editorPrevNode = null; return; } - var editor_sequence = tobj.getAttribute("editor_sequence"); + editor_sequence = tobj.getAttribute("editor_sequence"); var widget = obj.getAttribute("widget"); editorPrevNode = obj; @@ -268,7 +271,7 @@ function editorSearchComponent(evt) { } // editor_sequence을 찾음 - var tobj = obj; + tobj = obj; while(tobj && tobj.nodeName != "BODY") { tobj = xParent(tobj); } @@ -276,7 +279,7 @@ function editorSearchComponent(evt) { editorPrevNode = null; return; } - var editor_sequence = tobj.getAttribute("editor_sequence"); + editor_sequence = tobj.getAttribute("editor_sequence"); // 해당 컴포넌트를 찾아서 실행 openComponent(editor_component, editor_sequence); @@ -284,6 +287,7 @@ function editorSearchComponent(evt) { // 에디터 내의 선택된 부분의 html코드를 변경 function editorReplaceHTML(iframe_obj, html) { + var range; // 이미지 경로 재지정 (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"'); @@ -296,12 +300,12 @@ function editorReplaceHTML(iframe_obj, html) { var editor_sequence = iframe_obj.editor_sequence || iframe_obj.contentWindow.document.body.getAttribute("editor_sequence"); // iframe 에디터에 포커스를 둠 - try { iframe_obj.contentWindow.focus(); }catch(e){}; + 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(); + range = iframe_obj.contentWindow.document.selection.createRange(); if(range.pasteHTML) { range.pasteHTML(html); } else if(editorPrevNode) { @@ -310,12 +314,12 @@ function editorReplaceHTML(iframe_obj, html) { } else { try { if(iframe_obj.contentWindow.getSelection().focusNode.tagName == "HTML") { - var range = iframe_obj.contentDocument.createRange(); + 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 = iframe_obj.contentWindow.getSelection().getRangeAt(0); range.deleteContents(); range.insertNode(range.createContextualFragment(html)); } @@ -327,18 +331,22 @@ function editorReplaceHTML(iframe_obj, html) { // 에디터 내의 선택된 부분의 html 코드를 return function editorGetSelectedHtml(editor_sequence) { + var range, html, dummy; 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; + range = iframe_obj.contentWindow.document.selection.createRange(); + html = range.htmlText; + return html; } else { - var range = iframe_obj.contentWindow.getSelection().getRangeAt(0); - var dummy = xCreateElement('div'); + range = iframe_obj.contentWindow.getSelection().getRangeAt(0); + dummy = xCreateElement('div'); dummy.appendChild(range.cloneContents()); - var html = xInnerHtml(dummy); + html = xInnerHtml(dummy); + return html; } } @@ -346,89 +354,87 @@ function editorGetSelectedHtml(editor_sequence) { // {{{ iframe 세로 크기 조절 (function($){ + var dragging = false; + var startY = 0; + var startH = 0; + var editorId = ''; + var eventObj = null; // event target object + var targetObj = null; // elements to be resized -var dragging = false; -var startY = 0; -var startH = 0; -var editorId = ''; -var eventObj = null; // event target object -var targetObj = null; // elements to be resized + function editorDragStart(e) { + var obj = $(e.target); + var id = obj.attr('id'); -function editorDragStart(e) { - 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; + editorId = RegExp.$1; - 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 visible_obj = iframe_obj.is(':visible')?iframe_obj:textarea_obj; - 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')); - startH = parseInt(visible_obj.css('height')); + targetObj = $([ iframe_obj[0], textarea_obj[0] ]); + if (preview_obj.length) targetObj.add(preview_obj[0]); - targetObj = $([ iframe_obj[0], textarea_obj[0] ]); - if (preview_obj.length) targetObj.add(preview_obj[0]); + if (!isNaN(startH) || !startH) { + var oh_before = visible_obj[0].offsetHeight; + visible_obj.css('height', oh_before+'px'); + var oh_after = visible_obj[0].offsetHeight; - if (!isNaN(startH) || !startH) { - var oh_before = visible_obj[0].offsetHeight; - visible_obj.css('height', oh_before+'px'); - var oh_after = visible_obj[0].offsetHeight; + startH = oh_before*2 - oh_after; + targetObj.css('height', startH+'px'); + } - startH = oh_before*2 - oh_after; - targetObj.css('height', startH+'px'); + $('#xeEditorMask_' + editorId).show(); + $(document).mousemove(editorDragMove); + + return false; } - $('#xeEditorMask_' + editorId).show(); - $(document).mousemove(editorDragMove); + function editorDragMove(e) { + if(!dragging) { + $('#xeEditorMask_' + editorId).hide(); + return; + } - return false; -} + var diff = e.pageY - startY; + targetObj.css('height', (startH + diff)+'px'); -function editorDragMove(e) { - if(!dragging) { + return false; + } + + function editorDragStop(e) { $('#xeEditorMask_' + editorId).hide(); - return; + if(!dragging) return; + + $(document).unbind('mousemove', editorDragMove); + + if($.isFunction(window.fixAdminLayoutFooter)) { + var diff = parseInt(targetObj.eq(0).css('height')) - startH; + + fixAdminLayoutFooter( diff ); + } + + dragging = false; + startY = 0; + eventObj = null; + targetObj = null; + editorId = ''; + + return false; } - var diff = e.pageY - startY; - targetObj.css('height', (startH + diff)+'px'); - - return false; -} - -function editorDragStop(e) { - $('#xeEditorMask_' + editorId).hide(); - if(!dragging) return; - - $(document).unbind('mousemove', editorDragMove); - - if($.isFunction(window.fixAdminLayoutFooter)) { - var diff = parseInt(targetObj.eq(0).css('height')) - startH; - - fixAdminLayoutFooter( diff ); - } - - dragging = false; - startY = 0; - eventObj = null; - targetObj = null; - editorId = ''; - - return false; -} - -/* -$(document).bind({ - mousedown : editorDragStart, - mouseup : editorDragStop -}); -*/ - + /* + $(document).bind({ + mousedown : editorDragStart, + mouseup : editorDragStop + }); + */ })(jQuery); // }}} iframe 세로 크기 조절 diff --git a/modules/editor/tpl/js/editor_common.min.js b/modules/editor/tpl/js/editor_common.min.js index 7e9c2777a..56fc16bbd 100644 --- a/modules/editor/tpl/js/editor_common.min.js +++ b/modules/editor/tpl/js/editor_common.min.js @@ -1 +1 @@ -function editorGetContent(a){var b=editorRelKeys[a].func(a),c=new RegExp(request_uri.replace(/\//g,"\\/")+"(files|common|modules|layouts|widgets)","ig");return b.replace(c,"$1")}function editorFocus(a){try{var b=editorGetIFrame(a);jQuery.isFunction(b.setFocus)?b.setFocus():b.contentWindow.focus()}catch(c){}}function editorEnableAutoSave(a,b,c){var d=a.title.value,e=editorRelKeys[b].content.value;editorAutoSaveObj={fo_obj:a,editor_sequence:b,title:d,content:e,locked:!1},clearTimeout(editorEnableAutoSave.timer),editorEnableAutoSave.timer=setTimeout(function(){_editorAutoSave(!1,c)},5e4)}function _editorAutoSave(a,b){var c=editorAutoSaveObj.fo_obj,d=editorAutoSaveObj.editor_sequence;if(a||(clearTimeout(editorEnableAutoSave.timer),editorEnableAutoSave.timer=setTimeout(function(){_editorAutoSave(a,b)},5e4)),1!=editorAutoSaveObj.locked&&c&&"undefined"!=typeof c.title&&d){var e=c.title.value,f="";try{f=editorGetContent(d)}catch(g){}if(e!=editorAutoSaveObj.title||f!=editorAutoSaveObj.content||a){var h,i=new Date;h={title:e,content:f,mid:current_mid,document_srl:editorRelKeys[d].primary.value},editorAutoSaveObj.title=e,editorAutoSaveObj.content=f,jQuery("#editor_autosaved_message_"+d).text(i.getHours()+":"+i.getMinutes()+" "+auto_saved_msg).show(300),editorAutoSaveObj.locked=!0,show_waiting_message=!1,exec_xml("editor","procEditorSaveDoc",h,function(){var a=jQuery.extend({},h,{auto_saved_msg:auto_saved_msg});editorAutoSaveObj.locked=!1,jQuery.isFunction(b)&&b(a)}),show_waiting_message=!0}}}function editorRemoveSavedDoc(){var a=new Array;a.mid=current_mid,exec_xml("editor","procEditorRemoveSavedDoc",a)}function editorGetIFrame(a){return void 0!=editorRelKeys&&void 0!=editorRelKeys[a]&&void 0!=editorRelKeys[a].editor?editorRelKeys[a].editor.getFrame(a):document.getElementById("editor_iframe_"+a)}function editorGetTextarea(a){return document.getElementById("editor_textarea_"+a)}function eOptionOver(a){a.style.marginTop="-21px",a.style.zIndex="99"}function eOptionOut(a){a.style.marginTop="0",a.style.zIndex="1"}function eOptionClick(a){a.style.marginTop="-42px",a.style.zIndex="99"}function editorEventCheck(a){editorPrevNode=null;var b=a.target.id;if(b){var c=b.split("_");if("component"==c[0]){var d=c[1],e=b.replace(/^component_[0-9]+_/,"");if(d&&e&&"html"!=editorMode[d])switch(e){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(e,"",d);break;default:return openComponent(e,d),!1}}}}function openComponent(a,b,c){if(editorPrevSrl=b,"html"!=editorMode[b]){var d=request_uri+"?module=editor&act=dispEditorPopup&editor_sequence="+b+"&component="+a;"undefined"!=typeof c&&c&&(d+="&manual_url="+escape(c)),popopen(d,"editorComponent")}}function editorSearchComponent(a){var b=new xEvent(a);editorPrevNode=null;var c=b.target;if(c.getAttribute("widget")){for(var d=c;d&&"BODY"!=d.nodeName;)d=xParent(d);if(!d||"BODY"!=d.nodeName||!d.getAttribute("editor_sequence"))return editorPrevNode=null,void 0;var e=d.getAttribute("editor_sequence"),f=c.getAttribute("widget");if(editorPrevNode=c,"html"==editorMode[e])return;return popopen(request_uri+"?module=widget&act=dispWidgetGenerateCodeInPage&selected_widget="+f+"&module_srl="+e,"GenerateCodeInPage"),void 0}if(!c.getAttribute("editor_component"))for(;c&&!c.getAttribute("editor_component");)c=c.parentElement?c.parentElement:xParent(c);c||(c=b.target);var g=c.getAttribute("editor_component");if(g?editorPrevNode=c:"IMG"!=c.nodeName||c.getAttribute("widget")||(g="image_link",editorPrevNode=c),!g)return editorPrevNode=null,void 0;for(var d=c;d&&"BODY"!=d.nodeName;)d=xParent(d);if(!d||"BODY"!=d.nodeName||!d.getAttribute("editor_sequence"))return editorPrevNode=null,void 0;var e=d.getAttribute("editor_sequence");openComponent(g,e)}function editorReplaceHTML(a,b){var c=/src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/g;b=b.replace(c,'src="'+request_uri+'$3/$4.$5"');var d=/href=("|\'){1}(\.\/)?\?([^"\']+)("|\'){1}/g;b=b.replace(d,'href="'+request_uri+'?$3"');a.editor_sequence||a.contentWindow.document.body.getAttribute("editor_sequence");try{a.contentWindow.focus()}catch(e){}if(jQuery.isFunction(a.replaceHTML))a.replaceHTML(b);else if(xIE4Up){var f=a.contentWindow.document.selection.createRange();f.pasteHTML?f.pasteHTML(b):editorPrevNode&&(editorPrevNode.outerHTML=b)}else try{if("HTML"==a.contentWindow.getSelection().focusNode.tagName){var f=a.contentDocument.createRange();f.setStart(a.contentDocument.body,0),f.setEnd(a.contentDocument.body,0),f.insertNode(f.createContextualFragment(b))}else{var f=a.contentWindow.getSelection().getRangeAt(0);f.deleteContents(),f.insertNode(f.createContextualFragment(b))}}catch(e){xInnerHtml(a.contentWindow.document.body,b+xInnerHtml(a.contentWindow.document.body))}}function editorGetSelectedHtml(a){var b=editorGetIFrame(a);if(jQuery.isFunction(b.getSelectedHTML))return b.getSelectedHTML();if(xIE4Up){var c=b.contentWindow.document.selection.createRange(),d=c.htmlText;return d}var c=b.contentWindow.getSelection().getRangeAt(0),e=xCreateElement("div");e.appendChild(c.cloneContents());var d=xInnerHtml(e);return d}var editorMode=new Array,editorAutoSaveObj={fo_obj:null,editor_sequence:0,title:"",content:"",locked:!1},editorRelKeys=new Array,editorDragObj={isDrag:!1,y:0,obj:null,id:"",det:0,source_height:0};editorEnableAutoSave.timer=null;var editorPrevSrl=null;jQuery(document).click(editorEventCheck);var editorPrevNode=null;!function(a){}(jQuery); \ No newline at end of file +function editorGetContent(a){var b=editorRelKeys[a].func(a),c=new RegExp(request_uri.replace(/\//g,"\\/")+"(files|common|modules|layouts|widgets)","ig");return b.replace(c,"$1")}function editorFocus(a){try{var b=editorGetIFrame(a);jQuery.isFunction(b.setFocus)?b.setFocus():b.contentWindow.focus()}catch(c){}}function editorEnableAutoSave(a,b,c){var d=a.title.value,e=editorRelKeys[b].content.value;editorAutoSaveObj={fo_obj:a,editor_sequence:b,title:d,content:e,locked:!1},clearTimeout(editorEnableAutoSave.timer),editorEnableAutoSave.timer=setTimeout(function(){_editorAutoSave(!1,c)},5e4)}function _editorAutoSave(a,b){var c=editorAutoSaveObj.fo_obj,d=editorAutoSaveObj.editor_sequence;if(a||(clearTimeout(editorEnableAutoSave.timer),editorEnableAutoSave.timer=setTimeout(function(){_editorAutoSave(a,b)},5e4)),editorAutoSaveObj.locked!==!0&&c&&"undefined"!=typeof c.title&&d){var e=c.title.value,f="";try{f=editorGetContent(d)}catch(g){}if(e!=editorAutoSaveObj.title||f!=editorAutoSaveObj.content||a){var h,i=new Date;h={title:e,content:f,mid:current_mid,document_srl:editorRelKeys[d].primary.value},editorAutoSaveObj.title=e,editorAutoSaveObj.content=f,jQuery("#editor_autosaved_message_"+d).text(i.getHours()+":"+i.getMinutes()+" "+auto_saved_msg).show(300),editorAutoSaveObj.locked=!0,show_waiting_message=!1,exec_xml("editor","procEditorSaveDoc",h,function(){var a=jQuery.extend({},h,{auto_saved_msg:auto_saved_msg});editorAutoSaveObj.locked=!1,jQuery.isFunction(b)&&b(a)}),show_waiting_message=!0}}}function editorRemoveSavedDoc(){var a=[];a.mid=current_mid,exec_xml("editor","procEditorRemoveSavedDoc",a)}function editorGetIFrame(a){return void 0!==editorRelKeys&&void 0!==editorRelKeys[a]&&void 0!==editorRelKeys[a].editor?editorRelKeys[a].editor.getFrame(a):document.getElementById("editor_iframe_"+a)}function editorGetTextarea(a){return document.getElementById("editor_textarea_"+a)}function eOptionOver(a){a.style.marginTop="-21px",a.style.zIndex="99"}function eOptionOut(a){a.style.marginTop="0",a.style.zIndex="1"}function eOptionClick(a){a.style.marginTop="-42px",a.style.zIndex="99"}function editorEventCheck(a){editorPrevNode=null;var b=a.target.id;if(b){var c=b.split("_");if("component"==c[0]){var d=c[1],e=b.replace(/^component_[0-9]+_/,"");if(d&&e&&"html"!=editorMode[d])switch(e){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(e,"",d);break;default:return openComponent(e,d),!1}}}}function openComponent(a,b,c){if(editorPrevSrl=b,"html"!=editorMode[b]){var d=request_uri+"?module=editor&act=dispEditorPopup&editor_sequence="+b+"&component="+a;"undefined"!=typeof c&&c&&(d+="&manual_url="+escape(c)),popopen(d,"editorComponent")}}function editorSearchComponent(a){var b=new xEvent(a);editorPrevNode=null;var c,d=b.target,e=d;if(d.getAttribute("widget")){for(;e&&"BODY"!=e.nodeName;)e=xParent(e);if(!e||"BODY"!=e.nodeName||!e.getAttribute("editor_sequence"))return editorPrevNode=null,void 0;c=e.getAttribute("editor_sequence");var f=d.getAttribute("widget");if(editorPrevNode=d,"html"==editorMode[c])return;return popopen(request_uri+"?module=widget&act=dispWidgetGenerateCodeInPage&selected_widget="+f+"&module_srl="+c,"GenerateCodeInPage"),void 0}if(!d.getAttribute("editor_component"))for(;d&&!d.getAttribute("editor_component");)d=d.parentElement?d.parentElement:xParent(d);d||(d=b.target);var g=d.getAttribute("editor_component");if(g?editorPrevNode=d:"IMG"!=d.nodeName||d.getAttribute("widget")||(g="image_link",editorPrevNode=d),!g)return editorPrevNode=null,void 0;for(e=d;e&&"BODY"!=e.nodeName;)e=xParent(e);return e&&"BODY"==e.nodeName&&e.getAttribute("editor_sequence")?(c=e.getAttribute("editor_sequence"),openComponent(g,c),void 0):(editorPrevNode=null,void 0)}function editorReplaceHTML(a,b){var c,d=/src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/g;b=b.replace(d,'src="'+request_uri+'$3/$4.$5"');var e=/href=("|\'){1}(\.\/)?\?([^"\']+)("|\'){1}/g;b=b.replace(e,'href="'+request_uri+'?$3"');a.editor_sequence||a.contentWindow.document.body.getAttribute("editor_sequence");try{a.contentWindow.focus()}catch(f){}if(jQuery.isFunction(a.replaceHTML))a.replaceHTML(b);else if(xIE4Up)c=a.contentWindow.document.selection.createRange(),c.pasteHTML?c.pasteHTML(b):editorPrevNode&&(editorPrevNode.outerHTML=b);else try{"HTML"==a.contentWindow.getSelection().focusNode.tagName?(c=a.contentDocument.createRange(),c.setStart(a.contentDocument.body,0),c.setEnd(a.contentDocument.body,0),c.insertNode(c.createContextualFragment(b))):(c=a.contentWindow.getSelection().getRangeAt(0),c.deleteContents(),c.insertNode(c.createContextualFragment(b)))}catch(f){xInnerHtml(a.contentWindow.document.body,b+xInnerHtml(a.contentWindow.document.body))}}function editorGetSelectedHtml(a){var b,c,d,e=editorGetIFrame(a);return jQuery.isFunction(e.getSelectedHTML)?e.getSelectedHTML():xIE4Up?(b=e.contentWindow.document.selection.createRange(),c=b.htmlText):(b=e.contentWindow.getSelection().getRangeAt(0),d=xCreateElement("div"),d.appendChild(b.cloneContents()),c=xInnerHtml(d))}var editorMode=[],editorAutoSaveObj={fo_obj:null,editor_sequence:0,title:"",content:"",locked:!1},editorRelKeys=[],editorDragObj={isDrag:!1,y:0,obj:null,id:"",det:0,source_height:0};editorEnableAutoSave.timer=null;var editorPrevSrl=null;jQuery(document).click(editorEventCheck);var editorPrevNode=null;!function(a){}(jQuery); \ No newline at end of file diff --git a/modules/editor/tpl/js/editor_module_config.js b/modules/editor/tpl/js/editor_module_config.js index b02689d27..89a343283 100644 --- a/modules/editor/tpl/js/editor_module_config.js +++ b/modules/editor/tpl/js/editor_module_config.js @@ -11,7 +11,7 @@ function resultGetEditorSkinColorList(ret_obj,response_tags, params) { jQuery(function($){ if(params.testid){ selectbox = $("#"+params.testid).next('label').children('select'); - }else{ + } else { selectbox = (params.type == 'document') ? $('select[name=sel_editor_colorset]') : $('select[name=sel_comment_editor_colorset]'); } selectbox.html(''); @@ -20,20 +20,22 @@ function resultGetEditorSkinColorList(ret_obj,response_tags, params) { $("select[name=sel_editor_colorset]").hide() .removeAttr('name'); selectbox.attr('name','sel_editor_colorset'); - }else{ + } else { $("select[name=sel_comment_editor_colorset]").hide() .removeAttr('name'); selectbox.attr('name','sel_comment_editor_colorset'); } - if(ret_obj['error'] == 0 && ret_obj.colorset){ - var it = new Array(); - var items = ret_obj['colorset']['item']; + /* jshint -W041 */ + if(ret_obj.error == 0 && ret_obj.colorset){ + var it = []; + var items = ret_obj.colorset.item; if(typeof(items[0]) == 'undefined'){ it[0] = items; - }else{ + } else { it = items; } + var selectAttr = ""; for(var i=0;i'+it[i].title+''); @@ -45,7 +47,7 @@ function resultGetEditorSkinColorList(ret_obj,response_tags, params) { selectbox.append($options); } selectbox.show(); - }else{ + } else { selectbox.hide(); selectbox.html(''); } diff --git a/modules/editor/tpl/js/editor_module_config.min.js b/modules/editor/tpl/js/editor_module_config.min.js new file mode 100644 index 000000000..674245c8a --- /dev/null +++ b/modules/editor/tpl/js/editor_module_config.min.js @@ -0,0 +1 @@ +function getEditorSkinColorList(a,b,c,d){if(a.length>0){c=c||"document";var e=new Array("error","message","colorset");exec_xml("editor","dispEditorSkinColorset",{skin:a},resultGetEditorSkinColorList,e,{selected_colorset:b,type:c,testid:d})}}function resultGetEditorSkinColorList(a,b,c){var d=null;jQuery(function(b){if(d=c.testid?b("#"+c.testid).next("label").children("select"):"document"==c.type?b("select[name=sel_editor_colorset]"):b("select[name=sel_comment_editor_colorset]"),d.html(""),"document"==c.type?(b("select[name=sel_editor_colorset]").hide().removeAttr("name"),d.attr("name","sel_editor_colorset")):(b("select[name=sel_comment_editor_colorset]").hide().removeAttr("name"),d.attr("name","sel_comment_editor_colorset")),0==a.error&&a.colorset){var e=[],f=a.colorset.item;"undefined"==typeof f[0]?e[0]=f:e=f;for(var g=0;g'+e[g].title+"");c.selected_colorset==e[g].name&&h.attr("selected","selected"),d.append(h)}d.show()}else d.hide(),d.html("")})} \ No newline at end of file diff --git a/modules/editor/tpl/js/uploader.js b/modules/editor/tpl/js/uploader.js index e6b69fe80..3e7b2201b 100755 --- a/modules/editor/tpl/js/uploader.js +++ b/modules/editor/tpl/js/uploader.js @@ -16,319 +16,317 @@ var uploadAutosaveChecker = false; **/ // window.load 이벤트일 경우 && 문서 번호가 가상의 번호가 아니면 기존에 저장되어 있을지도 모르는 파일 목록을 가져옴 (function($){ + var defaultHandlers; -var defaultHandlers; + function init(cfg, exe) { + var seq = cfg.editorSequence; -function init(cfg, exe) { - var seq = cfg.editorSequence; + if(!is_def(seq)) return; - if(!is_def(seq)) return; + cfg = $.extend({ + sessionName : 'PHPSESSID', + allowedFileSize : 2097152, // byte. 2*1024*1024 + allowedFileTypes : '*.*', + allowedFileTypesDescription : 'All Files', + replaceButtonID : 'swfUploadButton'+cfg.editorSequence, + insertedFiles : 0 + }, cfg); - cfg = $.extend({ - sessionName : 'PHPSESSID', - allowedFileSize : 2*1024*1024, - allowedFileTypes : '*.*', - allowedFileTypesDescription : 'All Files', - replaceButtonID : 'swfUploadButton'+cfg.editorSequence, - insertedFiles : 0 - }, cfg); + uploadSettingObj[seq] = cfg; + $(function(){ start(cfg); }); - uploadSettingObj[seq] = cfg; - $(function(){ start(cfg) }); - -} - -function start(cfg) { - var $button, width, height, $span, seq, id, settings, handlers, name, fn, swfu, $swf; - - seq = cfg.editorSequence; - id = cfg.replaceButtonID; - $button = $('#'+id).wrap(''); - width = $button.width(); - height = $button.height(); - $span = $('').insertAfter($button); - - settings = { - 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 : seq, - uploadTargetSrl : editorRelKeys[seq].primary.value - }, - http_success : [302], - file_size_limit : Math.floor( (parseInt(cfg.allowedFileSize,10)||1024) / 1024 ), - file_queue_limit : 0, - file_upload_limit : 0, - file_types : cfg.allowedFileTypes, - file_types_description : cfg.allowedFileTypesDescription, - custom_settings : { - progressTarget : null, - cancelButtonId : null - }, - debug : false, - - // Button settings - button_window_mode : 'transparent', - button_placeholder_id : $span.attr('id'), - button_text : null, - button_image_url : request_uri+'common/img/blank.gif', - button_width : width, - button_height : height, - button_text_style : null, - button_text_left_padding : 0, - button_text_top_padding : 0, - button_cursor : -2, - - editorSequence : seq, - uploadTargetSrl : editorRelKeys[seq].primary.value, - fileListAreaID : cfg.fileListAreaID, - previewAreaID : cfg.previewAreaID, - uploaderStatusID : cfg.uploaderStatusID - }; - - if(typeof(enforce_ssl)!=="undefined" && enforce_ssl) - { - settings.upload_url = request_uri+'index.php'; - }; - - // preview - $('#'+cfg.fileListAreaID).click(previewFiles); - - // The event handler functions are defined in handlers.js - handlers = { - 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(name in handlers) { - if(!handlers.hasOwnProperty(name)) continue; - fn = 'on'+handlers[name]; - settings[name+'_handler'] = cfg['on'+fn] || defaultHandlers[fn]; } - if(is_def(window.xeVid)) settings.post_params.vid = xeVid; - settings.post_params[cfg.sessionName] = getCookie(cfg.sessionName); + function start(cfg) { + var $button, width, height, $span, seq, id, settings, handlers, name, fn, swfu, $swf; - uploaderSettings[seq] = settings; + seq = cfg.editorSequence; + id = cfg.replaceButtonID; + $button = $('#'+id).wrap(''); + width = $button.width(); + height = $button.height(); + $span = $('').insertAfter($button); - swfu = new SWFUpload(settings); - $swf = $('#'+swfu.movieName); - swfUploadObjs[seq] = swfu.movieName; - if(!$swf.length) return; + settings = { + 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 : seq, + uploadTargetSrl : editorRelKeys[seq].primary.value + }, + http_success : [302], + file_size_limit : Math.floor( (parseInt(cfg.allowedFileSize,10)||1024) / 1024 ), + file_queue_limit : 0, + file_upload_limit : 0, + file_types : cfg.allowedFileTypes, + file_types_description : cfg.allowedFileTypesDescription, + custom_settings : { + progressTarget : null, + cancelButtonId : null + }, + debug : false, - $swf.css({ - display : 'block', - cursor : 'pointer', - position : 'absolute', - left : 0, - top : 0, - width : width + 'px', - height : height + 'px' - }); + // Button settings + button_window_mode : 'transparent', + button_placeholder_id : $span.attr('id'), + button_text : null, + button_image_url : request_uri+'common/img/blank.gif', + button_width : width, + button_height : height, + button_text_style : null, + button_text_left_padding : 0, + button_text_top_padding : 0, + button_cursor : -2, - if(cfg.insertedFiles || editorRelKeys[seq].primary.value) reloadFileList(cfg); -} + editorSequence : seq, + uploadTargetSrl : editorRelKeys[seq].primary.value, + fileListAreaID : cfg.fileListAreaID, + previewAreaID : cfg.previewAreaID, + uploaderStatusID : cfg.uploaderStatusID + }; -function _true(){ return true }; + if(typeof(enforce_ssl)!=="undefined" && enforce_ssl) + { + settings.upload_url = request_uri+'index.php'; + } -defaultHandlers = { - onFileQueued : _true, - onFileQueueError : function(file, errorCode, message) { - try { - switch(errorCode) { - case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED : - alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file."))); + // preview + $('#'+cfg.fileListAreaID).click(previewFiles); + + // The event handler functions are defined in handlers.js + handlers = { + 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(name in handlers) { + if(!handlers.hasOwnProperty(name)) continue; + fn = 'on'+handlers[name]; + settings[name+'_handler'] = cfg['on'+fn] || defaultHandlers[fn]; + } + + if(is_def(window.xeVid)) settings.post_params.vid = xeVid; + settings.post_params[cfg.sessionName] = getCookie(cfg.sessionName); + + uploaderSettings[seq] = settings; + + swfu = new SWFUpload(settings); + $swf = $('#'+swfu.movieName); + swfUploadObjs[seq] = swfu.movieName; + if(!$swf.length) return; + + $swf.css({ + display : 'block', + cursor : 'pointer', + position : 'absolute', + left : 0, + top : 0, + width : width + 'px', + height : height + 'px' + }); + + if(cfg.insertedFiles || editorRelKeys[seq].primary.value) reloadFileList(cfg); + } + + function _true(){ return true; } + + defaultHandlers = { + onFileQueued : _true, + onFileQueueError : function(file, errorCode, message) { + try { + switch(errorCode) { + case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED : + alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file."))); + break; + case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT: + alert("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE: + alert("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE: + alert("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + default: + alert("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + } + } catch(e) { + this.debug(e); + } + }, + onFileDialogComplete : function(numFilesSelected, numFilesQueued) { + try { + this.startUpload(); + } catch (e) { + this.debug(e); + } + }, + onUploadStart : _true, + onUploadProgress : function(file, bytesLoaded, bytesTotal) { + try { + var $list, $lastopt, percent, filename; + + $list = $('#'+this.settings.fileListAreaID); + percent = Math.ceil((bytesLoaded / bytesTotal) * 100); + filename = file.name; + $lastopt = $list.find('>option:last'); + + if(filename.length>20) filename = filename.substr(0,20)+'...'; + if(!$lastopt.length || $lastopt.attr('value') != file.id) { + $lastopt = $('