Click to View Image in Popup #398

Open
opened 2026-02-04 19:26:49 +03:00 by OVERLORD · 30 comments
Owner

Originally created by @Shackelford-Arden on GitHub (Aug 8, 2017).

Desired Feature:

I'd prefer to have it where images that are potentially too small to view just on the page that you can click on the image and it pops up on the same page.

Current Behavior:

Right now the images just open up in a new tab.

It works, but I'd think it'd be nice to have image show up within the same tab. Particularly helpful if one has many tabs open 😄

Originally created by @Shackelford-Arden on GitHub (Aug 8, 2017). Desired Feature: I'd prefer to have it where images that are potentially too small to view just on the page that you can click on the image and it pops up on the same page. Current Behavior: Right now the images just open up in a new tab. It works, but I'd think it'd be nice to have image show up within the same tab. Particularly helpful if one has many tabs open :smile:
OVERLORD added the 🛠️ Enhancement label 2026-02-04 19:26:49 +03:00
Author
Owner

@nekromoff commented on GitHub (Sep 6, 2017):

Maybe standardized lightbox that's easy to add as JS

@nekromoff commented on GitHub (Sep 6, 2017): Maybe standardized lightbox that's easy to add as JS
Author
Owner

@jonathanadams commented on GitHub (Dec 7, 2017):

+1

@jonathanadams commented on GitHub (Dec 7, 2017): +1
Author
Owner

@kayvanaarssen commented on GitHub (Mar 23, 2020):

Would love to see this feature

@kayvanaarssen commented on GitHub (Mar 23, 2020): Would love to see this feature
Author
Owner

@alexanderhofstaetter commented on GitHub (May 6, 2020):

i would also love to see this feature - it is a little bit annoying having the image URL open in a new tab always ...

@alexanderhofstaetter commented on GitHub (May 6, 2020): i would also love to see this feature - it is a little bit annoying having the image URL open in a new tab always ...
Author
Owner

@kayvanaarssen commented on GitHub (Nov 19, 2020):

Any news on this feature, it would be nice to get the Images bigger on Click. And not open in a new page 👍

@kayvanaarssen commented on GitHub (Nov 19, 2020): Any news on this feature, it would be nice to get the Images bigger on Click. And not open in a new page 👍
Author
Owner

@kayvanaarssen commented on GitHub (Aug 18, 2021):

@ssddanbrown Any news on this feature, would be very nice to get a pop-up for the bigger image.

Maybe something like Confluence has, it has the option to include the image in different sizes in the "Page / Content"

image

