ret = []
for part in ("/".join(parts[:i]) for i in range(1, len(parts))):
- ret.append(("/%s" % part, self.get_page_title(part, os.path.basename(part))))
+ ret.append(("/docs/%s" % part, self.get_page_title(part, os.path.basename(part))))
return ret
return NotImplemented
+ def __hash__(self):
+ return hash(self.page)
+
@staticmethod
def sanitise_page_name(page):
if not page:
if res:
return bytes(res.data)
- async def get_thumbnail(self, size):
+ async def get_thumbnail(self, size, format=None):
assert self.is_bitmap_image()
- cache_key = "-".join((
+ cache_key = ":".join((
+ "wiki",
+ "thumbnail",
self.path,
util.normalize(self.filename),
self.created_at.isoformat(),
+ format or "N/A",
"%spx" % size,
))
return thumbnail
# Generate the thumbnail
- thumbnail = util.generate_thumbnail(self.blob, size)
+ thumbnail = util.generate_thumbnail(self.blob, size, format=format, quality=95)
# Put it into the cache for forever
await self.backend.cache.set(cache_key, thumbnail)
<div class="columns is-centered">
<div class="column is-8">
<figure class="image modal-trigger" data-target="%(id)s">
- <img src="/docs%(url)s?s=640&%(args)s" alt="%(caption)s">
+ <img src="/docs%(url)s?s=960&%(args)s" alt="%(caption)s">
<figcaption class="figure-caption">%(caption)s</figcaption>
</figure>
<div class="modal-content">
<p class="image">
- <img src="/docs%(url)s?s=1920&%(args)s" alt="%(caption)s"
+ <img src="/docs%(url)s?s=2048&%(args)s" alt="%(caption)s"
loading="lazy">
</p>
+
+ <a class="button is-small" href="/docs%(url)s?action=detail">
+ <span class="icon">
+ <i class="fa-solid fa-circle-info"></i>
+ </span>
+ </a>
</div>
<button class="modal-close is-large" aria-label="close"></button>
</div>
"""
+ # Try to split query string
+ url, delimiter, qs = url.partition("?")
+
+ # Parse query arguments
+ args = urllib.parse.parse_qs(qs)
+
# Skip any absolute and external URLs
if url.startswith("https://") or url.startswith("http://"):
return html % {
"caption" : caption or "",
"id" : id,
- "plain_url" : url,
"url" : url,
+ "args" : args,
}
- # Try to split query string
- url, delimiter, qs = url.partition("?")
-
- # Parse query arguments
- args = urllib.parse.parse_qs(qs)
-
# Build absolute path
url = self.backend.wiki.make_path(self.path, url)
"""
Finds all Linked Files
"""
- def run(self, root):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+
self.md.files = []
+ def run(self, root):
# Find all images and store the URLs
for image in root.findall(".//img"):
src = image.get("src")