mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 15:50:03 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {% extends 'base.html' %}
 | |
| {% comment %}
 | |
| SPDX-License-Identifier: GPL-3.0-or-later
 | |
| {% endcomment %}
 | |
| {% load i18n crispy_forms_tags %}
 | |
| {% block title %}{% trans "Sign up" %}{% endblock %}
 | |
| 
 | |
| {% block content %}
 | |
| <div class="card bg-light">
 | |
|     <h3 class="card-header text-center">
 | |
|         {% trans "Sign up" %}
 | |
|     </h3>
 | |
|     <div class="card-body">
 | |
|         <div class="alert alert-warning">
 | |
|             {% blocktrans trimmed %}
 | |
|             If you already signed up, your registration is taken into account. The BDE must validate
 | |
|             your account before your can log in. You have to go to the Kfet and pay the registration fee. You must also
 | |
|             validate your email address by following the link you received.
 | |
|             {% endblocktrans %}
 | |
|         </div>
 | |
| 
 | |
|         <form method="post" id="profile_form">
 | |
|             {% csrf_token %}
 | |
|             {{ form|crispy }}
 | |
|             {{ profile_form|crispy }}
 | |
|             {% comment "Soge not for membership (only WEI)" %} {{ soge_form|crispy }} {% endcomment %}
 | |
|             <button class="btn btn-success" type="submit">
 | |
|                 {% trans "Sign up" %}
 | |
|             </button>
 | |
|         </form>
 | |
|     </div>
 | |
| </div>
 | |
| {% endblock %}
 | |
| 
 | |
| {% block extrajavascript %}
 | |
| <!-- intl-tel-input CSS/JS -->
 | |
| <script>
 | |
| (() => {
 | |
|     const input = document.querySelector("input[name='phone_number']");
 | |
|     const form = document.querySelector("#profile_form");
 | |
| 
 | |
|     if (!input || !form || input.type === "hidden" || input.disabled || input.readOnly) {
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     const iti = window.intlTelInput(input, {
 | |
|         initialCountry: "auto",
 | |
|         nationalMode: false,
 | |
|         autoPlaceholder: "off",
 | |
|         geoIpLookup: callback => {
 | |
|             fetch("https://ipapi.co/json")
 | |
|                 .then(res => res.json())
 | |
|                 .then(data => callback(data.country_code))
 | |
|                 .catch(() => callback("fr"));
 | |
|         },
 | |
|         loadUtils: () => import("https://cdn.jsdelivr.net/npm/intl-tel-input@25.5.2/build/js/utils.js"),
 | |
|     });
 | |
| 
 | |
|     form.addEventListener("submit", function(e){
 | |
|         if (!input.value.trim()) {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         const number = iti.getNumber(intlTelInput.utils.numberFormat.E164);
 | |
|         if (number) {
 | |
|             input.value = number;
 | |
|             form.submit();
 | |
|         } else {
 | |
|             e.preventDefault();
 | |
|             input.focus();
 | |
|         }
 | |
|     });
 | |
| })();
 | |
| </script>
 | |
| {% endblock %} |