From f4c106bd19c6e2fe4c4bdf1a3c017378e05d3444 Mon Sep 17 00:00:00 2001 From: Kroonk Date: Thu, 16 Apr 2026 23:17:03 +0200 Subject: [PATCH] Fix Selection-Mode: Blockiere Lightbox wenn Auswahl aktiv initSelectionMode wird jetzt VOR initPoptrox aufgerufen und nutzt einen direkten Click-Handler auf a.image mit stopImmediatePropagation, damit Poptrox im Selection-Mode nicht mehr die Lightbox oeffnet. Co-Authored-By: Claude Opus 4.6 --- assets/js/main.js | 12 ++++++------ assets/js/main.min.js | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/assets/js/main.js b/assets/js/main.js index b9a3f10..6f543d5 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -193,8 +193,8 @@ }); initThumbs(); - initPoptrox(); initSelectionMode(images); + initPoptrox(); }, error: function() { $main.html('

Keine Bilder gefunden. Lade Bilder in deinen Nextcloud-Ordner hoch.

'); @@ -339,16 +339,16 @@ $toolbar.toggleClass('visible', selectionActive); }); - // Klick auf Thumbnail im Selection-Mode - $(document).on('click', '.thumb', function(e) { + // Klick auf Thumbnail im Selection-Mode (direkt auf a.image, VOR poptrox gebunden) + $main.find('.thumb a.image').on('click', function(e) { if (!selectionActive) return; e.preventDefault(); - e.stopPropagation(); + e.stopImmediatePropagation(); - var $thumb = $(this); + var $thumb = $(this).closest('.thumb'); var $img = $thumb.find('img'); var imgName = $img.data('name'); - var imgHref = $thumb.find('a.image').attr('href'); + var imgHref = $(this).attr('href'); // Ordner aus href extrahieren var folder = null; diff --git a/assets/js/main.min.js b/assets/js/main.min.js index d61adf9..11ba6e1 100644 --- a/assets/js/main.min.js +++ b/assets/js/main.min.js @@ -1 +1 @@ -!function(e){var n,o=e(window),a=e("body");e("#wrapper");(breakpoints({xlarge:["1281px","1680px"],large:["981px","1280px"],medium:["737px","980px"],small:["481px","736px"],xsmall:[null,"480px"]}),"ie"==browser.name&&a.addClass("ie"),browser.mobile&&a.addClass("touch"),browser.canUse("transition"))&&(o.on("load",function(){window.setTimeout(function(){a.removeClass("is-preload")},100)}),o.on("resize",function(){window.clearTimeout(n),a.addClass("is-resizing"),n=window.setTimeout(function(){a.removeClass("is-resizing")},100)}));o.scrollTop(0);var t=e(".panel");t.each(function(){var n=e(this),o=e('[href="#'+n.attr("id")+'"]');e('
').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(){a.hasClass("content-active")&&t.trigger("---hide"),n.addClass("active"),o.addClass("active"),a.addClass("content-active")}).on("---hide",function(){n.removeClass("active"),o.removeClass("active"),a.removeClass("content-active")}),o.removeAttr("href").css("cursor","pointer").on("click",function(e){e.preventDefault(),e.stopPropagation(),n.trigger("---toggle")})}),a.on("click",function(e){a.hasClass("content-active")&&(e.preventDefault(),e.stopPropagation(),t.trigger("---hide"))}),o.on("keyup",function(e){27==e.keyCode&&a.hasClass("content-active")&&(e.preventDefault(),e.stopPropagation(),t.trigger("---hide"))}),e("#header").find("a").each(function(){var n=e(this),o=n.attr("href");o&&"#"!=o.charAt(0)&&n.removeAttr("href").css("cursor","pointer").on("click",function(e){e.preventDefault(),e.stopPropagation(),window.location.href=o})}),e("#footer").find(".copyright").each(function(){var n=e(this),o=n.parent(),a=o.parent().children().last();breakpoints.on("<=medium",function(){n.appendTo(a)}),breakpoints.on(">medium",function(){n.appendTo(o)})});var i=e("#main"),l={},r=["jpg","jpeg","png","gif","webp"];function s(n){var o=e("#main").data("exif"),a="";for(var t in o){var i=o[t],l=EXIF.getTag(n,i.tag);void 0!==l&&(a+=' '+l+"  ")}return a}e.ajax({url:"/images/fulls/",dataType:"json",cache:!1,success:function(n){if(0!==n.length){var o=n.filter(function(e){if("file"!==e.type)return!1;var n=e.name.split(".").pop().toLowerCase();return-1!==r.indexOf(n)});0!==o.length?(o.sort(function(e,n){return e.name.localeCompare(n.name)}),o.forEach(function(n){var o=e('
'),a=n.folder?encodeURIComponent(n.folder)+"/":"",t="/images/fulls/"+a+encodeURIComponent(n.name),l="/images/thumbs/"+a+encodeURIComponent(n.name),r=e(''),s=e('');r.append(s),o.append(r),i.append(o)}),i.children(".thumb").each(function(){var n,o=e(this),a=o.find(".image"),t=a.children("img");0!=a.length&&(a.css("background-image","url('"+t.attr("src")+"')"),(n=t.data("position"))&&a.css("background-position",n),t.hide(),t[0].addEventListener("error",function(){var e=a.attr("href");e&&a.css("background-image","url('"+e+"')")}),t[0].addEventListener("load",function(){EXIF.getData(t[0],function(){l[t.data("name")]=s(this)})}))}),i.poptrox({baseZIndex:2e4,caption:function(e){var n=e.children("img"),o=l[n.data("name")];void 0===o&&EXIF.getData(n[0],function(){o=l[n.data("name")]=s(this)});var a='
Bild Speichern ';return void 0!==o?"

"+o+a+"

":"

"+a+"

"},fadeSpeed:300,onPopupClose:function(){a.removeClass("modal-active")},onPopupOpen:function(){a.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}),function(n){var o=[],a=!1,t=e('
');t.html('0 ausgewaehlt'),e("body").append(t);var i=e('
  • ');e("#header nav > ul").prepend(i);var l=[];function r(){var n=o.length;e("#sel-count").text(n+" ausgewaehlt"),e("#sel-download").prop("disabled",0===n),n>3?e("#sel-download").html(' Als ZIP ('+n+")"):n>0?e("#sel-download").html(' Herunterladen ('+n+")"):e("#sel-download").html(' Herunterladen')}function s(){o=[],e(".thumb").removeClass("selected"),r()}n.forEach(function(e){e.folder&&-1===l.indexOf(e.folder)&&l.push(e.folder)}),l.length>0&&l.forEach(function(n){var o=e('
  • ');e("#header nav > ul").prepend(o)}),e(document).on("click","#select-mode-toggle",function(n){n.preventDefault(),n.stopPropagation(),a=!a,e("body").toggleClass("selection-mode",a),a||s(),t.toggleClass("visible",a)}),e(document).on("click",".thumb",function(n){if(a){n.preventDefault(),n.stopPropagation();var t=e(this),i=t.find("img"),l=i.data("name"),s=t.find("a.image").attr("href"),d=null,c=s.replace("/images/fulls/",""),p=c.split("/");p.length>1&&(d=decodeURIComponent(p[0]));for(var u=-1,f=0;fEs wurden noch keine passenden Bilder für diesen Account hochgeladen oder zugewiesen.

    ')}else i.html('

    Noch keine Bilder vorhanden.

    ')},error:function(){i.html('

    Keine Bilder gefunden. Lade Bilder in deinen Nextcloud-Ordner hoch.

    ')}});var d=localStorage.getItem("mischkomposition_theme")||"main";function c(n){"light"===n?e("#theme-toggle i").removeClass("fa-sun").addClass("fa-moon"):e("#theme-toggle i").removeClass("fa-moon").addClass("fa-sun")}c(d),e("#theme-toggle").click(function(n){n.preventDefault(),d="main"===d?"light":"main",localStorage.setItem("mischkomposition_theme",d),e("#theme-style").attr("href","assets/css/"+d+".min.css"),c(d)}),e.get("/api/auth/me").done(function(n){e("#login-username, #login-password, #login-submit").hide(),e("#logout-btn").show().css("display","inline-block"),e("#pw-change-section").show(),"admin"===n.role&&e("#admin-link").html('Admin-Dashboard'),e("#login-nav").html('Account ')}),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){var n="Login fehlgeschlagen.";e.responseJSON&&"Account abgelaufen"===e.responseJSON.error&&(n="Dein Account ist abgelaufen. Bitte kontaktiere den Administrator."),alert(n)})}),e("#logout-btn").click(function(n){n.preventDefault(),e.post("/api/auth/logout").done(function(){window.location.reload()})}),e("#pw-change-form").submit(function(n){n.preventDefault();var o=e("#pw-new").val();o===e("#pw-confirm").val()?e.post("/api/auth/change-password",{old_password:e("#pw-old").val(),new_password:o}).done(function(){alert("Passwort geaendert!"),e("#pw-old, #pw-new, #pw-confirm").val("")}).fail(function(e){alert(e.responseJSON?e.responseJSON.error:"Fehler")}):alert("Passwoerter stimmen nicht ueberein.")})}(jQuery); \ No newline at end of file +!function(e){var n,o=e(window),a=e("body");e("#wrapper");(breakpoints({xlarge:["1281px","1680px"],large:["981px","1280px"],medium:["737px","980px"],small:["481px","736px"],xsmall:[null,"480px"]}),"ie"==browser.name&&a.addClass("ie"),browser.mobile&&a.addClass("touch"),browser.canUse("transition"))&&(o.on("load",function(){window.setTimeout(function(){a.removeClass("is-preload")},100)}),o.on("resize",function(){window.clearTimeout(n),a.addClass("is-resizing"),n=window.setTimeout(function(){a.removeClass("is-resizing")},100)}));o.scrollTop(0);var t=e(".panel");t.each(function(){var n=e(this),o=e('[href="#'+n.attr("id")+'"]');e('
    ').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(){a.hasClass("content-active")&&t.trigger("---hide"),n.addClass("active"),o.addClass("active"),a.addClass("content-active")}).on("---hide",function(){n.removeClass("active"),o.removeClass("active"),a.removeClass("content-active")}),o.removeAttr("href").css("cursor","pointer").on("click",function(e){e.preventDefault(),e.stopPropagation(),n.trigger("---toggle")})}),a.on("click",function(e){a.hasClass("content-active")&&(e.preventDefault(),e.stopPropagation(),t.trigger("---hide"))}),o.on("keyup",function(e){27==e.keyCode&&a.hasClass("content-active")&&(e.preventDefault(),e.stopPropagation(),t.trigger("---hide"))}),e("#header").find("a").each(function(){var n=e(this),o=n.attr("href");o&&"#"!=o.charAt(0)&&n.removeAttr("href").css("cursor","pointer").on("click",function(e){e.preventDefault(),e.stopPropagation(),window.location.href=o})}),e("#footer").find(".copyright").each(function(){var n=e(this),o=n.parent(),a=o.parent().children().last();breakpoints.on("<=medium",function(){n.appendTo(a)}),breakpoints.on(">medium",function(){n.appendTo(o)})});var i=e("#main"),l={},r=["jpg","jpeg","png","gif","webp"];function s(n){var o=e("#main").data("exif"),a="";for(var t in o){var i=o[t],l=EXIF.getTag(n,i.tag);void 0!==l&&(a+=' '+l+"  ")}return a}e.ajax({url:"/images/fulls/",dataType:"json",cache:!1,success:function(n){if(0!==n.length){var o=n.filter(function(e){if("file"!==e.type)return!1;var n=e.name.split(".").pop().toLowerCase();return-1!==r.indexOf(n)});0!==o.length?(o.sort(function(e,n){return e.name.localeCompare(n.name)}),o.forEach(function(n){var o=e('
    '),a=n.folder?encodeURIComponent(n.folder)+"/":"",t="/images/fulls/"+a+encodeURIComponent(n.name),l="/images/thumbs/"+a+encodeURIComponent(n.name),r=e(''),s=e('');r.append(s),o.append(r),i.append(o)}),i.children(".thumb").each(function(){var n,o=e(this),a=o.find(".image"),t=a.children("img");0!=a.length&&(a.css("background-image","url('"+t.attr("src")+"')"),(n=t.data("position"))&&a.css("background-position",n),t.hide(),t[0].addEventListener("error",function(){var e=a.attr("href");e&&a.css("background-image","url('"+e+"')")}),t[0].addEventListener("load",function(){EXIF.getData(t[0],function(){l[t.data("name")]=s(this)})}))}),function(n){var o=[],a=!1,t=e('
    ');t.html('0 ausgewaehlt'),e("body").append(t);var l=e('
  • ');e("#header nav > ul").prepend(l);var r=[];function s(){var n=o.length;e("#sel-count").text(n+" ausgewaehlt"),e("#sel-download").prop("disabled",0===n),n>3?e("#sel-download").html(' Als ZIP ('+n+")"):n>0?e("#sel-download").html(' Herunterladen ('+n+")"):e("#sel-download").html(' Herunterladen')}function d(){o=[],e(".thumb").removeClass("selected"),s()}n.forEach(function(e){e.folder&&-1===r.indexOf(e.folder)&&r.push(e.folder)}),r.length>0&&r.forEach(function(n){var o=e('
  • ');e("#header nav > ul").prepend(o)}),e(document).on("click","#select-mode-toggle",function(n){n.preventDefault(),n.stopPropagation(),a=!a,e("body").toggleClass("selection-mode",a),a||d(),t.toggleClass("visible",a)}),i.find(".thumb a.image").on("click",function(n){if(a){n.preventDefault(),n.stopImmediatePropagation();var t=e(this).closest(".thumb"),i=t.find("img"),l=i.data("name"),r=e(this).attr("href"),d=null,c=r.replace("/images/fulls/",""),p=c.split("/");p.length>1&&(d=decodeURIComponent(p[0]));for(var u=-1,f=0;fBild Speichern ';return void 0!==o?"

    "+o+a+"

    ":"

    "+a+"

    "},fadeSpeed:300,onPopupClose:function(){a.removeClass("modal-active")},onPopupOpen:function(){a.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('

    Es wurden noch keine passenden Bilder für diesen Account hochgeladen oder zugewiesen.

    ')}else i.html('

    Noch keine Bilder vorhanden.

    ')},error:function(){i.html('

    Keine Bilder gefunden. Lade Bilder in deinen Nextcloud-Ordner hoch.

    ')}});var d=localStorage.getItem("mischkomposition_theme")||"main";function c(n){"light"===n?e("#theme-toggle i").removeClass("fa-sun").addClass("fa-moon"):e("#theme-toggle i").removeClass("fa-moon").addClass("fa-sun")}c(d),e("#theme-toggle").click(function(n){n.preventDefault(),d="main"===d?"light":"main",localStorage.setItem("mischkomposition_theme",d),e("#theme-style").attr("href","assets/css/"+d+".min.css"),c(d)}),e.get("/api/auth/me").done(function(n){e("#login-username, #login-password, #login-submit").hide(),e("#logout-btn").show().css("display","inline-block"),e("#pw-change-section").show(),"admin"===n.role&&e("#admin-link").html('Admin-Dashboard'),e("#login-nav").html('Account ')}),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){var n="Login fehlgeschlagen.";e.responseJSON&&"Account abgelaufen"===e.responseJSON.error&&(n="Dein Account ist abgelaufen. Bitte kontaktiere den Administrator."),alert(n)})}),e("#logout-btn").click(function(n){n.preventDefault(),e.post("/api/auth/logout").done(function(){window.location.reload()})}),e("#pw-change-form").submit(function(n){n.preventDefault();var o=e("#pw-new").val();o===e("#pw-confirm").val()?e.post("/api/auth/change-password",{old_password:e("#pw-old").val(),new_password:o}).done(function(){alert("Passwort geaendert!"),e("#pw-old, #pw-new, #pw-confirm").val("")}).fail(function(e){alert(e.responseJSON?e.responseJSON.error:"Fehler")}):alert("Passwoerter stimmen nicht ueberein.")})}(jQuery); \ No newline at end of file