This commit is contained in:
Marwan Alwali 2026-01-06 18:39:09 +03:00
parent 9fbc94cddd
commit 5bb2abf8bb
20 changed files with 186 additions and 186 deletions

View File

@ -27,7 +27,7 @@ def onboarding_welcome(request, token=None):
"""
# If user is already authenticated and not provisional, redirect to dashboard
if request.user.is_authenticated and not request.user.is_provisional:
return redirect('/dashboard/')
return redirect('/')
context = {
'page_title': 'Welcome to PX360',
@ -44,7 +44,7 @@ def onboarding_step_content(request, step):
# Check if user is provisional
if not user.is_provisional:
return redirect('/dashboard/')
return redirect('/')
# Get content for user's role
content_list = get_wizard_content_for_user(user)

View File

@ -11,7 +11,7 @@
<div class="d-flex justify-content-between align-items-center">
<div>
<h1 class="h3 mb-2">
<i class="fas fa-tasks me-2"></i>
<i class="bi bi-list-check me-2"></i>
{% trans "Checklist Items Management" %}
</h1>
<p class="text-muted mb-0">
@ -19,7 +19,7 @@
</p>
</div>
<button type="button" class="btn btn-primary">
<i class="fas fa-plus me-2"></i>
<i class="bi bi-plus me-2"></i>
{% trans "Add Checklist Item" %}
</button>
</div>
@ -31,13 +31,13 @@
<div class="card-header bg-white py-3">
<div class="d-flex justify-content-between align-items-center">
<h5 class="mb-0">
<i class="fas fa-list me-2"></i>
<i class="bi bi-list me-2"></i>
{% trans "Checklist Items" %}
</h5>
<div class="input-group" style="max-width: 300px;">
<input type="text" class="form-control" id="searchInput" placeholder="{% trans 'Search items...' %}">
<button class="btn btn-outline-secondary" type="button">
<i class="fas fa-search"></i>
<i class="bi bi-search"></i>
</button>
</div>
</div>
@ -90,7 +90,7 @@
<td class="text-center">
{% if item.is_required %}
<span class="badge bg-danger">
<i class="fas fa-exclamation-circle me-1"></i>
<i class="bi bi-exclamation-circle me-1"></i>
{% trans "Yes" %}
</span>
{% else %}
@ -101,12 +101,12 @@
<td>
{% if item.is_active %}
<span class="badge bg-success">
<i class="fas fa-check me-1"></i>
<i class="bi bi-check me-1"></i>
{% trans "Active" %}
</span>
{% else %}
<span class="badge bg-secondary">
<i class="fas fa-times me-1"></i>
<i class="bi bi-x me-1"></i>
{% trans "Inactive" %}
</span>
{% endif %}
@ -117,10 +117,10 @@
<td>
<div class="btn-group" role="group">
<button class="btn btn-sm btn-outline-primary" title="{% trans 'Edit' %}">
<i class="fas fa-edit"></i>
<i class="bi bi-pencil"></i>
</button>
<button class="btn btn-sm btn-outline-danger" title="{% trans 'Delete' %}">
<i class="fas fa-trash"></i>
<i class="bi bi-trash"></i>
</button>
</div>
</td>
@ -128,7 +128,7 @@
{% empty %}
<tr>
<td colspan="8" class="text-center py-5">
<i class="fas fa-clipboard-list fa-3x text-muted mb-3"></i>
<i class="bi bi-clipboard-data fa-3x text-muted mb-3"></i>
<p class="text-muted mb-0">
{% trans "No checklist items found" %}
</p>

View File

@ -10,7 +10,7 @@
<div class="card shadow-lg border-0">
<div class="card-body p-5 text-center">
<div class="mb-5">
<i class="fas fa-check-circle fa-6x text-success mb-4"></i>
<i class="bi bi-check-circle fa-6x text-success mb-4"></i>
<h1 class="display-4 mb-3">{% trans "Welcome Aboard!" %}</h1>
<p class="lead text-muted">
{% trans "Your account has been successfully activated" %}
@ -18,7 +18,7 @@
</div>
<div class="alert alert-success mb-4">
<i class="fas fa-info-circle me-2"></i>
<i class="bi bi-info-circle me-2"></i>
{% trans "You can now log in to PX360 with your new username and password." %}
</div>
@ -26,7 +26,7 @@
<div class="col-md-4 mb-3">
<div class="card border-success">
<div class="card-body">
<i class="fas fa-book-reader fa-2x text-primary mb-2"></i>
<i class="bi bi-book fa-2x text-primary mb-2"></i>
<h5>{% trans "Learning Complete" %}</h5>
<p class="small text-muted">
{% trans "You've reviewed all system content" %}
@ -37,7 +37,7 @@
<div class="col-md-4 mb-3">
<div class="card border-success">
<div class="card-body">
<i class="fas fa-clipboard-check fa-2x text-success mb-2"></i>
<i class="bi bi-clipboard-check fa-2x text-success mb-2"></i>
<h5>{% trans "Acknowledged" %}</h5>
<p class="small text-muted">
{% trans "All required items confirmed" %}
@ -48,7 +48,7 @@
<div class="col-md-4 mb-3">
<div class="card border-success">
<div class="card-body">
<i class="fas fa-user-shield fa-2x text-info mb-2"></i>
<i class="bi bi-shield-person fa-2x text-info mb-2"></i>
<h5>{% trans "Account Active" %}</h5>
<p class="small text-muted">
{% trans "Your credentials are ready" %}
@ -60,7 +60,7 @@
<div class="alert alert-info mb-4">
<h6 class="alert-heading">
<i class="fas fa-lightbulb me-2"></i>
<i class="bi bi-lightbulb me-2"></i>
{% trans "What's Next?" %}
</h6>
<p class="mb-2 text-start">
@ -76,7 +76,7 @@
<div class="d-grid gap-2">
<a href="/login/" class="btn btn-primary btn-lg">
<i class="fas fa-sign-in-alt me-2"></i>
<i class="bi bi-box-arrow-in-right me-2"></i>
{% trans "Log In to PX360" %}
</a>
</div>

View File

@ -11,7 +11,7 @@
<div class="d-flex justify-content-between align-items-center">
<div>
<h1 class="h3 mb-2">
<i class="fas fa-book me-2"></i>
<i class="bi bi-book me-2"></i>
{% trans "Acknowledgement Content Management" %}
</h1>
<p class="text-muted mb-0">
@ -19,7 +19,7 @@
</p>
</div>
<button type="button" class="btn btn-primary">
<i class="fas fa-plus me-2"></i>
<i class="bi bi-plus me-2"></i>
{% trans "Add Content" %}
</button>
</div>
@ -31,13 +31,13 @@
<div class="card-header bg-white py-3">
<div class="d-flex justify-content-between align-items-center">
<h5 class="mb-0">
<i class="fas fa-list me-2"></i>
<i class="bi bi-list me-2"></i>
{% trans "Content Sections" %}
</h5>
<div class="input-group" style="max-width: 300px;">
<input type="text" class="form-control" id="searchInput" placeholder="{% trans 'Search content...' %}">
<button class="btn btn-outline-secondary" type="button">
<i class="fas fa-search"></i>
<i class="bi bi-search"></i>
</button>
</div>
</div>
@ -61,9 +61,9 @@
<tr>
<td class="text-center">
{% if content.icon %}
<i class="fas {{ content.icon }} fa-lg text-{{ content.color|default:'primary' }}"></i>
<i class="{{ content.icon }} fa-lg text-{{ content.color|default:'primary' }}"></i>
{% else %}
<i class="fas fa-file-alt fa-lg text-muted"></i>
<i class="bi bi-file-text fa-lg text-muted"></i>
{% endif %}
</td>
<td>
@ -85,12 +85,12 @@
<td>
{% if content.is_active %}
<span class="badge bg-success">
<i class="fas fa-check me-1"></i>
<i class="bi bi-check me-1"></i>
{% trans "Active" %}
</span>
{% else %}
<span class="badge bg-secondary">
<i class="fas fa-times me-1"></i>
<i class="bi bi-x me-1"></i>
{% trans "Inactive" %}
</span>
{% endif %}
@ -101,10 +101,10 @@
<td>
<div class="btn-group" role="group">
<button class="btn btn-sm btn-outline-primary" title="{% trans 'Edit' %}">
<i class="fas fa-edit"></i>
<i class="bi bi-pencil"></i>
</button>
<button class="btn btn-sm btn-outline-danger" title="{% trans 'Delete' %}">
<i class="fas fa-trash"></i>
<i class="bi bi-trash"></i>
</button>
</div>
</td>
@ -112,7 +112,7 @@
{% empty %}
<tr>
<td colspan="7" class="text-center py-5">
<i class="fas fa-folder-open fa-3x text-muted mb-3"></i>
<i class="bi bi-folder2-open fa-3x text-muted mb-3"></i>
<p class="text-muted mb-0">
{% trans "No content found" %}
</p>

View File

@ -11,11 +11,11 @@
<div class="d-flex justify-content-between align-items-center">
<div>
<a href="{% url 'accounts:provisional-user-list' %}" class="text-muted text-decoration-none mb-2 d-inline-block">
<i class="fas fa-arrow-left me-1"></i>
<i class="bi bi-arrow-left me-1"></i>
{% trans "Back to Provisional Users" %}
</a>
<h1 class="h3 mb-2">
<i class="fas fa-chart-line me-2"></i>
<i class="bi bi-graph-up me-2"></i>
{% trans "Onboarding Progress" %}
</h1>
<p class="text-muted mb-0">{{ user.email }}</p>
@ -47,12 +47,12 @@
</div>
{% if progress_percentage == 100 %}
<div class="alert alert-success mb-0">
<i class="fas fa-check-circle me-2"></i>
<i class="bi bi-check-circle me-2"></i>
{% trans "All required acknowledgements completed!" %}
</div>
{% else %}
<div class="alert alert-info mb-0">
<i class="fas fa-info-circle me-2"></i>
<i class="bi bi-info-circle me-2"></i>
<span class="text-muted">{{ remaining_count }} {% trans "items remaining" %}</span>
</div>
{% endif %}
@ -94,7 +94,7 @@
<div class="card">
<div class="card-header bg-white py-3">
<h5 class="mb-0">
<i class="fas fa-tasks me-2"></i>
<i class="bi bi-list-check me-2"></i>
{% trans "Acknowledgement Checklist" %}
</h5>
</div>
@ -115,9 +115,9 @@
<tr>
<td class="text-center">
{% if checklist_item.acknowledged_at %}
<i class="fas fa-check-circle text-success fa-lg"></i>
<i class="bi bi-check-circle text-success fa-lg"></i>
{% else %}
<i class="far fa-circle text-muted fa-lg"></i>
<i class="bi bi-circle text-muted fa-lg"></i>
{% endif %}
</td>
<td>
@ -169,7 +169,7 @@
<div class="card">
<div class="card-header bg-white py-3">
<h5 class="mb-0">
<i class="fas fa-history me-2"></i>
<i class="bi bi-clock-history me-2"></i>
{% trans "Activity Log" %}
</h5>
</div>
@ -180,7 +180,7 @@
<div class="d-flex">
<div class="flex-shrink-0">
<div class="timeline-marker bg-primary">
<i class="fas fa-circle"></i>
<i class="bi bi-circle"></i>
</div>
</div>
<div class="flex-grow-1 ms-3">
@ -193,7 +193,7 @@
<p class="mb-0 text-muted">{{ log.description }}</p>
{% if log.ip_address %}
<small class="text-muted">
<i class="fas fa-map-marker-alt me-1"></i>
<i class="bi bi-geo-alt me-1"></i>
{{ log.ip_address }}
</small>
{% endif %}
@ -204,7 +204,7 @@
</div>
{% empty %}
<div class="text-center py-4">
<i class="fas fa-history fa-2x text-muted mb-2"></i>
<i class="bi bi-clock-history fa-2x text-muted mb-2"></i>
<p class="text-muted mb-0">
{% trans "No activity recorded yet" %}
</p>

View File

@ -11,7 +11,7 @@
<div class="d-flex justify-content-between align-items-center">
<div>
<h1 class="h3 mb-2">
<i class="fas fa-users-cog me-2"></i>
<i class="bi bi-people me-2"></i>
{% trans "Provisional Users Management" %}
</h1>
<p class="text-muted mb-0">
@ -19,7 +19,7 @@
</p>
</div>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#createUserModal">
<i class="fas fa-plus me-2"></i>
<i class="bi bi-plus me-2"></i>
{% trans "Create Provisional User" %}
</button>
</div>
@ -33,7 +33,7 @@
<div class="card-body">
<div class="d-flex align-items-center">
<div class="flex-shrink-0">
<i class="fas fa-user-clock fa-2x text-primary"></i>
<i class="bi bi-clock fa-2x text-primary"></i>
</div>
<div class="flex-grow-1 ms-3">
<h6 class="text-muted mb-1">{% trans "Total Provisional" %}</h6>
@ -48,7 +48,7 @@
<div class="card-body">
<div class="d-flex align-items-center">
<div class="flex-shrink-0">
<i class="fas fa-check-circle fa-2x text-success"></i>
<i class="bi bi-check-circle fa-2x text-success"></i>
</div>
<div class="flex-grow-1 ms-3">
<h6 class="text-muted mb-1">{% trans "Completed" %}</h6>
@ -63,7 +63,7 @@
<div class="card-body">
<div class="d-flex align-items-center">
<div class="flex-shrink-0">
<i class="fas fa-hourglass-half fa-2x text-warning"></i>
<i class="bi bi-hourglass-split fa-2x text-warning"></i>
</div>
<div class="flex-grow-1 ms-3">
<h6 class="text-muted mb-1">{% trans "In Progress" %}</h6>
@ -80,13 +80,13 @@
<div class="card-header bg-white py-3">
<div class="d-flex justify-content-between align-items-center">
<h5 class="mb-0">
<i class="fas fa-list me-2"></i>
<i class="bi bi-list me-2"></i>
{% trans "Provisional Users List" %}
</h5>
<div class="input-group" style="max-width: 300px;">
<input type="text" class="form-control" id="searchInput" placeholder="{% trans 'Search users...' %}">
<button class="btn btn-outline-secondary" type="button">
<i class="fas fa-search"></i>
<i class="bi bi-search"></i>
</button>
</div>
</div>
@ -133,12 +133,12 @@
<td>
{% if user.acknowledgement_completed_at %}
<span class="badge bg-success">
<i class="fas fa-check me-1"></i>
<i class="bi bi-check me-1"></i>
{% trans "Completed" %}
</span>
{% else %}
<span class="badge bg-warning">
<i class="fas fa-spinner me-1"></i>
<i class="bi bi-arrow-repeat me-1"></i>
{% trans "In Progress" %}
</span>
{% endif %}
@ -165,7 +165,7 @@
{% empty %}
<tr>
<td colspan="7" class="text-center py-5">
<i class="fas fa-user-slash fa-3x text-muted mb-3"></i>
<i class="bi bi-person-x fa-3x text-muted mb-3"></i>
<p class="text-muted mb-0">
{% trans "No provisional users found" %}
</p>
@ -185,7 +185,7 @@
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="createUserModalLabel">
<i class="fas fa-user-plus me-2"></i>
<i class="bi bi-person-plus me-2"></i>
{% trans "Create Provisional User" %}
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
@ -265,7 +265,7 @@
{% trans "Cancel" %}
</button>
<button type="submit" class="btn btn-primary">
<i class="fas fa-paper-plane me-2"></i>
<i class="bi bi-send me-2"></i>
{% trans "Create & Send Invitation" %}
</button>
</div>

View File

@ -10,20 +10,20 @@
<div class="card shadow-lg border-0">
<div class="card-header bg-success text-white">
<h4 class="mb-0 text-center">
<i class="fas fa-user-check me-2"></i>
<i class="bi bi-person-check me-2"></i>
{% trans "Create Your Account" %}
</h4>
</div>
<div class="card-body p-5">
<div class="alert alert-success mb-4">
<i class="fas fa-check-circle me-2"></i>
<i class="bi bi-check-circle me-2"></i>
{% trans "Congratulations! You have completed the onboarding process. Now create your account credentials to get started." %}
</div>
<form id="activationForm">
<div class="mb-3">
<label for="username" class="form-label">
<i class="fas fa-user me-2"></i>{% trans "Username" %}
<i class="bi bi-person me-2"></i>{% trans "Username" %}
</label>
<input type="text"
class="form-control form-control-lg"
@ -40,7 +40,7 @@
<div class="mb-3">
<label for="emailDisplay" class="form-label">
<i class="fas fa-envelope me-2"></i>{% trans "Email" %}
<i class="bi bi-envelope me-2"></i>{% trans "Email" %}
</label>
<input type="email"
class="form-control form-control-lg"
@ -53,7 +53,7 @@
<div class="mb-3">
<label for="password" class="form-label">
<i class="fas fa-lock me-2"></i>{% trans "Password" %}
<i class="bi bi-lock me-2"></i>{% trans "Password" %}
</label>
<input type="password"
class="form-control form-control-lg"
@ -76,7 +76,7 @@
<div class="mb-3">
<label for="password_confirm" class="form-label">
<i class="fas fa-lock me-2"></i>{% trans "Confirm Password" %}
<i class="bi bi-lock me-2"></i>{% trans "Confirm Password" %}
</label>
<input type="password"
class="form-control form-control-lg"
@ -89,18 +89,18 @@
<div class="mb-4">
<div class="alert alert-info">
<i class="fas fa-info-circle me-2"></i>
<i class="bi bi-info-circle me-2"></i>
{% trans "Your digital signature from the previous step will be attached to your account activation for compliance records." %}
</div>
</div>
<div class="d-grid gap-2">
<button type="submit" id="activateBtn" class="btn btn-success btn-lg">
<i class="fas fa-rocket me-2"></i>
<i class="bi bi-rocket-takeoff me-2"></i>
{% trans "Activate Account" %}
</button>
<button type="button" onclick="goBack()" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>
<i class="bi bi-arrow-left me-2"></i>
{% trans "Back" %}
</button>
</div>
@ -160,10 +160,10 @@ function checkPasswordMatch() {
if (confirm) {
if (password === confirm) {
matchDiv.innerHTML = '<span class="text-success"><i class="fas fa-check"></i> {% trans "Passwords match" %}</span>';
matchDiv.innerHTML = '<span class="text-success"><i class="bi bi-check"></i> {% trans "Passwords match" %}</span>';
return true;
} else {
matchDiv.innerHTML = '<span class="text-danger"><i class="fas fa-times"></i> {% trans "Passwords do not match" %}</span>';
matchDiv.innerHTML = '<span class="text-danger"><i class="bi bi-x"></i> {% trans "Passwords do not match" %}</span>';
return false;
}
}
@ -194,7 +194,7 @@ function activateAccount() {
const activateBtn = document.getElementById('activateBtn');
activateBtn.disabled = true;
activateBtn.innerHTML = '<i class="fas fa-spinner fa-spin me-2"></i>{% trans "Activating..." %}';
activateBtn.innerHTML = '<i class="bi bi-arrow-clockwise fa-spin me-2"></i>{% trans "Activating..." %}';
fetch('/api/accounts/users/onboarding/complete/', {
method: 'POST',
@ -219,13 +219,13 @@ function activateAccount() {
window.location.href = '/accounts/onboarding/complete/';
} else {
activateBtn.disabled = false;
activateBtn.innerHTML = '<i class="fas fa-rocket me-2"></i>{% trans "Activate Account" %}';
activateBtn.innerHTML = '<i class="bi bi-rocket-takeoff me-2"></i>{% trans "Activate Account" %}';
alert('Error: ' + (data.error || 'Failed to activate account'));
}
})
.catch(error => {
activateBtn.disabled = false;
activateBtn.innerHTML = '<i class="fas fa-rocket me-2"></i>{% trans "Activate Account" %}';
activateBtn.innerHTML = '<i class="bi bi-rocket-takeoff me-2"></i>{% trans "Activate Account" %}';
alert('{% trans "An error occurred. Please try again." %}');
});
}

View File

@ -33,13 +33,13 @@
<div class="card shadow-sm">
<div class="card-header bg-primary text-white">
<h4 class="mb-0">
<i class="fas fa-clipboard-check me-2"></i>
<i class="bi bi-clipboard-check me-2"></i>
{% trans "Acknowledgement Checklist" %}
</h4>
</div>
<div class="card-body p-5">
<div class="alert alert-warning mb-4">
<i class="fas fa-exclamation-triangle me-2"></i>
<i class="bi bi-exclamation-triangle me-2"></i>
{% trans "Please review and acknowledge all required items below. Your digital signature will be recorded for compliance purposes." %}
</div>
@ -73,14 +73,14 @@
{% if item.content %}
<p class="text-info small mb-0">
<i class="fas fa-link me-1"></i>
<i class="bi bi-link me-1"></i>
{% if request.user.language == 'ar' %}{{ item.content.title_ar }}{% else %}{{ item.content.title_en }}{% endif %}
</p>
{% endif %}
</div>
{% if item.is_acknowledged %}
<i class="fas fa-check-circle text-success fa-2x ms-3"></i>
<i class="bi bi-check-circle text-success fa-2x ms-3"></i>
{% endif %}
</div>
</div>
@ -99,7 +99,7 @@
<div class="mt-2">
<button type="button" onclick="clearSignature()" class="btn btn-sm btn-outline-secondary">
<i class="fas fa-eraser me-1"></i> {% trans "Clear" %}
<i class="bi bi-eraser me-1"></i> {% trans "Clear" %}
</button>
</div>
</div>
@ -109,11 +109,11 @@
onclick="proceedToActivation()"
class="btn btn-primary btn-lg"
disabled>
<i class="fas fa-arrow-right me-2"></i>
<i class="bi bi-arrow-right me-2"></i>
{% trans "Proceed to Account Setup" %}
</button>
<button type="button" onclick="goBack()" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>
<i class="bi bi-arrow-left me-2"></i>
{% trans "Back to Content" %}
</button>
</div>

View File

@ -26,10 +26,10 @@
<div class="list-group-item
{% if content_item.id == current_content.id %}active{% endif %}
{% if content_item.id in completed_steps %}text-success{% endif %}">
<i class="fas fa-{{ content_item.icon|default:'circle' }} me-2"></i>
<i class="bi bi-{{ content_item.icon|default:'circle' }} me-2"></i>
{% if request.user.language == 'ar' %}{{ content_item.title_ar }}{% else %}{{ content_item.title_en }}{% endif %}
{% if content_item.id in completed_steps %}
<i class="fas fa-check float-end"></i>
<i class="bi bi-check float-end"></i>
{% endif %}
</div>
{% endfor %}
@ -45,7 +45,7 @@
<div class="mb-4">
<div class="d-flex align-items-center mb-3">
{% if current_content.icon %}
<i class="fas fa-{{ current_content.icon }} fa-3x me-3"
<i class="bi bi-{{ current_content.icon }} fa-3x me-3"
style="color: {{ current_content.color|default:'#007bff' }}"></i>
{% endif %}
<div>
@ -72,7 +72,7 @@
<div class="d-flex justify-content-between mt-5">
{% if previous_step %}
<button onclick="goToStep({{ previous_step }})" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>
<i class="bi bi-arrow-left me-2"></i>
{% trans "Previous" %}
</button>
{% else %}
@ -81,11 +81,11 @@
{% if next_step %}
<button onclick="completeAndNext()" class="btn btn-primary">
{% trans "Next" %} <i class="fas fa-arrow-right ms-2"></i>
{% trans "Next" %} <i class="bi bi-arrow-right ms-2"></i>
</button>
{% else %}
<button onclick="goToChecklist()" class="btn btn-success">
{% trans "Review Checklist" %} <i class="fas fa-check-circle ms-2"></i>
{% trans "Review Checklist" %} <i class="bi bi-check-circle ms-2"></i>
</button>
{% endif %}
</div>

View File

@ -11,7 +11,7 @@
<div class="card-body p-5">
<div class="text-center mb-5">
<div class="mb-4">
<i class="fas fa-rocket fa-5x text-primary"></i>
<i class="bi bi-rocket-takeoff fa-5x text-primary"></i>
</div>
<h1 class="display-4 mb-3">{% trans "Welcome to PX360!" %}</h1>
<p class="lead text-muted">
@ -20,14 +20,14 @@
</div>
<div class="alert alert-info mb-4">
<i class="fas fa-info-circle me-2"></i>
<i class="bi bi-info-circle me-2"></i>
{% trans "Please complete the onboarding wizard to set up your account and learn about the system." %}
</div>
<div class="row mb-5">
<div class="col-md-4 mb-3">
<div class="text-center p-3 border rounded">
<i class="fas fa-book-open fa-2x text-primary mb-2"></i>
<i class="bi bi-book fa-2x text-primary mb-2"></i>
<h5>{% trans "Learn" %}</h5>
<p class="small text-muted">
{% trans "Understand the PX360 system" %}
@ -36,7 +36,7 @@
</div>
<div class="col-md-4 mb-3">
<div class="text-center p-3 border rounded">
<i class="fas fa-clipboard-check fa-2x text-success mb-2"></i>
<i class="bi bi-clipboard-check fa-2x text-success mb-2"></i>
<h5>{% trans "Acknowledge" %}</h5>
<p class="small text-muted">
{% trans "Review and confirm key policies" %}
@ -45,7 +45,7 @@
</div>
<div class="col-md-4 mb-3">
<div class="text-center p-3 border rounded">
<i class="fas fa-signature fa-2x text-warning mb-2"></i>
<i class="bi bi-pen fa-2x text-warning mb-2"></i>
<h5>{% trans "Sign" %}</h5>
<p class="small text-muted">
{% trans "Create your account credentials" %}
@ -56,7 +56,7 @@
<div class="d-grid gap-2">
<button onclick="startWizard()" class="btn btn-primary btn-lg">
<i class="fas fa-arrow-right me-2"></i>
<i class="bi bi-arrow-right me-2"></i>
{% trans "Start Onboarding" %}
</button>
<p class="text-center text-muted small mt-3">

View File

@ -45,12 +45,12 @@
<h6 class="text-muted mb-2">{% trans "From" %}</h6>
{% if appreciation.is_anonymous %}
<p class="mb-0">
<i class="fas fa-user-secret text-muted me-2"></i>
<i class="bi-person-secret text-muted me-2"></i>
{% trans "Anonymous" %}
</p>
{% else %}
<p class="mb-0">
<i class="fas fa-user text-primary me-2"></i>
<i class="bi-person text-primary me-2"></i>
{{ appreciation.sender.get_full_name }}
</p>
{% endif %}
@ -58,7 +58,7 @@
<div class="col-md-6">
<h6 class="text-muted mb-2">{% trans "To" %}</h6>
<p class="mb-0">
<i class="fas fa-user text-success me-2"></i>
<i class="bi-person text-success me-2"></i>
{{ appreciation.recipient_name }}
</p>
</div>
@ -69,14 +69,14 @@
<div class="col-md-6">
<h6 class="text-muted mb-2">{% trans "Sent At" %}</h6>
<p class="mb-0">
<i class="fas fa-clock text-info me-2"></i>
<i class="bi-clock text-info me-2"></i>
{{ appreciation.sent_at|date:"F j, Y, g:i A" }}
</p>
</div>
<div class="col-md-6">
<h6 class="text-muted mb-2">{% trans "Visibility" %}</h6>
<p class="mb-0">
<i class="fas fa-eye text-warning me-2"></i>
<i class="bi-eye text-warning me-2"></i>
{{ appreciation.get_visibility_display }}
</p>
</div>
@ -84,7 +84,7 @@
{% if appreciation.acknowledged_at %}
<div class="alert alert-success">
<i class="fas fa-check-circle me-2"></i>
<i class="bi-check-circle me-2"></i>
{% trans "Acknowledged on" %} {{ appreciation.acknowledged_at|date:"F j, Y, g:i A" }}
</div>
{% endif %}
@ -95,13 +95,13 @@
<form method="post" action="{% url 'appreciation:appreciation_acknowledge' appreciation.id %}" class="d-inline">
{% csrf_token %}
<button type="submit" class="btn btn-success">
<i class="fas fa-check me-2"></i>
<i class="bi-check me-2"></i>
{% trans "Acknowledge" %}
</button>
</form>
{% endif %}
<a href="{% url 'appreciation:appreciation_list' %}" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>
<i class="bi-arrow-left me-2"></i>
{% trans "Back to List" %}
</a>
</div>
@ -113,7 +113,7 @@
<div class="card shadow-sm">
<div class="card-header bg-light">
<h5 class="card-title mb-0">
<i class="fas fa-link me-2"></i>
<i class="bi-link me-2"></i>
{% trans "Related Appreciations" %}
</h5>
</div>
@ -126,7 +126,7 @@
<small class="text-muted">{{ rel.sent_at|date:"M d, Y" }}</small>
</div>
<p class="mb-1 small text-muted">
<i class="fas fa-user me-1"></i>
<i class="bi-person me-1"></i>
{{ rel.sender.get_full_name }}
</p>
</a>
@ -147,17 +147,17 @@
<div class="card-body">
<ul class="list-unstyled mb-0">
<li class="mb-2">
<i class="fas fa-building text-muted me-2"></i>
<i class="bi-building text-muted me-2"></i>
<strong>{% trans "Hospital:" %}</strong> {{ appreciation.hospital.name }}
</li>
{% if appreciation.department %}
<li class="mb-2">
<i class="fas fa-sitemap text-muted me-2"></i>
<i class="bi-diagram-3 text-muted me-2"></i>
<strong>{% trans "Department:" %}</strong> {{ appreciation.department.name }}
</li>
{% endif %}
<li>
<i class="fas fa-id-badge text-muted me-2"></i>
<i class="bi bi-card-badge text-muted me-2"></i>
<strong>{% trans "ID:" %}</strong> #{{ appreciation.id }}
</li>
</ul>
@ -172,15 +172,15 @@
<div class="card-body">
<div class="d-grid gap-2">
<a href="{% url 'appreciation:appreciation_send' %}" class="btn btn-primary">
<i class="fas fa-paper-plane me-2"></i>
<i class="bi-send me-2"></i>
{% trans "Send Appreciation" %}
</a>
<a href="{% url 'appreciation:leaderboard_view' %}" class="btn btn-info">
<i class="fas fa-trophy me-2"></i>
<i class="bi-trophy me-2"></i>
{% trans "View Leaderboard" %}
</a>
<a href="{% url 'appreciation:my_badges_view' %}" class="btn btn-warning">
<i class="fas fa-award me-2"></i>
<i class="bi-award me-2"></i>
{% trans "My Badges" %}
</a>
</div>

View File

@ -13,7 +13,7 @@
<div class="d-flex justify-content-between align-items-center">
<div>
<h2 class="h4 mb-0">
<i class="fas fa-heart text-danger me-2"></i>
<i class="bi bi-heart-fill text-danger me-2"></i>
{% trans "Appreciation" %}
</h2>
<p class="text-muted mb-0 mt-2">
@ -21,7 +21,7 @@
</p>
</div>
<a href="{% url 'appreciation:appreciation_send' %}" class="btn btn-primary">
<i class="fas fa-paper-plane me-2"></i>
<i class="bi bi-send me-2"></i>
{% trans "Send Appreciation" %}
</a>
</div>
@ -37,7 +37,7 @@
<div class="card-body">
<div class="d-flex align-items-center">
<div class="bg-primary bg-opacity-10 p-3 rounded-circle me-3">
<i class="fas fa-inbox text-primary fa-lg"></i>
<i class="bi bi-inbox text-primary fa-lg"></i>
</div>
<div>
<h6 class="text-muted mb-1">{% trans "Received" %}</h6>
@ -52,7 +52,7 @@
<div class="card-body">
<div class="d-flex align-items-center">
<div class="bg-success bg-opacity-10 p-3 rounded-circle me-3">
<i class="fas fa-paper-plane text-success fa-lg"></i>
<i class="bi bi-send text-success fa-lg"></i>
</div>
<div>
<h6 class="text-muted mb-1">{% trans "Sent" %}</h6>
@ -67,7 +67,7 @@
<div class="card-body">
<div class="d-flex align-items-center">
<div class="bg-warning bg-opacity-10 p-3 rounded-circle me-3">
<i class="fas fa-award text-warning fa-lg"></i>
<i class="bi bi-award text-warning fa-lg"></i>
</div>
<div>
<h6 class="text-muted mb-1">{% trans "Badges Earned" %}</h6>
@ -82,12 +82,12 @@
<div class="card-body">
<div class="d-flex align-items-center">
<div class="bg-info bg-opacity-10 p-3 rounded-circle me-3">
<i class="fas fa-trophy text-info fa-lg"></i>
<i class="bi bi-trophy text-info fa-lg"></i>
</div>
<div>
<h6 class="text-muted mb-1">{% trans "Leaderboard" %}</h6>
<a href="{% url 'appreciation:leaderboard_view' %}" class="btn btn-sm btn-outline-info">
<i class="fas fa-arrow-right me-1"></i>
<i class="bi bi-arrow-right me-1"></i>
{% trans "View" %}
</a>
</div>
@ -105,7 +105,7 @@
<div class="card-body">
<div class="d-flex align-items-center">
<div class="bg-warning bg-opacity-10 p-3 rounded-circle me-3">
<i class="fas fa-trophy text-warning fa-lg"></i>
<i class="bi bi-trophy text-warning fa-lg"></i>
</div>
<div>
<h6 class="mb-0">{% trans "Leaderboard" %}</h6>
@ -122,7 +122,7 @@
<div class="card-body">
<div class="d-flex align-items-center">
<div class="bg-primary bg-opacity-10 p-3 rounded-circle me-3">
<i class="fas fa-award text-primary fa-lg"></i>
<i class="bi bi-award text-primary fa-lg"></i>
</div>
<div>
<h6 class="mb-0">{% trans "My Badges" %}</h6>
@ -139,7 +139,7 @@
<div class="card-body">
<div class="d-flex align-items-center">
<div class="bg-success bg-opacity-10 p-3 rounded-circle me-3">
<i class="fas fa-paper-plane text-success fa-lg"></i>
<i class="bi bi-send text-success fa-lg"></i>
</div>
<div>
<h6 class="mb-0">{% trans "Send Appreciation" %}</h6>
@ -195,13 +195,13 @@
<input type="text" class="form-control" id="search" name="search"
value="{{ filters.search|default:'' }}" placeholder="{% trans 'Search messages...' %}">
<button type="submit" class="btn btn-primary">
<i class="fas fa-search"></i>
<i class="bi bi-search"></i>
</button>
</div>
</div>
<div class="col-12">
<a href="{% url 'appreciation:appreciation_list' %}" class="btn btn-outline-secondary">
<i class="fas fa-redo me-2"></i>
<i class="bi bi-arrow-clockwise me-2"></i>
{% trans "Clear Filters" %}
</a>
</div>
@ -236,11 +236,11 @@
</div>
<p class="mb-2 text-muted">{{ appreciation.message_en|truncatewords:15 }}</p>
<small class="text-muted">
<i class="fas fa-clock me-1"></i>
<i class="bi bi-clock me-1"></i>
{{ appreciation.sent_at|date:"F j, Y, g:i A" }}
{% if appreciation.department %}
<span class="mx-2"></span>
<i class="fas fa-building me-1"></i>
<i class="bi bi-building me-1"></i>
{{ appreciation.department.name }}
{% endif %}
</small>
@ -302,7 +302,7 @@
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fas fa-heart text-muted fa-4x mb-3"></i>
<i class="bi bi-heart text-muted fa-4x mb-3"></i>
<h4 class="text-muted">
{% if current_tab == 'received' %}
{% trans "No appreciations received yet" %}
@ -314,7 +314,7 @@
{% trans "Start sharing appreciation with your colleagues!" %}
</p>
<a href="{% url 'appreciation:appreciation_send' %}" class="btn btn-primary">
<i class="fas fa-paper-plane me-2"></i>
<i class="bi bi-send me-2"></i>
{% trans "Send Your First Appreciation" %}
</a>
</div>

View File

@ -19,7 +19,7 @@
<div class="card shadow-sm">
<div class="card-header bg-primary text-white">
<h4 class="mb-0">
<i class="fas fa-paper-plane me-2"></i>
<i class="bi-send me-2"></i>
{% trans "Send Appreciation" %}
</h4>
</div>
@ -145,11 +145,11 @@
<!-- Submit Button -->
<div class="d-grid gap-2 d-md-flex justify-content-md-end">
<a href="{% url 'appreciation:appreciation_list' %}" class="btn btn-outline-secondary">
<i class="fas fa-times me-2"></i>
<i class="bi-x me-2"></i>
{% trans "Cancel" %}
</a>
<button type="submit" class="btn btn-success">
<i class="fas fa-paper-plane me-2"></i>
<i class="bi-send me-2"></i>
{% trans "Send Appreciation" %}
</button>
</div>
@ -164,30 +164,30 @@
<div class="card shadow-sm mb-4">
<div class="card-header bg-light">
<h6 class="card-title mb-0">
<i class="fas fa-lightbulb me-2"></i>
<i class="bi-lightbulb me-2"></i>
{% trans "Tips for Writing Appreciation" %}
</h6>
</div>
<div class="card-body">
<ul class="list-unstyled mb-0">
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi-check text-success me-2"></i>
{% trans "Be specific about what you appreciate" %}
</li>
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi-check text-success me-2"></i>
{% trans "Use the person's name when addressing them" %}
</li>
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi-check text-success me-2"></i>
{% trans "Mention the impact of their actions" %}
</li>
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi-check text-success me-2"></i>
{% trans "Be sincere and authentic" %}
</li>
<li>
<i class="fas fa-check text-success me-2"></i>
<i class="bi-check text-success me-2"></i>
{% trans "Keep it positive and uplifting" %}
</li>
</ul>
@ -198,7 +198,7 @@
<div class="card shadow-sm">
<div class="card-header bg-light">
<h6 class="card-title mb-0">
<i class="fas fa-info-circle me-2"></i>
<i class="bi-info-circle me-2"></i>
{% trans "Visibility Levels" %}
</h6>
</div>

View File

@ -20,7 +20,7 @@
<div class="card shadow-sm">
<div class="card-header bg-warning text-dark">
<h4 class="mb-0">
<i class="fas fa-award me-2"></i>
<i class="bi bi-trophy me-2"></i>
{% if form.instance.pk %}{% trans "Edit Badge" %}{% else %}{% trans "Add Badge" %}{% endif %}
</h4>
</div>
@ -146,11 +146,11 @@
<!-- Buttons -->
<div class="d-flex gap-2">
<a href="{% url 'appreciation:badge_list' %}" class="btn btn-outline-secondary">
<i class="fas fa-times me-2"></i>
<i class="bi bi-x me-2"></i>
{% trans "Cancel" %}
</a>
<button type="submit" class="btn btn-warning text-dark">
<i class="fas fa-save me-2"></i>
<i class="bi bi-save me-2"></i>
{% if form.instance.pk %}{% trans "Update" %}{% else %}{% trans "Create" %}{% endif %}
</button>
</div>
@ -168,7 +168,7 @@
</div>
<div class="card-body text-center">
<div class="badge-icon-wrapper mb-3">
<i id="icon-preview" class="{{ form.icon.value|default:'fa-trophy' }} fa-4x text-warning"></i>
<i id="icon-preview" class="{{ form.icon.value|default:'bi-trophy' }} fa-4x text-warning"></i>
</div>
<p id="name-preview" class="h5 mb-2">{{ form.name_en.value|default:'Badge Name' }}</p>
<p class="small text-muted mb-0">
@ -183,7 +183,7 @@
<div class="card shadow-sm">
<div class="card-header bg-light">
<h6 class="card-title mb-0">
<i class="fas fa-info-circle me-2"></i>
<i class="bi bi-info-circle me-2"></i>
{% trans "About Badge Criteria" %}
</h6>
</div>
@ -225,7 +225,7 @@ document.addEventListener('DOMContentLoaded', function() {
// Update icon preview
iconInput.addEventListener('input', function() {
const iconClass = this.value.trim() || 'fa-trophy';
const iconClass = this.value.trim() || 'bi-trophy';
iconPreview.className = iconClass + ' fa-4x text-warning';
});

View File

@ -16,11 +16,11 @@
<!-- Page Header -->
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>
<i class="fas fa-award text-warning me-2"></i>
<i class="bi-award text-warning me-2"></i>
{% trans "Appreciation Badges" %}
</h2>
<a href="{% url 'appreciation:badge_create' %}" class="btn btn-primary">
<i class="fas fa-plus me-2"></i>
<i class="bi-plus me-2"></i>
{% trans "Add Badge" %}
</a>
</div>
@ -66,10 +66,10 @@
</ul>
<div class="d-grid gap-2">
<a href="{% url 'appreciation:badge_edit' badge.id %}" class="btn btn-sm btn-outline-primary">
<i class="fas fa-edit me-2"></i>{% trans "Edit" %}
<i class="bi-pencil me-2"></i>{% trans "Edit" %}
</a>
<a href="{% url 'appreciation:badge_delete' badge.id %}" class="btn btn-sm btn-outline-danger">
<i class="fas fa-trash me-2"></i>{% trans "Delete" %}
<i class="bi-trash me-2"></i>{% trans "Delete" %}
</a>
</div>
</div>
@ -122,11 +122,11 @@
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fas fa-award fa-4x text-muted mb-3"></i>
<i class="bi-award fa-4x text-muted mb-3"></i>
<h4 class="text-muted">{% trans "No badges found" %}</h4>
<p class="text-muted mb-3">{% trans "Create badges to motivate and recognize achievements" %}</p>
<a href="{% url 'appreciation:badge_create' %}" class="btn btn-primary">
<i class="fas fa-plus me-2"></i>
<i class="bi-plus me-2"></i>
{% trans "Add Badge" %}
</a>
</div>

View File

@ -20,7 +20,7 @@
<div class="card shadow-sm">
<div class="card-header bg-primary text-white">
<h4 class="mb-0">
<i class="fas fa-tag me-2"></i>
<i class="bi bi-tag me-2"></i>
{% if form.instance.pk %}{% trans "Edit Category" %}{% else %}{% trans "Add Category" %}{% endif %}
</h4>
</div>
@ -129,11 +129,11 @@
<!-- Buttons -->
<div class="d-flex gap-2">
<a href="{% url 'appreciation:category_list' %}" class="btn btn-outline-secondary">
<i class="fas fa-times me-2"></i>
<i class="bi bi-x me-2"></i>
{% trans "Cancel" %}
</a>
<button type="submit" class="btn btn-primary">
<i class="fas fa-save me-2"></i>
<i class="bi bi-save me-2"></i>
{% if form.instance.pk %}{% trans "Update" %}{% else %}{% trans "Create" %}{% endif %}
</button>
</div>
@ -150,7 +150,7 @@
<h6 class="card-title mb-0">{% trans "Icon Preview" %}</h6>
</div>
<div class="card-body text-center">
<i id="icon-preview" class="{{ form.icon.value|default:'fa-heart' }} fa-4x text-primary mb-3"></i>
<i id="icon-preview" class="{{ form.icon.value|default:'bi-heart' }} fa-4x text-primary mb-3"></i>
<p id="name-preview" class="h5 mb-0">{{ form.name_en.value|default:'Category Name' }}</p>
</div>
</div>
@ -159,26 +159,26 @@
<div class="card shadow-sm">
<div class="card-header bg-light">
<h6 class="card-title mb-0">
<i class="fas fa-lightbulb me-2"></i>
<i class="bi bi-lightbulb me-2"></i>
{% trans "Tips" %}
</h6>
</div>
<div class="card-body">
<ul class="list-unstyled mb-0 small">
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi bi-check text-success me-2"></i>
{% trans "Use descriptive names for categories" %}
</li>
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi bi-check text-success me-2"></i>
{% trans "Choose appropriate icons for each category" %}
</li>
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi bi-check text-success me-2"></i>
{% trans "Colors help users quickly identify categories" %}
</li>
<li>
<i class="fas fa-check text-success me-2"></i>
<i class="bi bi-check text-success me-2"></i>
{% trans "Deactivate unused categories instead of deleting" %}
</li>
</ul>
@ -200,7 +200,7 @@ document.addEventListener('DOMContentLoaded', function() {
// Update icon preview
iconInput.addEventListener('input', function() {
const iconClass = this.value.trim() || 'fa-heart';
const iconClass = this.value.trim() || 'bi-heart';
iconPreview.className = iconClass + ' fa-4x text-primary';
});

View File

@ -16,11 +16,11 @@
<!-- Page Header -->
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>
<i class="fas fa-tags text-primary me-2"></i>
<i class="bi bi-tags text-primary me-2"></i>
{% trans "Appreciation Categories" %}
</h2>
<a href="{% url 'appreciation:category_create' %}" class="btn btn-primary">
<i class="fas fa-plus me-2"></i>
<i class="bi-plus me-2"></i>
{% trans "Add Category" %}
</a>
</div>
@ -57,10 +57,10 @@
<td>{{ category.appreciation_count }}</td>
<td class="text-center">
<a href="{% url 'appreciation:category_edit' category.id %}" class="btn btn-sm btn-outline-primary">
<i class="fas fa-edit"></i>
<i class="bi-pencil"></i>
</a>
<a href="{% url 'appreciation:category_delete' category.id %}" class="btn btn-sm btn-outline-danger">
<i class="fas fa-trash"></i>
<i class="bi-trash"></i>
</a>
</td>
</tr>
@ -70,11 +70,11 @@
</div>
{% else %}
<div class="text-center py-5">
<i class="fas fa-tags fa-4x text-muted mb-3"></i>
<i class="bi bi-tags fa-4x text-muted mb-3"></i>
<h4 class="text-muted">{% trans "No categories found" %}</h4>
<p class="text-muted mb-3">{% trans "Create categories to organize appreciations" %}</p>
<a href="{% url 'appreciation:category_create' %}" class="btn btn-primary">
<i class="fas fa-plus me-2"></i>
<i class="bi-plus me-2"></i>
{% trans "Add Category" %}
</a>
</div>

View File

@ -16,12 +16,12 @@
<!-- Page Header -->
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>
<i class="fas fa-trophy text-warning me-2"></i>
<i class="bi-trophy text-warning me-2"></i>
{% trans "Appreciation Leaderboard" %}
</h2>
<div>
<a href="{% url 'appreciation:appreciation_send' %}" class="btn btn-primary">
<i class="fas fa-paper-plane me-2"></i>
<i class="bi-send me-2"></i>
{% trans "Send Appreciation" %}
</a>
</div>
@ -71,11 +71,11 @@
</div>
<div class="col-12">
<button type="submit" class="btn btn-primary">
<i class="fas fa-filter me-2"></i>
<i class="bi-funnel me-2"></i>
{% trans "Apply Filters" %}
</button>
<a href="{% url 'appreciation:leaderboard_view' %}" class="btn btn-outline-secondary">
<i class="fas fa-redo me-2"></i>
<i class="bi-arrow-clockwise me-2"></i>
{% trans "Reset" %}
</a>
</div>
@ -106,7 +106,7 @@
<td>
{% if forloop.counter <= 3 %}
<span class="badge bg-{% if forloop.counter == 1 %}warning{% elif forloop.counter == 2 %}secondary{% else %}info{% endif %} fs-6">
{% if forloop.counter == 1 %}<i class="fas fa-crown me-1"></i>{% endif %}
{% if forloop.counter == 1 %}<i class="bi bi-trophy me-1"></i>{% endif %}
#{{ forloop.counter }}
</span>
{% else %}
@ -114,7 +114,7 @@
{% endif %}
</td>
<td>
<i class="fas fa-user text-primary me-2"></i>
<i class="bi-person text-primary me-2"></i>
{{ item.get_recipient_name }}
</td>
<td>{{ item.hospital.name }}</td>
@ -190,7 +190,7 @@
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fas fa-trophy fa-4x text-muted mb-3"></i>
<i class="bi-trophy fa-4x text-muted mb-3"></i>
<h4 class="text-muted">{% trans "No appreciations found for this period" %}</h4>
<p class="text-muted">{% trans "Try changing the filters or select a different time period" %}</p>
</div>
@ -203,7 +203,7 @@
<div class="col-md-4">
<div class="card shadow-sm h-100">
<div class="card-body text-center">
<i class="fas fa-paper-plane fa-3x text-primary mb-3"></i>
<i class="bi-send fa-3x text-primary mb-3"></i>
<h5>{% trans "Send Appreciation" %}</h5>
<p class="text-muted mb-3">{% trans "Share your appreciation with colleagues" %}</p>
<a href="{% url 'appreciation:appreciation_send' %}" class="btn btn-primary">
@ -215,7 +215,7 @@
<div class="col-md-4">
<div class="card shadow-sm h-100">
<div class="card-body text-center">
<i class="fas fa-award fa-3x text-warning mb-3"></i>
<i class="bi-award fa-3x text-warning mb-3"></i>
<h5>{% trans "View Badges" %}</h5>
<p class="text-muted mb-3">{% trans "See your earned badges" %}</p>
<a href="{% url 'appreciation:my_badges_view' %}" class="btn btn-warning">
@ -227,7 +227,7 @@
<div class="col-md-4">
<div class="card shadow-sm h-100">
<div class="card-body text-center">
<i class="fas fa-list fa-3x text-info mb-3"></i>
<i class="bi-list fa-3x text-info mb-3"></i>
<h5>{% trans "All Appreciations" %}</h5>
<p class="text-muted mb-3">{% trans "View your appreciations" %}</p>
<a href="{% url 'appreciation:appreciation_list' %}" class="btn btn-info">

View File

@ -16,12 +16,12 @@
<!-- Page Header -->
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>
<i class="fas fa-award text-warning me-2"></i>
<i class="bi bi-award text-warning me-2"></i>
{% trans "My Badges" %}
</h2>
<div>
<a href="{% url 'appreciation:appreciation_send' %}" class="btn btn-primary">
<i class="fas fa-paper-plane me-2"></i>
<i class="bi bi-send me-2"></i>
{% trans "Send Appreciation" %}
</a>
</div>
@ -32,7 +32,7 @@
<div class="col-md-4">
<div class="card shadow-sm border-primary">
<div class="card-body text-center">
<i class="fas fa-heart fa-2x text-danger mb-2"></i>
<i class="bi bi-heart fa-2x text-danger mb-2"></i>
<h3 class="mb-0">{{ total_received }}</h3>
<p class="text-muted mb-0">{% trans "Total Appreciations Received" %}</p>
</div>
@ -41,7 +41,7 @@
<div class="col-md-4">
<div class="card shadow-sm border-warning">
<div class="card-body text-center">
<i class="fas fa-award fa-2x text-warning mb-2"></i>
<i class="bi bi-award fa-2x text-warning mb-2"></i>
<h3 class="mb-0">{{ badges|length }}</h3>
<p class="text-muted mb-0">{% trans "Badges Earned" %}</p>
</div>
@ -50,7 +50,7 @@
<div class="col-md-4">
<div class="card shadow-sm border-info">
<div class="card-body text-center">
<i class="fas fa-trophy fa-2x text-info mb-2"></i>
<i class="bi bi-trophy fa-2x text-info mb-2"></i>
<h3 class="mb-0">{{ badge_progress|length }}</h3>
<p class="text-muted mb-0">{% trans "Available Badges" %}</p>
</div>
@ -64,7 +64,7 @@
<div class="card shadow-sm mb-4">
<div class="card-header bg-warning text-white">
<h5 class="card-title mb-0">
<i class="fas fa-medal me-2"></i>
<i class="bi bi-award me-2"></i>
{% trans "Earned Badges" %}
</h5>
</div>
@ -83,7 +83,7 @@
{{ user_badge.badge.description_en|truncatewords:10 }}
</p>
<small class="text-muted">
<i class="fas fa-calendar-alt me-1"></i>
<i class="bi bi-calendar me-1"></i>
{% trans "Earned on" %} {{ user_badge.earned_at|date:"F j, Y" }}
</small>
</div>
@ -136,7 +136,7 @@
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fas fa-award fa-4x text-muted mb-3"></i>
<i class="bi bi-award fa-4x text-muted mb-3"></i>
<h4 class="text-muted">{% trans "No badges earned yet" %}</h4>
<p class="text-muted">
{% trans "Start receiving appreciations to earn badges!" %}
@ -152,7 +152,7 @@
<div class="card shadow-sm">
<div class="card-header bg-light">
<h6 class="card-title mb-0">
<i class="fas fa-chart-line me-2"></i>
<i class="bi bi-graph-up me-2"></i>
{% trans "Badge Progress" %}
</h6>
</div>
@ -189,7 +189,7 @@
</div>
{% empty %}
<div class="text-center py-3">
<i class="fas fa-trophy fa-2x text-muted mb-2"></i>
<i class="bi bi-trophy fa-2x text-muted mb-2"></i>
<p class="text-muted mb-0">{% trans "No badges available" %}</p>
</div>
{% endfor %}
@ -200,30 +200,30 @@
<div class="card shadow-sm mt-3">
<div class="card-header bg-light">
<h6 class="card-title mb-0">
<i class="fas fa-lightbulb me-2"></i>
<i class="bi bi-lightbulb me-2"></i>
{% trans "How to Earn Badges" %}
</h6>
</div>
<div class="card-body">
<ul class="list-unstyled mb-0 small">
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi bi-check text-success me-2"></i>
{% trans "Receive appreciations from colleagues" %}
</li>
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi bi-check text-success me-2"></i>
{% trans "Consistently provide excellent service" %}
</li>
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi-check text-success me-2"></i>
{% trans "Be a team player" %}
</li>
<li class="mb-2">
<i class="fas fa-check text-success me-2"></i>
<i class="bi-check text-success me-2"></i>
{% trans "Show leadership qualities" %}
</li>
<li>
<i class="fas fa-check text-success me-2"></i>
<i class="bi-check text-success me-2"></i>
{% trans "Demonstrate innovation" %}
</li>
</ul>

View File

@ -34,11 +34,11 @@
<div class="h5 mb-0 font-weight-bold">{{ dashboard_summary.status_counts.total }}</div>
<small class="text-muted">
{% if dashboard_summary.trend.percentage_change > 0 %}
<i class="fas fa-arrow-up text-danger"></i> +{{ dashboard_summary.trend.percentage_change }}%
<i class="bi-arrow-up text-danger"></i> +{{ dashboard_summary.trend.percentage_change }}%
{% elif dashboard_summary.trend.percentage_change < 0 %}
<i class="fas fa-arrow-down text-success"></i> {{ dashboard_summary.trend.percentage_change }}%
<i class="bi-arrow-down text-success"></i> {{ dashboard_summary.trend.percentage_change }}%
{% else %}
<i class="fas fa-minus text-muted"></i> 0%
<i class="bi-dash text-muted"></i> 0%
{% endif %}
{% trans "vs last period" %}
</small>
@ -199,7 +199,7 @@
<td>{{ complaint.assigned_to.get_full_name|default:"Unassigned" }}</td>
<td>
<a href="{% url 'complaints:complaint_detail' complaint.id %}" class="btn btn-sm btn-primary">
<i class="fas fa-eye"></i>
<i class="bi-eye"></i>
</a>
</td>
</tr>