8 lines
20 KiB
JavaScript
8 lines
20 KiB
JavaScript
|
|
/*!
|
||
|
|
* jQuery.filer
|
||
|
|
* Copyright (c) 2015 CreativeDream
|
||
|
|
* Website: https://github.com/CreativeDream/jquery.filer
|
||
|
|
* Version: 1.0.5 (19-Nov-2015)
|
||
|
|
* Requires: jQuery v1.7.1 or later
|
||
|
|
*/
|
||
|
|
!function(e){"use strict";e.fn.filer=function(i){return this.each(function(t,n){var l=e(n),a=".jFiler",r=e(),o=e(),s=e(),d=[],f=e.isFunction(i)?i(l,e.fn.filer.defaults):i,p=f&&e.isPlainObject(f)?e.extend(!0,{},e.fn.filer.defaults,f):e.fn.filer.defaults,u={init:function(){l.wrap('<div class="jFiler"></div>'),u._set("props"),l.prop("jFiler").boxEl=r=l.closest(a),u._changeInput()},_bindInput:function(){p.changeInput&&o.size()>0&&o.bind("click",u._clickHandler),l.on({focus:function(){o.addClass("focused")},blur:function(){o.removeClass("focused")},change:function(){u._onChange()}}),p.dragDrop&&(o.length>0?o:l).bind("drop",u._dragDrop.drop).bind("dragover",u._dragDrop.dragEnter).bind("dragleave",u._dragDrop.dragLeave),p.uploadFile&&p.clipBoardPaste&&e(window).on("paste",u._clipboardPaste)},_unbindInput:function(){p.changeInput&&o.size()>0&&o.unbind("click",u._clickHandler)},_clickHandler:function(){l.click()},_applyAttrSettings:function(){var e=["name","limit","maxSize","extensions","changeInput","showThumbs","appendTo","theme","addMore","excludeName","files","uploadUrl","uploadData","options"];for(var i in e){var t="data-jfiler-"+e[i];if(u._assets.hasAttr(t)){switch(e[i]){case"changeInput":case"showThumbs":case"addMore":p[e[i]]=["true","false"].indexOf(l.attr(t))>-1?"true"==l.attr(t):l.attr(t);break;case"extensions":p[e[i]]=l.attr(t).replace(/ /g,"").split(",");break;case"uploadUrl":p.uploadFile&&(p.uploadFile.url=l.attr(t));break;case"uploadData":p.uploadFile&&(p.uploadFile.data=JSON.parse(l.attr(t)));break;case"files":case"options":p[e[i]]=JSON.parse(l.attr(t));break;default:p[e[i]]=l.attr(t)}l.removeAttr(t)}}},_changeInput:function(){if(u._applyAttrSettings(),null!=p.beforeRender&&"function"==typeof p.beforeRender?p.beforeRender(r,l):null,p.theme&&r.addClass("jFiler-theme-"+p.theme),"input"!=l.get(0).tagName.toLowerCase()&&"file"!=l.get(0).type)o=l,l=e('<input type="file" name="'+p.name+'" />'),l.css({position:"absolute",left:"-9999px",top:"-9999px","z-index":"-9999"}),r.prepend(l),u._isGn=l;else if(p.changeInput){switch(typeof p.changeInput){case"boolean":o=e('<div class="jFiler-input"><div class="jFiler-input-caption"><span>'+p.captions.feedback+'</span></div><div class="jFiler-input-button">'+p.captions.button+'</div></div>"');break;case"string":case"object":o=e(p.changeInput);break;case"function":o=e(p.changeInput(r,l,p))}l.after(o),l.css({position:"absolute",left:"-9999px",top:"-9999px","z-index":"-9999"})}l.prop("jFiler").newInputEl=o,(!p.limit||p.limit&&p.limit>=2)&&(l.attr("multiple","multiple"),"[]"!=l.attr("name").slice(-2)?l.attr("name",l.attr("name")+"[]"):null),u._bindInput(),p.files&&u._append(!1,{files:p.files}),null!=p.afterRender&&"function"==typeof p.afterRender?p.afterRender(s,r,o,l):null},_clear:function(){u.files=null,l.prop("jFiler").files=null,p.uploadFile||p.addMore||u._reset(),u._set("feedback",u._itFl&&u._itFl.length>0?u._itFl.length+" "+p.captions.feedback2:p.captions.feedback),null!=p.onEmpty&&"function"==typeof p.onEmpty?p.onEmpty(r,o,l):null},_reset:function(i){if(!i){if(!p.uploadFile&&p.addMore){for(var t=0;t<d.length;t++)d[t].remove();d=[],u._unbindInput(),l=u._isGn?u._isGn:e(n),u._bindInput()}u._set("input","")}u._itFl=[],u._itFc=null,u._ajFc=0,u._set("props"),l.prop("jFiler").files_list=u._itFl,l.prop("jFiler").current_file=u._itFc,u._prEr||(u._itFr=[],r.find("input[name^='jfiler-items-exclude-']:hidden").remove()),s.fadeOut("fast",function(){e(this).remove()}),l.prop("jFiler").listEl=s=e()},_set:function(e,i){switch(e){case"input":l.val("");break;case"feedback":o.length>0&&o.find(".jFiler-input-caption span").html(i);break;case"props":l.prop("jFiler")||l.prop("jFiler",{options:p,listEl:s,boxEl:r,newInputEl:o,inputEl:l,files:u.files,files_list:u._itFl,current_file:u._itFc,append:function(e){return u._append(!1,{files:[e]})},remove:function(e){return u._remove(null,{binded:!0,data:{id:e}}),!0},reset:function(){return u._reset(),u._clear(),!0},retry:function(e){return u._retryUpload(e)}})}},_filesCheck:function(){var i=0;if(p.limit&&u.files.length+u._itFl.length>p.limit)return alert(u._ass
|