Skip to content
Snippets Groups Projects
Verified Commit c05a70a7 authored by Jake's avatar Jake :speech_balloon:
Browse files

some refactoring for easier development of some other features

parent 536a64a7
No related branches found
No related tags found
No related merge requests found
Pipeline #323065 passed
<!DOCTYPE html>
{%- import 'macros/common.html' as common with context -%}
{%- import 'macros/getters.html' as get with context -%}
{%- import 'macros/link.html' as linkr with context -%}
{%- import 'macros/nav.html' as nav with context -%}
{%- import 'macros/cards.html' as cards with context -%}
{%- import 'macros/renderers.html' as render with context -%}
{%- import 'macros/content_renderer.html' as content_renderer with context -%}
{%- import 'macros/nav.html' as nav with context -%}
{%- import 'macros/renderers.html' as render with context -%}
<html lang="{{ l }}" xmlns="http://www.w3.org/1999/xhtml">
<head>
......
......@@ -7,7 +7,7 @@
{% block page_header %}
<header class="visuallyhidden">
<h1>{{ render.softbreak_span(page.title) }}</h1>
<h1>{{ common.softbreak_span(page.title) }}</h1>
</header>
<hr>
{% endblock %}
......
{%- import 'macros/getters.html' as get with context -%}
{%- macro open(id = None, classes = None) -%}
<ul {%- if id %} id="{{ id|e }}"{% endif %} class="cards {%- if classes %}{% for class in classes %} {{ class|e }}{% endfor %}{% endif %}">
......@@ -29,7 +27,7 @@
{%- endif -%}
{%- for page in pages -%}
{%- if max is none or loop.index <= max -%}
{{ cards.card_from_page(page, lang) }}
{{ card_from_page(page, lang) }}
{%- endif -%}
{%- endfor -%}
{%- if standalone -%}
......
{%- macro softbreak_span(content) -%}
{%- set contentsplit = content.split('&shy;')-%}
<span>
{%- for s in contentsplit -%}
{%- if not loop.first -%}
&shy;
{%- endif -%}
{{ s|e }}
{%- endfor -%}
</span>
{%- endmacro -%}
{%- macro render_attr_extra(key, value, lang) %}
{%- if value != None -%}
{%- if value is mapping and value['value'] != None -%}
{%- if value['escape'] %} {{ key }}="{{ value['value']|e }}"
{%- else %} {{ key }}="{{ value['value'] }}"
{%- endif -%}
{%- elif value is string %} {{ key }}="{{ value }}"
{%- endif -%}
{%- endif -%}
{%- endmacro -%}
{%- macro render_attr(attr, lang, extra_classes = [], extra = {}, extra_style= {}) -%}
{%- set id = attr['id']|d("") -%}
{%- set classes = attr['classes']|d([]) + extra_classes -%}
{%- set attr_extra = attr['extra']|d({}) -%}
{%- set style = attr['style']|d({}) -%}
{%- if id %} id="{{ id }}"{%- endif -%}
{%- if classes|length %} class="{{ classes|join(' ') }}"{%- endif -%}
{%- for key, value in attr_extra.items() -%}
{%- if key not in extra -%}
{{ render_attr_extra(key, value, lang) }}
{%- endif -%}
{%- endfor -%}
{%- for key, value in extra.items() -%}
{{ render_attr_extra(key, value, lang) }}
{%- endfor -%}
{%- if style.items()|length or extra_style.items()|length %} style="
{%- for key, value in style.items() -%}
{{ key }}: {{ value }};
{%- endfor -%}
{%- for key, value in extra_style.items() -%}
{{ key }}: {{ value }};
{%- endfor -%}"
{%- endif -%}
{%- endmacro -%}
......@@ -5,43 +5,18 @@
{{ render_blocks(content, lang) }}
{%- endmacro -%}
{%- macro render_attr_extra(key, value, lang) %}
{%- if value != None -%}
{%- if value is mapping and value['value'] != None -%}
{%- if value['escape'] %} {{ key }}="{{ value['value']|e }}"
{%- else %} {{ key }}="{{ value['value'] }}"
{%- macro render_link(link, content, lang, attr = None, title = None) -%}
{%- call(objtype, obj) linkr.render_raw(link, content, lang, attr, title) -%}
{%- if content is string or content is none -%}
{%- if content is string and content|length -%}
{{ common.softbreak_span(content) }}
{%- else -%}
{{ common.softbreak_span(obj.title) }}
{%- endif -%}
{%- elif value is string %} {{ key }}="{{ value }}"
{%- else -%}
{{ render_blocks_or_inlines(content, lang) }}
{%- endif -%}
{%- endif -%}
{%- endmacro -%}
{%- macro render_attr(attr, lang, extra_classes = [], extra = {}, extra_style= {}) -%}
{%- set id = attr['id']|d("") -%}
{%- set classes = attr['classes']|d([]) + extra_classes -%}
{%- set attr_extra = attr['extra']|d({}) -%}
{%- set style = attr['style']|d({}) -%}
{%- if id %} id="{{ id }}"{%- endif -%}
{%- if classes|length %} class="{{ classes|join(' ') }}"{%- endif -%}
{%- for key, value in attr_extra.items() -%}
{%- if key not in extra -%}
{{ render_attr_extra(key, value, lang) }}
{%- endif -%}
{%- endfor -%}
{%- for key, value in extra.items() -%}
{{ render_attr_extra(key, value, lang) }}
{%- endfor -%}
{%- if style.items()|length or extra_style.items()|length %} style="
{%- for key, value in style.items() -%}
{{ key }}: {{ value }};
{%- endfor -%}
{%- for key, value in extra_style.items() -%}
{{ key }}: {{ value }};
{%- endfor -%}"
{%- endif -%}
{%- endcall -%}
{%- endmacro -%}
{%- macro render_orderedlist_type(style, delim) -%}
......@@ -64,7 +39,7 @@
{%- set ns.url = [siteurl, ns.url]|join("/") -%}
{%- endif -%}
{%- endif -%}
<img {{ render_attr(attr, lang, extra={"src": ns.url, "title": {"value":title, "escape": true}, "loading": "lazy"}) }} alt="
<img {{ common.render_attr(attr, lang, extra={"src": ns.url, "title": {"value":title, "escape": true}, "loading": "lazy"}) }} alt="
{%- if alt is string -%}
{{ alt|e }}
{%- else -%}
......@@ -134,7 +109,7 @@
{%- set level = block['level'] -%}
{%- set attr = block['attr'] -%}
{%- set content = block['content'] -%}
<header {{ render_attr(attr, lang) }}>
<header {{ common.render_attr(attr, lang) }}>
<h{{ level }}>{{ render_inlines(content, lang) }}</h{{ level }}>
</header>
{%- endmacro -%}
......@@ -163,7 +138,7 @@
{%- set attr = block['attr'] -%}
{%- set code = block['code'] -%}
{%- set code_lines = block['code_lines'] -%}
<pre {{ render_attr(attr, lang, extra_classes=["codeblock"]) }}>{{ code|e }}</pre>
<pre {{ common.render_attr(attr, lang, extra_classes=["codeblock"]) }}>{{ code|e }}</pre>
{%- endmacro -%}
{%- macro render_block_blockquote(block, lang) -%}
......@@ -176,7 +151,7 @@
{%- macro render_block_blockcontainer(block, lang) -%}
{%- set attr = block['attr'] -%}
{%- set content = block['content'] -%}
<div {{ render_attr(attr, lang) }}>
<div {{ common.render_attr(attr, lang) }}>
{{ render_blocks(content, lang) }}
</div>
{%- endmacro -%}
......@@ -221,7 +196,7 @@
{%- set ns.classes = [alignment_class] -%}
{%- endif -%}
<{% if is_header %}th{% else %}td{% endif %} {{ render_attr(attr, lang, extra_classes=ns.classes, extra={"rowspan": row_span, "colspan": column_span}, extra_style=ns.extra_style) }}>
<{% if is_header %}th{% else %}td{% endif %} {{ common.render_attr(attr, lang, extra_classes=ns.classes, extra={"rowspan": row_span, "colspan": column_span}, extra_style=ns.extra_style) }}>
{{ render_blocks(content, lang) }}
</{% if is_header %}th{% else %}td{% endif %}>
{%- endmacro -%}
......@@ -235,7 +210,7 @@
{%- macro render_block_table_row(row, lang, num_headers, column_specs) -%}
{%- set attr = row['attr'] -%}
{%- set cells = row['cells'] -%}
<tr {{ render_attr(attr, lang) }}>
<tr {{ common.render_attr(attr, lang) }}>
{%- for cell in cells -%}
{%- if loop.index <= num_headers or num_headers == -1 -%}
{{ render_block_table_cell(cell,lang,is_header=true,column_spec=column_specs[loop.index0]) }}
......@@ -263,13 +238,13 @@
{#- TODO: Maybe add colgroup? -#}
{%- if head.rows|length -%}
<thead {{ render_attr(head.attr, lang) }}>
<thead {{ common.render_attr(head.attr, lang) }}>
{{ render_block_table_rows(head.rows,lang,num_headers=-1,column_specs=column_specs) }}
</thead>
{%- endif -%}
{%- for body in bodies -%}
<tbody {{ render_attr(body.attr, lang) }}>
<tbody {{ common.render_attr(body.attr, lang) }}>
{%- if body.intermediate_head|length -%}
{{ render_block_table_rows(body.intermediate_head,lang,num_headers=-1,column_specs=column_specs) }}
{%- endif -%}
......@@ -279,7 +254,7 @@
{%- if foot.rows|length -%}
<tfoot {{ render_attr(foot.attr, lang) }}>
<tfoot {{ common.render_attr(foot.attr, lang) }}>
{{ render_block_table_rows(foot.rows,lang,num_headers=bodies[0].row_head_columns,column_specs=column_specs) }}
</tfoot>
{%- endif -%}
......@@ -390,7 +365,7 @@
{%- macro render_inline_inlinecontainer(inline, lang) -%}
{%- set attr = inline['attr'] -%}
{%- set content = inline['content'] -%}
<span {{ render_attr(attr, lang) }}>{{ render_inlines(content, lang) }}</span>
<span {{ common.render_attr(attr, lang) }}>{{ render_inlines(content, lang) }}</span>
{%- endmacro -%}
{%- macro render_inline_rawinline(inline, lang) -%}
......@@ -409,7 +384,7 @@
{%- set attr = inline['attr'] -%}
{%- set code = inline['code'] -%}
{%- set code_lines = inline['code_lines'] -%}
<code {{ render_attr(attr, lang, extra_classes=["codeinline"]) }}>{{ code|e }}</code>
<code {{ common.render_attr(attr, lang, extra_classes=["codeinline"]) }}>{{ code|e }}</code>
{%- endmacro -%}
{%- macro render_inline_quoted(inline, lang) -%}
......@@ -434,7 +409,7 @@
{%- set content = inline['content'] -%}
{%- set link = inline['link'] -%}
{%- set title = inline['title'] -%}
{{ linkr.render(link, content, lang, attr, title) }}
{{ render_link(link, content, lang, attr, title) }}
{%- endmacro -%}
{%- macro render_inline_image(inline, lang) -%}
......
{%- import 'macros/content_renderer.html' as content_renderer with context -%}
{%- import 'macros/renderers.html' as renderm with context -%}
{%- macro resolve(link) -%}
{%- set ns = namespace(alias=link, objtype=link.type, obj=None) -%}
......@@ -30,8 +27,25 @@
{%- macro render(link, content, lang, attr = None, title = None) -%}
{%- call(objtype, obj) render_raw(link, content, lang, attr, title) -%}
{%- if content is string or content is none -%}
{%- if content is string and content|length -%}
{{ common.softbreak_span(content) }}
{%- else -%}
{{ common.softbreak_span(obj.title) }}
{%- endif -%}
{%- else -%}
<strong>ERROR: Cannot render link with formatted content here.</strong>
{%- endif -%}
{%- endcall -%}
{%- endmacro -%}
{%- macro render_raw(link, content, lang, attr, title) -%}
{%- set ns = namespace(relation=None, url=None, objtype=None, obj=None) -%}
{%- call(resolvedlink, objtype, obj) resolve(link) -%}
{%- set ns = namespace(relation=None, url=resolvedlink.urlwithanchor) -%}
{%- set ns.url = resolvedlink.urlwithanchor -%}
{%- set ns.objtype = objtype -%}
{%- set ns.obj = obj -%}
{%- if resolvedlink.is_external -%}
{%- set ns.relation = "external" -%}
{%- else -%}
......@@ -40,19 +54,11 @@
{%- set ns.url = [siteurl, ns.url]|join("/") -%}
{%- endif -%}
{%- endif -%}
{%- set target = config.link_target[ns.relation] -%}
<a {{ content_renderer.render_attr(attr, lang, extra_classes=[ns.relation], extra={"href": ns.url, "title": {"value":title, "escape": true}, "target": target}) }}>
{%- if content is string or content is none -%}
{%- if content is string and content|length -%}
{{ renderm.softbreak_span(content) }}
{%- else -%}
{{ renderm.softbreak_span(obj.title) }}
{%- endif -%}
{%- else -%}
{{ content_renderer.render_blocks_or_inlines(content, lang) }}
{%- endif -%}
</a>
{%- endcall -%}
{%- set target = config.link_target[ns.relation] -%}
<a {{ common.render_attr(attr, lang, extra_classes=[ns.relation], extra={"href": ns.url, "title": {"value":title, "escape": true}, "target": target}) }}>
{{- caller(ns.objtype, ns.obj) -}}
</a>
{%- endmacro -%}
{%- macro render_tag(tag, lang) -%}
......
{%- import 'macros/link.html' as linkr with context -%}
{%- macro render_menu(items, lang) -%}
<nav>
<ul>
......
{%- import 'macros/getters.html' as get with context -%}
{%- import 'macros/cards.html' as cards with context -%}
{%- import 'macros/content_renderer.html' as content_renderer with context -%}
{%- macro softbreak_span(content) -%}
{%- set contentsplit = content.split('&shy;')-%}
<span>
{%- for s in contentsplit -%}
{%- if not loop.first -%}
&shy;
{%- endif -%}
{{ s|e }}
{%- endfor -%}
</span>
{%- endmacro -%}
{%- macro section_news(s, lang) -%}
{{ cards.cards_from_pages(pages_modified[lang], max=s.num|d(None)) }}
......@@ -30,7 +14,7 @@
{%- macro section_tag(s, lang) -%}
{%- if s.title is not defined -%}
<header>
<h2 {% if s.id is defined -%}id="{{ s.id }}"{%- endif %}>{{ softbreak_span(s.tag.title) }}</h2>
<h2 {% if s.id is defined -%}id="{{ s.id }}"{%- endif %}>{{ common.softbreak_span(s.tag.title) }}</h2>
</header>
{%- endif -%}
{{ cards.cards_from_pages(s.tag.pages, lang, max=s.num|d(None)) }}
......@@ -43,7 +27,7 @@
{%- macro section(s, lang) -%}
{%- if s.title is defined -%}
<header>
<h2 {% if s.id is defined -%}id="{{ s.id }}"{%- endif %}>{{ softbreak_span(s.title[lang]) }}</h2>
<h2 {% if s.id is defined -%}id="{{ s.id }}"{%- endif %}>{{ common.softbreak_span(s.title[lang]) }}</h2>
</header>
{%- endif -%}
{%- if s.type == "news" -%}
......
{% extends "base.html" %}
{% block title %}{{ t[l].title_prefix }}{{ render.softbreak_span(page.title)|striptags }}{{ t[l].title_seperator }}{{ render.softbreak_span(page.category.title)|striptags }}{{ t[l].title_seperator }}{{ t[l].sitename }}{{ t[l].title_suffix }}{% endblock %}
{% block title %}{{ t[l].title_prefix }}{{ common.softbreak_span(page.title)|striptags }}{{ t[l].title_seperator }}{{ common.softbreak_span(page.category.title)|striptags }}{{ t[l].title_seperator }}{{ t[l].sitename }}{{ t[l].title_suffix }}{% endblock %}
{% block extra_head %}
{% endblock %}
......@@ -13,7 +13,7 @@
<article>
{% block page_header %}
<header>
<h1>{{ render.softbreak_span(page.title) }}</h1>
<h1>{{ common.softbreak_span(page.title) }}</h1>
</header>
{% endblock %}
{% block page_content %}
......
{% extends "base.html" %}
{% block title %}{{ t[l].title_prefix }}{{ render.softbreak_span(tag.title)|striptags }}{{ t[l].title_seperator }}{{ t[l].sitename }}{{ t[l].title_suffix }}{% endblock %}
{% block title %}{{ t[l].title_prefix }}{{ common.softbreak_span(tag.title)|striptags }}{{ t[l].title_seperator }}{{ t[l].sitename }}{{ t[l].title_suffix }}{% endblock %}
{% block breadcrumb %}
{{ nav.render_breadcrumb_menu(tag, l) }}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment