]>
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" | |
65 | name="q" {% if "q" in locals() and q %}value="{{ q }}"{% end %} | |
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" | |
81 | name="q" {% if "q" in locals() and 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 MT |
120 | <a class="button is-lwl has-text-weight-bold is-uppercase" |
121 | href="https://store.lightningwirelabs.com/?utm_source={{ hostname }}&utm_medium=navigation"> | |
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" |
8d45158b MT |
128 | href="/sponsors"> |
129 | <span class="icon-text"> | |
130 | <span class="icon"> | |
131 | <i class="fas fa-heart"></i> | |
132 | </span> | |
133 | <span>{{ _("Sponsor Us") }}</span> | |
134 | </span> | |
b685910c | 135 | </a> |
ae6c248d | 136 | </div> |
c41e24c1 MT |
137 | |
138 | {% if current_user %} | |
139 | <div class="navbar-item has-dropdown is-hoverable"> | |
140 | <a class="navbar-link is-arrowless" href="/users/{{ current_user.uid }}"> | |
141 | <figure class="image"> | |
142 | <img class="is-rounded" style="width: auto" src="{{ current_user.avatar_url(128) }}"> | |
143 | </figure> | |
144 | </a> | |
145 | ||
146 | <div class="navbar-dropdown"> | |
9b3241e7 MT |
147 | <a class="navbar-item" href="/users/{{ current_user.uid }}/passwd"> |
148 | {{ _("Change Password") }} | |
149 | </a> | |
150 | ||
151 | <hr class="navbar-divider"> | |
152 | ||
c41e24c1 MT |
153 | <a class="navbar-item" href="/logout"> |
154 | {{ _("Logout")}} | |
155 | </a> | |
156 | </div> | |
c41e24c1 | 157 | </div> |
1333b18c | 158 | {% else %} |
7eedfe6f | 159 | <a class="navbar-item is-tab" href="/login?next={{ request.path }}"> |
1333b18c MT |
160 | <i class="fas fa-right-to-bracket" title="{{ _("Login") }}"></i> |
161 | </a> | |
c41e24c1 | 162 | {% end %} |
ae6c248d | 163 | </div> |
5ca4155d | 164 | {% elif hostname.startswith("fireinfo.") %} |
ae6c248d MT |
165 | <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" |
166 | aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> | |
167 | <span class="fas fa-bars"></span> | |
168 | </button> | |
169 | ||
170 | <div class="collapse navbar-collapse" id="navbar"> | |
171 | <ul class="navbar-nav ml-auto"> | |
172 | {% if current_user and current_user.is_staff() %} | |
71a3109c | 173 | <li class="nav-item"> |
488a670b | 174 | <a class="nav-link {% if request.path.startswith("/admin") %}is-active{% end %}" href="/admin"> |
ae6c248d | 175 | {{ _("Admin") }} |
71a3109c MT |
176 | </a> |
177 | </li> | |
ae6c248d | 178 | {% end %} |
f9f085e0 | 179 | |
ae6c248d | 180 | <li class="nav-item"> |
488a670b | 181 | <a class="nav-link {% if request.path.startswith("/vendors") %}is-active{% end %}" href="/vendors"> |
ae6c248d MT |
182 | {{ _("Vendors") }} |
183 | </a> | |
184 | </li> | |
185 | </ul> | |
186 | </div> | |
5ca4155d | 187 | {% elif hostname.startswith("nopaste.") %} |
ae6c248d MT |
188 | <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" |
189 | aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> | |
190 | <span class="fas fa-bars"></span> | |
191 | </button> | |
192 | ||
193 | <div class="collapse navbar-collapse" id="navbar"> | |
194 | <ul class="navbar-nav ml-auto"> | |
195 | <li class="nav-item"> | |
196 | <a class="nav-link" href="/?mode=upload">{{ _("Upload File") }}</a> | |
197 | </li> | |
198 | </ul> | |
199 | </div> | |
ae6c248d MT |
200 | {% end %} |
201 | {% end block %} | |
adfebfd5 | 202 | </div> |
ae6c248d MT |
203 | </div> |
204 | </nav> | |
adfebfd5 | 205 | |
13522567 RH |
206 | <div class="is-flex-grow-1 is-flex-shrink-0"> |
207 | {% block container %} | |
208 | <div class="container"> | |
209 | {% block content %}{% end block %} | |
210 | </div> | |
211 | {% end block %} | |
212 | </div> | |
60024cc8 | 213 | |
9b5ac075 | 214 | {% block footer %} |
13522567 | 215 | <footer class="footer is-flex-shrink-0"> |
dcfd17ce | 216 | <div class="container"> |
40ab030c | 217 | <div class="level is-mobile"> |
df8781ae MT |
218 | <div class="level-left"> |
219 | <div class="level-item"> | |
220 | {{ year }} © IPFire.org | |
c41e24c1 | 221 | </div> |
dfd0d4cf | 222 | |
df8781ae MT |
223 | <div class="level-item"> |
224 | <a href="/legal">{{ _("Legal") }}</a> | |
c41e24c1 | 225 | </div> |
dcfd17ce | 226 | |
df8781ae MT |
227 | <div class="level-item"> |
228 | <a href="/sitemap">{{ _("Sitemap") }}</a> | |
c41e24c1 | 229 | </div> |
dcfd17ce | 230 | </div> |
4235ba55 | 231 | |
df8781ae MT |
232 | <div class="level-right"> |
233 | <div class="level-item"> | |
234 | <a href="https://social.ipfire.org/@news" title="{{ _("Mastodon") }}"> | |
235 | <i class="fa-brands fa-mastodon px-2"></i> | |
236 | </a> | |
dcfd17ce | 237 | </div> |
df8781ae MT |
238 | <div class="level-item"> |
239 | <a href="https://twitter.com/ipfire" title="{{ _("Twitter") }}"> | |
240 | <i class="fa-brands fa-twitter px-2"></i> | |
241 | </a> | |
242 | </div> | |
243 | <div class="level-item"> | |
244 | <a href="https://linkedin.com/company/ipfire" title="{{ _("LinkedIn") }}"> | |
245 | <i class="fa-brands fa-linkedin-in px-2"></i> | |
246 | </a> | |
02040293 | 247 | </div> |
0509f6fd | 248 | </div> |
df8781ae | 249 | </div> |
9b5ac075 MT |
250 | </div> |
251 | </footer> | |
60024cc8 | 252 | {% end block %} |
45f1004c | 253 | |
bd688657 | 254 | <script src="{{ static_url("js/jquery-3.6.0.min.js") }}"></script> |
92dac2e9 | 255 | <script src="{{ static_url("js/site.js") }}"></script> |
9f043320 | 256 | {% block javascript %}{% end block %} |
81675874 | 257 | </body> |
d4a18e83 | 258 | </html> |