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
+4 -1
View File
@@ -11,6 +11,8 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\App;
use App\Fields;
function differentValues($dizi)
@@ -1529,12 +1531,13 @@ function diger_ayarlar()
}
function fields()
function fields($content_type = [])
{
$fields = Fields::get();
$fields = json_decode($fields, true);
$fields2 = array();
foreach (@$fields as $r) {
if (in_array($r['title'], $content_type)) {
$fields2[$r['title']] = array(
"values" => explode(",", $r['values']),
@@ -1,4 +1,5 @@
.table-sm td, .table-sm th {
.table-sm td,
.table-sm th {
padding: 2px;
text-align: left;
white-space: nowrap;
@@ -6,75 +7,93 @@
text-overflow: ellipsis;
}
.table-sm input, .table-sm select, .table-sm .select2-selection {
.table-sm input,
.table-sm select,
.table-sm .select2-selection {
padding: 0px 10px;
height:30px;
border:none;
height: 30px;
border: none;
background: transparent;
}
.table-sm .select2 {
min-width:200px;
min-width: 200px;
}
.table-sm td {
min-width:10%;
min-width: 10%;
}
.sidebar-inverse #sidebar img {
filter: contrast(0) brightness(2);
}
.sidebar-inverse #sidebar input {
background:transparent;
background: transparent;
margin-bottom:10px;
margin-bottom: 10px;
color: white;
color: white;
}
.sidebar-inverse i img {
filter: invert(1) !important;
width: 33px;
}
.table-sm td:hover{
.table-sm td:hover {
/*min-width: 200px;*/
overflow:none !important;
overflow: none !important;
}
.rc-handle:hover {
background: #e0e0e0;
width: 5px;
margin-left: -2px;
}
.table-responsive {
min-height:500px
min-height: 500px
}
.table-sm .dropdown-item input {
height:initial;
height: initial;
}
.table-sm .dropdown-item {
font-size: 11px;
padding:3px
padding: 3px
}
.table-sm .dropdown-toggle {
background: none;
}
.table-sm .dropdown-menu {
max-height: 226px;
overflow: auto;
}
.data-tables input, .data-tables select, .data-tables .select2-selection {
.data-tables input,
.data-tables select,
.data-tables .select2-selection {
padding: 0px 10px;
height:30px;
border:none;
height: 30px;
border: none;
background: transparent;
}
.data-tables td, .data-tables th {
.data-tables td,
.data-tables th {
padding: 2px;
text-align: center;
white-space: nowrap;
text-overflow: ellipsis;
}
.new-form td, .new-form th {
.new-form td,
.new-form th {
padding: 2px;
text-align: center;
white-space: nowrap;
@@ -82,29 +101,34 @@ color: white;
text-overflow: ellipsis;
}
.new-form input, .new-form select, .new-form .select2-selection {
.new-form input,
.new-form select,
.new-form .select2-selection {
padding: 0px 10px;
height:30px;
height: 30px;
}
.new-form .select2 {
min-width:200px;
}
.new-form td {
min-width:10%;
min-width: 200px;
}
.new-form td:hover{
.new-form td {
min-width: 10%;
}
.new-form td:hover {
/*min-width: 200px;*/
overflow:none !important;
overflow: none !important;
}
.new-form .dropdown-item input {
height:initial;
height: initial;
}
.new-form .dropdown-item {
font-size: 11px;
padding:3px
padding: 3px
}
.new-form .dropdown-menu {
@@ -112,16 +136,17 @@ color: white;
overflow: auto;
}
.new-form .btn-sm {
.new-form .btn-sm {
height: 30px;
}
table .filter-list > button {
table .filter-list>button {
padding: 3px;
height: 12px;
}
table .filter-list > button:after {
margin:0px;
table .filter-list>button:after {
margin: 0px;
vertical-align: text-top;
margin-top: 1px;
}
@@ -131,42 +156,56 @@ table .filter-list > button:after {
height: 150px;
overflow: auto;
}
.filter-list {
position:absolute;
top:3px;
right:3px;
position: absolute;
top: 3px;
right: 3px;
z-index: 1000;
}
.filter-list > button {
.filter-list>button {
background: white !important;
}
.table-sm thead th {
position:relative;
position: relative;
}
.dx-datagrid td, .table-bordered, .table-bordered td, .table-bordered th {
.dx-datagrid td,
.table-bordered,
.table-bordered td,
.table-bordered th {
border-color: #a4a3a3 !important;
}
.sub-menu-text {
position: relative;
left: 40px;
}
.sub-menu-icon {
width: 22px !important;
}
.tab-pane {
display: none;
}
.tab-pane.active {
display: block;
}
.tab-pane.active .select2-container {
width: 100% !important;
}
.modal-content {
border-radius: 15px;
border: none; /* Optional: Cleaner look */
border: none;
/* Optional: Cleaner look */
}
.modal-header {
border-radius: 15px 15px 0 0;
}
@@ -177,7 +216,8 @@ table .filter-list > button:after {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.5rem; /* Space between icon and text */
gap: 0.5rem;
/* Space between icon and text */
vertical-align: middle;
}
@@ -185,12 +225,22 @@ table .filter-list > button:after {
.btn .material-icons,
.btn .material-symbols-outlined,
.btn svg {
font-size: 1.1em; /* Slightly larger icons usually look better */
font-size: 1.1em;
/* Slightly larger icons usually look better */
line-height: 1;
margin: 0; /* Reset margins */
margin: 0;
/* Reset margins */
}
/* Reset existing specific fix to rely on flexbox */
.btn .material-symbols-outlined {
top: 0;
}
.content-header .btn {
color: white;
}
.content-header .btn:hover {
color: black;
}
+73 -53
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,25 +12,33 @@
<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;
}
@@ -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,
@@ -73,23 +85,28 @@
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,7 +125,7 @@
</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>
@@ -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,16 +161,16 @@ 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>
@@ -160,37 +178,39 @@ function ExportToExcel(type, fn, dl) {
<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') }}">
<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>
<!-- 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/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>
<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>
<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/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>
<!-- 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,7 +218,7 @@ 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;
@@ -328,4 +348,4 @@ function ExportToExcel(type, fn, dl) {
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>