diff --git a/src/dist/js/script.min.js b/src/dist/js/script.min.js index 8165aaf9..534de8ae 100644 --- a/src/dist/js/script.min.js +++ b/src/dist/js/script.min.js @@ -11,5 +11,5 @@ this.compileChildren(t,e);var n,r=t.opcodes;this.i=0;for(var o=r.length;this.ithis.$items.length-1||0>e?void 0:this.sliding?this.$element.one("slid",function(){i.to(e)}):o==e?this.pause().cycle():this.slide(e>o?"next":"prev",t(this.$items[e]))},e.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition.end&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},e.prototype.next=function(){return this.sliding?void 0:this.slide("next")},e.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},e.prototype.slide=function(e,i){var o=this.$element.find(".item.active"),n=i||o[e](),s=this.interval,a="next"==e?"left":"right",r="next"==e?"first":"last",l=this;if(!n.length){if(!this.options.wrap)return;n=this.$element.find(".item")[r]()}this.sliding=!0,s&&this.pause();var h=t.Event("slide.bs.carousel",{relatedTarget:n[0],direction:a});if(!n.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var e=t(l.$indicators.children()[l.getActiveIndex()]);e&&e.addClass("active")})),t.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(h),h.isDefaultPrevented())return;n.addClass(e),n[0].offsetWidth,o.addClass(a),n.addClass(a),o.one(t.support.transition.end,function(){n.removeClass([e,a].join(" ")).addClass("active"),o.removeClass(["active",a].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(h),h.isDefaultPrevented())return;o.removeClass("active"),n.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var i=t.fn.carousel;t.fn.carousel=function(i){return this.each(function(){var o=t(this),n=o.data("bs.carousel"),s=t.extend({},e.DEFAULTS,o.data(),"object"==typeof i&&i),a="string"==typeof i?i:s.slide;n||o.data("bs.carousel",n=new e(this,s)),"number"==typeof i?n.to(i):a?n[a]():s.interval&&n.pause().cycle()})},t.fn.carousel.Constructor=e,t.fn.carousel.noConflict=function(){return t.fn.carousel=i,this},t(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(e){var i,o=t(this),n=t(o.attr("data-target")||(i=o.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,"")),s=t.extend({},n.data(),o.data()),a=o.attr("data-slide-to");a&&(s.interval=!1),n.carousel(s),(a=o.attr("data-slide-to"))&&n.data("bs.carousel").to(a),e.preventDefault()}),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var e=t(this);e.carousel(e.data())})})}(window.jQuery),+function(t){"use strict";var e=function(i,o){this.$element=t(i),this.options=t.extend({},e.DEFAULTS,o),this.transitioning=null,this.options.parent&&(this.$parent=t(this.options.parent)),this.options.toggle&&this.toggle()};e.DEFAULTS={toggle:!0},e.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},e.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var e=t.Event("show.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var i=this.$parent&&this.$parent.find("> .panel > .in");if(i&&i.length){var o=i.data("bs.collapse");if(o&&o.transitioning)return;i.collapse("hide"),o||i.data("bs.collapse",null)}var n=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[n](0),this.transitioning=1;var s=function(){this.$element.removeClass("collapsing").addClass("in")[n]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return s.call(this);var a=t.camelCase(["scroll",n].join("-"));this.$element.one(t.support.transition.end,t.proxy(s,this)).emulateTransitionEnd(350)[n](this.$element[0][a])}}},e.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var e=t.Event("hide.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var i=this.dimension();this.$element[i](this.$element[i]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var o=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return t.support.transition?void this.$element[i](0).one(t.support.transition.end,t.proxy(o,this)).emulateTransitionEnd(350):o.call(this)}}},e.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var i=t.fn.collapse;t.fn.collapse=function(i){return this.each(function(){var o=t(this),n=o.data("bs.collapse"),s=t.extend({},e.DEFAULTS,o.data(),"object"==typeof i&&i);n||o.data("bs.collapse",n=new e(this,s)),"string"==typeof i&&n[i]()})},t.fn.collapse.Constructor=e,t.fn.collapse.noConflict=function(){return t.fn.collapse=i,this},t(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(e){var i,o=t(this),n=o.attr("data-target")||e.preventDefault()||(i=o.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,""),s=t(n),a=s.data("bs.collapse"),r=a?"toggle":o.data(),l=o.attr("data-parent"),h=l&&t(l);a&&a.transitioning||(h&&h.find('[data-toggle=collapse][data-parent="'+l+'"]').not(o).addClass("collapsed"),o[s.hasClass("in")?"addClass":"removeClass"]("collapsed")),s.collapse(r)})}(window.jQuery),+function(t){"use strict";function e(){t(o).remove(),t(n).each(function(e){var o=i(t(this));o.hasClass("open")&&(o.trigger(e=t.Event("hide.bs.dropdown")),e.isDefaultPrevented()||o.removeClass("open").trigger("hidden.bs.dropdown"))})}function i(e){var i=e.attr("data-target");i||(i=e.attr("href"),i=i&&/#/.test(i)&&i.replace(/.*(?=#[^\s]*$)/,""));var o=i&&t(i);return o&&o.length?o:e.parent()}var o=".dropdown-backdrop",n="[data-toggle=dropdown]",s=function(e){t(e).on("click.bs.dropdown",this.toggle)};s.prototype.toggle=function(o){var n=t(this);if(!n.is(".disabled, :disabled")){var s=i(n),a=s.hasClass("open");if(e(),!a){if("ontouchstart"in document.documentElement&&!s.closest(".navbar-nav").length&&t(''}),e.prototype=t.extend({},t.fn.tooltip.Constructor.prototype),e.prototype.constructor=e,e.prototype.getDefaults=function(){return e.DEFAULTS},e.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();t.find(".popover-title")[this.options.html?"html":"text"](e),t.find(".popover-content")[this.options.html?"html":"text"](i),t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},e.prototype.hasContent=function(){return this.getTitle()||this.getContent()},e.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},e.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},e.prototype.tip=function(){return this.$tip||(this.$tip=t(this.options.template)),this.$tip};var i=t.fn.popover;t.fn.popover=function(i){return this.each(function(){var o=t(this),n=o.data("bs.popover"),s="object"==typeof i&&i;n||o.data("bs.popover",n=new e(this,s)),"string"==typeof i&&n[i]()})},t.fn.popover.Constructor=e,t.fn.popover.noConflict=function(){return t.fn.popover=i,this}}(window.jQuery),+function(t){"use strict";function e(i,o){var n,s=t.proxy(this.process,this);this.$element=t(t(i).is("body")?window:i),this.$body=t("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",s),this.options=t.extend({},e.DEFAULTS,o),this.selector=(this.options.target||(n=t(i).attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=t([]),this.targets=t([]),this.activeTarget=null,this.refresh(),this.process()}e.DEFAULTS={offset:10},e.prototype.refresh=function(){var e=this.$element[0]==window?"offset":"position";this.offsets=t([]),this.targets=t([]);{var i=this;this.$body.find(this.selector).map(function(){var o=t(this),n=o.data("target")||o.attr("href"),s=/^#\w/.test(n)&&t(n);return s&&s.length&&[[s[e]().top+(!t.isWindow(i.$scrollElement.get(0))&&i.$scrollElement.scrollTop()),n]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){i.offsets.push(this[0]),i.targets.push(this[1])})}},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,o=i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(e>=o)return a!=(t=s.last()[0])&&this.activate(t);for(t=n.length;t--;)a!=s[t]&&e>=n[t]&&(!n[t+1]||e<=n[t+1])&&this.activate(s[t])},e.prototype.activate=function(e){this.activeTarget=e,t(this.selector).parents(".active").removeClass("active");var i=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]',o=t(i).parents("li").addClass("active");o.parent(".dropdown-menu").length&&(o=o.closest("li.dropdown").addClass("active")),o.trigger("activate")};var i=t.fn.scrollspy;t.fn.scrollspy=function(i){return this.each(function(){var o=t(this),n=o.data("bs.scrollspy"),s="object"==typeof i&&i;n||o.data("bs.scrollspy",n=new e(this,s)),"string"==typeof i&&n[i]()})},t.fn.scrollspy.Constructor=e,t.fn.scrollspy.noConflict=function(){return t.fn.scrollspy=i,this},t(window).on("load",function(){t('[data-spy="scroll"]').each(function(){var e=t(this);e.scrollspy(e.data())})})}(window.jQuery),+function(t){"use strict";var e=function(e){this.element=t(e)};e.prototype.show=function(){var e=this.element,i=e.closest("ul:not(.dropdown-menu)"),o=e.attr("data-target");if(o||(o=e.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,"")),!e.parent("li").hasClass("active")){var n=i.find(".active:last a")[0],s=t.Event("show.bs.tab",{relatedTarget:n});if(e.trigger(s),!s.isDefaultPrevented()){var a=t(o);this.activate(e.parent("li"),i),this.activate(a,a.parent(),function(){e.trigger({type:"shown.bs.tab",relatedTarget:n})})}}},e.prototype.activate=function(e,i,o){function n(){s.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),e.addClass("active"),a?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu")&&e.closest("li.dropdown").addClass("active"),o&&o()}var s=i.find("> .active"),a=o&&t.support.transition&&s.hasClass("fade");a?s.one(t.support.transition.end,n).emulateTransitionEnd(150):n(),s.removeClass("in")};var i=t.fn.tab;t.fn.tab=function(i){return this.each(function(){var o=t(this),n=o.data("bs.tab");n||o.data("bs.tab",n=new e(this)),"string"==typeof i&&n[i]()})},t.fn.tab.Constructor=e,t.fn.tab.noConflict=function(){return t.fn.tab=i,this},t(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(e){e.preventDefault(),t(this).tab("show")})}(window.jQuery),+function(t){"use strict";var e=function(i,o){this.options=t.extend({},e.DEFAULTS,o),this.$window=t(window).on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(i),this.affixed=this.unpin=null,this.checkPosition()};e.RESET="affix affix-top affix-bottom",e.DEFAULTS={offset:0},e.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},e.prototype.checkPosition=function(){if(this.$element.is(":visible")){var i=t(document).height(),o=this.$window.scrollTop(),n=this.$element.offset(),s=this.options.offset,a=s.top,r=s.bottom;"object"!=typeof s&&(r=a=s),"function"==typeof a&&(a=s.top()),"function"==typeof r&&(r=s.bottom());var l=null!=this.unpin&&o+this.unpin<=n.top?!1:null!=r&&n.top+this.$element.height()>=i-r?"bottom":null!=a&&a>=o?"top":!1;this.affixed!==l&&(this.unpin&&this.$element.css("top",""),this.affixed=l,this.unpin="bottom"==l?n.top-o:null,this.$element.removeClass(e.RESET).addClass("affix"+(l?"-"+l:"")),"bottom"==l&&this.$element.offset({top:document.body.offsetHeight-r-this.$element.height()}))}};var i=t.fn.affix;t.fn.affix=function(i){return this.each(function(){var o=t(this),n=o.data("bs.affix"),s="object"==typeof i&&i;n||o.data("bs.affix",n=new e(this,s)),"string"==typeof i&&n[i]()})},t.fn.affix.Constructor=e,t.fn.affix.noConflict=function(){return t.fn.affix=i,this},t(window).on("load",function(){t('[data-spy="affix"]').each(function(){var e=t(this),i=e.data();i.offset=i.offset||{},i.offsetBottom&&(i.offset.bottom=i.offsetBottom),i.offsetTop&&(i.offset.top=i.offsetTop),e.affix(i)})})}(window.jQuery); !function(t){"use strict";var e={defaultLocale:"en",locale:"en",placeholder:/(?:\{\{|%\{)(.*?)(?:\}\}?)/gm,translations:{}};t.init=function(){for(var n in e)t[n]="undefined"!=typeof t[n]?t[n]:e[n]},t.init(),t.translateInlineHTML=function(){[].forEach.call(document.querySelectorAll("[data-y18n]"),function(e){e.innerHTML=t.translate(e.getAttribute("data-y18n"))}),[].forEach.call(document.querySelectorAll("[data-y18n-title]"),function(e){e.title=t.translate(e.getAttribute("data-y18n-title"))})},t.translate=function(e,n){n=n||{locale:t.locale},n.locale=n.locale||t.locale;var l=this.lookup(e,n);return"undefined"!=typeof l&&l!==e||n.locale===t.defaultLocale?l?l.printf(n):e:(n.locale=t.defaultLocale,this.translate(e,n))},t.lookup=function(e,n){return"undefined"==typeof n.locale&&(n.locale=t.locale),"undefined"!=typeof t.translations[n.locale]&&"undefined"!=typeof t.translations[n.locale][e]?t.translations[n.locale][e]:void 0},t.t=t.translate}("undefined"==typeof exports?this.y18n||(this.y18n={}):exports),String.prototype.printf=function(t){var e=!1,n=arguments,l=-1;return"string"==typeof n[0]&&(e=!0),t instanceof Array||e?this.replace(/\%s/g,function(a,o){if(l++,e){if("string"==typeof n[l])return n[l];throw new Error("Arguments element is an invalid type")}return t[l]}):this.replace(/{([^{}]*)}/g,function(e,n){var l=t[n];return"string"==typeof l||"number"==typeof l?l:e})}; -var app=Sammy("#main",function(a){a.use("Handlebars","ms"),Handlebars.registerHelper("ucwords",function(a){return(a+"").replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g,function(a){return a.toUpperCase()})}),Handlebars.registerHelper("humanSize",function(a){var e=["Bytes","KB","MB","GB","TB"];if(0===a)return"n/a";var s=parseInt(Math.floor(Math.log(a)/Math.log(1024)));return Math.round(a/Math.pow(1024,s),2)+" "+e[[s]]}),Handlebars.registerHelper("humanTime",function(a){return Math.round(a)+"s"}),Handlebars.registerHelper("bitRate",function(a,e){var s=["b","Kb","Mb","Gb","Tb"];if(0===e)return"n/a";var n=a/e*8,t=parseInt(Math.floor(Math.log(n)/Math.log(1024)));return Math.round(n/Math.pow(1024,t),2)+" "+s[[t]]+"/s"}),Handlebars.registerHelper("t",function(a){var e=y18n.t(a,Array.prototype.slice.call(arguments,1));return new Handlebars.SafeString(e)});var e;e=Sammy.Store.isAvailable("session")?"session":Sammy.Store.isAvailable("cookie")?"cookie":"memory";var s=new Sammy.Store({name:"storage",type:e}),n=!1,t=3;a.helpers({serialize:function(a){var e=[];for(var s in a)a.hasOwnProperty(s)&&e.push(encodeURIComponent(s)+"="+encodeURIComponent(a[s]));return e.join("&")},flash:function(a,e){s.get("flash")||s.set("flash",!0),$("#slider").addClass("with-flashMessage"),"info"===a&&"+"===e.charAt(0)&&(a="log"),$("#flashMessage .messages").prepend('

'+e+"

")},checkInstall:function(a){domain=window.location.hostname,$.ajax({dataType:"json",url:"https://"+domain+"/yunohost/api/installed",timeout:3e3}).success(function(e){a(e.installed)}).fail(function(){a(void 0)})},api:function(a,e,t,i,r){c=this,call=function(a,e,t,i){t="undefined"!=typeof t?t:"GET",i="undefined"!=typeof i?i:{},window.navigator&&window.navigator.language&&"undefined"==typeof i.locale&&(i.locale=y18n.locale||window.navigator.language.substr(0,2));var r=i;if("/postinstall"===a){var o=!1;setInterval(function(){o=!0},1500)}n=!1,0===$("div.loader").length&&setInterval(function(){n||0!==$("div.loader").length||$("#main").append('
')},500),jQuery.ajax({url:"https://"+s.get("url")+a,type:t,crossdomain:!0,data:i,traditional:!0,dataType:"json"}).always(function(a,e,s){}).done(function(a){a=a||{},e(a)}).fail(function(n){200==n.status?e({}):401==n.status?"/login"===a?c.flash("fail",y18n.t("wrong_password")):(c.flash("fail",y18n.t("unauthorized")),c.redirect("#/login")):"undefined"!=typeof n.responseJSON?c.flash("fail",n.responseJSON.error):"undefined"!=typeof n.responseText&&"/postinstall"!==a?c.flash("fail",n.responseText):"/postinstall"===a?o?(interval=window.location.hostname===r.domain?2e4:5e3,checkInstall=setInterval(function(){c.checkInstall(function(a){(a||"undefined"==typeof a)&&(c.flash("success",y18n.t("installation_complete")),clearInterval(checkInstall),window.location.href="https://"+window.location.hostname+"/yunohost/admin/")})},interval)):c.flash("fail",y18n.t("error_occured")):c.flash("fail",y18n.t("error_server")),"/postinstall"!==a&&(s.clear("slide"),c.view(s.get("path-1"),null,null,!1))})},r="undefined"!=typeof r?r:!0,r?(ws=new WebSocket("wss://"+s.get("url")+"/messages"),ws.onmessage=function(a){$.each($.parseJSON(a.data),function(a,e){c.flash(a,e)})},ws.onerror=ws.onopen,ws.onclose=function(){},ws.onopen=call(a,e,t,i)):call(a,e,t,i)},view:function(a,e,t,i){if(t="undefined"!=typeof t?t:function(){},rendered=this.render("views/"+a+".ms",e),i="undefined"!=typeof i?i:!0,n=!0,$("div.loader").remove(),$("#modal").modal("hide"),$("#flashModal").modal("hide"),i){var r=function(){rendered.swap(function(){$(".slide, .btn-breadcrumb a:not(:last-child)").on("click",function(){$(this).addClass("active"),$(this).hasClass("back")||$(this).parent(".btn-breadcrumb").length?s.set("slide","back"):s.set("slide","to")}),t(),$("html, body").scrollTop(0),setTimeout(function(){$("body").resize()},210)})};blockSize=$("#slider").width(),"back"==s.get("slide")?(s.clear("slide"),$("#slideBack").css("display","none"),$("#slider-container").removeClass("move").css("margin-left","-"+blockSize+"px"),$("#slideTo").show().html($("#main").html()),r(),$("#slider-container").addClass("move").css("margin-left","0px")):"to"==s.get("slide")?(s.clear("slide"),$("#slideTo").css("display","none"),$("#slider-container").removeClass("move").css("margin-left","-"+blockSize+"px"),$("#slider-container").removeClass("move").css("margin-left","0px"),$("#slideBack").show().html($("#main").html()),r(),$("#slider-container").addClass("move").css("margin-left","-"+blockSize+"px")):r()}else rendered.swap(function(){t(),$("html, body").scrollTop(0),$("body").resize()})},confirm:function(a,e,s,n){return s="undefined"!=typeof s?s:function(){},n="undefined"!=typeof n?n:function(){},box=$("#modal"),"string"==typeof a&&a.length?$(".title",box).html(a):box.addClass("no-title"),$(".content",box).html(e),$("footer button",box).click(function(a){a.preventDefault(),$("#modal footer button").unbind("click"),box.removeClass("no-title").modal("hide"),"confirm"==$(this).data("action")?s():n()}),box.modal("show")},arraySortById:function(a){a.sort(function(a,e){return a.id>e.id?1:a.id'+y18n.t("read_more")+")";a.flash("warning",l),s.push(o.guid)}}),$.cookie("ynhSecurityViewedItems",s,{expire:7})}).fail(function(){a.flash("fail",y18n.t("error_retrieve_feed",[s]))}),a.view("home")})}),a.get("#/login",function(a){$("#masthead").show(),$(".logout-button").hide(),s.set("path-1","#/login"),0===$("div.loader").length&&setInterval(function(){n||0!==$("div.loader").length||$("#main").append('
')},500),a.checkInstall(function(e){e?(domain=window.location.hostname,$("div.loader").remove(),a.view("login",{domain:domain})):"undefined"==typeof e?t>0?(t--,n=!1,setTimeout(function(){a.redirect("#/")},5e3)):(t=3,$(document).ajaxError(function(e,s,n){200!==s.status&&a.flash("fail",y18n.t("api_not_responding",[s.status+" "+s.statusText])),$(document).off("ajaxError")}),n=!0,$("div.loader").remove()):($("div.loader").remove(),a.redirect("#/postinstall"))})}),a.post("#/login",function(a){s.set("url",a.params.domain+"/yunohost/api"),params={password:a.params.password},a.api("/login",function(e){s.set("connected",!0),$(".logout-button").fadeIn(),a.flash("success",y18n.t("logged_in")),a.redirect(s.get("path")?s.get("path"):"#/")},"POST",params,!1)}),a.get("#/logout",function(a){a.api("/logout",function(e){s.clear("url"),s.clear("connected"),s.set("path","#/"),a.flash("success",y18n.t("logged_out")),a.redirect("#/login")},"GET",{},!1)}),a.get("#/postinstall",function(a){$("#masthead").hide(),a.checkInstall(function(e){e||"undefined"==typeof e?a.redirect("#/login"):a.view("postinstall/postinstall_1")})}),a.get("#/postinstall/domain",function(a){$("#masthead").hide(),$.get("https://dyndns.yunohost.org/domains",function(){}).done(function(e){a.params.ddomains=e.map(function(a){return"."+a})}).fail(function(){a.params.ddomains=[".nohost.me",".noho.st"]}).always(function(){a.view("postinstall/postinstall_2",a.params,function(){$("#domain, #ddomain").keyup(function(a){13==a.keyCode&&$("a.savedomain").click()}),$("a.savedomain").on("click",function(e){""===$("#domain").val()?""===$("#ddomain").val()?(e.preventDefault(),s.clear("slide"),a.flash("fail",y18n.t("error_select_domain"))):domain=$("#ddomain").val()+$('select[name="ddomain-ext"]').val():domain=$("#domain").val(),s.set("maindomain",domain)})})})}),a.get("#/postinstall/password",function(a){$("#masthead").hide(),$("#flash .alert").remove(),s.get("maindomain")?a.view("postinstall/postinstall_3",{domain:s.get("maindomain").toLowerCase()}):(s.clear("slide"),a.redirect("#/postinstall/domain"))}),a.post("#/postinstall",function(a){""===a.params.password||""===a.params.confirmation?a.flash("fail",y18n.t("password_empty")):a.params.password==a.params.confirmation?(""===a.params.domain?(a.flash("fail",y18n.t("error_select_domain")),s.clear("slide"),a.redirect("#/postinstall/domain")):params={domain:a.params.domain.toLowerCase()},a.confirm(y18n.t("postinstall"),y18n.t("confirm_postinstall",[a.params.domain]),function(){params.password=a.params.password,s.set("url",window.location.hostname+"/yunohost/api"),s.set("user","admin"),a.api("/postinstall",function(e){a.redirect("#/login")},"POST",params)},function(){})):a.flash("fail",y18n.t("passwords_dont_match"))}),a.get("#/users",function(a){a.api("/users",function(e){a.view("user/user_list",e)})}),a.get("#/users/create",function(a){a.api("/domains",function(e){a.view("user/user_create",e)})}),a.post("#/users",function(a){a.params.password==a.params.confirmation?a.params.password.length<4?(a.flash("fail",y18n.t("password_too_short")),s.clear("slide")):(a.params.mail=a.params.email+a.params.domain,a.api("/users",function(e){a.redirect("#/users")},"POST",a.params.toHash())):(a.flash("fail",y18n.t("passwords_dont_match")),s.clear("slide"))}),a.get("#/users/:user",function(a){a.api("/users/"+a.params.user,function(e){a.view("user/user_info",e)})}),a.get("#/users/:user/edit",function(a){a.api("/users/"+a.params.user,function(e){a.api("/domains",function(s){email=e.mail.split("@"),e.email={username:email[0],domain:email[1]},e.domains=[],$.each(s.domains,function(a,s){e.domains.push({domain:s,selected:s==e.email.domain?!0:!1})}),a.view("user/user_edit",e)})})}),a.put("#/users/:user",function(a){a.api("/users/"+a.params.user,function(e){a.params.mail=a.params.mail!==a.params.email+a.params.domain?a.params.email+a.params.domain:"",a.params.email=a.params.domain="","string"==typeof a.params.mailalias&&(a.params.mailalias=[a.params.mailalias]),"string"==typeof a.params.mailforward&&(a.params.mailforward=[a.params.mailforward]),a.params.add_mailalias=a.arrayDiff(a.params.mailalias,e["mail-aliases"]),a.params.remove_mailalias=a.arrayDiff(e["mail-aliases"],a.params.mailalias),a.params.add_mailforward=a.arrayDiff(a.params.mailforward,e["mail-forward"]),a.params.remove_mailforward=a.arrayDiff(e["mail-forward"],a.params.mailforward),a.params.mailalias=a.params.mailforward="",params={},$.each(a.params.toHash(),function(a,e){e.length>0&&"user"!==a&&(params[a]=e)}),$.isEmptyObject(params)?(a.flash("fail",y18n.t("error_modify_something")),s.clear("slide"),a.redirect("#/users/"+a.params.user+"/edit")):params.password?params.password==params.confirmation?params.password.length<4?(a.flash("fail",y18n.t("password_too_short")),s.clear("slide"),a.redirect("#/users/"+a.params.user+"/edit")):(params.change_password=params.password,a.api("/users/"+a.params.user,function(e){a.redirect("#/users/"+a.params.user)},"PUT",params)):(a.flash("fail",y18n.t("passwords_dont_match")),s.clear("slide"),a.redirect("#/users/"+a.params.user+"/edit")):a.api("/users/"+a.params.user,function(e){a.redirect("#/users/"+a.params.user)},"PUT",params)},"GET")}),a.get("#/users/:user/delete",function(a){a.confirm(y18n.t("users"),y18n.t("confirm_delete",[a.params.user]),function(){a.api("/users/"+a.params.user,function(e){a.redirect("#/users")},"DELETE")},function(){s.clear("slide"),a.redirect("#/users/"+a.params.user)})}),a.get("#/domains",function(a){a.api("/domains",function(e){a.api("/domains/main",function(s){domains=[],$.each(e.domains,function(a,e){domains.push({url:e,main:e==s.current_main_domain?!0:!1})}),main_domain_form=domains.length>1?!0:!1,domains.sort(function(a,e){return-2*a.main+1}),a.view("domain/domain_list",{domains:domains,main_domain_form:main_domain_form})},"PUT")})}),a.get("#/domains/add",function(a){$.get("https://dyndns.yunohost.org/domains",function(){}).done(function(e){a.params.ddomains=e.map(function(a){return"."+a})}).fail(function(){a.params.ddomains=[".nohost.me",".noho.st"]}).always(function(){data={ddomains:a.params.ddomains,domains:a.params.domains,allowDyndnsDomain:!0};var e=data.ddomains.join("|");$.each(data.domains,function(a,s){s.search(e)>0&&(data.allowDyndnsDomain=!1)}),a.view("domain/domain_add",data)})}),a.post("#/domains/add",function(a){""===a.params.domain?(""===a.params.ddomain&&(a.flash("fail",y18n.t("error_select_domain")),s.clear("slide"),a.redirect("#/domains/add")),params={domain:a.params.ddomain+a.params["ddomain-ext"]},endurl="dyndns"):(params={domain:a.params.domain},endurl=""),a.api("/domains?"+endurl,function(e){a.redirect("#/domains")},"POST",params)}),a.get("#/domains/:domain/delete",function(a){a.confirm(y18n.t("domains"),y18n.t("confirm_delete",[a.params.domain]),function(){a.api("/domains/"+a.params.domain,function(e){s.clear("slide"),a.redirect("#/domains")},"DELETE")},function(){s.clear("slide"),a.redirect("#/domains")})}),a.post("#/domains",function(a){""===a.params.domain?(a.flash("fail",y18n.t("error_select_domain")),s.clear("slide"),a.redirect("#/domains")):a.confirm(y18n.t("domains"),y18n.t("confirm_change_maindomain"),function(){params={new_domain:a.params.domain},a.api("/domains/main",function(e){s.clear("slide"),a.redirect("#/domains")},"PUT",params),refreshDomain=window.setTimeout(function(){s.clear("slide"),a.redirect("#/domains")},15e3)},function(){s.clear("slide"),a.redirect("#/domains")})}),a.get("#/apps",function(a){a.api("/apps",function(e){data2={apps:[],installed_apps:!0},$.each(e.apps,function(a,e){e.installed&&data2.apps.push(e)}),a.arraySortById(data2.apps),a.view("app/app_list",data2)})}),a.get("#/apps/install",function(a){a.api("/apps",function(e){a.api("/apps?raw",function(s){data2={apps:[],installed_apps:!1},$.each(e.apps,function(a,e){e.installed&&"true"!=s[e.id].manifest.multi_instance||e.id.match(/__[0-9]{1,5}$/)||(e.install_link=!0,data2.apps.push(e))}),a.arraySortById(data2.apps),a.view("app/app_list",data2)})})}),a.get("#/apps/refresh",function(a){a.api("/appslists",function(e){a.redirect("#/apps/install")},"PUT")}),a.get("#/apps/:app",function(a){a.api("/apps/"+a.params.app+"?raw",function(e){e.settings.allowed_users=e.settings.allowed_users?e.settings.allowed_users.replace(",",", ")+".":y18n.t("everyone_has_access"),e.description="undefined"!=typeof e.manifest.description[y18n.locale]?e.manifest.description[y18n.locale]:e.manifest.description.en,e.manifest.multi_instance=y18n.t("true"==e.manifest.multi_instance?"yes":"no");var s=new Date(1e3*e.settings.install_time);e.install_time=s.getDate()+"/"+(s.getMonth()+1)+"/"+s.getFullYear(),a.view("app/app_info",e)})}),a.get("#/apps/:app/debug",function(a){a.api("/apps/"+a.params.app+"/debug",function(e){a.view("app/app_debug",e)})}),a.get("#/apps/install/custom",function(a){a.redirect("#/apps/install")}),a.helper("appInstallForm",function(a,e,s){data={id:a,manifest:e},"undefined"!=typeof data.manifest.arguments.install&&$.each(data.manifest.arguments.install,function(a,e){data.manifest.arguments.install[a].type="undefined"!=typeof e.type?e.type:"string",data.manifest.arguments.install[a].inputType="text",data.manifest.arguments.install[a].required="undefined"!=typeof e.optional&&"true"==e.optional?"":"required","undefined"!=typeof data.manifest.arguments.install[a].choices&&$.each(data.manifest.arguments.install[a].choices,function(e,s){data.manifest.arguments.install[a].choices[e]={value:s,label:s,selected:s==data.manifest.arguments.install[a]["default"]?!0:!1}}),("domain"==e.name||"domain"==data.manifest.arguments.install[a].type)&&(data.manifest.arguments.install[a].choices=[],$.each(s.domains,function(e,s){data.manifest.arguments.install[a].choices.push({value:s,label:s,selected:!1})}),data.manifest.arguments.install[a].help=""+y18n.t("manage_domains")+""),("admin"==e.name||"user"==data.manifest.arguments.install[a].type)&&(data.manifest.arguments.install[a].choices=[],$.each(s.users,function(e,s){data.manifest.arguments.install[a].choices.push({value:e,label:s.fullname+" ("+s.mail+")",selected:!1})}),data.manifest.arguments.install[a].help=""+y18n.t("manage_users")+""),"app"==data.manifest.arguments.install[a].type&&(data.manifest.arguments.install[a].choices=[],$.each(s.apps,function(e,s){data.manifest.arguments.install[a].choices.push({value:s.id,label:s.name,selected:!1})}),data.manifest.arguments.install[a].help=""+y18n.t("manage_apps")+""),("password"==e.name||"password"==data.manifest.arguments.install[a].type)&&(data.manifest.arguments.install[a].inputType="password"),data.manifest.arguments.install[a].label="undefined"!=typeof data.manifest.arguments.install[a].ask[y18n.locale]?data.manifest.arguments.install[a].ask[y18n.locale]:data.manifest.arguments.install[a].ask.en}),data.description="undefined"!=typeof data.manifest.description[y18n.locale]?data.manifest.description[y18n.locale]:data.manifest.description.en,data.manifest.multi_instance=y18n.t("true"==data.manifest.multi_instance?"yes":"no"),c.view("app/app_install",data)}),a.get("#/apps/install/:app",function(a){a.api("/apps?raw",function(e){a.appInstallForm(a.params.app,e[a.params.app].manifest,a.params)})}),a.post("#/apps",function(a){"/"!==a.params.path||confirm(y18n.t("confirm_install_domain_root",[a.params.domain]))?(params={label:a.params.label,app:a.params.app},delete a.params.label,delete a.params.app,params.args=a.serialize(a.params.toHash()),""===params.args&&delete params.args,a.api("/apps",function(){a.redirect("#/apps")},"POST",params)):(a.flash("warning",y18n.t("app_install_cancel")),s.clear("slide"),a.redirect("#/apps/install"))}),a.post("#/apps/install/custom",function(a){params={label:a.params.label,app:a.params.url},delete a.params.label,delete a.params.url,a.confirm(y18n.t("applications"),y18n.t("confirm_install_custom_app"),function(){params.app=params.app.replace(/\/?$/,"/"),jQuery.ajax({url:params.app.replace("github.com","raw.githubusercontent.com")+"master/manifest.json",type:"GET"}).done(function(e){e=jQuery.parseJSON(e)||{},a.appInstallForm(params.app,e,a.params)}).fail(function(e){a.flash("fail",y18n.t("app_install_custom_no_manifest")),s.clear("slide"),a.redirect("#/apps/install")})},function(){a.flash("warning",y18n.t("app_install_cancel")),s.clear("slide"),a.redirect("#/apps/install")})}),a.get("#/apps/:app/uninstall",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_uninstall",[a.params.app]),function(){a.api("/apps/"+a.params.app,function(){a.redirect("#/apps")},"DELETE")},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app)})}),a.get("#/apps/:app/access",function(a){a.api("/apps/"+a.params.app+"?raw",function(e){a.api("/users",function(s){"undefined"!=typeof e.settings.allowed_users?e.settings.allowed_users=0===e.settings.allowed_users.length?[]:e.settings.allowed_users.split(","):(e.settings.allowed_users=[],e.settings.allow_everyone=!0),e.users=[],$.each(s.users,function(a,s){-1===e.settings.allowed_users.indexOf(a)?e.users.push({value:a,label:s.fullname+" ("+s.mail+")"}):e.settings.allowed_users[e.settings.allowed_users.indexOf(a)]={username:a,fullname:s.fullname,mail:s.mail}}),a.view("app/app_access",e)})})}),a.get("#/apps/:app/access/remove",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_access_remove_all",[a.params.app]),function(){params={apps:a.params.app,users:[]},a.api("/access?"+a.serialize(params),function(e){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")},"DELETE",params)},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")})}),a.get("#/apps/:app/access/remove/:user",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_access_remove_user",[a.params.app,a.params.user]),function(){params={apps:a.params.app,users:a.params.user},a.api("/access?"+a.serialize(params),function(e){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")},"DELETE",params)},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")})}),a.get("#/apps/:app/access/add",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_access_add",[a.params.app]),function(){params={apps:a.params.app,users:null},a.api("/access",function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")},"PUT",params)},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")})}),a.post("#/apps/:app/access/add",function(a){params={users:a.params.user,apps:a.params.app},a.api("/access",function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")},"PUT",params)}),a.get("#/apps/:app/access/clear",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_access_clear",[a.params.app]),function(){params={apps:a.params.app},a.api("/access",function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")},"POST",params)},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")})}),a.get("#/apps/:app/default",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_app_default"),function(){a.api("/apps/"+a.params.app+"/default",function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app)},"PUT")},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app)})}),a.get("#/services",function(a){a.api("/services",function(e){data2={services:[]},$.each(e,function(a,e){e.name=a,e.is_loaded="enabled"==e.loaded?!0:!1,e.is_running="running"==e.status?!0:!1,e.status=y18n.t(e.status),e.loaded=y18n.t(e.loaded),data2.services.push(e)}),a.view("service/service_list",data2)})}),a.get("#/services/:service",function(a){a.api("/services/"+a.params.service,function(e){data2={service:e},data2.service.name=a.params.service,data2.service.is_loaded="enabled"==e.loaded?!0:!1,data2.service.is_running="running"==e.status?!0:!1,data2.service.status=y18n.t(e.status),data2.service.loaded=y18n.t(e.loaded),s.clear("slide"),a.view("service/service_info",data2)},"GET")}),a.get("#/services/:service/log",function(a){params={number:50},a.api("/services/"+a.params.service+"/log",function(e){data2={logs:[],name:a.params.service},$.each(e,function(a,e){data2.logs.push({filename:a,filecontent:e.join("\n")})}),a.view("service/service_log",data2)},"GET",params)}),a.get("#/services/:service/:action",function(a){a.confirm("Service",y18n.t("confirm_service_action",[y18n.t(a.params.action),a.params.service]),function(){var e=null,n=a.params.service;switch(a.params.action){case"start":e="PUT";break;case"stop":e="DELETE";break;case"enable":e="PUT",n+="/enable";break;case"disable":e="DELETE",n+="/enable";break;default:a.flash("fail",y18n.t("unknown_action",[a.params.action])),s.clear("slide"),a.redirect("#/services/"+a.params.service)}e&&n?a.api("/services/"+n,function(e){s.clear("slide"),a.redirect("#/services/"+a.params.service)},e):(s.clear("slide"),a.redirect("#/services/"+a.params.service))},function(){s.clear("slide"),a.redirect("#/services/"+a.params.service)})}),a.get("#/tools/firewall",function(a){a.api("/firewall?raw",function(e){var s={ports:{},upnp:!1};$.each(["ipv4","ipv6","uPnP"],function(a,n){$.each(["TCP","UDP"],function(a,t){s.ports[t]=s.ports[t]||{},$.each(e[n][t],function(a,e){s.ports[t][e]=s.ports[t][e]||{},s.ports[t][e][n]=!0})})}),s.upnp=e.uPnP.enabled,a.view("tools/tools_firewall",s)})}),a.get("#/tools/firewall/upnp/:action",function(a){a.confirm(y18n.t("firewall"),y18n.t("confirm_upnp_action",[y18n.t(a.params.action)]),function(){params={action:a.params.action},a.api("/firewall/upnp",function(e){s.clear("slide"),a.redirect("#/tools/firewall")},"GET",params)},function(){s.clear("slide"),a.redirect("#/tools/firewall")})}),a.helper("togglePort",function(a,e,n,t){var i=null,r=[],o=this;switch((a!=parseInt(a)||0>a||a>65535)&&(o.flash("fail",y18n.t("unknown_argument",[a])),s.clear("slide"),o.redirect("#/tools/firewall")),n){case"ipv4":r="ipv4_only";break;case"ipv6":r="ipv6_only"}switch(e){case"udp":e="UDP";break;case"both":e="Both";break;default:e="TCP"}switch(t){case"open":i="POST";break;case"close":i="DELETE";break;default:o.flash("fail",y18n.t("unknown_action",[t])),s.clear("slide"),o.redirect("#/tools/firewall")}if(null!==i&&null!==e&&null!==a){var l={port:a,protocol:e};o.api("/firewall/port?"+r,function(a){s.clear("slide"),o.redirect("#/tools/firewall")},i,l)}else s.clear("slide"),o.redirect("#/tools/firewall")}),a.get("#/tools/firewall/port/:port/:protocol/:connection/:action",function(a){a.confirm(y18n.t("firewall"),y18n.t("confirm_firewall",[y18n.t(a.params.action),a.params.port,y18n.t(a.params.protocol),y18n.t(a.params.connection)]),function(){a.togglePort(a.params.port,a.params.protocol,a.params.connection,a.params.action)},function(){s.clear("slide"),a.redirect("#/tools/firewall")})}),a.post("#/tools/firewall/port",function(a){a.confirm(y18n.t("firewall"),y18n.t("confirm_firewall",[y18n.t(a.params.action),a.params.port,y18n.t(a.params.protocol),y18n.t(a.params.connection)]),function(){a.togglePort(a.params.port,a.params.protocol,a.params.connection,a.params.action)},function(){s.clear("slide"),a.redirect("#/tools/firewall")})}),a.get("#/tools/monitor",function(a){monitorData={},a.api("/services/glances",function(e){monitorData.status=!0,"running"==e.status?a.api("/monitor/system",function(e){monitorData.system=e,a.api("/monitor/disk",function(e){monitorData.disk=e,a.api("/monitor/network",function(e){monitorData.network=e,delete monitorData.network.usage.lo,a.view("tools/tools_monitoring",monitorData)})})}):(monitorData.status=!1,a.view("tools/tools_monitoring",monitorData))},"GET")}),a.get("#/tools",function(a){a.view("tools/tools_list")}),a.get("#/tools/adminpw",function(a){a.view("tools/tools_adminpw")}),a.put("#/tools/adminpw",function(a){params={},$.each(a.params.toHash(),function(a,e){""!==e&&(params[a]=e)}),$.isEmptyObject(params)?(a.flash("fail",y18n.t("error_modify_something")),s.clear("slide"),a.redirect("#/tools/adminpw")):params.new_password!==params.confirm_new_password?(a.flash("fail",y18n.t("passwords_dont_match")),s.clear("slide"),a.redirect("#/tools/adminpw")):a.api("/login",function(e){delete params.old_password,delete params.confirm_new_password,a.api("/adminpw",function(e){a.redirect("#/logout")},"PUT",params)},"POST",{password:params.old_password},!1)}),a.get("#/update",function(a){a.api("/update",function(e){packagesLength=e.packages.length;for(var s=0;s"),-1!=["moulinette","moulinette-yunohost","yunohost-admin","yunohost-config-nginx","ssowat","python"].indexOf(e.packages[s].name)&&(a.flash("warning",y18n.t("system_delayed_upgrade_warning",[e.packages[s].name])),e.packages[s].delayed=!0);a.view("update/update",e)},"PUT")}),a.get("#/upgrade/:type",function(a){"apps"!==a.params.type&&"packages"!==a.params.type?(a.flash("fail",y18n.t("unknown_argument",[a.params.type])),s.clear("slide"),a.redirect("#/update")):a.confirm(y18n.t("tools"),y18n.t("confirm_update_type",[y18n.t("system_"+a.params.type).toLowerCase()]),function(){endurl="","packages"==a.params.type?endurl="ignore_apps":"apps"==a.params.type&&(endurl="ignore_packages"),a.api("/upgrade?"+endurl,function(e){e.logs=e.log,a.view("upgrade/upgrade",e)},"PUT")},function(){s.clear("slide"),a.redirect("#/update")})}),a.get("#/tools/ca",function(a){a.view("tools/tools_ca")}),a.get("#/tools/security-feed",function(a){data={items:[]};var e="https://forum.yunohost.org",s="https://forum.yunohost.org/c/security",n="https://yunohost.org/security.rss";data.url={web:s,rss:n},$.ajax({url:n,dataType:"xml"}).done(function(s){$("item",s).each(function(a,s){var n=$("link",s)[0].innerHTML;"string"==typeof n&&""!==n&&"/"==n.charAt(0)&&(n=e+n);var t=$("description",s)[0].textContent;t=t.replace('href="/','href="'+e+"/");var i={guid:$("guid",s)[0].innerHTML,title:$("title",s)[0].innerHTML,url:n,desc:t,date:$("pubDate",s)[0].innerHTML.split(" +")[0]};data.items.push(i)}),a.view("tools/tools_security_feed",data)}).fail(function(){a.flash("fail",y18n.t("error_retrieve_feed",[n]))})});a.get("#/backup",function(a){var e=[],s={id:"local",name:y18n.t("local_archives"),uri:"/home/yunohost.backup/"};e.push(s),a.view("backup/backup",{storages:e})}),a.get("#/storages/create",function(a){a.view("backup/storage_create",{})}),a.post("#/storages",function(a){s.clear("slide"),a.redirect("#/storages")}),a.get("#/backup/:storage/create",function(a){var e=[];e.storage={id:a.params.storage,name:y18n.t("local_archives")},a.api("/hooks/backup",function(s){e.hooks=a.groupHooks(s.hooks),e.apps={},a.api("/apps?raw",function(s){$.each(s,function(a,s){s.installed&&(e.apps[a]={name:s.manifest.name})}),a.view("backup/backup_create",e)})})}),a.post("#/backup/:storage",function(a){var e=a.ungroupHooks(a.params.hooks,a.params.apps);a.api("/backup",function(){s.clear("slide"),a.redirect("#/backup/"+a.params.storage)},"POST",e)}),a.post("#/backup/:storage/:archive/restore",function(a){a.confirm(y18n.t("backup"),y18n.t("confirm_restore",[a.params.archive]),$.proxy(function(a){var e=a.ungroupHooks(a.params.hooks,a.params.apps);e.force="",a.api("/backup/restore/"+a.params.archive,function(e){s.clear("slide"),a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)},"POST",e)},this,a),function(){s.clear("slide"),a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)})}),a.get("#/backup/:storage/:archive/delete",function(a){a.confirm(y18n.t("backup"),y18n.t("confirm_delete",[a.params.archive]),function(){a.api("/backup/archives/"+a.params.archive,function(e){a.redirect("#/backup/"+a.params.storage)},"DELETE")},function(){s.clear("slide"),a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)})}),a.get("#/backup/:storage/:archive/download",function(a){a.api("/backup/"+a.params.archive+"/download",function(e){a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)},"GET")}),a.get("#/backup/:storage/:archive/copy",function(a){s.clear("slide"),a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)}),a.get("#/backup/:storage/:archive/upload",function(a){s.clear("slide"), +var app=Sammy("#main",function(a){a.use("Handlebars","ms"),Handlebars.registerHelper("ucwords",function(a){return(a+"").replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g,function(a){return a.toUpperCase()})}),Handlebars.registerHelper("humanSize",function(a){var e=["Bytes","KB","MB","GB","TB"];if(0===a)return"n/a";var s=parseInt(Math.floor(Math.log(a)/Math.log(1024)));return Math.round(a/Math.pow(1024,s),2)+" "+e[[s]]}),Handlebars.registerHelper("humanTime",function(a){return Math.round(a)+"s"}),Handlebars.registerHelper("bitRate",function(a,e){var s=["b","Kb","Mb","Gb","Tb"];if(0===e)return"n/a";var n=a/e*8,t=parseInt(Math.floor(Math.log(n)/Math.log(1024)));return Math.round(n/Math.pow(1024,t),2)+" "+s[[t]]+"/s"}),Handlebars.registerHelper("t",function(a){var e=y18n.t(a,Array.prototype.slice.call(arguments,1));return new Handlebars.SafeString(e)});var e;e=Sammy.Store.isAvailable("session")?"session":Sammy.Store.isAvailable("cookie")?"cookie":"memory";var s=new Sammy.Store({name:"storage",type:e}),n=!1,t=3;a.helpers({serialize:function(a){var e=[];for(var s in a)a.hasOwnProperty(s)&&e.push(encodeURIComponent(s)+"="+encodeURIComponent(a[s]));return e.join("&")},flash:function(a,e){s.get("flash")||s.set("flash",!0),$("#slider").addClass("with-flashMessage"),"info"===a&&"+"===e.charAt(0)&&(a="log"),$("#flashMessage .messages").prepend('

'+e+"

")},checkInstall:function(a){domain=window.location.hostname,$.ajax({dataType:"json",url:"https://"+domain+"/yunohost/api/installed",timeout:3e3}).success(function(e){a(e.installed)}).fail(function(){a(void 0)})},api:function(a,e,t,i,r){c=this,call=function(a,e,t,i){t="undefined"!=typeof t?t:"GET",i="undefined"!=typeof i?i:{},window.navigator&&window.navigator.language&&"undefined"==typeof i.locale&&(i.locale=y18n.locale||window.navigator.language.substr(0,2));var r=i;if("/postinstall"===a){var o=!1;setInterval(function(){o=!0},1500)}n=!1,0===$("div.loader").length&&setInterval(function(){n||0!==$("div.loader").length||$("#main").append('
')},500),jQuery.ajax({url:"https://"+s.get("url")+a,type:t,crossdomain:!0,data:i,traditional:!0,dataType:"json"}).always(function(a,e,s){}).done(function(a){a=a||{},e(a)}).fail(function(n){200==n.status?e({}):401==n.status?"/login"===a?c.flash("fail",y18n.t("wrong_password")):(c.flash("fail",y18n.t("unauthorized")),c.redirect("#/login")):"undefined"!=typeof n.responseJSON?c.flash("fail",n.responseJSON.error):"undefined"!=typeof n.responseText&&"/postinstall"!==a?c.flash("fail",n.responseText):"/postinstall"===a?o?(interval=window.location.hostname===r.domain?2e4:5e3,checkInstall=setInterval(function(){c.checkInstall(function(a){(a||"undefined"==typeof a)&&(c.flash("success",y18n.t("installation_complete")),clearInterval(checkInstall),window.location.href="https://"+window.location.hostname+"/yunohost/admin/")})},interval)):c.flash("fail",y18n.t("error_occured")):c.flash("fail",y18n.t("error_server")),"/postinstall"!==a&&(s.clear("slide"),c.view(s.get("path-1"),null,null,!1))})},r="undefined"!=typeof r?r:!0,r?(ws=new WebSocket("wss://"+s.get("url")+"/messages"),ws.onmessage=function(a){$.each($.parseJSON(a.data),function(a,e){c.flash(a,e)})},ws.onerror=ws.onopen,ws.onclose=function(){},ws.onopen=call(a,e,t,i)):call(a,e,t,i)},view:function(a,e,t,i){if(t="undefined"!=typeof t?t:function(){},rendered=this.render("views/"+a+".ms",e),i="undefined"!=typeof i?i:!0,n=!0,$("div.loader").remove(),$("#modal").modal("hide"),$("#flashModal").modal("hide"),i){var r=function(){rendered.swap(function(){$(".slide, .btn-breadcrumb a:not(:last-child)").on("click",function(){$(this).addClass("active"),$(this).hasClass("back")||$(this).parent(".btn-breadcrumb").length?s.set("slide","back"):s.set("slide","to")}),t(),$("html, body").scrollTop(0),setTimeout(function(){$("body").resize()},210)})};blockSize=$("#slider").width(),"back"==s.get("slide")?(s.clear("slide"),$("#slideBack").css("display","none"),$("#slider-container").removeClass("move").css("margin-left","-"+blockSize+"px"),$("#slideTo").show().html($("#main").html()),r(),$("#slider-container").addClass("move").css("margin-left","0px")):"to"==s.get("slide")?(s.clear("slide"),$("#slideTo").css("display","none"),$("#slider-container").removeClass("move").css("margin-left","-"+blockSize+"px"),$("#slider-container").removeClass("move").css("margin-left","0px"),$("#slideBack").show().html($("#main").html()),r(),$("#slider-container").addClass("move").css("margin-left","-"+blockSize+"px")):r()}else rendered.swap(function(){t(),$("html, body").scrollTop(0),$("body").resize()})},confirm:function(a,e,s,n){return s="undefined"!=typeof s?s:function(){},n="undefined"!=typeof n?n:function(){},box=$("#modal"),"string"==typeof a&&a.length?$(".title",box).html(a):box.addClass("no-title"),$(".content",box).html(e),$("footer button",box).click(function(a){a.preventDefault(),$("#modal footer button").unbind("click"),box.removeClass("no-title").modal("hide"),"confirm"==$(this).data("action")?s():n()}),box.modal("show")},arraySortById:function(a){a.sort(function(a,e){return a.id>e.id?1:a.id'+y18n.t("read_more")+")";a.flash("warning",l),s.push(o.guid)}}),$.cookie("ynhSecurityViewedItems",s,{expire:7})}).fail(function(){a.flash("fail",y18n.t("error_retrieve_feed",[s]))}),a.view("home")})}),a.get("#/login",function(a){$("#masthead").show(),$("#masthead .logout-btn").hide(),s.set("path-1","#/login"),0===$("div.loader").length&&setInterval(function(){n||0!==$("div.loader").length||$("#main").append('
')},500),a.checkInstall(function(e){e?(domain=window.location.hostname,$("div.loader").remove(),a.view("login",{domain:domain})):"undefined"==typeof e?t>0?(t--,n=!1,setTimeout(function(){a.redirect("#/")},5e3)):(t=3,$(document).ajaxError(function(e,s,n){200!==s.status&&a.flash("fail",y18n.t("api_not_responding",[s.status+" "+s.statusText])),$(document).off("ajaxError")}),n=!0,$("div.loader").remove()):($("div.loader").remove(),a.redirect("#/postinstall"))})}),a.post("#/login",function(a){s.set("url",a.params.domain+"/yunohost/api"),params={password:a.params.password},a.api("/login",function(e){s.set("connected",!0),$("#masthead .logout-btn").fadeIn(),a.flash("success",y18n.t("logged_in")),a.redirect(s.get("path")?s.get("path"):"#/")},"POST",params,!1)}),a.get("#/logout",function(a){a.api("/logout",function(e){s.clear("url"),s.clear("connected"),s.set("path","#/"),a.flash("success",y18n.t("logged_out")),a.redirect("#/login")},"GET",{},!1)}),a.get("#/postinstall",function(a){$("#masthead").hide(),a.checkInstall(function(e){e||"undefined"==typeof e?a.redirect("#/login"):a.view("postinstall/postinstall_1")})}),a.get("#/postinstall/domain",function(a){$("#masthead").hide(),$.get("https://dyndns.yunohost.org/domains",function(){}).done(function(e){a.params.ddomains=e.map(function(a){return"."+a})}).fail(function(){a.params.ddomains=[".nohost.me",".noho.st"]}).always(function(){a.view("postinstall/postinstall_2",a.params,function(){$("#domain, #ddomain").keyup(function(a){13==a.keyCode&&$("a.savedomain").click()}),$("a.savedomain").on("click",function(e){""===$("#domain").val()?""===$("#ddomain").val()?(e.preventDefault(),s.clear("slide"),a.flash("fail",y18n.t("error_select_domain"))):domain=$("#ddomain").val()+$('select[name="ddomain-ext"]').val():domain=$("#domain").val(),s.set("maindomain",domain)})})})}),a.get("#/postinstall/password",function(a){$("#masthead").hide(),$("#flash .alert").remove(),s.get("maindomain")?a.view("postinstall/postinstall_3",{domain:s.get("maindomain").toLowerCase()}):(s.clear("slide"),a.redirect("#/postinstall/domain"))}),a.post("#/postinstall",function(a){""===a.params.password||""===a.params.confirmation?a.flash("fail",y18n.t("password_empty")):a.params.password==a.params.confirmation?(""===a.params.domain?(a.flash("fail",y18n.t("error_select_domain")),s.clear("slide"),a.redirect("#/postinstall/domain")):params={domain:a.params.domain.toLowerCase()},a.confirm(y18n.t("postinstall"),y18n.t("confirm_postinstall",[a.params.domain]),function(){params.password=a.params.password,s.set("url",window.location.hostname+"/yunohost/api"),s.set("user","admin"),a.api("/postinstall",function(e){a.redirect("#/login")},"POST",params)},function(){})):a.flash("fail",y18n.t("passwords_dont_match"))}),a.get("#/users",function(a){a.api("/users",function(e){a.view("user/user_list",e)})}),a.get("#/users/create",function(a){a.api("/domains",function(e){a.view("user/user_create",e)})}),a.post("#/users",function(a){a.params.password==a.params.confirmation?a.params.password.length<4?(a.flash("fail",y18n.t("password_too_short")),s.clear("slide")):(a.params.mail=a.params.email+a.params.domain,a.api("/users",function(e){a.redirect("#/users")},"POST",a.params.toHash())):(a.flash("fail",y18n.t("passwords_dont_match")),s.clear("slide"))}),a.get("#/users/:user",function(a){a.api("/users/"+a.params.user,function(e){a.view("user/user_info",e)})}),a.get("#/users/:user/edit",function(a){a.api("/users/"+a.params.user,function(e){a.api("/domains",function(s){email=e.mail.split("@"),e.email={username:email[0],domain:email[1]},e.domains=[],$.each(s.domains,function(a,s){e.domains.push({domain:s,selected:s==e.email.domain?!0:!1})}),a.view("user/user_edit",e)})})}),a.put("#/users/:user",function(a){a.api("/users/"+a.params.user,function(e){a.params.mail=a.params.mail!==a.params.email+a.params.domain?a.params.email+a.params.domain:"",a.params.email=a.params.domain="","string"==typeof a.params.mailalias&&(a.params.mailalias=[a.params.mailalias]),"string"==typeof a.params.mailforward&&(a.params.mailforward=[a.params.mailforward]),a.params.add_mailalias=a.arrayDiff(a.params.mailalias,e["mail-aliases"]),a.params.remove_mailalias=a.arrayDiff(e["mail-aliases"],a.params.mailalias),a.params.add_mailforward=a.arrayDiff(a.params.mailforward,e["mail-forward"]),a.params.remove_mailforward=a.arrayDiff(e["mail-forward"],a.params.mailforward),a.params.mailalias=a.params.mailforward="",params={},$.each(a.params.toHash(),function(a,e){e.length>0&&"user"!==a&&(params[a]=e)}),$.isEmptyObject(params)?(a.flash("fail",y18n.t("error_modify_something")),s.clear("slide"),a.redirect("#/users/"+a.params.user+"/edit")):params.password?params.password==params.confirmation?params.password.length<4?(a.flash("fail",y18n.t("password_too_short")),s.clear("slide"),a.redirect("#/users/"+a.params.user+"/edit")):(params.change_password=params.password,a.api("/users/"+a.params.user,function(e){a.redirect("#/users/"+a.params.user)},"PUT",params)):(a.flash("fail",y18n.t("passwords_dont_match")),s.clear("slide"),a.redirect("#/users/"+a.params.user+"/edit")):a.api("/users/"+a.params.user,function(e){a.redirect("#/users/"+a.params.user)},"PUT",params)},"GET")}),a.get("#/users/:user/delete",function(a){a.confirm(y18n.t("users"),y18n.t("confirm_delete",[a.params.user]),function(){a.api("/users/"+a.params.user,function(e){a.redirect("#/users")},"DELETE")},function(){s.clear("slide"),a.redirect("#/users/"+a.params.user)})}),a.get("#/domains",function(a){a.api("/domains",function(e){a.api("/domains/main",function(s){domains=[],$.each(e.domains,function(a,e){domains.push({url:e,main:e==s.current_main_domain?!0:!1})}),main_domain_form=domains.length>1?!0:!1,domains.sort(function(a,e){return-2*a.main+1}),a.view("domain/domain_list",{domains:domains,main_domain_form:main_domain_form})},"PUT")})}),a.get("#/domains/add",function(a){$.get("https://dyndns.yunohost.org/domains",function(){}).done(function(e){a.params.ddomains=e.map(function(a){return"."+a})}).fail(function(){a.params.ddomains=[".nohost.me",".noho.st"]}).always(function(){data={ddomains:a.params.ddomains,domains:a.params.domains,allowDyndnsDomain:!0};var e=data.ddomains.join("|");$.each(data.domains,function(a,s){s.search(e)>0&&(data.allowDyndnsDomain=!1)}),a.view("domain/domain_add",data)})}),a.post("#/domains/add",function(a){""===a.params.domain?(""===a.params.ddomain&&(a.flash("fail",y18n.t("error_select_domain")),s.clear("slide"),a.redirect("#/domains/add")),params={domain:a.params.ddomain+a.params["ddomain-ext"]},endurl="dyndns"):(params={domain:a.params.domain},endurl=""),a.api("/domains?"+endurl,function(e){a.redirect("#/domains")},"POST",params)}),a.get("#/domains/:domain/delete",function(a){a.confirm(y18n.t("domains"),y18n.t("confirm_delete",[a.params.domain]),function(){a.api("/domains/"+a.params.domain,function(e){s.clear("slide"),a.redirect("#/domains")},"DELETE")},function(){s.clear("slide"),a.redirect("#/domains")})}),a.post("#/domains",function(a){""===a.params.domain?(a.flash("fail",y18n.t("error_select_domain")),s.clear("slide"),a.redirect("#/domains")):a.confirm(y18n.t("domains"),y18n.t("confirm_change_maindomain"),function(){params={new_domain:a.params.domain},a.api("/domains/main",function(e){s.clear("slide"),a.redirect("#/domains")},"PUT",params),refreshDomain=window.setTimeout(function(){s.clear("slide"),a.redirect("#/domains")},15e3)},function(){s.clear("slide"),a.redirect("#/domains")})}),a.get("#/apps",function(a){a.api("/apps",function(e){data2={apps:[],installed_apps:!0},$.each(e.apps,function(a,e){e.installed&&data2.apps.push(e)}),a.arraySortById(data2.apps),a.view("app/app_list",data2)})}),a.get("#/apps/install",function(a){a.api("/apps",function(e){a.api("/apps?raw",function(s){data2={apps:[],installed_apps:!1},$.each(e.apps,function(a,e){e.installed&&"true"!=s[e.id].manifest.multi_instance||e.id.match(/__[0-9]{1,5}$/)||(e.install_link=!0,data2.apps.push(e))}),a.arraySortById(data2.apps),a.view("app/app_list",data2)})})}),a.get("#/apps/refresh",function(a){a.api("/appslists",function(e){a.redirect("#/apps/install")},"PUT")}),a.get("#/apps/:app",function(a){a.api("/apps/"+a.params.app+"?raw",function(e){e.settings.allowed_users=e.settings.allowed_users?e.settings.allowed_users.replace(",",", ")+".":y18n.t("everyone_has_access"),e.description="undefined"!=typeof e.manifest.description[y18n.locale]?e.manifest.description[y18n.locale]:e.manifest.description.en,e.manifest.multi_instance=y18n.t("true"==e.manifest.multi_instance?"yes":"no");var s=new Date(1e3*e.settings.install_time);e.install_time=s.getDate()+"/"+(s.getMonth()+1)+"/"+s.getFullYear(),a.view("app/app_info",e)})}),a.get("#/apps/:app/debug",function(a){a.api("/apps/"+a.params.app+"/debug",function(e){a.view("app/app_debug",e)})}),a.get("#/apps/install/custom",function(a){a.redirect("#/apps/install")}),a.helper("appInstallForm",function(a,e,s){data={id:a,manifest:e},"undefined"!=typeof data.manifest.arguments.install&&$.each(data.manifest.arguments.install,function(a,e){data.manifest.arguments.install[a].type="undefined"!=typeof e.type?e.type:"string",data.manifest.arguments.install[a].inputType="text",data.manifest.arguments.install[a].required="undefined"!=typeof e.optional&&"true"==e.optional?"":"required","undefined"!=typeof data.manifest.arguments.install[a].choices&&$.each(data.manifest.arguments.install[a].choices,function(e,s){data.manifest.arguments.install[a].choices[e]={value:s,label:s,selected:s==data.manifest.arguments.install[a]["default"]?!0:!1}}),("domain"==e.name||"domain"==data.manifest.arguments.install[a].type)&&(data.manifest.arguments.install[a].choices=[],$.each(s.domains,function(e,s){data.manifest.arguments.install[a].choices.push({value:s,label:s,selected:!1})}),data.manifest.arguments.install[a].help=""+y18n.t("manage_domains")+""),("admin"==e.name||"user"==data.manifest.arguments.install[a].type)&&(data.manifest.arguments.install[a].choices=[],$.each(s.users,function(e,s){data.manifest.arguments.install[a].choices.push({value:e,label:s.fullname+" ("+s.mail+")",selected:!1})}),data.manifest.arguments.install[a].help=""+y18n.t("manage_users")+""),"app"==data.manifest.arguments.install[a].type&&(data.manifest.arguments.install[a].choices=[],$.each(s.apps,function(e,s){data.manifest.arguments.install[a].choices.push({value:s.id,label:s.name,selected:!1})}),data.manifest.arguments.install[a].help=""+y18n.t("manage_apps")+""),("password"==e.name||"password"==data.manifest.arguments.install[a].type)&&(data.manifest.arguments.install[a].inputType="password"),data.manifest.arguments.install[a].label="undefined"!=typeof data.manifest.arguments.install[a].ask[y18n.locale]?data.manifest.arguments.install[a].ask[y18n.locale]:data.manifest.arguments.install[a].ask.en}),data.description="undefined"!=typeof data.manifest.description[y18n.locale]?data.manifest.description[y18n.locale]:data.manifest.description.en,data.manifest.multi_instance=y18n.t("true"==data.manifest.multi_instance?"yes":"no"),c.view("app/app_install",data)}),a.get("#/apps/install/:app",function(a){a.api("/apps?raw",function(e){a.appInstallForm(a.params.app,e[a.params.app].manifest,a.params)})}),a.post("#/apps",function(a){"/"!==a.params.path||confirm(y18n.t("confirm_install_domain_root",[a.params.domain]))?(params={label:a.params.label,app:a.params.app},delete a.params.label,delete a.params.app,params.args=a.serialize(a.params.toHash()),""===params.args&&delete params.args,a.api("/apps",function(){a.redirect("#/apps")},"POST",params)):(a.flash("warning",y18n.t("app_install_cancel")),s.clear("slide"),a.redirect("#/apps/install"))}),a.post("#/apps/install/custom",function(a){params={label:a.params.label,app:a.params.url},delete a.params.label,delete a.params.url,a.confirm(y18n.t("applications"),y18n.t("confirm_install_custom_app"),function(){params.app=params.app.replace(/\/?$/,"/"),jQuery.ajax({url:params.app.replace("github.com","raw.githubusercontent.com")+"master/manifest.json",type:"GET"}).done(function(e){e=jQuery.parseJSON(e)||{},a.appInstallForm(params.app,e,a.params)}).fail(function(e){a.flash("fail",y18n.t("app_install_custom_no_manifest")),s.clear("slide"),a.redirect("#/apps/install")})},function(){a.flash("warning",y18n.t("app_install_cancel")),s.clear("slide"),a.redirect("#/apps/install")})}),a.get("#/apps/:app/uninstall",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_uninstall",[a.params.app]),function(){a.api("/apps/"+a.params.app,function(){a.redirect("#/apps")},"DELETE")},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app)})}),a.get("#/apps/:app/access",function(a){a.api("/apps/"+a.params.app+"?raw",function(e){a.api("/users",function(s){"undefined"!=typeof e.settings.allowed_users?e.settings.allowed_users=0===e.settings.allowed_users.length?[]:e.settings.allowed_users.split(","):(e.settings.allowed_users=[],e.settings.allow_everyone=!0),e.users=[],$.each(s.users,function(a,s){-1===e.settings.allowed_users.indexOf(a)?e.users.push({value:a,label:s.fullname+" ("+s.mail+")"}):e.settings.allowed_users[e.settings.allowed_users.indexOf(a)]={username:a,fullname:s.fullname,mail:s.mail}}),a.view("app/app_access",e)})})}),a.get("#/apps/:app/access/remove",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_access_remove_all",[a.params.app]),function(){params={apps:a.params.app,users:[]},a.api("/access?"+a.serialize(params),function(e){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")},"DELETE",params)},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")})}),a.get("#/apps/:app/access/remove/:user",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_access_remove_user",[a.params.app,a.params.user]),function(){params={apps:a.params.app,users:a.params.user},a.api("/access?"+a.serialize(params),function(e){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")},"DELETE",params)},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")})}),a.get("#/apps/:app/access/add",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_access_add",[a.params.app]),function(){params={apps:a.params.app,users:null},a.api("/access",function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")},"PUT",params)},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")})}),a.post("#/apps/:app/access/add",function(a){params={users:a.params.user,apps:a.params.app},a.api("/access",function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")},"PUT",params)}),a.get("#/apps/:app/access/clear",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_access_clear",[a.params.app]),function(){params={apps:a.params.app},a.api("/access",function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")},"POST",params)},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app+"/access")})}),a.get("#/apps/:app/default",function(a){a.confirm(y18n.t("applications"),y18n.t("confirm_app_default"),function(){a.api("/apps/"+a.params.app+"/default",function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app)},"PUT")},function(){s.clear("slide"),a.redirect("#/apps/"+a.params.app)})}),a.get("#/services",function(a){a.api("/services",function(e){data2={services:[]},$.each(e,function(a,e){e.name=a,e.is_loaded="enabled"==e.loaded?!0:!1,e.is_running="running"==e.status?!0:!1,e.status=y18n.t(e.status),e.loaded=y18n.t(e.loaded),data2.services.push(e)}),a.view("service/service_list",data2)})}),a.get("#/services/:service",function(a){a.api("/services/"+a.params.service,function(e){data2={service:e},data2.service.name=a.params.service,data2.service.is_loaded="enabled"==e.loaded?!0:!1,data2.service.is_running="running"==e.status?!0:!1,data2.service.status=y18n.t(e.status),data2.service.loaded=y18n.t(e.loaded),s.clear("slide"),a.view("service/service_info",data2)},"GET")}),a.get("#/services/:service/log",function(a){params={number:50},a.api("/services/"+a.params.service+"/log",function(e){data2={logs:[],name:a.params.service},$.each(e,function(a,e){data2.logs.push({filename:a,filecontent:e.join("\n")})}),a.view("service/service_log",data2)},"GET",params)}),a.get("#/services/:service/:action",function(a){a.confirm("Service",y18n.t("confirm_service_action",[y18n.t(a.params.action),a.params.service]),function(){var e=null,n=a.params.service;switch(a.params.action){case"start":e="PUT";break;case"stop":e="DELETE";break;case"enable":e="PUT",n+="/enable";break;case"disable":e="DELETE",n+="/enable";break;default:a.flash("fail",y18n.t("unknown_action",[a.params.action])),s.clear("slide"),a.redirect("#/services/"+a.params.service)}e&&n?a.api("/services/"+n,function(e){s.clear("slide"),a.redirect("#/services/"+a.params.service)},e):(s.clear("slide"),a.redirect("#/services/"+a.params.service))},function(){s.clear("slide"),a.redirect("#/services/"+a.params.service)})}),a.get("#/tools/firewall",function(a){a.api("/firewall?raw",function(e){var s={ports:{},upnp:!1};$.each(["ipv4","ipv6","uPnP"],function(a,n){$.each(["TCP","UDP"],function(a,t){s.ports[t]=s.ports[t]||{},$.each(e[n][t],function(a,e){s.ports[t][e]=s.ports[t][e]||{},s.ports[t][e][n]=!0})})}),s.upnp=e.uPnP.enabled,a.view("tools/tools_firewall",s)})}),a.get("#/tools/firewall/upnp/:action",function(a){a.confirm(y18n.t("firewall"),y18n.t("confirm_upnp_action",[y18n.t(a.params.action)]),function(){params={action:a.params.action},a.api("/firewall/upnp",function(e){s.clear("slide"),a.redirect("#/tools/firewall")},"GET",params)},function(){s.clear("slide"),a.redirect("#/tools/firewall")})}),a.helper("togglePort",function(a,e,n,t){var i=null,r=[],o=this;switch((a!=parseInt(a)||0>a||a>65535)&&(o.flash("fail",y18n.t("unknown_argument",[a])),s.clear("slide"),o.redirect("#/tools/firewall")),n){case"ipv4":r="ipv4_only";break;case"ipv6":r="ipv6_only"}switch(e){case"udp":e="UDP";break;case"both":e="Both";break;default:e="TCP"}switch(t){case"open":i="POST";break;case"close":i="DELETE";break;default:o.flash("fail",y18n.t("unknown_action",[t])),s.clear("slide"),o.redirect("#/tools/firewall")}if(null!==i&&null!==e&&null!==a){var l={port:a,protocol:e};o.api("/firewall/port?"+r,function(a){s.clear("slide"),o.redirect("#/tools/firewall")},i,l)}else s.clear("slide"),o.redirect("#/tools/firewall")}),a.get("#/tools/firewall/port/:port/:protocol/:connection/:action",function(a){a.confirm(y18n.t("firewall"),y18n.t("confirm_firewall",[y18n.t(a.params.action),a.params.port,y18n.t(a.params.protocol),y18n.t(a.params.connection)]),function(){a.togglePort(a.params.port,a.params.protocol,a.params.connection,a.params.action)},function(){s.clear("slide"),a.redirect("#/tools/firewall")})}),a.post("#/tools/firewall/port",function(a){a.confirm(y18n.t("firewall"),y18n.t("confirm_firewall",[y18n.t(a.params.action),a.params.port,y18n.t(a.params.protocol),y18n.t(a.params.connection)]),function(){a.togglePort(a.params.port,a.params.protocol,a.params.connection,a.params.action)},function(){s.clear("slide"),a.redirect("#/tools/firewall")})}),a.get("#/tools/monitor",function(a){monitorData={},a.api("/services/glances",function(e){monitorData.status=!0,"running"==e.status?a.api("/monitor/system",function(e){monitorData.system=e,a.api("/monitor/disk",function(e){monitorData.disk=e,a.api("/monitor/network",function(e){monitorData.network=e,delete monitorData.network.usage.lo,a.view("tools/tools_monitoring",monitorData)})})}):(monitorData.status=!1,a.view("tools/tools_monitoring",monitorData))},"GET")}),a.get("#/tools",function(a){a.view("tools/tools_list")}),a.get("#/tools/adminpw",function(a){a.view("tools/tools_adminpw")}),a.put("#/tools/adminpw",function(a){params={},$.each(a.params.toHash(),function(a,e){""!==e&&(params[a]=e)}),$.isEmptyObject(params)?(a.flash("fail",y18n.t("error_modify_something")),s.clear("slide"),a.redirect("#/tools/adminpw")):params.new_password!==params.confirm_new_password?(a.flash("fail",y18n.t("passwords_dont_match")),s.clear("slide"),a.redirect("#/tools/adminpw")):a.api("/login",function(e){delete params.old_password,delete params.confirm_new_password,a.api("/adminpw",function(e){a.redirect("#/logout")},"PUT",params)},"POST",{password:params.old_password},!1)}),a.get("#/update",function(a){a.api("/update",function(e){packagesLength=e.packages.length;for(var s=0;s"),-1!=["moulinette","moulinette-yunohost","yunohost-admin","yunohost-config-nginx","ssowat","python"].indexOf(e.packages[s].name)&&(a.flash("warning",y18n.t("system_delayed_upgrade_warning",[e.packages[s].name])),e.packages[s].delayed=!0);a.view("update/update",e)},"PUT")}),a.get("#/upgrade/:type",function(a){"apps"!==a.params.type&&"packages"!==a.params.type?(a.flash("fail",y18n.t("unknown_argument",[a.params.type])),s.clear("slide"),a.redirect("#/update")):a.confirm(y18n.t("tools"),y18n.t("confirm_update_type",[y18n.t("system_"+a.params.type).toLowerCase()]),function(){endurl="","packages"==a.params.type?endurl="ignore_apps":"apps"==a.params.type&&(endurl="ignore_packages"),a.api("/upgrade?"+endurl,function(e){e.logs=e.log,a.view("upgrade/upgrade",e)},"PUT")},function(){s.clear("slide"),a.redirect("#/update")})}),a.get("#/tools/ca",function(a){a.view("tools/tools_ca")}),a.get("#/tools/security-feed",function(a){data={items:[]};var e="https://forum.yunohost.org",s="https://forum.yunohost.org/c/security",n="https://yunohost.org/security.rss";data.url={web:s,rss:n},$.ajax({url:n,dataType:"xml"}).done(function(s){$("item",s).each(function(a,s){var n=$("link",s)[0].innerHTML;"string"==typeof n&&""!==n&&"/"==n.charAt(0)&&(n=e+n);var t=$("description",s)[0].textContent;t=t.replace('href="/','href="'+e+"/");var i={guid:$("guid",s)[0].innerHTML,title:$("title",s)[0].innerHTML,url:n,desc:t,date:$("pubDate",s)[0].innerHTML.split(" +")[0]};data.items.push(i)}),a.view("tools/tools_security_feed",data)}).fail(function(){a.flash("fail",y18n.t("error_retrieve_feed",[n]))})});a.get("#/backup",function(a){var e=[],s={id:"local",name:y18n.t("local_archives"),uri:"/home/yunohost.backup/"};e.push(s),a.view("backup/backup",{storages:e})}),a.get("#/storages/create",function(a){a.view("backup/storage_create",{})}),a.post("#/storages",function(a){s.clear("slide"),a.redirect("#/storages")}),a.get("#/backup/:storage/create",function(a){var e=[];e.storage={id:a.params.storage,name:y18n.t("local_archives")},a.api("/hooks/backup",function(s){e.hooks=a.groupHooks(s.hooks),e.apps={},a.api("/apps?raw",function(s){$.each(s,function(a,s){s.installed&&(e.apps[a]={name:s.manifest.name})}),a.view("backup/backup_create",e)})})}),a.post("#/backup/:storage",function(a){var e=a.ungroupHooks(a.params.hooks,a.params.apps);a.api("/backup",function(){s.clear("slide"),a.redirect("#/backup/"+a.params.storage)},"POST",e)}),a.post("#/backup/:storage/:archive/restore",function(a){a.confirm(y18n.t("backup"),y18n.t("confirm_restore",[a.params.archive]),$.proxy(function(a){var e=a.ungroupHooks(a.params.hooks,a.params.apps);e.force="",a.api("/backup/restore/"+a.params.archive,function(e){s.clear("slide"),a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)},"POST",e)},this,a),function(){s.clear("slide"),a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)})}),a.get("#/backup/:storage/:archive/delete",function(a){a.confirm(y18n.t("backup"),y18n.t("confirm_delete",[a.params.archive]),function(){a.api("/backup/archives/"+a.params.archive,function(e){a.redirect("#/backup/"+a.params.storage)},"DELETE")},function(){s.clear("slide"),a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)})}),a.get("#/backup/:storage/:archive/download",function(a){a.api("/backup/"+a.params.archive+"/download",function(e){a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)},"GET")}),a.get("#/backup/:storage/:archive/copy",function(a){s.clear("slide"),a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)}),a.get("#/backup/:storage/:archive/upload",function(a){s.clear("slide"), a.redirect("#/backup/"+a.params.storage+"/"+a.params.archive)}),a.get("#/backup/:storage/:archive",function(a){a.api("/backup/archives/"+a.params.archive+"?with_details",function(e){e.storage={id:a.params.storage,name:y18n.t("local_archives")},e.other_storages=[],e.name=a.params.archive,e.hooks=a.groupHooks(Object.keys(e.hooks)),e.items=e.hooks!={}||e.apps!=[],a.view("backup/backup_info",e)})}),a.get("#/backup/:storage",function(a){a.api("/backup/archives?with_info",function(e){e.storage={id:"local",name:y18n.t("local_archives")},e.archives2=[],$.each(e.archives,function(a,s){s.name=a,e.archives2.unshift(s)}),e.archives=e.archives2,a.view("backup/backup_list",e)})})});$.getJSON("locales/en.json",function(a){y18n.translations.en=a,y18n.translateInlineHTML()}),window.navigator&&window.navigator.language&&(y18n.locale=window.navigator.language.substr(0,2),"en"!==y18n.locale&&$.getJSON("locales/"+y18n.locale+".json",function(a){y18n.translations[y18n.locale]=a,y18n.translateInlineHTML()})),$(document).ready(function(){app.run("#/"),$("#slider-container").width(2*$("#slider").width()+"px"),$(window).resize(function(){$("#slideBack").css("display","none"),$("#slideTo").css("display","none"),$("#slider-container").width(2*$("#slider").width()+"px").removeClass("move").css("margin-left","0px")});var a=$("#flashMessage");$("#toggle-btn",a).click(function(e){a.toggleClass("open")}),$("#clear-btn",a).click(function(e){a.removeClass("open").find(".messages").html(""),$("#slider").removeClass("with-flashMessage")})}); \ No newline at end of file diff --git a/src/js/app.js b/src/js/app.js index 8614e389..33317eed 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -536,7 +536,7 @@ var app = Sammy('#main', function (sam) { sam.get('#/login', function (c) { $('#masthead').show(); - $('.logout-button').hide(); + $('#masthead .logout-btn').hide(); store.set('path-1', '#/login'); if ($('div.loader').length === 0) { setInterval(function () { @@ -599,7 +599,7 @@ var app = Sammy('#main', function (sam) { c.api('/login', function(data) { store.set('connected', true); - $('.logout-button').fadeIn(); + $('#masthead .logout-btn').fadeIn(); c.flash('success', y18n.t('logged_in')); if (store.get('path')) { c.redirect(store.get('path'));