update
This commit is contained in:
@@ -13,27 +13,19 @@
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i,700,700i,900&display=swap" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/font-awesome.css' %}">
|
||||
<!-- ico-font-->
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/vendors/icofont.css' %}">
|
||||
<!-- Themify icon-->
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/vendors/themify.css' %}">
|
||||
<!-- Flag icon-->
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/vendors/flag-icon.css' %}">
|
||||
<!-- Feather icon-->
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/vendors/feather-icon.css' %}">
|
||||
<!-- Plugins css start-->
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/vendors/slick.css' %}">
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/vendors/slick-theme.css' %}">
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/vendors/scrollbar.css' %}">
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/vendors/animate.css' %}">
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/vendors/datatables.css' %}">
|
||||
<!-- Plugins css Ends-->
|
||||
<!-- Bootstrap css-->
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/vendors/bootstrap.css' %}">
|
||||
<!-- App css-->
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/style.css' %}">
|
||||
<link id="color" rel="stylesheet" href="{% static 'admin/assets/css/color-1.css' %}" media="screen">
|
||||
<!-- Responsive css-->
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/apexcharts.css' %}">
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'admin/assets/css/responsive.css' %}">
|
||||
<style>
|
||||
svg.verify-ico {
|
||||
@@ -199,6 +191,7 @@
|
||||
<li><a href="{% url "AdminHomePage" %}">Home Page</a></li>
|
||||
<li><a href="{% url "AdminAboutPage" %}">About Page</a></li>
|
||||
<li><a href="{% url "AdminServicePage" %}">Service Page</a></li>
|
||||
<li><a href="{% url "AdminProductPage" %}">Product Page</a></li>
|
||||
<li><a href="{% url "AdminProjectPage" %}">Project Page</a></li>
|
||||
<li><a href="{% url "AdminContactPage" %}">Contact Page</a></li>
|
||||
</ul>
|
||||
@@ -250,7 +243,20 @@
|
||||
<li><a href="{% url 'adminServiceCreate' %}">Create Service</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="sidebar-list"><a class="sidebar-link sidebar-title" href="#">
|
||||
<svg class="stroke-icon">
|
||||
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#stroke-others"></use>
|
||||
</svg>
|
||||
<svg class="fill-icon">
|
||||
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#fill-others"></use>
|
||||
</svg><span>Products</span></a>
|
||||
<ul class="sidebar-submenu">
|
||||
<li><a href="{% url 'adminProductList' %}">Product List</a></li>
|
||||
<li><a href="{% url 'adminProductCreate' %}">Create Product</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="sidebar-list"><a class="sidebar-link sidebar-title" href="#">
|
||||
<svg class="stroke-icon">
|
||||
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#stroke-job-search"></use>
|
||||
@@ -275,17 +281,6 @@
|
||||
<li><a href="{% url 'createUser' %}">Create User</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="sidebar-list"><a class="sidebar-link sidebar-title" href="#">
|
||||
<svg class="stroke-icon">
|
||||
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#stroke-form"></use>
|
||||
</svg>
|
||||
<svg class="fill-icon">
|
||||
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#fill-form"></use>
|
||||
</svg><span>Form Data</span></a>
|
||||
<ul class="sidebar-submenu">
|
||||
<li><a href="{% url "AdminContactList" %}">Contact Form</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="sidebar-list"><a class="sidebar-link sidebar-title" href="#">
|
||||
<svg class="stroke-icon">
|
||||
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#stroke-learning"></use>
|
||||
@@ -308,13 +303,7 @@
|
||||
<li><a href="{% url "AdminSEOSettings" %}">SEO</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li class="sidebar-main-title">
|
||||
<div>
|
||||
<h6>Applications</h6>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
{% endif %}
|
||||
<li class="sidebar-list">
|
||||
<a href="sidebar-link sidebar-title link-nav"></a>
|
||||
</li>
|
||||
@@ -342,11 +331,11 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- latest jquery-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
|
||||
<script src="{% static 'admin/assets/js/jquery.js' %}"></script>
|
||||
<!-- Bootstrap js-->
|
||||
<script src="{% static 'admin/assets/js/bootstrap/bootstrap.bundle.min.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/bootstrap/bootstrap.bundle.js' %}"></script>
|
||||
<!-- feather icon js-->
|
||||
<script src="{% static 'admin/assets/js/icons/feather-icon/feather.min.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/icons/feather-icon/feather.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/icons/feather-icon/feather-icon.js' %}"></script>
|
||||
<!-- scrollbar js-->
|
||||
<script src="{% static 'admin/assets/js/scrollbar/simplebar.js' %}"></script>
|
||||
@@ -354,32 +343,23 @@
|
||||
<!-- Sidebar jquery-->
|
||||
<script src="{% static 'admin/assets/js/config.js' %}"></script>
|
||||
<!-- Plugins JS start-->
|
||||
<script src="{% static 'admin/assets/js/chart/apex-chart/apexcharts.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/sidebar-menu.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/clock.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/slick/slick.min.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/slick/slick.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/header-slick.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/chart/apex-chart/apex-chart.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/chart/apex-chart/stock-prices.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/chart/apex-chart/moment.min.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/notify/bootstrap-notify.min.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/notify/bootstrap-notify.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/dashboard/default.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/notify/index.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/typeahead/handlebars.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/typeahead/typeahead.bundle.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/typeahead/typeahead.custom.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/typeahead-search/handlebars.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/typeahead-search/typeahead-custom.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/height-equal.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/animation/wow/wow.min.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/datatable/datatables/jquery.dataTables.min.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/animation/wow/wow.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/datatable/datatables/jquery.dataTables.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/datatable/datatables/datatable.custom.js' %}"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||
<!-- Plugins JS Ends-->
|
||||
<!-- Theme js-->
|
||||
<script src="{% static 'admin/assets/js/sweetalert2.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/script.js' %}"></script>
|
||||
<script src="{% static 'admin/assets/js/theme-customizer/customizer.js' %}"></script>
|
||||
|
||||
{% include "error/demo_mode.html" %}
|
||||
<!-- Plugin used-->
|
||||
<script>new WOW().init();</script>
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
#ww_7b6924a9addc2 {
|
||||
background-color: #9E9E9E;
|
||||
background-image: url(https://app1.weatherwidget.org/skin/img/bg/rainy_day.jpg);
|
||||
height: 337px !important;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
@@ -125,6 +124,32 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xxl-auto col-xl-3 col-sm-6 box-col-6">
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
<div class="col-xl-12">
|
||||
<div class="card widget-1">
|
||||
<div class="card-body">
|
||||
<div class="widget-content">
|
||||
<div class="widget-round primary">
|
||||
<div class="bg-round">
|
||||
<i class="fa fa-laptop" aria-hidden="true"></i>
|
||||
<svg class="half-circle svg-fill">
|
||||
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#halfcircle"></use>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>{{ product.count }}</h4><span class="f-light">Products</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xxl-auto col-xl-3 col-sm-6 box-col-6">
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
@@ -194,96 +219,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xxl-12 col-xl-12 col-sm-12 box-col-12 lghide1">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-xxl-6 col-xl-6 box-col-12">
|
||||
<div class="card widget-1 widget-with-chart">
|
||||
<div class="card-body">
|
||||
<div class="widget-content">
|
||||
<div class="widget-round success">
|
||||
<div class="bg-round">
|
||||
<i class="fa fa-file-text-o" aria-hidden="true"></i>
|
||||
<svg class="half-circle svg-fill">
|
||||
<use href="{% static 'admin/assets/svg/icon-sprite.svg' %}#halfcircle"></use>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>{{ contacts.count }}</h4><span class="f-light">Contacts</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if request.user.role == 'Admin' %}
|
||||
<div class="col-xxl-8 col-xl-7 col-md-6 col-sm-7 notification box-col-6">
|
||||
<div class="card height-equal">
|
||||
<div class="card-header card-no-border">
|
||||
<div class="header-top">
|
||||
<h5 class="m-0">Recent Contacts</h5>
|
||||
<div class="card-header-right-icon">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body pt-0">
|
||||
{% if contacts %}
|
||||
<ul>
|
||||
{% for contact in contacts|slice:":3" %}
|
||||
<li class="d-flex">
|
||||
<div class="activity-dot-{{ contact|random_class }}"></div>
|
||||
<div class="w-100 ms-3">
|
||||
<p class="d-flex justify-content-between mb-2"><span class="date-content light-background">{{ contact.created_at }} </span>
|
||||
</p>
|
||||
<h6><a href="#" data-bs-toggle="modal" data-bs-target="#editcontactModal{{ contact.id }}">{{ contact.name }}</a></h6>
|
||||
<!-- Bootstrap 4 Modal -->
|
||||
<div class="modal fade" id="editcontactModal{{ contact.id }}" tabindex="-1" role="dialog" aria-labelledby="editcontactModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="editcontactModalLabel">{{contact.name}}'s Submission</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- Include your edit form here -->
|
||||
<p><strong>Name:</strong> {{ contact.name }}</p>
|
||||
<p><strong>Email:</strong> <a href="mailto:{{ contact.email }}">{{ contact.email }}</a></p>
|
||||
<p><strong>Phone:</strong> {{ contact.phone }}</p>
|
||||
<p><strong>Subject:</strong> {{ contact.subject }}</p>
|
||||
<p><strong>Message:</strong> {{ contact.message }}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-secondary" type="button" data-bs-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span class="f-light">{{ contact.message|truncatewords:'12' }}</span>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<ul>
|
||||
<li class="">
|
||||
<div class="w-100">
|
||||
<h6>You don't have any contacts.</h6>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- Container-fluid Ends-->
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
<h6 class="mb-3">First Section</h6>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<form method="post">
|
||||
<form method="POST" enctype="multipart/form-data">
|
||||
{{form.media}}
|
||||
{% csrf_token %}
|
||||
<div class="row mb-2">
|
||||
@@ -104,7 +104,7 @@
|
||||
{{ form.years_of_experience }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row mb-2">
|
||||
<div class="col-md-4 col-sm-12 mb-2">
|
||||
<label for="{{ form.feature1.id_for_label }}">Feature 01</label>
|
||||
@@ -122,8 +122,8 @@
|
||||
|
||||
<div class="row mb-2">
|
||||
<div class="col-md-12 col-sm-12 mb-2">
|
||||
<label for="{{ form.long_description.id_for_label }}">Description </label>
|
||||
{{ form.description }}
|
||||
<label for="{{ form.long_description.id_for_label }}">Description</label>
|
||||
{{ form.long_description }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Ensure proper indentation for the closing </form> tag -->
|
||||
@@ -156,7 +156,7 @@
|
||||
<h6 class="mb-3">SEO</h6>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<form method="post">
|
||||
<form method="POST" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-sm-12 mb-2">
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
<h6 class="mb-3">SEO</h6>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<form method="post">
|
||||
<form method="POST" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-sm-12 mb-2">
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
<h6 class="mb-3">About Section</h6>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<form method="post">
|
||||
<form method="POST" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
{{form.media}}
|
||||
<div class="row mb-2">
|
||||
@@ -170,6 +170,21 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h6 class="mb-3">Product Section</h6>
|
||||
<div class="d-flex justify-content-start">
|
||||
<a href="{% url 'adminProductList' %}" class="btn btn-primary" style='margin-right:5px;'><i class="fa fa-eye"></i> View</a>
|
||||
<a href="{% url 'adminProductCreate' %}" class="btn btn-primary"><i class="fa fa-plus"></i> Create</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
@@ -205,7 +220,7 @@
|
||||
<h6 class="mb-3">SEO</h6>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<form method="post">
|
||||
<form method="POST" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-sm-12 mb-2">
|
||||
|
||||
101
templates/dashboard/main/pages/product.html
Normal file
101
templates/dashboard/main/pages/product.html
Normal file
@@ -0,0 +1,101 @@
|
||||
{% extends 'dashboard/base.html' %}
|
||||
{% load static %}
|
||||
{% block title %}{{ title }} - {{ seo_settings.meta_title }}{% endblock title %}
|
||||
{% block content %}
|
||||
<div class="page-body">
|
||||
<div class="container-fluid">
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h3>Product Page</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">Pages</li>
|
||||
<li class="breadcrumb-item active">Service Page</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">
|
||||
{% if SeoForm.errors %}
|
||||
<div class="alert alert-danger">
|
||||
<strong>Error:</strong>
|
||||
<ul>
|
||||
{% for field, errors in SeoForm.errors.items %}
|
||||
{% for error in errors %}
|
||||
<li>{{ field }}: {{ error }}</li>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% 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 %}
|
||||
<div class="row mb-1">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h6 class="mb-3">Product Section</h6>
|
||||
<div class="d-flex justify-content-start">
|
||||
<a href="{% url 'adminProductList' %}" class="btn btn-primary" style='margin-right:5px;'><i class="fa fa-eye"></i> View</a>
|
||||
<a href="{% url 'adminProductCreate' %}" class="btn btn-primary"><i class="fa fa-plus"></i> Create</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-1">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h6 class="mb-3">SEO</h6>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<form method="POST" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-sm-12 mb-2">
|
||||
<label for="{{ SeoForm.meta_title.id_for_label }}">Meta Title</label>
|
||||
{{ SeoForm.meta_title }}
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<label for="{{ SeoForm.meta_description.id_for_label }}">Meta Description</label>
|
||||
{{ SeoForm.meta_description }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Ensure proper indentation for the closing </form> tag -->
|
||||
<button type="submit" class="btn btn-primary mt-3 w-100">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Container-fluid Ends-->
|
||||
{% endblock %}
|
||||
@@ -73,7 +73,7 @@
|
||||
<h6 class="mb-3">SEO</h6>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<form method="post">
|
||||
<form method="POST" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-sm-12 mb-2">
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<h6 class="mb-3">SEO</h6>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<form method="post">
|
||||
<form method="POST" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-sm-12 mb-2">
|
||||
|
||||
126
templates/dashboard/main/product/create.html
Normal file
126
templates/dashboard/main/product/create.html
Normal file
@@ -0,0 +1,126 @@
|
||||
{% extends 'dashboard/base.html' %}
|
||||
{% load static %}
|
||||
{% block title %}{{ title }} - {{ seo_settings.meta_title }}{% endblock title %}
|
||||
{% block content %}
|
||||
<style>
|
||||
label.switch {
|
||||
margin-top: -35px;
|
||||
}
|
||||
@media only screen and (max-width: 600px) {
|
||||
#ver-pills-tab {
|
||||
display: -webkit-box;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
<div class="page-body">
|
||||
<div class="container-fluid">
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h3>Create Product</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">Products</li>
|
||||
<li class="breadcrumb-item active">Create Product</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-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<label for="{{ form.detail_page_image.id_for_label }}" class="form-label">Product Detail Page Image</label>
|
||||
{{ form.detail_page_image }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<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</label>
|
||||
{{ form.name }}
|
||||
</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">Slug ( Leave blank to auto generate )</label>
|
||||
{{ form.slug }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<label for="{{ form.fontawesome_icon_class.id_for_label }}" class="form-label">Font-Awesome Icon Class ( <a href="https://fontawesome.com/v5/search?m=free" target="_blank">Use V5</a> )</label>
|
||||
{{ form.fontawesome_icon_class }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<label for="{{ form.short_description.id_for_label }}" class="form-label">Short Description</label>
|
||||
{{ form.short_description }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<label for="{{ form.detail_page_description.id_for_label }}" class="form-label">Detail Page Description</label>
|
||||
<br>
|
||||
<div class="form-control ckf" style="">{{ form.detail_page_description }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mb-3" type="submit">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Container-fluid Ends-->
|
||||
{% endblock %}
|
||||
131
templates/dashboard/main/product/edit.html
Normal file
131
templates/dashboard/main/product/edit.html
Normal file
@@ -0,0 +1,131 @@
|
||||
{% extends 'dashboard/base.html' %}
|
||||
{% load static %}
|
||||
{% block title %}{{ title }} - {{ seo_settings.meta_title }}{% endblock title %}
|
||||
{% block content %}
|
||||
<style>
|
||||
label.switch {
|
||||
margin-top: -35px;
|
||||
}
|
||||
@media only screen and (max-width: 600px) {
|
||||
#ver-pills-tab {
|
||||
display: -webkit-box;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
<div class="page-body">
|
||||
<div class="container-fluid">
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h3>Edit Product</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">Products</li>
|
||||
<li class="breadcrumb-item active">Edit Product</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-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
{% if product.detail_page_image %}
|
||||
<img class="mb-2" style="border-radius:5px;" src="{{ product.detail_page_image.url }}" width="100" alt="Current Image">
|
||||
{% endif %}
|
||||
<br>
|
||||
<label for="{{ form.detail_page_image.id_for_label }}" class="form-label">Product Detail Page Image</label>
|
||||
<br>
|
||||
{{ form.detail_page_image }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<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</label>
|
||||
{{ form.name }}
|
||||
</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">Slug ( Leave blank to auto generate )</label>
|
||||
{{ form.slug }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<label for="{{ form.fontawesome_icon_class.id_for_label }}" class="form-label">Font-Awesome Icon Class ( <a href="https://fontawesome.com/v5/search?m=free" target="_blank">Use V5</a> )</label>
|
||||
{{ form.fontawesome_icon_class }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<label for="{{ form.short_description.id_for_label }}" class="form-label">Short Description</label>
|
||||
{{ form.short_description }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<label for="{{ form.detail_page_description.id_for_label }}" class="form-label">Detail Page Description</label>
|
||||
<br>
|
||||
<div class="form-control ckf" style="">{{ form.detail_page_description }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mb-3" type="submit">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Container-fluid Ends-->
|
||||
{% endblock %}
|
||||
116
templates/dashboard/main/product/products.html
Normal file
116
templates/dashboard/main/product/products.html
Normal file
@@ -0,0 +1,116 @@
|
||||
{% extends 'dashboard/base.html' %}
|
||||
{% load static %}
|
||||
{% block title %}{{ title }} - {{ seo_settings.meta_title }}{% endblock title %}
|
||||
{% block content %}
|
||||
|
||||
<div class="page-body">
|
||||
<div class="container-fluid">
|
||||
<div class="page-title">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h3>Products</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">Products</li>
|
||||
<li class="breadcrumb-item active">Product List</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Container-fluid starts-->
|
||||
<div class="container-fluid">
|
||||
{% 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 %}
|
||||
<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 Products</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 'adminProductCreate' %}"> <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 Blog</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>Name</th>
|
||||
<th>Slug</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for product in products %}
|
||||
<tr>
|
||||
<td>{{ forloop.counter }}</td>
|
||||
<td><a href="{% url 'adminProductEdit' product.slug %}">{{ product.name }}</a></td>
|
||||
<td>{{ product.slug }}</td>
|
||||
<td>
|
||||
<ul class="action">
|
||||
<li class="edit"> <a href="{% url 'adminProductEdit' product.slug %}"><i class="icon-pencil-alt"></i></a></li>
|
||||
<li class="delete"><a href="#" data-slug="{{ product.slug }}"><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 'adminProductDelete' id=product.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 %}
|
||||
Reference in New Issue
Block a user