You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1247 lines
80 KiB
JavaScript
1247 lines
80 KiB
JavaScript
/* !function(e,t){var a=function(t,a){function i(e){e.preventDefault(),e.stopPropagation();var t=y.offset(),a=t[c],i=v?e.pageY:e.pageX;i>a+z?(z=i-a-A+E,z>j&&(z=j)):(z=i-a-E,0>z&&(z=0)),o.update_scroll()}function n(t){t.preventDefault(),t.stopPropagation(),q=N=v?t.pageY:t.pageX,M=!0,e("html").off("mousemove.ace_scroll").on("mousemove.ace_scroll",s),e(P).off("mouseup.ace_scroll").on("mouseup.ace_scroll",r),y.addClass("active"),H&&o.$element.trigger("drag.start")}function s(e){e.preventDefault(),e.stopPropagation(),q=v?e.pageY:e.pageX,q-N+z>j?q=N+j-z:0>q-N+z&&(q=N-z),z+=q-N,N=q,0>z?z=0:z>j&&(z=j),o.update_scroll()}function r(t){t.preventDefault(),t.stopPropagation(),M=!1,e("html").off(".ace_scroll"),e(P).off(".ace_scroll"),y.removeClass("active"),H&&o.$element.trigger("drag.end")}var o=this,l=e.extend({},e.fn.ace_scroll.defaults,a);this.size=0,this.$element=e(t),this.element=t;var c,d,u,h,f,p,v=!0,g=!1,m=!1,b=!1,_=null,w=null,y=null,x=null,C=null,k=null,$=null,A=0,z=0,j=0,E=0,D=!0,I=!1,T=1,S=!1,M=!1,P="onmouseup"in window?window:"html",H=l.dragEvent||!1,L=a.scrollEvent||!1;this.create=function(t){if(!b){if(t&&(l=e.extend({},e.fn.ace_scroll.defaults,t)),this.size=parseInt(this.$element.attr("data-size"))||l.size||200,v=!l.horizontal,c=v?"top":"left",d=v?"height":"width",u=v?"maxHeight":"maxWidth",h=v?"clientHeight":"clientWidth",f=v?"scrollTop":"scrollLeft",p=v?"scrollHeight":"scrollWidth",this.$element.addClass("ace-scroll "+((v?"":" scroll-hz")+(l.styleClass?" "+l.styleClass:""))),"static"==this.$element.css("position")?(S=this.element.style.position,this.element.style.position="relative"):S=!1,this.$element.wrapInner('<div class="scroll-content" />'),this.$element.prepend('<div class="scroll-track"><div class="scroll-bar"></div></div>'),_=this.$element.find(".scroll-content").eq(0),v||_.wrapInner("<div />"),w=_.get(0),y=this.$element.find(".scroll-track").eq(0),x=y.find(".scroll-bar").eq(0),C=y.get(0),k=x.get(0),$=k.style,y.hide(),y.on("mousedown",i),x.on("mousedown",n),_.on("scroll",function(){D&&(z=parseInt(Math.round(this[f]*T)),$[c]=z+"px"),D=!1,L&&this.$element.trigger("scroll",[w])}),l.mouseWheel){var a=l.mouseWheelLock,s=l.lockAnyway;this.$element.on("mousewheel.ace_scroll DOMMouseScroll.ace_scroll",function(t){if(!g){if(!m)return!s;M&&(M=!1,e("html").off(".ace_scroll"),e(P).off(".ace_scroll"),H&&o.$element.trigger("drag.end"));var i=t.originalEvent.detail<0||t.originalEvent.wheelDelta>0?1:-1,n=!1,r=w[h],l=w[f];a||(n=-1==i?w[p]<=l+r:0==l),o.move_bar(!0);var c=parseInt(Math.round(Math.min(Math.max(r/8,54)),o.size))+1;return w[f]=l-i*c,n&&!s}})}var r=ace.vars.touch&&"ace_drag"in e.event.special&&l.touchDrag;if(r){var A="",j=r?"ace_drag":"swipe";this.$element.on(j+".ace_scroll",function(e){if(g)return void(e.retval.cancel=!0);if(!m)return void(e.retval.cancel=s);if(A=e.direction,v&&("up"==A||"down"==A)||!v&&("left"==A||"right"==A)){var t=v?e.dy:e.dx;0!=t&&(Math.abs(t)>20&&r&&(t=2*t),o.move_bar(!0),w[f]=w[f]+t)}})}l.hoverReset&&this.$element.on("mouseenter.ace_scroll touchstart.ace_scroll",function(){o.reset()}),v||_.children(0).css(d,this.size),_.css(u,this.size),g=!1,b=!0}},this.is_active=function(){return m},this.is_enabled=function(){return!g},this.move_bar=function(e){D=e},this.reset=function(){if(!g){b||this.create();var e=v?w[p]:this.size;if(v&&0==e||!v&&0==this.element.scrollWidth)return void this.$element.removeClass("scroll-active");var t=v?this.size:w.clientWidth;v||_.children(0).css(d,this.size),_.css(u,this.size),e>t?(m=!0,y.css(d,t).show(),T=parseFloat((t/e).toFixed(5)),A=parseInt(Math.round(t*T)),E=parseInt(Math.round(A/2)),j=t-A,z=parseInt(Math.round(w[f]*T)),$[d]=A+"px",$[c]=z+"px",this.$element.addClass("scroll-active"),I||(l.reset&&(w[f]=0,$[c]=0),I=!0)):(m=!1,y.hide(),this.$element.removeClass("scroll-active"),_.css(u,""))}},this.disable=function(){return w[f]=0,$[c]=0,g=!0,m=!1,y.hide(),this.$element.removeClass("scroll-active"),_.css(u,""),this},this.enable=function(){return g=!1,this.reset(),this},this.destroy=function(){return m=!1,g=!1,b=!1,this.$element.removeClass("ace-scroll scroll-hz"+(l.extraClass?" "+l.extraClass:"")),this.$element.off(".ace_scroll"),v||_.find("> div").children().unwrap(),_.children().unwrap(),_.remove(),y.remove(),S!==!1&&(this.element.style.position=S),this},this.modify=function(t){return t&&(l=e.extend({},e.fn.ace_scroll.defaults,t)),this.destroy(),this.create(),this.reset(),this},this.update=function(e){return this.size=e.size,this},this.update_scroll=function(){D=!1,$[c]=z+"px",w[f]=parseInt(Math.round(z/T))};var N=-1,q=-1;return this.create(),this.reset(),this};e.fn.ace_scroll=function(i,n){var s,r=this.each(function(){var t=e(this),r=t.data("ace_scroll"),o="object"==typeof i&&i;r||t.data("ace_scroll",r=new a(this,o)),"string"==typeof i&&(s=r[i](n))});return s===t?r:s},e.fn.ace_scroll.defaults={size:200,horizontal:!1,mouseWheel:!0,mouseWheelLock:!1,lockAnyway:!1,styleClass:!1,hoverReset:!0,reset:!1,dragEvent:!1,touchDrag:!0,touchSwipe:!1,scrollEvent:!1}}(window.jQuery),function(e,t){var a=function(t,a){var i=e.extend({},e.fn.ace_colorpicker.defaults,a),n=e(t),s="",r="",o=null,l=[];n.addClass("hide").find("option").each(function(){var e="colorpick-btn",t=this.value.replace(/[^\w\s,#\(\)\.]/g,"");this.value!=t&&(this.value=t),this.selected&&(e+=" selected",r=t),l.push(t),s+='<li><a class="'+e+'" href="#" style="background-color:'+t+';" data-color="'+t+'"></a></li>'}).end().on("change.color",function(){n.next().find(".btn-colorpicker").css("background-color",this.value)}).after('<div class="dropdown dropdown-colorpicker"> <a data-toggle="dropdown" class="dropdown-toggle" '+(i.auto_pos?'data-position="auto"':"")+' href="#"><span class="btn-colorpicker" style="background-color:'+r+'"></span></a><ul class="dropdown-menu'+(i.caret?" dropdown-caret":"")+(i.pull_right?" dropdown-menu-right":"")+'">'+s+"</ul></div>");var c=n.next().find(".dropdown-menu");c.on(ace.click_event,function(t){var a=e(t.target);if(!a.is(".colorpick-btn"))return!1;o&&o.removeClass("selected"),o=a,o.addClass("selected");var i=o.data("color");return n.val(i).trigger("change"),t.preventDefault(),!0}),o=n.next().find("a.selected"),this.pick=function(a,i){if("number"==typeof a){if(a>=l.length)return;t.selectedIndex=a,c.find("a:eq("+a+")").trigger(ace.click_event)}else if("string"==typeof a){var s=a.replace(/[^\w\s,#\(\)\.]/g,"");if(a=l.indexOf(s),-1==a&&i===!0&&(l.push(s),e("<option />").appendTo(n).val(s),e('<li><a class="colorpick-btn" href="#"></a></li>').appendTo(c).find("a").css("background-color",s).data("color",s),a=l.length-1),-1==a)return;c.find("a:eq("+a+")").trigger(ace.click_event)}},this.destroy=function(){n.removeClass("hide").off("change.color").next().remove(),l=[]}};e.fn.ace_colorpicker=function(i,n){var s,r=this.each(function(){var t=e(this),r=t.data("ace_colorpicker"),o="object"==typeof i&&i;r||t.data("ace_colorpicker",r=new a(this,o)),"string"==typeof i&&(s=r[i](n))});return s===t?r:s},e.fn.ace_colorpicker.defaults={pull_right:!1,caret:!0,auto_pos:!0}}(window.jQuery),function(e,t){var a="multiple"in document.createElement("INPUT"),i="FileList"in window,n="FileReader"in window,s="File"in window,r=function(t,a){var i=this;this.settings=e.extend({},e.fn.ace_file_input.defaults,a),this.$element=e(t),this.element=t,this.disabled=!1,this.can_reset=!0,this.$element.off("change.ace_inner_call").on("change.ace_inner_call",function(e,t){return i.disabled||t===!0?void 0:l.call(i)});var n=this.$element.closest("label").css({display:"block"}),s=0==n.length?"label":"span";this.$element.wrap("<"+s+' class="ace-file-input" />'),this.apply_settings(),this.reset_input_field()};r.error={FILE_LOAD_FAILED:1,IMAGE_LOAD_FAILED:2,THUMBNAIL_FAILED:3},r.prototype.apply_settings=function(){var t=this;this.multi=this.$element.attr("multiple")&&a,this.well_style="well"==this.settings.style,this.well_style?this.$element.parent().addClass("ace-file-multiple"):this.$element.parent().removeClass("ace-file-multiple"),this.$element.parent().find(":not(input[type=file])").remove(),this.$element.after('<span class="ace-file-container" data-title="'+this.settings.btn_choose+'"><span class="ace-file-name" data-title="'+this.settings.no_file+'">'+(this.settings.no_icon?'<i class="'+ace.vars.icon+this.settings.no_icon+'"></i>':"")+"</span></span>"),this.$label=this.$element.next(),this.$container=this.$element.closest(".ace-file-input");var n=!!this.settings.icon_remove;if(n){var s=e('<a class="remove" href="#"><i class="'+ace.vars.icon+this.settings.icon_remove+'"></i></a>').appendTo(this.$element.parent());s.on(ace.click_event,function(e){if(e.preventDefault(),!t.can_reset)return!1;var a=!0;if(t.settings.before_remove&&(a=t.settings.before_remove.call(t.element)),!a)return!1;t.reset_input();return!1})}this.settings.droppable&&i&&o.call(this)},r.prototype.show_file_list=function(t){var a="undefined"==typeof t?this.$element.data("ace_input_files"):t;if(a&&0!=a.length){this.well_style&&(this.$label.find(".ace-file-name").remove(),this.settings.btn_change||this.$label.addClass("hide-placeholder")),this.$label.attr("data-title",this.settings.btn_change).addClass("selected");for(var i=0;i<a.length;i++){var s="string"==typeof a[i]?a[i]:e.trim(a[i].name),r=s.lastIndexOf("\\")+1;0==r&&(r=s.lastIndexOf("/")+1),s=s.substr(r);var o="fa fa-file",l="file";if(/\.(jpe?g|png|gif|svg|bmp|tiff?)$/i.test(s)?(o="fa fa-picture-o file-image",l="image"):/\.(mpe?g|flv|mov|avi|swf|mp4|mkv|webm|wmv|3gp)$/i.test(s)?(o="fa fa-film file-video",l="video"):/\.(mp3|ogg|wav|wma|amr|aac)$/i.test(s)&&(o="fa fa-music file-audio",l="audio"),this.well_style){this.$label.append('<span class="ace-file-name" data-title="'+s+'"><i class="'+ace.vars.icon+o+'"></i></span>');var d=e.trim(a[i].type),u=n&&this.settings.thumbnail&&(d.length>0&&d.match("image")||0==d.length&&"image"==l);if(u){var h=this;e.when(c.call(this,a[i])).fail(function(e){h.settings.preview_error&&h.settings.preview_error.call(h,s,e.code)})}}else this.$label.find(".ace-file-name").attr({"data-title":s}).find(ace.vars[".icon"]).attr("class",ace.vars.icon+o)}return!0}},r.prototype.reset_input=function(){this.reset_input_ui(),this.reset_input_field()},r.prototype.reset_input_ui=function(){this.$label.attr({"data-title":this.settings.btn_choose,"class":"ace-file-container"}).find(".ace-file-name:first").attr({"data-title":this.settings.no_file,"class":"ace-file-name"}).find(ace.vars[".icon"]).attr("class",ace.vars.icon+this.settings.no_icon).prev("img").remove(),this.settings.no_icon||this.$label.find(ace.vars[".icon"]).remove(),this.$label.find(".ace-file-name").not(":first").remove(),this.reset_input_data()},r.prototype.reset_input_field=function(){this.$element.wrap("<form>").parent().get(0).reset(),this.$element.unwrap()},r.prototype.reset_input_data=function(){this.$element.data("ace_input_files")&&(this.$element.removeData("ace_input_files"),this.$element.removeData("ace_input_method"))},r.prototype.enable_reset=function(e){this.can_reset=e},r.prototype.disable=function(){this.disabled=!0,this.$element.attr("disabled","disabled").addClass("disabled")},r.prototype.enable=function(){this.disabled=!1,this.$element.removeAttr("disabled").removeClass("disabled")},r.prototype.files=function(){return e(this).data("ace_input_files")||null},r.prototype.method=function(){return e(this).data("ace_input_method")||""},r.prototype.update_settings=function(t){this.settings=e.extend({},this.settings,t),this.apply_settings()},r.prototype.loading=function(t){if(t===!1)this.$container.find(".ace-file-overlay").remove(),this.element.removeAttribute("readonly");else{var a="string"==typeof t?t:'<i class="overlay-content fa fa-spin fa-spinner orange2 fa-2x"></i>',i=this.$container.find(".ace-file-overlay");0==i.length&&(i=e('<div class="ace-file-overlay"></div>').appendTo(this.$container),i.on("click tap",function(e){return e.stopImmediatePropagation(),e.preventDefault(),!1}),this.element.setAttribute("readonly","true")),i.empty().append(a)}};var o=function(){var e=this,t=this.$element.parent();t.off("dragenter").on("dragenter",function(e){e.preventDefault(),e.stopPropagation()}).off("dragover").on("dragover",function(e){e.preventDefault(),e.stopPropagation()}).off("drop").on("drop",function(t){if(t.preventDefault(),t.stopPropagation(),!e.disabled){var a=t.originalEvent.dataTransfer,i=a.files;if(!e.multi&&i.length>1){var n=[];n.push(i[0]),i=n}return i=u.call(e,i,!0),i===!1?!1:(e.$element.data("ace_input_method","drop"),e.$element.data("ace_input_files",i),e.show_file_list(i),e.$element.triggerHandler("change",[!0]),!0)}})},l=function(){var e=this.element.files||[this.element.value];return e=u.call(this,e,!1),e===!1?!1:(this.$element.data("ace_input_method","select"),this.$element.data("ace_input_files",e),this.show_file_list(e),!0)},c=function(t){var a=this,i=a.$label.find(".ace-file-name:last"),n=new e.Deferred,s=new FileReader;return s.onload=function(s){i.prepend("<img class='middle' style='display:none;' />");var o=i.find("img:last").get(0);e(o).one("load",function(){var s=50;"large"==a.settings.thumbnail?s=150:"fit"==a.settings.thumbnail&&(s=i.width()),i.addClass(s>50?"large":"");var l=d(o,s,t.type);if(null==l)return e(this).remove(),void n.reject({code:r.error.THUMBNAIL_FAILED});var c=l.w,u=l.h;"small"==a.settings.thumbnail&&(c=u=s),e(o).css({"background-image":"url("+l.src+")",width:c,height:u}).data("thumb",l.src).attr({src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="}).show(),n.resolve()}).one("error",function(){i.find("img").remove(),n.reject({code:r.error.IMAGE_LOAD_FAILED})}),o.src=s.target.result},s.onerror=function(){n.reject({code:r.error.FILE_LOAD_FAILED})},s.readAsDataURL(t),n.promise()},d=function(t,a){var i=t.width,n=t.height;i=i>0?i:e(t).width(),n=n>0?n:e(t).height(),(i>a||n>a)&&(i>n?(n=parseInt(a/i*n),i=a):(i=parseInt(a/n*i),n=a));var s;try{var r=document.createElement("canvas");r.width=i,r.height=n;var o=r.getContext("2d");o.drawImage(t,0,0,t.width,t.height,0,0,i,n),s=r.toDataURL()}catch(l){s=null}return s?(/^data\:image\/(png|jpe?g|gif);base64,[0-9A-Za-z\+\/\=]+$/.test(s)||(s=null),s?{src:s,w:i,h:n}:null):null},u=function(e,t){var a=p.call(this,e,t);return-1===a?(this.reset_input(),!1):a&&0!=a.length?((a instanceof Array||i&&a instanceof FileList)&&(e=a),a=!0,this.settings.before_change&&(a=this.settings.before_change.call(this.element,e,t)),-1===a?(this.reset_input(),!1):a&&0!=a.length?((a instanceof Array||i&&a instanceof FileList)&&(e=a),e):(this.$element.data("ace_input_files")||this.reset_input(),!1)):(this.$element.data("ace_input_files")||this.reset_input(),!1)},h=function(e){return e?("string"==typeof e&&(e=[e]),0==e.length?null:new RegExp(".(?:"+e.join("|")+")$","i")):null},f=function(e){return e?("string"==typeof e&&(e=[e]),0==e.length?null:new RegExp("^(?:"+e.join("|").replace(/\//g,"\\/")+")$","i")):null},p=function(t,a){var i=h(this.settings.allowExt),n=h(this.settings.denyExt),r=f(this.settings.allowMime),o=f(this.settings.denyMime),l=this.settings.maxSize||!1;if(!(i||n||r||o||l))return!0;for(var c=[],d={},u=0;u<t.length;u++){var p=t[u],v=s?p.name:p;if(!i||i.test(v))if(n&&n.test(v))"ext"in d||(d.ext=[]),d.ext.push(v);else{var g;if(s){if((g=e.trim(p.type)).length>0){if(r&&!r.test(g)){"mime"in d||(d.mime=[]),d.mime.push(v);continue}if(o&&o.test(g)){"mime"in d||(d.mime=[]),d.mime.push(v);continue}}l&&p.size>l?("size"in d||(d.size=[]),d.size.push(v)):c.push(p)}else c.push(p)}else"ext"in d||(d.ext=[]),d.ext.push(v)}if(c.length==t.length)return t;var m={ext:0,mime:0,size:0};"ext"in d&&(m.ext=d.ext.length),"mime"in d&&(m.mime=d.mime.length),"size"in d&&(m.size=d.size.length);var b;return this.$element.trigger(b=new e.Event("file.error.ace"),{file_count:t.length,invalid_count:t.length-c.length,error_list:d,error_count:m,dropped:a}),b.isDefaultPrevented()?-1:c};e.fn.ace_file_input=function(a,i){var n,s=this.each(function(){var t=e(this),s=t.data("ace_file_input"),o="object"==typeof a&&a;s||t.data("ace_file_input",s=new r(this,o)),"string"==typeof a&&(n=s[a](i))});return n===t?s:n},e.fn.ace_file_input.defaults={style:!1,no_file:"No File ...",no_icon:"fa fa-upload",btn_choose:"Choose",btn_change:"Change",icon_remove:"fa fa-times",droppable:!1,thumbnail:!1,allowExt:null,denyExt:null,allowMime:null,denyMime:null,maxSize:!1,before_change:null,before_remove:null,preview_error:null}}(window.jQuery),!function(e){"use strict";var t=function(t,a){this.$element=e(t),this.options=e.extend({},e.fn.bs_typeahead.defaults,a),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(){var t;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(t=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,t?this.process(t):this)},process:function(t){var a=this;return t=e.grep(t,function(e){return a.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){for(var t,a=[],i=[],n=[];t=e.shift();)t.toLowerCase().indexOf(this.query.toLowerCase())?~t.indexOf(this.query)?i.push(t):n.push(t):a.push(t);return a.concat(i,n)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var a=this;return t=e(t).map(function(t,i){return t=e(a.options.item).attr("data-value",i),t.find("a").html(a.highlighter(i)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(){var t=this.$menu.find(".active").removeClass("active"),a=t.next();a.length||(a=e(this.$menu.find("li")[0])),a.addClass("active")},prev:function(){var e=this.$menu.find(".active").removeClass("active"),t=e.prev();t.length||(t=this.$menu.find("li").last()),t.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t="function"==typeof this.$element[e]),t},move:function(e){if(this.shown){switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()}},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){this.suppressKeyPressRepeat||this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(){this.focused=!0},blur:function(){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var a=e.fn.bs_typeahead;e.fn.bs_typeahead=function(a){return this.each(function(){var i=e(this),n=i.data("bs_typeahead"),s="object"==typeof a&&a;n||i.data("bs_typeahead",n=new t(this,s)),"string"==typeof a&&n[a]()})},e.fn.bs_typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.bs_typeahead.Constructor=t,e.fn.bs_typeahead.noConflict=function(){return e.fn.bs_typeahead=a,this},e(document).on("focus.bs_typeahead.data-api",'[data-provide="bs_typeahead"]',function(){var t=e(this);t.data("bs_typeahead")||t.bs_typeahead(t.data())})}(window.jQuery),function(e){e.fn.ace_wysiwyg=function(t){var a=e.extend({speech_button:!0,wysiwyg:{}},t),i=["#ac725e","#d06b64","#f83a22","#fa573c","#ff7537","#ffad46","#42d692","#16a765","#7bd148","#b3dc6c","#fbe983","#fad165","#92e1c0","#9fe1e7","#9fc6e7","#4986e7","#9a9cff","#b99aff","#c2c2c2","#cabdbf","#cca6ac","#f691b2","#cd74e6","#a47ae2","#444444"],n={font:{values:["Arial","Courier","Comic Sans MS","Helvetica","Open Sans","Tahoma","Verdana"],icon:"fa fa-font",title:"Font"},fontSize:{values:{5:"Huge",3:"Normal",1:"Small"},icon:"fa fa-text-height",title:"Font Size"},bold:{icon:"fa fa-bold",title:"Bold (Ctrl/Cmd+B)"},italic:{icon:"fa fa-italic",title:"Italic (Ctrl/Cmd+I)"},strikethrough:{icon:"fa fa-strikethrough",title:"Strikethrough"},underline:{icon:"fa fa-underline",title:"Underline"},insertunorderedlist:{icon:"fa fa-list-ul",title:"Bullet list"},insertorderedlist:{icon:"fa fa-list-ol",title:"Number list"},outdent:{icon:"fa fa-outdent",title:"Reduce indent (Shift+Tab)"},indent:{icon:"fa fa-indent",title:"Indent (Tab)"},justifyleft:{icon:"fa fa-align-left",title:"Align Left (Ctrl/Cmd+L)"},justifycenter:{icon:"fa fa-align-center",title:"Center (Ctrl/Cmd+E)"},justifyright:{icon:"fa fa-align-right",title:"Align Right (Ctrl/Cmd+R)"},justifyfull:{icon:"fa fa-align-justify",title:"Justify (Ctrl/Cmd+J)"},createLink:{icon:"fa fa-link",title:"Hyperlink",button_text:"Add",placeholder:"URL",button_class:"btn-primary"},unlink:{icon:"fa fa-chain-broken",title:"Remove Hyperlink"},insertImage:{icon:"fa fa-picture-o",title:"Insert picture",button_text:'<i class="'+ace.vars.icon+'fa fa-file"></i> Choose Image …',placeholder:"Image URL",button_insert:"Insert",button_class:"btn-success",button_insert_class:"btn-primary",choose_file:!0},foreColor:{values:i,title:"Change Color"},backColor:{values:i,title:"Change Background Color"},undo:{icon:"fa fa-undo",title:"Undo (Ctrl/Cmd+Z)"},redo:{icon:"fa fa-repeat",title:"Redo (Ctrl/Cmd+Y)"},viewSource:{icon:"fa fa-code",title:"View Source"}},s=a.toolbar||["font",null,"fontSize",null,"bold","italic","strikethrough","underline",null,"insertunorderedlist","insertorderedlist","outdent","indent",null,"justifyleft","justifycenter","justifyright","justifyfull",null,"createLink","unlink",null,"insertImage",null,"foreColor",null,"undo","redo",null,"viewSource"];return this.each(function(){var t=' <div class="wysiwyg-toolbar btn-toolbar center"> <div class="btn-group"> ';for(var i in s)if(s.hasOwnProperty(i)){var r=s[i];if(null===r){t+=' </div> <div class="btn-group"> ';continue}if("string"==typeof r&&r in n)r=n[r],r.name=s[i];else{if(!("object"==typeof r&&r.name in n))continue;r=e.extend(n[r.name],r)}var o="className"in r?r.className:"btn-default";switch(r.name){case"font":t+=' <a class="btn btn-sm '+o+' dropdown-toggle" data-toggle="dropdown" title="'+r.title+'"><i class="'+ace.vars.icon+r.icon+'"></i><i class="'+ace.vars.icon+'fa fa-angle-down icon-on-right"></i></a> ',t+=' <ul class="dropdown-menu dropdown-light dropdown-caret">';for(var l in r.values)r.values.hasOwnProperty(l)&&(t+=' <li><a data-edit="fontName '+r.values[l]+'" style="font-family:\''+r.values[l]+"'\">"+r.values[l]+"</a></li> ");t+=" </ul>";break;case"fontSize":t+=' <a class="btn btn-sm '+o+' dropdown-toggle" data-toggle="dropdown" title="'+r.title+'"><i class="'+ace.vars.icon+r.icon+'"></i> <i class="'+ace.vars.icon+'fa fa-angle-down icon-on-right"></i></a> ',t+=' <ul class="dropdown-menu dropdown-light dropdown-caret"> ';for(var c in r.values)r.values.hasOwnProperty(c)&&(t+=' <li><a data-edit="fontSize '+c+'"><font size="'+c+'">'+r.values[c]+"</font></a></li> ");t+=" </ul> ";break;case"createLink":t+=' <div class="btn-group"> <a class="btn btn-sm '+o+' dropdown-toggle" data-toggle="dropdown" title="'+r.title+'"><i class="'+ace.vars.icon+r.icon+'"></i></a> ',t+=' <div class="dropdown-menu dropdown-caret dropdown-menu-right"> <div class="input-group"> <input class="form-control" placeholder="'+r.placeholder+'" type="text" data-edit="'+r.name+'" /> <span class="input-group-btn"> <button class="btn btn-sm '+r.button_class+'" type="button">'+r.button_text+"</button> </span> </div> </div> </div>";break;case"insertImage":t+=' <div class="btn-group"> <a class="btn btn-sm '+o+' dropdown-toggle" data-toggle="dropdown" title="'+r.title+'"><i class="'+ace.vars.icon+r.icon+'"></i></a> ',t+=' <div class="dropdown-menu dropdown-caret dropdown-menu-right"> <div class="input-group"> <input class="form-control" placeholder="'+r.placeholder+'" type="text" data-edit="'+r.name+'" /> <span class="input-group-btn"> <button class="btn btn-sm '+r.button_insert_class+'" type="button">'+r.button_insert+"</button> </span> </div>",r.choose_file&&"FileReader"in window&&(t+='<div class="space-2"></div> <label class="center block no-margin-bottom"> <button class="btn btn-sm '+r.button_class+' wysiwyg-choose-file" type="button">'+r.button_text+'</button> <input type="file" data-edit="'+r.name+'" /> </label>'),t+=" </div> </div>";break;case"foreColor":case"backColor":t+=' <select class="hide wysiwyg_colorpicker" title="'+r.title+'"> ';for(var d in r.values)t+=' <option value="'+r.values[d]+'">'+r.values[d]+"</option> ";t+=" </select> ",t+=' <input style="display:none;" disabled class="hide" type="text" data-edit="'+r.name+'" /> ';break;case"viewSource":t+=' <a class="btn btn-sm '+o+'" data-view="source" title="'+r.title+'"><i class="'+ace.vars.icon+r.icon+'"></i></a> ';break;default:t+=' <a class="btn btn-sm '+o+'" data-edit="'+r.name+'" title="'+r.title+'"><i class="'+ace.vars.icon+r.icon+'"></i></a> '}}t+=" </div> ";var u;a.speech_button&&"onwebkitspeechchange"in(u=document.createElement("input"))&&(t+=' <input class="wysiwyg-speech-input" type="text" data-edit="inserttext" x-webkit-speech />'),u=null,t+=" </div> ",t=a.toolbar_place?a.toolbar_place.call(this,t):e(this).before(t).prev(),t.find("a[title]").tooltip({animation:!1,container:"body"}),t.find(".dropdown-menu input[type=text]").on("click",function(){return!1}).on("change",function(){e(this).closest(".dropdown-menu").siblings(".dropdown-toggle").dropdown("toggle")}).on("keydown",function(t){27==t.which?(this.value="",e(this).change()):13==t.which&&(t.preventDefault(),t.stopPropagation(),e(this).change())}),t.find("input[type=file]").prev().on(ace.click_event,function(){e(this).next().click()}),t.find(".wysiwyg_colorpicker").each(function(){e(this).ace_colorpicker({pull_right:!0}).change(function(){e(this).nextAll("input").eq(0).val(this.value).change()}).next().find(".btn-colorpicker").tooltip({title:this.title,animation:!1,container:"body"})});var h=e(this),f=!1;t.find("a[data-view=source]").on("click",function(t){if(t.preventDefault(),f){var a=h.next();h.html(a.val()).show(),a.remove(),e(this).removeClass("active")}else e("<textarea />").css({width:h.outerWidth(),height:h.outerHeight()}).val(h.html()).insertAfter(h),h.hide(),e(this).addClass("active");f=!f});var p=e.extend({},{activeToolbarClass:"active",toolbarSelector:t},a.wysiwyg||{});e(this).wysiwyg(p)}),this}}(window.jQuery),function(e,t){function a(t,a){var i=a.max;i=(""+i).length;var n=parseInt(Math.max(20*i+40,90)),s=e(t);s.addClass("spinner-input form-control").wrap('<div class="ace-spinner">');var r=s.closest(".ace-spinner").spinner(a).wrapInner("<div class='input-group'></div>"),o=r.data("spinner");a.on_sides?(s.before('<div class="spinner-buttons input-group-btn"> <button type="button" class="btn spinner-down btn-xs '+a.btn_down_class+'"> <i class="'+ace.vars.icon+a.icon_down+'"></i> </button> </div>').after('<div class="spinner-buttons input-group-btn"> <button type="button" class="btn spinner-up btn-xs '+a.btn_up_class+'"> <i class="'+ace.vars.icon+a.icon_up+'"></i> </button> </div>'),r.addClass("touch-spinner"),r.css("width",n+"px")):(s.after('<div class="spinner-buttons input-group-btn"> <button type="button" class="btn spinner-up btn-xs '+a.btn_up_class+'"> <i class="'+ace.vars.icon+a.icon_up+'"></i> </button> <button type="button" class="btn spinner-down btn-xs '+a.btn_down_class+'"> <i class="'+ace.vars.icon+a.icon_down+'"></i> </button> </div>'),ace.vars.touch||a.touch_spinner?(r.addClass("touch-spinner"),r.css("width",n+"px")):(s.next().addClass("btn-group-vertical"),r.css("width",n+"px"))),s.on("mousewheel.spinner DOMMouseScroll.spinner",function(e){var t=e.originalEvent.detail<0||e.originalEvent.wheelDelta>0?1:-1;return o.step(t>0),o.triggerChangedEvent(),!1}),r.on("changed",function(){s.trigger("change")}),this._call=function(e,t){o[e](t)}}e.fn.ace_spinner=function(i,n){var s,r=this.each(function(){var t=e(this),r=t.data("ace_spinner"),o="object"==typeof i&&i;r||(o=e.extend({},e.fn.ace_spinner.defaults,i),t.data("ace_spinner",r=new a(this,o))),"string"==typeof i&&(s=r._call(i,n))});return s===t?r:s},e.fn.ace_spinner.defaults={icon_up:"fa fa-chevron-up",icon_down:"fa fa-chevron-down",on_sides:!1,btn_up_class:"",btn_down_class:"",max:999,touch_spinner:!1}}(window.jQuery),function(e){var t={"open-icon":ace.vars.icon+"fa fa-folder-open","close-icon":ace.vars.icon+"fa fa-folder",selectable:!0,"selected-icon":ace.vars.icon+"fa fa-check","unselected-icon":ace.vars.icon+"fa fa-times"};e.fn.ace_tree=function(a){return t=e.extend({},t,a),this.each(function(){var a=e(this);a.html('<div class="tree-folder" style="display:none;"> <div class="tree-folder-header"> <i class="'+ace.vars.icon+t["close-icon"]+'"></i> <div class="tree-folder-name"></div> </div> <div class="tree-folder-content"></div> <div class="tree-loader" style="display:none"></div> </div> <div class="tree-item" style="display:none;"> '+(null==t["unselected-icon"]?"":'<i class="'+ace.vars.icon+t["unselected-icon"]+'"></i>')+' <div class="tree-item-name"></div> </div>'),a.addClass(1==t.selectable?"tree-selectable":"tree-unselectable"),a.tree(t)}),this}}(window.jQuery),function(e){e.fn.ace_wizard=function(t){return this.each(function(){var a=e(this);a.wizard();var i=a.siblings(".wizard-actions").eq(0),n=a.data("wizard");n.$prevBtn.remove(),n.$nextBtn.remove(),n.$prevBtn=i.find(".btn-prev").eq(0).on(ace.click_event,function(){n.previous()}).attr("disabled","disabled"),n.$nextBtn=i.find(".btn-next").eq(0).on(ace.click_event,function(){n.next()}).removeAttr("disabled"),n.nextText=n.$nextBtn.text();var s=t&&(t.selectedItem&&t.selectedItem.step||t.step);s&&(n.currentStep=s,n.setState())}),this}}(window.jQuery);
|
|
*/
|
|
!function(e, t) {
|
|
var a = function(t, a) {
|
|
function i(e) {
|
|
e.preventDefault(),
|
|
e.stopPropagation();
|
|
var t = y.offset()
|
|
, a = t[c]
|
|
, i = v ? e.pageY : e.pageX;
|
|
i > a + z ? (z = i - a - A + E,
|
|
z > j && (z = j)) : (z = i - a - E,
|
|
0 > z && (z = 0)),
|
|
o.update_scroll()
|
|
}
|
|
function n(t) {
|
|
t.preventDefault(),
|
|
t.stopPropagation(),
|
|
q = N = v ? t.pageY : t.pageX,
|
|
M = !0,
|
|
e("html").off("mousemove.ace_scroll").on("mousemove.ace_scroll", s),
|
|
e(P).off("mouseup.ace_scroll").on("mouseup.ace_scroll", r),
|
|
y.addClass("active"),
|
|
H && o.$element.trigger("drag.start")
|
|
}
|
|
function s(e) {
|
|
e.preventDefault(),
|
|
e.stopPropagation(),
|
|
q = v ? e.pageY : e.pageX,
|
|
q - N + z > j ? q = N + j - z : 0 > q - N + z && (q = N - z),
|
|
z += q - N,
|
|
N = q,
|
|
0 > z ? z = 0 : z > j && (z = j),
|
|
o.update_scroll()
|
|
}
|
|
function r(t) {
|
|
t.preventDefault(),
|
|
t.stopPropagation(),
|
|
M = !1,
|
|
e("html").off(".ace_scroll"),
|
|
e(P).off(".ace_scroll"),
|
|
y.removeClass("active"),
|
|
H && o.$element.trigger("drag.end")
|
|
}
|
|
var o = this
|
|
, l = e.extend({}, e.fn.ace_scroll.defaults, a);
|
|
this.size = 0,
|
|
this.$element = e(t),
|
|
this.element = t;
|
|
var c, d, u, h, f, p, v = !0, g = !1, m = !1, b = !1, _ = null , w = null , y = null , x = null , C = null , k = null , $ = null , A = 0, z = 0, j = 0, E = 0, D = !0, I = !1, T = 1, S = !1, M = !1, P = "onmouseup" in window ? window : "html", H = l.dragEvent || !1, L = a.scrollEvent || !1;
|
|
this.create = function(t) {
|
|
if (!b) {
|
|
if (t && (l = e.extend({}, e.fn.ace_scroll.defaults, t)),
|
|
this.size = parseInt(this.$element.attr("data-size")) || l.size || 200,
|
|
v = !l.horizontal,
|
|
c = v ? "top" : "left",
|
|
d = v ? "height" : "width",
|
|
u = v ? "maxHeight" : "maxWidth",
|
|
h = v ? "clientHeight" : "clientWidth",
|
|
f = v ? "scrollTop" : "scrollLeft",
|
|
p = v ? "scrollHeight" : "scrollWidth",
|
|
this.$element.addClass("ace-scroll " + ((v ? "" : " scroll-hz") + (l.styleClass ? " " + l.styleClass : ""))),
|
|
"static" == this.$element.css("position") ? (S = this.element.style.position,
|
|
this.element.style.position = "relative") : S = !1,
|
|
this.$element.wrapInner('<div class="scroll-content" />'),
|
|
this.$element.prepend('<div class="scroll-track"><div class="scroll-bar"></div></div>'),
|
|
_ = this.$element.find(".scroll-content").eq(0),
|
|
v || _.wrapInner("<div />"),
|
|
w = _.get(0),
|
|
y = this.$element.find(".scroll-track").eq(0),
|
|
x = y.find(".scroll-bar").eq(0),
|
|
C = y.get(0),
|
|
k = x.get(0),
|
|
$ = k.style,
|
|
y.hide(),
|
|
y.on("mousedown", i),
|
|
x.on("mousedown", n),
|
|
_.on("scroll", function() {
|
|
D && (z = parseInt(Math.round(this[f] * T)),
|
|
$[c] = z + "px"),
|
|
D = !1,
|
|
L && this.$element.trigger("scroll", [w])
|
|
}),
|
|
l.mouseWheel) {
|
|
var a = l.mouseWheelLock
|
|
, s = l.lockAnyway;
|
|
this.$element.on("mousewheel.ace_scroll DOMMouseScroll.ace_scroll", function(t) {
|
|
if (!g) {
|
|
if (!m)
|
|
return !s;
|
|
M && (M = !1,
|
|
e("html").off(".ace_scroll"),
|
|
e(P).off(".ace_scroll"),
|
|
H && o.$element.trigger("drag.end"));
|
|
var i = t.originalEvent.detail < 0 || t.originalEvent.wheelDelta > 0 ? 1 : -1
|
|
, n = !1
|
|
, r = w[h]
|
|
, l = w[f];
|
|
a || (n = -1 == i ? w[p] <= l + r : 0 == l),
|
|
o.move_bar(!0);
|
|
var c = parseInt(Math.round(Math.min(Math.max(r / 8, 54)), o.size)) + 1;
|
|
return w[f] = l - i * c,
|
|
n && !s
|
|
}
|
|
})
|
|
}
|
|
var r = ace.vars.touch && "ace_drag" in e.event.special && l.touchDrag;
|
|
if (r) {
|
|
var A = ""
|
|
, j = r ? "ace_drag" : "swipe";
|
|
this.$element.on(j + ".ace_scroll", function(e) {
|
|
if (g)
|
|
return void (e.retval.cancel = !0);
|
|
if (!m)
|
|
return void (e.retval.cancel = s);
|
|
if (A = e.direction,
|
|
v && ("up" == A || "down" == A) || !v && ("left" == A || "right" == A)) {
|
|
var t = v ? e.dy : e.dx;
|
|
0 != t && (Math.abs(t) > 20 && r && (t = 2 * t),
|
|
o.move_bar(!0),
|
|
w[f] = w[f] + t)
|
|
}
|
|
})
|
|
}
|
|
l.hoverReset && this.$element.on("mouseenter.ace_scroll touchstart.ace_scroll", function() {
|
|
o.reset()
|
|
}),
|
|
v || _.children(0).css(d, this.size),
|
|
_.css(u, this.size),
|
|
g = !1,
|
|
b = !0
|
|
}
|
|
}
|
|
,
|
|
this.is_active = function() {
|
|
return m
|
|
}
|
|
,
|
|
this.is_enabled = function() {
|
|
return !g
|
|
}
|
|
,
|
|
this.move_bar = function(e) {
|
|
D = e
|
|
}
|
|
,
|
|
this.reset = function() {
|
|
if (!g) {
|
|
b || this.create();
|
|
var e = v ? w[p] : this.size;
|
|
if (v && 0 == e || !v && 0 == this.element.scrollWidth)
|
|
return void this.$element.removeClass("scroll-active");
|
|
var t = v ? this.size : w.clientWidth;
|
|
v || _.children(0).css(d, this.size),
|
|
_.css(u, this.size),
|
|
e > t ? (m = !0,
|
|
y.css(d, t).show(),
|
|
T = parseFloat((t / e).toFixed(5)),
|
|
A = parseInt(Math.round(t * T)),
|
|
E = parseInt(Math.round(A / 2)),
|
|
j = t - A,
|
|
z = parseInt(Math.round(w[f] * T)),
|
|
$[d] = A + "px",
|
|
$[c] = z + "px",
|
|
this.$element.addClass("scroll-active"),
|
|
I || (l.reset && (w[f] = 0,
|
|
$[c] = 0),
|
|
I = !0)) : (m = !1,
|
|
y.hide(),
|
|
this.$element.removeClass("scroll-active"),
|
|
_.css(u, ""))
|
|
}
|
|
}
|
|
,
|
|
this.disable = function() {
|
|
return w[f] = 0,
|
|
$[c] = 0,
|
|
g = !0,
|
|
m = !1,
|
|
y.hide(),
|
|
this.$element.removeClass("scroll-active"),
|
|
_.css(u, ""),
|
|
this
|
|
}
|
|
,
|
|
this.enable = function() {
|
|
return g = !1,
|
|
this.reset(),
|
|
this
|
|
}
|
|
,
|
|
this.destroy = function() {
|
|
return m = !1,
|
|
g = !1,
|
|
b = !1,
|
|
this.$element.removeClass("ace-scroll scroll-hz" + (l.extraClass ? " " + l.extraClass : "")),
|
|
this.$element.off(".ace_scroll"),
|
|
v || _.find("> div").children().unwrap(),
|
|
_.children().unwrap(),
|
|
_.remove(),
|
|
y.remove(),
|
|
S !== !1 && (this.element.style.position = S),
|
|
this
|
|
}
|
|
,
|
|
this.modify = function(t) {
|
|
return t && (l = e.extend({}, e.fn.ace_scroll.defaults, t)),
|
|
this.destroy(),
|
|
this.create(),
|
|
this.reset(),
|
|
this
|
|
}
|
|
,
|
|
this.update = function(e) {
|
|
return this.size = e.size,
|
|
this
|
|
}
|
|
,
|
|
this.update_scroll = function() {
|
|
D = !1,
|
|
$[c] = z + "px",
|
|
w[f] = parseInt(Math.round(z / T))
|
|
}
|
|
;
|
|
var N = -1
|
|
, q = -1;
|
|
return this.create(),
|
|
this.reset(),
|
|
this
|
|
}
|
|
;
|
|
e.fn.ace_scroll = function(i, n) {
|
|
var s, r = this.each(function() {
|
|
var t = e(this)
|
|
, r = t.data("ace_scroll")
|
|
, o = "object" == typeof i && i;
|
|
r || t.data("ace_scroll", r = new a(this,o)),
|
|
"string" == typeof i && (s = r[i](n))
|
|
});
|
|
return s === t ? r : s
|
|
}
|
|
,
|
|
e.fn.ace_scroll.defaults = {
|
|
size: 200,
|
|
horizontal: !1,
|
|
mouseWheel: !0,
|
|
mouseWheelLock: !1,
|
|
lockAnyway: !1,
|
|
styleClass: !1,
|
|
hoverReset: !0,
|
|
reset: !1,
|
|
dragEvent: !1,
|
|
touchDrag: !0,
|
|
touchSwipe: !1,
|
|
scrollEvent: !1
|
|
}
|
|
}(window.jQuery),
|
|
function(e, t) {
|
|
var a = function(t, a) {
|
|
var i = e.extend({}, e.fn.ace_colorpicker.defaults, a)
|
|
, n = e(t)
|
|
, s = ""
|
|
, r = ""
|
|
, o = null
|
|
, l = [];
|
|
n.addClass("hide").find("option").each(function() {
|
|
var e = "colorpick-btn"
|
|
, t = this.value.replace(/[^\w\s,#\(\)\.]/g, "");
|
|
this.value != t && (this.value = t),
|
|
this.selected && (e += " selected",
|
|
r = t),
|
|
l.push(t),
|
|
s += '<li><a class="' + e + '" href="#" style="background-color:' + t + ';" data-color="' + t + '"></a></li>'
|
|
}).end().on("change.color", function() {
|
|
n.next().find(".btn-colorpicker").css("background-color", this.value)
|
|
}).after('<div class="dropdown dropdown-colorpicker"> <a data-toggle="dropdown" class="dropdown-toggle" ' + (i.auto_pos ? 'data-position="auto"' : "") + ' href="#"><span class="btn-colorpicker" style="background-color:' + r + '"></span></a><ul class="dropdown-menu' + (i.caret ? " dropdown-caret" : "") + (i.pull_right ? " dropdown-menu-right" : "") + '">' + s + "</ul></div>");
|
|
var c = n.next().find(".dropdown-menu");
|
|
c.on(ace.click_event, function(t) {
|
|
var a = e(t.target);
|
|
if (!a.is(".colorpick-btn"))
|
|
return !1;
|
|
o && o.removeClass("selected"),
|
|
o = a,
|
|
o.addClass("selected");
|
|
var i = o.data("color");
|
|
return n.val(i).trigger("change"),
|
|
t.preventDefault(),
|
|
!0
|
|
}),
|
|
o = n.next().find("a.selected"),
|
|
this.pick = function(a, i) {
|
|
if ("number" == typeof a) {
|
|
if (a >= l.length)
|
|
return;
|
|
t.selectedIndex = a,
|
|
c.find("a:eq(" + a + ")").trigger(ace.click_event)
|
|
} else if ("string" == typeof a) {
|
|
var s = a.replace(/[^\w\s,#\(\)\.]/g, "");
|
|
if (a = l.indexOf(s),
|
|
-1 == a && i === !0 && (l.push(s),
|
|
e("<option />").appendTo(n).val(s),
|
|
e('<li><a class="colorpick-btn" href="#"></a></li>').appendTo(c).find("a").css("background-color", s).data("color", s),
|
|
a = l.length - 1),
|
|
-1 == a)
|
|
return;
|
|
c.find("a:eq(" + a + ")").trigger(ace.click_event)
|
|
}
|
|
}
|
|
,
|
|
this.destroy = function() {
|
|
n.removeClass("hide").off("change.color").next().remove(),
|
|
l = []
|
|
}
|
|
}
|
|
;
|
|
e.fn.ace_colorpicker = function(i, n) {
|
|
var s, r = this.each(function() {
|
|
var t = e(this)
|
|
, r = t.data("ace_colorpicker")
|
|
, o = "object" == typeof i && i;
|
|
r || t.data("ace_colorpicker", r = new a(this,o)),
|
|
"string" == typeof i && (s = r[i](n))
|
|
});
|
|
return s === t ? r : s
|
|
}
|
|
,
|
|
e.fn.ace_colorpicker.defaults = {
|
|
pull_right: !1,
|
|
caret: !0,
|
|
auto_pos: !0
|
|
}
|
|
}(window.jQuery),
|
|
function(e, t) {
|
|
var a = "multiple" in document.createElement("INPUT")
|
|
, i = "FileList" in window
|
|
, n = "FileReader" in window
|
|
, s = "File" in window
|
|
, r = function(t, a) {
|
|
var i = this;
|
|
this.settings = e.extend({}, e.fn.ace_file_input.defaults, a),
|
|
this.$element = e(t),
|
|
this.element = t,
|
|
this.disabled = !1,
|
|
this.can_reset = !0,
|
|
this.$element.off("change.ace_inner_call").on("change.ace_inner_call", function(e, t) {
|
|
return i.disabled || t === !0 ? void 0 : l.call(i)
|
|
});
|
|
var n = this.$element.closest("label").css({
|
|
display: "block"
|
|
})
|
|
, s = 0 == n.length ? "label" : "span";
|
|
this.$element.wrap("<" + s + ' class="ace-file-input" />'),
|
|
this.apply_settings(),
|
|
this.reset_input_field()
|
|
}
|
|
;
|
|
r.error = {
|
|
FILE_LOAD_FAILED: 1,
|
|
IMAGE_LOAD_FAILED: 2,
|
|
THUMBNAIL_FAILED: 3
|
|
},
|
|
r.prototype.apply_settings = function() {
|
|
var t = this;
|
|
this.multi = this.$element.attr("multiple") && a,
|
|
this.well_style = "well" == this.settings.style,
|
|
this.well_style ? this.$element.parent().addClass("ace-file-multiple") : this.$element.parent().removeClass("ace-file-multiple"),
|
|
this.$element.parent().find(":not(input[type=file])").remove(),
|
|
this.$element.after('<span class="ace-file-container" data-title="' + this.settings.btn_choose + '"><span class="ace-file-name" data-title="' + this.settings.no_file + '">' + (this.settings.no_icon ? '<i class="' + ace.vars.icon + this.settings.no_icon + '"></i>' : "") + "</span></span>"),
|
|
this.$label = this.$element.next(),
|
|
this.$container = this.$element.closest(".ace-file-input");
|
|
var n = !!this.settings.icon_remove;
|
|
if (n) {
|
|
var s = e('<a class="remove" href="#"><i class="' + ace.vars.icon + this.settings.icon_remove + '"></i></a>').appendTo(this.$element.parent());
|
|
s.on(ace.click_event, function(e) {
|
|
if (e.preventDefault(),
|
|
!t.can_reset)
|
|
return !1;
|
|
var a = !0;
|
|
if (t.settings.before_remove && (a = t.settings.before_remove.call(t.element)),
|
|
!a)
|
|
return !1;
|
|
t.reset_input();
|
|
return !1
|
|
})
|
|
}
|
|
this.settings.droppable && i && o.call(this)
|
|
}
|
|
,
|
|
r.prototype.show_file_list = function(t) {
|
|
var a = "undefined" == typeof t ? this.$element.data("ace_input_files") : t;
|
|
if (a && 0 != a.length) {
|
|
this.well_style && (this.$label.find(".ace-file-name").remove(),
|
|
this.settings.btn_change || this.$label.addClass("hide-placeholder")),
|
|
this.$label.attr("data-title", this.settings.btn_change).addClass("selected");
|
|
for (var i = 0; i < a.length; i++) {
|
|
var s = "string" == typeof a[i] ? a[i] : e.trim(a[i].name)
|
|
, r = s.lastIndexOf("\\") + 1;
|
|
0 == r && (r = s.lastIndexOf("/") + 1),
|
|
s = s.substr(r);
|
|
var o = "fa fa-file"
|
|
, l = "file";
|
|
if (/\.(jpe?g|png|gif|svg|bmp|tiff?)$/i.test(s) ? (o = "fa fa-picture-o file-image",
|
|
l = "image") : /\.(mpe?g|flv|mov|avi|swf|mp4|mkv|webm|wmv|3gp)$/i.test(s) ? (o = "fa fa-film file-video",
|
|
l = "video") : /\.(mp3|ogg|wav|wma|amr|aac)$/i.test(s) && (o = "fa fa-music file-audio",
|
|
l = "audio"),
|
|
this.well_style) {
|
|
this.$label.append('<span class="ace-file-name" data-title="' + s + '"><i class="' + ace.vars.icon + o + '"></i></span>');
|
|
var d = e.trim(a[i].type)
|
|
, u = n && this.settings.thumbnail && (d.length > 0 && d.match("image") || 0 == d.length && "image" == l);
|
|
if (u) {
|
|
var h = this;
|
|
e.when(c.call(this, a[i])).fail(function(e) {
|
|
h.settings.preview_error && h.settings.preview_error.call(h, s, e.code)
|
|
})
|
|
}
|
|
} else
|
|
this.$label.find(".ace-file-name").attr({
|
|
"data-title": s
|
|
}).find(ace.vars[".icon"]).attr("class", ace.vars.icon + o)
|
|
}
|
|
return !0
|
|
}
|
|
}
|
|
,
|
|
r.prototype.reset_input = function() {
|
|
this.reset_input_ui(),
|
|
this.reset_input_field()
|
|
}
|
|
,
|
|
r.prototype.reset_input_ui = function() {
|
|
this.$label.attr({
|
|
"data-title": this.settings.btn_choose,
|
|
"class": "ace-file-container"
|
|
}).find(".ace-file-name:first").attr({
|
|
"data-title": this.settings.no_file,
|
|
"class": "ace-file-name"
|
|
}).find(ace.vars[".icon"]).attr("class", ace.vars.icon + this.settings.no_icon).prev("img").remove(),
|
|
this.settings.no_icon || this.$label.find(ace.vars[".icon"]).remove(),
|
|
this.$label.find(".ace-file-name").not(":first").remove(),
|
|
this.reset_input_data()
|
|
}
|
|
,
|
|
r.prototype.reset_input_field = function() {
|
|
this.$element.wrap("<form>").parent().get(0).reset(),
|
|
this.$element.unwrap()
|
|
}
|
|
,
|
|
r.prototype.reset_input_data = function() {
|
|
this.$element.data("ace_input_files") && (this.$element.removeData("ace_input_files"),
|
|
this.$element.removeData("ace_input_method"))
|
|
}
|
|
,
|
|
r.prototype.enable_reset = function(e) {
|
|
this.can_reset = e
|
|
}
|
|
,
|
|
r.prototype.disable = function() {
|
|
this.disabled = !0,
|
|
this.$element.attr("disabled", "disabled").addClass("disabled")
|
|
}
|
|
,
|
|
r.prototype.enable = function() {
|
|
this.disabled = !1,
|
|
this.$element.removeAttr("disabled").removeClass("disabled")
|
|
}
|
|
,
|
|
r.prototype.files = function() {
|
|
return e(this).data("ace_input_files") || null
|
|
}
|
|
,
|
|
r.prototype.method = function() {
|
|
return e(this).data("ace_input_method") || ""
|
|
}
|
|
,
|
|
r.prototype.update_settings = function(t) {
|
|
this.settings = e.extend({}, this.settings, t),
|
|
this.apply_settings()
|
|
}
|
|
,
|
|
r.prototype.loading = function(t) {
|
|
if (t === !1)
|
|
this.$container.find(".ace-file-overlay").remove(),
|
|
this.element.removeAttribute("readonly");
|
|
else {
|
|
var a = "string" == typeof t ? t : '<i class="overlay-content fa fa-spin fa-spinner orange2 fa-2x"></i>'
|
|
, i = this.$container.find(".ace-file-overlay");
|
|
0 == i.length && (i = e('<div class="ace-file-overlay"></div>').appendTo(this.$container),
|
|
i.on("click tap", function(e) {
|
|
return e.stopImmediatePropagation(),
|
|
e.preventDefault(),
|
|
!1
|
|
}),
|
|
this.element.setAttribute("readonly", "true")),
|
|
i.empty().append(a)
|
|
}
|
|
}
|
|
;
|
|
var o = function() {
|
|
var e = this
|
|
, t = this.$element.parent();
|
|
t.off("dragenter").on("dragenter", function(e) {
|
|
e.preventDefault(),
|
|
e.stopPropagation()
|
|
}).off("dragover").on("dragover", function(e) {
|
|
e.preventDefault(),
|
|
e.stopPropagation()
|
|
}).off("drop").on("drop", function(t) {
|
|
if (t.preventDefault(),
|
|
t.stopPropagation(),
|
|
!e.disabled) {
|
|
var a = t.originalEvent.dataTransfer
|
|
, i = a.files;
|
|
if (!e.multi && i.length > 1) {
|
|
var n = [];
|
|
n.push(i[0]),
|
|
i = n
|
|
}
|
|
return i = u.call(e, i, !0),
|
|
i === !1 ? !1 : (e.$element.data("ace_input_method", "drop"),
|
|
e.$element.data("ace_input_files", i),
|
|
e.show_file_list(i),
|
|
e.$element.triggerHandler("change", [!0]),
|
|
!0)
|
|
}
|
|
})
|
|
}
|
|
, l = function() {
|
|
var e = this.element.files || [this.element.value];
|
|
return e = u.call(this, e, !1),
|
|
e === !1 ? !1 : (this.$element.data("ace_input_method", "select"),
|
|
this.$element.data("ace_input_files", e),
|
|
this.show_file_list(e),
|
|
!0)
|
|
}
|
|
, c = function(t) {
|
|
var a = this
|
|
, i = a.$label.find(".ace-file-name:last")
|
|
, n = new e.Deferred
|
|
, s = new FileReader;
|
|
return s.onload = function(s) {
|
|
i.prepend("<img class='middle' style='display:none;' />");
|
|
var o = i.find("img:last").get(0);
|
|
e(o).one("load", function() {
|
|
var s = 50;
|
|
"large" == a.settings.thumbnail ? s = 150 : "fit" == a.settings.thumbnail && (s = i.width()),
|
|
i.addClass(s > 50 ? "large" : "");
|
|
var l = d(o, s, t.type);
|
|
if (null == l)
|
|
return e(this).remove(),
|
|
void n.reject({
|
|
code: r.error.THUMBNAIL_FAILED
|
|
});
|
|
var c = l.w
|
|
, u = l.h;
|
|
"small" == a.settings.thumbnail && (c = u = s),
|
|
e(o).css({
|
|
"background-image": "url(" + l.src + ")",
|
|
width: c,
|
|
height: u
|
|
}).data("thumb", l.src).attr({
|
|
src: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
|
}).show(),
|
|
n.resolve()
|
|
}).one("error", function() {
|
|
i.find("img").remove(),
|
|
n.reject({
|
|
code: r.error.IMAGE_LOAD_FAILED
|
|
})
|
|
}),
|
|
o.src = s.target.result
|
|
}
|
|
,
|
|
s.onerror = function() {
|
|
n.reject({
|
|
code: r.error.FILE_LOAD_FAILED
|
|
})
|
|
}
|
|
,
|
|
s.readAsDataURL(t),
|
|
n.promise()
|
|
}
|
|
, d = function(t, a) {
|
|
var i = t.width
|
|
, n = t.height;
|
|
i = i > 0 ? i : e(t).width(),
|
|
n = n > 0 ? n : e(t).height(),
|
|
(i > a || n > a) && (i > n ? (n = parseInt(a / i * n),
|
|
i = a) : (i = parseInt(a / n * i),
|
|
n = a));
|
|
var s;
|
|
try {
|
|
var r = document.createElement("canvas");
|
|
r.width = i,
|
|
r.height = n;
|
|
var o = r.getContext("2d");
|
|
o.drawImage(t, 0, 0, t.width, t.height, 0, 0, i, n),
|
|
s = r.toDataURL()
|
|
} catch (l) {
|
|
s = null
|
|
}
|
|
return s ? (/^data\:image\/(png|jpe?g|gif);base64,[0-9A-Za-z\+\/\=]+$/.test(s) || (s = null ),
|
|
s ? {
|
|
src: s,
|
|
w: i,
|
|
h: n
|
|
} : null ) : null
|
|
}
|
|
, u = function(e, t) {
|
|
var a = p.call(this, e, t);
|
|
return -1 === a ? (this.reset_input(),
|
|
!1) : a && 0 != a.length ? ((a instanceof Array || i && a instanceof FileList) && (e = a),
|
|
a = !0,
|
|
this.settings.before_change && (a = this.settings.before_change.call(this.element, e, t)),
|
|
-1 === a ? (this.reset_input(),
|
|
!1) : a && 0 != a.length ? ((a instanceof Array || i && a instanceof FileList) && (e = a),
|
|
e) : (this.$element.data("ace_input_files") || this.reset_input(),
|
|
!1)) : (this.$element.data("ace_input_files") || this.reset_input(),
|
|
!1)
|
|
}
|
|
, h = function(e) {
|
|
return e ? ("string" == typeof e && (e = [e]),
|
|
0 == e.length ? null : new RegExp(".(?:" + e.join("|") + ")$","i")) : null
|
|
}
|
|
, f = function(e) {
|
|
return e ? ("string" == typeof e && (e = [e]),
|
|
0 == e.length ? null : new RegExp("^(?:" + e.join("|").replace(/\//g, "\\/") + ")$","i")) : null
|
|
}
|
|
, p = function(t, a) {
|
|
var i = h(this.settings.allowExt)
|
|
, n = h(this.settings.denyExt)
|
|
, r = f(this.settings.allowMime)
|
|
, o = f(this.settings.denyMime)
|
|
, l = this.settings.maxSize || !1;
|
|
if (!(i || n || r || o || l))
|
|
return !0;
|
|
for (var c = [], d = {}, u = 0; u < t.length; u++) {
|
|
var p = t[u]
|
|
, v = s ? p.name : p;
|
|
if (!i || i.test(v))
|
|
if (n && n.test(v))
|
|
"ext" in d || (d.ext = []),
|
|
d.ext.push(v);
|
|
else {
|
|
var g;
|
|
if (s) {
|
|
if ((g = e.trim(p.type)).length > 0) {
|
|
if (r && !r.test(g)) {
|
|
"mime" in d || (d.mime = []),
|
|
d.mime.push(v);
|
|
continue
|
|
}
|
|
if (o && o.test(g)) {
|
|
"mime" in d || (d.mime = []),
|
|
d.mime.push(v);
|
|
continue
|
|
}
|
|
}
|
|
l && p.size > l ? ("size" in d || (d.size = []),
|
|
d.size.push(v)) : c.push(p)
|
|
} else
|
|
c.push(p)
|
|
}
|
|
else
|
|
"ext" in d || (d.ext = []),
|
|
d.ext.push(v)
|
|
}
|
|
if (c.length == t.length)
|
|
return t;
|
|
var m = {
|
|
ext: 0,
|
|
mime: 0,
|
|
size: 0
|
|
};
|
|
"ext" in d && (m.ext = d.ext.length),
|
|
"mime" in d && (m.mime = d.mime.length),
|
|
"size" in d && (m.size = d.size.length);
|
|
var b;
|
|
return this.$element.trigger(b = new e.Event("file.error.ace"), {
|
|
file_count: t.length,
|
|
invalid_count: t.length - c.length,
|
|
error_list: d,
|
|
error_count: m,
|
|
dropped: a
|
|
}),
|
|
b.isDefaultPrevented() ? -1 : c
|
|
}
|
|
;
|
|
e.fn.ace_file_input = function(a, i) {
|
|
var n, s = this.each(function() {
|
|
var t = e(this)
|
|
, s = t.data("ace_file_input")
|
|
, o = "object" == typeof a && a;
|
|
s || t.data("ace_file_input", s = new r(this,o)),
|
|
"string" == typeof a && (n = s[a](i))
|
|
});
|
|
return n === t ? s : n
|
|
}
|
|
,
|
|
e.fn.ace_file_input.defaults = {
|
|
style: !1,
|
|
no_file: "No File ...",
|
|
no_icon: "fa fa-upload",
|
|
btn_choose: "Choose",
|
|
btn_change: "Change",
|
|
icon_remove: "fa fa-times",
|
|
droppable: !1,
|
|
thumbnail: !1,
|
|
allowExt: null ,
|
|
denyExt: null ,
|
|
allowMime: null ,
|
|
denyMime: null ,
|
|
maxSize: !1,
|
|
before_change: null ,
|
|
before_remove: null ,
|
|
preview_error: null
|
|
}
|
|
}(window.jQuery),
|
|
!function(e) {
|
|
"use strict";
|
|
var t = function(t, a) {
|
|
this.$element = e(t),
|
|
this.options = e.extend({}, e.fn.bs_typeahead.defaults, a),
|
|
this.matcher = this.options.matcher || this.matcher,
|
|
this.sorter = this.options.sorter || this.sorter,
|
|
this.highlighter = this.options.highlighter || this.highlighter,
|
|
this.updater = this.options.updater || this.updater,
|
|
this.source = this.options.source,
|
|
this.$menu = e(this.options.menu),
|
|
this.shown = !1,
|
|
this.listen()
|
|
}
|
|
;
|
|
t.prototype = {
|
|
constructor: t,
|
|
select: function() {
|
|
var e = this.$menu.find(".active").attr("data-value");
|
|
return this.$element.val(this.updater(e)).change(),
|
|
this.hide()
|
|
},
|
|
updater: function(e) {
|
|
return e
|
|
},
|
|
show: function() {
|
|
var t = e.extend({}, this.$element.position(), {
|
|
height: this.$element[0].offsetHeight
|
|
});
|
|
return this.$menu.insertAfter(this.$element).css({
|
|
top: t.top + t.height,
|
|
left: t.left
|
|
}).show(),
|
|
this.shown = !0,
|
|
this
|
|
},
|
|
hide: function() {
|
|
return this.$menu.hide(),
|
|
this.shown = !1,
|
|
this
|
|
},
|
|
lookup: function() {
|
|
var t;
|
|
return this.query = this.$element.val(),
|
|
!this.query || this.query.length < this.options.minLength ? this.shown ? this.hide() : this : (t = e.isFunction(this.source) ? this.source(this.query, e.proxy(this.process, this)) : this.source,
|
|
t ? this.process(t) : this)
|
|
},
|
|
process: function(t) {
|
|
var a = this;
|
|
return t = e.grep(t, function(e) {
|
|
return a.matcher(e)
|
|
}),
|
|
t = this.sorter(t),
|
|
t.length ? this.render(t.slice(0, this.options.items)).show() : this.shown ? this.hide() : this
|
|
},
|
|
matcher: function(e) {
|
|
return ~e.toLowerCase().indexOf(this.query.toLowerCase())
|
|
},
|
|
sorter: function(e) {
|
|
for (var t, a = [], i = [], n = []; t = e.shift(); )
|
|
t.toLowerCase().indexOf(this.query.toLowerCase()) ? ~t.indexOf(this.query) ? i.push(t) : n.push(t) : a.push(t);
|
|
return a.concat(i, n)
|
|
},
|
|
highlighter: function(e) {
|
|
var t = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
|
|
return e.replace(new RegExp("(" + t + ")","ig"), function(e, t) {
|
|
return "<strong>" + t + "</strong>"
|
|
})
|
|
},
|
|
render: function(t) {
|
|
var a = this;
|
|
return t = e(t).map(function(t, i) {
|
|
return t = e(a.options.item).attr("data-value", i),
|
|
t.find("a").html(a.highlighter(i)),
|
|
t[0]
|
|
}),
|
|
t.first().addClass("active"),
|
|
this.$menu.html(t),
|
|
this
|
|
},
|
|
next: function() {
|
|
var t = this.$menu.find(".active").removeClass("active")
|
|
, a = t.next();
|
|
a.length || (a = e(this.$menu.find("li")[0])),
|
|
a.addClass("active")
|
|
},
|
|
prev: function() {
|
|
var e = this.$menu.find(".active").removeClass("active")
|
|
, t = e.prev();
|
|
t.length || (t = this.$menu.find("li").last()),
|
|
t.addClass("active")
|
|
},
|
|
listen: function() {
|
|
this.$element.on("focus", e.proxy(this.focus, this)).on("blur", e.proxy(this.blur, this)).on("keypress", e.proxy(this.keypress, this)).on("keyup", e.proxy(this.keyup, this)),
|
|
this.eventSupported("keydown") && this.$element.on("keydown", e.proxy(this.keydown, this)),
|
|
this.$menu.on("click", e.proxy(this.click, this)).on("mouseenter", "li", e.proxy(this.mouseenter, this)).on("mouseleave", "li", e.proxy(this.mouseleave, this))
|
|
},
|
|
eventSupported: function(e) {
|
|
var t = e in this.$element;
|
|
return t || (this.$element.setAttribute(e, "return;"),
|
|
t = "function" == typeof this.$element[e]),
|
|
t
|
|
},
|
|
move: function(e) {
|
|
if (this.shown) {
|
|
switch (e.keyCode) {
|
|
case 9:
|
|
case 13:
|
|
case 27:
|
|
e.preventDefault();
|
|
break;
|
|
case 38:
|
|
e.preventDefault(),
|
|
this.prev();
|
|
break;
|
|
case 40:
|
|
e.preventDefault(),
|
|
this.next()
|
|
}
|
|
e.stopPropagation()
|
|
}
|
|
},
|
|
keydown: function(t) {
|
|
this.suppressKeyPressRepeat = ~e.inArray(t.keyCode, [40, 38, 9, 13, 27]),
|
|
this.move(t)
|
|
},
|
|
keypress: function(e) {
|
|
this.suppressKeyPressRepeat || this.move(e)
|
|
},
|
|
keyup: function(e) {
|
|
switch (e.keyCode) {
|
|
case 40:
|
|
case 38:
|
|
case 16:
|
|
case 17:
|
|
case 18:
|
|
break;
|
|
case 9:
|
|
case 13:
|
|
if (!this.shown)
|
|
return;
|
|
this.select();
|
|
break;
|
|
case 27:
|
|
if (!this.shown)
|
|
return;
|
|
this.hide();
|
|
break;
|
|
default:
|
|
this.lookup()
|
|
}
|
|
e.stopPropagation(),
|
|
e.preventDefault()
|
|
},
|
|
focus: function() {
|
|
this.focused = !0
|
|
},
|
|
blur: function() {
|
|
this.focused = !1,
|
|
!this.mousedover && this.shown && this.hide()
|
|
},
|
|
click: function(e) {
|
|
e.stopPropagation(),
|
|
e.preventDefault(),
|
|
this.select(),
|
|
this.$element.focus()
|
|
},
|
|
mouseenter: function(t) {
|
|
this.mousedover = !0,
|
|
this.$menu.find(".active").removeClass("active"),
|
|
e(t.currentTarget).addClass("active")
|
|
},
|
|
mouseleave: function() {
|
|
this.mousedover = !1,
|
|
!this.focused && this.shown && this.hide()
|
|
}
|
|
};
|
|
var a = e.fn.bs_typeahead;
|
|
e.fn.bs_typeahead = function(a) {
|
|
return this.each(function() {
|
|
var i = e(this)
|
|
, n = i.data("bs_typeahead")
|
|
, s = "object" == typeof a && a;
|
|
n || i.data("bs_typeahead", n = new t(this,s)),
|
|
"string" == typeof a && n[a]()
|
|
})
|
|
}
|
|
,
|
|
e.fn.bs_typeahead.defaults = {
|
|
source: [],
|
|
items: 8,
|
|
menu: '<ul class="typeahead dropdown-menu"></ul>',
|
|
item: '<li><a href="#"></a></li>',
|
|
minLength: 1
|
|
},
|
|
e.fn.bs_typeahead.Constructor = t,
|
|
e.fn.bs_typeahead.noConflict = function() {
|
|
return e.fn.bs_typeahead = a,
|
|
this
|
|
}
|
|
,
|
|
e(document).on("focus.bs_typeahead.data-api", '[data-provide="bs_typeahead"]', function() {
|
|
var t = e(this);
|
|
t.data("bs_typeahead") || t.bs_typeahead(t.data())
|
|
})
|
|
}(window.jQuery),
|
|
function(e) {
|
|
e.fn.ace_wysiwyg = function(t) {
|
|
var a = e.extend({
|
|
speech_button: !0,
|
|
wysiwyg: {}
|
|
}, t)
|
|
, i = ["#ac725e", "#d06b64", "#f83a22", "#fa573c", "#ff7537", "#ffad46", "#42d692", "#16a765", "#7bd148", "#b3dc6c", "#fbe983", "#fad165", "#92e1c0", "#9fe1e7", "#9fc6e7", "#4986e7", "#9a9cff", "#b99aff", "#c2c2c2", "#cabdbf", "#cca6ac", "#f691b2", "#cd74e6", "#a47ae2", "#444444"]
|
|
, n = {
|
|
font: {
|
|
values: ["Arial", "Courier", "Comic Sans MS", "Helvetica", "Open Sans", "Tahoma", "Verdana"],
|
|
icon: "fa fa-font",
|
|
title: "Font"
|
|
},
|
|
fontSize: {
|
|
values: {
|
|
5: "Huge",
|
|
3: "Normal",
|
|
1: "Small"
|
|
},
|
|
icon: "fa fa-text-height",
|
|
title: "Font Size"
|
|
},
|
|
bold: {
|
|
icon: "fa fa-bold",
|
|
title: "Bold (Ctrl/Cmd+B)"
|
|
},
|
|
italic: {
|
|
icon: "fa fa-italic",
|
|
title: "Italic (Ctrl/Cmd+I)"
|
|
},
|
|
strikethrough: {
|
|
icon: "fa fa-strikethrough",
|
|
title: "Strikethrough"
|
|
},
|
|
underline: {
|
|
icon: "fa fa-underline",
|
|
title: "Underline"
|
|
},
|
|
insertunorderedlist: {
|
|
icon: "fa fa-list-ul",
|
|
title: "Bullet list"
|
|
},
|
|
insertorderedlist: {
|
|
icon: "fa fa-list-ol",
|
|
title: "Number list"
|
|
},
|
|
outdent: {
|
|
icon: "fa fa-outdent",
|
|
title: "Reduce indent (Shift+Tab)"
|
|
},
|
|
indent: {
|
|
icon: "fa fa-indent",
|
|
title: "Indent (Tab)"
|
|
},
|
|
justifyleft: {
|
|
icon: "fa fa-align-left",
|
|
title: "Align Left (Ctrl/Cmd+L)"
|
|
},
|
|
justifycenter: {
|
|
icon: "fa fa-align-center",
|
|
title: "Center (Ctrl/Cmd+E)"
|
|
},
|
|
justifyright: {
|
|
icon: "fa fa-align-right",
|
|
title: "Align Right (Ctrl/Cmd+R)"
|
|
},
|
|
justifyfull: {
|
|
icon: "fa fa-align-justify",
|
|
title: "Justify (Ctrl/Cmd+J)"
|
|
},
|
|
createLink: {
|
|
icon: "fa fa-link",
|
|
title: "Hyperlink",
|
|
button_text: "Add",
|
|
placeholder: "URL",
|
|
button_class: "btn-primary"
|
|
},
|
|
unlink: {
|
|
icon: "fa fa-chain-broken",
|
|
title: "Remove Hyperlink"
|
|
},
|
|
insertImage: {
|
|
icon: "fa fa-picture-o",
|
|
title: "Insert picture",
|
|
button_text: '<i class="' + ace.vars.icon + 'fa fa-file"></i> Choose Image …',
|
|
placeholder: "Image URL",
|
|
button_insert: "Insert",
|
|
button_class: "btn-success",
|
|
button_insert_class: "btn-primary",
|
|
choose_file: !0
|
|
},
|
|
foreColor: {
|
|
values: i,
|
|
title: "Change Color"
|
|
},
|
|
backColor: {
|
|
values: i,
|
|
title: "Change Background Color"
|
|
},
|
|
undo: {
|
|
icon: "fa fa-undo",
|
|
title: "Undo (Ctrl/Cmd+Z)"
|
|
},
|
|
redo: {
|
|
icon: "fa fa-repeat",
|
|
title: "Redo (Ctrl/Cmd+Y)"
|
|
},
|
|
viewSource: {
|
|
icon: "fa fa-code",
|
|
title: "View Source"
|
|
}
|
|
}
|
|
, s = a.toolbar || ["font", null , "fontSize", null , "bold", "italic", "strikethrough", "underline", null , "insertunorderedlist", "insertorderedlist", "outdent", "indent", null , "justifyleft", "justifycenter", "justifyright", "justifyfull", null , "createLink", "unlink", null , "insertImage", null , "foreColor", null , "undo", "redo", null , "viewSource"];
|
|
return this.each(function() {
|
|
var t = ' <div class="wysiwyg-toolbar btn-toolbar center"> <div class="btn-group"> ';
|
|
for (var i in s)
|
|
if (s.hasOwnProperty(i)) {
|
|
var r = s[i];
|
|
if (null === r) {
|
|
t += ' </div> <div class="btn-group"> ';
|
|
continue
|
|
}
|
|
if ("string" == typeof r && r in n)
|
|
r = n[r],
|
|
r.name = s[i];
|
|
else {
|
|
if (!("object" == typeof r && r.name in n))
|
|
continue;r = e.extend(n[r.name], r)
|
|
}
|
|
var o = "className" in r ? r.className : "btn-default";
|
|
switch (r.name) {
|
|
case "font":
|
|
t += ' <a class="btn btn-sm ' + o + ' dropdown-toggle" data-toggle="dropdown" title="' + r.title + '"><i class="' + ace.vars.icon + r.icon + '"></i><i class="' + ace.vars.icon + 'fa fa-angle-down icon-on-right"></i></a> ',
|
|
t += ' <ul class="dropdown-menu dropdown-light dropdown-caret">';
|
|
for (var l in r.values)
|
|
r.values.hasOwnProperty(l) && (t += ' <li><a data-edit="fontName ' + r.values[l] + '" style="font-family:\'' + r.values[l] + "'\">" + r.values[l] + "</a></li> ");
|
|
t += " </ul>";
|
|
break;
|
|
case "fontSize":
|
|
t += ' <a class="btn btn-sm ' + o + ' dropdown-toggle" data-toggle="dropdown" title="' + r.title + '"><i class="' + ace.vars.icon + r.icon + '"></i> <i class="' + ace.vars.icon + 'fa fa-angle-down icon-on-right"></i></a> ',
|
|
t += ' <ul class="dropdown-menu dropdown-light dropdown-caret"> ';
|
|
for (var c in r.values)
|
|
r.values.hasOwnProperty(c) && (t += ' <li><a data-edit="fontSize ' + c + '"><font size="' + c + '">' + r.values[c] + "</font></a></li> ");
|
|
t += " </ul> ";
|
|
break;
|
|
case "createLink":
|
|
t += ' <div class="btn-group"> <a class="btn btn-sm ' + o + ' dropdown-toggle" data-toggle="dropdown" title="' + r.title + '"><i class="' + ace.vars.icon + r.icon + '"></i></a> ',
|
|
t += ' <div class="dropdown-menu dropdown-caret dropdown-menu-right"> <div class="input-group"> <input class="form-control" placeholder="' + r.placeholder + '" type="text" data-edit="' + r.name + '" /> <span class="input-group-btn"> <button class="btn btn-sm ' + r.button_class + '" type="button">' + r.button_text + "</button> </span> </div> </div> </div>";
|
|
break;
|
|
case "insertImage":
|
|
t += ' <div class="btn-group"> <a class="btn btn-sm ' + o + ' dropdown-toggle" data-toggle="dropdown" title="' + r.title + '"><i class="' + ace.vars.icon + r.icon + '"></i></a> ',
|
|
t += ' <div class="dropdown-menu dropdown-caret dropdown-menu-right"> <div class="input-group"> <input class="form-control" placeholder="' + r.placeholder + '" type="text" data-edit="' + r.name + '" /> <span class="input-group-btn"> <button class="btn btn-sm ' + r.button_insert_class + '" type="button">' + r.button_insert + "</button> </span> </div>",
|
|
r.choose_file && "FileReader" in window && (t += '<div class="space-2"></div> <label class="center block no-margin-bottom"> <button class="btn btn-sm ' + r.button_class + ' wysiwyg-choose-file" type="button">' + r.button_text + '</button> <input type="file" data-edit="' + r.name + '" /> </label>'),
|
|
t += " </div> </div>";
|
|
break;
|
|
case "foreColor":
|
|
case "backColor":
|
|
t += ' <select class="hide wysiwyg_colorpicker" title="' + r.title + '"> ';
|
|
for (var d in r.values)
|
|
t += ' <option value="' + r.values[d] + '">' + r.values[d] + "</option> ";
|
|
t += " </select> ",
|
|
t += ' <input style="display:none;" disabled class="hide" type="text" data-edit="' + r.name + '" /> ';
|
|
break;
|
|
case "viewSource":
|
|
t += ' <a class="btn btn-sm ' + o + '" data-view="source" title="' + r.title + '"><i class="' + ace.vars.icon + r.icon + '"></i></a> ';
|
|
break;
|
|
default:
|
|
t += ' <a class="btn btn-sm ' + o + '" data-edit="' + r.name + '" title="' + r.title + '"><i class="' + ace.vars.icon + r.icon + '"></i></a> '
|
|
}
|
|
}
|
|
t += " </div> ";
|
|
var u;
|
|
a.speech_button && "onwebkitspeechchange" in (u = document.createElement("input")) && (t += ' <input class="wysiwyg-speech-input" type="text" data-edit="inserttext" x-webkit-speech />'),
|
|
u = null ,
|
|
t += " </div> ",
|
|
t = a.toolbar_place ? a.toolbar_place.call(this, t) : e(this).before(t).prev(),
|
|
t.find("a[title]").tooltip({
|
|
animation: !1,
|
|
container: "body"
|
|
}),
|
|
t.find(".dropdown-menu input[type=text]").on("click", function() {
|
|
return !1
|
|
}).on("change", function() {
|
|
e(this).closest(".dropdown-menu").siblings(".dropdown-toggle").dropdown("toggle")
|
|
}).on("keydown", function(t) {
|
|
27 == t.which ? (this.value = "",
|
|
e(this).change()) : 13 == t.which && (t.preventDefault(),
|
|
t.stopPropagation(),
|
|
e(this).change())
|
|
}),
|
|
t.find("input[type=file]").prev().on(ace.click_event, function() {
|
|
e(this).next().click()
|
|
}),
|
|
t.find(".wysiwyg_colorpicker").each(function() {
|
|
e(this).ace_colorpicker({
|
|
pull_right: !0
|
|
}).change(function() {
|
|
e(this).nextAll("input").eq(0).val(this.value).change()
|
|
}).next().find(".btn-colorpicker").tooltip({
|
|
title: this.title,
|
|
animation: !1,
|
|
container: "body"
|
|
})
|
|
});
|
|
var h = e(this)
|
|
, f = !1;
|
|
t.find("a[data-view=source]").on("click", function(t) {
|
|
if (t.preventDefault(),
|
|
f) {
|
|
var a = h.next();
|
|
h.html(a.val()).show(),
|
|
a.remove(),
|
|
e(this).removeClass("active")
|
|
} else
|
|
e("<textarea />").css({
|
|
width: h.outerWidth(),
|
|
height: h.outerHeight()
|
|
}).val(h.html()).insertAfter(h),
|
|
h.hide(),
|
|
e(this).addClass("active");
|
|
f = !f
|
|
});
|
|
var p = e.extend({}, {
|
|
activeToolbarClass: "active",
|
|
toolbarSelector: t
|
|
}, a.wysiwyg || {});
|
|
e(this).wysiwyg(p)
|
|
}),
|
|
this
|
|
}
|
|
}(window.jQuery),
|
|
function(e, t) {
|
|
function a(t, a) {
|
|
var i = a.max;
|
|
i = ("" + i).length;
|
|
var n = parseInt(Math.max(20 * i + 40, 90))
|
|
, s = e(t);
|
|
s.addClass("spinner-input form-control").wrap('<div class="ace-spinner">');
|
|
var r = s.closest(".ace-spinner").spinner(a).wrapInner("<div class='input-group'></div>")
|
|
, o = r.data("spinner");
|
|
a.on_sides ? (s.before('<div class="spinner-buttons input-group-btn"> <button type="button" class="btn spinner-down btn-xs ' + a.btn_down_class + '"> <i class="' + ace.vars.icon + a.icon_down + '"></i> </button> </div>').after('<div class="spinner-buttons input-group-btn"> <button type="button" class="btn spinner-up btn-xs ' + a.btn_up_class + '"> <i class="' + ace.vars.icon + a.icon_up + '"></i> </button> </div>'),
|
|
r.addClass("touch-spinner"),
|
|
r.css("width", n + "px")) : (s.after('<div class="spinner-buttons input-group-btn"> <button type="button" class="btn spinner-up btn-xs ' + a.btn_up_class + '"> <i class="' + ace.vars.icon + a.icon_up + '"></i> </button> <button type="button" class="btn spinner-down btn-xs ' + a.btn_down_class + '"> <i class="' + ace.vars.icon + a.icon_down + '"></i> </button> </div>'),
|
|
ace.vars.touch || a.touch_spinner ? (r.addClass("touch-spinner"),
|
|
r.css("width", n + "px")) : (s.next().addClass("btn-group-vertical"),
|
|
r.css("width", n + "px"))),
|
|
s.on("mousewheel.spinner DOMMouseScroll.spinner", function(e) {
|
|
var t = e.originalEvent.detail < 0 || e.originalEvent.wheelDelta > 0 ? 1 : -1;
|
|
return o.step(t > 0),
|
|
o.triggerChangedEvent(),
|
|
!1
|
|
}),
|
|
r.on("changed", function() {
|
|
s.trigger("change")
|
|
}),
|
|
this._call = function(e, t) {
|
|
o[e](t)
|
|
}
|
|
}
|
|
e.fn.ace_spinner = function(i, n) {
|
|
var s, r = this.each(function() {
|
|
var t = e(this)
|
|
, r = t.data("ace_spinner")
|
|
, o = "object" == typeof i && i;
|
|
r || (o = e.extend({}, e.fn.ace_spinner.defaults, i),
|
|
t.data("ace_spinner", r = new a(this,o))),
|
|
"string" == typeof i && (s = r._call(i, n))
|
|
});
|
|
return s === t ? r : s
|
|
}
|
|
,
|
|
e.fn.ace_spinner.defaults = {
|
|
icon_up: "fa fa-chevron-up",
|
|
icon_down: "fa fa-chevron-down",
|
|
on_sides: !1,
|
|
btn_up_class: "",
|
|
btn_down_class: "",
|
|
max: 999,
|
|
touch_spinner: !1
|
|
}
|
|
}(window.jQuery),
|
|
function(e) {
|
|
var t = {
|
|
"open-icon": ace.vars.icon + "fa fa-folder-open",
|
|
"close-icon": ace.vars.icon + "fa fa-folder",
|
|
selectable: !0,
|
|
"selected-icon": ace.vars.icon + "fa fa-check",
|
|
"unselected-icon": ace.vars.icon + "fa fa-times"
|
|
};
|
|
e.fn.ace_tree = function(a) {
|
|
return t = e.extend({}, t, a),
|
|
this.each(function() {
|
|
var a = e(this);
|
|
a.html('<div class="tree-folder" style="display:none;"> <div class="tree-folder-header"> <i class="' + ace.vars.icon + t["close-icon"] + '"></i> <div class="tree-folder-name"></div> </div> <div class="tree-folder-content"></div> <div class="tree-loader" style="display:none"></div> </div> <div class="tree-item" style="display:none;"> ' + (null == t["unselected-icon"] ? "" : '<i class="' + ace.vars.icon + t["unselected-icon"] + '"></i>') + ' <div class="tree-item-name"></div> </div>'),
|
|
a.addClass(1 == t.selectable ? "tree-selectable" : "tree-unselectable"),
|
|
a.tree(t)
|
|
}),
|
|
this
|
|
}
|
|
}(window.jQuery),
|
|
function(e) {
|
|
e.fn.ace_wizard = function(t) {
|
|
return this.each(function() {
|
|
var a = e(this);
|
|
a.wizard();
|
|
var i = a.siblings(".wizard-actions").eq(0)
|
|
, n = a.data("wizard");
|
|
n.$prevBtn.remove(),
|
|
n.$nextBtn.remove(),
|
|
n.$prevBtn = i.find(".btn-prev").eq(0).on(ace.click_event, function() {
|
|
n.previous()
|
|
}).attr("disabled", "disabled"),
|
|
n.$nextBtn = i.find(".btn-next").eq(0).on(ace.click_event, function() {
|
|
n.next()
|
|
}).removeAttr("disabled"),
|
|
n.nextText = n.$nextBtn.text();
|
|
var s = t && (t.selectedItem && t.selectedItem.step || t.step);
|
|
s && (n.currentStep = s,
|
|
n.setState())
|
|
}),
|
|
this
|
|
}
|
|
}(window.jQuery);
|