set variable and partial template tag
This commit is contained in:
parent
bae4e13137
commit
fb1237f111
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
{% load thumbnail %}
|
{% load thumbnail %}
|
||||||
{% load svg_icon %}
|
{% load svg_icon %}
|
||||||
|
{% load lostplaces %}
|
||||||
|
|
||||||
{% block additional_head %}
|
{% block additional_head %}
|
||||||
<link rel="stylesheet" href="{% static 'maps/ol.css' %}" type="text/css">
|
<link rel="stylesheet" href="{% static 'maps/ol.css' %}" type="text/css">
|
||||||
@ -26,7 +27,9 @@
|
|||||||
<h1 class="LP-Headline">{{ place.name }}</h1>
|
<h1 class="LP-Headline">{{ place.name }}</h1>
|
||||||
{% if place.placeimages.first.filename.hero.url %}
|
{% if place.placeimages.first.filename.hero.url %}
|
||||||
<div class="LP-PlaceDetail__Image">
|
<div class="LP-PlaceDetail__Image">
|
||||||
{% include 'partials/image.html' with source_url=place.placeimages.first.filename.hero.url %}
|
{% partial image %}
|
||||||
|
{% set source_url place.placeimages.first.filename.hero.url %}
|
||||||
|
{% endpartial %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</header>
|
</header>
|
||||||
@ -38,13 +41,15 @@
|
|||||||
<section class="LP-Section">
|
<section class="LP-Section">
|
||||||
|
|
||||||
{% url 'place_tag_submit' place_id=place.id as tag_submit_url%}
|
{% url 'place_tag_submit' place_id=place.id as tag_submit_url%}
|
||||||
{% include 'partials/tagging.html' with config=tagging_config %}
|
{% partial tagging %}
|
||||||
|
{% set config=tagging_config %}
|
||||||
|
{% endpartial %}
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="LP-Section">
|
<section class="LP-Section">
|
||||||
<h1 class="LP-Headline">{% trans 'Map links' %}</h1>
|
<h1 class="LP-Headline">{% trans 'Map links' %}</h1>
|
||||||
{% include 'partials/osm_map.html' with config=mapping_config%}
|
{% partial osm_map config=mapping_config %}
|
||||||
<div class="LP-LinkList">
|
<div class="LP-LinkList">
|
||||||
<ul class="LP-LinkList__Container">
|
<ul class="LP-LinkList__Container">
|
||||||
<li class="LP-LinkList__Item"><a target="_blank" href="https://www.google.com/maps?q={{place.latitude|safe}},{{place.longitude|safe}}" class="LP-Link"><span class="LP-Text">Google Maps</span></a></li>
|
<li class="LP-LinkList__Item"><a target="_blank" href="https://www.google.com/maps?q={{place.latitude|safe}},{{place.longitude|safe}}" class="LP-Link"><span class="LP-Text">Google Maps</span></a></li>
|
||||||
@ -90,8 +95,8 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="LP-Section">
|
<section class="LP-Section">
|
||||||
{% translate 'Images' as t_images %}
|
{% translate 'Images' as headline %}
|
||||||
{% include 'partials/placeImageGrid.html' with headline=t_images image_list=place.placeimages.all%}
|
{% partial "placeImageGrid" image_list=place.placeimages.all %}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</article>
|
</article>
|
||||||
|
@ -6,6 +6,15 @@ from django.http import request
|
|||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
|
def remove_formatting(string):
|
||||||
|
for to_strip in ["'", '"', ' ']:
|
||||||
|
string = string.strip(to_strip)
|
||||||
|
|
||||||
|
for to_remove in ['\t', '\n',]:
|
||||||
|
string = string.replace(to_remove, '')
|
||||||
|
|
||||||
|
return string
|
||||||
|
|
||||||
@register.filter(name='proper_paginate')
|
@register.filter(name='proper_paginate')
|
||||||
def proper_paginate(paginator, current_page, neighbors=2):
|
def proper_paginate(paginator, current_page, neighbors=2):
|
||||||
if paginator.num_pages > 2*neighbors:
|
if paginator.num_pages > 2*neighbors:
|
||||||
@ -24,3 +33,81 @@ def proper_paginate(paginator, current_page, neighbors=2):
|
|||||||
page_list = [f for f in range(start_index, end_index+1)]
|
page_list = [f for f in range(start_index, end_index+1)]
|
||||||
return page_list[:(2*neighbors + 1)]
|
return page_list[:(2*neighbors + 1)]
|
||||||
return paginator.page_range
|
return paginator.page_range
|
||||||
|
|
||||||
|
|
||||||
|
class VariableNode(template.Node):
|
||||||
|
def __init__(self, name, content=None):
|
||||||
|
if content==None and '=' in name:
|
||||||
|
self.content = name.split('=')[1]
|
||||||
|
self.name = name.split('=')[0]
|
||||||
|
else:
|
||||||
|
self.content = content
|
||||||
|
self.name = name
|
||||||
|
|
||||||
|
def render(self, context):
|
||||||
|
if type(self.content) is template.NodeList:
|
||||||
|
self.content = self.content.render(context)
|
||||||
|
|
||||||
|
self.content = remove_formatting(self.content)
|
||||||
|
|
||||||
|
self.content = template.Variable(self.content).resolve(context)
|
||||||
|
|
||||||
|
context[self.name] = self.content
|
||||||
|
return ''
|
||||||
|
|
||||||
|
class PartialNode(template.Node):
|
||||||
|
def __init__(self, name, block):
|
||||||
|
self.name = remove_formatting(name)
|
||||||
|
self.block = block
|
||||||
|
|
||||||
|
def render(self, context):
|
||||||
|
if type(self.block) is template.NodeList:
|
||||||
|
self.block = self.block.render(context)
|
||||||
|
|
||||||
|
self.block = remove_formatting(self.block)
|
||||||
|
|
||||||
|
context = context.flatten()
|
||||||
|
context['block'] = self.block
|
||||||
|
t = template.loader.get_template('partials/%s.html' % self.name)
|
||||||
|
return t.render(context)
|
||||||
|
|
||||||
|
@register.tag(name='set')
|
||||||
|
def set_block(parser, token):
|
||||||
|
split = token.split_contents()
|
||||||
|
if len(split) >= 1:
|
||||||
|
variable_name = split[1]
|
||||||
|
else:
|
||||||
|
raise template.TemplateSyntaxError('%r expects a variable name' % split[0])
|
||||||
|
|
||||||
|
if len(split) == 2:
|
||||||
|
content=None
|
||||||
|
if '=' not in variable_name:
|
||||||
|
content = parser.parse(('end%s'%split[0],))
|
||||||
|
parser.delete_first_token()
|
||||||
|
return VariableNode(variable_name, content)
|
||||||
|
else:
|
||||||
|
return VariableNode(variable_name, split[2])
|
||||||
|
|
||||||
|
@register.tag(name='partial')
|
||||||
|
def partial(parser, token):
|
||||||
|
split = token.split_contents()
|
||||||
|
if len(split) >= 1:
|
||||||
|
partial_name = split[1]
|
||||||
|
else:
|
||||||
|
raise template.TemplateSyntaxError('%r expects a partial name' % split[0])
|
||||||
|
|
||||||
|
if len(split) == 2:
|
||||||
|
nodeList = parser.parse(('end%s'%split[0],))
|
||||||
|
parser.delete_first_token()
|
||||||
|
return PartialNode(partial_name, nodeList)
|
||||||
|
else:
|
||||||
|
nodeList = template.NodeList()
|
||||||
|
for parameter in split[2:]:
|
||||||
|
if '=' in parameter:
|
||||||
|
nodeList.append(
|
||||||
|
VariableNode(name=parameter)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
raise template.TemplateSyntaxError('%r expects kwargs, got args' % split[0])
|
||||||
|
return PartialNode(partial_name, nodeList)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user