feat: implement admin dashboard UI and utility functions for plugin management

This commit is contained in:
Ümit Tunç
2026-04-28 22:42:15 +03:00
parent 4ad58c1b84
commit 354c63edd0
7 changed files with 206 additions and 133 deletions
+96 -76
View File
@@ -1,7 +1,9 @@
<!-- Page JS Plugins CSS -->
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css') }}">
<link rel="stylesheet"
href="{{ asset('assets/admin/js/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css') }}">
<link rel="stylesheet"
href="{{ asset('assets/admin/js/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css') }}">
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.9/css/select2.min.css" rel="stylesheet" />
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/jquery-tags-input/jquery.tagsinput.min.css') }}">
@@ -10,28 +12,36 @@
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/ion-rangeslider/css/ion.rangeSlider.skinHTML5.css') }}">
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/dropzonejs/dist/dropzone.css') }}">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />
<link rel="stylesheet" id="css-main" href="{{ asset('assets/admin/css/pelinom6.min.css') }}?v=1.3">
<link rel="stylesheet" id="css-main" href="{{ asset('assets/admin/css/citrus-core.min.css') }}?v=1.3">
<link rel="stylesheet" id="css-main" href="{{ asset('assets/admin/css/themes/pulse.min.css') }}">
<link rel="stylesheet" id="css-main" href="{{ asset('assets/admin/css/stellar.css?'.rand()) }}">
<link rel="stylesheet" id="css-main" href="{{ asset('assets/admin/css/citrus.css?' . rand()) }}">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Muli:300,400,400i,600,700">
<link href="https://fonts.googleapis.com/css?family=Oswald&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Saira+Semi+Condensed:100,300,400,700,900&display=swap&subset=latin-ext" rel="stylesheet">
<link
href="https://fonts.googleapis.com/css?family=Saira+Semi+Condensed:100,300,400,700,900&display=swap&subset=latin-ext"
rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/v4-shims.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"
crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/v4-shims.min.css"
crossorigin="anonymous" referrerpolicy="no-referrer" />
<style>
/* Font Awesome 4 to 6 Compatibility Fixes */
.fa, .fas, .far, .fab {
.fa,
.fas,
.far,
.fab {
font-family: "Font Awesome 6 Free", "Font Awesome 6 Brands", sans-serif;
}
/* Ensure outline icons use the correct font family and weight (Regular) */
.fa-clock-o:before,
.fa-star-o:before,
@@ -45,7 +55,9 @@
.fa-envelope-o:before,
.fa-folder-o:before,
.fa-folder-open-o:before,
.fa-hdd-{}o:before,
.fa-hdd- {}
o:before,
.fa-keyboard-o:before,
.fa-lemon-o:before,
.fa-lightbulb-o:before,
@@ -67,29 +79,34 @@
font-family: "Font Awesome 6 Free" !important;
font-weight: 400 !important;
}
@media (min-width: 1200px) {
.modal-xl {
max-width: 95% !important;
}
}
.modal-full {
max-width: 98% !important;
margin: 10px auto;
}
iframe.pdf-preview {
background: #eee;
}
</style>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/jquery.datetimepicker.min.css" />
<script src="{{ asset('assets/admin/js/pelinom6.core.min.js') }}" ></script>
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/jquery.datetimepicker.min.css" />
<script src="{{ asset('assets/admin/js/citrus-core.core.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/pelinom6.app.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/citrus-core.app.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/store.js') }}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" integrity="sha512-BNaRQnYJYiPSqHHDb58B0yaPfCu+Wgds8Gp/gU33kqBtgNS4tSPHuGibyoeqMV/TJlSKda6FXzoEyYGjTe+vXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"
integrity="sha512-BNaRQnYJYiPSqHHDb58B0yaPfCu+Wgds8Gp/gU33kqBtgNS4tSPHuGibyoeqMV/TJlSKda6FXzoEyYGjTe+vXA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.min.js"></script>
<script src="{{url("assets/datagridxl/datagridxl/datagridxl2.js")}}"></script>
<script src="https://cdn.jsdelivr.net/npm/fuse.js/dist/fuse.min.js"></script>
@@ -108,8 +125,8 @@
</script>
-->
<link href="https://cdn.datatables.net/v/bs4/dt-1.13.4/datatables.min.css" rel="stylesheet"/>
<link href="https://cdn.datatables.net/v/bs4/dt-1.13.4/datatables.min.css" rel="stylesheet" />
<script src="https://cdn.datatables.net/v/bs4/dt-1.13.4/datatables.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.6.2/js/dataTables.buttons.min.js"></script>
@@ -121,7 +138,8 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/plug-ins/1.10.19/sorting/datetime-moment.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/plug-ins/1.10.21/sorting/date-de.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clusterize.js/0.18.0/clusterize.min.js"></script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/clusterize.js/0.18.0/clusterize.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/clusterize.js/0.18.0/clusterize.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.9/js/select2.full.min.js"></script>
@@ -143,54 +161,56 @@ use the latest version -->
<script>
function ExportToExcel(type, fn, dl) {
var elt = document.getElementById('excel');
window.setTimeout(function(){
var wb = XLSX.utils.table_to_book(elt, { sheet: "sheet1" });
return dl ?
XLSX.write(wb, { bookType: type, bookSST: true, type: 'base64' }) :
XLSX.writeFile(wb, fn || ('{!! trim(strip_tags($__env->yieldContent('title'))) !!}.' + (type || 'xlsx')));
}, 500);
}
function ExportToExcel(type, fn, dl) {
var elt = document.getElementById('excel');
window.setTimeout(function () {
var wb = XLSX.utils.table_to_book(elt, { sheet: "sheet1" });
return dl ?
XLSX.write(wb, { bookType: type, bookSST: true, type: 'base64' }) :
XLSX.writeFile(wb, fn || ('{!! trim(strip_tags($__env->yieldContent('title'))) !!}.' + (type || 'xlsx')));
}, 500);
}
</script>
<div class="script-zone">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="{{ asset('assets/admin/js/plugins/slick/slick.min.js') }}"></script>
<!-- include summernote css/js -->
<script src="{{ asset('assets/admin/js/plugins/summernote/summernote-bs4.min.js') }}"></script>
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/summernote/summernote-bs4.css') }}">
<!-- include summernote css/js -->
<script src="{{ asset('assets/admin/js/plugins/summernote/summernote-bs4.min.js') }}"></script>
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/summernote/summernote-bs4.css') }}">
<script src="{{ asset('assets/admin/js/plugins/magnific-popup/jquery.magnific-popup.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/magnific-popup/jquery.magnific-popup.min.js') }}"></script>
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/magnific-popup/magnific-popup.css') }}">
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/slick/slick.css') }}">
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/slick/slick.css') }}">
<!-- Page JS Plugins -->
<!--<script src="{{ asset('assets/admin/js/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js') }}"></script>-->
<script src="{{ asset('assets/admin/js/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/bootstrap-maxlength/bootstrap-maxlength.min.js') }}"></script>
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/magnific-popup/magnific-popup.css') }}">
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/slick/slick.css') }}">
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/slick/slick.css') }}">
<script src="{{ asset('assets/admin/js/plugins/jquery-tags-input/jquery.tagsinput.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/jquery-auto-complete/jquery.auto-complete.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/masked-inputs/jquery.maskedinput.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/ion-rangeslider/js/ion.rangeSlider.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/pwstrength-bootstrap/pwstrength-bootstrap.min.js') }}"></script>
<!-- Page JS Plugins -->
<!--<script src="{{ asset('assets/admin/js/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js') }}"></script>-->
<script src="{{ asset('assets/admin/js/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/bootstrap-maxlength/bootstrap-maxlength.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/bootstrap-notify/bootstrap-notify.min.js') }}"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/build/jquery.datetimepicker.full.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.9/dist/css/bootstrap-select.min.css">
<script src="{{ asset('assets/admin/js/plugins/jquery-tags-input/jquery.tagsinput.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/jquery-auto-complete/jquery.auto-complete.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/masked-inputs/jquery.maskedinput.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/ion-rangeslider/js/ion.rangeSlider.min.js') }}"></script>
<script src="{{ asset('assets/admin/js/plugins/pwstrength-bootstrap/pwstrength-bootstrap.min.js') }}"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.9/dist/js/bootstrap-select.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
<script src="{{url("assets/admin/js/json-to-table.js")}}"></script>
</div>
<script src="{{ asset('assets/admin/js/plugins/bootstrap-notify/bootstrap-notify.min.js') }}"></script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/build/jquery.datetimepicker.full.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.9/dist/css/bootstrap-select.min.css">
<!-- Latest compiled and minified JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.9/dist/js/bootstrap-select.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
<script src="{{url("assets/admin/js/json-to-table.js")}}"></script>
</div>
<script>
const Stellar = {
@@ -198,14 +218,14 @@ function ExportToExcel(type, fn, dl) {
var welder = text;
var regex = /\[([A-Z0-9]+)\]/;
var result = welder.match(regex);
if(result) {
if (result) {
welder = result[1];
}
return welder;
}
}
</script>
@@ -227,26 +247,26 @@ function ExportToExcel(type, fn, dl) {
text-align: left;
max-width: 75%;
}
@media (max-width: 767px) {
.timeline {
max-width: 98%;
padding: 25px;
}
}
.timeline h1 {
font-weight: 300;
font-size: 1.4em;
}
.timeline h2,
.timeline h3 {
font-weight: 600;
font-size: 1rem;
margin-bottom: 10px;
}
.timeline .event {
border-bottom: 1px dashed #e8ebf1;
padding-bottom: 25px;
@@ -255,26 +275,26 @@ function ExportToExcel(type, fn, dl) {
background: #8080801f;
padding: 15px;
}
@media (max-width: 767px) {
.timeline .event {
padding-top: 30px;
}
}
.timeline .event:last-of-type {
padding-bottom: 0;
margin-bottom: 0;
border: none;
}
.timeline .event:before,
.timeline .event:after {
position: absolute;
display: block;
top: 0;
}
.timeline .event:before {
left: -207px;
content: attr(data-date);
@@ -283,14 +303,14 @@ function ExportToExcel(type, fn, dl) {
font-size: 0.9em;
min-width: 120px;
}
@media (max-width: 767px) {
.timeline .event:before {
left: 0px;
text-align: left;
}
}
.timeline .event:after {
-webkit-box-shadow: 0 0 0 3px rgb(206, 10, 10);
box-shadow: 0 0 0 3px rgb(206, 10, 10);
@@ -302,13 +322,13 @@ function ExportToExcel(type, fn, dl) {
content: "";
top: 5px;
}
@media (max-width: 767px) {
.timeline .event:after {
left: -31.8px;
}
}
.rtl .timeline {
border-left: 0;
text-align: right;
@@ -318,14 +338,14 @@ function ExportToExcel(type, fn, dl) {
border-top-left-radius: 4px;
border-right: 3px solid #727cf5;
}
.rtl .timeline .event::before {
left: 0;
right: -170px;
}
.rtl .timeline .event::after {
left: 0;
right: -55.8px;
}
</style>
</style>
+4 -4
View File
@@ -73,7 +73,7 @@
<!-- Row #2 -->
<div class="col-xl-4">
<a class="block block-transparent bg-image d-flex align-items-stretch" href="javascript:void(0)"
style="background-image: url('assets/media/photos/photo24@2x.jpg');">
style="background-image: url('assets/admin/media/photos/photo24@2x.jpg');">
<div class="block-content block-sticky-options pt-100 bg-black-op">
<div class="block-options block-options-left text-white">
<div class="block-options-item">
@@ -95,7 +95,7 @@
</div>
<div class="col-sm-6 col-xl-4">
<a class="block block-transparent bg-image d-flex align-items-stretch" href="javascript:void(0)"
style="background-image: url('assets/media/photos/photo32@2x.jpg');">
style="background-image: url('assets/admin/media/photos/photo32@2x.jpg');">
<div class="block-content block-sticky-options pt-100 bg-primary-dark-op">
<div class="block-options block-options-left text-white">
<div class="block-options-item">
@@ -117,7 +117,7 @@
</div>
<div class="col-sm-6 col-xl-4">
<a class="block block-transparent bg-image d-flex align-items-stretch" href="javascript:void(0)"
style="background-image: url('assets/media/photos/photo10@2x.jpg');">
style="background-image: url('assets/admin/media/photos/photo10@2x.jpg');">
<div class="block-content block-sticky-options pt-100 bg-primary-op">
<div class="block-options block-options-left text-white">
<div class="block-options-item">
@@ -143,7 +143,7 @@
<!-- Row #3 -->
<div class="col-xl-8 d-flex align-items-stretch">
<div class="block block-themed block-mode-loading-inverse block-transparent bg-image w-100"
style="background-image: url('assets/media/photos/photo34@2x.jpg');">
style="background-image: url('assets/admin/media/photos/photo34@2x.jpg');">
<div class="block-header bg-black-op">
<h3 class="block-title">
Sales <small>This week</small>