mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-30 16:49:58 +09:00
#358 editor js minify
This commit is contained in:
parent
a11988e437
commit
c503c57477
9 changed files with 464 additions and 422 deletions
47
Gruntfile.js
47
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/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/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.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
|
// module/admin
|
||||||
'modules/admin/tpl/js/admin.min.js': ['modules/admin/tpl/js/admin.js'],
|
'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'],
|
'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/jquery.oembed.min.js': ['addons/oembed/jquery.oembed.js'],
|
||||||
'addons/oembed/oembed.min.js': ['addons/oembed/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: {
|
cssmin: {
|
||||||
|
|
@ -134,18 +154,28 @@ module.exports = function(grunt) {
|
||||||
files: {
|
files: {
|
||||||
'addons/oembed/jquery.oembed.min.css': ['addons/oembed/jquery.oembed.css'],
|
'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: {
|
jshint: {
|
||||||
files: [
|
files: [
|
||||||
'Gruntfile.js',
|
'Gruntfile.js',
|
||||||
'common/js/*.js', '!common/js/html5.js', '!common/js/jquery.js', '!common/js/x.js', '!common/js/xe.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/board/tpl/js/*.js',
|
||||||
'modules/widget/tpl/js/widget.js',
|
'modules/widget/tpl/js/*.js',
|
||||||
'modules/widget/tpl/js/widget_admin.js',
|
'modules/editor/tpl/js/*.js',
|
||||||
'!**/jquery*.js',
|
|
||||||
'!**/*.min.js',
|
|
||||||
'!**/*-packed.js'
|
|
||||||
],
|
],
|
||||||
options : {
|
options : {
|
||||||
globalstrict: false,
|
globalstrict: false,
|
||||||
|
|
@ -158,9 +188,10 @@ module.exports = function(grunt) {
|
||||||
"window" : true
|
"window" : true
|
||||||
},
|
},
|
||||||
ignores : [
|
ignores : [
|
||||||
'skins/xe_2010_gallery/js/jquery.easing.1.3.js',
|
'**/jquery*.js',
|
||||||
'skins/xe_2010_gallery/js/json2007.js',
|
'**/swfupload.js',
|
||||||
'**/*.min.js',
|
'**/*.min.js',
|
||||||
|
'**/*-packed.js',
|
||||||
'**/*.compressed.js'
|
'**/*.compressed.js'
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ function editorGetSelectedNode(editor_sequence) {
|
||||||
/**
|
/**
|
||||||
* editor 시작 (editor_sequence로 iframe객체를 얻어서 쓰기 모드로 전환)
|
* editor 시작 (editor_sequence로 iframe객체를 얻어서 쓰기 모드로 전환)
|
||||||
**/
|
**/
|
||||||
var _editorFontColor = new Array();
|
var _editorFontColor = [];
|
||||||
function editorStart(editor_sequence, primary_key, content_key, editor_height, font_color) {
|
function editorStart(editor_sequence, primary_key, content_key, editor_height, font_color) {
|
||||||
|
|
||||||
if(typeof(font_color)=='undefined') font_color = '#000';
|
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);
|
fo_obj.setAttribute('editor_sequence', editor_sequence);
|
||||||
|
|
||||||
// 모듈 연관 키 값을 세팅
|
// 모듈 연관 키 값을 세팅
|
||||||
editorRelKeys[editor_sequence] = new Array();
|
editorRelKeys[editor_sequence] = [];
|
||||||
editorRelKeys[editor_sequence]["primary"] = fo_obj[primary_key];
|
editorRelKeys[editor_sequence].primary = fo_obj[primary_key];
|
||||||
editorRelKeys[editor_sequence]["content"] = fo_obj[content_key];
|
editorRelKeys[editor_sequence].content = fo_obj[content_key];
|
||||||
editorRelKeys[editor_sequence]["func"] = editorGetContent_xe;
|
editorRelKeys[editor_sequence].func = editorGetContent_xe;
|
||||||
|
|
||||||
// saved document(자동저장 문서)에 대한 확인
|
// 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_title = fo_obj._saved_doc_title.value;
|
||||||
var saved_content = fo_obj._saved_doc_content.value;
|
var saved_content = fo_obj._saved_doc_content.value;
|
||||||
|
|
||||||
|
|
@ -99,12 +98,12 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height, f
|
||||||
// 자동저장된 문서 활용여부를 물은 후 사용하지 않는다면 자동저장된 문서 삭제
|
// 자동저장된 문서 활용여부를 물은 후 사용하지 않는다면 자동저장된 문서 삭제
|
||||||
if(confirm(fo_obj._saved_doc_message.value)) {
|
if(confirm(fo_obj._saved_doc_message.value)) {
|
||||||
if(typeof(fo_obj.title)!='undefined') fo_obj.title.value = saved_title;
|
if(typeof(fo_obj.title)!='undefined') fo_obj.title.value = saved_title;
|
||||||
editorRelKeys[editor_sequence]['content'].value = saved_content;
|
editorRelKeys[editor_sequence].content.value = saved_content;
|
||||||
|
|
||||||
var param = new Array();
|
var param = [];
|
||||||
param['editor_sequence'] = editor_sequence;
|
param.editor_sequence = editor_sequence;
|
||||||
param['primary_key'] = primary_key;
|
param.primary_key = primary_key;
|
||||||
param['mid'] = current_mid;
|
param.mid = current_mid;
|
||||||
var response_tags = new Array("error","message","editor_sequence","key","title","content","document_srl");
|
var response_tags = new Array("error","message","editor_sequence","key","title","content","document_srl");
|
||||||
exec_xml('editor',"procEditorLoadSavedDocument", param, getAutoSavedSrl, response_tags);
|
exec_xml('editor',"procEditorLoadSavedDocument", param, getAutoSavedSrl, response_tags);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -114,7 +113,7 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height, f
|
||||||
}
|
}
|
||||||
|
|
||||||
// 대상 form의 content element에서 데이터를 구함
|
// 대상 form의 content element에서 데이터를 구함
|
||||||
var content = editorRelKeys[editor_sequence]['content'].value;
|
var content = editorRelKeys[editor_sequence].content.value;
|
||||||
|
|
||||||
// IE가 아니고 내용이 없으면 <br /> 추가 (FF등에서 iframe 선택시 focus를 주기 위한 꽁수)
|
// IE가 아니고 내용이 없으면 <br /> 추가 (FF등에서 iframe 선택시 focus를 주기 위한 꽁수)
|
||||||
if(!content && !xIE4Up) content = "<br />";
|
if(!content && !xIE4Up) content = "<br />";
|
||||||
|
|
@ -184,13 +183,15 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height, f
|
||||||
|
|
||||||
// 좋지는 않으나;; 스타일 변형을 막기 위해 start 할때 html이면 바꿔주자
|
// 좋지는 않으나;; 스타일 변형을 막기 위해 start 할때 html이면 바꿔주자
|
||||||
if (xGetCookie('editor_mode') == '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';
|
if(xGetElementById('fileUploader_'+editor_sequence)) xGetElementById('fileUploader_'+editor_sequence).style.display='block';
|
||||||
|
|
||||||
textarea_obj = editorGetTextArea(editor_sequence);
|
textarea_obj = editorGetTextArea(editor_sequence);
|
||||||
textarea_obj.value = content;
|
textarea_obj.value = content;
|
||||||
xWidth(textarea_obj, xWidth(iframe_obj.parentNode));
|
xWidth(textarea_obj, xWidth(iframe_obj.parentNode));
|
||||||
xHeight(textarea_obj, xHeight(iframe_obj.parentNode));
|
xHeight(textarea_obj, xHeight(iframe_obj.parentNode));
|
||||||
editorMode[editor_sequence] = 'html';
|
editorMode[editor_sequence] = 'html';
|
||||||
|
|
||||||
if(xGetElementById('xeEditor_'+editor_sequence)) {
|
if(xGetElementById('xeEditor_'+editor_sequence)) {
|
||||||
xGetElementById('xeEditor_'+editor_sequence).className = 'xeEditor html';
|
xGetElementById('xeEditor_'+editor_sequence).className = 'xeEditor html';
|
||||||
xGetElementById('use_rich_'+editor_sequence).className = '';
|
xGetElementById('use_rich_'+editor_sequence).className = '';
|
||||||
|
|
@ -220,6 +221,7 @@ function editorKeyPress(evt) {
|
||||||
var body_obj = null;
|
var body_obj = null;
|
||||||
if(obj.nodeName == "BODY") body_obj = obj;
|
if(obj.nodeName == "BODY") body_obj = obj;
|
||||||
else body_obj = obj.firstChild.nextSibling;
|
else body_obj = obj.firstChild.nextSibling;
|
||||||
|
|
||||||
if(!body_obj) return;
|
if(!body_obj) return;
|
||||||
|
|
||||||
// editor_sequence는 에디터의 body에 attribute로 정의되어 있음
|
// editor_sequence는 에디터의 body에 attribute로 정의되어 있음
|
||||||
|
|
@ -231,38 +233,35 @@ function editorKeyPress(evt) {
|
||||||
var iframe_obj = editorGetIFrame(editor_sequence);
|
var iframe_obj = editorGetIFrame(editor_sequence);
|
||||||
if(!iframe_obj) return;
|
if(!iframe_obj) return;
|
||||||
|
|
||||||
|
obj = contentDocument.selection.createRange();
|
||||||
var contentDocument = iframe_obj.contentWindow.document;
|
var contentDocument = iframe_obj.contentWindow.document;
|
||||||
|
|
||||||
var obj = contentDocument.selection.createRange();
|
|
||||||
|
|
||||||
var pTag = obj.parentElement().tagName.toLowerCase();
|
var pTag = obj.parentElement().tagName.toLowerCase();
|
||||||
|
|
||||||
switch(pTag) {
|
switch(pTag) {
|
||||||
case 'li' :
|
case 'li' :
|
||||||
return;
|
return;
|
||||||
break;
|
|
||||||
default :
|
default :
|
||||||
obj.pasteHTML("<br />");
|
obj.pasteHTML("<br />");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
obj.select();
|
obj.select();
|
||||||
evt.cancelBubble = true;
|
evt.cancelBubble = true;
|
||||||
evt.returnValue = false;
|
evt.returnValue = false;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ctrl-S, alt-S 클릭시 submit하기
|
// ctrl-S, alt-S 클릭시 submit하기
|
||||||
if( e.keyCode == 115 && (e.altKey || e.ctrlKey) ) {
|
if( e.keyCode == 115 && (e.altKey || e.ctrlKey) ) {
|
||||||
// iframe 에디터를 찾음
|
// iframe 에디터를 찾음
|
||||||
var iframe_obj = editorGetIFrame(editor_sequence);
|
if(!editorGetIFrame(editor_sequence)) return;
|
||||||
if(!iframe_obj) return;
|
|
||||||
|
|
||||||
// 대상 form을 찾음
|
// 대상 form을 찾음
|
||||||
var fo_obj = editorGetForm(editor_sequence);
|
var fo_obj = editorGetForm(editor_sequence);
|
||||||
if(!fo_obj) return;
|
if(!fo_obj) return;
|
||||||
|
|
||||||
// 데이터 동기화
|
// 데이터 동기화
|
||||||
editorRelKeys[editor_sequence]['content'].value = editorGetContent(editor_sequence);
|
editorRelKeys[editor_sequence].content.value = editorGetContent(editor_sequence);
|
||||||
|
|
||||||
// form문 전송
|
// form문 전송
|
||||||
if(fo_obj.onsubmit) fo_obj.onsubmit();
|
if(fo_obj.onsubmit) fo_obj.onsubmit();
|
||||||
|
|
@ -278,8 +277,7 @@ function editorKeyPress(evt) {
|
||||||
// ctrl-b, i, u, s 키에 대한 처리 (파이어폭스에서도 에디터 상태에서 단축키 쓰도록)
|
// ctrl-b, i, u, s 키에 대한 처리 (파이어폭스에서도 에디터 상태에서 단축키 쓰도록)
|
||||||
if (e.ctrlKey) {
|
if (e.ctrlKey) {
|
||||||
// iframe 에디터를 찾음
|
// iframe 에디터를 찾음
|
||||||
var iframe_obj = editorGetIFrame(editor_sequence);
|
if(!editorGetIFrame(editor_sequence)) return;
|
||||||
if(!iframe_obj) return;
|
|
||||||
|
|
||||||
// html 에디터 모드일 경우 이벤트 취소 시킴
|
// html 에디터 모드일 경우 이벤트 취소 시킴
|
||||||
if(editorMode[editor_sequence]) {
|
if(editorMode[editor_sequence]) {
|
||||||
|
|
@ -287,6 +285,7 @@ function editorKeyPress(evt) {
|
||||||
evt.returnValue = false;
|
evt.returnValue = false;
|
||||||
xPreventDefault(evt);
|
xPreventDefault(evt);
|
||||||
xStopPropagation(evt);
|
xStopPropagation(evt);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -312,13 +311,16 @@ function editorKeyPress(evt) {
|
||||||
case 13 :
|
case 13 :
|
||||||
if(xIE4Up) {
|
if(xIE4Up) {
|
||||||
if(e.target.parentElement.document.designMode!="On") return;
|
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('<P>');
|
obj.pasteHTML('<P>');
|
||||||
obj.select();
|
obj.select();
|
||||||
evt.cancelBubble = true;
|
evt.cancelBubble = true;
|
||||||
evt.returnValue = false;
|
evt.returnValue = false;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
// bold
|
// bold
|
||||||
case 98 :
|
case 98 :
|
||||||
editorDo('Bold',null,e.target);
|
editorDo('Bold',null,e.target);
|
||||||
|
|
@ -425,8 +427,8 @@ function editorChangeHeader(obj,srl) {
|
||||||
**/
|
**/
|
||||||
|
|
||||||
function editorChangeMode(mode, editor_sequence) {
|
function editorChangeMode(mode, editor_sequence) {
|
||||||
|
/* jshint -W041 */
|
||||||
if(mode == 'html' || mode ==''){
|
if(mode == 'html' || mode == ''){
|
||||||
var expire = new Date();
|
var expire = new Date();
|
||||||
expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
|
expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
|
||||||
xSetCookie('editor_mode', mode, expire);
|
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)});
|
// xAddEventListener(xGetElementById('editor_preview_'+editor_sequence), 'load', function(){setPreviewHeight(editor_sequence)});
|
||||||
} else {
|
} else {
|
||||||
html = contentDocument.body.innerHTML;
|
html = contentDocument.body.innerHTML;
|
||||||
textarea_obj.value = html
|
textarea_obj.value = html;
|
||||||
html = html.replace(/<br>/ig,"<br />\n");
|
html = html.replace(/<br>/ig,"<br />\n");
|
||||||
html = html.replace(/<br \/>\n\n/ig,"<br />\n");
|
html = html.replace(/<br \/>\n\n/ig,"<br />\n");
|
||||||
}
|
}
|
||||||
|
|
@ -557,10 +559,10 @@ function setPreviewHeight(editor_sequence){
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAutoSavedSrl(ret_obj, response_tags, c) {
|
function getAutoSavedSrl(ret_obj, response_tags, c) {
|
||||||
var editor_sequence = ret_obj['editor_sequence'];
|
var editor_sequence = ret_obj.editor_sequence;
|
||||||
var primary_key = ret_obj['key'];
|
var primary_key = ret_obj.key;
|
||||||
var fo_obj = editorGetForm(editor_sequence);
|
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);
|
if(uploadSettingObj[editor_sequence]) editorUploadInit(uploadSettingObj[editor_sequence], true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
modules/editor/tpl/js/editor.min.js
vendored
2
modules/editor/tpl/js/editor.min.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,14 +1,14 @@
|
||||||
/**
|
/**
|
||||||
* 에디터에서 사용하기 위한 변수
|
* 에디터에서 사용하기 위한 변수
|
||||||
**/
|
**/
|
||||||
var editorMode = new Array(); ///<< 에디터의 html편집 모드 flag 세팅 변수 (html or null)
|
var editorMode = []; ///<< 에디터의 html편집 모드 flag 세팅 변수 (html or null)
|
||||||
var editorAutoSaveObj = {fo_obj:null, editor_sequence:0, title:'', content:'', locked:false} ///< 자동저장을 위한 정보를 가진 object
|
var editorAutoSaveObj = {fo_obj:null, editor_sequence:0, title:'', content:'', locked:false}; ///< 자동저장을 위한 정보를 가진 object
|
||||||
var editorRelKeys = new Array(); ///< 에디터와 각 모듈과의 연동을 위한 key 값을 보관하는 변수
|
var editorRelKeys = []; ///< 에디터와 각 모듈과의 연동을 위한 key 값을 보관하는 변수
|
||||||
var editorDragObj = {isDrag:false, y:0, obj:null, id:'', det:0, source_height:0}
|
var editorDragObj = {isDrag:false, y:0, obj:null, id:'', det:0, source_height:0};
|
||||||
|
|
||||||
function editorGetContent(editor_sequence) {
|
function editorGetContent(editor_sequence) {
|
||||||
// 입력된 내용을 받아옴
|
// 입력된 내용을 받아옴
|
||||||
var content = editorRelKeys[editor_sequence]["func"](editor_sequence);
|
var content = editorRelKeys[editor_sequence].func(editor_sequence);
|
||||||
|
|
||||||
// 첨부파일 링크시 url을 변경
|
// 첨부파일 링크시 url을 변경
|
||||||
var reg_pattern = new RegExp( request_uri.replace(/\//g,'\\/')+"(files|common|modules|layouts|widgets)", 'ig' );
|
var reg_pattern = new RegExp( request_uri.replace(/\//g,'\\/')+"(files|common|modules|layouts|widgets)", 'ig' );
|
||||||
|
|
@ -33,12 +33,12 @@ function editorFocus(editor_sequence) {
|
||||||
// 자동 저장 활성화 시키는 함수 (50초마다 자동저장)
|
// 자동 저장 활성화 시키는 함수 (50초마다 자동저장)
|
||||||
function editorEnableAutoSave(fo_obj, editor_sequence, callback) {
|
function editorEnableAutoSave(fo_obj, editor_sequence, callback) {
|
||||||
var title = fo_obj.title.value;
|
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};
|
editorAutoSaveObj = {"fo_obj":fo_obj, "editor_sequence":editor_sequence, "title":title, "content":content, locked:false};
|
||||||
|
|
||||||
clearTimeout(editorEnableAutoSave.timer);
|
clearTimeout(editorEnableAutoSave.timer);
|
||||||
editorEnableAutoSave.timer = setTimeout(function(){_editorAutoSave(false, callback)}, 50000);
|
editorEnableAutoSave.timer = setTimeout(function(){_editorAutoSave(false, callback);}, 50000);
|
||||||
}
|
}
|
||||||
editorEnableAutoSave.timer = null;
|
editorEnableAutoSave.timer = null;
|
||||||
|
|
||||||
|
|
@ -50,11 +50,11 @@ function _editorAutoSave(exe, callback) {
|
||||||
// 50초마다 동기화를 시킴 강제 실행은 제외
|
// 50초마다 동기화를 시킴 강제 실행은 제외
|
||||||
if(!exe) {
|
if(!exe) {
|
||||||
clearTimeout(editorEnableAutoSave.timer);
|
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;
|
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 title = fo_obj.title.value;
|
||||||
var content = '';
|
var content = '';
|
||||||
try{
|
try{
|
||||||
content = editorGetContent(editor_sequence);
|
content = editorGetContent(editor_sequence);
|
||||||
}catch(e){
|
}catch(e){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -75,7 +75,7 @@ function _editorAutoSave(exe, callback) {
|
||||||
title : title,
|
title : title,
|
||||||
content : content,
|
content : content,
|
||||||
mid : current_mid,
|
mid : current_mid,
|
||||||
document_srl : editorRelKeys[editor_sequence]['primary'].value
|
document_srl : editorRelKeys[editor_sequence].primary.value
|
||||||
};
|
};
|
||||||
|
|
||||||
editorAutoSaveObj.title = title;
|
editorAutoSaveObj.title = title;
|
||||||
|
|
@ -106,8 +106,8 @@ function _editorAutoSave(exe, callback) {
|
||||||
|
|
||||||
// 자동저장된 모든 메세지를 삭제하는 루틴
|
// 자동저장된 모든 메세지를 삭제하는 루틴
|
||||||
function editorRemoveSavedDoc() {
|
function editorRemoveSavedDoc() {
|
||||||
var param = new Array();
|
var param = [];
|
||||||
param['mid'] = current_mid;
|
param.mid = current_mid;
|
||||||
exec_xml("editor","procEditorRemoveSavedDoc", param);
|
exec_xml("editor","procEditorRemoveSavedDoc", param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -117,8 +117,10 @@ function editorRemoveSavedDoc() {
|
||||||
|
|
||||||
// editor_sequence값에 해당하는 iframe의 object를 return
|
// editor_sequence값에 해당하는 iframe의 object를 return
|
||||||
function editorGetIFrame(editor_sequence) {
|
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 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) {
|
function editorGetTextarea(editor_sequence) {
|
||||||
|
|
@ -217,11 +219,12 @@ function editorSearchComponent(evt) {
|
||||||
|
|
||||||
editorPrevNode = null;
|
editorPrevNode = null;
|
||||||
var obj = e.target;
|
var obj = e.target;
|
||||||
|
var tobj = obj;
|
||||||
|
var editor_sequence;
|
||||||
|
|
||||||
// 위젯인지 일단 체크
|
// 위젯인지 일단 체크
|
||||||
if(obj.getAttribute("widget")) {
|
if(obj.getAttribute("widget")) {
|
||||||
// editor_sequence을 찾음
|
// editor_sequence을 찾음
|
||||||
var tobj = obj;
|
|
||||||
while(tobj && tobj.nodeName != "BODY") {
|
while(tobj && tobj.nodeName != "BODY") {
|
||||||
tobj = xParent(tobj);
|
tobj = xParent(tobj);
|
||||||
}
|
}
|
||||||
|
|
@ -229,7 +232,7 @@ function editorSearchComponent(evt) {
|
||||||
editorPrevNode = null;
|
editorPrevNode = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var editor_sequence = tobj.getAttribute("editor_sequence");
|
editor_sequence = tobj.getAttribute("editor_sequence");
|
||||||
var widget = obj.getAttribute("widget");
|
var widget = obj.getAttribute("widget");
|
||||||
editorPrevNode = obj;
|
editorPrevNode = obj;
|
||||||
|
|
||||||
|
|
@ -268,7 +271,7 @@ function editorSearchComponent(evt) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// editor_sequence을 찾음
|
// editor_sequence을 찾음
|
||||||
var tobj = obj;
|
tobj = obj;
|
||||||
while(tobj && tobj.nodeName != "BODY") {
|
while(tobj && tobj.nodeName != "BODY") {
|
||||||
tobj = xParent(tobj);
|
tobj = xParent(tobj);
|
||||||
}
|
}
|
||||||
|
|
@ -276,7 +279,7 @@ function editorSearchComponent(evt) {
|
||||||
editorPrevNode = null;
|
editorPrevNode = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var editor_sequence = tobj.getAttribute("editor_sequence");
|
editor_sequence = tobj.getAttribute("editor_sequence");
|
||||||
|
|
||||||
// 해당 컴포넌트를 찾아서 실행
|
// 해당 컴포넌트를 찾아서 실행
|
||||||
openComponent(editor_component, editor_sequence);
|
openComponent(editor_component, editor_sequence);
|
||||||
|
|
@ -284,6 +287,7 @@ function editorSearchComponent(evt) {
|
||||||
|
|
||||||
// 에디터 내의 선택된 부분의 html코드를 변경
|
// 에디터 내의 선택된 부분의 html코드를 변경
|
||||||
function editorReplaceHTML(iframe_obj, html) {
|
function editorReplaceHTML(iframe_obj, html) {
|
||||||
|
var range;
|
||||||
// 이미지 경로 재지정 (rewrite mod)
|
// 이미지 경로 재지정 (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;
|
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"');
|
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");
|
var editor_sequence = iframe_obj.editor_sequence || iframe_obj.contentWindow.document.body.getAttribute("editor_sequence");
|
||||||
|
|
||||||
// iframe 에디터에 포커스를 둠
|
// iframe 에디터에 포커스를 둠
|
||||||
try { iframe_obj.contentWindow.focus(); }catch(e){};
|
try { iframe_obj.contentWindow.focus(); } catch(e){}
|
||||||
|
|
||||||
if (jQuery.isFunction(iframe_obj.replaceHTML)) {
|
if (jQuery.isFunction(iframe_obj.replaceHTML)) {
|
||||||
iframe_obj.replaceHTML(html);
|
iframe_obj.replaceHTML(html);
|
||||||
} else if(xIE4Up) {
|
} else if(xIE4Up) {
|
||||||
var range = iframe_obj.contentWindow.document.selection.createRange();
|
range = iframe_obj.contentWindow.document.selection.createRange();
|
||||||
if(range.pasteHTML) {
|
if(range.pasteHTML) {
|
||||||
range.pasteHTML(html);
|
range.pasteHTML(html);
|
||||||
} else if(editorPrevNode) {
|
} else if(editorPrevNode) {
|
||||||
|
|
@ -310,12 +314,12 @@ function editorReplaceHTML(iframe_obj, html) {
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
if(iframe_obj.contentWindow.getSelection().focusNode.tagName == "HTML") {
|
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.setStart(iframe_obj.contentDocument.body,0);
|
||||||
range.setEnd(iframe_obj.contentDocument.body,0);
|
range.setEnd(iframe_obj.contentDocument.body,0);
|
||||||
range.insertNode(range.createContextualFragment(html));
|
range.insertNode(range.createContextualFragment(html));
|
||||||
} else {
|
} else {
|
||||||
var range = iframe_obj.contentWindow.getSelection().getRangeAt(0);
|
range = iframe_obj.contentWindow.getSelection().getRangeAt(0);
|
||||||
range.deleteContents();
|
range.deleteContents();
|
||||||
range.insertNode(range.createContextualFragment(html));
|
range.insertNode(range.createContextualFragment(html));
|
||||||
}
|
}
|
||||||
|
|
@ -327,18 +331,22 @@ function editorReplaceHTML(iframe_obj, html) {
|
||||||
|
|
||||||
// 에디터 내의 선택된 부분의 html 코드를 return
|
// 에디터 내의 선택된 부분의 html 코드를 return
|
||||||
function editorGetSelectedHtml(editor_sequence) {
|
function editorGetSelectedHtml(editor_sequence) {
|
||||||
|
var range, html, dummy;
|
||||||
var iframe_obj = editorGetIFrame(editor_sequence);
|
var iframe_obj = editorGetIFrame(editor_sequence);
|
||||||
|
|
||||||
if (jQuery.isFunction(iframe_obj.getSelectedHTML)) {
|
if (jQuery.isFunction(iframe_obj.getSelectedHTML)) {
|
||||||
return iframe_obj.getSelectedHTML();
|
return iframe_obj.getSelectedHTML();
|
||||||
} else if(xIE4Up) {
|
} else if(xIE4Up) {
|
||||||
var range = iframe_obj.contentWindow.document.selection.createRange();
|
range = iframe_obj.contentWindow.document.selection.createRange();
|
||||||
var html = range.htmlText;
|
html = range.htmlText;
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
} else {
|
} else {
|
||||||
var range = iframe_obj.contentWindow.getSelection().getRangeAt(0);
|
range = iframe_obj.contentWindow.getSelection().getRangeAt(0);
|
||||||
var dummy = xCreateElement('div');
|
dummy = xCreateElement('div');
|
||||||
dummy.appendChild(range.cloneContents());
|
dummy.appendChild(range.cloneContents());
|
||||||
var html = xInnerHtml(dummy);
|
html = xInnerHtml(dummy);
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -346,89 +354,87 @@ function editorGetSelectedHtml(editor_sequence) {
|
||||||
|
|
||||||
// {{{ iframe 세로 크기 조절
|
// {{{ iframe 세로 크기 조절
|
||||||
(function($){
|
(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;
|
function editorDragStart(e) {
|
||||||
var startY = 0;
|
var obj = $(e.target);
|
||||||
var startH = 0;
|
var id = obj.attr('id');
|
||||||
var editorId = '';
|
|
||||||
var eventObj = null; // event target object
|
|
||||||
var targetObj = null; // elements to be resized
|
|
||||||
|
|
||||||
function editorDragStart(e) {
|
if(!id || !/^editor_drag_bar_(.+)$/.test(id)) return;
|
||||||
var obj = $(e.target);
|
|
||||||
var id = obj.attr('id');
|
|
||||||
|
|
||||||
if(!id || !/^editor_drag_bar_(.+)$/.test(id)) return;
|
dragging = true;
|
||||||
|
startY = e.pageY;
|
||||||
|
eventObj = obj;
|
||||||
|
editorId = RegExp.$1;
|
||||||
|
|
||||||
dragging = true;
|
var iframe_obj = $( editorGetIFrame(editorId) );
|
||||||
startY = e.pageY;
|
var textarea_obj = $( editorGetTextarea(editorId) );
|
||||||
eventObj = obj;
|
var preview_obj = $('#editor_preview_'+editorId);
|
||||||
editorId = RegExp.$1;
|
var visible_obj = iframe_obj.is(':visible')?iframe_obj:textarea_obj;
|
||||||
|
|
||||||
var iframe_obj = $( editorGetIFrame(editorId) );
|
startH = parseInt(visible_obj.css('height'));
|
||||||
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'));
|
targetObj = $([ iframe_obj[0], textarea_obj[0] ]);
|
||||||
|
if (preview_obj.length) targetObj.add(preview_obj[0]);
|
||||||
|
|
||||||
targetObj = $([ iframe_obj[0], textarea_obj[0] ]);
|
if (!isNaN(startH) || !startH) {
|
||||||
if (preview_obj.length) targetObj.add(preview_obj[0]);
|
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) {
|
startH = oh_before*2 - oh_after;
|
||||||
var oh_before = visible_obj[0].offsetHeight;
|
targetObj.css('height', startH+'px');
|
||||||
visible_obj.css('height', oh_before+'px');
|
}
|
||||||
var oh_after = visible_obj[0].offsetHeight;
|
|
||||||
|
|
||||||
startH = oh_before*2 - oh_after;
|
$('#xeEditorMask_' + editorId).show();
|
||||||
targetObj.css('height', startH+'px');
|
$(document).mousemove(editorDragMove);
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#xeEditorMask_' + editorId).show();
|
function editorDragMove(e) {
|
||||||
$(document).mousemove(editorDragMove);
|
if(!dragging) {
|
||||||
|
$('#xeEditorMask_' + editorId).hide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
var diff = e.pageY - startY;
|
||||||
}
|
targetObj.css('height', (startH + diff)+'px');
|
||||||
|
|
||||||
function editorDragMove(e) {
|
return false;
|
||||||
if(!dragging) {
|
}
|
||||||
|
|
||||||
|
function editorDragStop(e) {
|
||||||
$('#xeEditorMask_' + editorId).hide();
|
$('#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');
|
$(document).bind({
|
||||||
|
mousedown : editorDragStart,
|
||||||
return false;
|
mouseup : editorDragStop
|
||||||
}
|
});
|
||||||
|
*/
|
||||||
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
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
// }}} iframe 세로 크기 조절
|
// }}} iframe 세로 크기 조절
|
||||||
|
|
|
||||||
2
modules/editor/tpl/js/editor_common.min.js
vendored
2
modules/editor/tpl/js/editor_common.min.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -11,7 +11,7 @@ function resultGetEditorSkinColorList(ret_obj,response_tags, params) {
|
||||||
jQuery(function($){
|
jQuery(function($){
|
||||||
if(params.testid){
|
if(params.testid){
|
||||||
selectbox = $("#"+params.testid).next('label').children('select');
|
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 = (params.type == 'document') ? $('select[name=sel_editor_colorset]') : $('select[name=sel_comment_editor_colorset]');
|
||||||
}
|
}
|
||||||
selectbox.html('');
|
selectbox.html('');
|
||||||
|
|
@ -20,20 +20,22 @@ function resultGetEditorSkinColorList(ret_obj,response_tags, params) {
|
||||||
$("select[name=sel_editor_colorset]").hide()
|
$("select[name=sel_editor_colorset]").hide()
|
||||||
.removeAttr('name');
|
.removeAttr('name');
|
||||||
selectbox.attr('name','sel_editor_colorset');
|
selectbox.attr('name','sel_editor_colorset');
|
||||||
}else{
|
} else {
|
||||||
$("select[name=sel_comment_editor_colorset]").hide()
|
$("select[name=sel_comment_editor_colorset]").hide()
|
||||||
.removeAttr('name');
|
.removeAttr('name');
|
||||||
selectbox.attr('name','sel_comment_editor_colorset');
|
selectbox.attr('name','sel_comment_editor_colorset');
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ret_obj['error'] == 0 && ret_obj.colorset){
|
/* jshint -W041 */
|
||||||
var it = new Array();
|
if(ret_obj.error == 0 && ret_obj.colorset){
|
||||||
var items = ret_obj['colorset']['item'];
|
var it = [];
|
||||||
|
var items = ret_obj.colorset.item;
|
||||||
if(typeof(items[0]) == 'undefined'){
|
if(typeof(items[0]) == 'undefined'){
|
||||||
it[0] = items;
|
it[0] = items;
|
||||||
}else{
|
} else {
|
||||||
it = items;
|
it = items;
|
||||||
}
|
}
|
||||||
|
|
||||||
var selectAttr = "";
|
var selectAttr = "";
|
||||||
for(var i=0;i<it.length;i++){
|
for(var i=0;i<it.length;i++){
|
||||||
var $options = $('<option value="'+it[i].name+'" >'+it[i].title+'</option>');
|
var $options = $('<option value="'+it[i].name+'" >'+it[i].title+'</option>');
|
||||||
|
|
@ -45,7 +47,7 @@ function resultGetEditorSkinColorList(ret_obj,response_tags, params) {
|
||||||
selectbox.append($options);
|
selectbox.append($options);
|
||||||
}
|
}
|
||||||
selectbox.show();
|
selectbox.show();
|
||||||
}else{
|
} else {
|
||||||
selectbox.hide();
|
selectbox.hide();
|
||||||
selectbox.html('');
|
selectbox.html('');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1
modules/editor/tpl/js/editor_module_config.min.js
vendored
Normal file
1
modules/editor/tpl/js/editor_module_config.min.js
vendored
Normal file
|
|
@ -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.length;g++){var h=b('<option value="'+e[g].name+'" >'+e[g].title+"</option>");c.selected_colorset==e[g].name&&h.attr("selected","selected"),d.append(h)}d.show()}else d.hide(),d.html("")})}
|
||||||
|
|
@ -16,319 +16,317 @@ var uploadAutosaveChecker = false;
|
||||||
**/
|
**/
|
||||||
// window.load 이벤트일 경우 && 문서 번호가 가상의 번호가 아니면 기존에 저장되어 있을지도 모르는 파일 목록을 가져옴
|
// window.load 이벤트일 경우 && 문서 번호가 가상의 번호가 아니면 기존에 저장되어 있을지도 모르는 파일 목록을 가져옴
|
||||||
(function($){
|
(function($){
|
||||||
|
var defaultHandlers;
|
||||||
|
|
||||||
var defaultHandlers;
|
function init(cfg, exe) {
|
||||||
|
var seq = cfg.editorSequence;
|
||||||
|
|
||||||
function init(cfg, exe) {
|
if(!is_def(seq)) return;
|
||||||
var seq = cfg.editorSequence;
|
|
||||||
|
|
||||||
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({
|
uploadSettingObj[seq] = cfg;
|
||||||
sessionName : 'PHPSESSID',
|
$(function(){ start(cfg); });
|
||||||
allowedFileSize : 2*1024*1024,
|
|
||||||
allowedFileTypes : '*.*',
|
|
||||||
allowedFileTypesDescription : 'All Files',
|
|
||||||
replaceButtonID : 'swfUploadButton'+cfg.editorSequence,
|
|
||||||
insertedFiles : 0
|
|
||||||
}, 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('<span style="position:relative;display:inline-block" />');
|
|
||||||
width = $button.width();
|
|
||||||
height = $button.height();
|
|
||||||
$span = $('<span id="dummy'+id+'" />').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;
|
function start(cfg) {
|
||||||
settings.post_params[cfg.sessionName] = getCookie(cfg.sessionName);
|
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('<span style="position:relative;display:inline-block" />');
|
||||||
|
width = $button.width();
|
||||||
|
height = $button.height();
|
||||||
|
$span = $('<span id="dummy'+id+'" />').insertAfter($button);
|
||||||
|
|
||||||
swfu = new SWFUpload(settings);
|
settings = {
|
||||||
$swf = $('#'+swfu.movieName);
|
flash_url : request_uri + 'modules/editor/tpl/images/SWFUpload.swf',
|
||||||
swfUploadObjs[seq] = swfu.movieName;
|
upload_url : request_uri.replace(/^https/i, 'http')+'index.php',
|
||||||
if(!$swf.length) return;
|
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({
|
// Button settings
|
||||||
display : 'block',
|
button_window_mode : 'transparent',
|
||||||
cursor : 'pointer',
|
button_placeholder_id : $span.attr('id'),
|
||||||
position : 'absolute',
|
button_text : null,
|
||||||
left : 0,
|
button_image_url : request_uri+'common/img/blank.gif',
|
||||||
top : 0,
|
button_width : width,
|
||||||
width : width + 'px',
|
button_height : height,
|
||||||
height : height + 'px'
|
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 = {
|
// preview
|
||||||
onFileQueued : _true,
|
$('#'+cfg.fileListAreaID).click(previewFiles);
|
||||||
onFileQueueError : function(file, errorCode, message) {
|
|
||||||
try {
|
// The event handler functions are defined in handlers.js
|
||||||
switch(errorCode) {
|
handlers = {
|
||||||
case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED :
|
file_queued : 'FileQueued',
|
||||||
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.")));
|
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 = $('<option />').attr('value', file.id).appendTo($list);
|
||||||
|
}
|
||||||
|
|
||||||
|
$lastopt.text(filename + ' (' + percent + '%)');
|
||||||
|
} catch (e) {
|
||||||
|
this.debug(e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onUploadSuccess : function(file, serveData) {
|
||||||
|
try {
|
||||||
|
if(this.getStats().files_queued !== 0) this.startUpload();
|
||||||
|
} catch (e) {
|
||||||
|
this.debug(e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onUploadError : function(file, errorCode, message) {
|
||||||
|
try {
|
||||||
|
switch (errorCode) {
|
||||||
|
case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
|
||||||
|
alert("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
|
||||||
break;
|
break;
|
||||||
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
|
case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
|
||||||
alert("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
alert("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
||||||
break;
|
break;
|
||||||
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
|
case SWFUpload.UPLOAD_ERROR.IO_ERROR:
|
||||||
alert("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
alert("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
|
||||||
break;
|
break;
|
||||||
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
|
case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
|
||||||
alert("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
alert("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
|
||||||
|
break;
|
||||||
|
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
|
||||||
|
alert("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
||||||
|
break;
|
||||||
|
case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
|
||||||
|
alert("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
||||||
|
break;
|
||||||
|
case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
|
||||||
|
// If there aren't any files left (they were all cancelled) disable the cancel button
|
||||||
|
if (this.getStats().files_queued === 0) {
|
||||||
|
document.getElementById(this.customSettings.cancelButtonId).disabled = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
alert("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
alert("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
||||||
break;
|
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 = $('<option />').attr('value', file.id).appendTo($list);
|
|
||||||
}
|
|
||||||
|
|
||||||
$lastopt.text(filename + ' (' + percent + '%)');
|
|
||||||
} catch (e) {
|
|
||||||
this.debug(e);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onUploadSuccess : function(file, serveData) {
|
|
||||||
try {
|
|
||||||
if(this.getStats().files_queued !== 0) this.startUpload();
|
|
||||||
} catch (e) {
|
|
||||||
this.debug(e);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onUploadError : function(file, errorCode, message) {
|
|
||||||
try {
|
|
||||||
switch (errorCode) {
|
|
||||||
case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
|
|
||||||
alert("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
|
|
||||||
alert("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.IO_ERROR:
|
|
||||||
alert("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
|
|
||||||
alert("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
|
|
||||||
alert("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
|
|
||||||
alert("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
|
|
||||||
// If there aren't any files left (they were all cancelled) disable the cancel button
|
|
||||||
if (this.getStats().files_queued === 0) {
|
|
||||||
document.getElementById(this.customSettings.cancelButtonId).disabled = true;
|
|
||||||
}
|
}
|
||||||
break;
|
} catch (ex) {
|
||||||
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
|
this.debug(ex);
|
||||||
break;
|
}
|
||||||
default:
|
},
|
||||||
alert("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
onUploadComplete : function(file) {
|
||||||
break;
|
try {
|
||||||
|
var fileListAreaID = this.settings.fileListAreaID;
|
||||||
|
var uploadTargetSrl = this.settings.uploadTargetSrl;
|
||||||
|
reloadFileList(this.settings);
|
||||||
|
} catch(e) {
|
||||||
|
this.debug(ex);
|
||||||
}
|
}
|
||||||
} catch (ex) {
|
|
||||||
this.debug(ex);
|
|
||||||
}
|
}
|
||||||
},
|
|
||||||
onUploadComplete : function(file) {
|
|
||||||
try {
|
|
||||||
var fileListAreaID = this.settings["fileListAreaID"];
|
|
||||||
var uploadTargetSrl = this.settings["uploadTargetSrl"];
|
|
||||||
reloadFileList(this.settings);
|
|
||||||
} catch(e) {
|
|
||||||
this.debug(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function reloadFileList(cfg) {
|
|
||||||
var params = {
|
|
||||||
mid : current_mid,
|
|
||||||
file_list_area_id : cfg.fileListAreaID,
|
|
||||||
editor_sequence : cfg.editorSequence,
|
|
||||||
upload_target_srl : cfg.uploadTargetSrl
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function autosave() {
|
function reloadFileList(cfg) {
|
||||||
if(typeof(_editorAutoSave) != 'function') return;
|
var params = {
|
||||||
uploadAutosaveChecker = true;
|
mid : current_mid,
|
||||||
_editorAutoSave(true);
|
file_list_area_id : cfg.fileListAreaID,
|
||||||
}
|
editor_sequence : cfg.editorSequence,
|
||||||
|
upload_target_srl : cfg.uploadTargetSrl
|
||||||
|
};
|
||||||
|
|
||||||
function on_complete(ret, response_tags) {
|
function autosave() {
|
||||||
var $list, seq, files, target_srl, up_status, remain, items, i, c, itm, file_srl;
|
if(typeof(_editorAutoSave) != 'function') return;
|
||||||
|
uploadAutosaveChecker = true;
|
||||||
|
_editorAutoSave(true);
|
||||||
|
}
|
||||||
|
|
||||||
seq = ret.editor_sequence;
|
function on_complete(ret, response_tags) {
|
||||||
files = ret.files;
|
var $list, seq, files, target_srl, up_status, remain, items, i, c, itm, file_srl;
|
||||||
up_status = ret.upload_status;
|
|
||||||
target_srl = ret.upload_target_srl;
|
|
||||||
remain = Math.floor((parseInt(ret.left_size,10)||0)/1024);
|
|
||||||
|
|
||||||
$list = $('#'+cfg.fileListAreaID).empty();
|
seq = ret.editor_sequence;
|
||||||
|
files = ret.files;
|
||||||
|
up_status = ret.upload_status;
|
||||||
|
target_srl = ret.upload_target_srl;
|
||||||
|
remain = Math.floor((parseInt(ret.left_size,10)||0)/1024);
|
||||||
|
|
||||||
|
$list = $('#'+cfg.fileListAreaID).empty();
|
||||||
|
|
||||||
|
if(target_srl) {
|
||||||
|
if(editorRelKeys[seq].primary.value != target_srl) {
|
||||||
|
editorRelKeys[seq].primary.value = target_srl;
|
||||||
|
autosave();
|
||||||
|
}
|
||||||
|
|
||||||
if(target_srl) {
|
|
||||||
if(editorRelKeys[seq].primary.value != target_srl) {
|
|
||||||
editorRelKeys[seq].primary.value = target_srl;
|
editorRelKeys[seq].primary.value = target_srl;
|
||||||
autosave();
|
cfg.uploadTargetSrl = target_srl;
|
||||||
}
|
}
|
||||||
|
|
||||||
editorRelKeys[seq].primary.value = target_srl;
|
$('#'+cfg.uploaderStatusID).html(up_status);
|
||||||
cfg.uploadTargetSrl = target_srl;
|
$('#'+cfg.previewAreaID).empty();
|
||||||
}
|
|
||||||
|
|
||||||
$('#'+cfg.uploaderStatusID).html(up_status);
|
if(files && files.item) {
|
||||||
$('#'+cfg.previewAreaID).empty();
|
items = files.item;
|
||||||
|
if(!$.isArray(items)) items = [items];
|
||||||
|
for(i=0,c=items.length; i < c; i++) {
|
||||||
|
itm = items[i];
|
||||||
|
|
||||||
if(files && files.item) {
|
file_srl = itm.file_srl;
|
||||||
items = files.item;
|
uploadedFiles[file_srl] = itm;
|
||||||
if(!$.isArray(items)) items = [items];
|
|
||||||
for(i=0,c=items.length; i < c; i++) {
|
|
||||||
itm = items[i];
|
|
||||||
|
|
||||||
file_srl = itm.file_srl;
|
itm.previewAreaID = cfg.previewAreaID;
|
||||||
uploadedFiles[file_srl] = itm;
|
|
||||||
|
|
||||||
itm.previewAreaID = cfg.previewAreaID;
|
if(/\.(jpe?g|png|gif)$/i.test(itm.download_url)) {
|
||||||
|
loaded_images[file_srl] = $('<img />').attr('src', itm.download_url).get(0);
|
||||||
|
}
|
||||||
|
|
||||||
if(/\.(jpe?g|png|gif)$/i.test(itm.download_url)) {
|
$('<option />')
|
||||||
loaded_images[file_srl] = $('<img />').attr('src', itm.download_url).get(0);
|
.text(itm.source_filename + ' ('+itm.disp_file_size+' )')
|
||||||
|
.attr('value', file_srl)
|
||||||
|
.appendTo($list);
|
||||||
}
|
}
|
||||||
|
|
||||||
$('<option />')
|
if(i) $list.prop('selectedIndex', i-1).click();
|
||||||
.text(itm.source_filename + ' ('+itm.disp_file_size+' )')
|
|
||||||
.attr('value', file_srl)
|
|
||||||
.appendTo($list);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(i) $list.prop('selectedIndex', i-1).click();
|
// 문서 강제 자동저장 1번만 사용 ( 첨부파일 target_srl로 자동 저장문서를 저장하기 위한 용도일 뿐 )
|
||||||
|
if(!uploadAutosaveChecker) autosave();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 문서 강제 자동저장 1번만 사용 ( 첨부파일 target_srl로 자동 저장문서를 저장하기 위한 용도일 뿐 )
|
exec_xml(
|
||||||
if(!uploadAutosaveChecker) autosave();
|
'file', // module
|
||||||
};
|
'getFileList', // act
|
||||||
|
params, // parameters
|
||||||
|
on_complete, // callback
|
||||||
|
'error,message,files,upload_status,upload_target_srl,editor_sequence,left_size'.split(',') // response_tags
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
exec_xml(
|
window.editorUploadInit = init;
|
||||||
'file', // module
|
window.reloadFileList = reloadFileList;
|
||||||
'getFileList', // act
|
|
||||||
params, // parameters
|
|
||||||
on_complete, // callback
|
|
||||||
'error,message,files,upload_status,upload_target_srl,editor_sequence,left_size'.split(',') // response_tags
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
window.editorUploadInit = init;
|
|
||||||
window.reloadFileList = reloadFileList;
|
|
||||||
|
|
||||||
$(function(){
|
|
||||||
try { document.execCommand('BackgroundImageCache',false,true); } catch(e) { }
|
|
||||||
});
|
|
||||||
|
|
||||||
|
$(function(){
|
||||||
|
try { document.execCommand('BackgroundImageCache',false,true); } catch(e) { }
|
||||||
|
});
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
|
|
||||||
function previewFiles(event, file_srl) {
|
function previewFiles(event, file_srl) {
|
||||||
|
|
@ -366,13 +364,13 @@ function previewFiles(event, file_srl) {
|
||||||
|
|
||||||
function removeUploadedFile(editorSequence) {
|
function removeUploadedFile(editorSequence) {
|
||||||
var settings = uploaderSettings[editorSequence];
|
var settings = uploaderSettings[editorSequence];
|
||||||
var fileListAreaID = settings["fileListAreaID"];
|
var fileListAreaID = settings.fileListAreaID;
|
||||||
var fileListObj = get_by_id(fileListAreaID);
|
var fileListObj = get_by_id(fileListAreaID);
|
||||||
if(!fileListObj) return;
|
if(!fileListObj) return;
|
||||||
|
|
||||||
if(fileListObj.selectedIndex<0) return;
|
if(fileListObj.selectedIndex<0) return;
|
||||||
|
|
||||||
var file_srls = new Array();
|
var file_srls = [];
|
||||||
for(var i=0;i<fileListObj.options.length;i++) {
|
for(var i=0;i<fileListObj.options.length;i++) {
|
||||||
if(!fileListObj.options[i].selected) continue;
|
if(!fileListObj.options[i].selected) continue;
|
||||||
var file_srl = fileListObj.options[i].value;
|
var file_srl = fileListObj.options[i].value;
|
||||||
|
|
@ -393,13 +391,15 @@ function removeUploadedFile(editorSequence) {
|
||||||
function insertUploadedFile(editorSequence) {
|
function insertUploadedFile(editorSequence) {
|
||||||
|
|
||||||
var settings = uploaderSettings[editorSequence];
|
var settings = uploaderSettings[editorSequence];
|
||||||
var fileListAreaID = settings["fileListAreaID"];
|
var fileListAreaID = settings.fileListAreaID;
|
||||||
var fileListObj = get_by_id(fileListAreaID);
|
var fileListObj = get_by_id(fileListAreaID);
|
||||||
if(!fileListObj) return;
|
if(!fileListObj) return;
|
||||||
|
|
||||||
|
var obj;
|
||||||
|
|
||||||
if(editorMode[editorSequence]=='preview') return;
|
if(editorMode[editorSequence]=='preview') return;
|
||||||
|
|
||||||
var text = new Array();
|
var text = [];
|
||||||
for(var i=0;i<fileListObj.options.length;i++) {
|
for(var i=0;i<fileListObj.options.length;i++) {
|
||||||
if(!fileListObj.options[i].selected) continue;
|
if(!fileListObj.options[i].selected) continue;
|
||||||
var file_srl = fileListObj.options[i].value;
|
var file_srl = fileListObj.options[i].value;
|
||||||
|
|
@ -413,15 +413,15 @@ function insertUploadedFile(editorSequence) {
|
||||||
// 이미지 파일의 경우 image_link 컴포넌트 열결
|
// 이미지 파일의 경우 image_link 컴포넌트 열결
|
||||||
if(/\.(jpg|jpeg|png|gif)$/i.test(file.download_url)) {
|
if(/\.(jpg|jpeg|png|gif)$/i.test(file.download_url)) {
|
||||||
if(loaded_images[file_srl]) {
|
if(loaded_images[file_srl]) {
|
||||||
var obj = loaded_images[file_srl];
|
obj = loaded_images[file_srl];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var obj = new Image();
|
obj = new Image();
|
||||||
obj.src = file.download_url;
|
obj.src = file.download_url;
|
||||||
}
|
}
|
||||||
temp_code = '';
|
temp_code = '';
|
||||||
temp_code += "<img src=\""+file.download_url+"\" alt=\""+file.source_filename+"\"";
|
temp_code += "<img src=\""+file.download_url+"\" alt=\""+file.source_filename+"\"";
|
||||||
if(obj.complete == true) { temp_code += " width=\""+obj.width+"\" height=\""+obj.height+"\""; }
|
if(obj.complete === true) { temp_code += " width=\""+obj.width+"\" height=\""+obj.height+"\""; }
|
||||||
temp_code += " />\r\n";
|
temp_code += " />\r\n";
|
||||||
text.push(temp_code);
|
text.push(temp_code);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
2
modules/editor/tpl/js/uploader.min.js
vendored
2
modules/editor/tpl/js/uploader.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue