]> git.ipfire.org Git - ipfire.org.git/blob - src/templates/base.html
blog: Make menu responsive by moving it into header
[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 <!-- styling stuff -->
12 <link rel="stylesheet" type="text/css" href="{{ static_url("main.css") }}" />
13 <meta name="viewport" content="width=device-width, initial-scale=1.0">
14
15 {% block head %}{% end block %}
16 </head>
17
18 <body id="page-top">
19 <nav class="navbar navbar-dark navbar-expand-lg mb-4">
20 <div class="container">
21 <a class="navbar-brand mx-auto" href="/">
22 <strong>IPFire</strong>
23
24 {% if hostname == "blog.ipfire.org" %}
25 {{ _("Blog") }}
26 {% elif hostname == "people.ipfire.org" %}
27 {{ _("People") }}
28 {% end %}
29 </a>
30
31 {% block menu %}
32 {% if hostname in ("www.ipfire.org", "dev.ipfire.org") %}
33 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
34 aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
35 <span class="fas fa-bars"></span>
36 </button>
37
38 <div class="collapse navbar-collapse" id="navbar">
39 <ul class="navbar-nav ml-auto">
40 <li class="nav-item d-sm-block d-md-block d-lg-none">
41 <a class="nav-link {% if request.path == "/" %}active{% end %}" href="/">{{ _("Home") }}</a>
42 </li>
43
44 <li class="nav-item">
45 <a class="nav-link {% if request.path == "/features" %}active{% end %}" href="/features">{{ _("Features") }}</a>
46 </li>
47
48 <li class="nav-item">
49 <a class="nav-link {% if request.path.startswith("/download") %}active{% end %}" href="/download">{{ _("Download") }}</a>
50 </li>
51
52 <li class="nav-item">
53 <a class="nav-link {% if request.path == "/support" %}active{% end %}" href="/support">{{ _("Support") }}</a>
54 </li>
55 </ul>
56
57 <a class="btn btn-primary btn-donate ml-2 d-none d-sm-block" href="/donate">
58 <span class="fas fa-heart"></span> {{ _("Donate") }}
59 </a>
60 </div>
61 {% elif hostname == "blog.ipfire.org" %}
62 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
63 aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
64 <span class="fas fa-bars"></span>
65 </button>
66
67 <div class="collapse navbar-collapse" id="navbar">
68 <ul class="navbar-nav ml-auto d-lg-none">
69 <li class="nav-item">
70 <a class="nav-link {% if request.path == "/" %}active{% end %}" href="/">
71 {{ _("Newest") }}
72 </a>
73 </li>
74
75 {% if current_user %}
76 <li class="nav-item">
77 <a class="nav-link {% if request.path == "/drafts" %}active{% end %}" href="/drafts">
78 {{ _("My Drafts") }}
79 </a>
80 </li>
81 {% end %}
82
83 <li class="nav-item">
84 <a class="nav-link {% if request.path == "/tags/featured" %}active{% end %}" href="/tags/featured">
85 {{ _("Featured") }}
86 </a>
87 </li>
88
89 <li class="nav-item">
90 <a class="nav-link {% if request.path == "/tags/lightningwirelabs.com" %}active{% end %} d-flex justify-content-between"
91 href="/tags/lightningwirelabs.com">
92 <span>{{ _("Lightning Wire Labs") }}</span>
93
94 <img class="img-fluid" src="{{ static_url("img/lightningwirelabs-logo.svg") }}"
95 alt="{{ _("Lightning Wire Labs") }}">
96 </a>
97 </li>
98
99 <li class="nav-item">
100 <a class="nav-link d-flex justify-content-between" href="/feed.xml">
101 <span>{{ _("RSS Feed") }}</span> <span class="fas fa-rss"></span>
102 </a>
103 </li>
104 </ul>
105
106 <form class="form-inline ml-auto my-2 my-lg-0" action="/search" method="GET">
107 <input class="form-control form-control-sm mr-sm-2" type="search" name="q"
108 placeholder="{{ _("Search...") }}" aria-label="{{ _("Search") }}" value="{% try %}{{ q }}{% except %}{% end %}">
109 </form>
110
111 <a class="btn btn-primary btn-donate ml-2 d-none d-sm-block" href="/donate">
112 <span class="fas fa-heart"></span> {{ _("Donate") }}
113 </a>
114 </div>
115 {% elif hostname == "nopaste.ipfire.org" %}
116 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
117 aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
118 <span class="fas fa-bars"></span>
119 </button>
120
121 <div class="collapse navbar-collapse" id="navbar">
122 <ul class="navbar-nav ml-auto">
123 <li class="nav-item">
124 <a class="nav-link" href="/?mode=upload">{{ _("Upload File") }}</a>
125 </li>
126 </ul>
127 </div>
128 {% elif hostname == "people.ipfire.org" %}
129 {% if current_user %}
130 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
131 aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
132 <span class="fas fa-bars"></span>
133 </button>
134
135 <div class="collapse navbar-collapse" id="navbar">
136 <ul class="navbar-nav ml-auto mr-3">
137 <li class="nav-item">
138 <a class="nav-link {% if request.path == "/users/%s" % current_user.uid %}active{% end %}" href="/users/{{ current_user.uid }}">
139 {{ _("My Profile") }}
140 </a>
141 </li>
142
143 <li class="nav-item">
144 <a class="nav-link {% if request.path.startswith("/users/%s/calls" % current_user.uid) %}active{% end %}" href="/users/{{ current_user.uid }}/calls">
145 {{ _("My Calls") }}
146
147 {% if current_user.sip_channels %}
148 <span class="badge badge-primary ml-2">{{ len(current_user.sip_channels) }}</span>
149 {% end %}
150 </a>
151 </li>
152
153 <li class="nav-item">
154 <a class="nav-link {% if request.path == "/users" %}active{% end %}" href="/users">
155 {{ _("Users") }}
156 </a>
157 </li>
158
159 <li class="nav-item">
160 <a class="nav-link {% if request.path.startswith("/conferences") %}active{% end %}" href="/conferences">
161 {{ _("Conferences") }}
162 </a>
163 </li>
164 </ul>
165
166 <form class="form-inline my-2 my-lg-0" action="/search" method="GET">
167 <input class="form-control form-control-sm mr-sm-2" type="search" name="q"
168 placeholder="{{ _("Search") }}" aria-label="{{ _("Search") }}" value="{% try %}{{ q }}{% except %}{% end %}">
169 </form>
170 </div>
171 {% end %}
172 {% end %}
173 {% end block %}
174 </div>
175 </nav>
176
177 {% block container %}
178 <div class="container">
179 {% block body %}{% end block %}
180 {% block content %}{% end block %}
181 </div>
182 {% end block %}
183
184 {% block footer %}
185 <footer>
186 <div class="footer">
187 {% if hostname in ("www.ipfire.org", "blog.ipfire.org", "dev.ipfire.org") %}
188 <div class="footer-info">
189 <div class="container pb-3">
190 <div class="row mb-6 justify-content-between">
191 <div class="col-12 col-lg-4 mb-4">
192 <h6>{{ _("Subscribe to our Newsletter") }}</h6>
193
194 <form method="POST" action="https://{{ "dev.ipfire.org" if hostname == "dev.ipfire.org" else "www.ipfire.org" }}/newsletter/subscribe">
195 {% raw xsrf_form_html() %}
196
197 <label class="sr-only" for="email">{{ _("Email Address") }}</label>
198
199 <input type="email" class="form-control mb-2 mr-sm-2" id="email" name="email"
200 placeholder="{{ _("Your Email Address") }}">
201
202 <button type="submit" class="btn btn-primary btn-block mb-2">{{ _("Subscribe") }}</button>
203 </form>
204 </div>
205
206 <div class="col-12 col-lg-3 mb-4 small">
207 <h6>{{ _("About") }}</h6>
208
209 <div class="row">
210 <div class="col">
211 <ul class="list-unstyled">
212 <li>
213 <a href="https://www.ipfire.org/features">{{ _("Features") }}</a>
214 </li>
215
216 <li>
217 <a href="https://downloads.ipfire.org">{{ _("Download") }}</a>
218 </li>
219
220 <li>
221 <a href="https://www.ipfire.org/support">{{ _("Support") }}</a>
222 </li>
223 </ul>
224 </div>
225
226 <div class="col">
227 <ul class="list-unstyled">
228 <li>
229 <a href="https://blog.ipfire.org">{{ _("Blog") }}</a>
230 </li>
231
232 <li>
233 <a href="https://wiki.ipfire.org/devel/start">{{ _("Development") }}</a>
234 </li>
235
236 <li>
237 <a href="https://www.ipfire.org/legal">{{ _("Legal") }}</a>
238 </li>
239 </ul>
240 </div>
241 </div>
242 </div>
243
244 <div class="col-12 col-lg-4 text-center mb-4">
245 <a class="btn btn-primary btn-lg px-4 my-4" href="//www.ipfire.org/donate">
246 <span class="fas fa-heart"></span> {{ _("Donate") }}
247 </a>
248
249 <div class="btn-toolbar justify-content-center">
250 <a class="btn btn-link" href="https://twitter.com/ipfire">
251 <span class="fab fa-twitter"></span>
252 </a>
253
254 <a class="btn btn-link" href="https://www.facebook.com/IPFire.org">
255 <span class="fab fa-facebook"></span>
256 </a>
257
258 <a class="btn btn-link" href="https://youtube.com/user/ipfireproject">
259 <span class="fab fa-youtube"></span>
260 </a>
261 </div>
262 </div>
263 </div>
264 </div>
265 </div>
266 {% end %}
267
268 <div class="copyright">
269 <div class="container d-flex justify-content-between">
270 &copy; {{ year }} - {{ _("IPFire is free software written by the IPFire Project") }}
271
272 {% if not current_user and hostname in ("blog.ipfire.org", "nopaste.ipfire.org") %}
273 <a href="/login">{{ _("Login") }}</a>
274 {% elif current_user %}
275 <span>
276 {{ _("You are currently logged in as %s") % current_user.name }}
277 <a href="/logout">{{ _("Logout") }}</a>
278 </span>
279 {% end %}
280 </div>
281 </div>
282 </div>
283 </footer>
284 {% end block %}
285
286 <script src="{{ static_url("js/jquery-3.3.1.min.js") }}"></script>
287 <script src="{{ static_url("js/popper.min.js") }}"></script>
288 <script src="{{ static_url("js/bootstrap.min.js") }}"></script>
289 {% block javascript %}{% end block %}
290 </body>
291 </html>