]>
Commit | Line | Data |
---|---|---|
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 }}&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 }} © 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> |