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

fixed pages that are links

parent 97218ce1
Branches
No related tags found
No related merge requests found
Pipeline #313925 failed
......@@ -337,6 +337,8 @@ class Link:
self._factories = factories
self.is_external = False
self.lang = deflang
self.type = None
self.alias = None
urlasplit = rawurl.split('#')
......@@ -364,7 +366,6 @@ class Link:
if reftype == "slug":
# rawurl: 'slug:some-page:de'
self._page = None
# TODO handle link/alias pages
self._url = None
self.type = reftype
self.lang = reflang
......@@ -384,6 +385,11 @@ class Link:
def get_page(self):
if not self._page:
self._page = self._factories['page'].get(self.refid, self.lang)
# handle link/alias pages
if 'link' in self._page.metadata:
self.alias = self._page.metadata['link']
if self.alias.type == "slug":
self.alias.get_page() # make sure that alias knows if it is an alias
return self._page
page = property(get_page, None, None)
......
......@@ -54,13 +54,15 @@
{%- endmacro -%}
{%- macro render_image(link, alt, lang, attr = None, title = None) -%}
<img {{ render_attr(attr, lang, extra={"src": link.urlwithanchor, "title": {"value":title, "escape": true}}) }} alt="
{%- if alt is string -%}
{{ alt|e }}
{%- else -%}
{{ render_inlines(alt, lang) }}
{%- endif -%}
">
{%- call(resolvedlink, objtype, obj) linkr.resolve(link) -%}
<img {{ render_attr(attr, lang, extra={"src": resolvedlink.urlwithanchor, "title": {"value":title, "escape": true}}) }} alt="
{%- if alt is string -%}
{{ alt|e }}
{%- else -%}
{{ render_inlines(alt, lang) }}
{%- endif -%}
">
{%- endcall -%}
{%- endmacro -%}
{%- macro render_blocks_or_inlines(bsois, lang) -%}
......
......@@ -2,30 +2,57 @@
{%- import 'macros/renderers.html' as renderm with context -%}
{%- macro render(link, content, lang, attr = None, title = None) -%}
{%- set ns = namespace(relation=None, url=link.urlwithanchor) -%}
{%- if link.is_external -%}
{%- set ns.relation = "external" -%}
{%- else -%}
{%- set ns.relation = "internal" -%}
{%- set ns.url = [siteurl, ns.url]|join("/") -%}
{%- macro resolve(link) -%}
{%- set ns = namespace(alias=link, objtype=link.type, obj=None) -%}
{%- if ns.objtype == "tag" -%}
{%- set ns.obj = link.tag -%}
{%- elif ns.objtype == "slug" -%}
{%- set ns.obj = link.page -%}
{%- 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 -%}
{%- if link.type == "tag" -%}
{{ renderm.softbreak_span(link.tag.title) }}
{%- elif link.type == "slug" -%}
{{ renderm.softbreak_span(link.page.title) }}
{%- endif -%}
{%- if link.alias -%}
{%- call(resolvedlink, objtype, obj) resolve(link.alias) -%}
{%- set ns.alias = resolvedlink -%}
{%- if objtype -%}
{%- set ns.objtype = objtype -%}
{%- set ns.obj = obj -%}
{%- endif -%}
{%- endcall -%}
{%- endif -%}
{{- caller(ns.alias, ns.objtype, ns.obj) -}}
{%- endmacro -%}
{%- macro render(link, content, lang, attr = None, title = None) -%}
{%- call(resolvedlink, objtype, obj) resolve(link) -%}
{%- set ns = namespace(relation=None, url=resolvedlink.urlwithanchor) -%}
{%- if resolvedlink.is_external -%}
{%- set ns.relation = "external" -%}
{%- else -%}
{{ content_renderer.render_blocks_or_inlines(content, lang) }}
{%- set ns.relation = "internal" -%}
{%- set ns.url = [siteurl, ns.url]|join("/") -%}
{%- endif -%}
</a>
{%- 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 -%}
{%- if objtype == "tag" -%}
{{ renderm.softbreak_span(obj.title) }}
{%- elif objtype == "slug" -%}
{{ renderm.softbreak_span(obj.title) }}
{%- endif -%}
{%- endif -%}
{%- else -%}
{{ content_renderer.render_blocks_or_inlines(content, lang) }}
{%- endif -%}
</a>
{%- endcall -%}
{%- endmacro -%}
{%- macro render_tag(tag, lang) -%}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment