Skip to content
Snippets Groups Projects
Verified Commit c05a70a7 authored by Jake's avatar Jake
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.
Finish editing this message first!
Please register or to comment