2026-01-24 03:47:20 +00:00

138 lines
7.2 KiB
HTML

{% extends "base.html" %}
{% load i18n %}
{% block content %}
<section class="py-5">
<div class="container">
<div class="mb-4">
<a href="/" class="btn btn-outline-secondary btn-sm">
<i class="fa-solid fa-arrow-left me-1"></i> {% trans "Back to Home" %}
</a>
</div>
<div class="row justify-content-center">
<div class="col-md-6">
<div class="card shadow">
<div class="card-body p-5">
<h2 class="text-center mb-4">{% trans "Create your account" %}</h2>
<form method="post" novalidate id="registrationForm">
{% csrf_token %}
{% if form.non_field_errors %}
<div class="alert alert-danger">
{% for error in form.non_field_errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
{% for field in form %}
{% if field.name == 'country_code' %}
<div class="mb-3">
<label class="form-label">{% trans "Phone Number" %}</label>
<div class="input-group">
<span class="input-group-text">+</span>
<div class="flex-grow-0" style="min-width: 150px;">
{{ form.country_code }}
</div>
{{ form.phone_number }}
</div>
{% if form.phone_number.errors or form.country_code.errors %}
<div class="text-danger small">
{% for error in form.country_code.errors %}{{ error }} {% endfor %}
{% for error in form.phone_number.errors %}{{ error }} {% endfor %}
</div>
{% endif %}
<div class="form-text text-muted small">{% trans "Select country and enter phone number." %}</div>
</div>
{% elif field.name == 'phone_number' %}
{# Handled above #}
{% elif field.name == 'subscription_plan' %}
{% if subscription_enabled %}
<div class="mb-3">
<label class="form-label" for="{{ field.id_for_label }}">{{ field.label }}</label>
{{ field }}
{% if field.errors %}
{% for error in field.errors %}
<div class="text-danger small">{{ error }}</div>
{% endfor %}
{% endif %}
</div>
{% endif %}
{% elif field.name == 'accept_terms' %}
<div class="mb-3 form-check">
{{ field }}
<label class="form-check-label small" for="{{ field.id_for_label }}">
{% trans "I have read and agree to the" %}
<a href="{% url 'terms_of_service' %}" target="_blank">{% trans "Terms of Service" %}</a>
{% trans "and" %}
<a href="{% url 'privacy_policy' %}" target="_blank">{% trans "Privacy Policy" %}</a>
</label>
{% if field.errors %}
{% for error in field.errors %}
<div class="text-danger small">{{ error }}</div>
{% endfor %}
{% endif %}
</div>
{% else %}
<div class="mb-3">
<label class="form-label" for="{{ field.id_for_label }}">{{ field.label }}</label>
{{ field }}
{% if field.help_text %}
<div class="form-text text-muted small">{{ field.help_text|safe }}</div>
{% endif %}
{% if field.errors %}
{% for error in field.errors %}
<div class="text-danger small">{{ error }}</div>
{% endfor %}
{% endif %}
</div>
{% endif %}
{% endfor %}
<button type="submit" class="btn btn-primary w-100 py-2 mt-3">{% trans "Register" %}</button>
</form>
<div class="text-center mt-3">
<p>{% trans "Already have an account?" %} <a href="{% url 'login' %}">{% trans "Login" %}</a></p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
{% if subscription_enabled %}
<script>
document.addEventListener('DOMContentLoaded', function() {
const roleSelect = document.querySelector('select[name="role"]');
const planSelect = document.querySelector('select[name="subscription_plan"]');
const fees = {{ fees_json|safe }};
const monthlyLabel = "{% trans 'Monthly Plan' %}";
const annualLabel = "{% trans 'Annual Plan' %}";
function updateFees() {
const role = roleSelect.value;
const roleFees = fees[role];
if (roleFees) {
for (let option of planSelect.options) {
if (option.value === 'MONTHLY') {
option.text = `${monthlyLabel} (${roleFees.MONTHLY})`;
} else if (option.value === 'ANNUAL') {
option.text = `${annualLabel} (${roleFees.ANNUAL})`;
}
}
}
}
if (roleSelect && planSelect) {
roleSelect.addEventListener('change', updateFees);
updateFees(); // Initialize
}
});
</script>
{% endif %}
{% endblock %}