Sonarr/packages/TelerikMvcExtensions.2011.2.../content/Scripts/2011.2.712/telerik.upload.min.js

1 line
16 KiB
JavaScript

(function(n){var t,s=n.telerik,k=/\.([^\.]+)$/;s.scripts.push("telerik.upload.js");s.upload=function(w,x){n.extend(this,x);this.element=w;this.name=w.name;var v=n(w);this.wrapper=v.closest(".t-upload");if(this.wrapper.length==0){this.wrapper=this._wrapInput(v)}this._setActiveInput(v);this.toggle(this.enabled);v.closest("form").bind({submit:n.proxy(this._onParentFormSubmit,this),reset:n.proxy(this._onParentFormReset,this)});if(this.async.saveUrl!=t){this._module=this._getSupportsFormData()?new o(this):new f(this)}else{this._module=new g(this)}if(this._getSupportsDrop()){this._setupDropZone()}this.wrapper.delegate(".t-upload-action","click",n.proxy(this._onFileAction,this)).delegate(".t-upload-selected","click",n.proxy(this._onUploadSelected,this)).delegate(".t-file","t:progress",n.proxy(this._onFileProgress,this)).delegate(".t-file","t:upload-success",n.proxy(this._onUploadSuccess,this)).delegate(".t-file","t:upload-error",n.proxy(this._onUploadError,this));s.bind(this.wrapper,{load:this.onLoad,select:this.onSelect,upload:this.onUpload,success:this.onSuccess,error:this.onError,complete:this.onComplete,cancel:this.onCancel,remove:this.onRemove});s.trigger(this.wrapper,"load")};s.upload.prototype={enable:function(){this.toggle(true)},disable:function(){this.toggle(false)},toggle:function(v){this.wrapper.toggleClass("t-state-disabled",!v)},_addInput:function(v){v.insertAfter(this.element).data("tUpload",this);n(this.element).hide().removeAttr("id");this._setActiveInput(v)},_setActiveInput:function(v){var w=this.wrapper;this.element=v;v.attr("multiple",this._getSupportsMultiple()?this.multiple:false).attr("autocomplete","off").click(function(x){if(w.hasClass("t-state-disabled")){x.preventDefault()}}).change(n.proxy(this._onInputChange,this))},_onInputChange:function(x){var v=n(x.target),w=s.trigger(this.wrapper,"select",{files:j(v)});if(!w){v.trigger("t:select")}},_onDrop:function(y){var v=y.originalEvent.dataTransfer,x=v.files;d(y);if(x.length>0){var w=s.trigger(this.wrapper,"select",{files:c(x)});if(!w){n(".t-dropzone",this.wrapper).trigger("t:select",[x])}}},_enqueueFile:function(z,w){var x=n(".t-upload-files",this.wrapper);if(x.length==0){x=n("<ul class='t-upload-files t-reset'></ul>").appendTo(this.wrapper);if(!this.showFileList){x.hide()}}var v=n(".t-file",x);var y=n("<li class='t-file'><span class='t-icon'></span><span class='t-filename'>"+z+"</span></li>").appendTo(x).data(w);if(!this.multiple){v.trigger("t:remove")}return y},_removeFileEntry:function(w){var v=w.closest(".t-upload-files");if(n(".t-file",v).length==1){v.remove();this._hideUploadButton()}else{w.remove()}},_setFileAction:function(x,v){var w={remove:"t-delete",cancel:"t-cancel",retry:"t-retry"};if(!w.hasOwnProperty(v)){return}this._clearFileAction(x);x.append(this._renderAction(w[v],this.localization[v]).addClass("t-upload-action"))},_setFileState:function(v,x){var y={uploading:{cssClass:"t-loading",text:this.localization.statusUploading},uploaded:{cssClass:"t-success",text:this.localization.statusUploaded},failed:{cssClass:"t-fail",text:this.localization.statusFailed}};var w=y[x];if(w){var z=v.children(".t-icon").text(w.text);z[0].className="t-icon "+w.cssClass}},_renderAction:function(w,v){if(w!=""){return n("<button type='button' class='t-button t-button-icontext'><span class='t-icon "+w+"'></span>"+v+"</button>")}else{return n("<button type='button' class='t-button'>"+v+"</button>")}},_clearFileAction:function(v){v.find(".t-upload-action").remove()},_onFileAction:function(z){if(!this.wrapper.hasClass("t-state-disabled")){var v=n(z.target).closest(".t-upload-action"),y=v.find(".t-icon"),x=v.closest(".t-file"),w={files:x.data("fileNames")};if(y.hasClass("t-delete")){if(!s.trigger(this.wrapper,"remove",w)){x.trigger("t:remove")}}else{if(y.hasClass("t-cancel")){s.trigger(this.wrapper,"cancel",w);x.trigger("t:cancel")}else{if(y.hasClass("t-retry")){x.trigger("t:retry")}}}}return false},_onUploadSelected:function(){this.wrapper.trigger("t:saveSelected");return false},_onFileProgress:function(x,w){var v=n(".t-progress-status",x.target);if(v.length==0){v=n("<span class='t-progress'><span class='t-progress-status' style='width: 0;'></span></span>").appendTo(n(".t-filename",x.target)).find(".t-progress-status")}v.width(w+"%")},_onUploadSuccess:function(y,x,v){var w=r(y);this._setFileState(w,"uploaded");s.trigger(this.wrapper,"success",{files:w.data("fileNames"),response:x,operation:"upload",XMLHttpRequest:v});if(this._supportsRemove()){this._setFileAction(w,"remove")}else{this._clearFileAction(w)}this._checkAllComplete()},_onUploadError:function(y,v){var x=r(y);this._setFileState(x,"failed");this._setFileAction(x,"retry");var w=s.trigger(this.wrapper,"error",{operation:"upload",files:x.data("fileNames"),XMLHttpRequest:v});u("Server response: "+v.responseText);if(!w){this._alert("Error! Upload failed. Unexpected server response - see console.")}this._checkAllComplete()},_showUploadButton:function(){var v=n(".t-upload-selected",this.wrapper);if(v.length==0){v=this._renderAction("",this.localization.uploadSelectedFiles).addClass("t-upload-selected")}this.wrapper.append(v)},_hideUploadButton:function(){n(".t-upload-selected",this.wrapper).remove()},_onParentFormSubmit:function(){var v=this,x=v.element;x.trigger("t:abort");if(!x.value){var w=n(x);w.attr("name","");window.setTimeout(function(){w.attr("name",v.name)},0)}},_onParentFormReset:function(){n(".t-file",this.wrapper).trigger("t:remove")},_getSupportsFormData:function(){return typeof(FormData)!="undefined"},_getSupportsMultiple:function(){return !n.browser.opera},_getSupportsDrop:function(){var y=this._getUserAgent().toLowerCase(),w=/chrome/.test(y),v=!w&&/safari/.test(y),x=v&&/windows/.test(y);return !x&&this._getSupportsFormData()&&(this.async.saveUrl!=t)},_getUserAgent:function(){return navigator.userAgent},_setupDropZone:function(){n(".t-upload-button",this.wrapper).wrap("<div class='t-dropzone'></div>");var v=n(".t-dropzone",this.wrapper).append(n("<em>"+this.localization.dropFilesHere+"</em>")).bind({dragenter:d,dragover:function(w){w.preventDefault()},drop:n.proxy(this._onDrop,this)});h(v,function(){v.addClass("t-dropzone-hovered")},function(){v.removeClass("t-dropzone-hovered")});h(n(document),function(){v.addClass("t-dropzone-active")},function(){v.removeClass("t-dropzone-active")})},_supportsRemove:function(){return this.async.removeUrl!=t},_submitRemove:function(x,v,y){var w=n.extend({},p());w.fileNames=x;n.ajax({type:"POST",dataType:"json",url:this.async.removeUrl,traditional:true,data:w,success:v,error:y})},_alert:function(v){alert(v)},_wrapInput:function(v){v.wrap("<div class='t-widget t-upload'><div class='t-button t-upload-button'></div></div>");v.closest(".t-button").append("<span>"+this.localization.select+"</span>");return v.closest(".t-upload")},_checkAllComplete:function(){if(n(".t-file .t-icon.t-loading",this.wrapper).length==0){s.trigger(this.wrapper,"complete")}}};n.fn.tUpload=function(v){return s.create(this,{name:"tUpload",init:function(w,x){return new s.upload(w,x)},options:v})};n.fn.tUpload.defaults={enabled:true,multiple:true,showFileList:true,async:{},localization:{select:"Select...",cancel:"Cancel",retry:"Retry",remove:"Remove",uploadSelectedFiles:"Upload files",dropFilesHere:"drop files here to upload",statusUploading:"uploading",statusUploaded:"uploaded",statusFailed:"failed"}};var g=function(v){this.name="syncUploadModule";this.element=v.wrapper;this.upload=v;this.element.bind("t:select",n.proxy(this.onSelect,this)).bind("t:remove",n.proxy(this.onRemove,this)).closest("form").attr("enctype","multipart/form-data").attr("encoding","multipart/form-data")};g.prototype={onSelect:function(y){var v=this.upload;var w=n(y.target);v._addInput(w.clone().val(""));var x=v._enqueueFile(m(w),{relatedInput:w});v._setFileAction(x,"remove")},onRemove:function(w){var v=r(w);v.data("relatedInput").remove();this.upload._removeFileEntry(v)}};var f=function(v){this.name="iframeUploadModule";this.element=v.wrapper;this.upload=v;this.iframes=[];this.element.bind("t:select",n.proxy(this.onSelect,this)).bind("t:cancel",n.proxy(this.onCancel,this)).bind("t:retry",n.proxy(this.onRetry,this)).bind("t:remove",n.proxy(this.onRemove,this)).bind("t:saveSelected",n.proxy(this.onSaveSelected,this)).bind("t:abort",n.proxy(this.onAbort,this))};f.prototype={onSelect:function(y){var v=this.upload,w=n(y.target);var x=this.prepareUpload(w);if(v.async.autoUpload){this.performUpload(x)}else{if(v._supportsRemove()){this.upload._setFileAction(x,"remove")}v._showUploadButton()}},prepareUpload:function(A){var y=this.upload;var x=n(y.element);y._addInput(A.clone().val(""));var z=this.createFrame(y.name+"_"+this.iframes.length);this.registerFrame(z);var w=this.createForm(y.async.saveUrl,z.attr("name")).append(x);var v=y._enqueueFile(m(A),{frame:z,relatedInput:x,fileNames:j(A)});z.data({form:w,file:v});return v},performUpload:function(v){var A={files:v.data("fileNames")},z=v.data("frame"),B=this.upload;if(!s.trigger(B.wrapper,"upload",A)){B._hideUploadButton();z.appendTo(document.body);var w=z.data("form").appendTo(document.body);A.data=n.extend({},A.data,p());for(var y in A.data){var x=w.find("input[name='"+y+"']");if(x.length==0){x=n("<input>",{type:"hidden",name:y}).prependTo(w)}x.val(A.data[y])}B._setFileAction(v,"cancel");B._setFileState(v,"uploading");z.one("load",n.proxy(this.onIframeLoad,this));w[0].submit()}else{B._removeFileEntry(z.data("file"));this.cleanupFrame(z);this.unregisterFrame(z)}},onSaveSelected:function(w){var v=this;n(".t-file",this.element).each(function(){var x=n(this),y=a(x);if(!y){v.performUpload(x)}})},onIframeLoad:function(x){var w=n(x.target);try{var v=w.contents().text()}catch(x){v="Error trying to get server response: "+x}this.processResponse(w,v)},processResponse:function(x,z){var v=x.data("file"),y=this,w={responseText:z};i(z,function(A){n.extend(w,{statusText:"OK",status:"200"});v.trigger("t:upload-success",[A,w]);y.cleanupFrame(x);y.unregisterFrame(x)},function(){n.extend(w,{statusText:"error",status:"500"});v.trigger("t:upload-error",[w])})},onCancel:function(w){var v=n(w.target).data("frame");this.stopFrameSubmit(v);this.cleanupFrame(v);this.unregisterFrame(v);this.upload._removeFileEntry(v.data("file"))},onRetry:function(w){var v=r(w);this.performUpload(v)},onRemove:function(x){var v=r(x);var w=v.data("frame");if(w){this.unregisterFrame(w);this.upload._removeFileEntry(v);this.cleanupFrame(w)}else{e(v,this.upload)}},onAbort:function(){var v=this.element,w=this;n.each(this.iframes,function(){n("input",this.data("form")).appendTo(v);w.stopFrameSubmit(this[0]);this.data("form").remove();this.remove()});this.iframes=[]},createFrame:function(v){return n("<iframe name='"+v+"' id='"+v+"' style='display:none;' />")},createForm:function(v,w){return n("<form enctype='multipart/form-data' method='POST' action='"+v+"' target='"+w+"'/>")},stopFrameSubmit:function(v){if(typeof(v.stop)!="undefined"){v.stop()}else{if(v.document){v.document.execCommand("Stop");v.contentWindow.location.href=v.contentWindow.location.href}}},registerFrame:function(v){this.iframes.push(v)},unregisterFrame:function(v){this.iframes=n.grep(this.iframes,function(w){return w.attr("name")!=v.attr("name")})},cleanupFrame:function(v){var w=v.data("form");v.data("file").data("frame",null);setTimeout(function(){w.remove();v.remove()},1)}};var o=function(v){this.name="formDataUploadModule";this.element=v.wrapper;this.upload=v;this.element.bind("t:select",n.proxy(this.onSelect,this)).bind("t:cancel",n.proxy(this.onCancel,this)).bind("t:remove",n.proxy(this.onRemove,this)).bind("t:retry",n.proxy(this.onRetry,this)).bind("t:saveSelected",n.proxy(this.onSaveSelected,this)).bind("t:abort",n.proxy(this.onAbort,this))};o.prototype={onSelect:function(z,w){var A=this.upload,y=this,B=n(z.target),x=w?c(w):this.getInputFiles(B),v=this.prepareUpload(B,x);n.each(v,function(){if(A.async.autoUpload){y.performUpload(this)}else{if(A._supportsRemove()){A._setFileAction(this,"remove")}A._showUploadButton()}})},prepareUpload:function(v,w){var x=this.enqueueFiles(w);if(v.is("input")){n.each(x,function(){n(this).data("relatedInput",v)});v.data("relatedFileEntries",x);this.upload._addInput(v.clone().val(""))}return x},enqueueFiles:function(y){var A=this.upload;fileEntries=[];for(var v=0;v<y.length;v++){var x=y[v],z=x.name;var w=A._enqueueFile(z,{fileNames:[x]});w.data("formData",this.createFormData(y[v]));fileEntries.push(w)}return fileEntries},getInputFiles:function(v){return j(v)},performUpload:function(z){var v=this.upload,w=z.data("formData"),y={files:z.data("fileNames")};if(!s.trigger(this.element,"upload",y)){v._setFileAction(z,"cancel");v._hideUploadButton();y.data=n.extend({},y.data,p());for(var x in y.data){w.append(x,y.data[x])}v._setFileState(z,"uploading");this.postFormData(this.upload.async.saveUrl,w,z)}else{this.removeFileEntry(z)}},onSaveSelected:function(w){var v=this;n(".t-file",this.element).each(function(){var x=n(this),y=a(x);if(!y){v.performUpload(x)}})},onCancel:function(w){var v=r(w);this.stopUploadRequest(v);this.removeFileEntry(v)},onRetry:function(w){var v=r(w);this.performUpload(v)},onRemove:function(w){var v=r(w);if(v.children(".t-icon").is(".t-success")){e(v,this.upload)}else{this.removeFileEntry(v)}},postFormData:function(v,w,z){var y=new XMLHttpRequest(),x=this;z.data("request",y);y.addEventListener("load",function(A){x.onRequestSuccess.call(x,A,z)},false);y.addEventListener("error",function(A){x.onRequestError.call(x,A,z)},false);y.upload.addEventListener("progress",function(A){x.onRequestProgress.call(x,A,z)},false);y.open("POST",v);y.send(w)},createFormData:function(v){var w=new FormData();w.append(this.upload.name,v.rawFile);return w},onRequestSuccess:function(y,v){var x=y.target,w=this;i(x.responseText,function(z){v.trigger("t:upload-success",[z,x]);w.cleanupFileEntry(v)},function(){v.trigger("t:upload-error",[x])})},onRequestError:function(x,v){var w=x.target;v.trigger("t:upload-error",[w])},cleanupFileEntry:function(v){var x=v.data("relatedInput"),w=true;if(x){n.each(x.data("relatedFileEntries"),function(){if(this.parent().length>0&&this[0]!=v[0]){w=w&&this.children(".t-icon").is(".t-success")}});if(w){x.remove()}}v.data("formData",null)},removeFileEntry:function(v){this.cleanupFileEntry(v);this.upload._removeFileEntry(v)},onRequestProgress:function(x,v){var w=Math.round(x.loaded*100/x.total);v.trigger("t:progress",[w])},stopUploadRequest:function(v){v.data("request").abort()}};function m(v){return n.map(j(v),function(w){return w.name}).join(", ")}function j(w){var v=w[0];if(v.files){return c(v.files)}else{return[{name:l(v.value),extension:q(v.value),size:null}]}}function c(v){return n.map(v,function(w){return b(w)})}function b(v){var w=v.name||v.fileName;return{name:w,extension:q(w),size:v.size||v.fileSize,rawFile:v}}function q(v){return v.match(k)[0]||""}function l(v){var w=v.lastIndexOf("\\");return(w!=-1)?v.substr(w+1):v}function e(w,y){if(!y._supportsRemove()){return}var x=w.data("fileNames");var v=n.map(x,function(B){return B.name});y._submitRemove(v,function A(C,D,B){y._removeFileEntry(w);s.trigger(y.wrapper,"success",{operation:"remove",files:x,response:C,XMLHttpRequest:B})},function z(B,D,D){var C=s.trigger(y.wrapper,"error",{operation:"remove",files:x,XMLHttpRequest:B});u("Server response: "+B.responseText);if(!C){y._alert("Error! Remove operation failed. Unexpected response - see console.")}})}function i(w,v,x){try{var y=n.parseJSON(w)}catch(z){x();return}v(y)}function d(v){v.stopPropagation();v.preventDefault()}function h(y,x,z){var w,v;y.bind("dragenter",function(A){x();v=new Date();if(!w){w=setInterval(function(){var B=new Date()-v;if(B>100){z();clearInterval(w);w=null}},100)}}).bind("dragover",function(A){v=new Date()})}function a(v){return v.children(".t-icon").is(".t-loading, .t-success, .t-fail")}function u(v){if(typeof(console)!="undefined"&&console.log){console.log(v)}}function r(v){return n(v.target).closest(".t-file")}function p(){var v={};n("input[name^='__RequestVerificationToken']").each(function(){v[this.name]=this.value});return v}})(jQuery);