update
This commit is contained in:
parent
9549213a09
commit
e497f1083a
@ -20,10 +20,10 @@ def get_gpt4_response(user_input, dealer):
|
|||||||
dealer = dealer
|
dealer = dealer
|
||||||
client = OpenAI(api_key=settings.OPENAI_API_KEY)
|
client = OpenAI(api_key=settings.OPENAI_API_KEY)
|
||||||
|
|
||||||
if "سيارة في المخزون" in user_input.lower():
|
# if "سيارة في المخزون" in user_input.lower():
|
||||||
# cars = user_input.split("how many cars")[-1].strip()
|
# # cars = user_input.split("how many cars")[-1].strip()
|
||||||
car_data = fetch_data(dealer)
|
# car_data = fetch_data(dealer)
|
||||||
user_input += f" Relevant car data: {car_data}"
|
# user_input += f" Relevant car data: {car_data}"
|
||||||
try:
|
try:
|
||||||
completion = client.chat.completions.create(
|
completion = client.chat.completions.create(
|
||||||
model="gpt-4o",
|
model="gpt-4o",
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -567,7 +567,7 @@ class EmailForm(forms.Form):
|
|||||||
from_email = forms.EmailField()
|
from_email = forms.EmailField()
|
||||||
to_email = forms.EmailField(label="To")
|
to_email = forms.EmailField(label="To")
|
||||||
|
|
||||||
class LeadForm(forms.ModelForm):
|
class LeadCreateForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Lead
|
model = Lead
|
||||||
fields = ['title',
|
fields = ['title',
|
||||||
@ -588,7 +588,6 @@ class LeadForm(forms.ModelForm):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
dealer = kwargs.pop("dealer", None)
|
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
if "id_car_make" in self.fields:
|
if "id_car_make" in self.fields:
|
||||||
@ -597,6 +596,34 @@ class LeadForm(forms.ModelForm):
|
|||||||
(obj.id_car_make, obj.get_local_name()) for obj in queryset
|
(obj.id_car_make, obj.get_local_name()) for obj in queryset
|
||||||
]
|
]
|
||||||
|
|
||||||
|
class LeadUpdateForm(forms.ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = Lead
|
||||||
|
fields = ['title',
|
||||||
|
'first_name',
|
||||||
|
'last_name',
|
||||||
|
'email',
|
||||||
|
'phone_number',
|
||||||
|
'city',
|
||||||
|
'salary',
|
||||||
|
'obligations',
|
||||||
|
'id_car_make',
|
||||||
|
'id_car_model',
|
||||||
|
'year',
|
||||||
|
'source',
|
||||||
|
'channel',
|
||||||
|
'assigned',
|
||||||
|
'priority',
|
||||||
|
]
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
if "id_car_make" in self.fields:
|
||||||
|
queryset = self.fields["id_car_make"].queryset.filter(is_sa_import=True)
|
||||||
|
self.fields["id_car_make"].choices = [
|
||||||
|
(obj.id_car_make, obj.get_local_name()) for obj in queryset
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class NoteForm(forms.ModelForm):
|
class NoteForm(forms.ModelForm):
|
||||||
|
|||||||
@ -707,7 +707,7 @@ class Staff(models.Model, LocalizedNameMixin):
|
|||||||
permissions = []
|
permissions = []
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.name} - {self.get_staff_type_display()}"
|
return f"{self.name}"
|
||||||
|
|
||||||
|
|
||||||
class Sources(models.TextChoices):
|
class Sources(models.TextChoices):
|
||||||
|
|||||||
@ -36,8 +36,8 @@ def decodevin(vin):
|
|||||||
|
|
||||||
if result:=decode_vin(vin):
|
if result:=decode_vin(vin):
|
||||||
return result
|
return result
|
||||||
elif result:=decode_vin_haikalna(vin):
|
# elif result:=decode_vin_haikalna(vin):
|
||||||
return result
|
# return result
|
||||||
elif result:=elm(vin):
|
elif result:=elm(vin):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|||||||
@ -2380,14 +2380,16 @@ class LeadDetailView(DetailView):
|
|||||||
context['status_history'] = models.LeadStatusHistory.objects.filter(lead=self.object)
|
context['status_history'] = models.LeadStatusHistory.objects.filter(lead=self.object)
|
||||||
return context
|
return context
|
||||||
|
|
||||||
class LeadCreateView(CreateView):
|
class LeadCreateView(CreateView, SuccessMessageMixin, LoginRequiredMixin):
|
||||||
model = models.Lead
|
model = models.Lead
|
||||||
form_class = forms.LeadForm
|
form_class = forms.LeadCreateForm
|
||||||
template_name = 'crm/leads/lead_form.html'
|
template_name = 'crm/leads/lead_create_form.html'
|
||||||
success_message = "Lead created successfully!"
|
success_message = "Lead created successfully!"
|
||||||
success_url = reverse_lazy('lead_list')
|
success_url = reverse_lazy('lead_list')
|
||||||
|
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
print("Form data:", form.cleaned_data) # Debug form data
|
||||||
dealer = get_user_type(self.request)
|
dealer = get_user_type(self.request)
|
||||||
form.instance.dealer = dealer
|
form.instance.dealer = dealer
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
@ -2395,8 +2397,8 @@ class LeadCreateView(CreateView):
|
|||||||
|
|
||||||
class LeadUpdateView(UpdateView):
|
class LeadUpdateView(UpdateView):
|
||||||
model = models.Lead
|
model = models.Lead
|
||||||
form_class = forms.LeadForm
|
form_class = forms.LeadUpdateForm
|
||||||
template_name = 'crm/leads/lead_form.html'
|
template_name = 'crm/leads/lead_update_form.html'
|
||||||
success_url = reverse_lazy('lead_list')
|
success_url = reverse_lazy('lead_list')
|
||||||
|
|
||||||
class LeadDeleteView(DeleteView):
|
class LeadDeleteView(DeleteView):
|
||||||
@ -2450,7 +2452,10 @@ class OpportunityCreateView(CreateView):
|
|||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
dealer = get_user_type(self.request)
|
dealer = get_user_type(self.request)
|
||||||
form.instance.dealer = dealer
|
form.instance.dealer = dealer
|
||||||
form.instance.staff = dealer.staff
|
staff = self.request.user.staff
|
||||||
|
print(dealer)
|
||||||
|
print(staff)
|
||||||
|
form.instance.staff = staff
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
@ -2510,13 +2515,13 @@ def delete_opportunity(request, pk):
|
|||||||
|
|
||||||
class NotificationListView(LoginRequiredMixin, ListView):
|
class NotificationListView(LoginRequiredMixin, ListView):
|
||||||
model = models.Notification
|
model = models.Notification
|
||||||
template_name = "notifications_history.html"
|
template_name = "crm/notifications_history.html"
|
||||||
context_object_name = "notifications"
|
context_object_name = "notifications"
|
||||||
paginate_by = 10
|
paginate_by = 10
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return models.Notification.objects.filter(user=self.request.user).order_by(
|
return models.Notification.objects.filter(user=self.request.user).order_by(
|
||||||
"-created_at"
|
"-created"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -2533,12 +2538,12 @@ def mark_notification_as_read(request, pk):
|
|||||||
def fetch_notifications(request):
|
def fetch_notifications(request):
|
||||||
notifications = models.Notification.objects.filter(
|
notifications = models.Notification.objects.filter(
|
||||||
user=request.user, is_read=False
|
user=request.user, is_read=False
|
||||||
).order_by("-created_at")
|
).order_by("-created")
|
||||||
notifications_data = [
|
notifications_data = [
|
||||||
{
|
{
|
||||||
"id": notification.id,
|
"id": notification.id,
|
||||||
"message": notification.message,
|
"message": notification.message,
|
||||||
"created_at": notification.created_at.strftime("%Y-%m-%d %H:%M:%S"),
|
"created": notification.created.strftime("%Y-%m-%d %H:%M:%S"),
|
||||||
}
|
}
|
||||||
for notification in notifications
|
for notification in notifications
|
||||||
]
|
]
|
||||||
|
|||||||
BIN
static/.DS_Store
vendored
BIN
static/.DS_Store
vendored
Binary file not shown.
BIN
static/flags/.DS_Store
vendored
BIN
static/flags/.DS_Store
vendored
Binary file not shown.
BIN
templates/.DS_Store
vendored
BIN
templates/.DS_Store
vendored
Binary file not shown.
BIN
templates/crm/.DS_Store
vendored
Normal file
BIN
templates/crm/.DS_Store
vendored
Normal file
Binary file not shown.
388
templates/crm/leads/lead_create_form.html
Normal file
388
templates/crm/leads/lead_create_form.html
Normal file
@ -0,0 +1,388 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
{% load i18n static %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="row g-3">
|
||||||
|
<div class="col-sm-12 col-md-8">
|
||||||
|
<h2>
|
||||||
|
{% if form.instance.pk %}
|
||||||
|
{{ _("Edit Lead") }}
|
||||||
|
{% else %}
|
||||||
|
{{ _("Add New Lead") }}
|
||||||
|
{% endif %}
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-12 col-md-8">
|
||||||
|
<!-- The 'novalidate' attribute is removed to allow HTML5 validation.
|
||||||
|
If you prefer manual validation, you can add 'novalidate'. -->
|
||||||
|
<form class="row g-3 form needs-validation" 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 }}"
|
||||||
|
aria-label="{{ _('Title') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<option value="">{{ _('Select Title') }}</option>
|
||||||
|
{% 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>
|
||||||
|
<span class="invalid-feedback">{{ form.title.errors }}</span>
|
||||||
|
</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') }}"
|
||||||
|
aria-label="{{ _('First Name') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<label for="{{ form.first_name.id_for_label }}">{{ _("First Name") }}</label>
|
||||||
|
</div>
|
||||||
|
<span class="invalid-feedback">{{ form.first_name.errors }}</span>
|
||||||
|
</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') }}"
|
||||||
|
aria-label="{{ _('Last Name') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<label for="{{ form.last_name.id_for_label }}">{{ _("Last Name") }}</label>
|
||||||
|
</div>
|
||||||
|
<span class="invalid-feedback">{{ form.last_name.errors }}</span>
|
||||||
|
</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') }}"
|
||||||
|
aria-label="{{ _('Email') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<label for="{{ form.email.id_for_label }}">{{ _("Email") }}</label>
|
||||||
|
</div>
|
||||||
|
<span class="invalid-feedback">{{ form.email.errors }}</span>
|
||||||
|
</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') }}"
|
||||||
|
aria-label="{{ _('Phone Number') }}"
|
||||||
|
pattern="^[+]?[\d\s-]{5,}$"
|
||||||
|
required>
|
||||||
|
<label for="{{ form.phone_number.id_for_label }}">{{ _("Phone Number") }}</label>
|
||||||
|
</div>
|
||||||
|
<span class="invalid-feedback">{{ form.phone_number.errors }}</span>
|
||||||
|
</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') }}"
|
||||||
|
aria-label="{{ _('Salary') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<label for="{{ form.salary.id_for_label }}">{{ _("Salary") }}</label>
|
||||||
|
</div>
|
||||||
|
<span class="invalid-feedback">{{ form.salary.errors }}</span>
|
||||||
|
</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') }}"
|
||||||
|
aria-label="{{ _('Obligations') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<label for="{{ form.obligations.id_for_label }}">{{ _("Obligations") }}</label>
|
||||||
|
</div>
|
||||||
|
<span class="invalid-feedback">{{ form.obligations.errors }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Car Make -->
|
||||||
|
<div class="col-sm-6 col-md-4">
|
||||||
|
<div class="form-floating">
|
||||||
|
<select
|
||||||
|
class="form-select"
|
||||||
|
id="{{ form.id_car_make.id_for_label }}"
|
||||||
|
name="{{ form.id_car_make.name }}"
|
||||||
|
aria-label="{{ _('Car Make') }}">
|
||||||
|
<option value="">{{ _('Select Make') }}</option>
|
||||||
|
{% 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>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Car Model -->
|
||||||
|
<div class="col-sm-6 col-md-4">
|
||||||
|
<div class="form-floating">
|
||||||
|
<select
|
||||||
|
class="form-select"
|
||||||
|
id="{{ form.id_car_model.id_for_label }}"
|
||||||
|
name="{{ form.id_car_model.name }}"
|
||||||
|
aria-label="{{ _('Car Model') }}">
|
||||||
|
<option value="">{{ _('Select Model') }}</option>
|
||||||
|
{% 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 Model") }}</label>
|
||||||
|
</div>
|
||||||
|
</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') }}"
|
||||||
|
aria-label="{{ _('Year') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<label for="{{ form.year.id_for_label }}">{{ _("Year") }}</label>
|
||||||
|
</div>
|
||||||
|
<span class="invalid-feedback">{{ form.year.errors }}</span>
|
||||||
|
</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 }}"
|
||||||
|
aria-label="{{ _('Source') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<option value="">{{ _('Select Source') }}</option>
|
||||||
|
{% 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>
|
||||||
|
<span class="invalid-feedback">{{ form.source.errors }}</span>
|
||||||
|
</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 }}"
|
||||||
|
aria-label="{{ _('Channel') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<option value="">{{ _('Select Channel') }}</option>
|
||||||
|
{% 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>
|
||||||
|
<span class="invalid-feedback">{{ form.channel.errors }}</span>
|
||||||
|
</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 }}"
|
||||||
|
aria-label="{{ _('Assigned To') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<option value="">{{ _('Select Assignee') }}</option>
|
||||||
|
{% 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>
|
||||||
|
<span class="invalid-feedback">{{ form.assigned.errors }}</span>
|
||||||
|
</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 }}"
|
||||||
|
aria-label="{{ _('Priority') }}"
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<option value="">{{ _('Select Priority') }}</option>
|
||||||
|
{% 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>
|
||||||
|
<span class="invalid-feedback">{{ form.priority.errors }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Form Actions -->
|
||||||
|
<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>
|
||||||
|
// Reusable function to get the CSRF cookie
|
||||||
|
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");
|
||||||
|
|
||||||
|
// Helper function to reset the dropdown
|
||||||
|
function resetDropdown(dropdown, placeholder) {
|
||||||
|
dropdown.innerHTML = `<option value="">${placeholder}</option>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load car models based on make
|
||||||
|
async function loadModels(makeId) {
|
||||||
|
// Show a temporary loading message
|
||||||
|
resetDropdown(modelSelect, "{{ _('Loading...') }}");
|
||||||
|
try {
|
||||||
|
const response = await fetch(`${ajaxUrl}?action=get_models&make_id=${makeId}`, {
|
||||||
|
headers: {
|
||||||
|
"X-CSRFToken": csrfToken,
|
||||||
|
"X-Requested-With": "XMLHttpRequest",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const data = await response.json();
|
||||||
|
|
||||||
|
// Reset dropdown before populating
|
||||||
|
resetDropdown(modelSelect, "{{ _('Select Model') }}");
|
||||||
|
data.forEach((model) => {
|
||||||
|
const option = document.createElement("option");
|
||||||
|
option.value = model.id_car_model;
|
||||||
|
// Display name based on language
|
||||||
|
option.textContent = document.documentElement.lang === "en" ? model.name : model.arabic_name;
|
||||||
|
modelSelect.appendChild(option);
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error loading models:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// When car make changes, load corresponding models
|
||||||
|
makeSelect.addEventListener("change", () => {
|
||||||
|
const make_id = makeSelect.value;
|
||||||
|
if (make_id) {
|
||||||
|
loadModels(make_id);
|
||||||
|
} else {
|
||||||
|
resetDropdown(modelSelect, "{{ _('Select Model') }}");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Debug normal form submission
|
||||||
|
document.querySelector("form").addEventListener("submit", (event) => {
|
||||||
|
// If you'd like to handle the form manually, uncomment the next line:
|
||||||
|
// event.preventDefault();
|
||||||
|
console.log("Form submitted normally");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
@ -2,8 +2,8 @@
|
|||||||
{% load i18n static %}
|
{% load i18n static %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="pb-9">
|
|
||||||
<div class="row">
|
<div class="row g-3">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div class="row align-items-center justify-content-between g-3 mb-3">
|
<div class="row align-items-center justify-content-between g-3 mb-3">
|
||||||
<div class="col-12 col-md-auto">
|
<div class="col-12 col-md-auto">
|
||||||
@ -12,17 +12,9 @@
|
|||||||
<div class="col-12 col-md-auto">
|
<div class="col-12 col-md-auto">
|
||||||
<div class="d-flex">
|
<div class="d-flex">
|
||||||
<div class="flex-1 d-md-none">
|
<div class="flex-1 d-md-none">
|
||||||
<button class="btn px-3 btn-phoenix-secondary text-body-tertiary me-2" data-phoenix-toggle="offcanvas" data-phoenix-target="#productFilterColumn"><span class="fa-solid fa-bars"></span></button>
|
<button class="btn px-3 btn-phoenix-secondary text-body-tertiary me-2"><span class="fa-solid fa-bars"></span></button>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-primary me-2"><span class="fa-solid fa-envelope me-2"></span><span>Send an email</span></button>
|
|
||||||
<button class="btn btn-phoenix-secondary px-3 px-sm-5 me-2"><span class="fa-solid fa-thumbtack me-sm-2"></span><span class="d-none d-sm-inline">Shortlist</span></button>
|
|
||||||
<button class="btn px-3 btn-phoenix-secondary" type="button" data-bs-toggle="dropdown" data-boundary="window" aria-haspopup="true" aria-expanded="false" data-bs-reference="parent"><span class="fa-solid fa-ellipsis"></span></button>
|
|
||||||
<ul class="dropdown-menu dropdown-menu-end p-0" style="z-index: 9999;">
|
|
||||||
<li><a class="dropdown-item" href="#!">View profile</a></li>
|
|
||||||
<li><a class="dropdown-item" href="#!">Report</a></li>
|
|
||||||
<li><a class="dropdown-item" href="#!">Manage notifications</a></li>
|
|
||||||
<li><a class="dropdown-item text-danger" href="#!">Delete Lead</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -31,10 +23,10 @@
|
|||||||
<div class="row g-0 g-md-4 g-xl-6">
|
<div class="row g-0 g-md-4 g-xl-6">
|
||||||
<div class="col-md-5 col-lg-5 col-xl-4">
|
<div class="col-md-5 col-lg-5 col-xl-4">
|
||||||
<div class="sticky-leads-sidebar">
|
<div class="sticky-leads-sidebar">
|
||||||
<div class="lead-details-offcanvas bg-body scrollbar phoenix-offcanvas phoenix-offcanvas-fixed" data-breakpoint="md">
|
<div class="lead-details" data-breakpoint="md">
|
||||||
<div class="d-flex justify-content-between align-items-center mb-2 d-md-none">
|
<div class="d-flex justify-content-between align-items-center mb-2 d-md-none">
|
||||||
<h3 class="mb-0">{{ _("Lead Details")}}</h3>
|
<h3 class="mb-0">{{ _("Lead Details")}}</h3>
|
||||||
<button class="btn p-0" data-phoenix-dismiss="offcanvas"><span class="uil uil-times fs-7"></span></button>
|
<button class="btn p-0" ><span class="uil uil-times fs-7"></span></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
@ -127,7 +119,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="phoenix-offcanvas-backdrop d-lg-none top-0" data-phoenix-backdrop="data-phoenix-backdrop"></div>
|
<div class="d-lg-none top-0"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-7 col-lg-7 col-xl-8">
|
<div class="col-md-7 col-lg-7 col-xl-8">
|
||||||
@ -238,12 +230,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"Quary about purchased soccer socks","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 29, 2021 10:23 am","source":"Call","type_status":{"label":"sent","type":"badge-phoenix-success"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"Quary about purchased soccer socks","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 29, 2021 10:23 am","source":"Call","type_status":{"label":"sent","type":"badge-phoenix-success"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">Quary about purchased soccer socks</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">Quary about purchased soccer socks</a>
|
||||||
<div class="fs-10 d-block">jackson@mail.com</div>
|
<div class="fs-10 d-block">jackson@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 29, 2021 10:23 am</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 29, 2021 10:23 am</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -252,12 +244,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"How to take the headache out of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 27, 2021 3:27 pm","source":"Call","type_status":{"label":"delivered","type":"badge-phoenix-info"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"How to take the headache out of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 27, 2021 3:27 pm","source":"Call","type_status":{"label":"delivered","type":"badge-phoenix-info"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">How to take the headache out of Order</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">How to take the headache out of Order</a>
|
||||||
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 27, 2021 3:27 pm</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 27, 2021 3:27 pm</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-info">delivered</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-info">delivered</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -266,12 +258,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"The Arnold Schwarzenegger of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 24, 2021 10:44 am","source":"Call","type_status":{"label":"Bounce","type":"badge-phoenix-warning"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"The Arnold Schwarzenegger of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 24, 2021 10:44 am","source":"Call","type_status":{"label":"Bounce","type":"badge-phoenix-warning"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">The Arnold Schwarzenegger of Order</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">The Arnold Schwarzenegger of Order</a>
|
||||||
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 24, 2021 10:44 am</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 24, 2021 10:44 am</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-warning">Bounce</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-warning">Bounce</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -280,12 +272,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"My order is not being taken","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 4:55 pm","source":"Call","type_status":{"label":"Spam","type":"badge-phoenix-danger"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"My order is not being taken","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 4:55 pm","source":"Call","type_status":{"label":"Spam","type":"badge-phoenix-danger"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">My order is not being taken</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">My order is not being taken</a>
|
||||||
<div class="fs-10 d-block">jackson@mail.com</div>
|
<div class="fs-10 d-block">jackson@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 4:55 pm</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 4:55 pm</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-danger">Spam</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-danger">Spam</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -294,12 +286,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"Shipment is missing","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 2:43 pm","source":"Call","type_status":{"label":"sent","type":"badge-phoenix-success"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"Shipment is missing","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 2:43 pm","source":"Call","type_status":{"label":"sent","type":"badge-phoenix-success"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">Shipment is missing</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">Shipment is missing</a>
|
||||||
<div class="fs-10 d-block">jackson@mail.com</div>
|
<div class="fs-10 d-block">jackson@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 2:43 pm</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 2:43 pm</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -308,12 +300,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"How can I order something urgently?","email":"ansolo45@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 2:43 pm","source":"Call","type_status":{"label":"Delivered","type":"badge-phoenix-info"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"How can I order something urgently?","email":"ansolo45@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 2:43 pm","source":"Call","type_status":{"label":"Delivered","type":"badge-phoenix-info"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">How can I order something urgently?</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">How can I order something urgently?</a>
|
||||||
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 2:43 pm</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 2:43 pm</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-info">Delivered</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-info">Delivered</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -322,12 +314,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"How the delicacy of the products will be handled?","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 16, 2021 5:18 pm","source":"Call","type_status":{"label":"bounced","type":"badge-phoenix-warning"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"How the delicacy of the products will be handled?","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 16, 2021 5:18 pm","source":"Call","type_status":{"label":"bounced","type":"badge-phoenix-warning"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">How the delicacy of the products will be handled?</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">How the delicacy of the products will be handled?</a>
|
||||||
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 16, 2021 5:18 pm</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 16, 2021 5:18 pm</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-warning">bounced</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-warning">bounced</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@ -335,7 +327,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row align-items-center justify-content-between py-2 pe-0 fs-9">
|
<div class="row align-items-center justify-content-between py-2 pe-0 fs-9">
|
||||||
<div class="col-auto d-flex">
|
<div class="col-auto d-flex">
|
||||||
<p class="mb-0 d-none d-sm-block me-3 fw-semibold text-body" data-list-info="data-list-info"></p><a class="fw-semibold" href="#!" data-list-view="*">View all<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="#!" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
<p class="mb-0 d-none d-sm-block me-3 fw-semibold text-body" data-list-info="data-list-info"></p><a class="fw-semibold" href="" data-list-view="*">View all<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto d-flex">
|
<div class="col-auto d-flex">
|
||||||
<button class="page-link" data-list-pagination="prev"><span class="fas fa-chevron-left"></span></button>
|
<button class="page-link" data-list-pagination="prev"><span class="fas fa-chevron-left"></span></button>
|
||||||
@ -370,12 +362,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"Quary about purchased soccer socks","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 29, 2021 10:23 am","source":"Call","type_status":{"label":"sent","type":"badge-phoenix-success"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"Quary about purchased soccer socks","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 29, 2021 10:23 am","source":"Call","type_status":{"label":"sent","type":"badge-phoenix-success"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">Quary about purchased soccer socks</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">Quary about purchased soccer socks</a>
|
||||||
<div class="fs-10 d-block">jackson@mail.com</div>
|
<div class="fs-10 d-block">jackson@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 29, 2021 10:23 am</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 29, 2021 10:23 am</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -384,12 +376,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"How to take the headache out of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 27, 2021 3:27 pm","source":"Call","type_status":{"label":"delivered","type":"badge-phoenix-info"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"How to take the headache out of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 27, 2021 3:27 pm","source":"Call","type_status":{"label":"delivered","type":"badge-phoenix-info"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">How to take the headache out of Order</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">How to take the headache out of Order</a>
|
||||||
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 27, 2021 3:27 pm</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 27, 2021 3:27 pm</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-info">delivered</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-info">delivered</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -398,12 +390,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"The Arnold Schwarzenegger of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 24, 2021 10:44 am","source":"Call","type_status":{"label":"Bounce","type":"badge-phoenix-warning"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"The Arnold Schwarzenegger of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 24, 2021 10:44 am","source":"Call","type_status":{"label":"Bounce","type":"badge-phoenix-warning"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">The Arnold Schwarzenegger of Order</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">The Arnold Schwarzenegger of Order</a>
|
||||||
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 24, 2021 10:44 am</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 24, 2021 10:44 am</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-warning">Bounce</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-warning">Bounce</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -412,12 +404,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"My order is not being taken","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 4:55 pm","source":"Call","type_status":{"label":"Spam","type":"badge-phoenix-danger"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"My order is not being taken","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 4:55 pm","source":"Call","type_status":{"label":"Spam","type":"badge-phoenix-danger"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">My order is not being taken</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">My order is not being taken</a>
|
||||||
<div class="fs-10 d-block">jackson@mail.com</div>
|
<div class="fs-10 d-block">jackson@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 4:55 pm</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 4:55 pm</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-danger">Spam</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-danger">Spam</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -426,12 +418,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"Shipment is missing","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 2:43 pm","source":"Call","type_status":{"label":"sent","type":"badge-phoenix-success"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"Shipment is missing","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 2:43 pm","source":"Call","type_status":{"label":"sent","type":"badge-phoenix-success"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">Shipment is missing</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">Shipment is missing</a>
|
||||||
<div class="fs-10 d-block">jackson@mail.com</div>
|
<div class="fs-10 d-block">jackson@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 2:43 pm</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 2:43 pm</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@ -439,7 +431,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row align-items-center justify-content-between py-2 pe-0 fs-9">
|
<div class="row align-items-center justify-content-between py-2 pe-0 fs-9">
|
||||||
<div class="col-auto d-flex">
|
<div class="col-auto d-flex">
|
||||||
<p class="mb-0 d-none d-sm-block me-3 fw-semibold text-body" data-list-info="data-list-info"></p><a class="fw-semibold" href="#!" data-list-view="*">View all<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="#!" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
<p class="mb-0 d-none d-sm-block me-3 fw-semibold text-body" data-list-info="data-list-info"></p><a class="fw-semibold" href="" data-list-view="*">View all<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto d-flex">
|
<div class="col-auto d-flex">
|
||||||
<button class="page-link" data-list-pagination="prev"><span class="fas fa-chevron-left"></span></button>
|
<button class="page-link" data-list-pagination="prev"><span class="fas fa-chevron-left"></span></button>
|
||||||
@ -474,12 +466,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"Quary about purchased soccer socks","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 29, 2021 10:23 am","source":"Call","type_status":{"label":"sent","type":"badge-phoenix-success"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"Quary about purchased soccer socks","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 29, 2021 10:23 am","source":"Call","type_status":{"label":"sent","type":"badge-phoenix-success"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">Quary about purchased soccer socks</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">Quary about purchased soccer socks</a>
|
||||||
<div class="fs-10 d-block">jackson@mail.com</div>
|
<div class="fs-10 d-block">jackson@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 29, 2021 10:23 am</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 29, 2021 10:23 am</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-success">sent</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -488,12 +480,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"How to take the headache out of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 27, 2021 3:27 pm","source":"Call","type_status":{"label":"delivered","type":"badge-phoenix-info"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"How to take the headache out of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 27, 2021 3:27 pm","source":"Call","type_status":{"label":"delivered","type":"badge-phoenix-info"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">How to take the headache out of Order</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">How to take the headache out of Order</a>
|
||||||
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 27, 2021 3:27 pm</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 27, 2021 3:27 pm</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-info">delivered</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-info">delivered</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -502,12 +494,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"The Arnold Schwarzenegger of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 24, 2021 10:44 am","source":"Call","type_status":{"label":"Bounce","type":"badge-phoenix-warning"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"The Arnold Schwarzenegger of Order","email":"ansolo45@mail.com"},"active":true,"sent":"Ansolo Lazinatov","date":"Dec 24, 2021 10:44 am","source":"Call","type_status":{"label":"Bounce","type":"badge-phoenix-warning"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">The Arnold Schwarzenegger of Order</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">The Arnold Schwarzenegger of Order</a>
|
||||||
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
<div class="fs-10 d-block">ansolo45@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Ansolo Lazinatov</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 24, 2021 10:44 am</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 24, 2021 10:44 am</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-warning">Bounce</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-warning">Bounce</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
@ -516,12 +508,12 @@
|
|||||||
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"My order is not being taken","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 4:55 pm","source":"Call","type_status":{"label":"Spam","type":"badge-phoenix-danger"}}' />
|
<input class="form-check-input" type="checkbox" data-bulk-select-row='{"mail":{"subject":"My order is not being taken","email":"jackson@mail.com"},"active":true,"sent":"Jackson Pollock","date":"Dec 19, 2021 4:55 pm","source":"Call","type_status":{"label":"Spam","type":"badge-phoenix-danger"}}' />
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="#!">My order is not being taken</a>
|
<td class="subject order align-middle white-space-nowrap py-2 ps-0"><a class="fw-semibold text-primary" href="">My order is not being taken</a>
|
||||||
<div class="fs-10 d-block">jackson@mail.com</div>
|
<div class="fs-10 d-block">jackson@mail.com</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
<td class="sent align-middle white-space-nowrap text-start fw-bold text-body-tertiary py-2">Jackson Pollock</td>
|
||||||
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 4:55 pm</td>
|
<td class="date align-middle white-space-nowrap text-body py-2">Dec 19, 2021 4:55 pm</td>
|
||||||
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href="#!"><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
<td class="align-middle white-space-nowrap ps-3"><a class="text-body" href=""><span class="fa-solid fa-phone text-primary me-2"></span>Call</a></td>
|
||||||
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-danger">Spam</span></td>
|
<td class="status align-middle fw-semibold text-end py-2"><span class="badge badge-phoenix fs-10 badge-phoenix-danger">Spam</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@ -529,7 +521,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row align-items-center justify-content-between py-2 pe-0 fs-9">
|
<div class="row align-items-center justify-content-between py-2 pe-0 fs-9">
|
||||||
<div class="col-auto d-flex">
|
<div class="col-auto d-flex">
|
||||||
<p class="mb-0 d-none d-sm-block me-3 fw-semibold text-body" data-list-info="data-list-info"></p><a class="fw-semibold" href="#!" data-list-view="*">View all<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="#!" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
<p class="mb-0 d-none d-sm-block me-3 fw-semibold text-body" data-list-info="data-list-info"></p><a class="fw-semibold" href="" data-list-view="*">View all<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a><a class="fw-semibold d-none" href="" data-list-view="less">View Less<span class="fas fa-angle-right ms-1" data-fa-transform="down-1"></span></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto d-flex">
|
<div class="col-auto d-flex">
|
||||||
<button class="page-link" data-list-pagination="prev"><span class="fas fa-chevron-left"></span></button>
|
<button class="page-link" data-list-pagination="prev"><span class="fas fa-chevron-left"></span></button>
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
{% block title %}{{ _('Leads')|capfirst }}{% endblock title %}
|
{% block title %}{{ _('Leads')|capfirst }}{% endblock title %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row">
|
<div class="row g-3">
|
||||||
<h2 class="mb-4">{{ _("Leads")|capfirst }}</h2>
|
<h2 class="mb-4">{{ _("Leads")|capfirst }}</h2>
|
||||||
<div class="row g-3 justify-content-between mb-4">
|
<div class="row g-3 justify-content-between mb-4">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
|
|||||||
@ -2,12 +2,13 @@
|
|||||||
{% load i18n static%}
|
{% load i18n static%}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-sm-6 col-md-8">
|
<div class="col-sm-6 col-md-8">
|
||||||
<h2>{% if form.instance.pk %}{{ _("Edit Lead") }}{% else %}{{ _("Add New Lead") }}{% endif %}</h2>
|
<h2>{% if form.instance.pk %}{{ _("Edit Lead") }}{% else %}{{ _("Add New Lead") }}{% endif %}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 col-md-8">
|
<div class="col-sm-6 col-md-8">
|
||||||
<form class="row g-3" method="post" class="form" novalidate>
|
<form class="row g-3 form" method="post" action="{% url 'lead_create' %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="col-sm-6 col-md-4">
|
<div class="col-sm-6 col-md-4">
|
||||||
@ -79,7 +80,7 @@
|
|||||||
<!-- Car Make -->
|
<!-- Car Make -->
|
||||||
<div class="col-sm-6 col-md-4">
|
<div class="col-sm-6 col-md-4">
|
||||||
<div class="form-floating">
|
<div class="form-floating">
|
||||||
<select class="form-control" id="{{ form.id_car_make.id_for_label }}" name="{{ form.id_car_make.name }}">
|
<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 %}
|
{% for value, label in form.id_car_make.field.choices %}
|
||||||
<option value="{{ value }}" {% if form.id_car_make.value == value %}selected{% endif %}>{{ label }}</option>
|
<option value="{{ value }}" {% if form.id_car_make.value == value %}selected{% endif %}>{{ label }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@ -92,12 +93,12 @@
|
|||||||
<!-- Car Model -->
|
<!-- Car Model -->
|
||||||
<div class="col-sm-6 col-md-4">
|
<div class="col-sm-6 col-md-4">
|
||||||
<div class="form-floating">
|
<div class="form-floating">
|
||||||
<select class="form-control" id="{{ form.id_car_model.id_for_label }}" name="{{ form.id_car_model.name }}">
|
<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 %}
|
{% for value, label in form.id_car_model.field.choices %}
|
||||||
<option value="{{ value }}" {% if form.id_car_model.value == value %}selected{% endif %}>{{ label }}</option>
|
<option value="{{ value }}" {% if form.id_car_model.value == value %}selected{% endif %}>{{ label }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
<label for="{{ form.id_car_model.id_for_label }}">{{ _("Car Model") }}</label>
|
<label for="{{ form.id_car_model.id_for_label }}">{{ _("Car Make") }}</label>
|
||||||
</div>
|
</div>
|
||||||
{{ form.id_car_model.errors }}
|
{{ form.id_car_model.errors }}
|
||||||
</div>
|
</div>
|
||||||
@ -162,16 +163,16 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ form.priority.errors }}
|
{{ form.priority.errors }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Buttons -->
|
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button type="submit" class="btn btn-phoenix-primary">{{ _("Save") }}</button>
|
<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>
|
<a href="{% url 'lead_list' %}" class="btn btn-phoenix-secondary">{{ _("Cancel") }}</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
function getCookie(name) {
|
function getCookie(name) {
|
||||||
let cookieValue = null;
|
let cookieValue = null;
|
||||||
if (document.cookie && document.cookie !== "") {
|
if (document.cookie && document.cookie !== "") {
|
||||||
@ -187,36 +188,45 @@ function getCookie(name) {
|
|||||||
return cookieValue;
|
return cookieValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
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");
|
||||||
|
|
||||||
const ajaxUrl = "{% url 'ajax_handler' %}";
|
function resetDropdown(dropdown, placeholder) {
|
||||||
const makeSelect = document.getElementById("{{ form.id_car_make.id_for_label }}");
|
dropdown.innerHTML = `<option value="">${placeholder}</option>`;
|
||||||
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) {
|
async function loadModels(makeId) {
|
||||||
resetDropdown(modelSelect, '{% trans "Select" %}');
|
resetDropdown(modelSelect, '{% trans "Select" %}');
|
||||||
const response = await fetch(`${ajaxUrl}?action=get_models&make_id=${makeId}`, {
|
const response = await fetch(`${ajaxUrl}?action=get_models&make_id=${makeId}`, {
|
||||||
headers: {
|
headers: {
|
||||||
"X-Requested-With": "XMLHttpRequest",
|
"X-CSRFToken": csrfToken,
|
||||||
"X-CSRFToken": csrfToken,
|
"X-Requested-With": "XMLHttpRequest",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
data.forEach((model) => {
|
data.forEach((model) => {
|
||||||
const option = document.createElement("option");
|
const option = document.createElement("option");
|
||||||
option.value = model.id_car_model;
|
option.value = model.id_car_model;
|
||||||
option.textContent = document.documentElement.lang === "en" ? model.name : model.arabic_name;
|
option.textContent = document.documentElement.lang === "en" ? model.name : model.arabic_name;
|
||||||
modelSelect.appendChild(option);
|
modelSelect.appendChild(option);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AJAX logic: Load models when car make changes
|
||||||
makeSelect.addEventListener("change", () => {
|
makeSelect.addEventListener("change", () => {
|
||||||
const make_id = makeSelect.value;
|
const make_id = makeSelect.value;
|
||||||
if (make_id) loadModels(make_id);
|
if (make_id) loadModels(make_id);
|
||||||
});
|
});
|
||||||
})
|
|
||||||
</script>
|
// 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 %}
|
{% endblock %}
|
||||||
@ -13,11 +13,11 @@
|
|||||||
<div class="me-3 flex-1 mt-2">
|
<div class="me-3 flex-1 mt-2">
|
||||||
<h4 class="fs-9 text-body-emphasis">{{ _("System")}}:</h4>
|
<h4 class="fs-9 text-body-emphasis">{{ _("System")}}:</h4>
|
||||||
{% if not notification.is_read %}
|
{% if not notification.is_read %}
|
||||||
<p class="fs-9 text-body-highlight"><span class="far fa-envelope text-success-dark fs-8 me-1"></span><span class="me-1">{{ notification.message }}</span> <span class="ms-2 text-body-tertiary text-opacity-85 fw-bold fs-10 text-end">{{ notification.created_at|timesince }}</span></p>
|
<p class="fs-9 text-body-highlight"><span class="far fa-envelope text-success-dark fs-8 me-1"></span><span class="me-1">{{ notification.message }}</span> <span class="ms-2 text-body-tertiary text-opacity-85 fw-bold fs-10 text-end">{{ notification.created|timesince }}</span></p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p class="fs-9 text-body-highlight"><span class="far fa-envelope-open text-danger-dark fs-8 me-1"></span><span>{{ notification.message }}</span> <span class="ms-2 text-body-tertiary text-opacity-85 fw-bold fs-10 text-end">{{ notification.created_at|timesince }}</span></p>
|
<p class="fs-9 text-body-highlight"><span class="far fa-envelope-open text-danger-dark fs-8 me-1"></span><span>{{ notification.message }}</span> <span class="ms-2 text-body-tertiary text-opacity-85 fw-bold fs-10 text-end">{{ notification.created|timesince }}</span></p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p class="text-body-secondary fs-9 mb-0"><span class="me-1 far fa-clock"></span>{{ notification.created_at }}</p>
|
<p class="text-body-secondary fs-9 mb-0"><span class="me-1 far fa-clock"></span>{{ notification.created }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
@ -30,7 +30,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class=" deals-items-row">
|
<div class=" deals-items-row">
|
||||||
<div class="w-100 min-vh-50" data-sortable="data-sortable">
|
<div class="w-100 min-vh-50" >
|
||||||
<div>
|
<div>
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|||||||
@ -51,7 +51,7 @@ function getCookie(name) {
|
|||||||
return cookieValue;
|
return cookieValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const csrfToken = getCookie('token');
|
const csrfToken = getCookie('csrftoken');
|
||||||
|
|
||||||
|
|
||||||
async function sendMessage() {
|
async function sendMessage() {
|
||||||
|
|||||||
@ -250,7 +250,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link" href="#" style="min-width: 2.25rem;" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-bs-auto-close="outside">
|
<a class="nav-link" href="{% url 'notifications_history' %}" style="min-width: 2.25rem;" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-bs-auto-close="outside">
|
||||||
<span class="d-block" style="height: 20px; width: 20px;"><span data-feather="bell" style="height: 20px; width: 20px;"></span></span>
|
<span class="d-block" style="height: 20px; width: 20px;"><span data-feather="bell" style="height: 20px; width: 20px;"></span></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user