This commit is contained in:
2024-11-19 13:00:24 +07:00
commit 45e3c1f698
3462 changed files with 617437 additions and 0 deletions
+165
View File
@@ -0,0 +1,165 @@
{% extends 'dashboard/base.html' %}
{% load static %}
{% load customtag %}
{% block title %}{{ title }} - {{ seo_settings.meta_title }}{% endblock title %}
{% block content %}
<style>
/* Media query for mobile devices */
@media (max-width: 768px) {
#cke_id_description {
width: 309px !important;
}
}
/* Media query for desktop devices */
@media (min-width: 769px) {
#cke_id_description {
width: 980px !important;
position: relative;
}
}
/* CSS to style the password input container */
.password-input {
position: relative;
}
/* CSS to position the "Show" and "Hide" text on the right side */
.toggle-password {
position: absolute;
top: 74px;
right: 38px;
transform: translateY(-50%);
cursor: pointer;
}
</style>
<div class="page-body">
<div class="container-fluid">
<div class="page-title">
<div class="row">
<div class="col-6">
<h3>{{ title }}</h3>
</div>
<div class="col-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="{% url 'adminHome' %}">
<svg class="stroke-icon">
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#stroke-home"></use>
</svg>
</a>
</li>
<li class="breadcrumb-item">Users</li>
<li class="breadcrumb-item active">Create User</li>
</ol>
</div>
</div>
</div>
</div>
<!-- Container-fluid starts-->
<div class="container-fluid">
<div class="row project-cards">
<div class="col-md-12 project-list">
</div>
<div class="container">
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{form.media}}
{% if form.errors %}
<div class="alert alert-danger">
<strong>Error:</strong>
<ul>
{% for field, errors in form.errors.items %}
{% for error in errors %}
<li>{{ field }}: {{ error }}</li>
{% endfor %}
{% endfor %}
</ul>
</div>
{% endif %}
<div class="row mb-3">
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.name.id_for_label }}" class="form-label">Name <span class="text-danger">*</span></label>
{{ form.name|add_class:'form-control' }}
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.email.id_for_label }}" class="form-label">Email <span class="text-danger">*</span></label>
{{ form.email|add_class:'form-control' }}
</div>
</div>
</div>
</div>
<div class="row mb-3">
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.username.id_for_label }}" class="form-label">Username <span class="text-danger">*</span></label>
{{ form.username|add_class:'form-control' }}
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.role.id_for_label }}" class="form-label">Role <span class="text-danger">*</span></label>
{{ form.role|add_class:'form-select' }}
</div>
</div>
</div>
</div>
<div class="row mb-1">
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.password1.id_for_label }}" class="form-label">Password <span class="text-danger">*</span></label>
<input type="password" id="{{ form.password1.id_for_label }}" class="form-control" name="password1" />
<span class="toggle-password" onclick="togglePasswordVisibility('{{ form.password1.id_for_label }}')"><i class="fa fa-eye"></i></span>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.password2.id_for_label }}" class="form-label">Confirm Password <span class="text-danger">*</span></label>
<input type="password" id="{{ form.password2.id_for_label }}" class="form-control" name="password2" />
<span class="toggle-password" onclick="togglePasswordVisibility('{{ form.password2.id_for_label }}')"><i class="fa fa-eye"></i></span>
</div>
</div>
</div>
</div>
<script>
// JavaScript to toggle password visibility
function togglePasswordVisibility(inputId) {
var input = document.getElementById(inputId);
var toggle = document.querySelector('[id="' + inputId + '"] + .toggle-password');
if (input.type === 'password') {
input.type = 'text';
toggle.innerHTML = '<i class="fa fa-eye-slash"></i>';
} else {
input.type = 'password';
toggle.innerHTML = '<i class="fa fa-eye"></i>';
}
}
</script>
<!-- Add more form fields as needed -->
<button class="btn btn-primary mb-5" type="submit">Save</button>
</form>
</div>
</div>
</div>
</div>
<!-- Container-fluid Ends-->
{% endblock %}
+218
View File
@@ -0,0 +1,218 @@
{% extends 'dashboard/base.html' %}
{% load static %}
{% load customtag %}
{% block title %}{{ title }} - {{ seo_settings.meta_title }}{% endblock title %}
{% block content %}
<style>
/* Media query for mobile devices */
@media (max-width: 768px) {
#cke_id_description {
width: 309px !important;
}
}
/* Media query for desktop devices */
@media (min-width: 769px) {
#cke_id_description {
width: 980px !important;
position: relative;
}
}
</style>
<div class="page-body">
<div class="container-fluid">
<div class="page-title">
<div class="row">
<div class="col-6">
<h3>{{ title }}</h3>
</div>
<div class="col-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="{% url 'adminHome' %}">
<svg class="stroke-icon">
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#stroke-home"></use>
</svg>
</a>
</li>
<li class="breadcrumb-item">Users</li>
<li class="breadcrumb-item active">Edit Profile</li>
</ol>
</div>
</div>
</div>
</div>
<!-- Container-fluid starts-->
<div class="container-fluid">
<div class="row project-cards">
<div class="col-md-12 project-list">
</div>
<div class="container">
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{form.media}}
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert">
{{ message }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}
{% endif %}
{% if form.errors %}
<div class="alert alert-danger">
<strong>Error:</strong>
<ul>
{% for field, errors in form.errors.items %}
{% for error in errors %}
<li>{{ field }}: {{ error }}</li>
{% endfor %}
{% endfor %}
</ul>
</div>
{% endif %}
<div class="row mb-3">
<div class="col-md-12">
<div class="card">
<div class="card-body">
<label for="{{ form.profile_picture.id_for_label }}" class="form-label">Profile Picture <span class="text-danger">*</span></label>
{% if profile.profile_picture %}
<br>
<img class="currentImg" style="border-radius:10px; width:100px;" src="{{ profile.profile_picture.url }}" alt="Current Image">
<br>
{% endif %}
{{ form.profile_picture }}
</div>
</div>
</div>
</div>
<div class="row mb-3">
<div class="col-md-4">
<div class="card">
<div class="card-body">
<label for="{{ form.name.id_for_label }}" class="form-label">Name <span class="text-danger">*</span></label>
{{ form.name }}
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<label for="{{ form.email.id_for_label }}" class="form-label">Email <span class="text-danger">*</span></label>
{{ form.email}}
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<label for="{{ form.phone.id_for_label }}" class="form-label">Phone <span class="text-danger">*</span></label>
{{ form.phone}}
</div>
</div>
</div>
</div>
<div class="row mb-3">
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.role.id_for_label }}" class="form-label">Role <span class="text-danger">*</span></label>
{{ form.role|add_class:'form-select' }}
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.slug.id_for_label }}" class="form-label">Profile Slug <span class="text-danger">*</span></label>
{{ form.slug }}
</div>
</div>
</div>
</div>
<div class="row mb-3">
<div class="col-md-4">
<div class="card">
<div class="card-body">
<label for="{{ form.address.id_for_label }}" class="form-label">Address <span class="text-danger">*</span></label>
{{ form.address }}
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<label for="{{ form.city.id_for_label }}" class="form-label">City <span class="text-danger">*</span></label>
{{ form.city }}
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<label for="{{ form.state.id_for_label }}" class="form-label">State <span class="text-danger">*</span></label>
{{ form.state }}
</div>
</div>
</div>
</div>
<div class="row mb-3">
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.zipcode.id_for_label }}" class="form-label">Zipcode <span class="text-danger">*</span></label>
{{ form.zipcode }}
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.country.id_for_label }}" class="form-label">Country <span class="text-danger">*</span></label>
{{ form.country }}
</div>
</div>
</div>
</div>
<div class="row mb-1">
<div class="col-md-4">
<div class="card">
<div class="card-body">
<label for="{{ form.facebook.id_for_label }}" class="form-label">Facebook <span class="text-danger">*</span></label>
{{ form.facebook }}
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<label for="{{ form.instagram.id_for_label }}" class="form-label">Instagram <span class="text-danger">*</span></label>
{{ form.instagram }}
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<label for="{{ form.linkedin.id_for_label }}" class="form-label">Linkedin <span class="text-danger">*</span></label>
{{ form.linkedin }}
</div>
</div>
</div>
</div>
<!-- Add more form fields as needed -->
<button class="btn btn-primary mb-5" type="submit">Save</button>
</form>
</div>
</div>
</div>
</div>
<!-- Container-fluid Ends-->
{% endblock %}
+162
View File
@@ -0,0 +1,162 @@
{% extends 'dashboard/base.html' %}
{% load static %}
{% load customtag %}
{% block title %}{{ title }} - {{ seo_settings.meta_title }}{% endblock title %}
{% block content %}
<style>
/* Media query for mobile devices */
@media (max-width: 768px) {
#cke_id_description {
width: 309px !important;
}
}
/* Media query for desktop devices */
@media (min-width: 769px) {
#cke_id_description {
width: 980px !important;
position: relative;
}
}
.password-input {
position: relative;
}
/* CSS to position the "Show" and "Hide" text inside the field */
.toggle-password {
position: absolute;
top: 50%;
right: 10px; /* Adjust this value to control the right-side position */
transform: translateY(-50%);
cursor: pointer;
padding: 2px 5px;
}
</style>
<div class="page-body">
<div class="container-fluid">
<div class="page-title">
<div class="row">
<div class="col-6">
<h3>{{ title }} of {{profile.name}}</h3>
</div>
<div class="col-6">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="{% url 'adminHome' %}">
<svg class="stroke-icon">
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#stroke-home"></use>
</svg>
</a>
</li>
<li class="breadcrumb-item">User</li>
<li class="breadcrumb-item">{{ profile.user }}</li>
<li class="breadcrumb-item active">Change Password</li>
</ol>
</div>
</div>
</div>
</div>
<!-- Container-fluid starts-->
<div class="container-fluid">
<div class="row project-cards">
<div class="col-md-12 project-list">
</div>
<div class="container">
<form method="POST" action="" enctype="multipart/form-data">
{% csrf_token %}
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert">
{{ message }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}
{% endif %}
{% if form.errors %}
<div class="alert alert-danger">
<ul>
{% for field in form %}
{% if field.errors %}
<li>{{ field.label }}: {{ field.errors }}</li>
{% endif %}
{% endfor %}
</ul>
</div>
{% endif %}
<div class="row mb-2">
<div class="col-md-12">
<div class="card">
<div class="card-body">
<label for="" class="form-label">Username ( Read Only )</label>
<input type="text" value={{ profile.user }} id="" readonly class="form-control" name="username" />
</div>
</div>
</div>
</div>
<div class="row mb-2">
<div class="col-md-12">
<div class="card">
<div class="card-body">
<label for="{{ form.old_password.id_for_label }}" class="form-label">Old Password <span class="text-danger">*</span></label>
<div class="password-input">
<input type="password" id="{{ form.old_password.id_for_label }}" class="form-control" name="old_password" />
<span class="toggle-password" onclick="togglePasswordVisibility('{{ form.old_password.id_for_label }}')"><i class="fa fa-eye"></i></span>
</div>
</div>
</div>
</div>
</div>
<div class="row mb-1">
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.new_password1.id_for_label }}" class="form-label">New Password <span class="text-danger">*</span></label>
<div class="password-input">
<input type="password" id="{{ form.new_password1.id_for_label }}" class="form-control" name="new_password1" />
<span class="toggle-password" onclick="togglePasswordVisibility('{{ form.new_password1.id_for_label }}')"><i class="fa fa-eye"></i></span>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<label for="{{ form.new_password2.id_for_label }}" class="form-label">Confirm Password <span class="text-danger">*</span></label>
<div class="password-input">
<input type="password" id="{{ form.new_password2.id_for_label }}" class="form-control" name="new_password2" />
<span class="toggle-password" onclick="togglePasswordVisibility('{{ form.new_password2.id_for_label }}')"><i class="fa fa-eye"></i></span>
</div>
</div>
</div>
</div>
</div>
<!-- Add more form fields as needed -->
<button class="btn btn-primary mb-5" type="submit">Save</button>
</form>
</div>
</div>
</div>
</div>
<script>
// JavaScript to toggle password visibility
function togglePasswordVisibility(inputId) {
var input = document.getElementById(inputId);
var toggle = document.querySelector('[id="' + inputId + '"] + .toggle-password');
if (input.type === 'password') {
input.type = 'text';
toggle.innerHTML = '<i class="fa fa-eye-slash"></i>';
} else {
input.type = 'password';
toggle.innerHTML = '<i class="fa fa-eye"></i>';
}
}
</script>
<!-- Container-fluid Ends-->
{% endblock %}
+127
View File
@@ -0,0 +1,127 @@
{% extends 'dashboard/base.html' %}
{% load static %}
{% block title %}{{ title }} - {{ seo_settings.meta_title }}{% endblock title %}
{% block content %}
<style>
i.fa.fa-key {
color: darkgoldenrod;
}
</style>
<div class="page-body">
<div class="container-fluid">
<div class="page-title">
<div class="row">
<div class="col-6">
<h3>Users</h3>
</div>
<div class="col-6">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{% url 'adminHome' %}">
<svg class="stroke-icon">
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#stroke-home"></use>
</svg></a></li>
<li class="breadcrumb-item">Users</li>
<li class="breadcrumb-item active">User List</li>
</ol>
</div>
</div>
</div>
</div>
<!-- Container-fluid starts-->
<div class="container-fluid">
<div class="col-md-12 project-list">
<div class="card">
<div class="row">
<div class="col-md-6 p-0 d-flex">
<ul class="nav nav-tabs border-tab" id="top-tab" role="tablist">
<li class="nav-item"><a class="nav-link active" id="top-home-tab" data-bs-toggle="tab" href="#top-home" role="tab" aria-controls="top-home" aria-selected="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-target"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="2"></circle></svg>All Users</a></li>
</ul>
</div>
<div class="col-md-6 p-0">
<div class="form-group mb-0 me-0"></div><a class="btn btn-primary" href="{% url 'createUser' %}"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-plus-square"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line></svg>Create New User</a>
</div>
</div>
</div>
</div>
<div class="row">
<!-- Zero Configuration Starts-->
<div class="col-sm-12">
<div class="card">
<div class="card-body">
<div class="table-responsive">
<table class="display" id="basic-1">
<thead>
<tr>
<th>#</th>
<th>Image</th>
<th>Name</th>
<th>Role</th>
<th>Email</th>
<th>Phone</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr>
<td>{{ forloop.counter }}</td>
<td><img src="{{ user.getUserImage }}" style="border-radius:10px;" width="50" alt="userProfilePicture"></td>
<td><a href="{% url 'editUserProfile' user.id %}">{{ user.name }}</a></td>
<td>{{ user.user.role }}</td>
{% if user.email %}
<td>{{ user.email }}</td>
{% else %}
<td>Not added</td>
{% endif %}
{% if user.phone %}
<td>{{ user.phone }}</td>
{% else %}
<td>Not added</td>
{% endif %}
<td>
<ul class="action">
<li class="edit"> <a href="{% url 'editUserProfile' user.id %}"><i class="icon-pencil-alt"></i></a></li>
<li class="password"> <a href="{% url 'changePassword' user.id %}"><i class="fa fa-key"></i></a></li>
<li class="delete"><a href="#" data-slug="{{ user.id }}"><i class="icon-trash"></i></a></li>
<script>
document.addEventListener('DOMContentLoaded', (event) => {
var deleteButtons = document.querySelectorAll('.icon-trash');
deleteButtons.forEach(function(button) {
button.addEventListener('click', function (event) {
event.preventDefault();
var url = "{% url 'deleteUser' user.id %}";
Swal.fire({
title: 'Are you sure?',
text: "You won't be able to revert this!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!'
}).then((result) => {
if (result.isConfirmed) {
window.location.href = url;
}
})
});
});
});
</script>
</ul>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Zero Configuration Ends-->
</div>
</div>
</div>
{% endblock %}