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