trinte-themes
Version:
Bootswatch Themes for TrinteJS Javascript MVC Framework
4 lines (2 loc) • 3.43 kB
JavaScript
var Application=Application||{};Application.Core=function(){return this.pathname=window.location.pathname,this.origin=window.location.origin,this.csrf_token=$("meta[name=x-csrf-token]").attr("content"),this.csrf_param=$("meta[name=x-csrf-param]").attr("content"),this},Application.Core.prototype.buildModal=function(t,a){var e=this,i="",r="",n="",o="",l=$("#dialog-confirm");if(a)if(a.action){var o,d=$("#modal-templates");switch(a.action){case"delete":o=d.find(".modal-delete");break;case"save":o=d.find(".modal-save")}var c=t.attr("href"),p=c.split("/")||[],s=p[p.length-2]||"",f=p[p.length-1]||"";i=o.find(".header-text").html().replace(/%s/gi,s).replace(/%d/gi,f),r=o.find(".body-text").html().replace(/%s/gi,s).replace(/%d/gi,f),n=o.find(".btn-text").html().replace(/%s/gi,s).replace(/%d/gi,f)}else i=a.title||"",r=a.body||"",n=a.btnText||"";l.attr("title",i),l.find("#dialog-confirm-header").html(i),l.find(".modal-body").html(r),l.find(".btn-confirm-ok").click(function(a){e.callRemote(t)}).html(n),l.on("hidden",function(){l.find(".btn-confirm-ok").unbind("click")}),l.modal("hide"),l.modal("show")},Application.Core.prototype.callRemote=function(el){var app=this,method=el.attr("method")||el.attr("data-method")||"GET",url=el.attr("action")||el.attr("href"),dataType=el.attr("data-type")||"script";if(el.attr("data-jsonp")&&(dataType="text"),void 0===url)throw"No URL specified for remote call (action or href must be present).";if(el.triggerAndReturn("ajax:before")){for(var data=el.is("form")?el.serializeArray():[],found=!1,i=data.length-1;i>=0;i-=1)data[i].name===app.csrf_param&&(found=!0);found||data.push({name:app.csrf_param,value:app.csrf_token}),$.ajax({url:url,data:data,dataType:dataType,type:method.toUpperCase(),beforeSend:function(t){el.trigger("ajax:loading",t)},success:function(data,status,xhr){el.attr("data-jsonp")&&eval(el.attr("data-jsonp")+"("+data+")"),el.trigger("ajax:success",[data,status,xhr])},complete:function(t){el.trigger("ajax:complete",t)},error:function(t,a,e){el.trigger("ajax:failure",[t,a,e])}})}el.trigger("ajax:after")},Application.Core.prototype.jsonp=function(){var t=this;$("a[data-remote]").bind("click",function(a){var e=$(this);a.preventDefault(),e.attr("data-confirm")?t.buildModal(e,{action:"delete"}):t.callRemote(e)})},Application.Core.prototype.menuActivator=function(){var t=this,a=t.pathname,e=new RegExp("/"===a?t.origin+"/?$":a.replace(/\/$/,""));$(".navbar-inner ul.nav li a").each(function(t){var a=$(this);e.test(a.attr("href").replace(/\/$/,""))&&a.parent().addClass("active")})},Application.Core.prototype.typeahead=function(){var t=$('input[data-provide="typeahead"]');if(t.length){var a=t.data("url"),e=t.data("field"),i=t.data("singular").replace("new","");t.typeahead({onSelect:function(t){window.location=i+"/"+t.value},ajax:{url:a+".json",method:"GET",timeout:300,displayField:e,triggerLength:1,loadingClass:"ajax-loading",preDispatch:function(t){return{search:t}},preProcess:function(a){if(a.success===!1)return!1;setTimeout(function(){$("ul.typeahead").css({width:1.06*parseInt(t.width())})},5);var e=a.items?a.items:a;return e||[]}}})}},Application.Core.prototype.start=function(){var t=this;return t.menuActivator(),t.jsonp(),t.typeahead(),t},$(function(){$.fn.extend({triggerAndReturn:function(t,a){var e=new $.Event(t);return this.trigger(e,a),e.result!==!1}});var t=(new Application.Core).start();window.App=t});
//# sourceMappingURL=app.min.js.map