This repository has been archived by the owner on Oct 6, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathplupload.min.js
13 lines (13 loc) · 16.4 KB
/
plupload.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* Plupload - multi-runtime File Uploader
* v2.1.2
*
* Copyright 2013, Moxiecode Systems AB
* Released under GPL License.
*
* License: http://www.plupload.com/license
* Contributing: http://www.plupload.com/contributing
*
* Date: 2014-05-14
*/
;(function(e,t,n){function s(e){function r(e,t,r){var i={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};i[e]?n[i[e]]=t:r||(n[e]=t)}var t=e.required_features,n={};if(typeof t=="string")o.each(t.split(/\s*,\s*/),function(e){r(e,!0)});else if(typeof t=="object")o.each(t,function(e,t){r(t,e)});else if(t===!0){e.chunk_size>0&&(n.slice_blob=!0);if(e.resize.enabled||!e.multipart)n.send_binary_string=!0;o.each(e,function(e,t){r(t,!!e,!0)})}return n}var r=e.setTimeout,i={},o={VERSION:"2.1.2",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:t.mimes,ua:t.ua,typeOf:t.typeOf,extend:t.extend,guid:t.guid,get:function(n){var r=[],i;t.typeOf(n)!=="array"&&(n=[n]);var s=n.length;while(s--)i=t.get(n[s]),i&&r.push(i);return r.length?r:null},each:t.each,getPos:t.getPos,getSize:t.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},n=/[<>&\"\']/g;return e?(""+e).replace(n,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){var t,n;n=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];for(t=0;t<n.length;t+=2)e=e.replace(n[t],n[t+1]);return e=e.replace(/\s+/g,"_"),e=e.replace(/[^a-z0-9_\-\.]+/gi,""),e},buildUrl:function(e,t){var n="";return o.each(t,function(e,t){n+=(n?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(e)}),n&&(e+=(e.indexOf("?")>0?"&":"?")+n),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===n||/\D/.test(e))return o.translate("N/A");var r=Math.pow(1024,4);return e>r?t(e/r,1)+" "+o.translate("tb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("gb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("mb"):e>1024?Math.round(e/1024)+" "+o.translate("kb"):e+" "+o.translate("b")},parseSize:t.parseSizeStr,predictRuntime:function(e,n){var r,i;return r=new o.Uploader(e),i=t.Runtime.thatCan(r.getOption().required_features,n||e.runtimes),r.destroy(),i},addFileFilter:function(e,t){i[e]=t}};o.addFileFilter("mime_types",function(e,t,n){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:o.FILE_EXTENSION_ERROR,message:o.translate("File extension error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("max_file_size",function(e,t,n){var r;e=o.parseSize(e),t.size!==r&&e&&t.size>e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("prevent_duplicates",function(e,t,n){if(e){var r=this.files.length;while(r--)if(t.name===this.files[r].name&&t.size===this.files[r].size){this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),n(!1);return}}n(!0)}),o.Uploader=function(e){function w(){var e=this,t;this.state==o.STARTED&&(p.length&&p.each(function(e,n){return p.remove(n),t=e,!1}),t||o.each(c,function(n){if(n.status==o.QUEUED&&e.trigger("BeforeUpload",n))return t=n,!1}),t?e.uploadFile(t):h.length||(this.state!==o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged")),this.trigger("UploadComplete",c)))}function E(){var e,t;y.reset();for(e=0;e<c.length;e++)t=c[e],t.size!==n?(y.size+=t.origSize,y.loaded+=t.loaded*t.origSize/t.size):y.size=n,t.status==o.DONE?y.uploaded++:t.status==o.FAILED?y.failed++:y.queued++;y.size===n?y.percent=c.length>0?Math.ceil(y.uploaded/c.length*100):0:(y.bytesPerSec=Math.ceil(y.loaded/((+(new Date)-g||1)/1e3)),y.percent=y.size>0?Math.ceil(y.loaded/y.size*100):0)}function S(){var e=v[0]||m[0];return e?e.getRuntime().uid:!1}function x(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",O),this.bind("BeforeUpload",C),this.bind("UploadProgress",k),this.bind("StateChanged",A),this.bind("QueueChanged",E),this.bind("Error",M),this.bind("FileUploaded",L),this.bind("Destroy",_)}function T(e,n){var r=this,i=0,s=[],u={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:d,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};o.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(u[t]=e[t])}),e.browse_button&&o.each(e.browse_button,function(n){s.push(function(s){var a=new t.FileInput(o.extend({},u,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:n}));a.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(r.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),i++,v.push(this),s()},a.onchange=function(){r.addFile(this.files)},a.bind("mouseenter mouseleave mousedown mouseup",function(r){b||(e.browse_button_hover&&("mouseenter"===r.type?t.addClass(n,e.browse_button_hover):"mouseleave"===r.type&&t.removeClass(n,e.browse_button_hover)),e.browse_button_active&&("mousedown"===r.type?t.addClass(n,e.browse_button_active):"mouseup"===r.type&&t.removeClass(n,e.browse_button_active)))}),a.bind("mousedown",function(){r.trigger("Browse")}),a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),e.drop_element&&o.each(e.drop_element,function(e){s.push(function(n){var s=new t.FileDrop(o.extend({},u,{drop_zone:e}));s.onready=function(){var e=t.Runtime.getInfo(this.ruid);r.features.dragdrop=e.can("drag_and_drop"),i++,m.push(this),n()},s.ondrop=function(){r.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,n()}),s.init()})}),t.inSeries(s,function(){typeof n=="function"&&n(i)})}function N(e,n,r){function a(e,t,n){var r=l[e];switch(e){case"max_file_size":e==="max_file_size"&&(l.max_file_size=l.filters.max_file_size=t);break;case"chunk_size":if(t=o.parseSize(t))l[e]=t,l.send_file_name=!0;break;case"multipart":l[e]=t,t||(l.send_file_name=!0);break;case"unique_names":l[e]=t,t&&(l.send_file_name=!0);break;case"filters":o.typeOf(t)==="array"&&(t={mime_types:t}),n?o.extend(l.filters,t):l.filters=t,t.mime_types&&(l.filters.mime_types.regexp=function(e){var t=[];return o.each(e,function(e){o.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(l.filters.mime_types));break;case"resize":n?o.extend(l.resize,t,{enabled:!0}):l.resize=t;break;case"prevent_duplicates":l.prevent_duplicates=l.filters.prevent_duplicates=!!t;break;case"browse_button":case"drop_element":t=o.get(t);case"container":case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":l[e]=t,n||(u=!0);break;default:l[e]=t}n||i.trigger("OptionChanged",e,t,r)}var i=this,u=!1;typeof e=="object"?o.each(e,function(e,t){a(t,e,r)}):a(e,n,r),r?(l.required_features=s(o.extend({},l)),d=s(o.extend({},l,{required_features:!0}))):u&&(i.trigger("Destroy"),T.call(i,l,function(e){e?(i.runtime=t.Runtime.getInfo(S()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})}))}function C(e,t){if(e.settings.unique_names){var n=t.name.match(/\.([^.]+)$/),r="part";n&&(r=n[1]),t.target_name=t.id+"."+r}}function k(){E()}function L(e,t){h.remove(t.id),E(),r(function(){w.call(e)},1)}function A(e){if(e.state==o.STARTED)g=+(new Date);else if(e.state==o.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,E())}function O(){h.length&&h.each(function(e){e.cancelUpload()}),h.clear()}function M(e,t){t.code===o.INIT_ERROR?e.destroy():t.file&&(E(),e.state==o.STARTED&&(e.trigger("CancelUpload"),r(function(){w.call(e)},1)))}function _(e){e.stop(),o.each(c,function(e){e.destroy()}),c=[],v.length&&(o.each(v,function(e){e.destroy()}),v=[]),m.length&&(o.each(m,function(e){e.destroy()}),m=[]),h.clear(),p.clear(),d={},b=!1,g=null,y.reset()}var f=o.guid(),l,c=[],h=new a,p=new a,d={},v=[],m=[],g,y,b=!1;l={runtimes:t.Runtime.order,max_retries:0,max_upload_slots:1,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},N.call(this,e,null,!0),y=new u,o.extend(this,{id:f,uid:f,state:o.STOPPED,features:{},runtime:null,files:c,settings:l,total:y,init:function(){var e=this;typeof l.preinit=="function"?l.preinit(e):o.each(l.preinit,function(t,n){e.bind(n,t)}),x.call(this);if(!l.browse_button||!l.url){this.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")});return}T.call(this,l,function(n){typeof l.init=="function"?l.init(e):o.each(l.init,function(t,n){e.bind(n,t)}),n?(e.runtime=t.Runtime.getInfo(S()).type,e.trigger("Init",{runtime:e.runtime}),e.trigger("PostInit")):e.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})},setOption:function(e,t){N.call(this,e,t,!this.runtime)},getOption:function(e){return e?l[e]:l},refresh:function(){v.length&&o.each(v,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),w.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){b=arguments[0]!==n?arguments[0]:!0,v.length&&o.each(v,function(e){e.disable(b)}),this.trigger("DisableBrowse",b)},uploadFile:function(e){var t=this,n=t.getOption("max_upload_slots");typeof e=="string"&&(e=this.getFile(e)),h.length<n?(h.add(e.id,e),e.features=this.features,e.upload(t.getOption()),this.trigger("UploadFile",e),h.length<n&&r(function(){w.call(t)})):p.add(e.id,e)},getFile:function(e){var t;for(t=c.length-1;t>=0;t--)if(c[t].id===e)return c[t]},addFile:function(e,n){function l(e){e.bind("progress",function(){s.trigger("UploadProgress",e)}),e.bind("uploaded",function(t,n){s.trigger("FileUploaded",e,n)})}function h(e,n){var r=[];t.each(s.settings.filters,function(t,n){i[n]&&r.push(function(r){i[n].call(s,t,e,function(e){r(!e)})})}),t.inSeries(r,n)}function p(e){var i=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!f)return!1;e.ruid=f,e.connectRuntime(f)}p(new o.File(e))}else e instanceof t.Blob?(p(e.getSource()),e.destroy()):e instanceof o.File?(n&&(e.name=n),u.push(function(t){h(e,function(n){n||(l(e),c.push(e),a.push(e),s.trigger("FileFiltered",e)),r(t,1)})})):t.inArray(i,["file","blob"])!==-1?p(new t.File(null,e)):i==="node"&&t.typeOf(e.files)==="filelist"?t.each(e.files,p):i==="array"&&(n=null,t.each(e,p))}var s=this,u=[],a=[],f;f=S(),p(e),u.length&&t.inSeries(u,function(){a.length&&s.trigger("FilesAdded",a)})},removeFile:function(e){var t=typeof e=="string"?e:e.id;for(var n=c.length-1;n>=0;n--)if(c[n].id===t)return this.splice(n,1)[0]},splice:function(e,t){var r=c.splice(e===n?0:e,t===n?c.length:t),i=!1;return this.state==o.STARTED&&(o.each(r,function(e){if(e.status===o.UPLOADING)return i=!0,!1}),i&&this.stop()),this.trigger("FilesRemoved",r),o.each(r,function(e){e.destroy()}),i&&this.start(),r},bind:function(e,t,n){var r=this;o.Uploader.prototype.bind.call(this,e,function(){var e=[].slice.call(arguments);return e.splice(0,1,r),t.apply(this,e)},0,n)},destroy:function(){this.trigger("Destroy"),l=y=null,this.unbindAll()}})},o.Uploader.prototype=t.EventTarget.instance,o.File=function(){function i(i){function a(e,n){if(e.ruid){var r=t.Runtime.getInfo(e.ruid);if(r)return r.can(n)}return!1}function f(e,r,i){var s=new t.Image;try{s.onload=function(){if(r.width>this.width&&r.height>this.height&&r.quality===n&&r.preserve_headers&&!r.crop)return this.destroy(),i(e);s.downsize(r.width,r.height,r.crop,r.preserve_headers)},s.onresize=function(){i(this.getAsBlob(e.type,r.quality)),this.destroy()},s.onerror=function(){i(e)},s.load(e)}catch(o){i(e)}}var s=o.guid(),u;o.extend(this,{id:s,uid:s,name:i.name||i.fileName,type:i.type||"",size:i.size||i.fileSize,origSize:i.size||i.fileSize,loaded:0,percent:0,status:o.QUEUED,features:{},lastModifiedDate:i.lastModifiedDate||(new Date).toLocaleString(),isImage:function(){return t.inArray(this.type,["image/jpeg","image/png"])!==-1},getNative:function(){var e=this.getSource().getSource();return t.inArray(t.typeOf(e),["blob","file"])!==-1?e:null},getSource:function(){return e[this.id]?e[this.id]:null},upload:function(e){function p(){l-->0?r(d,1e3):(n.loaded=h,n.status=o.FAILED,n.trigger("Error",{code:o.HTTP_ERROR,message:o.translate("HTTP Error."),file:n,response:u.responseText,status:u.status,responseHeaders:u.getAllResponseHeaders()}))}function d(){var a,f,v=e.url,m={},g;if(n.status!==o.UPLOADING||n.state===o.STOPPED)return;e.send_file_name&&(m.name=n.target_name||n.name),s&&c.chunks&&i.size>s?(g=Math.min(s,i.size-h),a=i.slice(h,h+g)):(g=i.size,a=i),s&&c.chunks&&(e.send_chunk_number?(m.chunk=Math.ceil(h/s),m.chunks=Math.ceil(i.size/s)):(m.offset=h,m.total=i.size)),u=new t.XMLHttpRequest,u.upload&&(u.upload.onprogress=function(e){n.loaded=Math.min(n.size,h+e.loaded),n.size&&(n.percent=Math.ceil(n.loaded/n.size*100)),n.trigger(e)}),u.onload=function(){if(u.status>=400){p();return}l=e.max_retries,g<i.size?(a.destroy(),h+=g,n.loaded=Math.min(h,i.size),n.percent=Math.ceil(n.loaded/n.size*100),n.trigger("ChunkUploaded",{offset:n.loaded,total:i.size,response:u.responseText,status:u.status,responseHeaders:u.getAllResponseHeaders()}),t.Env.browser==="Android Browser"&&n.trigger({type:"Progress",loaded:n.loaded,total:i.size})):n.loaded=n.size,a=f=null,!h||h>=i.size?(n.size!=n.origSize&&(i.destroy(),i=null),n.percent=100,n.trigger({type:"Progress",loaded:n.loaded,total:n.size}),n.status=o.DONE,n.trigger("Uploaded",{response:u.responseText,status:u.status,responseHeaders:u.getAllResponseHeaders()})):r(d,1)},u.onerror=function(){p()},u.onloadend=function(){this.destroy(),u=null},e.multipart&&c.multipart?(u.open("post",v,!0),o.each(e.headers,function(e,t){u.setRequestHeader(t,e)}),f=new t.FormData,o.each(o.extend(args,e.multipart_params),function(e,t){f.append(t,e)}),f.append(e.file_data_name,a),u.send(f,{runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:e.preferred_caps,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url})):(v=o.buildUrl(e.url,o.extend(m,e.multipart_params)),u.open("post",v,!0),u.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.headers,function(e,t){u.setRequestHeader(t,e)}),u.send(a,{runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:e.preferred_caps,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url}))}e=o.extend({multipart:!0,multipart_params:{},headers:{},file_data_name:"file",chunk_size:0,send_chunk_number:!0,max_retries:0,resize:{enabled:!1,preserve_headers:!0,crop:!1}},e);var n=this,i=n.getSource(),s=e.chunk_size,l=e.max_retries,c=n.features,h=0;n.status=o.UPLOADING,n.loaded&&(h=n.loaded=s?s*Math.floor(n.loaded/s):0),e.resize.enabled&&n.isImage()&&a(i,"send_binary_string")?f.call(this,i,e.resize,function(e){i=e,n.size=e.size,d()}):d()},cancelUpload:function(){u&&(u.abort(),u.destroy(),u=null)},destroy:function(){this.cancelUpload(),this.unbindAll();var t=this.getSource();t&&(t.destroy(),delete e[this.id])}}),e[this.id]=i}var e={};return i.prototype=t.EventTarget.instance,i}();var u=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},a=function(){var e={};this.length=0,this.get=function(t){return e.hasOwnProperty(t)?e[t]:null},this.add=function(t,n){e[t]=n,this.length++},this.remove=function(t){e.hasOwnProperty(t)&&(delete e[t],this.length--)},this.each=function(t){o.each(e,t)},this.clear=function(){e={},this.length=0}};e.plupload=o})(window,mOxie);