mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 02:31:40 +09:00
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@8081 201d5d3c-b55e-5fd7-737f-ddc643e51545
254 lines
8.5 KiB
JavaScript
254 lines
8.5 KiB
JavaScript
var uploadedFiles = new Array();
|
|
var orderedFiles = new Array();
|
|
var uploaderSettings = new Array();
|
|
var loaded_images = new Array();
|
|
var swfUploadObjs = new Array();
|
|
var reloadCallback = new Array();
|
|
|
|
/**
|
|
* 업로드를 하기 위한 준비 시작
|
|
* 이 함수는 editor.html 에서 파일 업로드 가능할 경우 호출됨
|
|
**/
|
|
// window.load 이벤트일 경우 && 문서 번호가 가상의 번호가 아니면 기존에 저장되어 있을지도 모르는 파일 목록을 가져옴
|
|
function editorUploadInit(obj) {
|
|
if(typeof(obj["editorSequence"])=="undefined") return;
|
|
if(typeof(obj["sessionName"])=="undefined") obj["sessionName"]= "PHPSESSID";
|
|
if(typeof(obj["allowedFileSize"])=="undefined") obj["allowedFileSize"]= 2*1024*1024;
|
|
if(typeof(obj["allowedFileTypes"])=="undefined") obj["allowedFileTypes"]= "*.*";
|
|
if(typeof(obj["allowedFileTypesDescription"])=="undefined") obj["allowedFileTypesDescription"]= "All Files";
|
|
if(typeof(obj["replaceButtonID"])=="undefined") obj["replaceButtonID"] = "swfUploadButton"+obj["editorSequence"];
|
|
if(typeof(obj["insertFiles"])=="undefined") obj["insertFiles"] = 0;
|
|
// xAddEventListener(window,'load', function() {XEUploaderStart(obj); } );
|
|
XEUploaderStart(obj);
|
|
|
|
}
|
|
|
|
// 파일 업로드를 위한 기본 준비
|
|
function XEUploaderStart(obj) {
|
|
try { document.execCommand('BackgroundImageCache',false,true); } catch(e) { };
|
|
|
|
var oBtn = jQuery('#'+obj['replaceButtonID']);
|
|
var btnWidth = 500;
|
|
var btnHeight = 40;
|
|
oBtn.css('position','relative');
|
|
|
|
var dummy = xCreateElement("span");
|
|
dummy.id = "dummy"+obj["replaceButtonID"];
|
|
oBtn.get(0).appendChild(dummy);
|
|
|
|
var settings = {
|
|
flash_url : request_uri+"modules/editor/tpl/images/SWFUpload.swf",
|
|
upload_url: request_uri,
|
|
post_params: {
|
|
"mid" : current_mid,
|
|
"act" : "procFileUpload",
|
|
"editor_sequence" : obj["editorSequence"]
|
|
},
|
|
file_size_limit : parseInt(parseInt(obj["allowedFileSize"],10)/1024,10),
|
|
file_queue_limit : 0,
|
|
file_upload_limit : 0,
|
|
file_types : obj["allowedFileTypes"],
|
|
file_types_description : obj["allowedFileTypesDescription"],
|
|
custom_settings : {
|
|
progressTarget : null,
|
|
cancelButtonId : null
|
|
},
|
|
debug: false,
|
|
|
|
// Button settings
|
|
button_window_mode: 'transparent',
|
|
button_placeholder_id: dummy.id,
|
|
button_text: null,
|
|
button_image_url: "",
|
|
button_width: btnWidth,
|
|
button_height: btnHeight,
|
|
button_text_style: null,
|
|
button_text_left_padding: 0,
|
|
button_text_top_padding: 0,
|
|
|
|
// The event handler functions are defined in handlers.js
|
|
file_queued_handler : fileQueued,
|
|
file_queue_error_handler : fileQueueError,
|
|
file_dialog_complete_handler : fileDialogComplete,
|
|
upload_start_handler : uploadStart,
|
|
upload_progress_handler : uploadProgress,
|
|
upload_error_handler : uploadError,
|
|
upload_success_handler : uploadSuccess,
|
|
upload_complete_handler : uploadComplete,
|
|
queue_complete_handler :queueComplete
|
|
};
|
|
|
|
if(typeof(xeVid)!='undefined') settings["post_params"]["vid"] = xeVid;
|
|
settings["post_params"][obj["sessionName"]] = xGetCookie(obj["sessionName"]);
|
|
settings["editorSequence"] = obj["editorSequence"];
|
|
settings["uploadTargetSrl"] = editorRelKeys[obj["editorSequence"]]["primary"].value;
|
|
for(var x in obj) {
|
|
if (typeof settings[x] != 'undefined') settings[x] = obj[x];
|
|
}
|
|
|
|
uploaderSettings[obj["editorSequence"]] = settings;
|
|
|
|
var swfu = new SWFUpload(settings);
|
|
var swfObj = jQuery('#'+swfu.movieName);
|
|
swfUploadObjs[obj["editorSequence"]] = swfu.movieName;
|
|
if(!swfObj) return;
|
|
|
|
jQuery(swfObj).css({
|
|
display : 'block',
|
|
cursor : 'pointer',
|
|
position : 'absolute',
|
|
left : 0,
|
|
width : btnWidth,
|
|
height : btnHeight,
|
|
top : '-3px'
|
|
});
|
|
}
|
|
|
|
function fileQueued(){
|
|
}
|
|
|
|
function fileQueueError(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(ex) {
|
|
this.debug(ex);
|
|
}
|
|
}
|
|
|
|
function fileDialogComplete(numFilesSelected, numFilesQueued) {
|
|
try {
|
|
this.startUpload();
|
|
} catch (ex) {
|
|
this.debug(ex);
|
|
}
|
|
}
|
|
|
|
function uploadStart(file) {
|
|
return true;
|
|
}
|
|
|
|
function uploadProgress(file, bytesLoaded, bytesTotal) {
|
|
try {
|
|
/*
|
|
var obj = xGetElementById(this.settings["fileListAreaID"]);
|
|
|
|
var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
|
|
var filename = file.name;
|
|
if(filename.length>20) filename = filename.substr(0,20)+'...';
|
|
|
|
var text = filename + ' ('+percent+'%)';
|
|
if(!obj.options.length || obj.options[obj.options.length-1].value != file.id) {
|
|
var opt_obj = new Option(text, file.id, true, true);
|
|
obj.options[obj.options.length] = opt_obj;
|
|
} else {
|
|
obj.options[obj.options.length-1].text = text;
|
|
}
|
|
*/
|
|
} catch (ex) {
|
|
this.debug(ex);
|
|
}
|
|
}
|
|
|
|
function uploadSuccess(file, serverData) {
|
|
try {
|
|
if(this.getStats().files_queued !== 0) this.startUpload();
|
|
} catch (ex) {
|
|
this.debug(ex);
|
|
}
|
|
}
|
|
|
|
function uploadError(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) {
|
|
jQuery('#'+this.customSettings.cancelButtonId).attr('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);
|
|
}
|
|
}
|
|
|
|
function uploadComplete(file) {
|
|
try {
|
|
reloadFileList(this.settings);
|
|
} catch(e) {
|
|
this.debug(ex);
|
|
}
|
|
}
|
|
|
|
function queueComplete(numFilesUploaded) {
|
|
}
|
|
|
|
function reloadFileList(settings) {
|
|
var params = new Array();
|
|
params["file_list_area_id"] = settings["fileListAreaID"];
|
|
params["editor_sequence"] = settings["editorSequence"];
|
|
params["upload_target_srl"] = settings["uploadTargetSrl"];
|
|
params["mid"] = current_mid;
|
|
var response_tags = new Array("error","message","files","upload_status","upload_target_srl","editor_sequence","left_size");
|
|
exec_xml("file","getFileList", params, completeReloadFileList, response_tags, settings);
|
|
}
|
|
|
|
function completeReloadFileList(ret_obj, response_tags, settings) {
|
|
var upload_status = ret_obj['upload_status'];
|
|
var editor_sequence = ret_obj['editor_sequence'];
|
|
var upload_target_srl= ret_obj['upload_target_srl'];
|
|
var files = ret_obj['files'];
|
|
var left_size = parseInt(parseInt(ret_obj["left_size"],10)/1024,10);
|
|
|
|
if(!files || typeof(files['item'])=='undefined') return;
|
|
if (!jQuery.isArray(files['item'])) files['item'] = [ files['item'] ];
|
|
|
|
orderedFiles = files['item'];
|
|
|
|
jQuery.each(files['item'], function(){
|
|
var file_srl = this.file_srl;
|
|
uploadedFiles[file_srl] = this;
|
|
});
|
|
if (jQuery.isFunction(reloadCallback[editor_sequence])) {
|
|
reloadCallback[editor_sequence](upload_target_srl);
|
|
}
|
|
}
|