123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470 |
- /*
- [Discuz!] (C)2001-2099 Comsenz Inc.
- This is NOT a freeware, use is subject to license terms
- $Id: handlers.js 31952 2012-10-25 09:20:40Z zhengqingpeng $
- */
- var sdCloseTime = 2;
- function preLoad() {
- if(!this.support.loading) {
- disableMultiUpload(this.customSettings);
- return false;
- }
- }
- function loadFailed() {
- disableMultiUpload(this.customSettings);
- }
- function disableMultiUpload(obj) {
- if(obj.uploadSource == 'forum' && obj.uploadFrom != 'fastpost') {
- try{
- obj.singleUpload.style.display = '';
- var dIdStr = obj.singleUpload.getAttribute("did");
- if(dIdStr != null) {
- if(typeof forum_post_inited == 'undefined') {
- appendscript(JSPATH + 'forum_post.js?' + VERHASH);
- }
- var idArr = dIdStr.split("|");
- $(idArr[0]).style.display = 'none';
- if(idArr[1] == 'local') {
- switchImagebutton('local');
- } else if(idArr[1] == 'upload') {
- switchAttachbutton('upload');
- }
- }
- } catch (e) {
- }
- }
- }
- 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);
- }
- }
- 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.type.substr(1).toLowerCase()];
- if(fileSize != undefined && fileSize && file.size > fileSize) {
- this.customSettings.alertType = 5;
- createQueue = false;
- }
- }
- }
- if(createQueue) {
- progress.setStatus("等待上传...");
- } else {
- this.cancelUpload(file.id);
- progress.setCancelled();
- }
- progress.toggleCancel(true, this);
- } catch (ex) {
- this.debug(ex);
- }
- }
- function fileQueueError(file, errorCode, message) {
- try {
- if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
- message = parseInt(message);
- showDialog("您选择的文件个数超过限制。\n"+(message === 0 ? "您已达到上传文件的上限了。" : "您还可以选择 " + message + " 个文件"), 'notice', null, null, 0, null, null, null, null, sdCloseTime);
- return;
- }
- var progress = new FileProgress(file, this.customSettings.progressTarget);
- progress.setError();
- progress.toggleCancel(false);
- switch (errorCode) {
- case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
- progress.setStatus("文件太大.");
- this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
- break;
- case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
- progress.setStatus("不能上传零字节文件.");
- this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
- break;
- case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
- progress.setStatus("禁止上传该类型的文件.");
- this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
- break;
- case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
- alert("You have selected too many files. " + (message > 1 ? "You may only add " + message + " more files" : "You cannot add any more files."));
- break;
- default:
- if (file !== null) {
- progress.setStatus("Unhandled Error");
- }
- this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
- break;
- }
- } catch (ex) {
- this.debug(ex);
- }
- }
- function fileDialogComplete(numFilesSelected, numFilesQueued) {
- try {
- if(this.customSettings.uploadSource == 'forum') {
- if(this.customSettings.uploadType == 'attach') {
- if(typeof switchAttachbutton == "function") {
- switchAttachbutton('attachlist');
- }
- try {
- if(this.getStats().files_queued) {
- $('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');
- }
- }
- this.startUpload();
- } catch (ex) {
- this.debug(ex);
- }
- }
- function uploadStart(file) {
- try {
- this.addPostParam('filetype', file.type);
- 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) {
- }
- return true;
- }
- function uploadProgress(file, bytesLoaded, bytesTotal) {
- try {
- var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
- var progress = new FileProgress(file, this.customSettings.progressTarget);
- progress.setStatus("正在上传("+percent+"%)...");
- } 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 = eval('('+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.cancelUpload(file.id);
- progress.setCancelled();
- progress.toggleCancel(true, this);
- var stats = this.getStats();
- var obj = {'successful_uploads':--stats.successful_uploads, 'upload_cancelled':++stats.upload_cancelled};
- this.setStats(obj);
- }
- }
- } else if(this.customSettings.uploadType == 'album') {
- var data = eval('('+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 = eval('('+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 = eval('('+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.cancelUpload(file.id);
- progress.setCancelled();
- progress.toggleCancel(true, this);
- }
- } else {
- progress.setComplete();
- progress.setStatus("上传完成.");
- progress.toggleCancel(false);
- }
- } catch (ex) {
- this.debug(ex);
- }
- }
- 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 uploadComplete(file) {
- try {
- if (this.getStats().files_queued === 0) {
- } else {
- this.startUpload();
- }
- } catch (ex) {
- this.debug(ex);
- }
- }
- function uploadError(file, errorCode, message) {
- try {
- var progress = new FileProgress(file, this.customSettings.progressTarget);
- progress.setError();
- progress.toggleCancel(false);
- switch (errorCode) {
- case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
- progress.setStatus("Upload Error: " + message);
- this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
- progress.setStatus("Configuration Error");
- this.debug("Error Code: No backend file, File name: " + file.name + ", Message: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
- progress.setStatus("Upload Failed.");
- this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.IO_ERROR:
- progress.setStatus("Server (IO) Error");
- this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
- progress.setStatus("Security Error");
- this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
- progress.setStatus("Upload limit exceeded.");
- this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:
- progress.setStatus("File not found.");
- this.debug("Error Code: The file was not found, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
- progress.setStatus("Failed Validation. Upload skipped.");
- this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
- break;
- case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
- if (this.getStats().files_queued === 0) {
- }
- progress.setStatus(this.customSettings.alertType ? STATUSMSG[this.customSettings.alertType] : "Cancelled");
- progress.setCancelled();
- break;
- case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
- progress.setStatus("Stopped");
- break;
- default:
- progress.setStatus("Unhandled Error: " + error_code);
- this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
- break;
- }
- } catch (ex) {
- this.debug(ex);
- }
- }
|