]> git.ipfire.org Git - ipfire.org.git/blame - src/templates/base.html
location: Create a page that explains how to report problems
[ipfire.org.git] / src / templates / base.html
CommitLineData
60024cc8
MT
1<!DOCTYPE html>
2<html lang="en">
81675874 3 <head>
60024cc8
MT
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" />
940227cb 7
60024cc8 8 <meta name="keywords" content="Linux, Firewall, IPFire, Security, IPCop, Open Source, Free, ARM, VPN, Proxy, IDS, IPS" />
940227cb 9
662c7910
MT
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
60024cc8 16 <!-- styling stuff -->
07064256 17 <link rel="stylesheet" type="text/css" href="{{ static_url("main.css") }}" />
9f868512 18 <meta name="viewport" content="width=device-width, initial-scale=1.0">
940227cb 19
a1bf2f6c 20 {% block head %}{% end block %}
81675874 21 </head>
60024cc8 22
13522567 23 <body class="is-flex is-flex-direction-column">
ae6c248d
MT
24 <nav class="navbar" role="navigation" aria-label="main navigation">
25 <div class="container">
7c4e2b9e
MT
26 <div class="navbar-brand is-size-4">
27 {% if request.path.startswith("/location") %}
28 <a class="navbar-item" href="/location">
29 {% module IPFireLogo("Location") %}
30 </a>
31 {% else %}
32 <a class="navbar-item" href="/">
33 {% if request.path.startswith("/fireinfo") %}
6c6de80a 34 {% module IPFireLogo("Fireinfo") %}
1c85f44b 35 {% elif hostname.startswith("nopaste.") %}
1c1d1a96 36 {% module IPFireLogo("NoPaste") %}
2c39be74 37 {% else %}
6c6de80a 38 {% module IPFireLogo() %}
2c39be74 39 {% end %}
7c4e2b9e
MT
40 </a>
41 {% end %}
51c032a4 42
ae6c248d
MT
43 <a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbarMainMenu">
44 <span aria-hidden="true"></span>
45 <span aria-hidden="true"></span>
46 <span aria-hidden="true"></span>
47 </a>
48 </div>
49 <div class="navbar-menu" id="navbarMainMenu">
50 {% block menu %}
51 {% if hostname.startswith("www.") or hostname.startswith("dev.") %}
52 <div class="navbar-end">
815f98e4
MT
53 {# Show a search bar for blog #}
54 {% if request.path.startswith("/blog") %}
b6106fd7
MT
55 {# Navigation for Blog Authors #}
56 {% if current_user and current_user.is_blog_author() %}
57ed5a48 57 <a class="navbar-item is-tab {% if request.path == "/blog/drafts" %}is-active{% end %}" href="/blog/drafts">
b6106fd7
MT
58 {{ _("My Drafts") }}
59 </a>
60 {% end %}
61
815f98e4
MT
62 <div class="navbar-item">
63 <form action="/blog" method="GET">
64 <div class="field">
65 <div class="control has-icons-left">
66 <input class="input" type="text"
0fb1a1fc 67 name="q" {% if q %}value="{{ q }}"{% end %}
815f98e4
MT
68 placeholder="{{ _("Search Blog...") }}">
69 <span class="icon is-small is-left">
70 <i class="fas fa-search"></i>
71 </span>
72 </div>
73 </div>
74 </form>
75 </div>
51c032a4 76 {# Show a search bar for docs #}
815f98e4 77 {% elif request.path.startswith("/docs") %}
51c032a4
MT
78 <div class="navbar-item">
79 <form action="/docs/search" method="GET">
80 <div class="field">
81 <div class="control has-icons-left">
82 <input class="input" type="text"
0fb1a1fc 83 name="q" {% if q %}value="{{ q }}"{% end %}
ff787277 84 placeholder="{{ _("Search Documentation...") }}">
51c032a4
MT
85 <span class="icon is-small is-left">
86 <i class="fas fa-search"></i>
87 </span>
88 </div>
89 </div>
90 </form>
91 </div>
92 {% end %}
93
2c39be74 94 {# Location #}
d7164528 95 {% if request.path.startswith("/location") %}
2c39be74 96 <a class="navbar-item is-tab
78eb671f 97 {% if request.path.startswith("/location/how-to-use") %}is-active{% end %}"
d7164528 98 href="/location/how-to-use">
b73e143d 99 {{ _("How To Use?") }}
2c39be74
MT
100 </a>
101
102 <a class="navbar-item is-tab
1af3577f
MT
103 {% if request.path == "/location/install" %}is-active{% end %}"
104 href="/location/install">
105 {{ _("Install") }}
2c39be74
MT
106 </a>
107
f3a102c9
MT
108 <a class="navbar-item is-tab
109 {% if request.path == "/location/report-a-problem" %}is-active{% end %}"
110 href="/location/report-a-problem">
111 {{ _("Report A Problem") }}
112 </a>
113
2c39be74
MT
114 {# Main #}
115 {% else %}
116 <a class="navbar-item is-tab {% if request.path == "/about" %}is-active{% end %}" href="/about">{{ _("About") }}</a>
907afa34 117
2c39be74 118 <a class="navbar-item is-tab {% if request.path.startswith("/docs") %}is-active{% end %}" href="/docs">{{ _("Documentation") }}</a>
d4a18e83 119
2c39be74 120 <a class="navbar-item is-tab {% if request.path.startswith("/download") %}is-active{% end %}" href="/download">{{ _("Download") }}</a>
907afa34 121
2c39be74 122 <a class="navbar-item is-tab {% if request.path.startswith("/blog") %}is-active{% end %}" href="/blog">{{ _("Blog") }}</a>
adfebfd5 123
2c39be74
MT
124 <a class="navbar-item is-tab {% if request.path == "/help" %}is-active{% end %}" href="/help">{{ _("Help") }}</a>
125 {% end %}
ae6c248d
MT
126
127 <div class="navbar-item">
b685910c 128 <a class="button is-lwl has-text-weight-bold is-uppercase"
465153a4 129 href="https://store.lightningwirelabs.com/?utm_source={{ hostname }}&amp;utm_medium=navigation">
b685910c
MT
130 {{ _("Buy") }}
131 </a>
907afa34 132 </div>
adfebfd5 133
ae6c248d 134 <div class="navbar-item">
b685910c 135 <a class="button is-primary has-text-weight-bold is-uppercase"
5ea9f157 136 href="/donate">
b685910c
MT
137 {{ _("Donate") }}
138 </a>
ae6c248d 139 </div>
c41e24c1
MT
140
141 {% if current_user %}
142 <div class="navbar-item has-dropdown is-hoverable">
143 <a class="navbar-link is-arrowless" href="/users/{{ current_user.uid }}">
144 <figure class="image">
145 <img class="is-rounded" style="width: auto" src="{{ current_user.avatar_url(128) }}">
146 </figure>
147 </a>
148
149 <div class="navbar-dropdown">
9b3241e7
MT
150 <a class="navbar-item" href="/users/{{ current_user.uid }}/passwd">
151 {{ _("Change Password") }}
152 </a>
153
154 <hr class="navbar-divider">
155
c41e24c1
MT
156 <a class="navbar-item" href="/logout">
157 {{ _("Logout")}}
158 </a>
159 </div>
c41e24c1 160 </div>
1333b18c 161 {% else %}
7eedfe6f 162 <a class="navbar-item is-tab" href="/login?next={{ request.path }}">
1333b18c
MT
163 <i class="fas fa-right-to-bracket" title="{{ _("Login") }}"></i>
164 </a>
c41e24c1 165 {% end %}
ae6c248d 166 </div>
d7164528 167 {% elif request.path.startswith("/fireinfo") %}
55554b04
RH
168 <div class="navbar-end">
169 {% if current_user and current_user.is_staff() %}
170 <a class="navbar-item is-tab {% if request.path.startswith("/admin") %}is-active{% end %}" href="/admin">
171 {{ _("Admin") }}
172 </a>
173 {% end %}
f9f085e0 174
55554b04
RH
175 <a class="navbar-item is-tab {% if request.path.startswith("/vendors") %}is-active{% end %}" href="/vendors">
176 {{ _("Vendors") }}
177 </a>
ae6c248d 178 </div>
7d9f87a2
MT
179 {% elif hostname.startswith("nopaste.") %}
180 <div class="navbar-end">
181 <a class="navbar-item is-tab {% if request.path == "/" %}is-active{% end %}" href="/">
182 {{ _("Paste") }}
183 </a>
184
185 <a class="navbar-item is-tab {% if request.path == "/upload" %}is-active{% end %}" href="/upload">
186 {{ _("Upload") }}
187 </a>
188 </div>
ae6c248d
MT
189 {% end %}
190 {% end block %}
adfebfd5 191 </div>
ae6c248d
MT
192 </div>
193 </nav>
adfebfd5 194
13522567
RH
195 <div class="is-flex-grow-1 is-flex-shrink-0">
196 {% block container %}
197 <div class="container">
198 {% block content %}{% end block %}
199 </div>
200 {% end block %}
201 </div>
60024cc8 202
9b5ac075 203 {% block footer %}
13522567 204 <footer class="footer is-flex-shrink-0">
dcfd17ce 205 <div class="container">
6fdc2a48
MT
206 {% if request.path == "/docs" %}
207 <div class="level">
208 <div class="level-left">
209 <div class="level-item">
79724110 210 <a href="/docs/recent-changes">
6fdc2a48
MT
211 {{ _("Recent Changes") }}
212 </a>
213 </div>
214
215 {% if current_user %}
216 <div class="level-item">
79724110 217 <a href="/docs/watchlist">
6fdc2a48
MT
218 {{ _("My Watchlist") }}
219 </a>
220 </div>
221 {% end %}
222
223 <div class="level-item">
79724110 224 <a href="/docs/tree">
6fdc2a48
MT
225 {{ _("Tree") }}
226 </a>
227 </div>
228 </div>
229 </div>
230 {% end %}
231
f82ce0c7 232 <div class="level">
df8781ae
MT
233 <div class="level-left">
234 <div class="level-item">
f82ce0c7
MT
235 <div class="level is-mobile">
236 <div class="level-item">
237 {{ year }} &copy; IPFire.org
238 </div>
dfd0d4cf 239
f82ce0c7
MT
240 <div class="level-item">
241 <a href="/legal">{{ _("Legal") }}</a>
242 </div>
dcfd17ce 243
8e66136b
MT
244 {% if current_user and current_user.is_admin() %}
245 <div class="level-item">
246 <a href="/analytics">{{ _("Analytics") }}</a>
247 </div>
248 {% end %}
249
f82ce0c7
MT
250 <div class="level-item">
251 <a href="/sitemap">{{ _("Sitemap") }}</a>
252 </div>
253 </div>
c41e24c1 254 </div>
dcfd17ce 255 </div>
4235ba55 256
df8781ae
MT
257 <div class="level-right">
258 <div class="level-item">
f82ce0c7
MT
259 <div class="level is-mobile">
260 <div class="level-item">
261 <a href="https://social.ipfire.org/@news" title="{{ _("Mastodon") }}">
262 <i class="fa-brands fa-mastodon px-2"></i>
263 </a>
264 </div>
265 <div class="level-item">
a491bcc9
RH
266 <a href="https://x.com/ipfire" title="{{ _("X") }}">
267 <i class="fa-brands fa-x-twitter px-2"></i>
f82ce0c7
MT
268 </a>
269 </div>
270 <div class="level-item">
271 <a href="https://linkedin.com/company/ipfire" title="{{ _("LinkedIn") }}">
272 <i class="fa-brands fa-linkedin-in px-2"></i>
273 </a>
274 </div>
4ac87764
RH
275 <div class="level-item">
276 <a href="https://www.facebook.com/IPFire.org/" title="{{ _("Facebook") }}">
277 <i class="fa-brands fa-facebook-f px-2"></i>
278 </a>
279 </div>
f82ce0c7 280 </div>
02040293 281 </div>
0509f6fd 282 </div>
df8781ae 283 </div>
9b5ac075
MT
284 </div>
285 </footer>
60024cc8 286 {% end block %}
45f1004c 287
bd688657 288 <script src="{{ static_url("js/jquery-3.6.0.min.js") }}"></script>
92dac2e9 289 <script src="{{ static_url("js/site.js") }}"></script>
9f043320 290 {% block javascript %}{% end block %}
81675874 291 </body>
d4a18e83 292</html>