@kayvanaarssen commented on GitHub (Aug 18, 2021): @ssddanbrown Any news on this feature, would be very nice to get a pop-up for the bigger image. Maybe something like Confluence has, it has the option to include the image in different sizes in the "Page / Content" ![image](https://user-images.githubusercontent.com/672841/129862680-65b8034a-246d-43cf-97c1-fa3d132f0aee.png)
Author
Owner

@ssddanbrown commented on GitHub (Aug 19, 2021):

@kayvanaarssen No news on this feature.

@ssddanbrown commented on GitHub (Aug 19, 2021): @kayvanaarssen No news on this feature.
Author
Owner

@nekromoff commented on GitHub (Aug 20, 2021):

This could be solved via pure CSS3 added to the settings "custom head" field. I might do some testing and try to come up with a zero config CSS ligthbox.

@nekromoff commented on GitHub (Aug 20, 2021): This could be solved via pure CSS3 added to the settings "custom head" field. I might do some testing and try to come up with a zero config CSS ligthbox.
Author
Owner

@nekromoff commented on GitHub (Aug 20, 2021):

Sorry for spamming this. I have used Luminous library in the end. Paste this into your custom head code under settings:

<script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous-basic.min.css" rel="stylesheet">
<script>
window.onload = function() {
  var images=document.querySelectorAll("main a img");
  for (image of images) {
    new Luminous(image.parentElement);
  }
}
</script>

You might want to download the code and link it locally, if you don't trust random CDN.

Remember, this is just a proof of concept...

@nekromoff commented on GitHub (Aug 20, 2021): Sorry for spamming this. I have used Luminous library in the end. Paste this into your custom head code under settings: ``` <script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous-basic.min.css" rel="stylesheet"> <script> window.onload = function() { var images=document.querySelectorAll("main a img"); for (image of images) { new Luminous(image.parentElement); } } </script> ``` You might want to download the code and link it locally, if you don't trust random CDN. Remember, this is just a proof of concept...
Author
Owner

@lenusch commented on GitHub (Mar 18, 2022):

Cool Popup works. Can i overgive a attribut in the Images, to group them? That if i open one IMage, i can use arrows for next Image?

@lenusch commented on GitHub (Mar 18, 2022): Cool Popup works. Can i overgive a attribut in the Images, to group them? That if i open one IMage, i can use arrows for next Image?
Author
Owner

@Gum97 commented on GitHub (Feb 13, 2023):

+1
Has this issue been resolved yet?

@Gum97 commented on GitHub (Feb 13, 2023): +1 Has this issue been resolved yet?
Author
Owner

@tcatlas commented on GitHub (Feb 17, 2023):

@nekromoff

Sorry for spamming this. I have used Luminous library in the end. Paste this into your custom head code under settings:

....

You might want to download the code and link it locally, if you don't trust random CDN.

Remember, this is just a proof of concept...

This is great, and solves the problem in the intermediary, however, I would love to see this feature expanded upon to add the ability to zoom to scroll and also arrows to quickly navigate between images on the page.

@tcatlas commented on GitHub (Feb 17, 2023): @nekromoff > Sorry for spamming this. I have used Luminous library in the end. Paste this into your custom head code under settings: > > .... > > You might want to download the code and link it locally, if you don't trust random CDN. > > Remember, this is just a proof of concept... This is great, and solves the problem in the intermediary, however, I would love to see this feature expanded upon to add the ability to zoom to scroll and also arrows to quickly navigate between images on the page.
Author
Owner

@at-ng commented on GitHub (Apr 24, 2023):

Sorry for spamming this. I have used Luminous library in the end. Paste this into your custom head code under settings:

<script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous-basic.min.css" rel="stylesheet">
<script>
window.onload = function() {
  var images=document.querySelectorAll("main a img");
  for (image of images) {
    new Luminous(image.parentElement);
  }
}
</script>

You might want to download the code and link it locally, if you don't trust random CDN.

Remember, this is just a proof of concept...

If you change the script to

window.onload = function() {
  for (image of document.querySelectorAll("main img")) {
    new Luminous(image, {sourceAttribute:"src"});
  }
}

Then it seems to work for diagrams as well (they do not have a clickable link at all). If you want a hand instead of a pointer when moving the mouse over the diagram images then you can add this line after:

document.querySelectorAll("main img").forEach((elem) => {elem.style.cursor = 'pointer'})

To prevent the header from being placed on top of the image you can change it to:

  for (image of document.querySelectorAll("main img")) {
    new Luminous(image, {sourceAttribute:"src",onOpen:() => {document.querySelector('.lum-lightbox').style.zIndex = 999}});
  }

Cool Popup works. Can i overgive a attribut in the Images, to group them? That if i open one IMage, i can use arrows for next Image?

To get a gallery (arrows to switch image) instead you can replace the for {} loop with

new LuminousGallery(document.querySelectorAll("main img"), {}, {sourceAttribute:"src",onOpen:() => {document.querySelector('.lum-lightbox').style.zIndex = 999}});
@at-ng commented on GitHub (Apr 24, 2023): > Sorry for spamming this. I have used Luminous library in the end. Paste this into your custom head code under settings: > > ``` > <script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous.min.js"></script> > <link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous-basic.min.css" rel="stylesheet"> > <script> > window.onload = function() { > var images=document.querySelectorAll("main a img"); > for (image of images) { > new Luminous(image.parentElement); > } > } > </script> > ``` > > You might want to download the code and link it locally, if you don't trust random CDN. > > Remember, this is just a proof of concept... If you change the script to ``` window.onload = function() { for (image of document.querySelectorAll("main img")) { new Luminous(image, {sourceAttribute:"src"}); } } ``` Then it seems to work for diagrams as well (they do not have a clickable link at all). If you want a hand instead of a pointer when moving the mouse over the diagram images then you can add this line after: ``` document.querySelectorAll("main img").forEach((elem) => {elem.style.cursor = 'pointer'}) ``` To prevent the header from being placed on top of the image you can change it to: ``` for (image of document.querySelectorAll("main img")) { new Luminous(image, {sourceAttribute:"src",onOpen:() => {document.querySelector('.lum-lightbox').style.zIndex = 999}}); } ``` > Cool Popup works. Can i overgive a attribut in the Images, to group them? That if i open one IMage, i can use arrows for next Image? To get a gallery (arrows to switch image) instead you can replace the `for {}` loop with ``` new LuminousGallery(document.querySelectorAll("main img"), {}, {sourceAttribute:"src",onOpen:() => {document.querySelector('.lum-lightbox').style.zIndex = 999}}); ```
Author
Owner

@helson22 commented on GitHub (Sep 28, 2023):

This is a simple and working solution.

But I have one Problem: every image with an anchor on it is processed by the code above. I have images that I don't want to show in a lightbox because the link in the anchor goes external.

How can I achieve this?

Thank you in advance!

@helson22 commented on GitHub (Sep 28, 2023): This is a simple and working solution. But I have one Problem: every image with an anchor on it is processed by the code above. I have images that I don't want to show in a lightbox because the link in the anchor goes external. How can I achieve this? Thank you in advance!
Author
Owner

@Man-in-Black commented on GitHub (Oct 5, 2023):

I've starting to use this script, but if I activate it I am not able to sort the books via drag and drop.
Is there a way around it?

@Man-in-Black commented on GitHub (Oct 5, 2023): I've starting to use this script, but if I activate it I am not able to sort the books via drag and drop. Is there a way around it?
Author
Owner

@at-ng commented on GitHub (Oct 5, 2023):

As a workaround you could change it to

<!-- Add popup for images (and diagrams) -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous-basic.min.css" rel="stylesheet">
<script>
window.onload = function() {
  if(document.location.toString().match('disableImagePopup')) return;
  let lgs = document.createElement('script');
  lgs.onload = function () {
    new LuminousGallery(document.querySelectorAll("main img"),{arrowNavigation: true},{sourceAttribute:"src",closeWithEscape: true,onOpen:() => {document.querySelector('.lum-lightbox').style.zIndex = 999}});
    document.querySelectorAll("main img").forEach((elem) => {elem.style.cursor = 'pointer'})
  };
  lgs.src = "https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous.min.js";
  document.head.appendChild(lgs)
};
</script>

Then when you add ?disableImagePopup to the end of an url the script will not load. Not sure why the issue happens, guess there is some kind of collision between that page and Luminous. Another option is to disable it on that page specifically, to do that replace 'disableImagePopup' (including '') with /\/shelves\/[^\/]+\/edit/

@at-ng commented on GitHub (Oct 5, 2023): As a workaround you could change it to ``` <!-- Add popup for images (and diagrams) --> <link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous-basic.min.css" rel="stylesheet"> <script> window.onload = function() { if(document.location.toString().match('disableImagePopup')) return; let lgs = document.createElement('script'); lgs.onload = function () { new LuminousGallery(document.querySelectorAll("main img"),{arrowNavigation: true},{sourceAttribute:"src",closeWithEscape: true,onOpen:() => {document.querySelector('.lum-lightbox').style.zIndex = 999}}); document.querySelectorAll("main img").forEach((elem) => {elem.style.cursor = 'pointer'}) }; lgs.src = "https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.5/luminous.min.js"; document.head.appendChild(lgs) }; </script> ``` Then when you add ?disableImagePopup to the end of an url the script will not load. Not sure why the issue happens, guess there is some kind of collision between that page and Luminous. Another option is to disable it on that page specifically, to do that replace `'disableImagePopup'` (including '') with `/\/shelves\/[^\/]+\/edit/`
Author
Owner

@Man-in-Black commented on GitHub (Oct 6, 2023):

Thanks a lot, that fixed the issue.
But I replaced the 'disableImagePopup' with /\/shelves\/[^\/]+\/edit/ and now it works perfect.

@Man-in-Black commented on GitHub (Oct 6, 2023): Thanks a lot, that fixed the issue. But I replaced the `'disableImagePopup'` with `/\/shelves\/[^\/]+\/edit/` and now it works perfect.
Author
Owner

@mschoon85 commented on GitHub (Jan 4, 2024):

With the release of version 23.12, I encountered an issue where the image would display behind the page upon clicking on it. This was resolved thanks to the response from at-ng on April 24, 2023. My code now looks like this (including the latest version of lightbox):

<script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous-basic.min.css" rel="stylesheet">
<script>
window.onload = function() {
  var images = document.querySelectorAll("main a img");
   for (image of document.querySelectorAll("main img")) {
    new Luminous(image, {sourceAttribute:"src",onOpen:() => {document.querySelector('.lum-lightbox').style.zIndex = 999}});
  }
}
</script>

Kind Regards,

Michel

@mschoon85 commented on GitHub (Jan 4, 2024): With the release of version 23.12, I encountered an issue where the image would display behind the page upon clicking on it. This was resolved thanks to the response from at-ng on April 24, 2023. My code now looks like this (including the latest version of lightbox): ``` <script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous-basic.min.css" rel="stylesheet"> <script> window.onload = function() { var images = document.querySelectorAll("main a img"); for (image of document.querySelectorAll("main img")) { new Luminous(image, {sourceAttribute:"src",onOpen:() => {document.querySelector('.lum-lightbox').style.zIndex = 999}}); } } </script> ``` Kind Regards, Michel
Author
Owner

@Limerick-gh commented on GitHub (Feb 22, 2024):

This is exactly I was looking for. Honestly, I'd say this should be part of the core product. But if we can get it with a customization I am also fine with this.

@mschoon85, I tried your code and it's working in general. But if there are multiple images on a page, it just works well for the first one I click. If click afterwards on a different image, it does open in the background.
Do you experience the same?

@Limerick-gh commented on GitHub (Feb 22, 2024): This is exactly I was looking for. Honestly, I'd say this should be part of the core product. But if we can get it with a customization I am also fine with this. @mschoon85, I tried your code and it's working in general. But if there are multiple images on a page, it just works well for the first one I click. If click afterwards on a different image, it does open in the background. Do you experience the same?
Author
Owner

@ssddanbrown commented on GitHub (Feb 23, 2024):

@Limerick-gh here's my tweak on this:

<script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous-basic.min.css" rel="stylesheet">
<style>.lum-lightbox.lum-open {z-index: 999;}</style>
<script type="module">
  const images = document.querySelectorAll(".page-content a > img");
  for (const image of images) {
    new Luminous(image.parentElement);
  }
</script>

Note: This differs slightly in that it will show the image linked to rather than the thumbnail image shown on the page

@ssddanbrown commented on GitHub (Feb 23, 2024): @Limerick-gh here's my tweak on this: ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous-basic.min.css" rel="stylesheet"> <style>.lum-lightbox.lum-open {z-index: 999;}</style> <script type="module"> const images = document.querySelectorAll(".page-content a > img"); for (const image of images) { new Luminous(image.parentElement); } </script> ``` _Note: This differs slightly in that it will show the image linked to rather than the thumbnail image shown on the page_
Author
Owner

@Limerick-gh commented on GitHub (Feb 23, 2024):

This works great @ssddanbrown!
I just recognized that it does work for uploaded images perfectly. But if images are pasted into bookstack from clipboard, it doesn't. Probably because these images are missing the <a> element.

@Limerick-gh commented on GitHub (Feb 23, 2024): This works great @ssddanbrown! I just recognized that it does work for uploaded images perfectly. But if images are pasted into bookstack from clipboard, it doesn't. Probably because these images are missing the `<a>` element.
Author
Owner

@mschoon85 commented on GitHub (Feb 23, 2024):

@ssddanbrown Your code functions flawlessly! Thank you! @Limerick-gh, on my end, it operates smoothly for both uploaded and clipboard-pasted images.

@mschoon85 commented on GitHub (Feb 23, 2024): @ssddanbrown Your code functions flawlessly! Thank you! @Limerick-gh, on my end, it operates smoothly for both uploaded and clipboard-pasted images.
Author
Owner

@Limerick-gh commented on GitHub (Feb 23, 2024):

Can confirm, that it does work with simple copy paste as well.
Not sure how the other 'old' images have been inserted on the page.. But if I do this for new images it does work as expected. Awesome! 🎉
Thank you so much @ssddanbrown! for this great application and your support!

@Limerick-gh commented on GitHub (Feb 23, 2024): Can confirm, that it does work with simple copy paste as well. Not sure how the other 'old' images have been inserted on the page.. But if I do this for new images it does work as expected. Awesome! 🎉 Thank you so much @ssddanbrown! for this great application and your support!
Author
Owner

@Mikrz commented on GitHub (Apr 11, 2024):

@ssddanbrown

<script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous-basic.min.css" rel="stylesheet">
<style>.lum-lightbox.lum-open {z-index: 999;}</style>
<script type="module">
  const images = document.querySelectorAll(".page-content a > img");
  for (const image of images) {
    new Luminous(image.parentElement);
  }
</script>

Just wanted to let you know, it appears that Luminous Lightbox's module conflicts with Bookstacks drag & drop sorting of pages. Instead of the drag & drop working, it just highlights text as if there was no drag & drop functionality at all, at least on v23.12.2 as I have not yet had time to upgrade to the latest version.

@Mikrz commented on GitHub (Apr 11, 2024): @ssddanbrown > ``` > <script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous.min.js"></script> > <link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous-basic.min.css" rel="stylesheet"> > <style>.lum-lightbox.lum-open {z-index: 999;}</style> > <script type="module"> > const images = document.querySelectorAll(".page-content a > img"); > for (const image of images) { > new Luminous(image.parentElement); > } > </script> > ``` Just wanted to let you know, it appears that Luminous Lightbox's module conflicts with Bookstacks drag & drop sorting of pages. Instead of the drag & drop working, it just highlights text as if there was no drag & drop functionality at all, at least on v23.12.2 as I have not yet had time to upgrade to the latest version.
Author
Owner

@at-ng commented on GitHub (Apr 12, 2024):

@ssddanbrown

<script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous-basic.min.css" rel="stylesheet">
<style>.lum-lightbox.lum-open {z-index: 999;}</style>
<script type="module">
  const images = document.querySelectorAll(".page-content a > img");
  for (const image of images) {
    new Luminous(image.parentElement);
  }
</script>

Just wanted to let you know, it appears that Luminous Lightbox's module conflicts with Bookstacks drag & drop sorting of pages. Instead of the drag & drop working, it just highlights text as if there was no drag & drop functionality at all, at least on v23.12.2 as I have not yet had time to upgrade to the latest version.

https://github.com/BookStackApp/BookStack/issues/464#issuecomment-1748753283
https://github.com/BookStackApp/BookStack/issues/464#issuecomment-1748826707
For both pages it would be
/\/shelves\/[^\/]+\/edit|\/books\/[^\/]+\/edit/

@at-ng commented on GitHub (Apr 12, 2024): > @ssddanbrown > > > ``` > > <script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous.min.js"></script> > > <link href="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.4.0/luminous-basic.min.css" rel="stylesheet"> > > <style>.lum-lightbox.lum-open {z-index: 999;}</style> > > <script type="module"> > > const images = document.querySelectorAll(".page-content a > img"); > > for (const image of images) { > > new Luminous(image.parentElement); > > } > > </script> > > ``` > > Just wanted to let you know, it appears that Luminous Lightbox's module conflicts with Bookstacks drag & drop sorting of pages. Instead of the drag & drop working, it just highlights text as if there was no drag & drop functionality at all, at least on v23.12.2 as I have not yet had time to upgrade to the latest version. https://github.com/BookStackApp/BookStack/issues/464#issuecomment-1748753283 https://github.com/BookStackApp/BookStack/issues/464#issuecomment-1748826707 For both pages it would be `/\/shelves\/[^\/]+\/edit|\/books\/[^\/]+\/edit/`
Author
Owner

@szabeszg commented on GitHub (Apr 12, 2024):

Can't we just have it as an option in the core?

@szabeszg commented on GitHub (Apr 12, 2024): Can't we just have it as an option in the core?
Author
Owner

@tcatlas commented on GitHub (Apr 13, 2024):

It also appears to break the tag sorting.

I agree this should be a core feature, not a hack.

@tcatlas commented on GitHub (Apr 13, 2024): It also appears to break the tag sorting. I agree this should be a core feature, not a hack.
Author
Owner

@virtadpt commented on GitHub (Apr 14, 2024):

I agree as well. This isn't just quality of life for UI, this is accessibility.

@virtadpt commented on GitHub (Apr 14, 2024): I agree as well. This isn't just quality of life for UI, this is accessibility.
Author
Owner

@vmario89 commented on GitHub (Feb 11, 2025):

i modified the lightbox to only show if the parent tag of the image is really an image (at least by file ending check). Because in my case i have some images in BookStack which deal as buttons to open another web page. Now, with the previously pasted code from other used, the external url (not an image) is also going to be rendered as image lightbox, which surely fails. so i added that regex around

<script src="/luminous.min.js"></script>
<link href="/luminous-basic.min.css" rel="stylesheet">
<style>.lum-lightbox.lum-open {z-index: 999;}</style>
<script type="module">
  const images = document.querySelectorAll(".page-content a > img");
  const pattern = new RegExp('^https?:\\/\\/.+\\.(png|jpg|jpeg|bmp|gif|webp)$', 'i');
  for (const image of images) {
    if (pattern.test(image.parentElement.href)) {
      new Luminous(image.parentElement);
    }
  }
</script>

we could also do some check if the image.src == image.parentElement.href is the same url base + file ending to be more precise

@vmario89 commented on GitHub (Feb 11, 2025): i modified the lightbox to only show if the parent tag <a> of the image <img> is really an image (at least by file ending check). Because in my case i have some images in BookStack which deal as buttons to open another web page. Now, with the previously pasted code from other used, the external url (not an image) is also going to be rendered as image lightbox, which surely fails. so i added that regex around ``` <script src="/luminous.min.js"></script> <link href="/luminous-basic.min.css" rel="stylesheet"> <style>.lum-lightbox.lum-open {z-index: 999;}</style> <script type="module"> const images = document.querySelectorAll(".page-content a > img"); const pattern = new RegExp('^https?:\\/\\/.+\\.(png|jpg|jpeg|bmp|gif|webp)$', 'i'); for (const image of images) { if (pattern.test(image.parentElement.href)) { new Luminous(image.parentElement); } } </script> ``` we could also do some check if the image.src == image.parentElement.href is the same url base + file ending to be more precise
Author
Owner

@aaronolsen commented on GitHub (Jul 29, 2025):

I used @vmario89 with BookStack v25.05.2 and this gives the lightbox effect and does not disrupt neither page sorting nor tag sorting. Thank you @vmario89!

@aaronolsen commented on GitHub (Jul 29, 2025): I used @vmario89 with BookStack v25.05.2 and this gives the lightbox effect and does not disrupt neither page sorting nor tag sorting. Thank you @vmario89!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/BookStack#398