]>
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> | |
2c39be74 | 29 | {% if request.path.startswith("/projects/location") %} |
6c6de80a | 30 | {% module IPFireLogo("Location") %} |
1c85f44b | 31 | {% elif hostname.startswith("fireinfo.") %} |
6c6de80a | 32 | {% module IPFireLogo("Fireinfo") %} |
1c85f44b | 33 | {% elif hostname.startswith("nopaste.") %} |
6c6de80a | 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 MT |
92 | {# Location #} |
93 | {% if request.path.startswith("/projects/location") %} | |
94 | <a class="navbar-item is-tab | |
95 | {% if request.path == "/projects/location/how-to-use" %}is-active{% end %}" | |
96 | href="/projects/location/how-to-use"> | |
97 | {{ _("How To Use") }} | |
98 | </a> | |
99 | ||
100 | <a class="navbar-item is-tab | |
101 | {% if request.path.startswith("/projects/location/download") %}is-active{% end %}" | |
102 | href="/projects/location/download"> | |
103 | {{ _("Download") }} | |
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> |
5ca4155d | 159 | {% elif hostname.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> |
5ca4155d | 171 | {% elif hostname.startswith("nopaste.") %} |
ae6c248d MT |
172 | <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" |
173 | aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> | |
174 | <span class="fas fa-bars"></span> | |
175 | </button> | |
176 | ||
177 | <div class="collapse navbar-collapse" id="navbar"> | |
178 | <ul class="navbar-nav ml-auto"> | |
179 | <li class="nav-item"> | |
180 | <a class="nav-link" href="/?mode=upload">{{ _("Upload File") }}</a> | |
181 | </li> | |
182 | </ul> | |
183 | </div> | |
ae6c248d MT |
184 | {% end %} |
185 | {% end block %} | |
adfebfd5 | 186 | </div> |
ae6c248d MT |
187 | </div> |
188 | </nav> | |
adfebfd5 | 189 | |
13522567 RH |
190 | <div class="is-flex-grow-1 is-flex-shrink-0"> |
191 | {% block container %} | |
192 | <div class="container"> | |
193 | {% block content %}{% end block %} | |
194 | </div> | |
195 | {% end block %} | |
196 | </div> | |
60024cc8 | 197 | |
9b5ac075 | 198 | {% block footer %} |
13522567 | 199 | <footer class="footer is-flex-shrink-0"> |
dcfd17ce | 200 | <div class="container"> |
6fdc2a48 MT |
201 | {% if request.path == "/docs" %} |
202 | <div class="level"> | |
203 | <div class="level-left"> | |
204 | <div class="level-item"> | |
79724110 | 205 | <a href="/docs/recent-changes"> |
6fdc2a48 MT |
206 | {{ _("Recent Changes") }} |
207 | </a> | |
208 | </div> | |
209 | ||
210 | {% if current_user %} | |
211 | <div class="level-item"> | |
79724110 | 212 | <a href="/docs/watchlist"> |
6fdc2a48 MT |
213 | {{ _("My Watchlist") }} |
214 | </a> | |
215 | </div> | |
216 | {% end %} | |
217 | ||
218 | <div class="level-item"> | |
79724110 | 219 | <a href="/docs/tree"> |
6fdc2a48 MT |
220 | {{ _("Tree") }} |
221 | </a> | |
222 | </div> | |
223 | </div> | |
224 | </div> | |
225 | {% end %} | |
226 | ||
f82ce0c7 | 227 | <div class="level"> |
df8781ae MT |
228 | <div class="level-left"> |
229 | <div class="level-item"> | |
f82ce0c7 MT |
230 | <div class="level is-mobile"> |
231 | <div class="level-item"> | |
232 | {{ year }} © IPFire.org | |
233 | </div> | |
dfd0d4cf | 234 | |
f82ce0c7 MT |
235 | <div class="level-item"> |
236 | <a href="/legal">{{ _("Legal") }}</a> | |
237 | </div> | |
dcfd17ce | 238 | |
8e66136b MT |
239 | {% if current_user and current_user.is_admin() %} |
240 | <div class="level-item"> | |
241 | <a href="/analytics">{{ _("Analytics") }}</a> | |
242 | </div> | |
243 | {% end %} | |
244 | ||
f82ce0c7 MT |
245 | <div class="level-item"> |
246 | <a href="/sitemap">{{ _("Sitemap") }}</a> | |
247 | </div> | |
248 | </div> | |
c41e24c1 | 249 | </div> |
dcfd17ce | 250 | </div> |
4235ba55 | 251 | |
df8781ae MT |
252 | <div class="level-right"> |
253 | <div class="level-item"> | |
f82ce0c7 MT |
254 | <div class="level is-mobile"> |
255 | <div class="level-item"> | |
256 | <a href="https://social.ipfire.org/@news" title="{{ _("Mastodon") }}"> | |
257 | <i class="fa-brands fa-mastodon px-2"></i> | |
258 | </a> | |
259 | </div> | |
260 | <div class="level-item"> | |
261 | <a href="https://twitter.com/ipfire" title="{{ _("Twitter") }}"> | |
262 | <i class="fa-brands fa-twitter px-2"></i> | |
263 | </a> | |
264 | </div> | |
265 | <div class="level-item"> | |
266 | <a href="https://linkedin.com/company/ipfire" title="{{ _("LinkedIn") }}"> | |
267 | <i class="fa-brands fa-linkedin-in px-2"></i> | |
268 | </a> | |
269 | </div> | |
4ac87764 RH |
270 | <div class="level-item"> |
271 | <a href="https://www.facebook.com/IPFire.org/" title="{{ _("Facebook") }}"> | |
272 | <i class="fa-brands fa-facebook-f px-2"></i> | |
273 | </a> | |
274 | </div> | |
f82ce0c7 | 275 | </div> |
02040293 | 276 | </div> |
0509f6fd | 277 | </div> |
df8781ae | 278 | </div> |
9b5ac075 MT |
279 | </div> |
280 | </footer> | |
60024cc8 | 281 | {% end block %} |
45f1004c | 282 | |
bd688657 | 283 | <script src="{{ static_url("js/jquery-3.6.0.min.js") }}"></script> |
92dac2e9 | 284 | <script src="{{ static_url("js/site.js") }}"></script> |
9f043320 | 285 | {% block javascript %}{% end block %} |
81675874 | 286 | </body> |
d4a18e83 | 287 | </html> |