2 # GNU MediaGoblin -- federated, autonomous media hosting
3 # Copyright (C)
2011,
2012 MediaGoblin contributors. See AUTHORS.
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License as published by
7 # the Free Software Foundation, either version
3 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU Affero General Public License for more details.
15 # You should have received a copy of the GNU Affero General Public License
16 # along with this program. If not, see
<http://www.gnu.org/licenses
/>.
20 {% block mediagoblin_html_tag %}
21 {% endblock mediagoblin_html_tag %}
24 <meta charset=
"utf-8">
25 <meta name=
"viewport" content=
"width=device-width, initial-scale=1.0">
26 <meta http-equiv=
"X-UA-Compatible" content=
"IE=Edge">
27 <title>{% block title %}{{ app_config['html_title'] }}{% endblock %}
</title>
28 <link rel=
"stylesheet" type=
"text/css"
29 href=
"{{ request.staticdirect('/css/extlib/reset.css') }}"/>
30 <link rel=
"stylesheet" type=
"text/css"
31 href=
"{{ request.staticdirect('/css/base.css') }}"/>
32 <link rel=
"shortcut icon"
33 href=
"{{ request.staticdirect('/images/goblin.ico') }}" />
34 <script type=
"text/javascript"
35 src=
"{{ request.staticdirect('/js/extlib/jquery.js') }}"></script>
36 <script type=
"text/javascript"
37 src=
"{{ request.staticdirect('/js/header_dropdown.js') }}"></script>
38 <script type=
"text/javascript"
39 src=
"{{ request.staticdirect('/js/notifications.js') }}"></script>
41 {# For clarification, the difference between the extra_head.html template
42 # and the head template hook is that the former should be used by
43 # themes and the latter should be used by plugins.
44 # The reason is that only one thing can override extra_head.html...
45 # but multiple plugins can hook into the template hook.
47 {% include
"mediagoblin/extra_head.html" %}
48 {% template_hook(
"head") %}
50 {% template_hook(
"persona_head") %}
52 {% block mediagoblin_head %}
53 {% endblock mediagoblin_head %}
56 {% include 'mediagoblin/bits/body_start.html' %}
57 {% block mediagoblin_body %}
58 {% block mediagoblin_header %}
60 {%- include
"mediagoblin/bits/logo.html" -%}
61 {% block mediagoblin_header_title %}{% endblock %}
62 <div class=
"header_right">
63 {%- if request.user %}
64 {% if request.user and request.user.status == 'active' %}
66 {% set notification_count = get_notification_count(request.user.id) %}
67 {% if notification_count %}
68 <a href=
"#notifications" class=
"notification-gem button_action" title=
"Notifications">
69 {{ notification_count }}
</a>
71 <a href=
"#header" class=
"button_action header_dropdown_down">▼</a>
72 <a href=
"#no_header" class=
"button_action header_dropdown_up">▲</a>
73 {% elif request.user and request.user.status ==
"needs_email_verification" %}
74 {# the following link should only appear when verification is needed #}
75 <a href=
"{{ request.urlgen('mediagoblin.user_pages.user_home',
76 user=request.user.username) }}"
77 class=
"button_action_highlight">
78 {% trans %}Verify your email!{% endtrans %}
</a>
79 or
<a id=
"logout" href=
80 {% if persona is not defined %}
81 "{{ request.urlgen('mediagoblin.auth.logout') }}"
85 >{% trans %}log out{% endtrans %}
</a>
89 {% if persona_auth is defined %}
90 "javascript:;" id=
"persona_login"
92 "{{ request.urlgen('mediagoblin.auth.login') }}"
95 {%- trans %}Log in{% endtrans -%}
99 <div class=
"clear"></div>
100 {% if request.user and request.user.status == 'active' %}
101 <div class=
"header_dropdown">
103 <span class=
"dropdown_title">
104 {% trans user_url=request.urlgen('mediagoblin.user_pages.user_home',
105 user=request.user.username),
106 user_name=request.user.username -%}
107 <a href=
"{{ user_url }}">{{ user_name }}
</a>'s account
111 <a href=
"{{ request.urlgen('mediagoblin.edit.account') }}">{%- trans %}Change account settings{% endtrans -%}
</a>
113 <a href=
"{{ request.urlgen('mediagoblin.user_pages.processing_panel',
114 user=request.user.username) }}">
115 {%- trans %}Media processing panel{% endtrans -%}
119 {% if persona is not defined %}
120 "{{ request.urlgen('mediagoblin.auth.logout') }}"
124 >{% trans %}Log out{% endtrans %}
</a>
126 <a class=
"button_action" href=
"{{ request.urlgen('mediagoblin.submit.start') }}">
127 {%- trans %}Add media{% endtrans -%}
129 <a class=
"button_action" href=
"{{ request.urlgen('mediagoblin.submit.collection') }}">
130 {%- trans %}Create new collection{% endtrans -%}
132 {% if request.user.is_admin %}
134 <span class=
"dropdown_title">Admin powers:
</span>
135 <a href=
"{{ request.urlgen('mediagoblin.admin.panel') }}">
136 {%- trans %}Media processing panel{% endtrans -%}
140 {% include 'mediagoblin/fragments/header_notifications.html' %}
145 <div class=
"container">
146 {% include 'mediagoblin/bits/above_content.html' %}
147 <div class=
"mediagoblin_content">
148 {% include
"mediagoblin/utils/messages.html" %}
149 {% block mediagoblin_content %}
150 {% endblock mediagoblin_content %}
151 {% if csrf_token is defined %}
152 {% template_hook(
"persona_form") %}
155 {%- include
"mediagoblin/bits/base_footer.html" %}
157 {%- endblock mediagoblin_body %}
158 {% include 'mediagoblin/bits/body_end.html' %}