/*! * jQuery.filer * Copyright (c) 2015 CreativeDream * Website: https://github.com/CreativeDream/jquery.filer * Version: 1.0.4 (03-Nov-2015) * Requires: jQuery v1.7.1 or later */ (function(n){"use strict";n.fn.filer=function(t){return this.each(function(i,r){var e=n(r),l=".jFiler",s=n(),o=n(),h=n(),c=[],f=n.extend(!0,{},n.fn.filer.defaults,t),u={init:function(){e.wrap('
<\/div>');e.prop("jFiler").boxEl=s=e.closest(l);u._changeInput()},_bindInput:function(){f.changeInput&&o.size()>0&&o.bind("click",u._clickHandler);e.on({focus:function(){o.addClass("focused")},blur:function(){o.removeClass("focused")},change:function(){u._onChange()}});if(f.dragDrop&&(o.length>0?o:e).bind("drop",u._dragDrop.drop).bind("dragover",u._dragDrop.dragEnter).bind("dragleave",u._dragDrop.dragLeave),f.uploadFile&&f.clipBoardPaste)n(window).on("paste",u._clipboardPaste)},_unbindInput:function(){f.changeInput&&o.size()>0&&o.unbind("click",u._clickHandler)},_clickHandler:function(){e.click()},_applyAttrSettings:function(){var t=["name","limit","maxSize","extensions","changeInput","showThumbs","appendTo","theme","addMore","excludeName","files","options"],i,n;for(i in t)if(n="data-jfiler-"+t[i],u._assets.hasAttr(n)){switch(t[i]){case"changeInput":case"showThumbs":case"addMore":f[t[i]]=["true","false"].indexOf(e.attr(n))>-1?e.attr(n)==="true":e.attr(n);break;case"extensions":f[t[i]]=e.attr(n).replace(/ /g,"").split(",");break;case"files":case"options":f[t[i]]=JSON.parse(e.attr(n));break;default:f[t[i]]=e.attr(n)}e.removeAttr(n)}},_changeInput:function(){if(u._applyAttrSettings(),f.beforeRender!==null&&typeof f.beforeRender=="function"?f.beforeRender(s,e):null,f.theme&&s.addClass("jFiler-theme-"+f.theme),e.get(0).tagName.toLowerCase()!=="input"&&e.get(0).type!=="file")o=e,e=n(''),e.css({position:"absolute",left:"-9999px",top:"-9999px","z-index":"-9999"}),s.prepend(e),u._isGn=e;else if(f.changeInput){switch(typeof f.changeInput){case"boolean":o=n('
'+f.captions.feedback+'<\/span><\/div>
'+f.captions.button+'<\/div><\/div>"');break;case"string":case"object":o=n(f.changeInput);break;case"function":o=n(f.changeInput(s,e,f))}e.after(o);e.css({position:"absolute",left:"-9999px",top:"-9999px","z-index":"-9999"})}e.prop("jFiler").newInputEl=o;(!f.limit||f.limit&&f.limit>=2)&&(e.attr("multiple","multiple"),e.attr("name").slice(-2)!=="[]"?e.attr("name",e.attr("name")+"[]"):null);u._bindInput();f.files&&u._append(!1,{files:f.files});f.afterRender!==null&&typeof f.afterRender=="function"?f.afterRender(h,s,o,e):null},_clear:function(){u.files=null;e.prop("jFiler").files=null;f.uploadFile||f.addMore||u._reset();u._set("feedback",u._itFl&&u._itFl.length>0?u._itFl.length+" "+f.captions.feedback2:f.captions.feedback);f.onEmpty!==null&&typeof f.onEmpty=="function"?f.onEmpty(s,o,e):null},_reset:function(t){if(!t){if(!f.uploadFile&&f.addMore){for(var i=0;i0&&o.find(".jFiler-input-caption span").html(t)}},_filesCheck:function(){var r=0,i,s;if(f.limit&&u.files.length+u._itFl.length>f.limit)return layer.alert(u._assets.textParse(f.captions.errors.filesLimit)),!1;for(i=0;if.maxSize*1048576){layer.alert(u._assets.textParse(f.captions.errors.filesSize,o));break}if(t.size===4096&&t.type.length===0)break;r+=u.files[i].size}return f.maxSize!==null&&r>=Math.round(f.maxSize*1048576)?(layer.alert(u._assets.textParse(f.captions.errors.filesSizeAll)),!1):(f.addMore||f.uploadFile)&&(s=u._itFl.filter(function(n){if(n.file.name===t.name&&n.file.size===t.size&&n.file.type===t.type&&(t.lastModified?n.file.lastModified===t.lastModified:!0))return!0}),s.length>0)?!1:!0},_thumbCreator:{create:function(t){var i=u.files[t],o=u._itFc?u._itFc.id:t,s=i.name,v=i.description||"",y=i.fileid||"",a=i.size,c=i.type.split("/",1).toString().toLowerCase(),l=s.indexOf(".")!==-1?s.split(".").pop().toLowerCase():"",p=f.uploadFile?'
'+f.templates.progressBar+"<\/div>":"",e={id:o,name:s,size:a,description:v,fileid:y,size2:u._assets.bytesToSize(a),type:c,extension:l,icon:u._assets.getIcon(l,c),icon2:u._thumbCreator.generateIcon({type:c,extension:l}),image:'
<\/div>',progressBar:p,_appended:i._appended},r="";if(i.opts&&(e=n.extend({},i.opts,e)),r=n(u._thumbCreator.renderContent(e)).attr("data-jfiler-index",o),r.get(0).jfiler_id=o,u._thumbCreator.renderFile(i,r,e),i.forList)return r;u._itFc.html=r;r.hide()[f.templates.itemAppendToEnd?"appendTo":"prependTo"](h.find(f.templates._selectors.list)).show();i._appended||u._onSelect(t)},renderContent:function(n){return u._assets.textParse(n._appended?f.templates.itemAppend:f.templates.item,n)},renderFile:function(t,i,r){var f,e,o,s,h;if(i.find(".jFiler-item-thumb-image").size()===0)return!1;if(t.file&&r.type==="image")return f='',e=i.find(".jFiler-item-thumb-image.fi-loading"),n(f).error(function(){f=u._thumbCreator.generateIcon(r);i.addClass("jFiler-no-thumbnail");e.removeClass("fi-loading").html(f)}).load(function(){e.removeClass("fi-loading").html(f)}),!0;window.File&&window.FileList&&window.FileReader&&r.type==="image"&&r.size<6e6?(o=new FileReader,o.onload=function(t){var f='',e=i.find(".jFiler-item-thumb-image.fi-loading");n(f).error(function(){f=u._thumbCreator.generateIcon(r);i.addClass("jFiler-no-thumbnail");e.removeClass("fi-loading").html(f)}).load(function(){e.removeClass("fi-loading").html(f)})},o.readAsDataURL(t)):(s=u._thumbCreator.generateIcon(r),h=i.find(".jFiler-item-thumb-image.fi-loading"),i.addClass("jFiler-no-thumbnail"),h.removeClass("fi-loading").html(s))},generateIcon:function(t){var i=new Array(3),e,o,f,r;if(t&&t.type&&t.extension)switch(t.type){case"image":i[0]="f-image";i[1]='<\/i>';break;case"video":i[0]="f-video";i[1]='<\/i>';break;case"audio":i[0]="f-audio";i[1]='<\/i>';break;default:i[0]="f-file f-file-ext-"+t.extension;i[1]=t.extension.length>0?"."+t.extension:"";i[2]=1}else i[0]="f-file",i[1]=t.extension&&t.extension.length>0?"."+t.extension:"",i[2]=1;return e=''+i[1]+"<\/span>",i[2]===1&&(o=u._assets.text2Color(t.extension),o&&(f=n(e).appendTo("body"),r=f.css("box-shadow"),r=o+r.substring(r.replace(/^.*(rgba?\([^)]+\)).*$/,"$1").length,r.length),f.css({"-webkit-box-shadow":r,"-moz-box-shadow":r,"box-shadow":r}).attr("style","-webkit-box-shadow: "+r+"; -moz-box-shadow: "+r+"; box-shadow: "+r+";"),e=f.prop("outerHTML"),f.remove())),e},_box:function(t){var r,i;if(f.beforeShow!==null&&typeof f.beforeShow=="function"?!f.beforeShow(u.files,h,s,o,e):!1)return!1;if(h.length<1){r=f.appendTo?n(f.appendTo):s;r.find(".jFiler-items").remove();h=n('
<\/div>');e.prop("jFiler").listEl=h;h.append(u._assets.textParse(f.templates.box)).appendTo(r);h.on("click",f.templates._selectors.remove,function(i){i.preventDefault();var r=this;n(r).hasClass("icon-jfi-trash")?layer.confirm(i18next.t(f.captions.removeConfirmation),{icon:3,title:i18next.t("common.Tips")},function(e){u._remove(t?t.remove.event:i,t?t.remove.el:n(r).closest(f.templates._selectors.item));layer.close(e)}):n(r).hasClass("icon-jfi-download-o")?u._download(t?t.remove.el:n(r).closest(f.templates._selectors.item)):n(r).hasClass("icon-jfi-pencil")&&u._edit(t?t.remove.el:n(r).closest(f.templates._selectors.item))})}for(i=0;i=u.files.length&&(u._ajFc=0,f.uploadFile.onComplete!==null&&typeof f.uploadFile.onComplete=="function"?f.uploadFile.onComplete(h,s,o,e,n,t):null)},beforeSend:function(n,i){return f.uploadFile.beforeSend!==null&&typeof f.uploadFile.beforeSend=="function"?f.uploadFile.beforeSend(t,h,s,o,e,r.id,n,i):!0},success:function(n,i,u){r.uploaded=!0;f.uploadFile.success!==null&&typeof f.uploadFile.success=="function"?f.uploadFile.success(n,t,h,s,o,e,r.id,i,u):null},error:function(n,i,u){r.uploaded=!1;f.uploadFile.error!==null&&typeof f.uploadFile.error=="function"?f.uploadFile.error(t,h,s,o,e,r.id,n,i,u):null},statusCode:f.uploadFile.statusCode,cache:!1,contentType:!1,processData:!1}),r.ajax},progressHandling:function(n,t){if(n.lengthComputable){var i=Math.round(n.loaded*100/n.total).toString();f.uploadFile.onProgress!==null&&typeof f.uploadFile.onProgress=="function"?f.uploadFile.onProgress(i,t,h,s,o,e):null;t.find(".jFiler-jProgressBar").find(f.templates._selectors.progressBar).css("width",i+"%")}}},_dragDrop:{dragEnter:function(n){n.preventDefault();n.stopPropagation();s.addClass("dragged");u._set("feedback",f.captions.drop);f.dragDrop.dragEnter!==null&&typeof f.dragDrop.dragEnter=="function"?f.dragDrop.dragEnter(n,o,e,s):null},dragLeave:function(n){if(n.preventDefault(),n.stopPropagation(),!u._dragDrop._dragLeaveCheck(n))return!1;s.removeClass("dragged");u._set("feedback",f.captions.feedback);f.dragDrop.dragLeave!==null&&typeof f.dragDrop.dragLeave=="function"?f.dragDrop.dragLeave(n,o,e,s):null},drop:function(n){(n.preventDefault(),s.removeClass("dragged"),!n.originalEvent.dataTransfer.files||n.originalEvent.dataTransfer.files.length<=0)||(u._set("feedback",f.captions.feedback),u._onChange(n,n.originalEvent.dataTransfer.files),f.dragDrop.drop!==null&&typeof f.dragDrop.drop=="function"?f.dragDrop.drop(n.originalEvent.dataTransfer.files,n,o,e,s):null)},_dragLeaveCheck:function(t){var i=t.relatedTarget,r=!1;return i!==o&&(i&&(r=n.contains(o,i)),r)?!1:!0}},_clipboardPaste:function(n,t){var i,e,r,f;if((t||n.originalEvent.clipboardData||n.originalEvent.clipboardData.items)&&(!t||n.originalEvent.dataTransfer||n.originalEvent.dataTransfer.items)&&!u._clPsePre&&(i=t?n.originalEvent.dataTransfer.items:n.originalEvent.clipboardData.items,e=function(n,t,i){var e,o,r,f,s,u,h;for(t=t||"",i=i||512,e=atob(n),o=[],r=0;r=u.files.length&&(f.afterShow!==null&&typeof f.afterShow=="function"?f.afterShow(h,s,o,e):null)},_onChange:function(t,i){var r,l,a;if(i){if(!i||i.length===0)return u._set("input",""),u._clear(),!1;u.files=i}else{if(!e.get(0).files||typeof e.get(0).files=="undefined"||e.get(0).files.length===0)return f.uploadFile||f.addMore||(u._set("input",""),u._clear()),!1;u.files=e.get(0).files}if(f.uploadFile||f.addMore||u._reset(!0),e.prop("jFiler").files=u.files,!u._filesCheck()||(f.beforeSelect!==null&&typeof f.beforeSelect=="function"?!f.beforeSelect(u.files,h,s,o,e):!1))return u._set("input",""),u._clear(),!1;if(u._set("feedback",u.files.length+u._itFl.length+" "+f.captions.feedback2),f.showThumbs)u._thumbCreator._box();else for(r=0;r'),a=e.prop("attributes"),n.each(a,function(){l.attr(this.name,this.value)}),e.after(l),u._unbindInput(),c.push(l),e=l,u._bindInput())},_append:function(n,t){var r=t?t.files:!1,i;if(r&&!(r.length<=0)&&(u.files=r,e.prop("jFiler").files=u.files,f.showThumbs)){for(i=0;i0){if(f.uploadFile&&!n.isEmptyObject(f.uploadFile)&&!r[0].uploaded)return u._itFc=r[0],e.prop("jFiler").current_file=u._itFc,u._upload(o),!0}else return!1},_remove:function(t,r){var l;if(r.binded){if(typeof r.data.id!="undefined"&&(r=h.find(f.templates._selectors.item+"[data-jfiler-index='"+r.data.id+"']"),r.size()===0))return!1;r.data.el&&(r=r.data.el)}var v=r.get(0).jfiler_id||r.attr("data-jfiler-index"),c=null,y=function(t){var o=s.find("input[name^='jfiler-items-exclude-']:hidden").first(),r=u._itFl[t],h=[],c,a,l;if(o.size()===0&&(o=n(''),o.appendTo(s)),r.file._choosed||r.file._appended||r.uploaded){for(u._prEr=!0,u._itFr.push(r),f.addMore&&(c=r.input,a=0,u._itFl.filter(function(n){n.file._choosed&&n.input.get(0)===c.get(0)&&a++}),a===1&&(u._itFr=u._itFr.filter(function(n){return n.file._choosed?n.input.get(0)!==c.get(0):!0}),c.val(""),u._prEr=!1)),l=0;l-1?'<\/i>':'<\/i>'},textParse:function(t,i){i=n.extend({},{limit:f.limit,maxSize:f.maxSize,extensions:f.extensions?f.extensions.join(","):null},i&&n.isPlainObject(i)?i:{},f.options);switch(typeof t){case"string":return t.replace(/\{\{fi-(.*?)\}\}/g,function(n,t){return t=t.replace(/ /g,""),t.match(/(.*?)\|limitTo\:(\d+)/)?t.replace(/(.*?)\|limitTo\:(\d+)/,function(n,t,r){var f=i[t]?i[t]:"",u=t.substring(0,r);return f.length>u.length?u.substring(0,u.length-3)+"...":u}):i[t]?i[t]:""});case"function":return t(i);default:return t}},text2Color:function(n){if(n=n==="xls"?"xlsx":n,!n||n.length===0)return!1;for(var r,t=0,i=0;t>t++*2&255).toString(16)).slice(-2));return r}},_download:function(n){var r=n.get(0).jfiler_id||n.attr("data-jfiler-index"),i=null;for(var t in u._itFl)t!=="length"&&u._itFl.hasOwnProperty(t)&&u._itFl[t].id.toString()===r&&(i=t);f.onDownload(u._itFl[i].file)},_edit:function(n){var r=n.get(0).jfiler_id||n.attr("data-jfiler-index"),i=null;for(var t in u._itFl)t!=="length"&&u._itFl.hasOwnProperty(t)&&u._itFl[t].id.toString()===r&&(i=t);if(f.onEdit)f.onEdit(u._itFl[i].file,n)},files:null,_itFl:[],_itFc:null,_itFr:[],_ajFc:0,_prEr:!1};e.prop("jFiler",{options:f,listEl:h,boxEl:s,newInputEl:o,inputEl:e,files:u.files,files_list:u._itFl,current_file:u._itFc,append:function(n){return u._append(!1,{files:[n]})},remove:function(n){return u._remove(null,{binded:!0,data:{id:n}}),!0},reset:function(){return u._reset(),u._clear(),!0},retry:function(n){return u._retryUpload(n)}}).on("filer.append",function(n,t){u._append(n,t)}).on("filer.remove",function(n,t){t.binded=!0;u._remove(n,t)}).on("filer.reset",function(){return u._reset(),u._clear(),!0}).on("filer.generateList",function(n,t){return u._getList(n,t)}).on("filer.retry",function(n,t){return u._retryUpload(n,t)});return u.init(),this})};n.fn.filer.defaults={limit:null,maxSize:null,extensions:null,changeInput:!0,edit:!0,showThumbs:!1,appendTo:null,theme:"default",templates:{box:'