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\Hash;
use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
use App\Fields;
function differentValues($dizi) function differentValues($dizi)
@@ -1529,12 +1531,13 @@ function diger_ayarlar()
} }
function fields() function fields($content_type = [])
{ {
$fields = Fields::get(); $fields = Fields::get();
$fields = json_decode($fields, true); $fields = json_decode($fields, true);
$fields2 = array(); $fields2 = array();
foreach (@$fields as $r) { foreach (@$fields as $r) {
if (in_array($r['title'], $content_type)) { if (in_array($r['title'], $content_type)) {
$fields2[$r['title']] = array( $fields2[$r['title']] = array(
"values" => explode(",", $r['values']), "values" => explode(",", $r['values']),
@@ -1,4 +1,5 @@
.table-sm td, .table-sm th { .table-sm td,
.table-sm th {
padding: 2px; padding: 2px;
text-align: left; text-align: left;
white-space: nowrap; white-space: nowrap;
@@ -6,21 +7,27 @@
text-overflow: ellipsis; 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; padding: 0px 10px;
height: 30px; height: 30px;
border: none; border: none;
background: transparent; background: transparent;
} }
.table-sm .select2 { .table-sm .select2 {
min-width: 200px; min-width: 200px;
} }
.table-sm td { .table-sm td {
min-width: 10%; min-width: 10%;
} }
.sidebar-inverse #sidebar img { .sidebar-inverse #sidebar img {
filter: contrast(0) brightness(2); filter: contrast(0) brightness(2);
} }
.sidebar-inverse #sidebar input { .sidebar-inverse #sidebar input {
background: transparent; background: transparent;
@@ -29,52 +36,64 @@ margin-bottom:10px;
color: white; color: white;
} }
.sidebar-inverse i img { .sidebar-inverse i img {
filter: invert(1) !important; filter: invert(1) !important;
width: 33px; width: 33px;
} }
.table-sm td:hover { .table-sm td:hover {
/*min-width: 200px;*/ /*min-width: 200px;*/
overflow: none !important; overflow: none !important;
} }
.rc-handle:hover { .rc-handle:hover {
background: #e0e0e0; background: #e0e0e0;
width: 5px; width: 5px;
margin-left: -2px; margin-left: -2px;
} }
.table-responsive { .table-responsive {
min-height: 500px min-height: 500px
} }
.table-sm .dropdown-item input { .table-sm .dropdown-item input {
height: initial; height: initial;
} }
.table-sm .dropdown-item { .table-sm .dropdown-item {
font-size: 11px; font-size: 11px;
padding: 3px padding: 3px
} }
.table-sm .dropdown-toggle { .table-sm .dropdown-toggle {
background: none; background: none;
} }
.table-sm .dropdown-menu { .table-sm .dropdown-menu {
max-height: 226px; max-height: 226px;
overflow: auto; 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; padding: 0px 10px;
height: 30px; height: 30px;
border: none; border: none;
background: transparent; background: transparent;
} }
.data-tables td, .data-tables th { .data-tables td,
.data-tables th {
padding: 2px; padding: 2px;
text-align: center; text-align: center;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.new-form td, .new-form th { .new-form td,
.new-form th {
padding: 2px; padding: 2px;
text-align: center; text-align: center;
white-space: nowrap; white-space: nowrap;
@@ -82,14 +101,18 @@ color: white;
text-overflow: ellipsis; 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; padding: 0px 10px;
height: 30px; height: 30px;
} }
.new-form .select2 { .new-form .select2 {
min-width: 200px; min-width: 200px;
} }
.new-form td { .new-form td {
min-width: 10%; min-width: 10%;
} }
@@ -102,6 +125,7 @@ color: white;
.new-form .dropdown-item input { .new-form .dropdown-item input {
height: initial; height: initial;
} }
.new-form .dropdown-item { .new-form .dropdown-item {
font-size: 11px; font-size: 11px;
padding: 3px padding: 3px
@@ -120,6 +144,7 @@ table .filter-list > button {
padding: 3px; padding: 3px;
height: 12px; height: 12px;
} }
table .filter-list>button:after { table .filter-list>button:after {
margin: 0px; margin: 0px;
vertical-align: text-top; vertical-align: text-top;
@@ -131,42 +156,56 @@ table .filter-list > button:after {
height: 150px; height: 150px;
overflow: auto; overflow: auto;
} }
.filter-list { .filter-list {
position: absolute; position: absolute;
top: 3px; top: 3px;
right: 3px; right: 3px;
z-index: 1000; z-index: 1000;
} }
.filter-list>button { .filter-list>button {
background: white !important; background: white !important;
} }
.table-sm thead th { .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; border-color: #a4a3a3 !important;
} }
.sub-menu-text { .sub-menu-text {
position: relative; position: relative;
left: 40px; left: 40px;
} }
.sub-menu-icon { .sub-menu-icon {
width: 22px !important; width: 22px !important;
} }
.tab-pane { .tab-pane {
display: none; display: none;
} }
.tab-pane.active { .tab-pane.active {
display: block; display: block;
} }
.tab-pane.active .select2-container { .tab-pane.active .select2-container {
width: 100% !important; width: 100% !important;
} }
.modal-content { .modal-content {
border-radius: 15px; border-radius: 15px;
border: none; /* Optional: Cleaner look */ border: none;
/* Optional: Cleaner look */
} }
.modal-header { .modal-header {
border-radius: 15px 15px 0 0; border-radius: 15px 15px 0 0;
} }
@@ -177,7 +216,8 @@ table .filter-list > button:after {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 0.5rem; /* Space between icon and text */ gap: 0.5rem;
/* Space between icon and text */
vertical-align: middle; vertical-align: middle;
} }
@@ -185,12 +225,22 @@ table .filter-list > button:after {
.btn .material-icons, .btn .material-icons,
.btn .material-symbols-outlined, .btn .material-symbols-outlined,
.btn svg { .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; line-height: 1;
margin: 0; /* Reset margins */ margin: 0;
/* Reset margins */
} }
/* Reset existing specific fix to rely on flexbox */ /* Reset existing specific fix to rely on flexbox */
.btn .material-symbols-outlined { .btn .material-symbols-outlined {
top: 0; top: 0;
} }
.content-header .btn {
color: white;
}
.content-header .btn:hover {
color: black;
}
+37 -17
View File
@@ -1,7 +1,9 @@
<!-- Page JS Plugins CSS --> <!-- Page JS Plugins CSS -->
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css') }}"> <link rel="stylesheet"
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css') }}"> 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 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') }}"> <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/ion-rangeslider/css/ion.rangeSlider.skinHTML5.css') }}">
<link rel="stylesheet" href="{{ asset('assets/admin/js/plugins/dropzonejs/dist/dropzone.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/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 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=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 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/all.min.css"
<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" /> 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> <style>
/* Font Awesome 4 to 6 Compatibility Fixes */ /* 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; font-family: "Font Awesome 6 Free", "Font Awesome 6 Brands", sans-serif;
} }
@@ -45,7 +55,9 @@
.fa-envelope-o:before, .fa-envelope-o:before,
.fa-folder-o:before, .fa-folder-o:before,
.fa-folder-open-o:before, .fa-folder-open-o:before,
.fa-hdd-{}o:before, .fa-hdd- {}
o:before,
.fa-keyboard-o:before, .fa-keyboard-o:before,
.fa-lemon-o:before, .fa-lemon-o:before,
.fa-lightbulb-o:before, .fa-lightbulb-o:before,
@@ -73,22 +85,27 @@
max-width: 95% !important; max-width: 95% !important;
} }
} }
.modal-full { .modal-full {
max-width: 98% !important; max-width: 98% !important;
margin: 10px auto; margin: 10px auto;
} }
iframe.pdf-preview { iframe.pdf-preview {
background: #eee; background: #eee;
} }
</style> </style>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/jquery.datetimepicker.min.css" /> <link rel="stylesheet"
<script src="{{ asset('assets/admin/js/pelinom6.core.min.js') }}" ></script> 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="{{ 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/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/jspdf/1.3.2/jspdf.min.js"></script>
<script src="{{url("assets/datagridxl/datagridxl/datagridxl2.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> <script src="https://cdn.jsdelivr.net/npm/fuse.js/dist/fuse.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 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.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://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" /> <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> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.9/js/select2.full.min.js"></script>
@@ -182,9 +200,11 @@ function ExportToExcel(type, fn, dl) {
<script src="{{ asset('assets/admin/js/plugins/pwstrength-bootstrap/pwstrength-bootstrap.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 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> <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 --> <!-- 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"> <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 --> <!-- 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://cdn.jsdelivr.net/npm/bootstrap-select@1.13.9/dist/js/bootstrap-select.min.js"></script>
+4 -4
View File
@@ -73,7 +73,7 @@
<!-- Row #2 --> <!-- Row #2 -->
<div class="col-xl-4"> <div class="col-xl-4">
<a class="block block-transparent bg-image d-flex align-items-stretch" href="javascript:void(0)" <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-content block-sticky-options pt-100 bg-black-op">
<div class="block-options block-options-left text-white"> <div class="block-options block-options-left text-white">
<div class="block-options-item"> <div class="block-options-item">
@@ -95,7 +95,7 @@
</div> </div>
<div class="col-sm-6 col-xl-4"> <div class="col-sm-6 col-xl-4">
<a class="block block-transparent bg-image d-flex align-items-stretch" href="javascript:void(0)" <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-content block-sticky-options pt-100 bg-primary-dark-op">
<div class="block-options block-options-left text-white"> <div class="block-options block-options-left text-white">
<div class="block-options-item"> <div class="block-options-item">
@@ -117,7 +117,7 @@
</div> </div>
<div class="col-sm-6 col-xl-4"> <div class="col-sm-6 col-xl-4">
<a class="block block-transparent bg-image d-flex align-items-stretch" href="javascript:void(0)" <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-content block-sticky-options pt-100 bg-primary-op">
<div class="block-options block-options-left text-white"> <div class="block-options block-options-left text-white">
<div class="block-options-item"> <div class="block-options-item">
@@ -143,7 +143,7 @@
<!-- Row #3 --> <!-- Row #3 -->
<div class="col-xl-8 d-flex align-items-stretch"> <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" <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"> <div class="block-header bg-black-op">
<h3 class="block-title"> <h3 class="block-title">
Sales <small>This week</small> Sales <small>This week</small>