Revert ".."

This reverts commit 47807ace90d52a389399f9c926da61c49505615d.
This commit is contained in:
Faheed 2025-11-22 19:40:04 +03:00
parent 2679d0a0f5
commit a18baa0d73
3 changed files with 905 additions and 1078 deletions

View File

@ -93,26 +93,8 @@
<i class="fas fa-tachometer-alt me-1"></i> {% trans "Dashboard" %} <i class="fas fa-tachometer-alt me-1"></i> {% trans "Dashboard" %}
</a> </a>
</li> </li>
<li class="nav-item">
<a class="nav-link text-white" href="{% url 'kaauh_career' %}">
<i class="fas fa-hand me-1"></i> {% trans "KAAUH Careers" %}
</a>
</li>
{% endif %} {% endif %}
{% if request.user.is_authenticated %}
<li class="nav-item">
<a class="nav-link text-white" href="{% url 'user_detail' request.user.pk %}">
<i class="fas fa-user-circle me-1"></i> <span>{% trans "My Profile" %}</span></a></li>
{% endif %}
<li class="nav-item me-2">
<a class="nav-link text-white" href="{% url 'message_list' %}">
<i class="fas fa-envelope"></i> <span>{% trans "Messages" %}</span>
</a>
</li>
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link dropdown-toggle text-white" href="#" role="button" data-bs-toggle="dropdown" <a class="nav-link dropdown-toggle text-white" href="#" role="button" data-bs-toggle="dropdown"
data-bs-offset="0, 8" aria-expanded="false" aria-label="{% trans 'Toggle language menu' %}"> data-bs-offset="0, 8" aria-expanded="false" aria-label="{% trans 'Toggle language menu' %}">
@ -138,6 +120,16 @@
</li> </li>
</ul> </ul>
</li> </li>
{% if request.user.is_authenticated %}
<li class="nav-item">
<a class="nav-link text-white" href="{% url 'user_detail' request.user.pk %}">
<i class="fas fa-user-circle me-1"></i> <span>{% trans "My Profile" %}</span></a></li>
{% endif %}
<li class="nav-item me-2">
<a class="nav-link text-white" href="{% url 'message_list' %}">
<i class="fas fa-envelope"></i> <span>{% trans "Messages" %}</span>
</a>
</li>
<li class="nav-item ms-3"> <li class="nav-item ms-3">
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}

View File

