]> git.ipfire.org Git - ipfire.org.git/commitdiff
sponsors: Build controls for the second step
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 13 Dec 2023 16:19:48 +0000 (16:19 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 14 Dec 2023 11:54:49 +0000 (11:54 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/templates/sponsors/next.html [new file with mode: 0644]
src/web/__init__.py
src/web/sponsors.py

index 8c909a7dc798d5b9a6eca29011d1ca439299a206..9d6538151ef3f3c323bd9f56b6aa53b3e22a4b4e 100644 (file)
@@ -306,7 +306,8 @@ templates_people_messagesdir = $(templates_peopledir)/messages
 
 templates_sponsors_DATA = \
        src/templates/sponsors/faq.html \
-       src/templates/sponsors/index.html
+       src/templates/sponsors/index.html \
+       src/templates/sponsors/next.html
 
 templates_sponsorsdir = $(templatesdir)/sponsors
 
diff --git a/src/templates/sponsors/next.html b/src/templates/sponsors/next.html
new file mode 100644 (file)
index 0000000..3594280
--- /dev/null
@@ -0,0 +1,211 @@
+{% extends "../base.html" %}
+
+{% block title %}♥ {{ _("Sponsor Us") }}{% end block %}
+
+{% block container %}
+       {% import iso3166 %}
+
+       <section class="hero is-primary">
+               <div class="hero-body">
+                       <div class="container">
+                               <nav class="breadcrumb" aria-label="breadcrumbs">
+                                       <ul>
+                                               <li>
+                                                       <a href="/">
+                                                               {{ _("Home") }}
+                                                       </a>
+                                               </li>
+                                               <li class="is-active">
+                                                       <a href="#" aria-current="page">♥ {{ _("Sponsor Us") }}</a>
+                                               </li>
+                                       </ul>
+                               </nav>
+
+                               <h1 class="title">{{ _("Thank You For Sponsoring Us") }}</h1>
+                               <h3 class="subtitle">{{ _("We just need to check your details...") }}</h3>
+                       </div>
+               </div>
+       </section>
+
+       <section class="section">
+               <div class="container">
+                       <form method="POST" action="/sponsors/next">
+                               {% raw xsrf_form_html() %}
+
+                               <input type="hidden" name="amount" value="{{ amount }}">
+                               <input type="hidden" name="currency" value="{{ currency }}">
+
+                               <div class="columns">
+                                       <div class="column is-two-thirds">
+                                               <div class="block">
+                                                       <div class="notification">
+                                                               <div class="field">
+                                                                       <label class="label">{{ _("Organization Name") }}</label>
+
+                                                                       <div class="control">
+                                                                               <input class="input" type="text" name="organization"
+                                                                                       placeholder="{{ _("Organization Name (leave empty if you are sponsorsing us as an individual)") }}"
+                                                                                       {% if current_user %}value="{{ current_user.organization }}"{% end %}>
+                                                                       </div>
+
+                                                                       <p class="help">
+                                                                               If you are sponsoring us as an organization, please enter your legal business name.
+                                                                               Otherwise, please leave this box empty.
+                                                                       </p>
+                                                               </div>
+
+                                                               <div class="field">
+                                                                       <label class="label">{{ _("VAT Number") }}</label>
+
+                                                                       <div class="control">
+                                                                               <input class="input" type="text" name="vat_number"
+                                                                                       placeholder="{{ _("VAT Number") }}">
+                                                                       </div>
+
+                                                                       <p class="help">
+                                                                               Please enter your VAT number to ensure accurate processing and compliance with tax regulations.
+                                                                               If you don't have a VAT number, you may proceed without entering one.
+                                                                       </p>
+                                                               </div>
+                                                       </div>
+                                               </div>
+
+                                               <div class="block">
+                                                       {% if not current_user %}
+                                                               <div class="field">
+                                                                       <label class="label">{{ _("Email Address") }}</label>
+                                                                       <div class="control">
+                                                                               <input type="email" class="input" name="email"
+                                                                                       placeholder="{{ _("Email Address") }}" required
+                                                                                       {% if current_user %}value="{{ current_user.email }}"{% end %}>
+                                                                       </div>
+                                                               </div>
+                                                       {% end %}
+
+                                                       <div class="columns">
+                                                               <div class="column">
+                                                                       <div class="field">
+                                                                               <label class="label">{{ _("First Name") }}</label>
+
+                                                                               <div class="control">
+                                                                                       <input type="text" class="input" name="first_name"
+                                                                                               placeholder="{{ _("First Name" )}}" required
+                                                                                               {% if current_user %}value="{{ current_user.first_name }}"{% end %}>
+                                                                               </div>
+                                                                       </div>
+                                                               </div>
+
+                                                               <div class="column">
+                                                                       <div class="field">
+                                                                               <label class="label">{{ _("Last Name") }}</label>
+
+                                                                               <div class="control">
+                                                                                       <input type="text" class="input" name="last_name"
+                                                                                               placeholder="{{ _("Last Name" )}}" required
+                                                                                               {% if current_user %}value="{{ current_user.last_name }}"{% end %}>
+                                                                               </div>
+                                                                       </div>
+                                                               </div>
+                                                       </div>
+
+                                                       {% set lines = current_user.street.splitlines() if current_user and current_user.street else [] %}
+
+                                                       <div class="field">
+                                                               <label class="label">{{ _("Address") }}</label>
+
+                                                               <div class="control">
+                                                                       <input type="text" class="input" name="street1"
+                                                                               placeholder="{{ _("Address Line 1") }}" required
+                                                                               {% if lines %}value="{{ lines[0] }}"{% end %}>
+                                                               </div>
+                                                       </div>
+
+                                                       <div class="field">
+                                                               <div class="control">
+                                                                       <input type="text" class="input" name="street2"
+                                                                               placeholder="{{ _("Address Line 2") }}"
+                                                                               {% if lines and len(lines) > 1 %}value="{{ lines[1] }}"{% end %}>
+                                                               </div>
+                                                       </div>
+
+                                                       <div class="columns">
+                                                               <div class="column">
+                                                                       <div class="field">
+                                                                               <label class="label">{{ _("City") }}</label>
+
+                                                                               <div class="control">
+                                                                                       <input type="text" class="input" name="city"
+                                                                                               placeholder="{{ _("City") }}" required
+                                                                                               {% if current_user %}value="{{ current_user.city }}"{% end %}>
+                                                                               </div>
+                                                                       </div>
+                                                               </div>
+
+                                                               <div class="column">
+                                                                       <div class="field">
+                                                                               <label class="label">{{ _("Post Code") }}</label>
+
+                                                                               <div class="control">
+                                                                                       <input type="text" class="input" name="post_code"
+                                                                                               placeholder="{{ _("Post Code") }}" required
+                                                                                               {% if current_user %}value="{{ current_user.postal_code }}"{% end %}>
+                                                                               </div>
+                                                                       </div>
+                                                               </div>
+                                                       </div>
+
+                                                       <div class="columns">
+                                                               <div class="column">
+                                                                       <div class="field">
+                                                                               <label class="label">{{ _("Country") }}</label>
+
+                                                                               <div class="control">
+                                                                                       <div class="select">
+                                                                                               <select name="country_code" required>
+                                                                                                       <option value="">- {{ _("Please Select") }} -</option>
+
+                                                                                                       {% for c in iso3166.countries %}
+                                                                                                               <option value="{{ c.alpha2 }}"
+                                                                                                                       {% if current_user and current_user.country_code == c.alpha2 %}selected{% end %}
+                                                                                                                       >{{ c.name }}</option>
+                                                                                                       {% end %}
+                                                                                               </select>
+                                                                                       </div>
+                                                                               </div>
+                                                                       </div>
+                                                               </div>
+
+                                                               <div class="column">
+                                                                       <div class="field">
+                                                                               <label class="label">{{ _("State") }}</label>
+
+                                                                               <div class="control">
+                                                                                       <input type="text" class="input" name="state"
+                                                                                               placeholder="{{ _("State (optional)") }}">
+                                                                               </div>
+                                                                       </div>
+                                                               </div>
+                                                       </div>
+
+                                                       <div class="field">
+                                                               <div class="control">
+                                                                       <input type="submit" class="button is-primary is-fullwidth is-medium"
+                                                                               value="♥ {{ _("Sponsor Now") }}">
+                                                               </div>
+                                                       </div>
+                                               </div>
+                                       </div>
+
+                                       <div class="column">
+                                               <div class="notification has-text-centered">
+                                                       <h5 class="title is-5">{{ _("Thank You For Sponsoring") }}</h5>
+
+                                                       <h3 class="title is-3">{{ format_money(amount, currency) }}</h3>
+                                                       <h6 class="subtitle is-6">{{ _("per month") }}</h5>
+                                               </div>
+                                       </div>
+                               </div>
+                       </form>
+               </div>
+       </section>
+{% end block %}
index 3ef088b9131c7dde83d8b92636e3ffc4ac53d7d0..2a0f98ef30ab0947b0b3cdc4886f414e5d708cdb 100644 (file)
@@ -184,6 +184,7 @@ class Application(tornado.web.Application):
                        # Sponsors
                        (r"/sponsors", sponsors.IndexHandler),
                        (r"/sponsors/faq", sponsors.FAQHandler),
+                       (r"/sponsors/next", sponsors.NextHandler),
 
                        # Single-Sign-On for Discourse
                        (r"/sso/discourse", auth.SSODiscourse),
index 5eb64f7f72d9ef45a396c8184c085860862daf61..e2e48b6c6026305d021ecd5330cb0171f68fde1b 100644 (file)
@@ -27,6 +27,14 @@ class IndexHandler(base.BaseHandler):
                self.render("sponsors/index.html", currency=currency)
 
 
+class NextHandler(base.BaseHandler):
+       def get(self):
+               amount   = self.get_argument_float("amount")
+               currency = self.get_argument("currency")
+
+               self.render("sponsors/next.html", amount=amount, currency=currency)
+
+
 class FAQHandler(base.BaseHandler):
        def get(self):
                self.render("sponsors/faq.html")