classify admin
This commit is contained in:
13
resources/views/layouts/footer.blade.php
Normal file
13
resources/views/layouts/footer.blade.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<!----- THIS FORM USE FOR DELETE ---->
|
||||
<footer class="footer mt-3">
|
||||
<div class="container-fluid">
|
||||
<div class="foot_text text-end">
|
||||
©
|
||||
<script>
|
||||
document.write(new Date().getFullYear())
|
||||
</script>
|
||||
|{{ config('app.name') }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</footer>
|
||||
316
resources/views/layouts/footer_script.blade.php
Normal file
316
resources/views/layouts/footer_script.blade.php
Normal file
@@ -0,0 +1,316 @@
|
||||
<script type="text/javascript" src="{{ asset('assets/js/apexcharts.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/js/jquery.min.js')}}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/js/popper.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/js/bootstrap.min.js')}}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/js/app.js') }}"></script>
|
||||
|
||||
{{-- Firebasejs 8.10.0--}}
|
||||
{{--<script type="text/javascript" src="{{ asset('assets/js/firebase-app.js')}}"></script>--}}
|
||||
{{--<script type="text/javascript" src="{{ asset('assets/js/firebase-messaging.js')}}"></script>--}}
|
||||
|
||||
|
||||
{{--Sweet Alert --}}
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/sweetalert2/sweetalert2.min.js') }}"></script>
|
||||
|
||||
{{--Tiny MCE--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/tinymce/tinymce.min.js') }}"></script>
|
||||
|
||||
{{--Jquery Vector Map--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/jquery-vector-map/jquery-jvectormap-2.0.5.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/jquery-vector-map/jquery-jvectormap-asia-merc.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/jquery-vector-map/jquery-jvectormap-world-mill-en.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/jquery-vector-map/jquery-jvectormap-world-mill.js') }}"></script>
|
||||
|
||||
{{--Toastify--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/toastify-js/toastify.js') }}"></script>
|
||||
|
||||
{{--Parsley--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/js/parsley.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/js/pages/parsley.js') }}"></script>
|
||||
|
||||
|
||||
{{--Magnific Popup--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/magnific-popup/jquery.magnific-popup.min.js') }}"></script>
|
||||
|
||||
{{--Select2--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/select2/select2.min.js') }}"></script>
|
||||
|
||||
{{--Tagify--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/tagify/tagify.js') }}"></script>
|
||||
|
||||
{{--Jquery UI--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/jquery-ui/jquery-ui.min.js') }}"></script>
|
||||
|
||||
{{--Clipboard JS--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/js/clipboard.min.js') }}"></script>
|
||||
|
||||
{{--Filepond--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/filepond/filepond.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/filepond/filepond.jquery.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/filepond/filepond-plugin-image-preview.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/filepond/filepond-plugin-pdf-preview.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/filepond/filepond-plugin-file-validate-size.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/filepond/filepond-plugin-file-validate-type.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/filepond/filepond-plugin-image-validate-size.min.js') }}"></script>
|
||||
|
||||
{{--JS Tree--}}
|
||||
<script src="{{asset("assets/extensions/jstree/jstree.min.js")}}"></script>
|
||||
|
||||
|
||||
{{-- Custom JS --}}
|
||||
<script type="text/javascript" src="{{ asset('assets/js/custom/common.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/js/custom/custom.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/js/custom/function.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/js/custom/bootstrap-table/formatter.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/js/custom/bootstrap-table/queryParams.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/js/custom/bootstrap-table/actionEvents.js') }}"></script>
|
||||
|
||||
|
||||
{{--Bootstrap Table--}}
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/bootstrap-table/bootstrap-table.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/bootstrap-table/fixed-columns/bootstrap-table-fixed-columns.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/bootstrap-table/mobile/bootstrap-table-mobile.min.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/bootstrap-table/jquery.tablednd.min.js')}}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/bootstrap-table/bootstrap-table.min.js')}}"></script>
|
||||
<script type="text/javascript" src="{{ asset('assets/extensions/bootstrap-table/bootstrap-table-reorder-rows.min.js')}}"></script>
|
||||
<script type="text/javascript" src="{{asset('assets/extensions/bootstrap-table/export/bootstrap-table-export.min.js')}}"></script>
|
||||
<script type="text/javascript" src="{{asset('assets/extensions/bootstrap-table/export/tableExport.min.js')}}"></script>
|
||||
<script type="text/javascript" src="{{asset('assets/extensions/bootstrap-table/export/jspdf.umd.min.js')}}"></script>
|
||||
<script type="text/javascript" src="{{asset('assets/extensions/bootstrap-table/mobile/bootstrap-table-mobile.min.js')}}"></script>
|
||||
<script type="text/javascript" src="{{asset('assets/extensions/bootstrap-table/filter/bootstrap-table-filter-control.min.js')}}"></script>
|
||||
|
||||
{{--Language Translation--}}
|
||||
<script src="{{route('common.language.read')}}"></script>
|
||||
|
||||
<script src="{{ asset('assets/js/leaflet.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/map.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/bundle.min.js') }}"></script>
|
||||
{{-- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> --}}
|
||||
{{--<script src="https://harvesthq.github.io/chosen/chosen.jquery.js"></script>--}}
|
||||
{{--<script src="https://bevacqua.github.io/dragula/dist/dragula.js"></script>--}}
|
||||
<script type="text/javascript">
|
||||
window.baseurl = "{{ URL::to('/') }}/";
|
||||
@if (Session::has('success'))
|
||||
showSuccessToast("{{ Session::get('success') }}")
|
||||
@endif
|
||||
|
||||
{{-- @if (Session::has('errors'))--}}
|
||||
{{-- @if(is_array(Session::get('errors')))--}}
|
||||
{{-- @foreach ($errors->all() as $error)--}}
|
||||
|
||||
{{-- showErrorToast("{{ $error }}")--}}
|
||||
{{-- @endforeach--}}
|
||||
{{-- @else--}}
|
||||
{{-- @dd(Session::get('errors'))--}}
|
||||
{{-- console.log("{{ Session::get('errors') }}")--}}
|
||||
{{-- showErrorToast("{{ Session::get('errors')->message }}")--}}
|
||||
{{-- @endif--}}
|
||||
{{-- @endif--}}
|
||||
|
||||
@if ($errors->any())
|
||||
@foreach ($errors->all() as $error)
|
||||
showErrorToast("{!! $error !!}");
|
||||
@endforeach
|
||||
@endif
|
||||
@if (Session::has('error'))
|
||||
showErrorToast('{!! Session::get('error') !!}')
|
||||
@endif
|
||||
|
||||
</script>
|
||||
<script>
|
||||
// Dynamic translation loading function
|
||||
function loadTableTranslations() {
|
||||
@php
|
||||
$tableKeys = [
|
||||
"Search...",
|
||||
"Refresh",
|
||||
"Toggle",
|
||||
"Columns",
|
||||
"Detail",
|
||||
"Detail Formatter",
|
||||
"Previous",
|
||||
"Next",
|
||||
"First",
|
||||
"Last",
|
||||
"Showing {ctx.start} to {ctx.end} of {ctx.total} entries",
|
||||
"Export Data",
|
||||
"Toggle Columns",
|
||||
"No description",
|
||||
"No image",
|
||||
"No date",
|
||||
"No price",
|
||||
"Active",
|
||||
"Inactive",
|
||||
"Pending",
|
||||
"Approved",
|
||||
"Rejected",
|
||||
"Published",
|
||||
"Draft",
|
||||
"No matching records found",
|
||||
"rows per page" // Add this new key
|
||||
];
|
||||
|
||||
// Get current language from session or default
|
||||
$currentLang = session('locale', config('app.locale', 'en'));
|
||||
|
||||
// Load translations for current language
|
||||
$translations = [];
|
||||
foreach ($tableKeys as $key) {
|
||||
$translations[$key] = __($key);
|
||||
}
|
||||
@endphp
|
||||
|
||||
window.tableTranslations = @json($translations);
|
||||
|
||||
// Force update all translatable tables
|
||||
$('.translatable-table').each(function() {
|
||||
const $table = $(this);
|
||||
const tableId = $table.attr('id');
|
||||
|
||||
// Update table attributes with new translations
|
||||
$table.attr({
|
||||
'data-search-placeholder': window.trans('Search...'),
|
||||
'data-refresh-text': window.trans('Refresh'),
|
||||
'data-toggle-text': window.trans('Toggle'),
|
||||
'data-columns-text': window.trans('Columns'),
|
||||
'data-detail-view-text': window.trans('Detail'),
|
||||
'data-detail-formatter-text': window.trans('Detail Formatter'),
|
||||
'data-pagination-pre-text': window.trans('Previous'),
|
||||
'data-pagination-next-text': window.trans('Next'),
|
||||
'data-pagination-first-text': window.trans('First'),
|
||||
'data-pagination-last-text': window.trans('Last'),
|
||||
'data-pagination-info-text': window.trans('Showing {ctx.start} to {ctx.end} of {ctx.total} entries'),
|
||||
'data-pagination-info-formatted': window.trans('Showing {ctx.start} to {ctx.end} of {ctx.total} entries')
|
||||
});
|
||||
|
||||
// Force complete table refresh
|
||||
if ($table.hasClass('bootstrap-table')) {
|
||||
// Get current table options
|
||||
const tableOptions = $table.bootstrapTable('getOptions');
|
||||
|
||||
// Destroy the table
|
||||
$table.bootstrapTable('destroy');
|
||||
|
||||
// Re-initialize with new translations
|
||||
$table.bootstrapTable(tableOptions);
|
||||
}
|
||||
});
|
||||
|
||||
// Manually update search placeholder, pagination text, and no records message
|
||||
setTimeout(function() {
|
||||
updateSearchAndPagination();
|
||||
updateNoRecordsMessage();
|
||||
updateRowsPerPageText(); // Add this new function call
|
||||
}, 500);
|
||||
}
|
||||
|
||||
// Function to manually update search and pagination
|
||||
function updateSearchAndPagination() {
|
||||
// Update search placeholder
|
||||
$('.search-input').attr('placeholder', window.trans('Search...'));
|
||||
|
||||
// Update pagination info text
|
||||
$('.pagination-info').each(function() {
|
||||
const $info = $(this);
|
||||
const currentText = $info.text();
|
||||
|
||||
// Extract numbers from current text (e.g., "Showing 1 to 4 of 4 rows")
|
||||
const match = currentText.match(/Showing (\d+) to (\d+) of (\d+) rows/);
|
||||
if (match) {
|
||||
const start = match[1];
|
||||
const end = match[2];
|
||||
const total = match[3];
|
||||
|
||||
// Replace with translated text
|
||||
const translatedText = window.trans('Showing {ctx.start} to {ctx.end} of {ctx.total} entries')
|
||||
.replace('{ctx.start}', start)
|
||||
.replace('{ctx.end}', end)
|
||||
.replace('{ctx.total}', total);
|
||||
|
||||
$info.text(translatedText);
|
||||
}
|
||||
});
|
||||
|
||||
// Update refresh button title
|
||||
$('button[name="refresh"]').attr('title', window.trans('Refresh'));
|
||||
|
||||
// Update columns button title
|
||||
$('button[aria-label="Columns"]').attr('title', window.trans('Columns'));
|
||||
|
||||
// Update export button title
|
||||
$('button[aria-label="Export data"]').attr('title', window.trans('Export Data'));
|
||||
}
|
||||
|
||||
// Function to update "No matching records found" message
|
||||
function updateNoRecordsMessage() {
|
||||
$('.no-records-found td').each(function() {
|
||||
const $cell = $(this);
|
||||
const currentText = $cell.text();
|
||||
|
||||
if (currentText === 'No matching records found') {
|
||||
$cell.text(window.trans('No matching records found'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Add this new function to handle "rows per page" text
|
||||
// function updateRowsPerPageText() {
|
||||
// $('.page-list').each(function() {
|
||||
// const $pageList = $(this);
|
||||
// const currentText = $pageList.text();
|
||||
|
||||
// if (currentText.includes('rows per page')) {
|
||||
// const translatedText = currentText.replace('rows per page', window.trans('rows per page'));
|
||||
// $pageList.text(translatedText);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
function updateRowsPerPageText() {
|
||||
$('.page-list').each(function() {
|
||||
const $pageList = $(this);
|
||||
|
||||
// Use a more specific selector to find the text after the dropdown
|
||||
const $dropdown = $pageList.find('.btn-group');
|
||||
if ($dropdown.length) {
|
||||
// Get all text nodes after the dropdown
|
||||
let found = false;
|
||||
$pageList.contents().each(function() {
|
||||
if (this.nodeType === 3 && !found) { // Text node
|
||||
const text = this.textContent.trim();
|
||||
if (text === 'rows per page') {
|
||||
this.textContent = window.trans('rows per page');
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
// Translation helper
|
||||
window.trans = function(key) {
|
||||
return window.tableTranslations && window.tableTranslations[key] ? window.tableTranslations[key] : key;
|
||||
};
|
||||
|
||||
// Load translations on page load
|
||||
loadTableTranslations();
|
||||
|
||||
// Also update when table is refreshed
|
||||
$(document).on('post-body.bs.table', function() {
|
||||
setTimeout(function() {
|
||||
updateSearchAndPagination();
|
||||
updateNoRecordsMessage();
|
||||
updateRowsPerPageText(); // Add this new function call
|
||||
}, 100);
|
||||
});
|
||||
|
||||
// Also update when table data is loaded
|
||||
$(document).on('load-success.bs.table', function() {
|
||||
setTimeout(function() {
|
||||
updateSearchAndPagination();
|
||||
updateNoRecordsMessage();
|
||||
updateRowsPerPageText(); // Add this new function call
|
||||
}, 100);
|
||||
});
|
||||
</script>
|
||||
<script src="{{ asset('assets/js/custom/table-translations.js') }}"></script>
|
||||
|
||||
115
resources/views/layouts/include.blade.php
Normal file
115
resources/views/layouts/include.blade.php
Normal file
@@ -0,0 +1,115 @@
|
||||
@php
|
||||
// $lang = Session::get('language');
|
||||
// dd($lang);
|
||||
|
||||
@endphp
|
||||
|
||||
@if (empty($lang) || !$lang->rtl)
|
||||
{{-- NON RTL CSS --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/main/app.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/pages/otherpages.css') }}" />
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/custom.css') }}" />
|
||||
@else
|
||||
{{-- RTL CSS --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/main/rtl.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/pages/otherpages_rtl.css') }}" />
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/custom.css') }}" />
|
||||
@endif
|
||||
{{-- Bootstrap Switch --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/bootstrap-switch-button.min.css') }}">
|
||||
|
||||
{{-- Toastify --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/toastify-js/toastify.css') }}">
|
||||
|
||||
{{-- Bootstrap Table --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/bootstrap-table/bootstrap-table.min.css') }}"
|
||||
type="text/css" />
|
||||
<link rel="stylesheet"
|
||||
href="{{ asset('assets/extensions/bootstrap-table/fixed-columns/bootstrap-table-fixed-columns.min.css') }}"
|
||||
type="text/css" />
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/bootstrap-table/bootstrap-table-reorder-rows.css') }}">
|
||||
|
||||
|
||||
{{-- Font Awesome --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/@fortawesome/fontawesome-free/css/all.min.css') }}"
|
||||
type="text/css" />
|
||||
|
||||
{{-- Magnific Popup --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/magnific-popup/magnific-popup.css') }}">
|
||||
|
||||
{{-- Select2 --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/select2/select2.min.css') }}" />
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/select2/select2-bootstrap-5-theme.min.css') }}" />
|
||||
|
||||
{{-- Tagify --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/tagify/tagify.css') }}" type="text/css" />
|
||||
|
||||
{{-- Sweet Alert --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/sweetalert2/sweetalert2.min.css') }}" />
|
||||
|
||||
{{-- Filepond --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/filepond/filepond.min.css') }}" type="text/css" />
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/filepond/filepond-plugin-image-preview.min.css') }}"
|
||||
type="text/css" />
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/filepond/filepond-plugin-pdf-preview.min.css') }}"
|
||||
type="text/css" />
|
||||
|
||||
{{-- Jquery Vectormap --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/pages/jquery-jvectormap-2.0.5.css') }}" type="text/css" />
|
||||
|
||||
{{-- JS Tree --}}
|
||||
<link rel="stylesheet" href="{{ asset('assets/extensions/jstree/jstree.min.css') }}" />
|
||||
|
||||
{{-- <link href="https://cdn.datatables.net/1.13.2/css/dataTables.bootstrap5.min.css" rel="stylesheet"/> --}}
|
||||
{{-- <link rel="stylesheet" href="{{ url('assets/extensions/chosen.css') }}"/> --}}
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/leaflet.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/map.css') }}">
|
||||
@yield('css')
|
||||
|
||||
<script>
|
||||
// Function to handle image errors
|
||||
function handleImageError(image) {
|
||||
image.classList.contains('custom-default-image')
|
||||
if (image.getAttribute('data-custom-image') != null) {
|
||||
image.src = image.getAttribute('data-custom-image');
|
||||
} else {
|
||||
image.src = "{{ asset('/assets/images/no_image_available.png') }}";
|
||||
}
|
||||
// console.log('Image failed to load: ' + image.src);
|
||||
}
|
||||
|
||||
// Create a MutationObserver to watch for DOM changes
|
||||
const observer = new MutationObserver((mutationsList) => {
|
||||
mutationsList.forEach((mutation) => {
|
||||
if (mutation.addedNodes) {
|
||||
mutation.addedNodes.forEach((node) => {
|
||||
// Check if the added node is an image element
|
||||
if (node instanceof HTMLImageElement) {
|
||||
node.addEventListener('error', () => {
|
||||
handleImageError(node);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Start observing changes in the DOM
|
||||
observer.observe(document, {
|
||||
childList: true,
|
||||
subtree: true
|
||||
});
|
||||
|
||||
const onErrorImage = (e) => {
|
||||
if (!e.target.src.includes('no_image_available.png')) {
|
||||
e.target.src = "{{ asset('/assets/images/no_image_available.png') }}";
|
||||
}
|
||||
};
|
||||
|
||||
{{-- const onErrorImageSidebarHorizontalLogo = (e) => { --}}
|
||||
{{-- if (!e.target.src.includes('no_image_available.jpg')) { --}}
|
||||
{{-- e.target.src = "{{asset('/assets/vertical-logo.svg')}}"; --}}
|
||||
{{-- } --}}
|
||||
{{-- }; --}}
|
||||
</script>
|
||||
34
resources/views/layouts/main.blade.php
Normal file
34
resources/views/layouts/main.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="{{ $favicon ?? url('assets/images/logo/favicon.png') }}" type="image/x-icon">
|
||||
<title>@yield('title') || {{ config('app.name') }}</title>
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}"/>
|
||||
@include('layouts.include')
|
||||
@yield('css')
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
@include('layouts.sidebar')
|
||||
<div id="main" class='layout-navbar'>
|
||||
@include('layouts.topbar')
|
||||
<div id="main-content">
|
||||
<div class="page-heading">
|
||||
@yield('page-title')
|
||||
</div>
|
||||
@yield('content')
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper mt-5">
|
||||
<div class="content">
|
||||
@include('layouts.footer')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@include('layouts.footer_script')
|
||||
@yield('js')
|
||||
@yield('script')
|
||||
</body>
|
||||
</html>
|
||||
341
resources/views/layouts/sidebar.blade.php
Normal file
341
resources/views/layouts/sidebar.blade.php
Normal file
@@ -0,0 +1,341 @@
|
||||
<div id="sidebar" class="active">
|
||||
<div class="sidebar-wrapper active">
|
||||
<div class="sidebar-header position-relative">
|
||||
<div class="d-block">
|
||||
<div class="logo text-center">
|
||||
<a href="{{ url('home') }}">
|
||||
<img src="{{ $company_logo ?? '' }}"
|
||||
data-custom-image="{{ url('assets/images/logo/sidebar_logo.png') }}" alt="Logo"
|
||||
srcset="">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-menu">
|
||||
<ul class="menu">
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ url('home') }}" class='sidebar-link'>
|
||||
<i class="bi bi-house"></i>
|
||||
<span class="menu-item">{{ __('Dashboard') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@canany(['category-list', 'category-create', 'category-update', 'category-delete', 'custom-field-list',
|
||||
'custom-field-create', 'custom-field-update', 'custom-field-delete'])
|
||||
<div class="sidebar-new-title">{{ __('Ads Listing') }}</div>
|
||||
@canany(['category-list', 'category-create', 'category-update', 'category-delete'])
|
||||
<li class="sidebar-item sidebar-submenus">
|
||||
<a href="{{ route('category.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-list-task"></i>
|
||||
<span class="menu-item">{{ __('Categories') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['custom-field-list', 'custom-field-create', 'custom-field-update', 'custom-field-delete'])
|
||||
<li class="sidebar-item sidebar-submenus">
|
||||
<a href="{{ route('custom-fields.index') }} " class='sidebar-link'>
|
||||
<i class="bi bi-columns-gap"></i>
|
||||
<span class="menu-item">{{ __('Custom Fields') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@endcanany
|
||||
|
||||
@canany(['item-list', 'item-create', 'item-update', 'item-delete', 'tip-list', 'tip-create',
|
||||
'tip-update', 'tip-delete'])
|
||||
|
||||
<div class="sidebar-new-title">{{ __('Advertisement Management') }}</div>
|
||||
@canany(['item-list', 'item-create', 'item-update', 'item-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('advertisement.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-ui-radios-grid"></i>
|
||||
<span class="menu-item">{{ __('Advertisement') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['tip-list', 'tip-create', 'tip-update', 'tip-delete'])
|
||||
<li class="sidebar-item sidebar-submenus">
|
||||
<a href="{{ route('tips.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-info-circle"></i>
|
||||
<span class="menu-item">{{ __('Tips') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@endcanany
|
||||
|
||||
@canany(['advertisement-listing-package-list', 'advertisement-listing-package-create',
|
||||
'advertisement-listing-package-update', 'advertisement-listing-package-delete',
|
||||
'featured-advertisement-package-list', 'featured-advertisement-package-create',
|
||||
'featured-advertisement-package-update', 'featured-advertisement-package-delete', 'user-package-list',
|
||||
'payment-transactions-list'])
|
||||
|
||||
<div class="sidebar-new-title">{{ __('Package Management') }}</div>
|
||||
@canany(['advertisement-listing-package-list', 'advertisement-listing-package-create',
|
||||
'advertisement-listing-package-update', 'advertisement-listing-package-delete',
|
||||
'featured-advertisement-package-list', 'featured-advertisement-package-create',
|
||||
'featured-advertisement-package-update', 'featured-advertisement-package-delete'])
|
||||
<li class="sidebar-item sidebar-submenus">
|
||||
<a href="{{ route('package.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-box-seam"></i>
|
||||
<span class="menu-item">{{ __('Subscription Packages') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@can('user-package-list')
|
||||
<li class="sidebar-item sidebar-submenus">
|
||||
<a href="{{ route('package.users.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-person-badge-fill"></i>
|
||||
<span class="menu-item">{{ __('User Packages') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
|
||||
@can('payment-transactions-list')
|
||||
<li class="sidebar-item sidebar-submenus">
|
||||
<a href="{{ route('package.payment-transactions.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-cash-coin"></i>
|
||||
<span class="menu-item">{{ __('Payment Transactions') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('payment-transactions-list')
|
||||
<li class="sidebar-item sidebar-submenus">
|
||||
<a href="{{ route('package.bank-transfer.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-bank"></i>
|
||||
<span class="menu-item">{{ __('Bank Transfer') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@endcanany
|
||||
|
||||
@canany(['seller-verification-field-list', 'seller-verification-field-create',
|
||||
'seller-verification-field-update', 'seller-verification-field-delete',
|
||||
'seller-verification-request-list', 'seller-verification-request-create',
|
||||
'seller-verification-request-update', 'seller-verification-request-delete', 'seller-review-list',
|
||||
'seller-review-update', 'seller-review-delete'])
|
||||
<div class="sidebar-new-title">{{ __('Seller Management') }}</div>
|
||||
@canany(['seller-verification-field-list', 'seller-verification-field-create',
|
||||
'seller-verification-field-update', 'seller-verification-field-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('seller-verification.verification-field') }}" class='sidebar-link'>
|
||||
<i class="bi bi-grid-1x2"></i>
|
||||
<span class="menu-item">{{ __('Verification Fields') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@canany(['seller-verification-request-list', 'seller-verification-request-create',
|
||||
'seller-verification-request-update', 'seller-verification-request-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('seller-verification.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-person-check"></i>
|
||||
<span class="menu-item">{{ __('Seller Verification') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@canany(['seller-review-list', 'seller-review-update', 'seller-review-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('seller-review.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-star-half"></i>
|
||||
<span class="menu-item">{{ __('Seller Review') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@canany(['seller-review-list', 'seller-review-update', 'seller-review-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('seller-review.create') }}" class='sidebar-link'>
|
||||
<i class="bi bi-list-stars"></i>
|
||||
<span class="menu-item">{{ __('Seller Review Report') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@endcanany
|
||||
@canany(['slider-list', 'slider-create', 'slider-update', 'slider-delete', 'feature-section-list',
|
||||
'feature-section-create', 'feature-section-update', 'feature-section-delete'])
|
||||
<div class="sidebar-new-title">{{ __('Home Screen Management') }}</div>
|
||||
@canany(['slider-list', 'slider-create', 'slider-update', 'slider-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ url('slider') }}" class='sidebar-link'>
|
||||
<i class="bi bi-sliders2"></i>
|
||||
<span class="menu-item">{{ __('Slider') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['feature-section-list', 'feature-section-create', 'feature-section-update',
|
||||
'feature-section-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('feature-section.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-grid-1x2"></i>
|
||||
<span class="menu-item">{{ __('Feature Section') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@endcanany
|
||||
|
||||
@canany(['currency-list', 'currency-create', 'currency-update', 'currency-delete', 'country-list',
|
||||
'country-create', 'country-update', 'country-delete', 'state-list', 'state-create', 'state-update',
|
||||
'state-delete', 'city-list', 'city-create', 'city-update', 'city-delete'])
|
||||
<div class="sidebar-new-title">{{ __('Place/Location Management') }}</div>
|
||||
@canany(['currency-list', 'currency-create', 'currency-update', 'currency-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('currency.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-cash-stack"></i>
|
||||
<span class="menu-item">{{ __('Currencies') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['country-list', 'country-create', 'country-update', 'country-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('countries.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-globe"></i>
|
||||
<span class="menu-item">{{ __('Countries') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['state-list', 'state-create', 'state-update', 'state-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('states.index') }}" class='sidebar-link'>
|
||||
<i class="fa fa-map-marked-alt"></i>
|
||||
<span class="menu-item">{{ __('States') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['city-list', 'city-create', 'city-update', 'city-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('cities.index') }}" class='sidebar-link'>
|
||||
<i class="fa fa-map-marker-alt"></i>
|
||||
<span class="menu-item">{{ __('Cities') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['area-list', 'area-create', 'area-update', 'area-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('area.index') }}" class='sidebar-link'>
|
||||
<i class="fa fa-map-marker"></i>
|
||||
<span class="menu-item">{{ __('Areas') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@endcanany
|
||||
|
||||
@canany(['report-reason-list', 'report-reason-create', 'report-reason-update', 'report-reason-delete',
|
||||
'user-reports-list'])
|
||||
<div class="sidebar-new-title">{{ __('Reports Management') }}</div>
|
||||
@canany(['report-reason-list', 'report-reason-create', 'report-reason-update', 'report-reason-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('report-reasons.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-flag"></i>
|
||||
<span class="menu-item">{{ __('Report Reasons') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['user-reports-list'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('report-reasons.user-reports.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-person"></i>
|
||||
<span class="menu-item">{{ __('User Reports') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@endcanany
|
||||
|
||||
|
||||
<div class="sidebar-new-title">{{ __('Promotional Management') }}</div>
|
||||
@canany(['notification-list', 'notification-create', 'notification-update', 'notification-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ url('notification') }}" class='sidebar-link'>
|
||||
<i class="bi bi-bell"></i>
|
||||
<span class="menu-item">{{ __('Send Notification') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['customer-list', 'customer-create', 'customer-update', 'customer-delete'])
|
||||
<div class="sidebar-new-title">{{ __('Customers') }}</div>
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ url('customer') }}" class='sidebar-link'>
|
||||
<i class="bi bi-people"></i>
|
||||
<span class="menu-item">{{ __('Customers') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['role-list', 'role-create', 'role-update', 'role-delete', 'staff-list', 'staff-create',
|
||||
'staff-update', 'staff-delete'])
|
||||
<div class="sidebar-new-title">{{ __('Staff Management') }}</div>
|
||||
@canany(['role-list', 'role-create', 'role-update', 'role-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('roles.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-person-bounding-box"></i>
|
||||
<span class="menu-item">{{ __('Role') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@canany(['staff-list', 'staff-create', 'staff-update', 'staff-delete'])
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('staff.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-person-badge"></i>
|
||||
<span class="menu-item">{{ __('Staff Management') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@endcanany
|
||||
@canany(['blog-ist', 'blog-create', 'blog-update', 'blog-delete'])
|
||||
<div class="sidebar-new-title">{{ __('Blog Management') }}</div>
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('blog.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-pencil"></i>
|
||||
<span class="menu-item">{{ __('Blogs') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['faq-create', 'faq-list', 'faq-update', 'faq-delete'])
|
||||
<div class="sidebar-new-title">{{ __('FAQ') }}</div>
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('faq.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-question-square-fill"></i>
|
||||
<span class="menu-item">{{ __('FAQs') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
|
||||
@canany(['user-queries-list'])
|
||||
<div class="sidebar-new-title">{{ __('Web') }}</div>
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('contact-us.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-person-bounding-box"></i>
|
||||
<span class="menu-item">{{ __('User Queries') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcanany
|
||||
@canany(['settings-update'])
|
||||
<div class="sidebar-new-title">{{ __('System Settings') }}</div>
|
||||
@can('settings-update')
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('settings.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-gear"></i>
|
||||
<span class="menu-item">{{ __('Settings') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@if (\Illuminate\Support\Facades\Auth::user()->hasRole('Super Admin'))
|
||||
<li class="sidebar-item">
|
||||
<a href="{{ route('system-update.index') }}" class='sidebar-link'>
|
||||
<i class="bi bi-laptop"></i>
|
||||
<span class="menu-item">{{ __('System Update') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
@endcanany
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
109
resources/views/layouts/topbar.blade.php
Normal file
109
resources/views/layouts/topbar.blade.php
Normal file
@@ -0,0 +1,109 @@
|
||||
|
||||
<header>
|
||||
<nav class="navbar navbar-expand navbar-light" style="background-color: white;">
|
||||
<div class="container-fluid">
|
||||
|
||||
<div class="col-6 row d-flex align-items-center">
|
||||
<div class="col-1 me-3 me-md-2">
|
||||
<a href="#" class="burger-btn d-block">
|
||||
<i class="bi bi-justify fs-3"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@if (config('app.demo_mode'))
|
||||
<div class="col-2">
|
||||
<span class="badge alert-info primary-background-color">Demo Mode</span>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-6 justify-content-end d-flex">
|
||||
<div class="collapse navbar-collapse">
|
||||
|
||||
<div class="dropdown me-3">
|
||||
<a href="#" class="user-dropdown d-flex align-items-center dropdown-toggle"
|
||||
data-bs-toggle="dropdown">
|
||||
|
||||
<button class="dropdown-btn">
|
||||
|
||||
|
||||
<img src="{{ $currentLanguage?->image }}" class="flag">
|
||||
<span>{{ strtoupper($currentLanguage?->code) }}</span>
|
||||
<span class="arrow">▾</span>
|
||||
</button>
|
||||
</a>
|
||||
{{-- {{ print_r($currentLanguage) }} --}}
|
||||
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
|
||||
@foreach ($languages as $language)
|
||||
|
||||
<li class="d-flex justify-content-between align-items-center px-2 py-1">
|
||||
|
||||
<a class="dropdown-item d-flex align-items-center flex-grow-1"
|
||||
href="{{ route('language.set-current', $language->code) }}">
|
||||
<img src="{{ $language->image }}" class="flag me-2">
|
||||
{{ $language->name }}
|
||||
</a>
|
||||
<form action="{{ route('settings.set-default-language') }}" method="POST"
|
||||
class="ms-2">
|
||||
@csrf
|
||||
<input type="hidden" name="default_language" value="{{ $language->code }}">
|
||||
|
||||
<button type="submit" class="btn btn-sm btn-primary py-0 px-2"
|
||||
@if ($defaultLanguage && $defaultLanguage->code == $language->code) disabled @endif>
|
||||
{{ $defaultLanguage && $defaultLanguage->code == $language->code ? __('Default') : __('Set Default') }}
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</li>
|
||||
@endforeach
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="dropdown">
|
||||
<a href="#" id="profileDropdown"
|
||||
class="user-dropdown d-flex align-items-center dropend dropdown-toggle"
|
||||
data-bs-toggle="dropdown" aria-expanded="false">
|
||||
|
||||
<div class="avatar avatar-md2 flex-shrink-0">
|
||||
<img
|
||||
src="{{ Auth::user()->profile == '' ? url('assets/images/faces/2.jpg') : Auth::user()->profile }}"
|
||||
alt="Profile"
|
||||
class="img-fluid rounded-circle">
|
||||
</div>
|
||||
|
||||
<!-- Admin name visible on all screens -->
|
||||
<div class="text ms-2">
|
||||
<h6 class="user-dropdown-name mb-0 text-truncate" style="max-width:120px;">
|
||||
{{ Auth::user()->name }}
|
||||
</h6>
|
||||
</div>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end topbarUserDropdown"
|
||||
aria-labelledby="topbarUserDropdown">
|
||||
<li><a class="dropdown-item" href="{{ route('change-password.index') }}"><i
|
||||
class="icon-mid bi bi-gear me-2"></i>{{ __('Change Password') }}</a></li>
|
||||
<li><a class="dropdown-item" href="{{ route('change-profile.index') }}"><i
|
||||
class="icon-mid bi bi-person me-2"></i>{{ __('Change Profile') }}</a></li>
|
||||
<li><a class="dropdown-item" href="{{ route('logout') }} "
|
||||
onclick="event.preventDefault(); document.getElementById('logout-form').submit();"><i
|
||||
class="icon-mid bi bi-box-arrow-left me-2"></i> {{ __('Logout') }}</a></li>
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||
{{ csrf_field() }}
|
||||
</form>
|
||||
</ul>
|
||||
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
|
||||
@csrf
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
{{-- {{ print_r($currentLanguage) }} --}}
|
||||
</header>
|
||||
Reference in New Issue
Block a user