@ -5,8 +5,8 @@
{% block customCSS %} {% block customCSS %}
<style> <style>
/* Kaauh Theme Variables - Assuming these are defined in portal_base */ /* Kaauh Theme Variables - Assuming these are defined in portal_base */
:root { :root {
/* Assuming these are carried from your global CSS/base template */ /* Assuming these are carried from your global CSS/base template */
--kaauh-teal: #00636e; --kaauh-teal: #00636e;
--kaauh-teal-dark: #004a53; --kaauh-teal-dark: #004a53;
@ -16,21 +16,19 @@
--kaauh-info: #17a2b8; --kaauh-info: #17a2b8;
--kaauh-danger: #dc3545; --kaauh-danger: #dc3545;
--kaauh-warning: #ffc107; --kaauh-warning: #ffc107;
--kaauh-secondary: #6c757d; --kaauh-secondary: #6c757d; /* Added secondary color for general use */
/* Added secondary color for general use */ }
}
/* Theme Utilities */ /* Theme Utilities */
.bg-primary-theme { .bg-primary-theme {
background-color: var(--kaauh-teal) !important; background-color: var(--kaauh-teal) !important;
} }
.text-primary-theme {
.text-primary-theme {
color: var(--kaauh-teal) !important; color: var(--kaauh-teal) !important;
} }
/* 1. Application Progress Timeline (Improved Spacing) */ /* 1. Application Progress Timeline (Improved Spacing) */
.application-progress { .application-progress {
position: relative; position: relative;
/* Use flexbox for layout */ /* Use flexbox for layout */
display: flex; display: flex;
@ -38,25 +36,12 @@
gap: 1.5rem; gap: 1.5rem;
/* Center the timeline content */ /* Center the timeline content */
justify-content: center; justify-content: center;
margin: 2rem 0 3rem; margin: 2rem 0 3rem; /* Extra spacing below timeline */
/* Extra spacing below timeline */
padding: 0 1rem; padding: 0 1rem;
overflow-x: auto; overflow-x: auto; /* Allow horizontal scroll for small screens */
/* Allow horizontal scroll for small screens */ }
-webkit-overflow-scrolling: touch;
/* Smooth scrolling on iOS */
padding-bottom: 1rem;
/* Space for scrollbar if needed */
}
@media (max-width: 768px) { .progress-step {
.application-progress {
justify-content: flex-start;
/* Align start to allow scrolling */
}
}
.progress-step {
/* Use fixed width or rely on content width for cleaner flow */ /* Use fixed width or rely on content width for cleaner flow */
position: relative; position: relative;
text-align: center; text-align: center;
@ -64,10 +49,10 @@
flex-shrink: 0; flex-shrink: 0;
/* Added min-width for label spacing */ /* Added min-width for label spacing */
min-width: 100px; min-width: 100px;
} }
/* Timeline Connector Line */ /* Timeline Connector Line */
.progress-step::before { .progress-step::before {
content: ''; content: '';
position: absolute; position: absolute;
top: 20px; top: 20px;
@ -77,23 +62,23 @@
height: 2px; height: 2px;
background: var(--kaauh-border); background: var(--kaauh-border);
z-index: -1; z-index: -1;
} }
/* Hide line for the first step */ /* Hide line for the first step */
.progress-step:first-child::before { .progress-step:first-child::before {
display: none; display: none;
} }
.progress-step.completed::before { .progress-step.completed::before {
background: var(--kaauh-success); background: var(--kaauh-success);
} }
.progress-step.active::before { .progress-step.active::before {
/* Line leading up to the active step should be completed/success color */ /* Line leading up to the active step should be completed/success color */
background: var(--kaauh-success); background: var(--kaauh-success);
} }
.progress-icon { .progress-icon {
width: 40px; width: 40px;
height: 40px; height: 40px;
border-radius: 50%; border-radius: 50%;
@ -105,96 +90,90 @@
font-weight: bold; font-weight: bold;
color: #6c757d; color: #6c757d;
position: relative; position: relative;
z-index: 2; z-index: 2; /* Ensure icon covers the line */
/* Ensure icon covers the line */ }
}
.progress-step.completed .progress-icon { .progress-step.completed .progress-icon {
background: var(--kaauh-success); background: var(--kaauh-success);
color: white; color: white;
} }
.progress-step.active .progress-icon { .progress-step.active .progress-icon {
background: var(--kaauh-teal); background: var(--kaauh-teal);
color: white; color: white;
/* Add a subtle shadow for focus */ /* Add a subtle shadow for focus */
box-shadow: 0 0 0 4px rgba(0, 99, 110, 0.2); box-shadow: 0 0 0 4px rgba(0, 99, 110, 0.2);
} }
.progress-label { .progress-label {
font-size: 0.875rem; font-size: 0.875rem;
color: #6c757d; color: #6c757d;
margin-top: 0.5rem; margin-top: 0.5rem;
line-height: 1.2; line-height: 1.2;
} }
.progress-step.completed .progress-label, .progress-step.completed .progress-label,
.progress-step.active .progress-label { .progress-step.active .progress-label {
color: var(--kaauh-primary-text); color: var(--kaauh-primary-text);
font-weight: 600; font-weight: 600;
} }
/* Status Badges - Using Kaauh Theme */ /* Status Badges - Using Kaauh Theme */
.status-badge { .status-badge {
font-size: 0.875rem; font-size: 0.875rem;
padding: 0.5rem 1rem; padding: 0.5rem 1rem;
border-radius: 20px; border-radius: 20px;
font-weight: 600; font-weight: 600;
} }
/* Card Header Consistency */ /* Card Header Consistency */
.card-header { .card-header{
padding: 1rem 1.5rem; padding: 1rem 1.5rem; /* Increased padding */
/* Increased padding */
border-top-left-radius: 0.75rem; border-top-left-radius: 0.75rem;
border-top-right-radius: 0.75rem; border-top-right-radius: 0.75rem;
border-bottom: none; border-bottom: none;
} }
/* Table Actions Theme */ /* Table Actions Theme */
.table .btn-primary { .table .btn-primary {
background-color: var(--kaauh-teal); background-color: var(--kaauh-teal);
border-color: var(--kaauh-teal); border-color: var(--kaauh-teal);
} }
.table .btn-primary:hover {
.table .btn-primary:hover {
background-color: var(--kaauh-teal-dark); background-color: var(--kaauh-teal-dark);
border-color: var(--kaauh-teal-dark); border-color: var(--kaauh-teal-dark);
} }
.btn-main-action { .btn-main-action {
background-color: var(--kaauh-teal); background-color: var(--kaauh-teal);
border-color: var(--kaauh-teal); border-color: var(--kaauh-teal);
color: white; color: white;
font-weight: 600; font-weight: 600;
transition: all 0.2s ease; transition: all 0.2s ease;
} }
.btn-main-action:hover {
.btn-main-action:hover {
background-color: var(--kaauh-teal-dark); background-color: var(--kaauh-teal-dark);
border-color: var(--kaauh-teal-dark); border-color: var(--kaauh-teal-dark);
} }
/* Style for action cards to make text smaller */ /* Style for action cards to make text smaller */
.action-card .card-body h6 { .action-card .card-body h6 {
font-size: 1rem; font-size: 1rem;
} }
.action-card .card-body p {
.action-card .card-body p {
font-size: 0.75rem; font-size: 0.75rem;
margin-bottom: 0.75rem; margin-bottom: 0.75rem;
} }
.action-card .card-body {
.action-card .card-body {
padding: 1.5rem 1rem; padding: 1.5rem 1rem;
} }
/* Custom Alert for Document Review */ /* Custom Alert for Document Review */
.alert-purple { .alert-purple {
background-color: #e5e0ff; background-color: #e5e0ff;
border-color: #c9c0ff; border-color: #c9c0ff;
color: #5d49a3; color: #5d49a3;
} }
</style> </style>
{% endblock %} {% endblock %}
@ -206,8 +185,7 @@
<a href="{% url 'candidate_portal_dashboard' %}" class=" text-decoration-none text-secondary">{% trans "Dashboard" %}</a> <a href="{% url 'candidate_portal_dashboard' %}" class=" text-decoration-none text-secondary">{% trans "Dashboard" %}</a>
</li> </li>
<li class="breadcrumb-item"> <li class="breadcrumb-item">
<a href="{% url 'candidate_portal_dashboard' %}#applications" <a href="{% url 'candidate_portal_dashboard' %}#applications" class="text-secondary text-decoration">{% trans "My Applications" %}</a>
class="text-secondary text-decoration-none">{% trans "My Applications" %}</a>
</li> </li>
<li class="breadcrumb-item active" aria-current="page" style=" <li class="breadcrumb-item active" aria-current="page" style="
color: #F43B5E; /* Rosy Accent Color */ color: #F43B5E; /* Rosy Accent Color */
@ -223,7 +201,7 @@
<div class="col-12"> <div class="col-12">
<div class="kaauh-card"> <div class="kaauh-card">
<div class="card-header bg-primary-theme text-white"> <div class="card-header bg-primary-theme text-white">
<div class="row align-items-center gy-2"> <div class="row align-items-center">
<div class="col-md-8"> <div class="col-md-8">
<h4 class="mb-1"> <h4 class="mb-1">
<i class="fas fa-briefcase me-2"></i> <i class="fas fa-briefcase me-2"></i>
@ -233,9 +211,8 @@
<small>{% trans "Application ID:" %} {{ application.slug }}</small> <small>{% trans "Application ID:" %} {{ application.slug }}</small>
</p> </p>
</div> </div>
<div class="col-md-4 text-md-end text-start"> <div class="col-md-4 text-end">
<div class="d-inline-block p-1 rounded-pill" <div class="d-inline-block p-1 rounded-pill" style="background-color: rgba(255, 255, 255, 0.2);">
style="background-color: rgba(255, 255, 255, 0.2);">
<span class="status-badge status-{{ application.stage }}"> <span class="status-badge status-{{ application.stage }}">
{{ application.get_stage_display }} {{ application.get_stage_display }}
</span> </span>
@ -245,8 +222,7 @@
</div> </div>
<div class="card-body pt-5"> <div class="card-body pt-5">
<div class="application-progress"> <div class="application-progress">
<div class="progress-step {% if application.stage != 'Applied' and application.stage != 'Rejected' %}completed{% else %}active{% endif %}" <div class="progress-step {% if application.stage != 'Applied' and application.stage != 'Rejected' %}completed{% else %}active{% endif %}" style="flex: 0 0 auto;">
style="flex: 0 0 auto;">
<div class="progress-icon"> <div class="progress-icon">
<i class="fas fa-paper-plane"></i> <i class="fas fa-paper-plane"></i>
</div> </div>
@ -254,8 +230,7 @@
</div> </div>
{% if application.stage in 'Exam,Interview,Document Review,Offer,Hired,Rejected' %} {% if application.stage in 'Exam,Interview,Document Review,Offer,Hired,Rejected' %}
<div class="progress-step {% if application.stage not in 'Applied,Exam' and application.stage != 'Rejected' %}completed{% elif application.stage == 'Exam' %}active{% endif %}" <div class="progress-step {% if application.stage not in 'Applied,Exam' and application.stage != 'Rejected' %}completed{% elif application.stage == 'Exam' %}active{% endif %}" style="flex: 0 0 auto;">
style="flex: 0 0 auto;">
<div class="progress-icon"> <div class="progress-icon">
<i class="fas fa-clipboard-check"></i> <i class="fas fa-clipboard-check"></i>
</div> </div>
@ -264,8 +239,7 @@
{% endif %} {% endif %}
{% if application.stage in 'Interview,Document Review,Offer,Hired,Rejected' %} {% if application.stage in 'Interview,Document Review,Offer,Hired,Rejected' %}
<div class="progress-step {% if application.stage not in 'Applied,Exam,Interview' and application.stage != 'Rejected' %}completed{% elif application.stage == 'Interview' %}active{% endif %}" <div class="progress-step {% if application.stage not in 'Applied,Exam,Interview' and application.stage != 'Rejected' %}completed{% elif application.stage == 'Interview' %}active{% endif %}" style="flex: 0 0 auto;">
style="flex: 0 0 auto;">
<div class="progress-icon"> <div class="progress-icon">
<i class="fas fa-video"></i> <i class="fas fa-video"></i>
</div> </div>
@ -274,8 +248,7 @@
{% endif %} {% endif %}
{% if application.stage in 'Document Review,Offer,Hired,Rejected' %} {% if application.stage in 'Document Review,Offer,Hired,Rejected' %}
<div class="progress-step {% if application.stage not in 'Applied,Exam,Interview,Document Review' and application.stage != 'Rejected' %}completed{% elif application.stage == 'Document Review' %}active{% endif %}" <div class="progress-step {% if application.stage not in 'Applied,Exam,Interview,Document Review' and application.stage != 'Rejected' %}completed{% elif application.stage == 'Document Review' %}active{% endif %}" style="flex: 0 0 auto;">
style="flex: 0 0 auto;">
<div class="progress-icon"> <div class="progress-icon">
<i class="fas fa-file-alt"></i> <i class="fas fa-file-alt"></i>
</div> </div>
@ -284,8 +257,7 @@
{% endif %} {% endif %}
{% if application.stage in 'Offer,Hired,Rejected' %} {% if application.stage in 'Offer,Hired,Rejected' %}
<div class="progress-step {% if application.stage not in 'Applied,Exam,Interview,Document Review,Offer' and application.stage != 'Rejected' %}completed{% elif application.stage == 'Offer' %}active{% endif %}" <div class="progress-step {% if application.stage not in 'Applied,Exam,Interview,Document Review,Offer' and application.stage != 'Rejected' %}completed{% elif application.stage == 'Offer' %}active{% endif %}" style="flex: 0 0 auto;">
style="flex: 0 0 auto;">
<div class="progress-icon"> <div class="progress-icon">
<i class="fas fa-handshake"></i> <i class="fas fa-handshake"></i>
</div> </div>
@ -294,40 +266,38 @@
{% endif %} {% endif %}
{% if application.stage in 'Hired,Rejected' %} {% if application.stage in 'Hired,Rejected' %}
<div class="progress-step {% if application.stage == 'Hired' %}completed{% elif application.stage == 'Rejected' %}active{% endif %}" <div class="progress-step {% if application.stage == 'Hired' %}completed{% elif application.stage == 'Rejected' %}active{% endif %}" style="flex: 0 0 auto;">
style="flex: 0 0 auto;">
<div class="progress-icon"> <div class="progress-icon">
<i <i class="fas {% if application.stage == 'Hired' %}fa-trophy{% else %}fa-times-circle{% endif %}"></i>
class="fas {% if application.stage == 'Hired' %}fa-trophy{% else %}fa-times-circle{% endif %}"></i>
</div> </div>
<div class="progress-label">{% trans "Final Status" %}</div> <div class="progress-label">{% trans "Final Status" %}</div>
</div> </div>
{% endif %} {% endif %}
</div> </div>
<div class="row mt-4 g-3"> <div class="row mt-4 g-4">
<div class="col-6 col-md-3"> <div class="col-md-3">
<div class="text-center p-3 bg-light rounded h-100 shadow-sm"> <div class="text-center p-3 bg-light rounded h-100 shadow-sm">
<i class="fas fa-calendar-alt text-primary-theme fa-2x mb-2"></i> <i class="fas fa-calendar-alt text-primary-theme fa-2x mb-2"></i>
<h6 class="text-muted small">{% trans "Applied Date" %}</h6> <h6 class="text-muted small">{% trans "Applied Date" %}</h6>
<p class="mb-0 fw-bold">{{ application.created_at|date:"M d, Y" }}</p> <p class="mb-0 fw-bold">{{ application.created_at|date:"M d, Y" }}</p>
</div> </div>
</div> </div>
<div class="col-6 col-md-3"> <div class="col-md-3">
<div class="text-center p-3 bg-light rounded h-100 shadow-sm"> <div class="text-center p-3 bg-light rounded h-100 shadow-sm">
<i class="fas fa-building text-info fa-2x mb-2"></i> <i class="fas fa-building text-info fa-2x mb-2"></i>
<h6 class="text-muted small">{% trans "Department" %}</h6> <h6 class="text-muted small">{% trans "Department" %}</h6>
<p class="mb-0 fw-bold">{{ application.job.department|default:"-" }}</p> <p class="mb-0 fw-bold">{{ application.job.department|default:"-" }}</p>
</div> </div>
</div> </div>
<div class="col-6 col-md-3"> <div class="col-md-3">
<div class="text-center p-3 bg-light rounded h-100 shadow-sm"> <div class="text-center p-3 bg-light rounded h-100 shadow-sm">
<i class="fas fa-briefcase text-success fa-2x mb-2"></i> <i class="fas fa-briefcase text-success fa-2x mb-2"></i>
<h6 class="text-muted small">{% trans "Job Type" %}</h6> <h6 class="text-muted small">{% trans "Job Type" %}</h6>
<p class="mb-0 fw-bold">{{ application.get_job_type_display }}</p> <p class="mb-0 fw-bold">{{ application.get_job_type_display }}</p>
</div> </div>
</div> </div>
<div class="col-6 col-md-3"> <div class="col-md-3">
<div class="text-center p-3 bg-light rounded h-100 shadow-sm"> <div class="text-center p-3 bg-light rounded h-100 shadow-sm">
<i class="fas fa-map-marker-alt text-warning fa-2x mb-2"></i> <i class="fas fa-map-marker-alt text-warning fa-2x mb-2"></i>
<h6 class="text-muted small">{% trans "Location" %}</h6> <h6 class="text-muted small">{% trans "Location" %}</h6>
@ -340,9 +310,9 @@
</div> </div>
</div> </div>
<div class="row mb-5 g-3"> <div class="row mb-5">
<div class="col-12 col-md-6"> <div class="col-md-6 col-6">
<div class="kaauh-card h-100 shadow-sm action-card"> <div class="kaauh-card h-50 shadow-sm action-card">
<div class="card-body text-center mb-4"> <div class="card-body text-center mb-4">
<i class="fas fa-arrow-left fa-2x text-primary-theme mb-3"></i> <i class="fas fa-arrow-left fa-2x text-primary-theme mb-3"></i>
<h6>{% trans "Go to Dashboard" %}</h6> <h6>{% trans "Go to Dashboard" %}</h6>
@ -355,13 +325,15 @@
</div> </div>
{% if application.resume %} {% if application.resume %}
<div class="col-12 col-md-6"> <div class="col-md-6 col-6">
<div class="kaauh-card h-100 shadow-sm action-card"> <div class="kaauh-card h-50 shadow-sm action-card">
<div class="card-body text-center mb-4"> <div class="card-body text-center mb-4">
<i class="fas fa-file-download fa-2x text-success mb-3"></i> <i class="fas fa-file-download fa-2x text-success mb-3"></i>
<h6>{% trans "Download Resume" %}</h6> <h6>{% trans "Download Resume" %}</h6>
<p class="text-muted small">{% trans "Get your submitted file" %}</p> <p class="text-muted small">{% trans "Get your submitted file" %}</p>
<a href="{{ application.resume.url }}" target="_blank" class="btn btn-main-action btn-sm w-100"> <a href="{{ application.resume.url }}"
target="_blank"
class="btn btn-main-action btn-sm w-100">
<i class="fas fa-download me-2"></i> <i class="fas fa-download me-2"></i>
{% trans "Download" %} {% trans "Download" %}
</a> </a>
@ -422,7 +394,8 @@
</td> </td>
<td> <td>
{% if interview.zoom_meeting and interview.zoom_meeting.join_url %} {% if interview.zoom_meeting and interview.zoom_meeting.join_url %}
<a href="{{ interview.zoom_meeting.join_url }}" target="_blank" <a href="{{ interview.zoom_meeting.join_url }}"
target="_blank"
class="btn btn-sm btn-primary"> class="btn btn-sm btn-primary">
<i class="fas fa-video me-1"></i> <i class="fas fa-video me-1"></i>
{% trans "Join" %} {% trans "Join" %}
@ -433,8 +406,7 @@
</td> </td>
<td> <td>
{% if interview.zoom_meeting and interview.zoom_meeting.join_url %} {% if interview.zoom_meeting and interview.zoom_meeting.join_url %}
<button class="btn btn-sm btn-outline-primary" <button class="btn btn-sm btn-outline-primary" onclick="addToCalendar({{ interview.interview_date|date:'Y' }}, {{ interview.interview_date|date:'m' }}, {{ interview.interview_date|date:'d' }}, '{{ interview.interview_time|time:'H:i' }}', '{{ application.job.title }}')">
onclick="addToCalendar({{ interview.interview_date|date:'Y' }}, {{ interview.interview_date|date:'m' }}, {{ interview.interview_date|date:'d' }}, '{{ interview.interview_time|time:'H:i' }}', '{{ application.job.title }}')">
<i class="fas fa-calendar-plus me-1"></i> <i class="fas fa-calendar-plus me-1"></i>
{% trans "Add to Calendar" %} {% trans "Add to Calendar" %}
</button> </button>
@ -470,8 +442,7 @@
</h5> </h5>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<button class="btn btn-sm btn-light" data-bs-toggle="modal" <button class="btn btn-sm btn-light" data-bs-toggle="modal" data-bs-target="#uploadDocumentModal">
data-bs-target="#uploadDocumentModal">
<i class="fas fa-plus me-1"></i> <i class="fas fa-plus me-1"></i>
{% trans "Upload Document" %} {% trans "Upload Document" %}
</button> </button>
@ -496,7 +467,8 @@
<tr> <tr>
<td> <td>
{% if document.file %} {% if document.file %}
<a href="{{ document.file.url }}" target="_blank" <a href="{{ document.file.url }}"
target="_blank"
class="text-decoration-none text-primary-theme"> class="text-decoration-none text-primary-theme">
<i class="fas fa-file-pdf text-danger me-2"></i> <i class="fas fa-file-pdf text-danger me-2"></i>
{{ document.get_document_type_display }} {{ document.get_document_type_display }}
@ -522,13 +494,13 @@
</td> </td>
<td> <td>
{% if document.file %} {% if document.file %}
<a href="{{ document.file.url }}" class="btn btn-sm btn-outline-primary me-1" <a href="{{ document.file.url }}"
class="btn btn-sm btn-outline-primary me-1"
target="_blank"> target="_blank">
<i class="fas fa-download"></i> <i class="fas fa-download"></i>
{% trans "Download" %} {% trans "Download" %}
</a> </a>
<button class="btn btn-sm btn-outline-danger" <button class="btn btn-sm btn-outline-danger" onclick="deleteDocument({{ document.id }})">
onclick="deleteDocument({{ document.id }})">
<i class="fas fa-trash"></i> <i class="fas fa-trash"></i>
</button> </button>
{% endif %} {% endif %}
@ -542,8 +514,7 @@
<div class="text-center py-4"> <div class="text-center py-4">
<i class="fas fa-file-upload fa-3x text-muted mb-3"></i> <i class="fas fa-file-upload fa-3x text-muted mb-3"></i>
<p class="text-muted">{% trans "No documents uploaded." %}</p> <p class="text-muted">{% trans "No documents uploaded." %}</p>
<button class="btn btn-main-action" data-bs-toggle="modal" <button class="btn btn-main-action" data-bs-toggle="modal" data-bs-target="#uploadDocumentModal">
data-bs-target="#uploadDocumentModal">
<i class="fas fa-plus me-2"></i> <i class="fas fa-plus me-2"></i>
{% trans "Upload Your First Document" %} {% trans "Upload Your First Document" %}
</button> </button>
@ -568,38 +539,32 @@
{% if application.stage == 'Applied' %} {% if application.stage == 'Applied' %}
<div class="alert alert-info"> <div class="alert alert-info">
<i class="fas fa-clock me-2"></i> <i class="fas fa-clock me-2"></i>
{% trans "Your application is being reviewed by our recruitment team. You will receive an update {% trans "Your application is being reviewed by our recruitment team. You will receive an update within 3-5 business days." %}
within 3-5 business days." %}
</div> </div>
{% elif application.stage == 'Screening' %} {% elif application.stage == 'Screening' %}
<div class="alert alert-warning"> <div class="alert alert-warning">
<i class="fas fa-search me-2"></i> <i class="fas fa-search me-2"></i>
{% trans "Your application is currently under screening. We are evaluating your qualifications {% trans "Your application is currently under screening. We are evaluating your qualifications against the job requirements." %}
against the job requirements." %}
</div> </div>
{% elif application.stage == 'Document Review' %} {% elif application.stage == 'Document Review' %}
<div class="alert alert-purple"> <div class="alert alert-purple">
<i class="fas fa-file-alt me-2"></i> <i class="fas fa-file-alt me-2"></i>
{% trans "Please upload the required documents for review. Our team will evaluate your submitted {% trans "Please upload the required documents for review. Our team will evaluate your submitted materials." %}
materials." %}
</div> </div>
{% elif application.stage == 'Exam' %} {% elif application.stage == 'Exam' %}
<div class="alert alert-purple"> <div class="alert alert-purple">
<i class="fas fa-clipboard-check me-2"></i> <i class="fas fa-clipboard-check me-2"></i>
{% trans "You have been shortlisted for an assessment. Please check your email for exam details {% trans "You have been shortlisted for an assessment. Please check your email for exam details and preparation materials." %}
and preparation materials." %}
</div> </div>
{% elif application.stage == 'Interview' %} {% elif application.stage == 'Interview' %}
<div class="alert alert-success"> <div class="alert alert-success">
<i class="fas fa-video me-2"></i> <i class="fas fa-video me-2"></i>
{% trans "Congratulations! You have been selected for an interview. Please check the interview {% trans "Congratulations! You have been selected for an interview. Please check the interview schedule above and prepare accordingly." %}
schedule above and prepare accordingly." %}
</div> </div>
{% elif application.stage == 'Offer' %} {% elif application.stage == 'Offer' %}
<div class="alert alert-warning"> <div class="alert alert-warning">
<i class="fas fa-handshake me-2"></i> <i class="fas fa-handshake me-2"></i>
{% trans "You have received a job offer! Please check your email for the detailed offer letter {% trans "You have received a job offer! Please check your email for the detailed offer letter and next steps." %}
and next steps." %}
</div> </div>
{% elif application.stage == 'Hired' %} {% elif application.stage == 'Hired' %}
<div class="alert alert-success"> <div class="alert alert-success">
@ -609,8 +574,7 @@
{% elif application.stage == 'Rejected' %} {% elif application.stage == 'Rejected' %}
<div class="alert alert-danger"> <div class="alert alert-danger">
<i class="fas fa-times-circle me-2"></i> <i class="fas fa-times-circle me-2"></i>
{% trans "Thank you for your interest. Unfortunately, your application was not selected at this {% trans "Thank you for your interest. Unfortunately, your application was not selected at this time. We encourage you to apply for other positions." %}
time. We encourage you to apply for other positions." %}
</div> </div>
{% endif %} {% endif %}
</div> </div>
@ -647,15 +611,13 @@
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label for="documentFile" class="form-label">{% trans "Choose File" %}</label> <label for="documentFile" class="form-label">{% trans "Choose File" %}</label>
<input type="file" class="form-control" id="documentFile" name="file" <input type="file" class="form-control" id="documentFile" name="file" accept=".pdf,.doc,.docx,.jpg,.png" required>
accept=".pdf,.doc,.docx,.jpg,.png" required>
<div class="form-text">{% trans "Accepted formats: PDF, DOC, DOCX, JPG, PNG (Max 5MB)" %}</div> <div class="form-text">{% trans "Accepted formats: PDF, DOC, DOCX, JPG, PNG (Max 5MB)" %}</div>
</div> </div>
<input type="hidden" name="application_slug" value="{{ application.slug }}"> <input type="hidden" name="application_slug" value="{{ application.slug }}">
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{% trans "Cancel" <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{% trans "Cancel" %}</button>
%}</button>
<button type="submit" class="btn btn-main-action"> <button type="submit" class="btn btn-main-action">
<i class="fas fa-upload me-2"></i> <i class="fas fa-upload me-2"></i>
{% trans "Upload" %} {% trans "Upload" %}
@ -668,7 +630,7 @@
<script> <script>
function addToCalendar(year, month, day, time, title) { function addToCalendar(year, month, day, time, title) {
// Create Google Calendar URL // Create Google Calendar URL
const startDate = new Date(year, month - 1, day, time.split(':')[0], time.split(':')[1]); const startDate = new Date(year, month - 1, day, time.split(':')[0], time.split(':')[1]);
const endDate = new Date(startDate.getTime() + 60 * 60 * 1000); // Add 1 hour const endDate = new Date(startDate.getTime() + 60 * 60 * 1000); // Add 1 hour
@ -680,9 +642,9 @@
const googleCalendarUrl = `https://calendar.google.com/calendar/render?action=TEMPLATE&text=${encodeURIComponent(title)}&dates=${formatDate(startDate)}/${formatDate(endDate)}&details=${encodeURIComponent('Interview scheduled via ATS')}`; const googleCalendarUrl = `https://calendar.google.com/calendar/render?action=TEMPLATE&text=${encodeURIComponent(title)}&dates=${formatDate(startDate)}/${formatDate(endDate)}&details=${encodeURIComponent('Interview scheduled via ATS')}`;
window.open(googleCalendarUrl, '_blank'); window.open(googleCalendarUrl, '_blank');
} }
function deleteDocument(documentId) { function deleteDocument(documentId) {
if (confirm('{% trans "Are you sure you want to delete this document?" %}')) { if (confirm('{% trans "Are you sure you want to delete this document?" %}')) {
fetch(`/documents/${documentId}/delete/`, { fetch(`/documents/${documentId}/delete/`, {
method: 'POST', method: 'POST',
@ -704,10 +666,10 @@
alert('{% trans "Error deleting document. Please try again." %}'); alert('{% trans "Error deleting document. Please try again." %}');
}); });
} }
} }
// Helper function to get CSRF token // Helper function to get CSRF token
function getCookie(name) { function getCookie(name) {
let cookieValue = null; let cookieValue = null;
if (document.cookie && document.cookie !== '') { if (document.cookie && document.cookie !== '') {
const cookies = document.cookie.split(';'); const cookies = document.cookie.split(';');
@ -720,7 +682,7 @@
} }
} }
return cookieValue; return cookieValue;
} }
</script> </script>
{% endblock %} {% endblock %}

View File

@ -5,21 +5,21 @@
{% block customCSS %} {% block customCSS %}
<style> <style>
/* Application Progress Timeline - Using Kaauh Theme Colors */ /* Application Progress Timeline - Using Kaauh Theme Colors */
.application-progress { .application-progress {
position: relative; position: relative;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin: 2rem 0; margin: 2rem 0;
} }
.progress-step { .progress-step {
flex: 1; flex: 1;
text-align: center; text-align: center;
position: relative; position: relative;
} }
.progress-step::before { .progress-step::before {
content: ''; content: '';
position: absolute; position: absolute;
top: 20px; top: 20px;
@ -28,21 +28,21 @@
height: 2px; height: 2px;
background: var(--kaauh-border); background: var(--kaauh-border);
z-index: -1; z-index: -1;
} }
.progress-step:first-child::before { .progress-step:first-child::before {
display: none; display: none;
} }
.progress-step.completed::before { .progress-step.completed::before {
background: var(--kaauh-success); background: var(--kaauh-success);
} }
.progress-step.active::before { .progress-step.active::before {
background: var(--kaauh-teal); background: var(--kaauh-teal);
} }
.progress-icon { .progress-icon {
width: 40px; width: 40px;
height: 40px; height: 40px;
border-radius: 50%; border-radius: 50%;
@ -55,135 +55,94 @@
color: #6c757d; color: #6c757d;
position: relative; position: relative;
z-index: 1; z-index: 1;
} }
.progress-step.completed .progress-icon { .progress-step.completed .progress-icon {
background: var(--kaauh-success); background: var(--kaauh-success);
color: white; color: white;
} }
.progress-step.active .progress-icon { .progress-step.active .progress-icon {
background: var(--kaauh-teal); background: var(--kaauh-teal);
color: white; color: white;
} }
.progress-label { .progress-label {
font-size: 0.875rem; font-size: 0.875rem;
color: #6c757d; color: #6c757d;
margin-top: 0.5rem; margin-top: 0.5rem;
} }
.progress-step.completed .progress-label, .progress-step.completed .progress-label,
.progress-step.active .progress-label { .progress-step.active .progress-label {
color: var(--kaauh-primary-text); color: var(--kaauh-primary-text);
font-weight: 600; font-weight: 600;
} }
/* Status Badges - Using Kaauh Theme */ /* Status Badges - Using Kaauh Theme */
.status-badge { .status-badge {
font-size: 0.875rem; font-size: 0.875rem;
padding: 0.5rem 1rem; padding: 0.5rem 1rem;
border-radius: 20px; border-radius: 20px;
font-weight: 600; font-weight: 600;
} }
.status-applied { .status-applied { background: #e3f2fd; color: #1976d2; }
background: #e3f2fd; .status-screening { background: #fff3e0; color: #f57c00; }
color: #1976d2; .status-exam { background: #f3e5f5; color: #7b1fa2; }
} .status-interview { background: #e8f5e8; color: #388e3c; }
.status-offer { background: #fff8e1; color: #f9a825; }
.status-hired { background: #e8f5e8; color: #2e7d32; }
.status-rejected { background: #ffebee; color: #c62828; }
.status-screening { /* Alert Purple - Using Theme Colors */
background: #fff3e0; .alert-purple {
color: #f57c00;
}
.status-exam {
background: #f3e5f5;
color: #7b1fa2;
}
.status-interview {
background: #e8f5e8;
color: #388e3c;
}
.status-offer {
background: #fff8e1;
color: #f9a825;
}
.status-hired {
background: #e8f5e8;
color: #2e7d32;
}
.status-rejected {
background: #ffebee;
color: #c62828;
}
/* Alert Purple - Using Theme Colors */
.alert-purple {
color: #4a148c; color: #4a148c;
background-color: #f3e5f5; background-color: #f3e5f5;
border-color: #ce93d8; border-color: #ce93d8;
} }
/* Profile specific styles */ /* Profile specific styles */
.profile-data-list li { .profile-data-list li {
padding: 1rem 0; padding: 1rem 0;
border-bottom: 1px dashed var(--kaauh-border); border-bottom: 1px dashed var(--kaauh-border);
font-size: 0.95rem; font-size: 0.95rem;
font-weight: 500; font-weight: 500;
} }
.profile-data-list li strong {
.profile-data-list li strong {
font-weight: 700; font-weight: 700;
color: var(--kaauh-teal-dark); color: var(--kaauh-teal-dark);
min-width: 120px; min-width: 120px;
display: inline-block; display: inline-block;
} }
/* Tabs styling */ /* Tabs styling */
{ {% comment %} .nav-tabs {
% comment %
}
.nav-tabs {
border-bottom: 1px solid var(--kaauh-border); border-bottom: 1px solid var(--kaauh-border);
} }
.nav-tabs .nav-link.active {
.nav-tabs .nav-link.active {
color: var(--kaauh-primary-text); color: var(--kaauh-primary-text);
} }
.nav-tabs .nav-link {
.nav-tabs .nav-link {
color: var(--kaauh-teal); color: var(--kaauh-teal);
border: none; border: none;
border-bottom: 3px solid transparent; border-bottom: 3px solid transparent;
padding: 1rem 1.75rem; padding: 1rem 1.75rem;
font-weight: 600; font-weight: 600;
} }
.nav-tabs .nav-link:hover {
.nav-tabs .nav-link:hover {
color: var(--kaauh-teal-dark); color: var(--kaauh-teal-dark);
border-color: var(--kaauh-teal-light); border-color: var(--kaauh-teal-light);
} }
.nav-tabs .nav-link.active {
.nav-tabs .nav-link.active {
color: #000000; color: #000000;
border-color: var(--kaauh-teal); border-color: var(--kaauh-teal);
background-color: transparent; background-color: transparent;
font-weight: 700; font-weight: 700;
} }
.nav-tabs .nav-link i {
.nav-tabs .nav-link i {
color: var(--kaauh-teal) !important; color: var(--kaauh-teal) !important;
} } {% endcomment %}
{
% endcomment %
}
/* Tabs Theming - Applies to the right column */ /* Tabs Theming - Applies to the right column */
.nav-tabs { .nav-tabs {
@ -200,10 +159,7 @@
padding: 0.75rem 1rem; padding: 0.75rem 1rem;
margin-right: 0.5rem; margin-right: 0.5rem;
transition: all 0.2s; transition: all 0.2s;
white-space: nowrap;
/* Ensure text doesn't wrap in tabs */
} }
/* Active Link */ /* Active Link */
.nav-tabs .nav-link.active { .nav-tabs .nav-link.active {
color: var(--kaauh-teal-dark) !important; color: var(--kaauh-teal-dark) !important;
@ -215,93 +171,49 @@
margin-bottom: -1px; margin-bottom: -1px;
} }
.nav-scroll { .nav-scroll {
overflow-x: auto; overflow-x: auto;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
white-space: nowrap; white-space: nowrap;
/* Hide scrollbar for cleaner look but keep functionality */ }
scrollbar-width: none; .nav-scroll .nav-tabs { flex-wrap: nowrap; border-bottom: none; }
/* Firefox */ .nav-scroll .nav-tabs .nav-item { flex-shrink: 0; }
-ms-overflow-style: none;
/* IE 10+ */
position: relative;
}
.nav-scroll::-webkit-scrollbar { /* Application table styling */
display: none; .application-table thead th {
/* Chrome/Safari */
}
.nav-scroll .nav-tabs {
flex-wrap: nowrap;
border-bottom: none;
padding-bottom: 5px;
/* Space for active border */
}
.nav-scroll .nav-tabs .nav-item {
flex-shrink: 0;
}
/* Add a subtle fade effect to indicate more content */
.nav-scroll-container {
position: relative;
}
.nav-scroll-container::after {
content: '';
position: absolute;
top: 0;
right: 0;
height: 100%;
width: 30px;
background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
pointer-events: none;
}
/* Application table styling */
.application-table thead th {
background-color: var(--kaauh-teal-light); background-color: var(--kaauh-teal-light);
color: var(--kaauh-teal-dark); color: var(--kaauh-teal-dark);
font-weight: 700; font-weight: 700;
border-bottom: 1px solid var(--kaauh-border); border-bottom: 1px solid var(--kaauh-border);
padding: 1rem 1.5rem; padding: 1rem 1.5rem;
} }
.application-table tbody tr {
.application-table tbody tr {
transition: background-color 0.2s ease; transition: background-color 0.2s ease;
} }
.application-table tbody tr:hover {
.application-table tbody tr:hover {
background-color: var(--kaauh-teal-light); background-color: var(--kaauh-teal-light);
} }
.badge-stage {
.badge-stage {
font-weight: 600; font-weight: 600;
padding: 0.4em 0.8em; padding: 0.4em 0.8em;
border-radius: 50rem; border-radius: 50rem;
} }
/* Responsive table for mobile */
@media (max-width: 767.98px) {
.application-table thead {
display: none;
}
/* Responsive table for mobile */
@media (max-width: 767.98px) {
.application-table thead { display: none; }
.application-table tr { .application-table tr {
margin-bottom: 1rem; margin-bottom: 1rem;
border: 1px solid var(--kaauh-border); border: 1px solid var(--kaauh-border);
border-radius: 8px; border-radius: 8px;
box-shadow: var(--kaauh-shadow-sm); box-shadow: var(--kaauh-shadow-sm);
} }
.application-table td { .application-table td {
text-align: right !important; text-align: right !important;
padding: 0.75rem 1rem; padding: 0.75rem 1rem;
padding-left: 50%; padding-left: 50%;
position: relative; position: relative;
} }
.application-table td::before { .application-table td::before {
content: attr(data-label); content: attr(data-label);
position: absolute; position: absolute;
@ -310,101 +222,67 @@
font-weight: 700; font-weight: 700;
color: var(--gray-text); color: var(--gray-text);
} }
}
/* Profile Data List Mobile Optimization */ /* Document management list */
.profile-data-list li { .list-group-item {
flex-direction: column;
align-items: flex-start !important;
}
.profile-data-list li>div {
margin-bottom: 0.25rem;
color: var(--kaauh-secondary);
}
.profile-data-list li>span {
width: 100%;
text-align: left !important;
word-break: break-word;
/* Handle long emails/addresses */
}
/* Adjust padding for mobile */
.tab-content {
padding: 1.5rem !important;
}
.nav-tabs .nav-link {
padding: 0.75rem 1rem;
font-size: 0.9rem;
}
}
/* Document management list */
.list-group-item {
border-radius: 8px; border-radius: 8px;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
border: 1px solid var(--kaauh-border); border: 1px solid var(--kaauh-border);
transition: all 0.2s ease; transition: all 0.2s ease;
} }
.list-group-item:hover {
.list-group-item:hover {
background-color: var(--kaauh-teal-light); background-color: var(--kaauh-teal-light);
border-color: var(--kaauh-teal-accent); border-color: var(--kaauh-teal-accent);
} }
/* Action tiles */ /* Action tiles */
.btn-action-tile { .btn-action-tile {
background-color: white; background-color: white;
border: 1px solid var(--kaauh-border); border: 1px solid var(--kaauh-border);
border-radius: 12px; border-radius: 12px;
padding: 1.5rem 1rem; padding: 1.5rem 1rem;
transition: all 0.3s ease; transition: all 0.3s ease;
box-shadow: var(--kaauh-shadow-sm); box-shadow: var(--kaauh-shadow-sm);
} }
.btn-action-tile:hover {
.btn-action-tile:hover {
background-color: var(--kaauh-teal-light); background-color: var(--kaauh-teal-light);
border-color: var(--kaauh-teal-accent); border-color: var(--kaauh-teal-accent);
transform: translateY(-2px); transform: translateY(-2px);
box-shadow: var(--kaauh-shadow-lg); box-shadow: var(--kaauh-shadow-lg);
} }
.action-tile-icon {
.action-tile-icon {
font-size: 2rem; font-size: 2rem;
color: var(--kaauh-teal-accent); color: var(--kaauh-teal-accent);
display: block; display: block;
} }
/* Application Cards Styling */ /* Application Cards Styling */
.hover-lift { .hover-lift {
transition: all 0.3s ease; transition: all 0.3s ease;
} }
.hover-lift:hover {
.hover-lift:hover {
transform: translateY(-4px); transform: translateY(-4px);
box-shadow: var(--kaauh-shadow-lg); box-shadow: var(--kaauh-shadow-lg);
border-color: var(--kaauh-teal-accent); border-color: var(--kaauh-teal-accent);
} }
.application-card .card-title a { .application-card .card-title a {
transition: color 0.2s ease; transition: color 0.2s ease;
} }
.application-card .card-title a:hover {
.application-card .card-title a:hover {
color: var(--kaauh-teal-dark) !important; color: var(--kaauh-teal-dark) !important;
} }
/* Responsive adjustments for application cards */ /* Responsive adjustments for application cards */
@media (max-width: 768px) { @media (max-width: 768px) {
.application-card .card-body { .application-card .card-body {
padding: 1.25rem; padding: 1.25rem;
} }
.application-card .card-title { .application-card .card-title {
font-size: 1.1rem; font-size: 1.1rem;
} }
} }
</style> </style>
{% endblock %} {% endblock %}
@ -412,22 +290,21 @@
<div class="container-fluid"> <div class="container-fluid">
{# Header: Larger, more dynamic on large screens. Stacks cleanly on mobile. #} {# Header: Larger, more dynamic on large screens. Stacks cleanly on mobile. #}
<div class="d-flex flex-column flex-md-row justify-content-between align-items-md-center mb-4 mb-md-5"> <div class="d-flex flex-column flex-md-row justify-content-between align-items-md-center mb-5">
<h1 class="display-6 display-md-5 fw-extrabold mb-3 mb-md-0 text-center text-md-start" <h1 class="display-6 display-md-5 fw-extrabold mb-3 mb-md-0" style="color: var(--kaauh-teal-dark);">
style="color: var(--kaauh-teal-dark);">
{% trans "Your Candidate Dashboard" %} {% trans "Your Candidate Dashboard" %}
</h1> </h1>
{% comment %} <a href="#profile-details" data-bs-toggle="tab" {% comment %} <a href="#profile-details" data-bs-toggle="tab" class="btn btn-main-action btn-sm btn-md-lg px-4 py-2 rounded-pill shadow-sm shadow-md-lg">
class="btn btn-main-action btn-sm btn-md-lg px-4 py-2 rounded-pill shadow-sm shadow-md-lg">
<i class="fas fa-edit me-2"></i> {% trans "Update Profile" %} <i class="fas fa-edit me-2"></i> {% trans "Update Profile" %}
</a> {% endcomment %} </a> {% endcomment %}
</div> </div>
{# Candidate Quick Overview Card: Use a softer background color #} {# Candidate Quick Overview Card: Use a softer background color #}
<div class="card kaauh-card mb-4 mb-md-5 p-3 p-md-4 bg-white"> <div class="card kaauh-card mb-5 p-4 bg-white">
<div class="d-flex align-items-center flex-column flex-sm-row text-center text-sm-start"> <div class="d-flex align-items-center flex-column flex-sm-row text-center text-sm-start">
<img src="{% if candidate.user.profile_image %}{{ candidate.user.profile_image.url }}{% else %}{% static 'image/default_avatar.png' %}{% endif %}" <img src="{% if candidate.user.profile_image %}{{ candidate.user.profile_image.url }}{% else %}{% static 'image/default_avatar.png' %}{% endif %}"
alt="{% trans 'Profile Picture' %}" class="rounded-circle me-sm-4 mb-3 mb-sm-0 shadow-lg" alt="{% trans 'Profile Picture' %}"
class="rounded-circle me-sm-4 mb-3 mb-sm-0 shadow-lg"
style="width: 80px; height: 80px; object-fit: cover; border: 4px solid var(--kaauh-teal-accent);"> style="width: 80px; height: 80px; object-fit: cover; border: 4px solid var(--kaauh-teal-accent);">
<div> <div>
<h3 class="card-title mb-1 fw-bold text-dark">{{ candidate.full_name|default:"Candidate Name" }}</h3> <h3 class="card-title mb-1 fw-bold text-dark">{{ candidate.full_name|default:"Candidate Name" }}</h3>
@ -442,36 +319,33 @@
<div class="card kaauh-card p-0 bg-white"> <div class="card kaauh-card p-0 bg-white">
{# Tab Navigation: Used nav-scroll for responsiveness #} {# Tab Navigation: Used nav-scroll for responsiveness #}
<div class="nav-scroll-container px-3 px-md-4 pt-3"> <div class="nav-scroll px-4 pt-3">
<div class="nav-scroll">
<ul class="nav nav-tabs" id="candidateTabs" role="tablist"> <ul class="nav nav-tabs" id="candidateTabs" role="tablist">
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link active" id="profile-tab" data-bs-toggle="tab" <button class="nav-link active" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile-details" type="button" role="tab" aria-controls="profile-details" aria-selected="true">
data-bs-target="#profile-details" type="button" role="tab" aria-controls="profile-details"
aria-selected="true">
<i class="fas fa-user-circle me-2"></i> {% trans "Profile Details" %} <i class="fas fa-user-circle me-2"></i> {% trans "Profile Details" %}
</button> </button>
</li> </li>
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link" id="applications-tab" data-bs-toggle="tab" <button class="nav-link" id="applications-tab" data-bs-toggle="tab" data-bs-target="#applications-history" type="button" role="tab" aria-controls="applications-history" aria-selected="false">
data-bs-target="#applications-history" type="button" role="tab"
aria-controls="applications-history" aria-selected="false">
<i class="fas fa-list-alt me-2"></i> {% trans "My Applications" %} <i class="fas fa-list-alt me-2"></i> {% trans "My Applications" %}
</button> </button>
</li> </li>
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link" id="documents-tab" data-bs-toggle="tab" <button class="nav-link" id="documents-tab" data-bs-toggle="tab" data-bs-target="#document-management" type="button" role="tab" aria-controls="document-management" aria-selected="false">
data-bs-target="#document-management" type="button" role="tab"
aria-controls="document-management" aria-selected="false">
<i class="fas fa-file-upload me-2"></i> {% trans "Documents" %} <i class="fas fa-file-upload me-2"></i> {% trans "Documents" %}
</button> </button>
</li> </li>
{% comment %} <li class="nav-item" role="presentation">
<button class="nav-link" id="settings-tab" data-bs-toggle="tab" data-bs-target="#account-settings" type="button" role="tab" aria-controls="account-settings" aria-selected="false">
<i class="fas fa-cogs me-2"></i> {% trans "Settings" %}
</button>
</li> {% endcomment %}
</ul> </ul>
</div> </div>
</div>
{# Tab Content #} {# Tab Content #}
<div class="tab-content p-3 p-md-5" id="candidateTabsContent"> <div class="tab-content p-4 p-md-5" id="candidateTabsContent">
<div class="tab-pane fade show active" id="profile-details" role="tabpanel" aria-labelledby="profile-tab"> <div class="tab-pane fade show active" id="profile-details" role="tabpanel" aria-labelledby="profile-tab">
<!-- Basic Information Section --> <!-- Basic Information Section -->
@ -480,27 +354,23 @@
<i class="fas fa-user me-2 text-primary-theme"></i>{% trans "Basic Information" %} <i class="fas fa-user me-2 text-primary-theme"></i>{% trans "Basic Information" %}
</h4> </h4>
<ul class="list-unstyled profile-data-list p-0"> <ul class="list-unstyled profile-data-list p-0">
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center">
<div><i class="fas fa-id-card me-2 text-primary-theme"></i> <strong>{% trans "First Name" %}</strong></div> <div><i class="fas fa-id-card me-2 text-primary-theme"></i> <strong>{% trans "First Name" %}</strong></div>
<span class="text-start text-sm-end">{{ candidate.first_name|default:"" }}</span> <span class="text-end">{{ candidate.first_name|default:"" }}</span>
</li> </li>
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center">
<div><i class="fas fa-id-card me-2 text-primary-theme"></i> <strong>{% trans "Last Name" %}</strong></div> <div><i class="fas fa-id-card me-2 text-primary-theme"></i> <strong>{% trans "Last Name" %}</strong></div>
<span class="text-start text-sm-end">{{ candidate.last_name|default:"" }}</span> <span class="text-end">{{ candidate.last_name|default:"" }}</span>
</li> </li>
{% if candidate.middle_name %} {% if candidate.middle_name %}
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center">
<div><i class="fas fa-id-card me-2 text-primary-theme"></i> <strong>{% trans "Middle Name" %}</strong></div> <div><i class="fas fa-id-card me-2 text-primary-theme"></i> <strong>{% trans "Middle Name" %}</strong></div>
<span class="text-start text-sm-end">{{ candidate.middle_name }}</span> <span class="text-end">{{ candidate.middle_name }}</span>
</li> </li>
{% endif %} {% endif %}
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center">
<div><i class="fas fa-envelope me-2 text-primary-theme"></i> <strong>{% trans "Email" %}</strong></div> <div><i class="fas fa-envelope me-2 text-primary-theme"></i> <strong>{% trans "Email" %}</strong></div>
<span class="text-start text-sm-end text-break">{{ candidate.email|default:"" }}</span> <span class="text-end">{{ candidate.email|default:"" }}</span>
</li> </li>
</ul> </ul>
</div> </div>
@ -511,24 +381,21 @@
<i class="fas fa-address-book me-2 text-primary-theme"></i>{% trans "Contact Information" %} <i class="fas fa-address-book me-2 text-primary-theme"></i>{% trans "Contact Information" %}
</h4> </h4>
<ul class="list-unstyled profile-data-list p-0"> <ul class="list-unstyled profile-data-list p-0">
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center">
<div><i class="fas fa-phone-alt me-2 text-primary-theme"></i> <strong>{% trans "Phone" %}</strong></div> <div><i class="fas fa-phone-alt me-2 text-primary-theme"></i> <strong>{% trans "Phone" %}</strong></div>
<span class="text-start text-sm-end">{{ candidate.phone|default:"" }}</span> <span class="text-end">{{ candidate.phone|default:"" }}</span>
</li> </li>
{% if candidate.address %} {% if candidate.address %}
<li class="d-flex flex-column flex-sm-row align-items-start"> <li class="d-flex align-items-start">
<div class="mb-1"><i class="fas fa-map-marker-alt me-2 text-primary-theme"></i> <strong>{%trans "Address" %}</strong></div> <div class="mb-1"><i class="fas fa-map-marker-alt me-2 text-primary-theme"></i> <strong>{% trans "Address" %}</strong></div>
<span class="text-start text-sm-end text-break">{{ candidate.address|linebreaksbr }}</span> <span class="text-end text-break">{{ candidate.address|linebreaksbr }}</span>
</li> </li>
{% endif %} {% endif %}
{% if candidate.linkedin_profile %} {% if candidate.linkedin_profile %}
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center">
<div><i class="fab fa-linkedin me-2 text-primary-theme"></i> <strong>{% trans "LinkedIn Profile" %}</strong></div> <div><i class="fab fa-linkedin me-2 text-primary-theme"></i> <strong>{% trans "LinkedIn Profile" %}</strong></div>
<span class="text-start text-sm-end"> <span class="text-end">
<a href="{{ candidate.linkedin_profile }}" target="_blank" <a href="{{ candidate.linkedin_profile }}" target="_blank" class="text-primary-theme text-decoration-none">
class="text-primary-theme text-decoration-none">
{% trans "View Profile" %} <i class="fas fa-external-link-alt ms-1"></i> {% trans "View Profile" %} <i class="fas fa-external-link-alt ms-1"></i>
</a> </a>
</span> </span>
@ -543,20 +410,17 @@
<i class="fas fa-user-circle me-2 text-primary-theme"></i>{% trans "Personal Details" %} <i class="fas fa-user-circle me-2 text-primary-theme"></i>{% trans "Personal Details" %}
</h4> </h4>
<ul class="list-unstyled profile-data-list p-0"> <ul class="list-unstyled profile-data-list p-0">
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center">
<div><i class="fas fa-calendar-alt me-2 text-primary-theme"></i> <strong>{% trans "Date of Birth" %}</strong></div> <div><i class="fas fa-calendar-alt me-2 text-primary-theme"></i> <strong>{% trans "Date of Birth" %}</strong></div>
<span class="text-start text-sm-end">{{ candidate.date_of_birth|date:"M d, Y"|default:"" }}</span> <span class="text-end">{{ candidate.date_of_birth|date:"M d, Y"|default:"" }}</span>
</li> </li>
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center">
<div><i class="fas fa-venus-mars me-2 text-primary-theme"></i> <strong>{% trans "Gender" %}</strong></div> <div><i class="fas fa-venus-mars me-2 text-primary-theme"></i> <strong>{% trans "Gender" %}</strong></div>
<span class="text-start text-sm-end">{{ candidate.get_gender_display|default:"" }}</span> <span class="text-end">{{ candidate.get_gender_display|default:"" }}</span>
</li> </li>
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center">
<div><i class="fas fa-globe me-2 text-primary-theme"></i> <strong>{% trans "Nationality" %}</strong></div> <div><i class="fas fa-globe me-2 text-primary-theme"></i> <strong>{% trans "Nationality" %}</strong></div>
<span class="text-start text-sm-end">{{ candidate.get_nationality_display|default:"" }}</span> <span class="text-end">{{ candidate.get_nationality_display|default:"" }}</span>
</li> </li>
</ul> </ul>
</div> </div>
@ -568,22 +432,51 @@
</h4> </h4>
<ul class="list-unstyled profile-data-list p-0"> <ul class="list-unstyled profile-data-list p-0">
{% if candidate.user.designation %} {% if candidate.user.designation %}
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center"> <div><i class="fas fa-user-tie me-2 text-primary-theme"></i> <strong>{% trans "Designation" %}</strong></div>
<div><i class="fas fa-user-tie me-2 text-primary-theme"></i> <strong>{% trans "Designation" <span class="text-end">{{ candidate.user.designation }}</span>
%}</strong></div>
<span class="text-start text-sm-end">{{ candidate.user.designation }}</span>
</li> </li>
{% endif %} {% endif %}
{% if candidate.gpa %} {% if candidate.gpa %}
<li <li class="d-flex justify-content-between align-items-center">
class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center">
<div><i class="fas fa-graduation-cap me-2 text-primary-theme"></i> <strong>{% trans "GPA" %}</strong></div> <div><i class="fas fa-graduation-cap me-2 text-primary-theme"></i> <strong>{% trans "GPA" %}</strong></div>
<span class="text-start text-sm-end">{{ candidate.gpa }}</span> <span class="text-end">{{ candidate.gpa }}</span>
</li> </li>
{% endif %} {% endif %}
</ul> </ul>
</div> </div>
{% comment %} <div class="alert alert-info mt-4">
<i class="fas fa-info-circle me-2"></i>
<small>{% trans "Use the 'Update Profile' button above to edit these details." %}</small>
</div> {% endcomment %}
{% comment %} <hr class="my-5"> {% endcomment %}
{% comment %} <h4 class="mb-4 fw-bold text-gray-subtle">{% trans "Quick Actions" %}</h4>
<div class="row g-3 g-md-4">
<div class="col-6 col-sm-4 col-md-4">
<a href="#applications-history" data-bs-toggle="tab" class="btn btn-action-tile w-100 d-grid text-center text-dark text-decoration-none">
<span class="action-tile-icon mb-2"><i class="fas fa-list-check"></i></span>
<span class="fw-bold">{% trans "Track Jobs" %}</span>
<span class="small text-muted d-none d-sm-block">{% trans "View stages" %}</span>
</a>
</div>
<div class="col-6 col-sm-4 col-md-4">
<a href="#document-management" data-bs-toggle="tab" class="btn btn-action-tile w-100 d-grid text-center text-dark text-decoration-none">
<span class="action-tile-icon mb-2"><i class="fas fa-cloud-upload-alt"></i></span>
<span class="fw-bold">{% trans "Manage Documents" %}</span>
<span class="small text-muted d-none d-sm-block">{% trans "Upload/View files" %}</span>
</a>
</div>
<div class="col-12 col-sm-4 col-md-4">
<a href="{% url 'kaauh_career' %}" class="btn btn-action-tile w-100 d-grid text-center text-dark text-decoration-none">
<span class="action-tile-icon mb-2"><i class="fas fa-search"></i></span>
<span class="fw-bold">{% trans "Find New Careers" %}</span>
<span class="small text-muted d-none d-sm-block">{% trans "Explore open roles" %}</span>
</a>
</div>
</div> {% endcomment %}
</div> </div>
<div class="tab-pane fade" id="applications-history" role="tabpanel" aria-labelledby="applications-tab"> <div class="tab-pane fade" id="applications-history" role="tabpanel" aria-labelledby="applications-tab">
@ -643,8 +536,7 @@
</div> </div>
{% else %} {% else %}
<div class="alert alert-info text-center p-5 rounded-3" <div class="alert alert-info text-center p-5 rounded-3" style="border: 1px dashed var(--kaauh-border); background-color: var(--kaauh-teal-light);">
style="border: 1px dashed var(--kaauh-border); background-color: var(--kaauh-teal-light);">
<i class="fas fa-info-circle fa-2x mb-3 text-primary-theme"></i> <i class="fas fa-info-circle fa-2x mb-3 text-primary-theme"></i>
<h5 class="mb-3 fw-bold text-primary-theme">{% trans "You haven't submitted any applications yet." %}</h5> <h5 class="mb-3 fw-bold text-primary-theme">{% trans "You haven't submitted any applications yet." %}</h5>
<a href="{% url 'kaauh_career' %}" class="ms-3 btn btn-main-action mt-2 rounded-pill px-4"> <a href="{% url 'kaauh_career' %}" class="ms-3 btn btn-main-action mt-2 rounded-pill px-4">
@ -659,9 +551,7 @@
<p class="text-gray-subtle">{% trans "You can upload and manage your resume, certificates, and professional documents here. These documents will be attached to your applications." %}</p> <p class="text-gray-subtle">{% trans "You can upload and manage your resume, certificates, and professional documents here. These documents will be attached to your applications." %}</p>
<button type="button" <button type="button" class="btn btn-main-action rounded-pill px-4 me-3 d-block d-sm-inline-block w-100 w-sm-auto mb-4" data-bs-toggle="modal" data-bs-target="#documentUploadModal">
class="btn btn-main-action rounded-pill px-4 me-3 d-block d-sm-inline-block w-100 w-sm-auto mb-4"
data-bs-toggle="modal" data-bs-target="#documentUploadModal">
<i class="fas fa-cloud-upload-alt me-2"></i> {% trans "Upload New Document" %} <i class="fas fa-cloud-upload-alt me-2"></i> {% trans "Upload New Document" %}
</button> </button>
@ -670,18 +560,15 @@
{# Document List #} {# Document List #}
<ul class="list-group list-group-flush"> <ul class="list-group list-group-flush">
{% for document in documents %} {% for document in documents %}
<li <li class="list-group-item d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center bg-white p-3">
class="list-group-item d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center bg-white p-3">
<div class="mb-2 mb-sm-0 fw-medium"> <div class="mb-2 mb-sm-0 fw-medium">
<i class="fas fa-file-pdf me-2 text-primary-theme"></i> <strong>{{document.document_type|title }}</strong> <i class="fas fa-file-pdf me-2 text-primary-theme"></i> <strong>{{ document.document_type|title }}</strong>
<span class="text-muted small">({{ document.file.name|split:"/"|last }})</span> <span class="text-muted small">({{ document.file.name|split:"/"|last }})</span>
</div> </div>
<div class="d-flex align-items-center mt-2 mt-sm-0"> <div class="d-flex align-items-center">
<span class="text-muted small me-3 d-none d-sm-inline">{% trans "Uploaded:" %} {{document.uploaded_at|date:"d M Y" }}</span> <span class="text-muted small me-3">{% trans "Uploaded:" %} {{ document.uploaded_at|date:"d M Y" }}</span>
<a href="{{ document.file.url }}" target="_blank" <a href="{{ document.file.url }}" target="_blank" class="btn btn-sm btn-outline-secondary me-2"><i class="fas fa-eye"></i></a>
class="btn btn-sm btn-outline-secondary me-2"><i class="fas fa-eye"></i></a> <a href="{% url 'candidate_document_delete' document.id %}" class="btn btn-sm btn-outline-danger" onclick="return confirm('{% trans "Are you sure you want to delete this document?" %}')"><i class="fas fa-trash-alt"></i></a>
<a href="{% url 'candidate_document_delete' document.id %}"
class="btn btn-sm btn-outline-danger" onclick="return confirm('{% trans " Are you sure you want to delete this document?" %}')"><i class="fas fa-trash-alt"></i></a>
</div> </div>
</li> </li>
{% empty %} {% empty %}
@ -694,41 +581,32 @@
</div> </div>
{% comment %} <div class="tab-pane fade" id="account-settings" role="tabpanel" {% comment %} <div class="tab-pane fade" id="account-settings" role="tabpanel" aria-labelledby="settings-tab">
aria-labelledby="settings-tab">
<h4 class="mb-4 fw-bold text-gray-subtle">{% trans "Security & Preferences" %}</h4> <h4 class="mb-4 fw-bold text-gray-subtle">{% trans "Security & Preferences" %}</h4>
<div class="row g-4"> <div class="row g-4">
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<div class="card kaauh-card p-4 h-100 bg-white"> <div class="card kaauh-card p-4 h-100 bg-white">
<h5 class="fw-bold"><i class="fas fa-key me-2 text-primary-theme"></i> {% trans "Password <h5 class="fw-bold"><i class="fas fa-key me-2 text-primary-theme"></i> {% trans "Password Security" %}</h5>
Security" %}</h5> <p class="text-muted small">{% trans "Update your password regularly to keep your account secure." %}</p>
<p class="text-muted small">{% trans "Update your password regularly to keep your account <button type="button" class="btn btn-outline-secondary mt-auto w-100 py-2 fw-medium" data-bs-toggle="modal" data-bs-target="#passwordModal">
secure." %}</p>
<button type="button" class="btn btn-outline-secondary mt-auto w-100 py-2 fw-medium"
data-bs-toggle="modal" data-bs-target="#passwordModal">
{% trans "Change Password" %} {% trans "Change Password" %}
</button> </button>
</div> </div>
</div> </div>
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<div class="card kaauh-card p-4 h-100 bg-white"> <div class="card kaauh-card p-4 h-100 bg-white">
<h5 class="fw-bold"><i class="fas fa-image me-2 text-primary-theme"></i> {% trans "Profile <h5 class="fw-bold"><i class="fas fa-image me-2 text-primary-theme"></i> {% trans "Profile Image" %}</h5>
Image" %}</h5> <p class="text-muted small">{% trans "Update your profile picture to personalize your account." %}</p>
<p class="text-muted small">{% trans "Update your profile picture to personalize your <button type="button" class="btn btn-outline-secondary mt-auto w-100 py-2 fw-medium" data-bs-toggle="modal" data-bs-target="#profileImageModal">
account." %}</p>
<button type="button" class="btn btn-outline-secondary mt-auto w-100 py-2 fw-medium"
data-bs-toggle="modal" data-bs-target="#profileImageModal">
{% trans "Change Image" %} {% trans "Change Image" %}
</button> </button>
</div> </div>
</div> </div>
</div> </div>
<div class="alert mt-5 py-3" <div class="alert mt-5 py-3" style="background-color: var(--danger-subtle); color: #842029; border: 1px solid #f5c2c7; border-radius: 8px;">
style="background-color: var(--danger-subtle); color: #842029; border: 1px solid #f5c2c7; border-radius: 8px;"> <i class="fas fa-exclamation-triangle me-2"></i> {% trans "To delete your profile, please contact HR support." %}
<i class="fas fa-exclamation-triangle me-2"></i> {% trans "To delete your profile, please contact HR
support." %}
</div> </div>
</div> {% endcomment %} </div> {% endcomment %}
@ -759,8 +637,7 @@
</div> </div>
<!-- Profile Image Modal (Reused from portal_profile.html) --> <!-- Profile Image Modal (Reused from portal_profile.html) -->
<div class="modal fade mt-4" id="profileImageModal" tabindex="-1" aria-labelledby="profileImageModalLabel" <div class="modal fade mt-4" id="profileImageModal" tabindex="-1" aria-labelledby="profileImageModalLabel" aria-hidden="true">
aria-hidden="true">
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
@ -768,8 +645,7 @@
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form method="post" action="{% url 'user_profile_image_update' candidate.pk %}" <form method="post" action="{% url 'user_profile_image_update' candidate.pk %}" enctype="multipart/form-data" >
enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
<div class="mb-3"> <div class="mb-3">
@ -782,8 +658,7 @@
<small class="text-muted d-block">{% trans "Current Image:" %}</small> <small class="text-muted d-block">{% trans "Current Image:" %}</small>
{# Display Link to View Current Image #} {# Display Link to View Current Image #}
<a href="{{ profile_form.instance.profile_image.url }}" target="_blank" <a href="{{ profile_form.instance.profile_image.url }}" target="_blank" class="d-inline-block me-3 text-info fw-bold">
class="d-inline-block me-3 text-info fw-bold">
{% trans "View/Download" %} ({{ profile_form.instance.profile_image.name }}) {% trans "View/Download" %} ({{ profile_form.instance.profile_image.name }})
</a> </a>
@ -797,7 +672,7 @@
{# 2. Explicitly render the 'Clear' checkbox and the Change input #} {# 2. Explicitly render the 'Clear' checkbox and the Change input #}
<div class="form-check mt-3"> <div class="form-check mt-3">
{# The ClearableFileInput widget renders itself here. It provides the "Clear" checkbox and the "Change" input field. #}
{{ profile_form.profile_image }} {{ profile_form.profile_image }}
</div> </div>
@ -826,8 +701,7 @@
</div> </div>
<!-- Document Upload Modal --> <!-- Document Upload Modal -->
<div class="modal fade mt-4" id="documentUploadModal" tabindex="-1" aria-labelledby="documentUploadModalLabel" <div class="modal fade mt-4" id="documentUploadModal" tabindex="-1" aria-labelledby="documentUploadModalLabel" aria-hidden="true">
aria-hidden="true">
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
@ -835,8 +709,7 @@
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form method="post" action="{% url 'document_upload' candidate.id %}" enctype="multipart/form-data" <form method="post" action="{% url 'document_upload' candidate.id %}" enctype="multipart/form-data" id="documentUploadForm">
id="documentUploadForm">
<input type="hidden" name="upload_target" value="person"> <input type="hidden" name="upload_target" value="person">
{% csrf_token %} {% csrf_token %}
<div class="mb-3"> <div class="mb-3">
@ -848,7 +721,7 @@
{{ document_form.file }} {{ document_form.file }}
</div> </div>
<div class="modal-footer mt-4"> <div class="modal-footer mt-4">
<button type="button" class="btn btn-lg btn-secondary" data-bs-dismiss="modal">{% trans "Close"%}</button> <button type="button" class="btn btn-lg btn-secondary" data-bs-dismiss="modal">{% trans "Close" %}</button>
<button type="submit" class="btn btn-main-action">{% trans "Upload" %}</button> <button type="submit" class="btn btn-main-action">{% trans "Upload" %}</button>
</div> </div>
</form> </form>