940 lines
30 KiB
JavaScript
940 lines
30 KiB
JavaScript
|
||
var getBasePath = function() {
|
||
var els = document.getElementsByTagName('script'),
|
||
src;
|
||
for (var i = 0,
|
||
len = els.length; i < len; i++) {
|
||
src = els[i].src || '';
|
||
if (/webuploader[\w\-\.]*\.js/.test(src)) {
|
||
return src.substring(0, src.lastIndexOf('/') + 1);
|
||
}
|
||
}
|
||
return '';
|
||
};
|
||
|
||
var SWFUpload;
|
||
var sdCloseTime = 2;
|
||
|
||
if (SWFUpload == undefined) {
|
||
SWFUpload = function(settings) {
|
||
this.initSWFUpload(settings);
|
||
};
|
||
}
|
||
|
||
SWFUpload.CURSOR = {
|
||
ARROW: -1,
|
||
HAND: -2
|
||
};
|
||
|
||
SWFUpload.EXT_MIME_MAP = {
|
||
'3gp': 'video/3gpp',
|
||
'7z': 'application/x-7z-compressed',
|
||
'aac': 'audio/aac',
|
||
'abw': 'application/x-abiword',
|
||
'arc': 'application/x-freearc',
|
||
'avi': 'video/x-msvideo',
|
||
'apk': 'application/vnd.android.package-archive',
|
||
'azw': 'application/vnd.amazon.ebook',
|
||
'bin': 'application/octet-stream',
|
||
'bmp': 'image/bmp',
|
||
'bz': 'application/x-bzip',
|
||
'bz2': 'application/x-bzip2',
|
||
'bzip2': 'application/x-bzip2',
|
||
'chm': 'application/vnd.ms-htmlhelp',
|
||
'csh': 'application/x-csh',
|
||
'css': 'text/css',
|
||
'csv': 'text/csv',
|
||
'doc': 'application/msword',
|
||
'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
||
'eot': 'application/vnd.ms-fontobject',
|
||
'epub': 'application/epub+zip',
|
||
'flv': 'video/x-flv',
|
||
'gif': 'image/gif',
|
||
'gz': 'application/gzip',
|
||
'htm': 'text/html',
|
||
'html': 'text/html',
|
||
'ico': 'image/vnd.microsoft.icon',
|
||
'ics': 'text/calendar',
|
||
'jar': 'application/java-archive',
|
||
'jpeg': 'image/jpeg',
|
||
'jpg': 'image/jpeg',
|
||
'js': 'text/javascript',
|
||
'json': 'application/json',
|
||
'jsonld': 'application/ld+json',
|
||
'm4a': 'audio/mp4',
|
||
'mid': 'audio/midi',
|
||
'midi': 'audio/midi',
|
||
'mjs': 'text/javascript',
|
||
'mov': 'video/quicktime',
|
||
'mkv': 'video/x-matroska',
|
||
'mp3': 'audio/mpeg',
|
||
'mp4': 'video/mp4',
|
||
'mp4a': 'audio/mp4',
|
||
'mp4v': 'video/mp4',
|
||
'mpeg': 'video/mpeg',
|
||
'mpkg': 'application/vnd.apple.installer+xml',
|
||
'odp': 'application/vnd.oasis.opendocument.presentation',
|
||
'ods': 'application/vnd.oasis.opendocument.spreadsheet',
|
||
'odt': 'application/vnd.oasis.opendocument.text',
|
||
'oga': 'audio/ogg',
|
||
'ogv': 'video/ogg',
|
||
'ogx': 'application/ogg',
|
||
'opus': 'audio/opus',
|
||
'otf': 'font/otf',
|
||
'pdf': 'application/pdf',
|
||
'php': 'application/php',
|
||
'png': 'image/png',
|
||
'ppt': 'application/vnd.ms-powerpoint',
|
||
'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
||
'rar': 'application/x-rar-compressed',
|
||
'rtf': 'application/rtf',
|
||
'sh': 'application/x-sh',
|
||
'svg': 'image/svg+xml',
|
||
'swf': 'application/x-shockwave-flash',
|
||
'tar': 'application/x-tar',
|
||
'tif': 'image/tiff',
|
||
'tiff': 'image/tiff',
|
||
'ts': 'video/mp2t',
|
||
'ttf': 'font/ttf',
|
||
'txt': 'text/plain',
|
||
'vsd': 'application/vnd.visio',
|
||
'wav': 'audio/wav',
|
||
'wma': 'audio/x-ms-wma',
|
||
'wmv': 'video/x-ms-asf',
|
||
'weba': 'audio/webm',
|
||
'webm': 'video/webm',
|
||
'webp': 'image/webp',
|
||
'woff': 'font/woff',
|
||
'woff2': 'font/woff2',
|
||
'xhtml': 'application/xhtml+xml',
|
||
'xls': 'application/vnd.ms-excel',
|
||
'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||
'xml': 'application/xml',
|
||
'xul': 'application/vnd.mozilla.xul+xml',
|
||
'zip': 'application/zip'
|
||
};
|
||
|
||
SWFUpload.prototype.initSWFUpload = function(userSettings) {
|
||
try {
|
||
this.customSettings = {}; // A container where developers can place their own settings associated with this instance.
|
||
this.settings = {};
|
||
this.eventQueue = [];
|
||
this.initSettings(userSettings);
|
||
} catch (ex) {
|
||
throw ex;
|
||
}
|
||
};
|
||
|
||
SWFUpload.prototype.initSettings = function (userSettings) {
|
||
this.ensureDefault = function(settingName, defaultValue) {
|
||
var setting = userSettings[settingName];
|
||
if (setting != undefined) {
|
||
this.settings[settingName] = setting;
|
||
} else {
|
||
this.settings[settingName] = defaultValue;
|
||
}
|
||
};
|
||
|
||
this.ensureDefault("upload_url", "");
|
||
this.ensureDefault("file_post_name", "Filedata");
|
||
this.ensureDefault("post_params", {});
|
||
|
||
this.ensureDefault("file_types", "*.*");
|
||
this.ensureDefault("file_types_description", "All Files");
|
||
this.ensureDefault("file_size_limit", 0); // Default zero means "unlimited"
|
||
this.ensureDefault("file_upload_limit", 0);
|
||
this.ensureDefault("file_queue_limit", 0);
|
||
|
||
this.ensureDefault("button_image_url", "");
|
||
this.ensureDefault("button_width", 1);
|
||
this.ensureDefault("button_height", 1);
|
||
this.ensureDefault("button_placeholder_id", "");
|
||
|
||
this.ensureDefault("debug", false);
|
||
|
||
this.ensureDefault("swfupload_preload_handler", null);
|
||
this.ensureDefault("swfupload_load_failed_handler", null);
|
||
this.ensureDefault("swfupload_loaded_handler", null);
|
||
this.ensureDefault("file_dialog_start_handler", null);
|
||
this.ensureDefault("file_queued_handler", null);
|
||
this.ensureDefault("file_queue_error_handler", null);
|
||
this.ensureDefault("file_dialog_complete_handler", null);
|
||
|
||
this.ensureDefault("upload_resize_start_handler", null);
|
||
this.ensureDefault("upload_start_handler", null);
|
||
this.ensureDefault("upload_progress_handler", null);
|
||
this.ensureDefault("upload_error_handler", null);
|
||
this.ensureDefault("upload_success_handler", null);
|
||
this.ensureDefault("upload_complete_handler", null);
|
||
|
||
this.ensureDefault("debug_handler", this.debugMessage);
|
||
|
||
this.ensureDefault("custom_settings", {});
|
||
this.customSettings = this.settings.custom_settings;
|
||
|
||
if(this.settings.button_placeholder_id == 'imgSpanButtonPlaceholder' && $("imgSpanButtonPlaceholder")){
|
||
if($("icoImg_image_menu")){
|
||
$('icoImg_image_menu').style.display = '';
|
||
$('icoImg_image_menu').style.position = 'absolute';
|
||
$('icoImg_image_menu').style.top = '-9999px';
|
||
}else if(typeof editorid != 'undefined' && $(editorid + '_image_menu')){
|
||
$(editorid + '_image_menu').style.display = '';
|
||
}
|
||
$('imgSpanButtonPlaceholder').innerHTML = 'upload';
|
||
$("imgSpanButtonPlaceholder").style.display = 'inline-block';
|
||
$("imgSpanButtonPlaceholder").style.width = this.settings.button_width + 'px';
|
||
$("imgSpanButtonPlaceholder").style.height = this.settings.button_height + 'px';
|
||
$("imgSpanButtonPlaceholder").style.backgroundImage = 'url(' + this.settings.button_image_url + ')';
|
||
$("imgSpanButtonPlaceholder").style.backgroundRepeat = 'no-repeat';
|
||
$("imgSpanButtonPlaceholder").onmouseover = function () {
|
||
$("imgSpanButtonPlaceholder").style.backgroundPosition = '0px -25px';
|
||
};
|
||
$("imgSpanButtonPlaceholder").onmouseout = function () {
|
||
$("imgSpanButtonPlaceholder").style.backgroundPosition = '0px 0px';
|
||
};
|
||
}
|
||
if(this.settings.button_placeholder_id == 'spanButtonPlaceholder' && $("spanButtonPlaceholder")){
|
||
if($("icoAttach_attach_menu")){
|
||
$('icoAttach_attach_menu').style.display = '';
|
||
$('icoAttach_attach_menu').style.position = 'absolute';
|
||
$('icoAttach_attach_menu').style.top = '-9999px';
|
||
}else if(typeof editorid != 'undefined' && $(editorid + '_attach_menu')){
|
||
$(editorid + '_attach_menu').style.display = '';
|
||
}
|
||
$('spanButtonPlaceholder').innerHTML = 'upload';
|
||
$("spanButtonPlaceholder").style.display = 'inline-block';
|
||
$("spanButtonPlaceholder").style.width = this.settings.button_width + 'px';
|
||
$("spanButtonPlaceholder").style.height = this.settings.button_height + 'px';
|
||
$("spanButtonPlaceholder").style.backgroundImage = 'url(' + this.settings.button_image_url + ')';
|
||
$("spanButtonPlaceholder").style.backgroundRepeat = 'no-repeat';
|
||
$("spanButtonPlaceholder").onmouseover = function () {
|
||
$("spanButtonPlaceholder").style.backgroundPosition = '0px -25px';
|
||
};
|
||
$("spanButtonPlaceholder").onmouseout = function () {
|
||
$("spanButtonPlaceholder").style.backgroundPosition = '0px 0px';
|
||
};
|
||
}
|
||
if(this.customSettings.uploadSource == 'forum' && this.customSettings.uploadType == 'poll' && $(this.settings.button_placeholder_id)){
|
||
$(this.settings.button_placeholder_id).innerHTML = 'upload';
|
||
$(this.settings.button_placeholder_id).style.display = 'inline-block';
|
||
$(this.settings.button_placeholder_id).style.width = this.settings.button_width + 'px';
|
||
$(this.settings.button_placeholder_id).style.height = this.settings.button_height + 'px';
|
||
$(this.settings.button_placeholder_id).style.backgroundImage = 'url(' + this.settings.button_image_url + ')';
|
||
$(this.settings.button_placeholder_id).style.backgroundRepeat = 'no-repeat';
|
||
$(this.settings.button_placeholder_id).style.backgroundPosition = 'center top';
|
||
}
|
||
|
||
var self = this;
|
||
|
||
var exts = "",
|
||
mimes = "";
|
||
|
||
if (this.settings.file_types.indexOf('*.*') < 0) {
|
||
exts = this.settings.file_types.replace(/\*\./g, '').replace(/;/g, ',');
|
||
var extsArray = jQuery.grep(exts.split(','), function (s) {
|
||
return s.length > 0
|
||
});
|
||
mimes = jQuery.grep(
|
||
jQuery.merge(
|
||
jQuery.map(extsArray, function (ext) {
|
||
return "." + ext;
|
||
}),
|
||
jQuery.map(extsArray, function (ext) {
|
||
return SWFUpload.EXT_MIME_MAP[ext];
|
||
})
|
||
),
|
||
function (s) {
|
||
return s.length > 0
|
||
}
|
||
);
|
||
mimes = jQuery.grep(mimes, function (m, i) {
|
||
return i === jQuery.inArray(m, mimes)
|
||
}).join(",");
|
||
}
|
||
|
||
var uploader = WebUploader.create({
|
||
swf: getBasePath() + 'Uploader.swf',
|
||
server: this.settings.upload_url,
|
||
pick: '#' + this.settings.button_placeholder_id,
|
||
compress: false,
|
||
threads: 1,
|
||
accept: {
|
||
title: this.settings.file_types_description,
|
||
extensions: exts,
|
||
mimeTypes: mimes
|
||
},
|
||
fileVal: this.settings.file_post_name,
|
||
formData: this.settings.post_params,
|
||
fileNumLimit: this.settings.file_upload_limit,
|
||
fileSingleSizeLimit: this.settings.file_size_limit * 1024,
|
||
duplicate: true
|
||
});
|
||
|
||
this.uploader = uploader;
|
||
|
||
uploader.on('beforeFileQueued', function(file) {
|
||
self.queueEvent("file_dialog_start_handler");
|
||
});
|
||
|
||
uploader.on('fileQueued', function(file) {
|
||
self.queueEvent("file_queued_handler", file);
|
||
});
|
||
|
||
uploader.on('startUpload', function() {
|
||
self.queueEvent("file_dialog_complete_handler");
|
||
});
|
||
|
||
uploader.on('uploadStart', function(file) {
|
||
self.queueEvent("upload_start_handler", file);
|
||
});
|
||
|
||
uploader.on('uploadBeforeSend', function (block, data) {
|
||
delete data.id;
|
||
delete data.name;
|
||
delete data.lastModifiedDate;
|
||
if(self.settings.post_params.type){
|
||
data.type = self.settings.post_params.type;
|
||
}
|
||
});
|
||
|
||
uploader.on('uploadProgress', function(file, percentage) {
|
||
self.queueEvent("upload_progress_handler", [file, percentage]);
|
||
});
|
||
|
||
uploader.on('uploadError', function(file, reason) {
|
||
self.queueEvent("upload_error_handler", [file, reason]);
|
||
});
|
||
|
||
uploader.on('uploadSuccess', function(file, response) {
|
||
self.queueEvent("upload_success_handler", [file, response]);
|
||
});
|
||
|
||
uploader.on('error', function(code) {
|
||
self.queueEvent("file_queue_error_handler", code);
|
||
});
|
||
|
||
};
|
||
|
||
SWFUpload.prototype.setUploadURL = function (url) {
|
||
this.uploader.options.server = url.toString();
|
||
};
|
||
|
||
SWFUpload.prototype.addPostParam = function (name, value) {
|
||
this.uploader.options.formData[name] = value;
|
||
};
|
||
|
||
SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {
|
||
var self = this;
|
||
|
||
if (argumentArray == undefined) {
|
||
argumentArray = [];
|
||
} else if (!(argumentArray instanceof Array)) {
|
||
argumentArray = [argumentArray];
|
||
}
|
||
|
||
if (typeof this.settings[handlerName] === "function") {
|
||
this.eventQueue.push(function () {
|
||
this.settings[handlerName].apply(this, argumentArray);
|
||
});
|
||
|
||
setTimeout(function () {
|
||
self.executeNextEvent();
|
||
}, 0);
|
||
|
||
} else if (this.settings[handlerName] !== null) {
|
||
throw "Event handler " + handlerName + " is unknown or is not a function";
|
||
}
|
||
};
|
||
|
||
SWFUpload.prototype.executeNextEvent = function () {
|
||
|
||
var f = this.eventQueue ? this.eventQueue.shift() : null;
|
||
if (typeof(f) === "function") {
|
||
f.apply(this);
|
||
}
|
||
};
|
||
|
||
SWFUpload.prototype.debug = function (message) {
|
||
this.queueEvent("debug_handler", message);
|
||
};
|
||
|
||
SWFUpload.prototype.debugMessage = function (message) {
|
||
var exceptionMessage, exceptionValues, key;
|
||
|
||
if (this.settings.debug) {
|
||
exceptionValues = [];
|
||
|
||
if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") {
|
||
for (key in message) {
|
||
if (message.hasOwnProperty(key)) {
|
||
exceptionValues.push(key + ": " + message[key]);
|
||
}
|
||
}
|
||
exceptionMessage = exceptionValues.join("\n") || "";
|
||
exceptionValues = exceptionMessage.split("\n");
|
||
exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
|
||
SWFUpload.Console.writeLine(exceptionMessage);
|
||
} else {
|
||
SWFUpload.Console.writeLine(message);
|
||
}
|
||
}
|
||
};
|
||
|
||
function preLoad() {
|
||
|
||
}
|
||
|
||
function loadFailed() {
|
||
|
||
}
|
||
|
||
function fileDialogStart() {
|
||
if(this.customSettings.uploadSource == 'forum') {
|
||
this.customSettings.alertType = 0;
|
||
if(this.customSettings.uploadFrom == 'fastpost') {
|
||
if(typeof forum_post_inited == 'undefined') {
|
||
appendscript(JSPATH + 'forum_post.js?' + VERHASH);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function fileQueued(file) {
|
||
try {
|
||
var createQueue = true;
|
||
if(this.customSettings.uploadSource == 'forum' && this.customSettings.uploadType == 'poll') {
|
||
var inputObj = $(this.customSettings.progressTarget+'_aid');
|
||
if(inputObj && parseInt(inputObj.value)) {
|
||
this.addPostParam('aid', inputObj.value);
|
||
}
|
||
} else if(this.customSettings.uploadSource == 'portal') {
|
||
var inputObj = $('catid');
|
||
if (inputObj && parseInt(inputObj.value)) {
|
||
this.addPostParam('catid', inputObj.value);
|
||
}else if(typeof check_catid == 'function' && !check_catid()) {
|
||
this.uploader.cancelFile(file);
|
||
return false;
|
||
}
|
||
}
|
||
this.addPostParam('filetype', file.type);
|
||
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
||
if(this.customSettings.uploadSource == 'forum') {
|
||
if(this.customSettings.maxAttachNum != undefined) {
|
||
if(this.customSettings.maxAttachNum > 0) {
|
||
this.customSettings.maxAttachNum--;
|
||
} else {
|
||
this.customSettings.alertType = 6;
|
||
createQueue = false;
|
||
}
|
||
}
|
||
|
||
if(createQueue && this.customSettings.maxSizePerDay != undefined) {
|
||
if(this.customSettings.maxSizePerDay - file.size > 0) {
|
||
this.customSettings.maxSizePerDay = this.customSettings.maxSizePerDay - file.size
|
||
} else {
|
||
this.customSettings.alertType = 11;
|
||
createQueue = false;
|
||
}
|
||
}
|
||
if(createQueue && this.customSettings.filterType != undefined) {
|
||
var fileSize = this.customSettings.filterType[file.source.ext.toLowerCase()];
|
||
if(fileSize != undefined && fileSize && file.size > fileSize) {
|
||
this.customSettings.alertType = 5;
|
||
createQueue = false;
|
||
}
|
||
}
|
||
|
||
}
|
||
if(createQueue) {
|
||
progress.setStatus("等待上传...");
|
||
this.uploader.upload(file);
|
||
} else {
|
||
this.uploader.cancelFile(file);
|
||
progress.setStatus(this.customSettings.alertType ? STATUSMSG[this.customSettings.alertType] : "Cancelled");
|
||
progress.setCancelled();
|
||
}
|
||
progress.toggleCancel(true, this);
|
||
|
||
|
||
} catch (ex) {
|
||
this.debug(ex);
|
||
}
|
||
}
|
||
|
||
function fileQueueError(errorCode) {
|
||
try {
|
||
var err = '';
|
||
switch (errorCode) {
|
||
case 'F_EXCEED_SIZE':
|
||
err = '单个文件大小不得超过' + WebUploader.Base.formatSize(this.uploader.option('fileSingleSizeLimit')) + '!';
|
||
break;
|
||
case 'Q_EXCEED_NUM_LIMIT':
|
||
err = '最多只能上传' + this.settings.fileNumLimit + '个!';
|
||
break;
|
||
case 'Q_EXCEED_SIZE_LIMIT':
|
||
err = '上传文件总大小超出' + WebUploader.Base.formatSize(this.uploader.option('fileSizeLimit')) + '!';
|
||
break;
|
||
case 'Q_TYPE_DENIED':
|
||
err = '无效文件类型,请上传正确的文件格式!';
|
||
break;
|
||
case 'F_DUPLICATE':
|
||
err = '请不要重复上传相同文件!';
|
||
break;
|
||
default:
|
||
err = '上传错误,请刷新重试!' + code;
|
||
break;
|
||
}
|
||
showDialog(err, 'notice', null, null, 0, null, null, null, null, sdCloseTime);
|
||
} catch (ex) {
|
||
this.debug(ex);
|
||
}
|
||
}
|
||
|
||
function fileDialogComplete() {
|
||
try {
|
||
if(this.customSettings.uploadSource == 'forum') {
|
||
if(this.customSettings.uploadType == 'attach') {
|
||
if(typeof switchAttachbutton == "function") {
|
||
switchAttachbutton('attachlist');
|
||
}
|
||
try {
|
||
$('attach_tblheader').style.display = '';
|
||
$('attach_notice').style.display = '';
|
||
} catch (ex) {}
|
||
} else if(this.customSettings.uploadType == 'image') {
|
||
if(typeof switchImagebutton == "function") {
|
||
switchImagebutton('imgattachlist');
|
||
}
|
||
try {
|
||
$('imgattach_notice').style.display = '';
|
||
} catch (ex) {}
|
||
}
|
||
var objId = this.customSettings.uploadType == 'attach' ? 'attachlist' : 'imgattachlist';
|
||
var listObj = $(objId);
|
||
var tableObj = listObj.getElementsByTagName("table");
|
||
if(!tableObj.length) {
|
||
listObj.innerHTML = "";
|
||
}
|
||
} else if(this.customSettings.uploadType == 'blog') {
|
||
if(typeof switchImagebutton == "function") {
|
||
switchImagebutton('imgattachlist');
|
||
}
|
||
}
|
||
} catch (ex) {
|
||
this.debug(ex);
|
||
}
|
||
}
|
||
|
||
function uploadStart(file) {
|
||
try {
|
||
if(this.customSettings.uploadSource == 'forum' && this.customSettings.uploadType == 'poll') {
|
||
var preObj = $(this.customSettings.progressTarget);
|
||
preObj.style.display = 'none';
|
||
preObj.innerHTML = '';
|
||
}
|
||
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
||
progress.setStatus("上传中...");
|
||
progress.toggleCancel(true, this);
|
||
if(this.customSettings.uploadSource == 'forum') {
|
||
var objId = this.customSettings.uploadType == 'attach' ? 'attachlist' : 'imgattachlist';
|
||
var attachlistObj = $(objId).parentNode;
|
||
attachlistObj.scrollTop = $(file.id).offsetTop - attachlistObj.clientHeight;
|
||
}
|
||
} catch (ex) {
|
||
}
|
||
}
|
||
|
||
function uploadProgress(file, percentage) {
|
||
try {
|
||
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
||
progress.setStatus("正在上传 <progress value='" + percentage + "' max='1' style='width: 200px;'></progress> " + Math.ceil(percentage * 100) + "%");
|
||
} catch (ex) {
|
||
this.debug(ex);
|
||
}
|
||
}
|
||
|
||
function uploadSuccess(file, serverData) {
|
||
try {
|
||
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
||
if(this.customSettings.uploadSource == 'forum') {
|
||
if(this.customSettings.uploadType == 'poll') {
|
||
var data = serverData;
|
||
if(parseInt(data.aid)) {
|
||
var preObj = $(this.customSettings.progressTarget);
|
||
preObj.innerHTML = "";
|
||
preObj.style.display = '';
|
||
var img = new Image();
|
||
img.src = IMGDIR + '/attachimg_2.png';//data.smallimg;
|
||
var imgObj = document.createElement("img");
|
||
imgObj.src = img.src;
|
||
imgObj.className = "cur1";
|
||
imgObj.onmouseout = function(){hideMenu('poll_img_preview_'+data.aid+'_menu');};//"hideMenu('poll_img_preview_"+data.aid+"_menu');";
|
||
imgObj.onmouseover = function(){showMenu({'menuid':'poll_img_preview_'+data.aid+'_menu','ctrlclass':'a','duration':2,'timeout':0,'pos':'34'});};//"showMenu({'menuid':'poll_img_preview_"+data.aid+"_menu','ctrlclass':'a','duration':2,'timeout':0,'pos':'34'});";
|
||
preObj.appendChild(imgObj);
|
||
var inputObj = document.createElement("input");
|
||
inputObj.type = 'hidden';
|
||
inputObj.name = 'pollimage[]';
|
||
inputObj.id = this.customSettings.progressTarget+'_aid';
|
||
inputObj.value= data.aid;
|
||
preObj.appendChild(inputObj);
|
||
var preImgObj = document.createElement("span");
|
||
preImgObj.style.display = 'none';
|
||
preImgObj.id = 'poll_img_preview_'+data.aid+'_menu';
|
||
img = new Image();
|
||
img.src = data.smallimg;
|
||
imgObj = document.createElement("img");
|
||
imgObj.src = img.src;
|
||
preImgObj.appendChild(imgObj);
|
||
preObj.appendChild(preImgObj);
|
||
}
|
||
} else {
|
||
aid = parseInt(serverData);
|
||
if(aid > 0) {
|
||
if(this.customSettings.uploadType == 'attach') {
|
||
ajaxget('forum.php?mod=ajax&action=attachlist&aids=' + aid + (!fid ? '' : '&fid=' + fid)+(typeof resulttype == 'undefined' ? '' : '&result=simple'), file.id);
|
||
} else if(this.customSettings.uploadType == 'image') {
|
||
var tdObj = getInsertTdId(this.customSettings.imgBoxObj, 'image_td_'+aid);
|
||
ajaxget('forum.php?mod=ajax&action=imagelist&type=single&pid=' + pid + '&aids=' + aid + (!fid ? '' : '&fid=' + fid), tdObj.id);
|
||
$(file.id).style.display = 'none';
|
||
}
|
||
} else {
|
||
aid = aid < -1 ? Math.abs(aid) : aid;
|
||
if(typeof STATUSMSG[aid] == "string") {
|
||
progress.setStatus(STATUSMSG[aid]);
|
||
showDialog(STATUSMSG[aid], 'notice', null, null, 0, null, null, null, null, sdCloseTime);
|
||
} else {
|
||
progress.setStatus("取消上传");
|
||
}
|
||
this.uploader.cancelFile(file);
|
||
progress.setCancelled();
|
||
progress.toggleCancel(true, this.uploader);
|
||
}
|
||
}
|
||
} else if(this.customSettings.uploadType == 'album') {
|
||
var data = serverData;
|
||
if(parseInt(data.picid)) {
|
||
var newTr = document.createElement("TR");
|
||
var newTd = document.createElement("TD");
|
||
var img = new Image();
|
||
img.src = data.url;
|
||
var imgObj = document.createElement("img");
|
||
imgObj.src = img.src;
|
||
newTd.className = 'c';
|
||
newTd.appendChild(imgObj);
|
||
newTr.appendChild(newTd);
|
||
newTd = document.createElement("TD");
|
||
newTd.innerHTML = '<strong>'+file.name+'</strong>';
|
||
newTr.appendChild(newTd);
|
||
newTd = document.createElement("TD");
|
||
newTd.className = 'd';
|
||
newTd.innerHTML = '图片描述<br/><textarea name="title['+data.picid+']" cols="40" rows="2" class="pt"></textarea>';
|
||
newTr.appendChild(newTd);
|
||
this.customSettings.imgBoxObj.appendChild(newTr);
|
||
} else {
|
||
showDialog('图片上传失败', 'notice', null, null, 0, null, null, null, null, sdCloseTime);
|
||
}
|
||
$(file.id).style.display = 'none';
|
||
} else if(this.customSettings.uploadType == 'blog') {
|
||
var data = serverData;
|
||
if(parseInt(data.picid)) {
|
||
var tdObj = getInsertTdId(this.customSettings.imgBoxObj, 'image_td_'+data.picid);
|
||
var img = new Image();
|
||
img.src = data.url;
|
||
var imgObj = document.createElement("img");
|
||
imgObj.src = img.src;
|
||
imgObj.className = "cur1";
|
||
imgObj.onclick = function() {insertImage(data.bigimg);};
|
||
tdObj.appendChild(imgObj);
|
||
var inputObj = document.createElement("input");
|
||
inputObj.type = 'hidden';
|
||
inputObj.name = 'picids['+data.picid+']';
|
||
inputObj.value= data.picid;
|
||
tdObj.appendChild(inputObj);
|
||
} else {
|
||
showDialog('图片上传失败', 'notice', null, null, 0, null, null, null, null, sdCloseTime);
|
||
}
|
||
$(file.id).style.display = 'none';
|
||
} else if(this.customSettings.uploadSource == 'portal') {
|
||
var data = serverData;
|
||
if(data.aid) {
|
||
if(this.customSettings.uploadType == 'attach') {
|
||
ajaxget('portal.php?mod=attachment&op=getattach&type=attach&id=' + data.aid, file.id);
|
||
if($('attach_tblheader')) {
|
||
$('attach_tblheader').style.display = '';
|
||
}
|
||
} else {
|
||
var tdObj = getInsertTdId(this.customSettings.imgBoxObj, 'attach_list_'+data.aid);
|
||
ajaxget('portal.php?mod=attachment&op=getattach&id=' + data.aid, tdObj.id);
|
||
$(file.id).style.display = 'none';
|
||
}
|
||
} else {
|
||
showDialog('上传失败', 'notice', null, null, 0, null, null, null, null, sdCloseTime);
|
||
progress.setStatus("Cancelled");
|
||
this.uploader.cancelFile(file);
|
||
progress.setCancelled();
|
||
progress.toggleCancel(true, this.uploader);
|
||
}
|
||
} else {
|
||
progress.setComplete();
|
||
progress.setStatus("上传完成.");
|
||
progress.toggleCancel(false);
|
||
}
|
||
} catch (ex) {
|
||
this.debug(ex);
|
||
}
|
||
}
|
||
|
||
function uploadComplete(file) {
|
||
}
|
||
|
||
function uploadError(file, message) {
|
||
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
||
progress.setStatus("Upload Failed.");
|
||
progress.setCancelled();
|
||
}
|
||
|
||
function getInsertTdId(boxObj, tdId) {
|
||
var tableObj = boxObj.getElementsByTagName("table");
|
||
var tbodyObj, trObj, tdObj;
|
||
if (!tableObj.length) {
|
||
tableObj = document.createElement("table");
|
||
tableObj.className = "imgl";
|
||
tbodyObj = document.createElement("TBODY");
|
||
tableObj.appendChild(tbodyObj);
|
||
boxObj.appendChild(tableObj);
|
||
|
||
} else if (!tableObj[0].getElementsByTagName("tbody").length) {
|
||
tbodyObj = document.createElement("TBODY");
|
||
tableObj.appendChild(tbodyObj);
|
||
} else {
|
||
tableObj = tableObj[0];
|
||
tbodyObj = tableObj.getElementsByTagName("tbody")[0];
|
||
}
|
||
|
||
var createTr = true;
|
||
var inserID = 0;
|
||
if (tbodyObj.childNodes.length) {
|
||
trObj = tbodyObj.childNodes[tbodyObj.childNodes.length - 1];
|
||
var findObj = trObj.getElementsByTagName("TD");
|
||
for (var j = 0; j < findObj.length; j++) {
|
||
if (findObj[j].id == "") {
|
||
inserID = j;
|
||
tdObj = findObj[j];
|
||
break;
|
||
}
|
||
}
|
||
if (inserID) {
|
||
createTr = false;
|
||
}
|
||
}
|
||
if (createTr) {
|
||
trObj = document.createElement("TR");
|
||
for (var i = 0; i < 4; i++) {
|
||
var newTd = document.createElement("TD");
|
||
newTd.width = "25%";
|
||
newTd.vAlign = "bottom";
|
||
newTd.appendChild(document.createTextNode(" "));
|
||
trObj.appendChild(newTd);
|
||
}
|
||
tdObj = trObj.childNodes[0];
|
||
tbodyObj.appendChild(trObj);
|
||
}
|
||
tdObj.id = tdId;
|
||
return tdObj;
|
||
}
|
||
|
||
function FileProgress(file, targetID) {
|
||
this.fileProgressID = file.id;
|
||
|
||
this.opacity = 100;
|
||
this.height = 0;
|
||
|
||
this.fileProgressWrapper = document.getElementById(this.fileProgressID);
|
||
if (!this.fileProgressWrapper) {
|
||
this.fileProgressWrapper = document.createElement("div");
|
||
this.fileProgressWrapper.className = "progressWrapper";
|
||
this.fileProgressWrapper.id = this.fileProgressID;
|
||
|
||
this.fileProgressElement = document.createElement("div");
|
||
this.fileProgressElement.className = "progressContainer";
|
||
|
||
var progressCancel = document.createElement("a");
|
||
progressCancel.className = "progressCancel";
|
||
progressCancel.href = "javascript:;";
|
||
progressCancel.style.display = "none";
|
||
progressCancel.appendChild(document.createTextNode(" "));
|
||
|
||
var progressText = document.createElement("div");
|
||
progressText.className = "progressName";
|
||
progressText.appendChild(document.createTextNode(file.name));
|
||
|
||
var progressBar = document.createElement("div");
|
||
progressBar.className = "progressBarInProgress";
|
||
|
||
var progressStatus = document.createElement("div");
|
||
progressStatus.className = "progressBarStatus";
|
||
progressStatus.innerHTML = " ";
|
||
|
||
this.fileProgressElement.appendChild(progressCancel);
|
||
this.fileProgressElement.appendChild(progressText);
|
||
this.fileProgressElement.appendChild(progressStatus);
|
||
this.fileProgressElement.appendChild(progressBar);
|
||
|
||
this.fileProgressWrapper.appendChild(this.fileProgressElement);
|
||
|
||
document.getElementById(targetID).appendChild(this.fileProgressWrapper);
|
||
} else {
|
||
this.fileProgressElement = this.fileProgressWrapper.firstChild;
|
||
this.reset();
|
||
}
|
||
|
||
this.height = this.fileProgressWrapper.offsetHeight;
|
||
this.setTimer(null);
|
||
|
||
}
|
||
|
||
FileProgress.prototype.setTimer = function(timer) {
|
||
this.fileProgressElement["FP_TIMER"] = timer;
|
||
};
|
||
|
||
FileProgress.prototype.getTimer = function(timer) {
|
||
return this.fileProgressElement["FP_TIMER"] || null;
|
||
};
|
||
|
||
FileProgress.prototype.reset = function() {
|
||
try {
|
||
this.fileProgressElement.className = "progressContainer";
|
||
|
||
this.fileProgressElement.childNodes[2].innerHTML = " ";
|
||
this.fileProgressElement.childNodes[2].className = "progressBarStatus";
|
||
|
||
this.fileProgressElement.childNodes[3].className = "progressBarInProgress";
|
||
this.fileProgressElement.childNodes[3].style.width = "0%";
|
||
|
||
this.appear();
|
||
} catch(ex) {}
|
||
};
|
||
|
||
FileProgress.prototype.setProgress = function(percentage) {
|
||
this.fileProgressElement.className = "progressContainer green";
|
||
this.fileProgressElement.childNodes[3].className = "progressBarInProgress";
|
||
this.fileProgressElement.childNodes[3].style.width = percentage + "%";
|
||
|
||
this.appear();
|
||
};
|
||
|
||
FileProgress.prototype.setComplete = function() {
|
||
this.fileProgressElement.className = "progressContainer blue";
|
||
this.fileProgressElement.childNodes[3].className = "progressBarComplete";
|
||
this.fileProgressElement.childNodes[3].style.width = "";
|
||
|
||
};
|
||
|
||
FileProgress.prototype.setError = function() {
|
||
this.fileProgressElement.className = "progressContainer red";
|
||
this.fileProgressElement.childNodes[3].className = "progressBarError";
|
||
this.fileProgressElement.childNodes[3].style.width = "";
|
||
|
||
var oSelf = this;
|
||
this.setTimer(setTimeout(function() {
|
||
oSelf.disappear();
|
||
},
|
||
5000));
|
||
};
|
||
|
||
FileProgress.prototype.setCancelled = function() {
|
||
this.fileProgressElement.className = "progressContainer";
|
||
this.fileProgressElement.childNodes[3].className = "progressBarError";
|
||
this.fileProgressElement.childNodes[3].style.width = "";
|
||
|
||
var oSelf = this;
|
||
this.setTimer(setTimeout(function() {
|
||
oSelf.disappear();
|
||
},
|
||
2000));
|
||
};
|
||
|
||
FileProgress.prototype.setStatus = function(status) {
|
||
this.fileProgressElement.childNodes[2].innerHTML = status;
|
||
};
|
||
|
||
FileProgress.prototype.toggleCancel = function(show, swfUploadInstance) {
|
||
this.fileProgressElement.childNodes[0].style.display = show ? "": "none";
|
||
if (swfUploadInstance) {
|
||
var fileID = this.fileProgressID;
|
||
var oSelf = this;
|
||
this.fileProgressElement.childNodes[0].onclick = function() {
|
||
swfUploadInstance.cancelFile(fileID);
|
||
oSelf.setStatus("Cancelled");
|
||
oSelf.setCancelled();
|
||
return false;
|
||
};
|
||
}
|
||
};
|
||
|
||
FileProgress.prototype.appear = function() {
|
||
if (this.getTimer() !== null) {
|
||
clearTimeout(this.getTimer());
|
||
this.setTimer(null);
|
||
}
|
||
|
||
if (this.fileProgressWrapper.filters) {
|
||
try {
|
||
this.fileProgressWrapper.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 100;
|
||
} catch(e) {
|
||
this.fileProgressWrapper.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
|
||
}
|
||
} else {
|
||
this.fileProgressWrapper.style.opacity = 1;
|
||
}
|
||
|
||
this.fileProgressWrapper.style.height = "";
|
||
|
||
this.height = this.fileProgressWrapper.offsetHeight;
|
||
this.opacity = 100;
|
||
this.fileProgressWrapper.style.display = "";
|
||
|
||
};
|
||
|
||
FileProgress.prototype.disappear = function() {
|
||
|
||
var reduceOpacityBy = 15;
|
||
var reduceHeightBy = 4;
|
||
var rate = 30; // 15 fps
|
||
if (this.opacity > 0) {
|
||
this.opacity -= reduceOpacityBy;
|
||
if (this.opacity < 0) {
|
||
this.opacity = 0;
|
||
}
|
||
|
||
if (this.fileProgressWrapper.filters) {
|
||
try {
|
||
this.fileProgressWrapper.filters.item("DXImageTransform.Microsoft.Alpha").opacity = this.opacity;
|
||
} catch(e) {
|
||
this.fileProgressWrapper.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + this.opacity + ")";
|
||
}
|
||
} else {
|
||
this.fileProgressWrapper.style.opacity = this.opacity / 100;
|
||
}
|
||
}
|
||
|
||
if (this.height > 0) {
|
||
this.height -= reduceHeightBy;
|
||
if (this.height < 0) {
|
||
this.height = 0;
|
||
}
|
||
|
||
this.fileProgressWrapper.style.height = this.height + "px";
|
||
}
|
||
|
||
if (this.height > 0 || this.opacity > 0) {
|
||
var oSelf = this;
|
||
this.setTimer(setTimeout(function() {
|
||
oSelf.disappear();
|
||
},
|
||
rate));
|
||
} else {
|
||
this.fileProgressWrapper.style.display = "none";
|
||
this.setTimer(null);
|
||
}
|
||
}; |