- express.urlencoded() hinzugefuegt (Login war komplett kaputt) - Oeffentliche Galerie zeigt jetzt alle Bilder (statt leere Galerie) - loadGallery() Aufruf in main.js eingefuegt (fehlte komplett) - main.min.js neu gebaut mit gulp (Galerie-Code fehlte in minified Version) - Watchtower Container in docker-compose.yml (auto-updates alle 5 Min) - Docker-Socket und docker-cli aus Photography-Container entfernt - runs.json Muell-Datei geloescht - Brain.md und Feature-Request.md aktualisiert Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 line
5.1 KiB
JavaScript
1 line
5.1 KiB
JavaScript
!function(e){var n,a=e(window),o=e("body");e("#wrapper");(breakpoints({xlarge:["1281px","1680px"],large:["981px","1280px"],medium:["737px","980px"],small:["481px","736px"],xsmall:[null,"480px"]}),"ie"==browser.name&&o.addClass("ie"),browser.mobile&&o.addClass("touch"),browser.canUse("transition"))&&(a.on("load",function(){window.setTimeout(function(){o.removeClass("is-preload")},100)}),a.on("resize",function(){window.clearTimeout(n),o.addClass("is-resizing"),n=window.setTimeout(function(){o.removeClass("is-resizing")},100)}));a.scrollTop(0);var t=e(".panel");t.each(function(){var n=e(this),a=e('[href="#'+n.attr("id")+'"]');e('<div class="closer" />').appendTo(n).on("click",function(e){n.trigger("---hide")}),n.on("click",function(e){e.stopPropagation()}).on("---toggle",function(){n.hasClass("active")?n.triggerHandler("---hide"):n.triggerHandler("---show")}).on("---show",function(){o.hasClass("content-active")&&t.trigger("---hide"),n.addClass("active"),a.addClass("active"),o.addClass("content-active")}).on("---hide",function(){n.removeClass("active"),a.removeClass("active"),o.removeClass("content-active")}),a.removeAttr("href").css("cursor","pointer").on("click",function(e){e.preventDefault(),e.stopPropagation(),n.trigger("---toggle")})}),o.on("click",function(e){o.hasClass("content-active")&&(e.preventDefault(),e.stopPropagation(),t.trigger("---hide"))}),a.on("keyup",function(e){27==e.keyCode&&o.hasClass("content-active")&&(e.preventDefault(),e.stopPropagation(),t.trigger("---hide"))}),e("#header").find("a").each(function(){var n=e(this),a=n.attr("href");a&&"#"!=a.charAt(0)&&n.removeAttr("href").css("cursor","pointer").on("click",function(e){e.preventDefault(),e.stopPropagation(),window.location.href=a})}),e("#footer").find(".copyright").each(function(){var n=e(this),a=n.parent(),o=a.parent().children().last();breakpoints.on("<=medium",function(){n.appendTo(o)}),breakpoints.on(">medium",function(){n.appendTo(a)})});var i=e("#main"),r={},s=["jpg","jpeg","png","gif","webp"];function l(n){var a=e("#main").data("exif"),o="";for(var t in a){var i=a[t],r=EXIF.getTag(n,i.tag);void 0!==r&&(o+='<i class="'+i.icon+'" aria-hidden="true"></i> '+r+" ")}return o}e.ajax({url:"/images/fulls/",dataType:"json",cache:!1,success:function(n){if(0!==n.length){var a=n.filter(function(e){if("file"!==e.type)return!1;var n=e.name.split(".").pop().toLowerCase();return-1!==s.indexOf(n)});0!==a.length?(a.sort(function(e,n){return e.name.localeCompare(n.name)}),a.forEach(function(n){var a=e('<article class="thumb"></article>'),o=e('<a class="image" href="/images/fulls/'+encodeURIComponent(n.name)+'"></a>'),t=e('<img src="/images/thumbs/'+encodeURIComponent(n.name)+'" alt="" data-name="'+n.name.replace(/"/g,""")+'" />');o.append(t),a.append(o),i.append(a)}),i.children(".thumb").each(function(){var n,a=e(this),o=a.find(".image"),t=o.children("img");0!=o.length&&(o.css("background-image","url("+t.attr("src")+")"),(n=t.data("position"))&&o.css("background-position",n),t.hide(),t[0].addEventListener("load",function(){EXIF.getData(t[0],function(){r[t.data("name")]=l(this)})}))}),i.poptrox({baseZIndex:2e4,caption:function(e){var n=e.children("img"),a=r[n.data("name")];void 0===a&&EXIF.getData(n[0],function(){a=r[n.data("name")]=l(this)});var o='<br/><a href="'+e.attr("href")+'" download="'+n.data("name")+'" class="button small" style="margin-top:10px;">Bild Speichern <i class="fa fa-download"></i></a>';return void 0!==a?"<p>"+a+o+"</p>":"<p>"+o+"</p>"},fadeSpeed:300,onPopupClose:function(){o.removeClass("modal-active")},onPopupOpen:function(){o.addClass("modal-active")},overlayOpacity:0,popupCloserText:"",popupHeight:150,popupLoaderText:"",popupSpeed:300,popupWidth:150,selector:".thumb > a.image",usePopupCaption:!0,usePopupCloser:!0,usePopupDefaultStyling:!1,usePopupForceClose:!0,usePopupLoader:!0,usePopupNav:!0,windowMargin:50}),breakpoints.on("<=xsmall",function(){i[0]._poptrox.windowMargin=0}),breakpoints.on(">xsmall",function(){i[0]._poptrox.windowMargin=50})):i.html('<p style="text-align:center;color:#fff;padding:2em;width:100%">Es wurden noch keine passenden Bilder für diesen Account hochgeladen oder zugewiesen.</p>')}else i.html('<p style="text-align:center;color:#fff;padding:2em;width:100%">Noch keine Bilder vorhanden.</p>')},error:function(){i.html('<p style="text-align:center;color:#fff;padding:2em;">Keine Bilder gefunden. Lade Bilder in deinen Nextcloud-Ordner hoch.</p>')}}),e.get("/api/auth/me").done(function(n){e("#login-username, #login-password, #login-submit").hide(),e("#logout-btn").show().css("display","inline-block"),"admin"===n.role&&e("#admin-link").html('<a href="/admin.html" class="button">Admin-Dashboard</a>'),e("#login-nav").html('Account <i class="fa fa-user"></i>')}),e("#login-form").submit(function(n){n.preventDefault(),e.post("/api/auth/login",{username:e("#login-username").val(),password:e("#login-password").val()}).done(function(){window.location.reload()}).fail(function(e){alert("Login fehlgeschlagen. Bitte Zugangsdaten ueberpruefen.")})}),e("#logout-btn").click(function(n){n.preventDefault(),e.post("/api/auth/logout").done(function(){window.location.reload()})})}(jQuery); |