232 lines
12 KiB
HTML
232 lines
12 KiB
HTML
{% extends "base.html" %}
|
|
{% load i18n static%}
|
|
|
|
{% block content %}
|
|
|
|
<div class="row g-3">
|
|
<div class="col-sm-6 col-md-8">
|
|
<h2>{% if form.instance.pk %}{{ _("Edit Lead") }}{% else %}{{ _("Add New Lead") }}{% endif %}</h2>
|
|
</div>
|
|
<div class="col-sm-6 col-md-8">
|
|
<form class="row g-3 form" method="post" action="{% url 'lead_create' %}">
|
|
{% csrf_token %}
|
|
<!-- Title -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<select class="form-control" id="{{ form.title.id_for_label }}" name="{{ form.title.name }}">
|
|
{% for value, label in form.title.field.choices %}
|
|
<option value="{{ value }}" {% if form.title.value == value %}selected{% endif %}>{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
<label for="{{ form.title.id_for_label }}">{{ _("Title") }}</label>
|
|
</div>
|
|
{{ form.title.errors }}
|
|
</div>
|
|
|
|
<!-- First Name -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<input type="text" class="form-control" id="{{ form.first_name.id_for_label }}" name="{{ form.first_name.name }}" value="{{ form.first_name.value|default:'' }}" placeholder="{{ _('Enter first name') }}">
|
|
<label for="{{ form.first_name.id_for_label }}">{{ _("First Name") }}</label>
|
|
</div>
|
|
{{ form.first_name.errors }}
|
|
</div>
|
|
|
|
<!-- Last Name -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<input type="text" class="form-control" id="{{ form.last_name.id_for_label }}" name="{{ form.last_name.name }}" value="{{ form.last_name.value|default:'' }}" placeholder="{{ _('Enter last name') }}">
|
|
<label for="{{ form.last_name.id_for_label }}">{{ _("Last Name") }}</label>
|
|
</div>
|
|
{{ form.last_name.errors }}
|
|
</div>
|
|
|
|
<!-- Email -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<input type="email" class="form-control" id="{{ form.email.id_for_label }}" name="{{ form.email.name }}" value="{{ form.email.value|default:'' }}" placeholder="{{ _('Enter email') }}">
|
|
<label for="{{ form.email.id_for_label }}">{{ _("Email") }}</label>
|
|
</div>
|
|
{{ form.email.errors }}
|
|
</div>
|
|
|
|
<!-- Phone Number -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<input type="text" class="form-control" id="{{ form.phone_number.id_for_label }}" name="{{ form.phone_number.name }}" value="{{ form.phone_number.value|default:'' }}" placeholder="{{ _('Enter phone number') }}">
|
|
<label for="{{ form.phone_number.id_for_label }}">{{ _("Phone Number") }}</label>
|
|
</div>
|
|
{{ form.phone_number.errors }}
|
|
</div>
|
|
|
|
<!-- Salary -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<input type="number" class="form-control" id="{{ form.salary.id_for_label }}" name="{{ form.salary.name }}" value="{{ form.salary.value|default:'' }}" placeholder="{{ _('Enter salary') }}">
|
|
<label for="{{ form.salary.id_for_label }}">{{ _("Salary") }}</label>
|
|
</div>
|
|
{{ form.salary.errors }}
|
|
</div>
|
|
|
|
<!-- Obligations -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<input type="number" class="form-control" id="{{ form.obligations.id_for_label }}" name="{{ form.obligations.name }}" value="{{ form.obligations.value|default:'' }}" placeholder="{{ _('Enter obligations') }}">
|
|
<label for="{{ form.obligations.id_for_label }}">{{ _("Obligations") }}</label>
|
|
</div>
|
|
{{ form.obligations.errors }}
|
|
</div>
|
|
|
|
<!-- Car Make -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<select class="form-select form-select-sm" id="{{ form.id_car_make.id_for_label }}" name="{{ form.id_car_make.name }}">
|
|
{% for value, label in form.id_car_make.field.choices %}
|
|
<option value="{{ value }}" {% if form.id_car_make.value == value %}selected{% endif %}>{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
<label for="{{ form.id_car_make.id_for_label }}">{{ _("Car Make") }}</label>
|
|
</div>
|
|
{{ form.id_car_make.errors }}
|
|
</div>
|
|
|
|
<!-- Car Model -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<select class="form-select form-select-sm" id="{{ form.id_car_model.id_for_label }}" name="{{ form.id_car_model.name }}">
|
|
{% for value, label in form.id_car_model.field.choices %}
|
|
<option value="{{ value }}" {% if form.id_car_model.value == value %}selected{% endif %}>{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
<label for="{{ form.id_car_model.id_for_label }}">{{ _("Car Make") }}</label>
|
|
</div>
|
|
{{ form.id_car_model.errors }}
|
|
</div>
|
|
|
|
<!-- Year -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<input type="number" class="form-control" id="{{ form.year.id_for_label }}" name="{{ form.year.name }}" value="{{ form.year.value|default:'' }}" placeholder="{{ _('Enter year') }}">
|
|
<label for="{{ form.year.id_for_label }}">{{ _("Year") }}</label>
|
|
</div>
|
|
{{ form.year.errors }}
|
|
</div>
|
|
|
|
<!-- Source -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<select class="form-control" id="{{ form.source.id_for_label }}" name="{{ form.source.name }}">
|
|
{% for value, label in form.source.field.choices %}
|
|
<option value="{{ value }}" {% if form.source.value == value %}selected{% endif %}>{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
<label for="{{ form.source.id_for_label }}">{{ _("Source") }}</label>
|
|
</div>
|
|
{{ form.source.errors }}
|
|
</div>
|
|
|
|
<!-- Channel -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<select class="form-control" id="{{ form.channel.id_for_label }}" name="{{ form.channel.name }}">
|
|
{% for value, label in form.channel.field.choices %}
|
|
<option value="{{ value }}" {% if form.channel.value == value %}selected{% endif %}>{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
<label for="{{ form.channel.id_for_label }}">{{ _("Channel") }}</label>
|
|
</div>
|
|
{{ form.channel.errors }}
|
|
</div>
|
|
|
|
<!-- Assigned -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<select class="form-control" id="{{ form.assigned.id_for_label }}" name="{{ form.assigned.name }}">
|
|
{% for value, label in form.assigned.field.choices %}
|
|
<option value="{{ value }}" {% if form.assigned.value == value %}selected{% endif %}>{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
<label for="{{ form.assigned.id_for_label }}">{{ _("Assigned To") }}</label>
|
|
</div>
|
|
{{ form.assigned.errors }}
|
|
</div>
|
|
|
|
<!-- Priority -->
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="form-floating">
|
|
<select class="form-control" id="{{ form.priority.id_for_label }}" name="{{ form.priority.name }}">
|
|
{% for value, label in form.priority.field.choices %}
|
|
<option value="{{ value }}" {% if form.priority.value == value %}selected{% endif %}>{{ label }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
<label for="{{ form.priority.id_for_label }}">{{ _("Priority") }}</label>
|
|
</div>
|
|
{{ form.priority.errors }}
|
|
</div>
|
|
<div class="col-sm-12">
|
|
<button type="submit" name="add_lead" id="lead-save" class="btn btn-phoenix-primary">{{ _("Save") }}</button>
|
|
<a href="{% url 'lead_list' %}" class="btn btn-phoenix-secondary">{{ _("Cancel") }}</a>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
|
|
function getCookie(name) {
|
|
let cookieValue = null;
|
|
if (document.cookie && document.cookie !== "") {
|
|
const cookies = document.cookie.split(";");
|
|
for (let cookie of cookies) {
|
|
cookie = cookie.trim();
|
|
if (cookie.substring(0, name.length + 1) === name + "=") {
|
|
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return cookieValue;
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
const ajaxUrl = "{% url 'ajax_handler' %}";
|
|
const makeSelect = document.getElementById("{{ form.id_car_make.id_for_label }}");
|
|
const modelSelect = document.getElementById("{{ form.id_car_model.id_for_label }}");
|
|
const csrfToken = getCookie("csrftoken");
|
|
|
|
function resetDropdown(dropdown, placeholder) {
|
|
dropdown.innerHTML = `<option value="">${placeholder}</option>`;
|
|
}
|
|
|
|
async function loadModels(makeId) {
|
|
resetDropdown(modelSelect, '{% trans "Select" %}');
|
|
const response = await fetch(`${ajaxUrl}?action=get_models&make_id=${makeId}`, {
|
|
headers: {
|
|
"X-CSRFToken": csrfToken,
|
|
"X-Requested-With": "XMLHttpRequest",
|
|
},
|
|
});
|
|
const data = await response.json();
|
|
data.forEach((model) => {
|
|
const option = document.createElement("option");
|
|
option.value = model.id_car_model;
|
|
option.textContent = document.documentElement.lang === "en" ? model.name : model.arabic_name;
|
|
modelSelect.appendChild(option);
|
|
});
|
|
}
|
|
|
|
// AJAX logic: Load models when car make changes
|
|
makeSelect.addEventListener("change", () => {
|
|
const make_id = makeSelect.value;
|
|
if (make_id) loadModels(make_id);
|
|
});
|
|
|
|
// Ensure the form submits normally
|
|
document.querySelector("form").addEventListener("submit", (event) => {
|
|
// Do not call event.preventDefault() here unless you handle form submission manually
|
|
console.log("Form submitted normally"); // Debugging
|
|
});
|
|
});
|
|
|
|
</script>
|
|
{% endblock %} |