Merge remote-tracking branch 'remotes/lotusecho/trac_711_test_speed'
[mediagoblin.git] / mediagoblin / templates / mediagoblin / base.html
1 {#
2 # GNU MediaGoblin -- federated, autonomous media hosting
3 # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
4 #
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.
9 #
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.
14 #
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/>.
17 -#}
18 <!doctype html>
19 <html
20 {% block mediagoblin_html_tag %}
21 {% endblock mediagoblin_html_tag %}
22 >
23 <head>
24 <meta charset="utf-8">
25 <meta name="viewport" content="width=device-width, initial-scale=1.0">
26 <title>{% block title %}{{ app_config['html_title'] }}{% endblock %}</title>
27 <link rel="stylesheet" type="text/css"
28 href="{{ request.staticdirect('/css/extlib/reset.css') }}"/>
29 <link rel="stylesheet" type="text/css"
30 href="{{ request.staticdirect('/css/base.css') }}"/>
31 <link rel="shortcut icon"
32 href="{{ request.staticdirect('/images/goblin.ico') }}" />
33 <script type="text/javascript"
34 src="{{ request.staticdirect('/js/extlib/jquery.js') }}"></script>
35 <script type="text/javascript"
36 src="{{ request.staticdirect('/js/header_dropdown.js') }}"></script>
37 <script type="text/javascript"
38 src="{{ request.staticdirect('/js/notifications.js') }}"></script>
39
40 {# For clarification, the difference between the extra_head.html template
41 # and the head template hook is that the former should be used by
42 # themes and the latter should be used by plugins.
43 # The reason is that only one thing can override extra_head.html...
44 # but multiple plugins can hook into the template hook.
45 #}
46 {% include "mediagoblin/extra_head.html" %}
47 {% template_hook("head") %}
48
49 {% block mediagoblin_head %}
50 {% endblock mediagoblin_head %}
51 </head>
52 <body>
53 {% include 'mediagoblin/bits/body_start.html' %}
54 {% block mediagoblin_body %}
55 {% block mediagoblin_header %}
56 <header>
57 {%- include "mediagoblin/bits/logo.html" -%}
58 {% block mediagoblin_header_title %}{% endblock %}
59 <div class="header_right">
60 {%- if request.user %}
61 {% if request.user and request.user.status == 'active' %}
62
63 {% set notification_count = request.notifications.get_notification_count(request.user.id) %}
64 {% if notification_count %}
65 <a href="#notifications" class="notification-gem button_action" title="Notifications">
66 {{ notification_count }}</a>
67 {% endif %}
68 <div class="button_action header_dropdown_down">&#9660;</div>
69 <div class="button_action header_dropdown_up">&#9650;</div>
70 {% elif request.user and request.user.status == "needs_email_verification" %}
71 {# the following link should only appear when verification is needed #}
72 <a href="{{ request.urlgen('mediagoblin.user_pages.user_home',
73 user=request.user.username) }}"
74 class="button_action_highlight">
75 {% trans %}Verify your email!{% endtrans %}</a>
76 or <a href="{{ request.urlgen('mediagoblin.auth.logout') }}">{% trans %}log out{% endtrans %}</a>
77 {% endif %}
78 {%- elif auth %}
79 <a href="{{ request.urlgen('mediagoblin.auth.login') }}?next={{
80 request.base_url|urlencode }}">
81 {%- trans %}Log in{% endtrans -%}
82 </a>
83 {%- endif %}
84 </div>
85 <div class="clear"></div>
86 {% if request.user and request.user.status == 'active' %}
87 <div class="header_dropdown">
88 <p>
89 <span class="dropdown_title">
90 {% trans user_url=request.urlgen('mediagoblin.user_pages.user_home',
91 user=request.user.username),
92 user_name=request.user.username -%}
93 <a href="{{ user_url }}">{{ user_name }}</a>'s account
94 {%- endtrans %}
95 </span>
96 &middot;
97 <a href="{{ request.urlgen('mediagoblin.edit.account') }}">{%- trans %}Change account settings{% endtrans -%}</a>
98 &middot;
99 <a href="{{ request.urlgen('mediagoblin.user_pages.processing_panel',
100 user=request.user.username) }}">
101 {%- trans %}Media processing panel{% endtrans -%}
102 </a>
103 &middot;
104 <a href="{{ request.urlgen('mediagoblin.auth.logout') }}">{% trans %}Log out{% endtrans %}</a>
105 </p>
106 <a class="button_action" href="{{ request.urlgen('mediagoblin.submit.start') }}">
107 {%- trans %}Add media{% endtrans -%}
108 </a>
109 <a class="button_action" href="{{ request.urlgen('mediagoblin.submit.collection') }}">
110 {%- trans %}Create new collection{% endtrans -%}
111 </a>
112 {% if request.user.is_admin %}
113 <p>
114 <span class="dropdown_title">Admin powers:</span>
115 <a href="{{ request.urlgen('mediagoblin.admin.panel') }}">
116 {%- trans %}Media processing panel{% endtrans -%}
117 </a>
118 </p>
119 {% endif %}
120 {% include 'mediagoblin/fragments/header_notifications.html' %}
121 </div>
122 {% endif %}
123 </header>
124 {% endblock %}
125 <div class="container">
126 {% include 'mediagoblin/bits/above_content.html' %}
127 <div class="mediagoblin_content">
128 {% include "mediagoblin/utils/messages.html" %}
129 {% block mediagoblin_content %}
130 {% endblock mediagoblin_content %}
131 </div>
132 {%- include "mediagoblin/bits/base_footer.html" %}
133 </div>
134 {%- endblock mediagoblin_body %}
135 {% include 'mediagoblin/bits/body_end.html' %}
136 </body>
137 </html>