Seditio Source
Root |
./othercms/xenForo 2.2.8/js/xf/inline_mod.min.js
'use strict';!function(g,n,l,p){XF.InlineMod=XF.Element.newHandler({options:{type:null,href:null,searchTarget:null,cookieBase:"inlinemod",cookieSizeLimit:3072,toggle:"input[type=checkbox].js-inlineModToggle",toggleContainer:".js-inlineModContainer",containerClass:"is-mod-selected",actionTrigger:".js-inlineModTrigger",counter:".js-inlineModCounter",viewport:"body"},cookie:null,$action:null,xhr:null,$searchTarget:null,init:function(){if(this.options.type){this.options.href||console.error("No inline mod href specified");
var a=this.options.searchTarget;if("*"===a)var b=g(l);else a&&a.length?(b=XF.findRelativeIf(a,this.$target),b.length||(console.error("Search target %s not found, falling back to children",a),b=this.$target)):b=this.$target;this.$searchTarget=b;this.cookie=this.options.cookieBase+"_"+this.options.type;b.on("click",this.options.toggle,XF.proxy(this,"onToggle"));b.on("click",this.options.actionTrigger,XF.proxy(this,"onActionTrigger"));a=this.getCookieValue();this._initialLoad(a);this._updateCounter(a.length);
var c=this;setTimeout(function(){g(l).on("xf:reinit",function(d,e){c.$searchTarget.has(e)&&g(e).find(c.options.toggle).length&&c.recalculateFromCookie()})},0)}else console.error("No inline mod type specified")},_initialLoad:function(a){var b=this.getToggles();b.each(function(){g(this).prop("checked",!1)});var c={};if(a.length){b.each(function(){var f=g(this);c[f.val()]=f});b=a.length;for(var d,e=0;e<b;e++)d=a[e],c[d]&&(c[d].prop("checked",!0),this.toggleContainer(c[d],!0))}},getToggles:function(){return this.$searchTarget.find(this.options.toggle)},
recalculateFromCookie:function(){for(var a=this.getCookieValue(),b=a.length,c={},d=this,e=0;e<b;e++)c[a[e]]=!0;this.getToggles().each(function(){var f=g(this),h=f.is(":checked"),k=c[f.val()]?!0:!1;h&&!k?(f.prop("checked",!1),d.toggleContainer(f,!1)):!h&&k&&(f.prop("checked",!0),d.toggleContainer(f,!0))})},deselect:function(){this.setCookieValue([]);this.recalculateFromCookie();this.hideBar()},selectAll:function(){var a=this.getCookieValue(),b=this;this.getToggles().each(function(){var c=parseInt(g(this).val(),
10);if(-1===g.inArray(c,a)){var d=b.getCookieValue();a.push(c);if(XF.Cookie.getEncodedCookieValueSize(b.cookie,a.join(","))>b.options.cookieSizeLimit)return a=d,XF.flashMessage(XF.phrase("you_have_exceeded_maximum_number_of_selectable_items"),3E3),!1;b.setCookieValue(a)}});this.recalculateFromCookie();return a},deselectPage:function(){var a=this.getCookieValue(),b=[],c=[];this.getToggles().each(function(){c.push(parseInt(g(this).val(),10))});for(var d=0;d<a.length;d++)-1===g.inArray(a[d],c)&&b.push(a[d]);
this.setCookieValue(b);this.recalculateFromCookie();b.length?this.loadBar():this.hideBar();return b},onToggle:function(a){a=g(a.target);var b=a.is(":checked"),c=this.getCookieValue();var d=this.toggleSelectedInCookie(a.val(),b);d.length!==c.length?this.toggleContainer(a,b):a.prop("checked",!1);d.length?this.loadBar():this.hideBar()},onActionTrigger:function(a){a.preventDefault();this.loadBar()},loadBar:function(a){var b=this;this.loadTimeout&&clearTimeout(this.loadTimeout);this.loadTimeout=setTimeout(function(){b.xhr&&
b.xhr.abort();b.xhr=XF.ajax("GET",b.options.href,{type:b.options.type},function(c){b._showBar(c,a)})},10)},_showBar:function(a,b){this.xhr=null;if(a.html){var c=this;XF.setupHtmlInsert(a.html,function(d,e,f){e=!1;c.$bar&&(e=!0,c.$bar.remove(),c.$bar=null);c._setupBar(d);c.$bar=d;XF.bottomFix(d);if(XF.browser.ios){var h=g('<div class="inlineModBarCover" />'),k=c.$bar,m=k.find(".js-inlineModAction");h.click(function(){m.blur()});m.on({focus:function(){k.before(h)},blur:function(){setTimeout(function(){h.remove()},
200)}})}e&&d.css("transition-duration","0s");d.addClassTransitioned("is-active");e&&setTimeout(function(){d.css("transition-duration","")},0);b&&b(d)})}},_setupBar:function(a){a.on("click",":submit",XF.proxy(this,"submit")).on("click",".js-inlineModClose",XF.proxy(this,"hideBar")).on("click",".js-inlineModSelectAll",XF.proxy(this,"onSelectAllClick"));var b=this.getToggles();b.length==b.filter(":checked").length&&a.find("input[type=checkbox].js-inlineModSelectAll").prop("checked",!0)},onSelectAllClick:function(a){g(a.target).is(":checked")?
this.selectAll().length?this.loadBar(function(b){b.find("input[type=checkbox].js-inlineModSelectAll").prop("checked",!0)}):this.deselect():this.deselectPage()},submit:function(){if(this.$bar){var a=this.$bar.find(".js-inlineModAction");if(a.length){if(a=a.val())if("deselect"==a)this.deselect();else{var b=this;XF.ajax("POST",this.options.href,{type:this.options.type,action:a},function(c){b._handleSubmitResponse(c)},{skipDefaultSuccess:!0})}}else console.error("No action selector found.")}},_handleSubmitResponse:function(a){a.html?
XF.setupHtmlInsert(a.html,function(b,c){b=XF.getOverlayHtml({html:b,title:c.h1||c.title});XF.showOverlay(b)}):"ok"==a.status&&a.redirect?a.message?XF.flashMessage(a.message,1E3,function(){XF.redirect(a.redirect)}):XF.redirect(a.redirect):XF.alert("Unexpected response");this.hideBar()},hideBar:function(){if(this.$bar){var a=this;this.$bar.removeClassTransitioned("is-active",function(){a.$bar&&a.$bar.remove();a.$bar=null})}},_updateCounter:function(a){var b=this.$searchTarget.find(this.options.actionTrigger),
c=b.find(".inlineModButton");c.length||(c=b);c.toggleClass("is-mod-active",0<a);this.$searchTarget.find(this.options.counter).text(a)},toggleContainer:function(a,b){b=b?"addClass":"removeClass";a.closest(this.options.toggleContainer)[b](this.options.containerClass)},toggleSelectedInCookie:function(a,b){a=parseInt(a,10);var c=this.getCookieValue(),d=this.getCookieValue(),e=g.inArray(a,c),f=!1;b?0>e&&(c.push(a),XF.Cookie.getEncodedCookieValueSize(this.cookie,c.join(","))>this.options.cookieSizeLimit?
(c=d,f=!1,XF.flashMessage(XF.phrase("you_have_exceeded_maximum_number_of_selectable_items"),3E3)):f=!0):0<=e&&(c.splice(e,1),f=!0);return f?this.setCookieValue(c):c},getCookieValue:function(){var a=XF.Cookie.get(this.cookie);if(!a)return[];a=a.split(",");for(var b=a.length,c=0;c<b;c++)a[c]=parseInt(a[c],10);return a},setCookieValue:function(a){a.length?(a.sort(function(b,c){return b-c}),XF.Cookie.set(this.cookie,a.join(","))):XF.Cookie.remove(this.cookie);this._updateCounter(a.length);return a}});
XF.Element.register("inline-mod","XF.InlineMod")}(jQuery,window,document);