]>
Commit | Line | Data |
---|---|---|
081800ca | 1 | {% extends "base.html" %} |
95b30f84 | 2 | |
9b5ac075 | 3 | {% block title %}{{ _("Donate") }}{% end block %} |
95b30f84 | 4 | |
60b0917c | 5 | {% block container %} |
95b30f84 MT |
6 | {% set amounts = (10, 25, 50, 75, 100, 250) %} |
7 | ||
8 | <h1 class="text-center mt-5 mb-5">{{ _("Donate") }}</h1> | |
9 | ||
a41e6d77 MT |
10 | <div class="container"> |
11 | <div class="card mb-5"> | |
12 | <div class="card-body"> | |
13 | <div class="row flex-lg-row-reverse"> | |
14 | <div class="col-12 col-lg-8"> | |
15 | <form action="" method="POST"> | |
16 | {% raw xsrf_form_html() %} | |
17 | ||
18 | <div class="row justify-content-center"> | |
8bc72662 | 19 | <div class="col-12 col-sm-11 col-xl-12 px-4 px-sm-6"> |
a41e6d77 MT |
20 | <div class="row"> |
21 | <div class="col-12 col-lg-6 mb-3 mb-md-0"> | |
22 | <h6>Choose a currency</h6> | |
23 | ||
24 | <div class="form-check form-check-inline"> | |
bd2723d4 MT |
25 | <input class="form-check-input" type="radio" name="currency" id="EUR" value="EUR" |
26 | {% if currency == "EUR" %}checked{% end %}> | |
a41e6d77 MT |
27 | <label class="form-check-label" for="EUR">{{ _("Euro") }}</label> |
28 | </div> | |
95b30f84 | 29 | |
a41e6d77 | 30 | <div class="form-check form-check-inline"> |
bd2723d4 MT |
31 | <input class="form-check-input" type="radio" name="currency" id="USD" value="USD" |
32 | {% if currency == "USD" %}checked{% end %}> | |
a41e6d77 MT |
33 | <label class="form-check-label" for="USD">{{ _("US Dollar") }}</label> |
34 | </div> | |
35 | </div> | |
95b30f84 | 36 | |
a41e6d77 MT |
37 | <div class="col-12 col-lg-6"> |
38 | <h6>Frequency</h6> | |
39 | ||
40 | <div class="form-check form-check-inline"> | |
bd2723d4 MT |
41 | <input class="form-check-input" type="radio" name="frequency" id="frequency-one-time" |
42 | value="one-time" {% if frequency == "one-time" %}checked{% end %}> | |
43 | <label class="form-check-label" for="frequency-one-time">{{ _("One Time") }}</label> | |
a41e6d77 MT |
44 | </div> |
45 | ||
46 | <div class="form-check form-check-inline"> | |
bd2723d4 MT |
47 | <input class="form-check-input" type="radio" name="frequency" id="frequency-monthly" |
48 | value="monthly" {% if frequency == "monthly" %}checked{% end %}> | |
a41e6d77 MT |
49 | <label class="form-check-label" for="frequency-monthly">{{ _("Monthly") }}</label> |
50 | </div> | |
51 | </div> | |
52 | </div> | |
53 | ||
8bc72662 | 54 | <div class="mt-5 mb-3 p-5 bg-light"> |
a41e6d77 MT |
55 | <h6>{{ _("Choose an amount") }}</h6> |
56 | ||
bd2723d4 | 57 | <input type="hidden" name="amount" {% if amount %}value="{{ amount }}"{% end %} required> |
6d151de3 | 58 | |
a41e6d77 | 59 | <div class="btn-group-toggle flex-wrap mb-3" data-toggle="buttons"> |
bd2723d4 | 60 | {% for a in amounts %} |
a41e6d77 | 61 | <label class="btn btn-secondary btn-lg mb-2"> |
bd2723d4 MT |
62 | <input type="radio" name="amount-selector" value="{{ a }}" {% if amount == a %}checked{% end %} |
63 | autocomplete="off"> <span class="USD">$</span>{{ a }} <span class="EUR">€</span> | |
a41e6d77 MT |
64 | </label> |
65 | {% end %} | |
66 | </div> | |
67 | ||
68 | <div class="form-group row mb-5"> | |
69 | <label class="col-sm-5 col-form-label col-form-label-lg"> | |
70 | or enter your own | |
71 | </label> | |
72 | ||
73 | <div class="col-sm-5"> | |
8bc72662 | 74 | <input type="number" class="form-control form-control-lg" name="amount-input" min="5" step="0.01" |
bd2723d4 | 75 | {% if not amount in amounts %}value="{{ amount }}"{% end %}> |
a41e6d77 MT |
76 | </div> |
77 | </div> | |
78 | ||
79 | <div class="row mb-5"> | |
a41e6d77 MT |
80 | <div class="col d-flex flex-column"> |
81 | <div class="form-row"> | |
82 | <div class="col"> | |
83 | <div class="form-check form-check-inline mb-3"> | |
ebe19f8e MT |
84 | <input class="form-check-input" type="radio" name="title" id="mr" value="Mr." checked> |
85 | <label class="form-check-label" for="mr">{{ _("Mr.") }}</label> | |
a41e6d77 MT |
86 | </div> |
87 | <div class="form-check form-check-inline mb-3"> | |
ebe19f8e MT |
88 | <input class="form-check-input" type="radio" name="title" id="mrs" value="Mrs."> |
89 | <label class="form-check-label" for="mrs">{{ _("Mrs.") }}</label> | |
a41e6d77 MT |
90 | </div> |
91 | </div> | |
92 | </div> | |
93 | ||
94 | <div class="form-row"> | |
95 | <div class="col-sm-6"> | |
96 | <div class="form-group"> | |
450af3dc MT |
97 | <input type="text" class="form-control" name="first_name" |
98 | placeholder="{{ _("First Name" )}}" required> | |
a41e6d77 MT |
99 | </div> |
100 | </div> | |
101 | ||
102 | <div class="col-sm-6"> | |
103 | <div class="form-group"> | |
450af3dc | 104 | <input type="text" class="form-control" name="last_name" |
a41e6d77 MT |
105 | placeholder="{{ _("Last Name" )}}" required> |
106 | </div> | |
107 | </div> | |
108 | </div> | |
109 | ||
110 | <div class="form-group"> | |
450af3dc | 111 | <input type="email" class="form-control" name="email" |
a41e6d77 MT |
112 | placeholder="{{ _("Email Address") }}" required> |
113 | </div> | |
114 | ||
115 | <div class="form-group"> | |
450af3dc | 116 | <input type="text" class="form-control" name="company_name" |
a41e6d77 MT |
117 | placeholder="{{ _("Company Name (optional)") }}"> |
118 | </div> | |
119 | ||
120 | <div class="form-group"> | |
450af3dc | 121 | <input type="text" class="form-control" name="street1" |
a41e6d77 MT |
122 | placeholder="{{ _("Address Line 1") }}" required> |
123 | </div> | |
95b30f84 | 124 | |
a41e6d77 | 125 | <div class="form-group"> |
450af3dc | 126 | <input type="text" class="form-control" name="street2" |
a41e6d77 MT |
127 | placeholder="{{ _("Address Line 2") }}"> |
128 | </div> | |
129 | ||
130 | <div class="form-row"> | |
131 | <div class="col-sm-6"> | |
132 | <div class="form-group"> | |
450af3dc | 133 | <input type="text" class="form-control" name="city" |
a41e6d77 | 134 | placeholder="{{ _("City") }}" required> |
2c361abc | 135 | </div> |
be02b78f | 136 | </div> |
a41e6d77 MT |
137 | |
138 | <div class="col-sm-6"> | |
139 | <div class="form-group"> | |
450af3dc | 140 | <input type="text" class="form-control" name="post_code" |
a41e6d77 MT |
141 | placeholder="{{ _("Post Code") }}" required> |
142 | </div> | |
143 | </div> | |
144 | </div> | |
145 | ||
146 | <div class="form-row"> | |
147 | <div class="col-sm-6"> | |
148 | <div class="form-group"> | |
450af3dc | 149 | <select class="form-control" name="country_code" required> |
a41e6d77 | 150 | <option value="">- {{ _("Country") }} -</option> |
47113f9e MT |
151 | |
152 | {% for c in countries %} | |
153 | <option value="{{ c.alpha2 }}" {% if country == c.alpha2 %}selected{% end %}>{{ c.name }}</option> | |
154 | {% end %} | |
a41e6d77 MT |
155 | </select> |
156 | </div> | |
157 | </div> | |
158 | ||
159 | <div class="col-sm-6"> | |
160 | <div class="form-group"> | |
450af3dc | 161 | <input type="text" class="form-control" name="state" |
a41e6d77 MT |
162 | placeholder="{{ _("State (optional)") }}"> |
163 | </div> | |
164 | </div> | |
165 | </div> | |
d9d6d3c3 MT |
166 | </div> |
167 | </div> | |
a41e6d77 | 168 | |
d9d6d3c3 MT |
169 | <div class="row mb-5"> |
170 | <div class="col text-center"> | |
171 | <input type="submit" class="btn btn-primary btn-lg" | |
a41e6d77 MT |
172 | id="donate" value="{{ _("Donate Now") }}"> |
173 | </div> | |
174 | </div> | |
175 | ||
176 | <div class="row"> | |
d9d6d3c3 MT |
177 | <div class="col d-flex justify-content-center"> |
178 | <picture> | |
179 | <source srcset="{{ static_url("img/amex.png") }}, | |
180 | {{ static_url("img/amex@2x.png") }} 2x, | |
181 | {{ static_url("img/amex@3x.png") }} 3x"> | |
182 | <img src="{{ static_url("img/amex.png") }}" | |
183 | srcset="{{ static_url("img/amex.png") }}, | |
184 | {{ static_url("img/amex@2x.png") }} 2x, | |
185 | {{ static_url("img/amex@3x.png") }} 3x" | |
186 | alt="Amex" class="m-xl-2"> | |
187 | </picture> | |
188 | ||
189 | <picture> | |
190 | <source srcset="{{ static_url("img/mastercard.png") }}, | |
191 | {{ static_url("img/mastercard@2x.png") }} 2x, | |
192 | {{ static_url("img/mastercard@3x.png") }} 3x"> | |
193 | <img src="{{ static_url("img/mastercard.png") }}" | |
194 | srcset="{{ static_url("img/mastercard.png") }}, | |
195 | {{ static_url("img/mastercard@2x.png") }} 2x, | |
196 | {{ static_url("img/mastercard@3x.png") }} 3x" | |
197 | alt="Mastercard" class="m-xl-2"> | |
198 | </picture> | |
199 | ||
200 | <picture> | |
201 | <source srcset="{{ static_url("img/visa.png") }}, | |
202 | {{ static_url("img/visa@2x.png") }} 2x, | |
203 | {{ static_url("img/visa@3x.png") }} 3x"> | |
204 | <img src="{{ static_url("img/visa.png") }}" | |
205 | srcset="{{ static_url("img/visa.png") }}, | |
206 | {{ static_url("img/visa@2x.png") }} 2x, | |
207 | {{ static_url("img/visa@3x.png") }} 3x" | |
208 | alt="Visa" class="m-xl-2"> | |
209 | </picture> | |
210 | ||
211 | <!-- XXX insert SEPA logo --> | |
a41e6d77 MT |
212 | </div> |
213 | </div> | |
214 | ||
215 | <div class="modal fade" tabindex="-1" role="dialog" id="modal-upsell" aria-hidden="true"> | |
216 | <div class="modal-dialog modal-dialog-centered" role="document"> | |
217 | <div class="modal-content"> | |
218 | <div class="modal-header"> | |
219 | <h5 class="modal-title">Modal title</h5> | |
220 | <button type="button" class="close" data-dismiss="modal" aria-label="Close"> | |
221 | <span aria-hidden="true">×</span> | |
222 | </button> | |
223 | </div> | |
224 | ||
225 | <div class="modal-body"> | |
226 | <p>Modal body text goes here.</p> | |
227 | </div> | |
228 | ||
229 | <div class="modal-footer"> | |
760295a7 | 230 | <input type="submit" class="btn btn-primary" value="Donate Now"> |
a41e6d77 MT |
231 | <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> |
232 | </div> | |
fed291df SH |
233 | </div> |
234 | </div> | |
be02b78f | 235 | </div> |
a41e6d77 MT |
236 | </div> |
237 | ||
8bc72662 MT |
238 | <p class="small text-muted mb-0"> |
239 | The organization you will be donating to is Lightning Wire Labs GmbH who is | |
240 | kindly handling donations for the IPFire project. | |
241 | After clicking "Donate Now", you will be redirected to Lightning Wire Labs | |
242 | where you will be able to complete the transaction. | |
a41e6d77 | 243 | </p> |
ef0d3151 SH |
244 | </div> |
245 | </div> | |
a41e6d77 | 246 | </form> |
95b30f84 | 247 | </div> |
a41e6d77 MT |
248 | |
249 | <div class="col col-lg-4"> | |
8bc72662 | 250 | <h5>Why we need you to donate today</h5> |
a41e6d77 MT |
251 | |
252 | <p> | |
8bc72662 MT |
253 | IP<strong>Fire</strong> has grown to be the backbone of networks in companies, |
254 | schools and homes worldwide. | |
a41e6d77 MT |
255 | </p> |
256 | ||
257 | <p> | |
8bc72662 MT |
258 | It is trusted by many and has proven that free software, developed by a diverse |
259 | community, can not only be equal, but better than proprietary solutions. | |
a41e6d77 MT |
260 | </p> |
261 | ||
262 | <p> | |
8bc72662 MT |
263 | But still, development doesn’t come free to us and therefore |
264 | we are asking for your contribution today. | |
a41e6d77 MT |
265 | </p> |
266 | </div> | |
267 | </div> | |
be02b78f SH |
268 | </div> |
269 | </div> | |
95b30f84 | 270 | |
8bc72662 MT |
271 | <div class="row justify-content-center"> |
272 | <div class="col-10 col-md-5"> | |
273 | <section> | |
274 | <h3>Why should I donate?</h3> | |
275 | ||
276 | <p class="text-muted"> | |
277 | At IPFire, we are working hard to provide you with a free firewall distribution | |
278 | that is like no other. We release updates regularly and enhance functionality | |
279 | to make IPFire more secure, faster and easier to use. | |
280 | </p> | |
281 | ||
282 | <p class="text-muted"> | |
283 | To achieve our high standards that we have set for ourselves, we need your help. | |
284 | ||
285 | Only with your donation, we can get the right tools, people and utilities that | |
286 | we need to make our work most efficient and reach our maximum potential. | |
287 | ||
288 | Only with your donation, we can achieve our vision to make the Internet a safer | |
289 | place that is fair for everyone and giving equal opportunities. | |
290 | </p> | |
291 | </section> | |
292 | ||
293 | <section> | |
294 | <h3>How much should I give?</h3> | |
295 | ||
296 | <p class="text-muted"> | |
297 | We are grateful for every single donation, but of course, we appreciate | |
298 | if you help us as much as you can. | |
299 | </p> | |
300 | ||
301 | <p class="text-muted"> | |
302 | We rely on steady contributions from companies to keep the project healthy | |
303 | and encourage them to set up a monthly donation. | |
304 | </p> | |
305 | </section> | |
306 | </div> | |
a41e6d77 | 307 | |
8bc72662 MT |
308 | <div class="col-10 col-md-5 faq"> |
309 | <h3>Frequently Asked Questions</h3> | |
a41e6d77 | 310 | |
8bc72662 MT |
311 | <p> |
312 | <a data-toggle="collapse" href="#faq-bank-transfer"> | |
313 | Do you accept bank transfer via SEPA? | |
314 | </a> | |
315 | </p> | |
95b30f84 | 316 | |
8bc72662 MT |
317 | <div class="collapse text-muted" id="faq-bank-transfer"> |
318 | <p> | |
319 | We do accept direct transfers through SEPA. These are our bank details: | |
320 | </p> | |
a41e6d77 | 321 | |
8bc72662 MT |
322 | <dl> |
323 | <dt>IBAN</dt> | |
324 | <dd>DE76 3605 0105 1010 8206 84</dd> | |
325 | ||
326 | <dt>BIC</dt> | |
327 | <dd>SPESDE3EXXX</dd> | |
328 | </dl> | |
329 | </div> | |
330 | ||
331 | <p> | |
332 | <a data-toggle="collapse" href="#faq-address"> | |
333 | Why do you need my address in order to process a donation? | |
334 | </a> | |
335 | </p> | |
336 | ||
337 | <div class="collapse text-muted" id="faq-address"> | |
338 | <p> | |
339 | We understand that your privacy is very important. | |
340 | </p> | |
341 | ||
342 | <p> | |
343 | We ask for a minimum amount of information required to process | |
344 | credit card donations, including billing addresses. | |
345 | This allows our payment processor to verify your identity, | |
346 | process your payment, and prevent fraudulent charges to your credit card. | |
347 | </p> | |
348 | ||
349 | <p> | |
350 | We keep your information private - if you have questions, please refer to | |
351 | Lightning Wire Labs' <a href="https://www.lightningwirelabs.com/legal">Privacy Policy</a>. | |
352 | </p> | |
353 | ||
354 | <p> | |
355 | If you would rather not fill in your information on our online donation form, | |
356 | you can send your donation via SEPA bank transfer. | |
357 | </p> | |
358 | </div> | |
359 | ||
360 | <p> | |
361 | <a data-toggle="collapse" href="#faq-tax-deduction"> | |
362 | Is my donation tax deductible? | |
363 | </a> | |
364 | </p> | |
365 | ||
366 | <div class="collapse text-muted" id="faq-tax-deduction"> | |
367 | <p> | |
368 | IPFire is not registered as a charitable organization and therefore donations | |
369 | are not tax deductible in Germany or the European Union. | |
370 | </p> | |
371 | ||
372 | <p> | |
373 | For donors outside of the European Union, please consult your tax advisor | |
374 | about whether your donation is tax deductible. | |
375 | </p> | |
376 | </div> | |
377 | ||
378 | <p> | |
379 | <a data-toggle="collapse" href="#faq-cancel"> | |
380 | How do I cancel or change my recurring donation? | |
381 | </a> | |
382 | </p> | |
383 | ||
384 | <div class="collapse text-muted" id="faq-cancel"> | |
385 | <p> | |
386 | Your credit card statements or bank statements will contain a link | |
387 | that you can follow to cancel your donation at any time. | |
388 | </p> | |
fed291df | 389 | </div> |
a41e6d77 | 390 | |
8bc72662 MT |
391 | <p> |
392 | <a data-toggle="collapse" href="#faq-email"> | |
393 | Who can I email directly with questions about donating? | |
394 | </a> | |
395 | </p> | |
396 | ||
397 | <div class="collapse text-muted" id="faq-email"> | |
398 | <p> | |
399 | If you have a question about donating to the IPFire Project, | |
400 | please contact us at <a href="mailto:donate@ipfire.org">donate@ipfire.org</a>. | |
401 | </p> | |
a41e6d77 MT |
402 | </div> |
403 | </div> | |
7771acea | 404 | </div> |
8bc72662 | 405 | </div> |
95b30f84 MT |
406 | {% end block %} |
407 | ||
408 | {% block javascript %} | |
409 | <script type="text/javascript"> | |
410 | $(document).ready(function() { | |
6d151de3 MT |
411 | var amount = $("input[name='amount']"); |
412 | ||
bd2723d4 MT |
413 | // Adjust form to default currency |
414 | var currency = $("input[name='currency']:checked").val(); | |
415 | if (currency == "EUR") { | |
416 | $(".USD").hide(); | |
417 | } else if (currency == "USD") { | |
418 | $(".EUR").hide(); | |
419 | } | |
95b30f84 MT |
420 | |
421 | $("input[name='currency']").on("change", function() { | |
422 | var currency = $(this).val(); | |
423 | ||
424 | if (currency == "EUR") { | |
425 | $(".EUR").show(); | |
426 | $(".USD").hide(); | |
427 | } else if (currency == "USD") { | |
428 | $(".EUR").hide(); | |
429 | $(".USD").show(); | |
430 | } | |
431 | }); | |
432 | ||
6d151de3 MT |
433 | // Copy amount when clicking on a radio button |
434 | $("input[name='amount-selector']").on("change", function() { | |
435 | var value = $(this).val(); | |
436 | if (value) { | |
437 | amount.val(value); | |
438 | ||
439 | // Clear input field | |
440 | $("input[name='amount-input']").val(""); | |
441 | } | |
442 | }); | |
443 | ||
444 | $("input[name='amount-input']").on("change", function() { | |
445 | var value = $(this).val(); | |
446 | if (value) { | |
447 | amount.val(value); | |
448 | ||
449 | // Uncheck all radio buttons | |
450 | $("input[name='amount-selector']").removeAttr("checked"); | |
451 | $("input[name='amount-selector']").prop("checked", false); | |
452 | } | |
453 | }); | |
454 | ||
95b30f84 | 455 | $("#donate").click(function (event) { |
91e53e2b | 456 | var frequency = $("input[name='frequency']").val(); |
95b30f84 | 457 | |
bd2723d4 | 458 | if (frequency == "one-time") { |
95b30f84 | 459 | event.preventDefault(); |
fedb34bf | 460 | |
95b30f84 MT |
461 | $("#modal-upsell").modal("show"); |
462 | } | |
463 | }); | |
464 | }); | |
465 | </script> | |
f5b55ea7 | 466 | {% end block %} |