Move template hook over to a template_hook tag. Seems to work! :)
This commit is contained in:
parent
e9c3384b84
commit
927be5e8ca
@ -18,19 +18,12 @@
|
|||||||
|
|
||||||
{% extends 'mediagoblin/user_pages/media.html' %}
|
{% extends 'mediagoblin/user_pages/media.html' %}
|
||||||
|
|
||||||
{% from "/mediagoblin/utils/templatehooks.html" import template_hook with context %}
|
|
||||||
|
|
||||||
{% block mediagoblin_head %}
|
{% block mediagoblin_head %}
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
{% for template in get_hook_templates("image_extrahead") %}
|
{% template_hook("image_extrahead") %}
|
||||||
{% include template %}
|
|
||||||
{% endfor %}
|
|
||||||
{# {{ template_hook("image_extrahead") }} #}
|
|
||||||
{% endblock mediagoblin_head %}
|
{% endblock mediagoblin_head %}
|
||||||
|
|
||||||
{% block mediagoblin_sidebar %}
|
{% block mediagoblin_sidebar %}
|
||||||
{% for template in get_hook_templates("image_sideinfo") %}
|
{{ super() }}
|
||||||
{% include template %}
|
{% template_hook("image_sideinfo") %}
|
||||||
{% endfor %}
|
|
||||||
{# {{ template_hook("image_sideinfo") }} #}
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
{% extends "mediagoblin/base.html" %}
|
{% extends "mediagoblin/base.html" %}
|
||||||
|
|
||||||
{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
|
{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
|
||||||
{% from "/mediagoblin/utils/templatehooks.html" import template_hook %}
|
|
||||||
{% from "mediagoblin/utils/pagination.html" import render_pagination %}
|
{% from "mediagoblin/utils/pagination.html" import render_pagination %}
|
||||||
|
|
||||||
{% block title %}{{ media.title }} — {{ super() }}{% endblock %}
|
{% block title %}{{ media.title }} — {{ super() }}{% endblock %}
|
||||||
@ -31,7 +30,7 @@
|
|||||||
<script type="text/javascript"
|
<script type="text/javascript"
|
||||||
src="{{ request.staticdirect('/js/keyboard_navigation.js') }}"></script>
|
src="{{ request.staticdirect('/js/keyboard_navigation.js') }}"></script>
|
||||||
|
|
||||||
{{ template_hook("media_extrahead") }}
|
{% template_hook("media_extrahead") %}
|
||||||
{% endblock mediagoblin_head %}
|
{% endblock mediagoblin_head %}
|
||||||
|
|
||||||
{% block mediagoblin_content %}
|
{% block mediagoblin_content %}
|
||||||
@ -197,7 +196,7 @@
|
|||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{{ template_hook("media_sideinfo") }}
|
{% template_hook("media_sideinfo") %}
|
||||||
|
|
||||||
{% block mediagoblin_sidebar %}
|
{% block mediagoblin_sidebar %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
{#
|
|
||||||
# GNU MediaGoblin -- federated, autonomous media hosting
|
|
||||||
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#}
|
|
||||||
{% macro template_hook(hook_name) %}
|
|
||||||
{% for template in get_hook_templates(hook_name) %}
|
|
||||||
{% include template %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endmacro %}
|
|
@ -15,7 +15,11 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from math import ceil
|
from math import ceil
|
||||||
|
|
||||||
import jinja2
|
import jinja2
|
||||||
|
from jinja2.ext import Extension
|
||||||
|
from jinja2.nodes import Include, Const
|
||||||
|
|
||||||
from babel.localedata import exists
|
from babel.localedata import exists
|
||||||
from werkzeug.urls import url_quote_plus
|
from werkzeug.urls import url_quote_plus
|
||||||
|
|
||||||
@ -49,7 +53,9 @@ def get_jinja_env(template_loader, locale):
|
|||||||
template_env = jinja2.Environment(
|
template_env = jinja2.Environment(
|
||||||
loader=template_loader, autoescape=True,
|
loader=template_loader, autoescape=True,
|
||||||
undefined=jinja2.StrictUndefined,
|
undefined=jinja2.StrictUndefined,
|
||||||
extensions=['jinja2.ext.i18n', 'jinja2.ext.autoescape'])
|
extensions=[
|
||||||
|
'jinja2.ext.i18n', 'jinja2.ext.autoescape',
|
||||||
|
TemplateHookExtension])
|
||||||
|
|
||||||
template_env.install_gettext_callables(
|
template_env.install_gettext_callables(
|
||||||
mg_globals.thread_scope.translations.ugettext,
|
mg_globals.thread_scope.translations.ugettext,
|
||||||
@ -102,3 +108,33 @@ def render_template(request, template_path, context):
|
|||||||
def clear_test_template_context():
|
def clear_test_template_context():
|
||||||
global TEMPLATE_TEST_CONTEXT
|
global TEMPLATE_TEST_CONTEXT
|
||||||
TEMPLATE_TEST_CONTEXT = {}
|
TEMPLATE_TEST_CONTEXT = {}
|
||||||
|
|
||||||
|
|
||||||
|
class TemplateHookExtension(Extension):
|
||||||
|
"""
|
||||||
|
Easily loop through a bunch of templates from a template hook.
|
||||||
|
|
||||||
|
Use:
|
||||||
|
{% template_hook("comment_extras") %}
|
||||||
|
|
||||||
|
... will include all templates hooked into the comment_extras section.
|
||||||
|
"""
|
||||||
|
|
||||||
|
tags={"template_hook"}
|
||||||
|
|
||||||
|
def __init__(self, environment):
|
||||||
|
super(TemplateHookExtension, self).__init__(environment)
|
||||||
|
|
||||||
|
def parse(self, parser):
|
||||||
|
includes = []
|
||||||
|
expr = parser.parse_expression()
|
||||||
|
lineno = expr.lineno
|
||||||
|
hook_name = expr.args[0].value
|
||||||
|
|
||||||
|
for template_name in get_hook_templates(hook_name):
|
||||||
|
includes.append(
|
||||||
|
parser.parse_import_context(
|
||||||
|
Include(Const(template_name), True, False, lineno=lineno),
|
||||||
|
True))
|
||||||
|
|
||||||
|
return includes
|
||||||
|
Loading…
x
Reference in New Issue
Block a user