#358 editor js minify

This commit is contained in:
bnu 2014-01-22 13:53:49 +09:00
parent a11988e437
commit c503c57477
9 changed files with 464 additions and 422 deletions

View file

@ -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('<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;
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('<span style="position:relative;display:inline-block" />');
width = $button.width();
height = $button.height();
$span = $('<span id="dummy'+id+'" />').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 = $('<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.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
alert("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
alert("Error Code: Upload Failed, 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);
case SWFUpload.UPLOAD_ERROR.IO_ERROR:
alert("Error Code: IO Error, File name: " + file.name + ", 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);
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;
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
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;
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;
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
break;
default:
alert("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
break;
} 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);
}
} 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() {
if(typeof(_editorAutoSave) != 'function') return;
uploadAutosaveChecker = true;
_editorAutoSave(true);
}
function reloadFileList(cfg) {
var params = {
mid : current_mid,
file_list_area_id : cfg.fileListAreaID,
editor_sequence : cfg.editorSequence,
upload_target_srl : cfg.uploadTargetSrl
};
function on_complete(ret, response_tags) {
var $list, seq, files, target_srl, up_status, remain, items, i, c, itm, file_srl;
function autosave() {
if(typeof(_editorAutoSave) != 'function') return;
uploadAutosaveChecker = true;
_editorAutoSave(true);
}
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);
function on_complete(ret, response_tags) {
var $list, seq, files, target_srl, up_status, remain, items, i, c, itm, file_srl;
$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;
autosave();
cfg.uploadTargetSrl = target_srl;
}
editorRelKeys[seq].primary.value = target_srl;
cfg.uploadTargetSrl = target_srl;
}
$('#'+cfg.uploaderStatusID).html(up_status);
$('#'+cfg.previewAreaID).empty();
$('#'+cfg.uploaderStatusID).html(up_status);
$('#'+cfg.previewAreaID).empty();
if(files && files.item) {
items = files.item;
if(!$.isArray(items)) items = [items];
for(i=0,c=items.length; i < c; i++) {
itm = items[i];
if(files && files.item) {
items = files.item;
if(!$.isArray(items)) items = [items];
for(i=0,c=items.length; i < c; i++) {
itm = items[i];
file_srl = itm.file_srl;
uploadedFiles[file_srl] = itm;
file_srl = itm.file_srl;
uploadedFiles[file_srl] = itm;
itm.previewAreaID = cfg.previewAreaID;
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)) {
loaded_images[file_srl] = $('<img />').attr('src', itm.download_url).get(0);
$('<option />')
.text(itm.source_filename + ' ('+itm.disp_file_size+' )')
.attr('value', file_srl)
.appendTo($list);
}
$('<option />')
.text(itm.source_filename + ' ('+itm.disp_file_size+' )')
.attr('value', file_srl)
.appendTo($list);
if(i) $list.prop('selectedIndex', i-1).click();
}
if(i) $list.prop('selectedIndex', i-1).click();
// 문서 강제 자동저장 1번만 사용 ( 첨부파일 target_srl로 자동 저장문서를 저장하기 위한 용도일 뿐 )
if(!uploadAutosaveChecker) autosave();
}
// 문서 강제 자동저장 1번만 사용 ( 첨부파일 target_srl로 자동 저장문서를 저장하기 위한 용도일 뿐 )
if(!uploadAutosaveChecker) autosave();
};
exec_xml(
'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(
'file', // module
'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) { }
});
window.editorUploadInit = init;
window.reloadFileList = reloadFileList;
$(function(){
try { document.execCommand('BackgroundImageCache',false,true); } catch(e) { }
});
})(jQuery);
function previewFiles(event, file_srl) {
@ -366,13 +364,13 @@ function previewFiles(event, file_srl) {
function removeUploadedFile(editorSequence) {
var settings = uploaderSettings[editorSequence];
var fileListAreaID = settings["fileListAreaID"];
var fileListAreaID = settings.fileListAreaID;
var fileListObj = get_by_id(fileListAreaID);
if(!fileListObj) return;
if(fileListObj.selectedIndex<0) return;
var file_srls = new Array();
var file_srls = [];
for(var i=0;i<fileListObj.options.length;i++) {
if(!fileListObj.options[i].selected) continue;
var file_srl = fileListObj.options[i].value;
@ -393,13 +391,15 @@ function removeUploadedFile(editorSequence) {
function insertUploadedFile(editorSequence) {
var settings = uploaderSettings[editorSequence];
var fileListAreaID = settings["fileListAreaID"];
var fileListAreaID = settings.fileListAreaID;
var fileListObj = get_by_id(fileListAreaID);
if(!fileListObj) return;
var obj;
if(editorMode[editorSequence]=='preview') return;
var text = new Array();
var text = [];
for(var i=0;i<fileListObj.options.length;i++) {
if(!fileListObj.options[i].selected) continue;
var file_srl = fileListObj.options[i].value;
@ -413,15 +413,15 @@ function insertUploadedFile(editorSequence) {
// 이미지 파일의 경우 image_link 컴포넌트 열결
if(/\.(jpg|jpeg|png|gif)$/i.test(file.download_url)) {
if(loaded_images[file_srl]) {
var obj = loaded_images[file_srl];
obj = loaded_images[file_srl];
}
else {
var obj = new Image();
obj = new Image();
obj.src = file.download_url;
}
temp_code = '';
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";
text.push(temp_code);
} else {