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