123456 |
- /*!
- * @copyright Copyright © Kartik Visweswaran, Krajee.com, 2014
- * @version 1.6.0
- * bootstrap-fileinput
- * For more JQuery Plugins visit http://plugins.krajee.com
- */!function(e){var i='{preview}\n<div class="input-group {class}">\n {caption}\n <div class="input-group-btn">\n {remove}\n {upload}\n {browse}\n </div>\n</div>',n="{preview}\n{remove}\n{upload}\n{browse}\n",a='<div class="file-preview {class}">\n <div class="file-preview-status text-center text-success"></div>\n <div class="close fileinput-remove text-right">×</div>\n <div class="file-preview-thumbnails"></div>\n <div class="clearfix"></div></div>',t='<div class="form-control file-caption {class}">\n <span class="glyphicon glyphicon-file"></span> <span class="file-caption-name"></span>\n</div>',l='<div id="{id}" class="modal fade">\n <div class="modal-dialog modal-lg">\n <div class="modal-content">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>\n <h3 class="modal-title">Detailed Preview <small>{title}</small></h3>\n </div>\n <div class="modal-body">\n <textarea class="form-control" style="font-family:Monaco,Consolas,monospace; height: {height}px;" readonly>{body}</textarea>\n </div>\n </div>\n </div>\n</div>\n',r=function(i,n){return null===i||void 0===i||i==[]||""===i||n&&""===e.trim(i)},o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},s=function(i,n,a){return r(i)||r(i[n])?a:e(i[n])},p=function(e,i){return"undefined"!=typeof e?e.match("image.*"):i.match(/\.(gif|png|jpe?g)$/i)},d=function(e,i){return"undefined"!=typeof e?e.match("text.*"):i.match(/\.(txt|md|csv|htm|html|php|ini)$/i)},c=function(){return Math.round((new Date).getTime()+100*Math.random())},v=function(i,n){this.$element=e(i),this.init(n),this.listen()};v.prototype={constructor:v,init:function(a){var t=this;t.showCaption=a.showCaption,t.showPreview=a.showPreview,t.initialPreview=a.initialPreview,t.initialCaption=a.initialCaption,t.showRemove=a.showRemove,t.showUpload=a.showUpload,t.captionClass=a.captionClass,t.previewClass=a.previewClass,t.mainClass=a.mainClass,t.mainTemplate=r(a.mainTemplate)?t.showCaption?i:n:a.mainTemplate,t.previewTemplate=t.showPreview?a.previewTemplate:"",t.captionTemplate=a.captionTemplate,t.browseLabel=a.browseLabel,t.browseIcon=a.browseIcon,t.browseClass=a.browseClass,t.removeLabel=a.removeLabel,t.removeIcon=a.removeIcon,t.removeClass=a.removeClass,t.uploadLabel=a.uploadLabel,t.uploadIcon=a.uploadIcon,t.uploadClass=a.uploadClass,t.uploadUrl=a.uploadUrl,t.msgLoading=a.msgLoading,t.msgProgress=a.msgProgress,t.msgSelected=a.msgSelected,t.previewFileType=a.previewFileType,t.wrapTextLength=a.wrapTextLength,t.wrapIndicator=a.wrapIndicator,t.isDisabled=t.$element.attr("disabled")||t.$element.attr("readonly"),r(t.$element.attr("id"))&&t.$element.attr("id",c()),"undefined"==typeof t.$container?t.$container=t.createContainer():t.refreshContainer(),t.$captionContainer=s(a,"elCaptionContainer",t.$container.find(".file-caption")),t.$caption=s(a,"elCaptionText",t.$container.find(".file-caption-name")),t.$previewContainer=s(a,"elPreviewContainer",t.$container.find(".file-preview")),t.$preview=s(a,"elPreviewImage",t.$container.find(".file-preview-thumbnails")),t.$previewStatus=s(a,"elPreviewStatus",t.$container.find(".file-preview-status")),t.initPreview(),t.$name=t.$element.attr("name")||a.name,t.$hidden=t.$container.find('input[type=hidden][name="'+t.$name+'"]'),0===t.$hidden.length&&(t.$hidden=e('<input type="hidden" />'),t.$container.prepend(t.$hidden)),t.original={preview:t.$preview.html(),caption:t.$caption.html(),hiddenVal:t.$hidden.val()},this.options=a,t.$element.removeClass("file-loading")},listen:function(){var i=this;i.$element.on("change",e.proxy(i.change,i)),e(i.$element[0].form).on("reset",e.proxy(i.reset,i)),i.$container.find(".fileinput-remove").on("click",e.proxy(i.clear,i))},refresh:function(i){var n=this,a=arguments.length?e.extend(n.options,i):n.options;n.init(a)},initPreview:function(){var e=this,i="",n=e.initialPreview,a=e.initialPreview.length,t=e.initialCaption.length,l=t>0?e.initialCaption:a+" file selected";if(o(n)&&a>0){for(var r=0;a>r;r++)i+='<div class="file-preview-frame">'+n[r]+"</div>\n";e.$preview.html(i),a>1&&0==t&&(l=a+" files selected")}else{if(!(a>0))return;i='<div class="file-preview-frame">'+n+"</div>"}e.$preview.html(i),e.$caption.html(l),e.$container.removeClass("file-input-new")},clear:function(e){var i=this;e&&e.preventDefault(),i.$hidden.val(""),i.$hidden.attr("name",i.name),i.$element.attr("name",""),i.$element.val(""),e!==!1&&(i.$element.trigger("change"),i.$element.trigger("fileclear")),i.$preview.html(""),i.$caption.html(""),i.$container.removeClass("file-input-new").addClass("file-input-new")},reset:function(){var e=this;e.clear(!1),e.$hidden.val(e.original.hiddenVal),e.$preview.html(e.original.preview),e.$caption.html(e.original.caption),e.$container.find(".fileinput-filename").text(""),e.$element.trigger("filereset"),e.initialPreview.length>0&&e.$container.removeClass("file-input-new")},change:function(e){var i,n=this,a=n.$element,t=a.get(0).files,r=t?t.length:1,o=a.val().replace(/\\/g,"/").replace(/.*\//,""),s=n.$preview,v=n.$previewContainer,m=n.$previewStatus,f=n.msgLoading,u=n.msgProgress,h=n.msgSelected,w=n.previewFileType,g=parseInt(n.wrapTextLength),b=n.wrapIndicator;if(i=void 0===e.target.files?e.target&&e.target.value?[{name:e.target.value.replace(/^.+\\/,"")}]:[]:e.target.files,0!==i.length){s.html("");for(var $=i.length,n=n,C=0;$>C;C++)!function(e){var i=e.name,n=p(e.type,e.name),a=d(e.type,e.name);if(s.length>0&&("any"==w?n||a:"text"==w?a:n)&&"undefined"!=typeof FileReader){var t=new FileReader;m.html(f),v.addClass("loading"),t.onload=function(e){var n="",t="";if(a){var r=e.target.result;if(r.length>g){var o=c(),p=.75*window.innerHeight,t=l.replace("{id}",o).replace("{title}",i).replace("{body}",r).replace("{height}",p);b=b.replace("{title}",i).replace("{dialog}","$('#"+o+"').modal('show')"),r=r.substring(0,g-1)+b}n='<div class="file-preview-frame"><div class="file-preview-text" title="'+i+'">'+r+"</div></div>"+t}else n='<div class="file-preview-frame"><img src="'+e.target.result+'" class="file-preview-image" title="'+i+'" alt="'+i+'"></div>';s.append("\n"+n),C>=$-1&&(v.removeClass("loading"),m.html(""))},t.onprogress=function(i){if(i.lengthComputable){var n=parseInt(i.loaded/i.total*100,10),a=u.replace("{percent}",n).replace("{file}",e.name);m.html(a)}},a?t.readAsText(e):t.readAsDataURL(e)}else s.append('\n<div class="file-preview-frame"><div class="file-preview-other"><h2><i class="glyphicon glyphicon-file"></i></h2>'+i+"</div></div>")}(i[C]);var y=r>1?h.replace("{n}",r):o;n.$caption.html(y),n.$container.removeClass("file-input-new"),a.trigger("fileselect",[r,o])}},createContainer:function(){var i=this,n=e(document.createElement("div")).attr({"class":"file-input file-input-new"}).html(i.renderMain());return i.$element.before(n),n.find(".btn-file").append(i.$element),n},refreshContainer:function(){var e=this;e.$container.before(e.$element),e.$container.html(e.renderMain()),e.$container.find(".btn-file").append(e.$element)},renderMain:function(){var e=this,i=e.previewTemplate.replace("{class}",e.previewClass),n=e.isDisabled?e.captionClass+" file-caption-disabled":e.captionClass,a=e.captionTemplate.replace("{class}",n);return e.mainTemplate.replace("{class}",e.mainClass).replace("{preview}",i).replace("{caption}",a).replace("{upload}",e.renderUpload()).replace("{remove}",e.renderRemove()).replace("{browse}",e.renderBrowse())},renderBrowse:function(){var e=this,i=e.browseClass+" btn-file",n="";return e.isDisabled&&(n=" disabled "),'<div class="'+i+'"'+n+"> "+e.browseIcon+e.browseLabel+" </div>"},renderRemove:function(){var e=this,i=e.removeClass+" fileinput-remove fileinput-remove-button",n="";return e.showRemove?(e.isDisabled&&(n=" disabled "),'<button type="button" class="'+i+'"'+n+">"+e.removeIcon+e.removeLabel+"</button>"):""},renderUpload:function(){var e=this,i="",n="";return e.showUpload?(e.isDisabled&&(n=" disabled "),i=r(e.uploadUrl)?'<button type="submit" class="'+e.uploadClass+'"'+n+">"+e.uploadIcon+e.uploadLabel+"</button>":'<a href="'+e.uploadUrl+'" class="'+e.uploadClass+'"'+n+">"+e.uploadIcon+e.uploadLabel+"</a>"):""}},e.fn.fileinput=function(i){return this.each(function(){var n=e(this),a=n.data("fileinput");a||n.data("fileinput",a=new v(this,i)),"string"==typeof i&&a[i]()})},e.fn.fileinput=function(i){var n=Array.apply(null,arguments);return n.shift(),this.each(function(){var a=e(this),t=a.data("fileinput"),l="object"==typeof i&&i;t||a.data("fileinput",t=new v(this,e.extend({},e.fn.fileinput.defaults,l,e(this).data()))),"string"==typeof i&&t[i].apply(t,n)})},e.fn.fileinput.defaults={showCaption:!0,showPreview:!0,showRemove:!0,showUpload:!0,captionClass:"",previewClass:"",mainClass:"",mainTemplate:null,initialPreview:"",initialCaption:"",previewTemplate:a,captionTemplate:t,browseLabel:"Browse …",browseIcon:'<i class="glyphicon glyphicon-folder-open"></i> ',browseClass:"btn btn-primary",removeLabel:"Remove",removeIcon:'<i class="glyphicon glyphicon-ban-circle"></i> ',removeClass:"btn btn-default",uploadLabel:"Upload",uploadIcon:'<i class="glyphicon glyphicon-upload"></i> ',uploadClass:"btn btn-default",uploadUrl:null,msgLoading:"Loading …",msgProgress:"Loaded {percent}% of {file}",msgSelected:"{n} files selected",previewFileType:"image",wrapTextLength:250,wrapIndicator:' <span class="wrap-indicator" title="{title}" onclick="{dialog}">[…]</span>',elCaptionContainer:null,elCaptionText:null,elPreviewContainer:null,elPreviewImage:null,elPreviewStatus:null};var m=e("input.file[type=file]"),f=Object.keys(m).length;f>0&&m.addClass("file-loading"),e(document).ready(function(){f>0&&m.fileinput()})}(window.jQuery);
|