]> git.ipfire.org Git - ipfire.org.git/blob - src/templates/base.html
Generate favicon.ico and Apple Icons from logo
[ipfire.org.git] / src / templates / base.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <title>{{ hostname }} - {% block title %}{{ _("No title given") }}{% end block %}</title>
5 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6 <meta name="author" content="IPFire.org - IPFire Development Team" />
7
8 <meta name="keywords" content="Linux, Firewall, IPFire, Security, IPCop, Open Source, Free, ARM, VPN, Proxy, IDS, IPS" />
9 <meta name="description" content="{{ _("IPFire is a free firewall distribution based on Linux.") }}" />
10
11 <link rel="icon" sizes="192x192" href="{{ static_url("img/apple-touch-icon-192x192-precomposed.png") }}">
12 {% for res in ("72x72", "76x76", "120x120", "144x144", "152x152", "180x180") %}
13 <link rel="apple-touch-icon-precomposed" sizes="{{ res }}" href="{{ static_url("img/apple-touch-icon-%s-precomposed.png" % res )}}">
14 {% end %}
15 <link rel="apple-touch-icon-precomposed" href="{{ static_url("img/apple-touch-icon-60x60-precomposed.png") }}">
16
17 <!-- styling stuff -->
18 <link rel="stylesheet" type="text/css" href="{{ static_url("main.css") }}" />
19 <meta name="viewport" content="width=device-width, initial-scale=1.0">
20
21 {% block head %}{% end block %}
22 </head>
23
24 <body id="page-top">
25 <nav class="navbar navbar-dark navbar-expand-lg mb-4">
26 <div class="container">
27 <a class="navbar-brand" href="/">
28 <strong>IPFire</strong>
29
30 {% if hostname == "blog.ipfire.org" %}
31 {{ _("Blog") }}
32 {% elif hostname == "fireinfo.ipfire.org" %}
33 {{ _("Fireinfo") }}
34 {% elif hostname == "mirrors.ipfire.org" %}
35 {{ _("Mirrors") }}
36 {% elif hostname == "people.ipfire.org" %}
37 {{ _("People") }}
38 {% elif hostname == "wiki.ipfire.org" %}
39 {{ _("Wiki") }}
40 {% end %}
41 </a>
42
43 {% block menu %}
44 {% if hostname in ("www.ipfire.org", "dev.ipfire.org") %}
45 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
46 aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
47 <span class="fas fa-bars"></span>
48 </button>
49
50 <div class="collapse navbar-collapse" id="navbar">
51 <ul class="navbar-nav ml-auto">
52 <li class="nav-item d-sm-block d-md-block d-lg-none">
53 <a class="nav-link {% if request.path == "/" %}active{% end %}" href="/">{{ _("Home") }}</a>
54 </li>
55
56 <li class="nav-item">
57 <a class="nav-link {% if request.path == "/features" %}active{% end %}" href="/features">{{ _("Features") }}</a>
58 </li>
59
60 <li class="nav-item">
61 <a class="nav-link {% if request.path.startswith("/download") %}active{% end %}" href="/download">{{ _("Download") }}</a>
62 </li>
63
64 <li class="nav-item">
65 <a class="nav-link {% if request.path == "/support" %}active{% end %}" href="/support">{{ _("Support") }}</a>
66 </li>
67
68 <li class="nav-item">
69 <a class="nav-link" href="https://blog.ipfire.org/">{{ _("Blog") }}</a>
70 </li>
71 </ul>
72
73 <a class="btn btn-primary mt-2 mt-lg-0 ml-lg-2" href="/donate">
74 <span class="fas fa-heart"></span> {{ _("Donate") }}
75 </a>
76 </div>
77 {% elif hostname == "blog.ipfire.org" %}
78 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
79 aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
80 <span class="fas fa-bars"></span>
81 </button>
82
83 <div class="collapse navbar-collapse" id="navbar">
84 <ul class="navbar-nav ml-auto d-lg-none">
85 <li class="nav-item">
86 <a class="nav-link {% if request.path == "/" %}active{% end %}" href="/">
87 {{ _("Newest") }}
88 </a>
89 </li>
90
91 {% if current_user %}
92 <li class="nav-item">
93 <a class="nav-link {% if request.path == "/drafts" %}active{% end %}" href="/drafts">
94 {{ _("My Drafts") }}
95 </a>
96 </li>
97 {% end %}
98
99 <li class="nav-item">
100 <a class="nav-link {% if request.path == "/tags/featured" %}active{% end %}" href="/tags/featured">
101 {{ _("Featured") }}
102 </a>
103 </li>
104
105 <li class="nav-item">
106 <a class="nav-link {% if request.path == "/tags/lightningwirelabs.com" %}active{% end %} d-flex justify-content-between"
107 href="/tags/lightningwirelabs.com">
108 <span>{{ _("Lightning Wire Labs") }}</span>
109
110 <img class="img-fluid" src="{{ static_url("img/lightningwirelabs-logo.svg") }}"
111 alt="{{ _("Lightning Wire Labs") }}">
112 </a>
113 </li>
114
115 <li class="nav-item">
116 <a class="nav-link d-flex justify-content-between" href="/feed.xml">
117 <span>{{ _("RSS Feed") }}</span> <span class="fas fa-rss"></span>
118 </a>
119 </li>
120 </ul>
121
122 <form class="form-inline ml-lg-auto my-2 my-lg-0" action="/search" method="GET">
123 <input class="form-control form-control-sm" type="search" name="q"
124 placeholder="{{ _("Search...") }}" aria-label="{{ _("Search") }}" value="{% try %}{{ q }}{% except %}{% end %}">
125 </form>
126
127 <a class="btn btn-primary ml-lg-2" href="https://www.ipfire.org/donate">
128 <span class="fas fa-heart"></span> {{ _("Donate") }}
129 </a>
130 </div>
131 {% elif hostname == "fireinfo.ipfire.org" %}
132 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
133 aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
134 <span class="fas fa-bars"></span>
135 </button>
136
137 <div class="collapse navbar-collapse" id="navbar">
138 <ul class="navbar-nav ml-auto">
139 <li class="nav-item">
140 <a class="nav-link {% if request.path.startswith("/vendors") %}active{% end %}" href="/vendors">
141 {{ _("Vendors") }}
142 </a>
143 </li>
144 </ul>
145 </div>
146 {% elif hostname == "nopaste.ipfire.org" %}
147 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
148 aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
149 <span class="fas fa-bars"></span>
150 </button>
151
152 <div class="collapse navbar-collapse" id="navbar">
153 <ul class="navbar-nav ml-auto">
154 <li class="nav-item">
155 <a class="nav-link" href="/?mode=upload">{{ _("Upload File") }}</a>
156 </li>
157 </ul>
158 </div>
159 {% elif hostname == "people.ipfire.org" %}
160 {% if current_user %}
161 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
162 aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
163 <span class="fas fa-bars"></span>
164 </button>
165
166 <div class="collapse navbar-collapse" id="navbar">
167 <ul class="navbar-nav ml-auto mr-3">
168 <li class="nav-item">
169 <a class="nav-link {% if request.path == "/users/%s" % current_user.uid %}active{% end %}" href="/users/{{ current_user.uid }}">
170 {{ _("My Profile") }}
171 </a>
172 </li>
173
174 {% if current_user.has_sip() %}
175 <li class="nav-item">
176 <a class="nav-link {% if request.path.startswith("/users/%s/calls" % current_user.uid) %}active{% end %}" href="/users/{{ current_user.uid }}/calls">
177 {{ _("My Calls") }}
178
179 {% if current_user.sip_channels %}
180 <span class="badge badge-primary ml-2">{{ len(current_user.sip_channels) }}</span>
181 {% end %}
182 </a>
183 </li>
184 {% end %}
185
186 {% if current_user.is_staff() %}
187 <li class="nav-item">
188 <a class="nav-link {% if request.path == "/users" %}active{% end %}" href="/users">
189 {{ _("Users") }}
190 </a>
191 </li>
192 {% end %}
193
194 {% if current_user.has_sip() %}
195 <li class="nav-item">
196 <a class="nav-link {% if request.path.startswith("/conferences") %}active{% end %}" href="/conferences">
197 {{ _("Conferences") }}
198 </a>
199 </li>
200 {% end %}
201 </ul>
202
203 <form class="form-inline my-2 my-lg-0" action="/search" method="GET">
204 <input class="form-control form-control-sm mr-sm-2" type="search" name="q"
205 placeholder="{{ _("Search") }}" aria-label="{{ _("Search") }}" value="{% try %}{{ q }}{% except %}{% end %}">
206 </form>
207 </div>
208 {% end %}
209 {% elif hostname == "wiki.ipfire.org" %}
210 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
211 aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
212 <span class="fas fa-bars"></span>
213 </button>
214
215 <div class="collapse navbar-collapse" id="navbar">
216 <ul class="navbar-nav ml-auto mr-3">
217 <li class="nav-item">
218 <a class="nav-link {% if request.path == "/recent-changes" %}active{% end %}" href="/recent-changes">
219 {{ _("Recent Changes") }}
220 </a>
221 </li>
222 </ul>
223
224 <form class="form-inline my-2 my-lg-0" action="/search" method="GET">
225 <input class="form-control form-control-sm" type="search" name="q"
226 placeholder="{{ _("Search...") }}" aria-label="{{ _("Search") }}" value="{% try %}{{ q }}{% except %}{% end %}">
227 </form>
228
229 <a class="btn btn-primary ml-lg-2" href="https://www.ipfire.org/donate">
230 <span class="fas fa-heart"></span> {{ _("Donate") }}
231 </a>
232 </div>
233 {% end %}
234 {% end block %}
235 </div>
236 </nav>
237
238 {% block container %}
239 <div class="container">
240 {% block content %}{% end block %}
241 </div>
242 {% end block %}
243
244 {% block footer %}
245 <footer>
246 <div class="footer">
247 {% if hostname in ("www.ipfire.org", "dev.ipfire.org") %}
248 <div class="footer-info">
249 <div class="container pb-3">
250 <div class="row mb-6 justify-content-between">
251 <div class="col-12 col-lg-4 mb-4">
252 <h6>{{ _("Subscribe to our Newsletter") }}</h6>
253
254 <form method="POST" action="https://{{ "dev.ipfire.org" if hostname == "dev.ipfire.org" else "www.ipfire.org" }}/newsletter/subscribe">
255 {% raw xsrf_form_html() %}
256
257 <label class="sr-only" for="email">{{ _("Email Address") }}</label>
258
259 <input type="email" class="form-control mb-2 mr-sm-2" id="email" name="email"
260 placeholder="{{ _("Your Email Address") }}" required>
261
262 <button type="submit" class="btn btn-primary btn-block mb-2">{{ _("Subscribe") }}</button>
263 </form>
264 </div>
265
266 <div class="col-12 col-lg-3 mb-4 small">
267 <h6>{{ _("About") }}</h6>
268
269 <div class="row">
270 <div class="col">
271 <ul class="list-unstyled">
272 <li>
273 <a href="/features">{{ _("Features") }}</a>
274 </li>
275
276 <li>
277 <a href="/download">{{ _("Download") }}</a>
278 </li>
279
280 <li>
281 <a href="/support">{{ _("Support") }}</a>
282 </li>
283 </ul>
284 </div>
285
286 <div class="col">
287 <ul class="list-unstyled">
288 <li>
289 <a href="https://blog.ipfire.org">{{ _("Blog") }}</a>
290 </li>
291
292 <li>
293 <a href="https://wiki.ipfire.org/devel/start">{{ _("Development") }}</a>
294 </li>
295
296 <li>
297 <a href="/legal">{{ _("Legal") }}</a>
298 </li>
299 </ul>
300 </div>
301 </div>
302 </div>
303
304 <div class="col-12 col-lg-4 text-center mb-4">
305 <a class="btn btn-primary btn-lg px-4 my-4" href="/donate">
306 <span class="fas fa-heart"></span> {{ _("Donate") }}
307 </a>
308
309 <div class="btn-toolbar justify-content-center">
310 <a class="btn btn-link" href="https://twitter.com/ipfire">
311 <span class="fab fa-twitter"></span>
312 </a>
313
314 <a class="btn btn-link" href="https://www.facebook.com/IPFire.org">
315 <span class="fab fa-facebook"></span>
316 </a>
317
318 <a class="btn btn-link" href="https://youtube.com/user/ipfireproject">
319 <span class="fab fa-youtube"></span>
320 </a>
321 </div>
322 </div>
323 </div>
324 </div>
325 </div>
326 {% end %}
327
328 <div class="copyright">
329 <div class="container d-flex justify-content-between">
330 &copy; {{ year }} - IPFire - {{ _("The Open Source Firewall") }}
331
332 {% if not current_user and hostname in ("blog.ipfire.org", "nopaste.ipfire.org", "wiki.ipfire.org") %}
333 <a href="/login">{{ _("Login") }}</a>
334 {% elif current_user %}
335 <span>
336 {{ _("You are currently logged in as %s") % current_user.name }}
337 <a href="/logout">{{ _("Logout") }}</a>
338 </span>
339 {% end %}
340 </div>
341 </div>
342 </div>
343 </footer>
344 {% end block %}
345
346 <script src="{{ static_url("js/jquery-3.3.1.min.js") }}"></script>
347 <script src="{{ static_url("js/popper.min.js") }}"></script>
348 <script src="{{ static_url("js/bootstrap.min.js") }}"></script>
349 {% block javascript %}{% end block %}
350 </body>
351 </html>