2025.12.25 15:47:21 (cachyos.cmoser.eu)

This commit is contained in:
2025-12-25 15:47:21 +01:00
parent c2e431e43b
commit 3d578129d1
6 changed files with 123 additions and 74 deletions

View File

@@ -5,10 +5,10 @@ from django.utils.translation import gettext as _
from ... import settings
from ... import models
import bbcode
#import bbcode
def render_url(tag_name:str,value,options,parent,context):
def render_url(tag_name: str, value, options, parent, context) -> str:
try:
url = options['url']
except KeyError:
@@ -19,15 +19,15 @@ def render_url(tag_name:str,value,options,parent,context):
if settings.USE_BOOTSTRAP:
if ['noicon in options']:
return f"<a href=\"{url}\" referrer-policy=\"no-referrer\" rel=\"noreferrer noopener\">{value}</a>"
return f"<a href=\"{url}\" class=\"icon-link icon-link-hover\" referrer-policy=\"no-referrer\" rel=\"noreferrer noopener\">{value}<svg class=\"bi\"><use xlink:href=\"{settings.settings.STATIC_URL + "tinywiki/icons/bootstrap-icons.svg"}#box-arrow-up-right\"></use></svg></a>"
return f"<a href=\"{url}\" referrer-policy=\"no-referrer\" rel=\"noreferrer noopener\">{value}</a>"
return f"<a href=\"{url}\" referrer-policy=\"no-referrer\" rel=\"noreferrer noopener\">{value}</a>" # noqa: E501
return f"<a href=\"{url}\" class=\"icon-link icon-link-hover\" referrer-policy=\"no-referrer\" rel=\"noreferrer noopener\">{value}<svg class=\"bi\"><use xlink:href=\"{settings.settings.STATIC_URL + "tinywiki/icons/bootstrap-icons.svg"}#box-arrow-up-right\"></use></svg></a>" # noqa: E501
return f"<a href=\"{url}\" referrer-policy=\"no-referrer\" rel=\"noreferrer noopener\">{value}</a>" # noqa: E501
def render_wiki_url(tag_name,value,options,parent,context):
def render_wiki_url(tag_name: str, value, options, parent, context) -> str:
if tag_name in options:
url = reverse("tinywiki:page",kwargs={'slug':options[tag_name]})
slug=options[tag_name]
url = reverse("tinywiki:page", kwargs={'slug': options[tag_name]})
slug = options[tag_name]
try:
page = models.Page.objects.get(slug=slug)
except models.Page.DoesNotExist:
@@ -35,7 +35,7 @@ def render_wiki_url(tag_name,value,options,parent,context):
else:
url = reverse('tinywiki:home')
slug=None
slug = None
if settings.USE_BOOTSTRAP:
href = settings.settings.STATIC_URL+"tinywiki/icons/bootstrap-icons.svg"
@@ -45,15 +45,15 @@ def render_wiki_url(tag_name,value,options,parent,context):
elif page.slug:
svg = "book"
else:
svg=href + "file-earmark-x"
return f"<a href=\"{url}\" class=\"icon-link icon-link-hover\">{value}<svg class=\"bi\"><use xlink:href=\"{href}#{svg}\"></use></svg></a>"
svg = href + "file-earmark-x"
return f"<a href=\"{url}\" class=\"icon-link icon-link-hover\">{value}<svg class=\"bi\"><use xlink:href=\"{href}#{svg}\"></use></svg></a>" # noqa: E501
return f"<a href=\"{url}\">{value}</a>"
def render_wiki_link(tag_name,value,options,parent,context):
def render_wiki_link(tag_name: str, value, options, parent, context):
if tag_name in options:
slug = options[tag_name]
print("slug",slug)
print("slug", slug)
try:
page = models.Page.objects.get(slug=slug)
title = page.title
@@ -65,7 +65,7 @@ def render_wiki_link(tag_name,value,options,parent,context):
page = None
title = _("Page not found")
svg = "file-earmark-x"
url = reverse("tinywiki:page",kwargs={'slug':slug})
url = reverse("tinywiki:page", kwargs={'slug': slug})
else:
slug = None
title = _("Home")
@@ -74,35 +74,35 @@ def render_wiki_link(tag_name,value,options,parent,context):
if settings.USE_BOOTSTRAP:
href = settings.settings.STATIC_URL + "tinywiki/icons/bootstrap-icons.svg"
return f"<a href=\"{url}\" class=\"icon-link icon-link-hover\">{title}<svg class=\"bi\"><use xlink:href=\"{href}#{svg}\"></use></svg></a>"
return f"<a href=\"{url}\" class=\"icon-link icon-link-hover\">{title}<svg class=\"bi\"><use xlink:href=\"{href}#{svg}\"></use></svg></a>" # noqa: E501
return f"<a href=\"{url}\">{value}</a>"
def render_codeblock(tag_name:str,value,options,parent,context)->str:
def render_codeblock(tag_name: str, value, options, parent, context) -> str:
if tag_name in options:
return f"<pre style=\"overflow-x:auto;\"><code class=\"language-{options[tag_name]}\">{value}</pre></code>"
return f"<pre style=\"overflow-x:auto;\"><code>{value}</pre></code>"
return f"<pre style=\"overflow-x:auto;\"><code class=\"language-{options[tag_name]}\">{value}</code></pre>" # noqa: E501
return f"<pre style=\"overflow-x:auto;\"><code>{value}</code></pre>"
def render_ordered_list(tag_name:str,value,options,parent,context)->str:
def render_ordered_list(tag_name: str, value, options, parent, context) -> str:
return f"<ol>{value}</ol>"
def render_unordered_list(tag_name:str,value,options,parent,context)->str:
def render_unordered_list(tag_name: str, value, options, parent, context) -> str: # noqa: E501
return f"<ul>{value}</ul>"
def render_list_item(tag_name:str,value,options,parent,context)->str:
def render_list_item(tag_name: str, value, options, parent, context) -> str:
return f"<li>{value}</li>"
def render_paragraph(tag_name: str, value, options, parent, context):
def render_paragraph(tag_name: str, value, options, parent, context) -> str:
if settings.USE_BOOTSTRAP:
return f"<p style=\"text-align:justify;\">{value}</p>"
return f"<p>{value}</p>"
def render_image(tag_name: str, value, options, parent, context):
def render_image(tag_name: str, value, options, parent, context) -> str:
if tag_name not in options:
return ""
@@ -187,9 +187,9 @@ def render_image(tag_name: str, value, options, parent, context):
else:
fig_style = ""
if settings.USE_BOOTSTRAP:
return f'<figure class="{" ".join(fig_classes)} {fig_style}"><img src="{options[tag_name]}" class="{' '.join(classes)}" alt="{alt}" {style}><figcaption class="figure-caption text-end">{ value }</figcaption></figure>'
return f'<figure class="{" ".join(fig_classes)} {fig_style}"><img src="{options[tag_name]}" class="{' '.join(classes)}" alt="{alt}" {style}><figcaption class="figure-caption text-end">{value}</figcaption></figure>' # noqa: E501
else:
return f'<figure {fig_style}><img src="{options[tag_name]}" {style}><figcaption>{value}</figcaption></figure>'
return f'<figure {fig_style}><img src="{options[tag_name]}" {style}><figcaption>{value}</figcaption></figure>' # noqa: E501
def render_wiki_image(tag_name: str, value, options, parent, context):
@@ -202,8 +202,8 @@ def render_wiki_image(tag_name: str, value, options, parent, context):
return ""
if settings.USE_BOOTSTRAP:
classes = ["img-fluid","figure-img","rounded"]
fig_classes = ["figure","my-1"]
classes = ["img-fluid", "figure-img", "rounded"]
fig_classes = ["figure", "my-1"]
styles = []
fig_styles = []
else:
@@ -237,9 +237,9 @@ def render_wiki_image(tag_name: str, value, options, parent, context):
fig_styles.append(f"height:{_h};")
else:
if _h.endswith('%'):
_h= _h[:-1]
_h = _h[:-1]
if _h.isdigit():
_h=int(_w)
_h = int(_w)
if _h > 100:
_h = 100
if settings.USE_BOOTSTRAP:
@@ -257,79 +257,125 @@ def render_wiki_image(tag_name: str, value, options, parent, context):
if "position" in options:
pos = options['position']
if settings.USE_BOOTSTRAP:
if pos == "left" or pos=="start":
fig_classes += ["float-start","me-2"]
if pos == "left" or pos == "start":
fig_classes += ["float-start", "me-2"]
elif pos == "right" or pos == "end":
fig_classes += ["float-end","ms-2"]
fig_classes += ["float-end", "ms-2"]
elif pos == "center":
fig_classes += ["mx-auto","d-block"]
fig_classes += ["mx-auto", "d-block"]
if styles:
style=f"style=\"{"".join(styles)}\""
style = f"style=\"{"".join(styles)}\""
else:
style=""
style = ""
if fig_styles:
fig_style=f'style="{"".join(fig_styles)}"'
fig_style = f'style="{"".join(fig_styles)}"'
else:
fig_style=""
fig_style = ""
if settings.USE_BOOTSTRAP:
return f'<figure class="{" ".join(fig_classes)}" {fig_style}><img src="{image.image.url}" alt="{image.alt}" class="{' '.join(classes)}" {style}><figcaption class="figure-caption text-end">{image.description_html}</figcaption></figure>'
return f'<figure class="{" ".join(fig_classes)}" {fig_style}><img src="{image.image.url}" alt="{image.alt}" class="{' '.join(classes)}" {style}><figcaption class="figure-caption text-end">{image.description_html}</figcaption></figure>' # noqa: E501
else:
return f'<figure {fig_style}><img src="{image.image.url}" alt="{image.alt}" {style}><figcaption>{image.description}</figcaption></figure>'
return f'<figure {fig_style}><img src="{image.image.url}" alt="{image.alt}" {style}><figcaption>{image.description}</figcaption></figure>' # noqa: E501
def render_table(tag_name:str,value,options,parent,context):
def render_table(tag_name: str, value, options, parent, context) -> str:
if settings.USE_BOOTSTRAP:
classes=["table"]
classes = ["table"]
if "bordered" in options:
if options["bordered"] not in ("0","n","no","false","off"):
if options["bordered"] not in ("0", "n", "no", "false", "off"):
classes.append("table-bordered")
if options["bordered"] in ("primary","secondary","info","warning","danger","success","light","dark"):
if options["bordered"] in (
"primary",
"secondary",
"info",
"warning",
"danger",
"success",
"light",
"dark"
):
classes.append(f"border-{options['bordered']}")
if tag_name in options:
if options[tag_name] in ("primary","secondary","info","warning","danger","success","light","dark"):
if options[tag_name] in (
"primary",
"secondary",
"info",
"warning",
"danger",
"success",
"light",
"dark"
):
classes.append(f"table-{options[tag_name]}")
return f"<table class=\"{" ".join(classes)}\">{value}</table>"
return f"<table>{value}</table>"
def render_table_row(tag_name:str,value,options,parent,context):
def render_table_row(tag_name: str, value, options, parent, context) -> str:
classes=[]
if settings.USE_BOOTSTRAP:
if tag_name in options:
if options[tag_name] in ("primary","secondary","info","warning","danger","success","light","dark"):
if options[tag_name] in (
"primary",
"secondary",
"info",
"warning",
"danger",
"success",
"light",
"dark"
):
classes.append(f"table-{options[tag_name]}")
class_attr=f"class=\"{" ".join(classes)}\"" if classes else ""
class_attr = f"class=\"{" ".join(classes)}\"" if classes else ""
return f"<tr {class_attr}>{value}</tr>"
def render_table_header(tag_name:str,value,options,parent,context):
extra_attributes=[]
classes=[]
def render_table_header(tag_name: str, value, options, parent, context) -> str:
extra_attributes = []
classes = []
if "colspan" in options:
extra_attributes.append(f"colspan=\"{options['colspan']}\"")
if "rowspan" in options:
extra_attributes.append(f"rowspan=\"{options['rowspan']}\"")
if settings.USE_BOOTSTRAP:
if tag_name in options:
if options[tag_name] in ("primary","secondary","info","warning","danger","success","light","dark"):
if options[tag_name] in (
"primary",
"secondary",
"info",
"warning",
"danger",
"success",
"light",
"dark"
):
classes.append(f"table-{options[tag_name]}")
class_attr=f"class=\"{" ".join(classes)}\"" if classes else ""
class_attr = f"class=\"{" ".join(classes)}\"" if classes else ""
return f"<th {class_attr} {" ".join(extra_attributes)}>{value}</th>"
def render_table_data(tag_name:str,value,options,parent,context):
extra_attributes=[]
classes=[]
def render_table_data(tag_name: str, value, options, parent, context) -> str:
extra_attributes = []
classes = []
if "colspan" in options:
extra_attributes.append(f"colspan=\"{options['colspan']}\"")
if "rowspan" in options:
extra_attributes.append(f"rowspan=\"{options['rowspan']}\"")
if settings.USE_BOOTSTRAP:
if tag_name in options:
if options[tag_name] in ("primary","secondary","info","warning","danger","success","light","dark"):
if options[tag_name] in (
"primary",
"secondary",
"info",
"warning",
"danger",
"success",
"light",
"dark"
):
classes.append(f"table-{options[tag_name]}")
class_attr = f"class=\"{" ".join(classes)}\"" if classes else ""
return f"<td {class_attr} {" ".join(extra_attributes)}>{value}</td>"
@@ -369,7 +415,7 @@ def render_youtube_video(tag_name: str, value, options, parent, context):
if _w.endswith('%'):
_w = _w[:-1]
if _w.isdigit():
_w=int(_w)
_w = int(_w)
if _w > 100:
_w = 100
if settings.USE_BOOTSTRAP:
@@ -430,7 +476,7 @@ def render_youtube_video(tag_name: str, value, options, parent, context):
div_style = ""
if settings.USE_BOOTSTRAP:
return f"""<div class=""{' '.join(div_classes)}" {div_style}>
<iframe class={" ".join(classes)}" src="https://www.youtube.com/embed/{options[tag_name]}?rel=0" allowfullscreen></iframe>
<iframe class="{' '.join(classes)}" src="https://www.youtube.com/embgit ed/{options[tag_name]}?rel=0" allowfullscreen></iframe>
</div>"""
else:
return f'<div {div_style}><iframe src="https://www.youtube.com/embed/{options[tag_name]}?rel=0" allowfullscreen></iframe></div>'