added fast attachment upload to improve system ux

update detach word mistake fixed
master
A1Gard 2 weeks ago
parent d2e5dc4387
commit 33a60eb170

@ -115,15 +115,18 @@ class AttachmentController extends XController
{ {
return parent::delete($item); return parent::delete($item);
} }
public function deattach(Attachment $item) public function detach(Attachment $item)
{ {
$item->attachable_id = null; $item->attachable_id = null;
$item->attachable_type = null; $item->attachable_type = null;
$item->save(); $item->save();
logAdmin(__METHOD__,__CLASS__,$item->id); logAdmin(__METHOD__,__CLASS__,$item->id);
if (request()->ajax()) {
return ['OK' => true , 'message' => __('As you wished detached successfully')];
}
return redirect()->back() return redirect()->back()
->with(['message' => __('As you wished deattached successfully')]); ->with(['message' => __('As you wished detached successfully')]);
} }
@ -132,5 +135,12 @@ class AttachmentController extends XController
return $this->bringUp($request, $item); return $this->bringUp($request, $item);
} }
public function attaching(Request $request){
$item = new Attachment();
$item = $this->save($item, $request);
logAdmin(__METHOD__,__CLASS__,$item->id);
return ['OK' => true,'data'=> $item,'message' => __('File uploaded successfully')];
}
} }

@ -32,6 +32,7 @@ import './panel/prototypes.js';
import './panel/panel-window-loader.js'; import './panel/panel-window-loader.js';
import './panel/responsive-control.js'; import './panel/responsive-control.js';
import './panel/fast-edit.js'; import './panel/fast-edit.js';
import './panel/fast-attachment.js';
// import './panel/seo-analyzer.js'; // import './panel/seo-analyzer.js';
// chartjs.defaults.defaultFontFamily = "Vazir"; // chartjs.defaults.defaultFontFamily = "Vazir";
@ -123,6 +124,10 @@ app.component('menu-item-input', MenuItemInput);
import VueTimepicker from "./components/vueTimePicker.vue"; import VueTimepicker from "./components/vueTimePicker.vue";
app.component('vue-time-picker', VueTimepicker); app.component('vue-time-picker', VueTimepicker);
import fastAttaching from "./components/FastAttaching.vue";
app.component('fast-attaching', fastAttaching);
/** /**
* The following block of code may be used to automatically register your * The following block of code may be used to automatically register your
* Vue components. It will recursively scan this directory for the Vue * Vue components. It will recursively scan this directory for the Vue

@ -0,0 +1,230 @@
<template>
<div id="fast-attaching">
<i class="ri-add-line" id="new-attach" data-bs-toggle="tooltip"
data-bs-placement="top"
data-bs-custom-class="custom-tooltip"
data-bs-title="Add new attachment" @click="isShowNew = !isShowNew"></i>
<div class="row mt-4" v-if="isShowNew">
<div class="col-md">
<input type="text" placeholder="Title" v-model="title" class="form-control">
</div>
<div class="col-md">
<input type="file" class="form-control" id="upload-attachment-file" ref="fileInput">
</div>
<div class="col-md-2">
<button class="btn btn-primary w-100"
data-bs-toggle="tooltip"
data-bs-placement="top"
data-bs-custom-class="custom-tooltip"
data-bs-title="Upload"
@click="upload">
<i class="ri-upload-2-line"></i>
</button>
</div>
</div>
<div id="progress" v-if="isShowProgress">
Uploading {{ title }}
<div id="percent" :style="percentStyle"></div>
</div>
<ul class="list-group my-4">
<li v-for="(attach,i) in attachments" :key="attach.id" class="list-group-item">
<div class="row">
<div class="col-md-1 pt-1">
{{ i + 1 }}
</div>
<div class="col-md pt-1">
<span class="badge bg-success">
{{ attach.ext }}
</span>
</div>
<div class="col-md-4 pt-1">
<template v-if="xlang == null">
{{ attach.title }}
</template>
<template v-else>
{{ attach['title']?.[xlang] ?? attach.title }}
</template>
</div>
<div class="col-md-4 pt-1">
{{ attach.file }}
</div>
<div class="col-md-1">
<div class="btn btn-secondary btn-sm w-100" data-bs-toggle="tooltip"
data-bs-placement="top"
data-bs-custom-class="custom-tooltip"
data-bs-title="Detach"
@click="detach(attach.slug,i)"
>
<i class="ri-close-line"></i>
</div>
</div>
</div>
</li>
</ul>
</div>
</template>
<script>
import axios from 'axios';
export default {
name: "fast-attaching",
data() {
return {
title: '',
isShowNew: false,
isShowProgress: false,
percent: 0,
}
},
props: {
attachments: {
type: Array,
default: () => [],
},
xlang: {
default: null
},
uploadUrl: {
type: String,
default: 'http://127.0.0.1:8000/dashboard/attachments/attaching',
},
detachUrl: {
type: String,
default: 'http://127.0.0.1:8000/dashboard/attachments/attaching',
},
model: {
type: String,
default: 'App\\Models\\Post'
},
id: {
type: Number,
default: '1',
},
},
computed: {
percentStyle() {
return 'width:' + this.percent + '%;';
}
},
methods: {
async detach(slug, index) {
if (!confirm(window.TR.deleteConfirm)) {
return false;
}
try {
const response = await axios.get(this.detachUrl + slug);
if (response.data.OK) {
$toast.success(response.data.message);
this.attachments.splice(index, 1);
if (document.querySelector('#attach-number') != null){
document.querySelector('#attach-number').innerText = this.attachments.length;
}
this.$forceUpdate();
} else {
$toast.error("Detach problem!");
}
} catch (e) {
$toast.error(e.message);
}
},
async upload() {
console.log('upload start');
if (this.title.length < 2) {
this.$toast.error('Title is incorrect');
return false;
}
const fileInput = this.$refs.fileInput;
if (fileInput.files.length === 0) {
this.$toast.error('File is incorrect');
return false;
}
this.isShowNew = false;
this.isShowProgress = true;
this.percent = 0; // Reset the percent
const formData = new FormData();
formData.append('title', this.title);
formData.append('attachable_id', this.id);
formData.append('attachable_type', this.model);
formData.append('file', fileInput.files[0]); // Assuming only one file is selected
try {
const response = await axios.post(this.uploadUrl, formData, {
headers: {
'Content-Type': 'multipart/form-data'
},
onUploadProgress: progressEvent => {
if (progressEvent.lengthComputable) {
this.percent = Math.round((progressEvent.loaded * 100) / progressEvent.total);
}
}
});
// Handle the response
console.log(response.data);
if (response.data.OK) {
this.$toast.success(response.data.message);
this.attachments.push(response.data.data); // Adjust based on your response
if (document.querySelector('#attach-number') != null){
document.querySelector('#attach-number').innerText = this.attachments.length;
}
this.title = '';
}
// Optionally, add the new attachment to the attachments array
} catch (error) {
console.error(error);
this.$toast.error('Upload failed!');
} finally {
this.isShowProgress = false;
}
}
}
}
</script>
<style scoped>
#fast-attaching {
}
#new-attach {
position: absolute;
inset-inline-end: 80px;
top: 0;
padding: 5px;
background: rgba(8, 255, 0, 0.2);
font-size: 30px;
border-radius: 0 0 7px 7px;
cursor: pointer;
&:hover {
background: rgba(8, 255, 0, 0.4);
}
}
#progress {
margin: 2rem 0;
border: 1px solid #ffffff22;
border-radius: 7px;
overflow: hidden;
text-align: center;
position: relative;
}
#percent {
background: rgba(8, 255, 0, 0.4);
position: absolute;
inset-inline-start: 0;
top: 0;
bottom: 0;
}
</style>

@ -0,0 +1,11 @@
document.addEventListener('DOMContentLoaded', function () {
let attachFrom = document.querySelector('#attaching-form');
document.querySelector('#attach-down')?.addEventListener('click', function () {
attachFrom.style.bottom = (window.innerHeight * -.5+'px');
});
document.querySelector('#show-attach-form')?.addEventListener('click', function (e) {
e.preventDefault();
attachFrom.style.bottom = ('0px');
});
});

@ -82,7 +82,7 @@
"Area design": "طراحی محیط", "Area design": "طراحی محیط",
"Areas": "محیط‌ها ", "Areas": "محیط‌ها ",
"As you wished created successfully": "همانطور که شما مایل بودید ایجاد شد", "As you wished created successfully": "همانطور که شما مایل بودید ایجاد شد",
"As you wished deattached successfully": "همانطور که شما مایل بودید از پیوست خارج شد", "As you wished detached successfully": "همانطور که شما مایل بودید از پیوست خارج شد",
"As you wished removed successfully": "همانطور که شما مایل بودید حذف شد", "As you wished removed successfully": "همانطور که شما مایل بودید حذف شد",
"As you wished restored successfully": "همانطور که شما مایل بودید بازیافت شد", "As you wished restored successfully": "همانطور که شما مایل بودید بازیافت شد",
"As you wished sort saved": "همانطور که شما مایل بودید مرتب شدند", "As you wished sort saved": "همانطور که شما مایل بودید مرتب شدند",
@ -137,6 +137,7 @@
"Clips list": "فهرست کلیپ‌ها", "Clips list": "فهرست کلیپ‌ها",
"Close": "بستن", "Close": "بستن",
"Code": "کد", "Code": "کد",
"Collapse attachment form": "بستن فرم پیوست‌ها",
"Colleague": "همکار", "Colleague": "همکار",
"Command ignored, segment part exists!": "", "Command ignored, segment part exists!": "",
"Comment": "دیدگاه", "Comment": "دیدگاه",
@ -170,7 +171,6 @@
"Date": "تاریخ", "Date": "تاریخ",
"Date of born": "تاریخ تولد", "Date of born": "تاریخ تولد",
"Datetime": "تاریخ و زمان", "Datetime": "تاریخ و زمان",
"Deattach": "عدم پیوست",
"Default": "پیش‌فرض", "Default": "پیش‌فرض",
"Default admin email is :E1 (developer) or :E2 (admin) and default password is: :P": "در نگارش آزمایشی رایانامه توسعه دهنده :E1 است و رایانامه مدیر عادی :E2 و گذرواژه هر دو :P است", "Default admin email is :E1 (developer) or :E2 (admin) and default password is: :P": "در نگارش آزمایشی رایانامه توسعه دهنده :E1 است و رایانامه مدیر عادی :E2 و گذرواژه هر دو :P است",
"DefaultFooter": "فوتر پیش‌فرض", "DefaultFooter": "فوتر پیش‌فرض",
@ -181,7 +181,8 @@
"Description Text": "نوشته توضیحات", "Description Text": "نوشته توضیحات",
"Design": "طراحی", "Design": "طراحی",
"Design :AREA": "طراحی :AREA", "Design :AREA": "طراحی :AREA",
"Design guide": "", "Design guide": "راهنمای طراحی",
"Detach": "عدم پیوست",
"Detail": "جزئیات", "Detail": "جزئیات",
"Developer guide": "راهنمای توسعه", "Developer guide": "راهنمای توسعه",
"Devices": "دستگاه‌ها", "Devices": "دستگاه‌ها",
@ -244,6 +245,7 @@
"File ext": "پسوند پرونده", "File ext": "پسوند پرونده",
"File name": "نام پرونده", "File name": "نام پرونده",
"File size": "حجم پرونده", "File size": "حجم پرونده",
"File uploaded successfully": "پرونده با موفقیت بارگزاری شد",
"Filter": "صافی", "Filter": "صافی",
"Find more": "موارد بیشتر", "Find more": "موارد بیشتر",
"Flag": "پرچم", "Flag": "پرچم",
@ -271,6 +273,7 @@
"GuestLogs list": "فهرست لاگ میهمان ها", "GuestLogs list": "فهرست لاگ میهمان ها",
"Height": "قد", "Height": "قد",
"Hello world": "سلام دنیا", "Hello world": "سلام دنیا",
"Hide in menu": "عدم نمایش در فهرست (منو)",
"Home": "خانه", "Home": "خانه",
"ID": "", "ID": "",
"Icon": "نماد", "Icon": "نماد",

@ -1,20 +1,21 @@
body{ body {
background: $body-bg; background: $body-bg;
} }
.circle-btn{ .circle-btn {
width: 75px; width: 75px;
height: 75px; height: 75px;
border-radius: 50%; border-radius: 50%;
background: $secondary-color-panel; background: $secondary-color-panel;
backdrop-filter: blur(4px); backdrop-filter: blur(4px);
border: 0; border: 0;
box-shadow: 0px 3px 5px #11111177, inset 0 0 0 0 darkred; box-shadow: 0px 3px 5px #11111177, inset 0 0 0 0 darkred;
user-select: none; user-select: none;
cursor: pointer; cursor: pointer;
transition: 500ms; transition: 500ms;
&:hover{
box-shadow: 0px 3px 5px #11111177, inset 0 0 0 40px darkred; &:hover {
box-shadow: 0px 3px 5px #11111177, inset 0 0 0 40px darkred;
} }
} }
@ -29,34 +30,38 @@ body{
grid-auto-flow: column; grid-auto-flow: column;
} }
a.btn,a.action-btn,a.circle-btn{ a.btn, a.action-btn, a.circle-btn {
&:hover{ &:hover {
color:white; color: white;
i{
i {
color: white; color: white;
} }
} }
} }
.action-btn{ .action-btn {
display: block; display: block;
font-size: 47px; font-size: 47px;
text-align: center; text-align: center;
i{
i {
color: white; color: white;
} }
position: fixed; position: fixed;
inset-inline-start: 4.2rem; inset-inline-start: 4.2rem;
bottom: 1rem; bottom: 1rem;
} }
.general-form{ .general-form {
background: $lighter-color; background: $lighter-color;
border-radius: 7px; border-radius: 7px;
margin-bottom: 4rem; margin-bottom: 4rem;
position: relative; position: relative;
h1{
h1 {
font-size: 25px; font-size: 25px;
font-weight: 200; font-weight: 200;
background: #00000011; background: #00000011;
@ -65,12 +70,12 @@ a.btn,a.action-btn,a.circle-btn{
margin: 0 -1rem; margin: 0 -1rem;
} }
.row{ .row {
padding: 0 1rem 2rem ; padding: 0 1rem 2rem;
} }
input[type='submit']{ input[type='submit'] {
position: absolute ; position: absolute;
bottom: -1rem; bottom: -1rem;
left: 50%; left: 50%;
transform: translateX(-50%); transform: translateX(-50%);
@ -78,44 +83,49 @@ a.btn,a.action-btn,a.circle-btn{
} }
} }
.group-control{ .group-control {
list-style: none; list-style: none;
overflow-y: auto; overflow-y: auto;
padding: 0 .5rem; padding: 0 .5rem;
height: 12rem; height: 12rem;
ul{
ul {
list-style: none; list-style: none;
} }
input{
input {
margin: 0 .5rem; margin: 0 .5rem;
} }
} }
.model-status{ .model-status {
width: 15px; width: 15px;
height: 15px; height: 15px;
margin: auto; margin: auto;
border-radius: 3px; border-radius: 3px;
} }
.status-0,.status-CLOSED,.status-FAILED,.status-PROCESSING {
.status-0, .status-CLOSED, .status-FAILED, .status-PROCESSING {
background: red; background: red;
} }
.status-1,.status-ANSWERED,.status-COMPLETED{
.status-1, .status-ANSWERED, .status-COMPLETED {
background: lime; background: lime;
} }
.status-PENDING{
.status-PENDING {
background: gold; background: gold;
} }
.status-CANCELED{ .status-CANCELED {
background: orange; background: orange;
} }
.status-PAID{ .status-PAID {
background: white; background: white;
} }
.image-x64{ .image-x64 {
height: 64px; height: 64px;
width: 64px; width: 64px;
object-fit: cover; object-fit: cover;
@ -123,50 +133,50 @@ a.btn,a.action-btn,a.circle-btn{
} }
.img-squire {
.img-squire{
display: block; display: block;
max-width: 100%; max-width: 100%;
margin: auto; margin: auto;
} }
.rm-img{ .rm-img {
position: relative; position: relative;
z-index: 1; z-index: 1;
margin-bottom: -75px; margin-bottom: -75px;
} }
.section-group{ .section-group {
.section-group-item{ .section-group-item {
display: block; display: block;
padding: .5rem; padding: .5rem;
background: #ffffff11; background: #ffffff11;
border-bottom: 1px solid #00000022; border-bottom: 1px solid #00000022;
color: white; color: white;
&.active{
&.active {
background: $primary-color-panel; background: $primary-color-panel;
} }
&:hover{ &:hover {
background: rgba($primary-color-panel,.7); background: rgba($primary-color-panel, .7);
} }
} }
} }
#setting-sections{ #setting-sections {
section{ section {
display: none; display: none;
background: $lighter-color; background: $lighter-color;
padding: 1rem; padding: 1rem;
.setting-field{ .setting-field {
padding: 5px; padding: 5px;
} }
} }
} }
#avatar-input{ #avatar-input {
display: none; display: none;
} }
@ -176,11 +186,13 @@ a.btn,a.action-btn,a.circle-btn{
padding-left: 1rem; padding-left: 1rem;
list-style: none; list-style: none;
border-radius: 5px; border-radius: 5px;
li { li {
border: 1px solid grey; border: 1px solid grey;
background: #ffffff11; background: #ffffff11;
margin-bottom: .25rem; margin-bottom: .25rem;
border-radius: 5px; border-radius: 5px;
span { span {
display: block; display: block;
padding: 7px; padding: 7px;
@ -189,41 +201,44 @@ a.btn,a.action-btn,a.circle-btn{
} }
.area-list-item{ .area-list-item {
background: #00000022; background: #00000022;
height: 125px; height: 125px;
text-align: center; text-align: center;
display: block; display: block;
color: $text-muted; color: $text-muted;
&:hover{ &:hover {
color: lighten($primary-color-panel,10); color: lighten($primary-color-panel, 10);
} }
i{
i {
font-size: 45px; font-size: 45px;
display: block; display: block;
margin: 1rem auto; margin: 1rem auto;
} }
} }
[data-open-file]{
[data-open-file] {
cursor: pointer; cursor: pointer;
} }
.avatar-x64{ .avatar-x64 {
background: $body-bg; background: $body-bg;
width: 64px; width: 64px;
height: 64px; height: 64px;
border-radius: 50%; border-radius: 50%;
object-fit: cover; object-fit: cover;
border: 3px rgba($primary-color-panel,127) solid ; border: 3px rgba($primary-color-panel, 127) solid;
} }
.skewed-container{ .skewed-container {
overflow: hidden; overflow: hidden;
position: relative; position: relative;
min-height: 128px; min-height: 128px;
} }
.skewed-icon{
.skewed-icon {
font-size: 128px; font-size: 128px;
opacity: .3; opacity: .3;
position: absolute; position: absolute;
@ -233,40 +248,46 @@ a.btn,a.action-btn,a.circle-btn{
} }
.order-card{ .order-card {
background: rgba(255, 196, 0, 0.8) !important; background: rgba(255, 196, 0, 0.8) !important;
.card-header{ .card-header {
background: #ffffff22 !important; background: #ffffff22 !important;
color: $secondary-color-panel; color: $secondary-color-panel;
} }
.card-body{
.card-body {
background: #00000011; background: #00000011;
text-align: center; text-align: center;
} }
i{
i {
font-size: 100px; font-size: 100px;
} }
a,a:visited{
a, a:visited {
color: white; color: white;
} }
} }
.ticket-card{ .ticket-card {
background: rgba(0, 255, 166, 0.8) !important; background: rgba(0, 255, 166, 0.8) !important;
.card-header{ .card-header {
background: #ffffff22 !important; background: #ffffff22 !important;
color: $secondary-color-panel; color: $secondary-color-panel;
} }
.card-body{
.card-body {
background: #00000011; background: #00000011;
text-align: center; text-align: center;
} }
i{
i {
font-size: 100px; font-size: 100px;
} }
a,a:visited{
a, a:visited {
color: white; color: white;
} }
} }
@ -285,7 +306,7 @@ a.btn,a.action-btn,a.circle-btn{
} }
#panel-preloader{ #panel-preloader {
transition: 490ms; transition: 490ms;
position: fixed; position: fixed;
z-index: 9999999; z-index: 9999999;
@ -298,11 +319,13 @@ a.btn,a.action-btn,a.circle-btn{
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
color: lighten($primary-color-panel,15); color: lighten($primary-color-panel, 15);
.loader { .loader {
position: relative; position: relative;
width: 100px; width: 100px;
height: 100px; height: 100px;
&:before { &:before {
content: ''; content: '';
border-radius: 50%; border-radius: 50%;
@ -310,6 +333,7 @@ a.btn,a.action-btn,a.circle-btn{
inset: 0; inset: 0;
box-shadow: 0 0 10px 2px rgba(0, 0, 0, 0.3) inset; box-shadow: 0 0 10px 2px rgba(0, 0, 0, 0.3) inset;
} }
&:after { &:after {
content: ''; content: '';
border-radius: 50%; border-radius: 50%;
@ -325,7 +349,6 @@ a.btn,a.action-btn,a.circle-btn{
} }
@keyframes rotate { @keyframes rotate {
0% { 0% {
transform: rotate(0); transform: rotate(0);
@ -335,14 +358,15 @@ a.btn,a.action-btn,a.circle-btn{
} }
} }
.btn-light,a.btn-light{ .btn-light, a.btn-light {
color: black !important; color: black !important;
} }
.table-list td .btn{ .table-list td .btn {
margin-bottom: 5px; margin-bottom: 5px;
margin-top: 5px; margin-top: 5px;
} }
/* -620px width */ /* -620px width */
@media (max-width: 620px) { @media (max-width: 620px) {
.table-list { .table-list {
@ -355,12 +379,12 @@ a.btn,a.action-btn,a.circle-btn{
width: 100% !important; width: 100% !important;
text-align: end; text-align: end;
} }
td{ td {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
td:last-child{ td:last-child {
justify-content: center; justify-content: center;
} }
@ -368,9 +392,10 @@ a.btn,a.action-btn,a.circle-btn{
float: none !important; float: none !important;
} }
.dropdown{ .dropdown {
min-width: 75%; min-width: 75%;
.btn{
.btn {
width: 100%; width: 100%;
} }
} }
@ -383,9 +408,7 @@ a.btn,a.action-btn,a.circle-btn{
} }
#seo-hint {
#seo-hint{
.seo-report { .seo-report {
@ -393,8 +416,9 @@ a.btn,a.action-btn,a.circle-btn{
margin: 15px 0; margin: 15px 0;
background: #21252b; background: #21252b;
border-radius: 8px; border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
} }
.seo-score-container { .seo-score-container {
display: flex; display: flex;
align-items: center; align-items: center;
@ -402,11 +426,13 @@ a.btn,a.action-btn,a.circle-btn{
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
gap: 20px; gap: 20px;
} }
.seo-score { .seo-score {
position: relative; position: relative;
width: 80px; width: 80px;
height: 80px; height: 80px;
} }
.seo-score-circle { .seo-score-circle {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -418,75 +444,91 @@ a.btn,a.action-btn,a.circle-btn{
font-weight: bold; font-weight: bold;
color: white; color: white;
} }
.seo-status { .seo-status {
flex: 1; flex: 1;
h3 { h3 {
margin: 0 0 5px 0; margin: 0 0 5px 0;
font-size: 18px; font-size: 18px;
} }
p { p {
margin: 0; margin: 0;
color: #eee; color: #eee;
} }
} }
.seo-details { .seo-details {
padding: 20px; padding: 20px;
} }
.seo-feedback { .seo-feedback {
margin-bottom: 20px; margin-bottom: 20px;
ul { ul {
margin: 10px 0; margin: 10px 0;
padding-left: 20px; padding-left: 20px;
} }
li { li {
margin: 8px 0; margin: 8px 0;
color: #ddd; color: #ddd;
} }
} }
.seo-metrics { .seo-metrics {
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px; gap: 20px;
} }
.metric-card { .metric-card {
background: #f8f9fa; background: #f8f9fa;
padding: 15px; padding: 15px;
border-radius: 6px; border-radius: 6px;
h4 { h4 {
margin: 0 0 10px 0; margin: 0 0 10px 0;
color: #333; color: #333;
font-size: 14px; font-size: 14px;
} }
} }
.metric-value { .metric-value {
font-size: 16px; font-size: 16px;
font-weight: 500; font-weight: 500;
color: #2a2a2a; color: #2a2a2a;
} }
.good { .good {
background: #22c55e; background: #22c55e;
} }
.average { .average {
background: #f59e0b; background: #f59e0b;
} }
.poor { .poor {
background: #ef4444; background: #ef4444;
} }
} }
.nested-ul{ .nested-ul {
list-style: none; list-style: none;
ul{
ul {
list-style: none; list-style: none;
} }
input[type='checkbox']{
input[type='checkbox'] {
margin: 0 1rem; margin: 0 1rem;
} }
} }
#iframe-modal{ #iframe-modal {
background: #00000011; background: #00000011;
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
position: fixed; position: fixed;
@ -498,10 +540,41 @@ a.btn,a.action-btn,a.circle-btn{
padding-top: 5vh; padding-top: 5vh;
display: none; display: none;
iframe{ iframe {
border: 0; border: 0;
height: 90vh; height: 90vh;
width: 100%; width: 100%;
border-radius: 1rem; border-radius: 1rem;
} }
} }
#attaching-form {
position: fixed;
bottom: -50vh;
left: 1rem;
right: 1rem;
background: $lighter-color;
height: 40vh;
border-radius: 7px 7px 0 0;
border: 1px solid #aaaaaa55;
border-bottom: none;
overflow-y: auto;
overflow-x: hidden;
transition: 500ms;
#attach-down {
position: absolute;
inset-inline-end: 30px;
top: 0;
padding: 5px;
background: #ffffff22;
font-size: 30px;
border-radius: 0 0 7px 7px;
cursor: pointer;
&:hover {
background: #ffffff66;
}
}
}

@ -9,11 +9,6 @@
@endsection @endsection
@section('filter') @section('filter')
<input type="hidden" id="group-edit-url" value="{{route('admin.post.group-edit','')}}/"> <input type="hidden" id="group-edit-url" value="{{route('admin.post.group-edit','')}}/">
<div id="iframe-modal">
<div class="container">
<iframe href="#"></iframe>
</div>
</div>
{{-- Other filters --}} {{-- Other filters --}}
{{__("Main group")}} {{__("Main group")}}

@ -10,15 +10,11 @@
@section('filter') @section('filter')
{{-- Other filters --}} {{-- Other filters --}}
<h2> <h2>
<input type="hidden" id="category-edit-url" value="{{route('admin.product.category-edit','')}}/">
<div id="iframe-modal">
<div class="container">
<iframe href="#"></iframe>
</div>
</div>
<i class="ri-book-3-line"></i> <i class="ri-book-3-line"></i>
{{__("Category")}}: {{__("Category")}}:
</h2> </h2>
<input type="hidden" id="category-edit-url" value="{{route('admin.product.category-edit','')}}/">
<searchable-multi-select <searchable-multi-select
:items='{{\App\Models\Category::all(['id','name'])}}' :items='{{\App\Models\Category::all(['id','name'])}}'
title-field="name" title-field="name"

@ -186,6 +186,17 @@
{{--</div>--}} {{--</div>--}}
<hr> <hr>
<div class="mt-4"> <div class="mt-4 position-relative">
@include('components.panel-attachs',['attachs' => $item->attachs??[]]) <h3>
{{__("Attachments")}}
</h3>
<br>
<fast-attaching
:attachments='@json($item->attachs)'
xlang="{{config('app.locale')}}"
upload-url="{{route('admin.attachment.attaching')}}"
detach-url="{{route('admin.attachment.detach','')}}/"
model="{{get_class($item)}}"
id="{{$item->id}}"
></fast-attaching>
</div> </div>

@ -1,28 +1,32 @@
<h4> <h4>
{{__("Attachments")}} {{__("Attachments")}}
<a href="{{route('admin.attachment.create')}}?" class="btn btn-light float-end mb-2"> <a href="{{route('admin.attachment.create')}}?" id="show-attach-form" class="btn btn-light float-end mb-2">
<i class="ri-add-line"></i> <i class="ri-add-line"></i>
<i class="ri-attachment-line"></i> <i class="ri-attachment-line"></i>
<span id="attach-number">
({{count($attachs)}})
</span>
</a> </a>
</h4> </h4>
<div class="clearfix"></div> <div class="clearfix"></div>
<ul class="list-group"> {{--<ul class="list-group">--}}
@foreach($attachs as $attach) {{-- @foreach($attachs as $attach)--}}
<li class="list-group-item"> {{-- <li class="list-group-item">--}}
<a href="{{route('admin.attachment.deattach',$attach->slug)}}" class="btn btn-danger float-end btn-sm" data-bs-toggle="tooltip" data-bs-placement="auto" data-bs-custom-class="custom-tooltip" {{-- <a href="{{route('admin.attachment.detach',$attach->slug)}}" class="btn btn-danger float-end btn-sm" data-bs-toggle="tooltip" data-bs-placement="auto" data-bs-custom-class="custom-tooltip"--}}
data-bs-title="{{__("Deattach")}}"> {{-- data-bs-title="{{__("Detach")}}">--}}
<i class="ri-close-line"></i> {{-- <i class="ri-close-line"></i>--}}
</a> {{-- </a>--}}
<div class="p-2"> {{-- <div class="p-2">--}}
<a href="{{$attach->url()}}"> {{-- <a href="{{$attach->url()}}">--}}
{{$attach->file}} {{-- {{$attach->file}}--}}
</a> {{-- </a>--}}
[ {{formatFileSize($attach->size)}} ] {{-- [ {{formatFileSize($attach->size)}} ]--}}
[ {{$attach->ext}} ] {{-- [ {{$attach->ext}} ]--}}
</div> {{-- </div>--}}
</li> {{-- </li>--}}
@endforeach {{-- @endforeach--}}
</ul> {{--</ul>--}}

@ -1,4 +1,9 @@
@yield('js-content') @yield('js-content')
<div id="iframe-modal">
<div class="container">
<iframe href="#"></iframe>
</div>
</div>
<script type="text/javascript"> <script type="text/javascript">
var xupload = "{{route('admin.ckeditor.upload', ['_token' => csrf_token() ])}}"; var xupload = "{{route('admin.ckeditor.upload', ['_token' => csrf_token() ])}}";
var website_bg = "{{gfx()['background']}}"; var website_bg = "{{gfx()['background']}}";

@ -11,9 +11,9 @@
<div> <div>
<div id="panel"> <div id="panel">
@cache('navbar_panel'. cacheNumber()) @cache('navbar_panel'. cacheNumber())
<aside> <aside>
@include('components.panel-side-navbar') @include('components.panel-side-navbar')
</aside> </aside>
@endcache @endcache
<div id="sidebar-panel"></div> <div id="sidebar-panel"></div>
<main class="py-3 px-3"> <main class="py-3 px-3">
@ -22,6 +22,27 @@
</main> </main>
</div> </div>
</div> </div>
@if(isset($item) && isset($item->attachs))
<div id="attaching-form">
<i class="ri-skip-down-line" id="attach-down" data-bs-toggle="tooltip"
data-bs-placement="top"
data-bs-custom-class="custom-tooltip"
data-bs-title="{{__("Collapse attachment form")}}"></i>
<div class="p-4">
<h5>
{{__("Attachments")}}
</h5>
<fast-attaching
:attachments='@json($item->attachs)'
xlang="{{config('app.locale')}}"
upload-url="{{route('admin.attachment.attaching')}}"
detach-url="{{route('admin.attachment.detach','')}}/"
model="{{get_class($item)}}"
id="{{$item->id}}"
></fast-attaching>
</div>
</div>
@endif
</div> </div>
@yield('js-content') @yield('js-content')
@include('components.panel-footer') @include('components.panel-footer')

@ -18,83 +18,104 @@ Route::prefix(config('app.panel.prefix'))->name('admin.')->group(
Route::get('/', [\App\Http\Controllers\HomeController::class, 'index'])->name('home'); Route::get('/', [\App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::any('logout', [\App\Http\Controllers\Auth\LoginController::class, 'logout'])->name('logout');
Route::post('ckeditor/upload', [\App\Http\Controllers\Admin\CkeditorController::class, 'upload'])->name('ckeditor.upload');
Route::get('adminlogs', [\App\Http\Controllers\Admin\AdminLogController::class, 'index'])->name('adminlog.index'); Route::get('adminlogs', [\App\Http\Controllers\Admin\AdminLogController::class, 'index'])->name('adminlog.index');
Route::get('guestlog', [\App\Http\Controllers\Admin\GuestLogController::class, 'index'])->name('guestlog.index');
Route::get('rates', [\App\Http\Controllers\Admin\RateController::class, 'index'])->name('rate.index');
Route::get('adminlogs/{user}', [\App\Http\Controllers\Admin\AdminLogController::class, 'log'])->name('adminlog.show'); Route::get('adminlogs/{user}', [\App\Http\Controllers\Admin\AdminLogController::class, 'log'])->name('adminlog.show');
Route::post('ckeditor/upload', [\App\Http\Controllers\Admin\CkeditorController::class, 'upload'])->name('ckeditor.upload');
Route::get('guestlog', [\App\Http\Controllers\Admin\GuestLogController::class, 'index'])->name('guestlog.index');
Route::post('images/store/{gallery}', [\App\Http\Controllers\Admin\ImageController::class, 'store'])->name('image.store'); Route::post('images/store/{gallery}', [\App\Http\Controllers\Admin\ImageController::class, 'store'])->name('image.store');
Route::get('images/destroy/{image}', [\App\Http\Controllers\Admin\ImageController::class, 'destroy'])->name('image.destroy'); Route::get('images/destroy/{image}', [\App\Http\Controllers\Admin\ImageController::class, 'destroy'])->name('image.destroy');
Route::any('logout', [\App\Http\Controllers\Auth\LoginController::class, 'logout'])->name('logout');
Route::get('rates', [\App\Http\Controllers\Admin\RateController::class, 'index'])->name('rate.index');
Route::prefix('users')->name('user.')->group( Route::prefix('addresses')->name('address.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\UserController::class, 'index'])->name('index'); Route::get('customer/{item}', [\App\Http\Controllers\Admin\AddressController::class, 'customer'])->name('customer');
Route::get('create', [\App\Http\Controllers\Admin\UserController::class, 'create'])->name('create'); Route::post('add/{item}', [\App\Http\Controllers\Admin\AddressController::class, 'store'])->name('store');
Route::post('store', [\App\Http\Controllers\Admin\UserController::class, 'store'])->name('store'); Route::post('update/{item}', [\App\Http\Controllers\Admin\AddressController::class, 'update'])->name('update');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\UserController::class, 'edit'])->name('edit'); Route::get('destroy/{item}', [\App\Http\Controllers\Admin\AddressController::class, 'destroy'])->name('destroy');
Route::get('log/{item}', [\App\Http\Controllers\Admin\AdminLogController::class, 'log'])->name('log');
Route::get('show/{item}', [\App\Http\Controllers\Admin\UserController::class, 'show'])->name('show');
Route::post('update/{item}', [\App\Http\Controllers\Admin\UserController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\UserController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\UserController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\UserController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\UserController::class, "trashed"])->name('trashed');
}); });
Route::prefix('groups')->name('group.')->group( Route::prefix('adv')->name('adv.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\GroupController::class, 'index'])->name('index'); Route::get('', [\App\Http\Controllers\Admin\AdvController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\GroupController::class, 'create'])->name('create'); Route::get('create', [\App\Http\Controllers\Admin\AdvController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\GroupController::class, 'store'])->name('store'); Route::post('store', [\App\Http\Controllers\Admin\AdvController::class, 'store'])->name('store');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\GroupController::class, 'edit'])->name('edit'); Route::get('show/{item}', [\App\Http\Controllers\Admin\AdvController::class, 'show'])->name('show');
Route::post('update/{item}', [\App\Http\Controllers\Admin\GroupController::class, 'update'])->name('update'); Route::get('edit/{item}', [\App\Http\Controllers\Admin\AdvController::class, 'edit'])->name('edit');
Route::get('show/{item}', [\App\Http\Controllers\Admin\GroupController::class, 'show'])->name('show'); Route::post('update/{item}', [\App\Http\Controllers\Admin\AdvController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\GroupController::class, 'destroy'])->name('destroy'); Route::get('delete/{item}', [\App\Http\Controllers\Admin\AdvController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\GroupController::class, 'restore'])->name('restore'); Route::get('restore/{item}', [\App\Http\Controllers\Admin\AdvController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\GroupController::class, "bulk"])->name('bulk'); Route::post('bulk', [\App\Http\Controllers\Admin\AdvController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\GroupController::class, "trashed"])->name('trashed'); Route::get('trashed', [\App\Http\Controllers\Admin\AdvController::class, "trashed"])->name('trashed');
Route::post('sort/save', [\App\Http\Controllers\Admin\GroupController::class, 'sortSave'])->name('sort-save');
Route::get('sort', [\App\Http\Controllers\Admin\GroupController::class, 'sort'])->name('sort');
}); });
Route::prefix('discounts')->name('discount.')->group( Route::prefix('area')->name('area.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\DiscountController::class, 'index'])->name('index'); Route::get('index', [\App\Http\Controllers\Admin\AreaController::class, "index"])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\DiscountController::class, 'create'])->name('create'); Route::get('design/{area}', [\App\Http\Controllers\Admin\AreaController::class, "design"])->name('design');
Route::post('store', [\App\Http\Controllers\Admin\DiscountController::class, 'store'])->name('store'); Route::get('design/model/{area}/{model}/{id}', [\App\Http\Controllers\Admin\AreaController::class, "designModel"])->name('design.model');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\DiscountController::class, 'edit'])->name('edit'); Route::get('image/{segment}/{part}', [\App\Http\Controllers\Admin\AreaController::class, "image"])->name('image');
Route::post('update/{item}', [\App\Http\Controllers\Admin\DiscountController::class, 'update'])->name('update'); // Route::post('store', [\App\Http\Controllers\Admin\SettingController::class, "store"])->name('store');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\DiscountController::class, 'destroy'])->name('destroy'); Route::post('update/{area}', [\App\Http\Controllers\Admin\AreaController::class, "update"])->name('update');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\DiscountController::class, 'restore'])->name('restore'); Route::post('update/model/{model}/{id}', [\App\Http\Controllers\Admin\AreaController::class, "updateModel"])->name('update.model');
Route::post('bulk', [\App\Http\Controllers\Admin\DiscountController::class, "bulk"])->name('bulk'); Route::get('sort/{area}', [\App\Http\Controllers\Admin\AreaController::class, "sort"])->name('sort');
Route::get('trashed', [\App\Http\Controllers\Admin\DiscountController::class, "trashed"])->name('trashed'); Route::get('build', [\App\Http\Controllers\Admin\AreaController::class, "build"])->name('build');
Route::get('guide', [\App\Http\Controllers\Admin\AreaController::class, "guide"])->name('guide');
Route::post('sort-save/{area}', [\App\Http\Controllers\Admin\AreaController::class, "sortSave"])->name('sort-save');
}
);
Route::prefix('attachments')->name('attachment.')->group(
function () {
Route::get('', [\App\Http\Controllers\Admin\AttachmentController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\AttachmentController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\AttachmentController::class, 'store'])->name('store');
Route::get('show/{item}', [\App\Http\Controllers\Admin\AttachmentController::class, 'show'])->name('show');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\AttachmentController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\AttachmentController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\AttachmentController::class, 'destroy'])->name('destroy');
Route::get('detach/{item}', [\App\Http\Controllers\Admin\AttachmentController::class, 'detach'])->name('detach');
Route::post('bulk', [\App\Http\Controllers\Admin\AttachmentController::class, "bulk"])->name('bulk');
Route::post('attaching', [\App\Http\Controllers\Admin\AttachmentController::class, "attaching"])->name('attaching');
}); });
Route::prefix('evaluations')->name('evaluation.')->group( Route::prefix('categories')->name('category.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\EvaluationController::class, 'index'])->name('index'); Route::get('', [\App\Http\Controllers\Admin\CategoryController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\EvaluationController::class, 'create'])->name('create'); Route::get('create', [\App\Http\Controllers\Admin\CategoryController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\EvaluationController::class, 'store'])->name('store'); Route::post('store', [\App\Http\Controllers\Admin\CategoryController::class, 'store'])->name('store');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'edit'])->name('edit'); Route::get('edit/{item}', [\App\Http\Controllers\Admin\CategoryController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'update'])->name('update'); Route::get('show/{item}', [\App\Http\Controllers\Admin\CategoryController::class, 'show'])->name('show');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'destroy'])->name('destroy'); Route::post('update/{item}', [\App\Http\Controllers\Admin\CategoryController::class, 'update'])->name('update');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'restore'])->name('restore'); Route::get('delete/{item}', [\App\Http\Controllers\Admin\CategoryController::class, 'destroy'])->name('destroy');
Route::post('bulk', [\App\Http\Controllers\Admin\EvaluationController::class, "bulk"])->name('bulk'); Route::get('restore/{item}', [\App\Http\Controllers\Admin\CategoryController::class, 'restore'])->name('restore');
Route::get('trashed', [\App\Http\Controllers\Admin\EvaluationController::class, "trashed"])->name('trashed'); Route::post('bulk', [\App\Http\Controllers\Admin\CategoryController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\CategoryController::class, "trashed"])->name('trashed');
Route::post('sort/save', [\App\Http\Controllers\Admin\CategoryController::class, 'sortSave'])->name('sort-save');
Route::get('sort', [\App\Http\Controllers\Admin\CategoryController::class, 'sort'])->name('sort');
}); });
Route::prefix('cities')->name('city.')->group(
Route::prefix('tags')->name('tag.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\TagController::class, 'index'])->name('index'); Route::get('', [\App\Http\Controllers\Admin\CityController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\CityController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\CityController::class, 'store'])->name('store');
Route::get('show/{item}', [\App\Http\Controllers\Admin\CityController::class, 'show'])->name('show');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\CityController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\CityController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\CityController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\CityController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\CityController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\CityController::class, "trashed"])->name('trashed');
}); });
Route::prefix('tickets')->name('ticket.')->group( Route::prefix('clips')->name('clip.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\TicketController::class, 'index'])->name('index'); Route::get('', [\App\Http\Controllers\Admin\ClipController::class, 'index'])->name('index');
// Route::get('create', [\App\Http\Controllers\Admin\TicketController::class, 'create'])->name('create'); Route::get('create', [\App\Http\Controllers\Admin\ClipController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\TicketController::class, 'store'])->name('store'); Route::post('store', [\App\Http\Controllers\Admin\ClipController::class, 'store'])->name('store');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\TicketController::class, 'edit'])->name('edit'); Route::get('show/{item}', [\App\Http\Controllers\Admin\ClipController::class, 'show'])->name('show');
Route::post('update/{item}', [\App\Http\Controllers\Admin\TicketController::class, 'update'])->name('update'); Route::get('edit/{item}', [\App\Http\Controllers\Admin\ClipController::class, 'edit'])->name('edit');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\TicketController::class, 'destroy'])->name('destroy'); Route::post('update/{item}', [\App\Http\Controllers\Admin\ClipController::class, 'update'])->name('update');
Route::post('bulk', [\App\Http\Controllers\Admin\TicketController::class, "bulk"])->name('bulk'); Route::get('delete/{item}', [\App\Http\Controllers\Admin\ClipController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\ClipController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\ClipController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\ClipController::class, "trashed"])->name('trashed');
}); });
Route::prefix('contacts')->name('contact.')->group( Route::prefix('contacts')->name('contact.')->group(
function () { function () {
@ -115,45 +136,76 @@ Route::prefix(config('app.panel.prefix'))->name('admin.')->group(
Route::post('replying/{item}', [\App\Http\Controllers\Admin\CommentController::class, 'replying'])->name('replying'); Route::post('replying/{item}', [\App\Http\Controllers\Admin\CommentController::class, 'replying'])->name('replying');
Route::post('bulk', [\App\Http\Controllers\Admin\CommentController::class, "bulk"])->name('bulk'); Route::post('bulk', [\App\Http\Controllers\Admin\CommentController::class, "bulk"])->name('bulk');
}); });
Route::prefix('customers')->name('customer.')->group(
Route::prefix('transports')->name('transport.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\TransportController::class, 'index'])->name('index'); Route::get('', [\App\Http\Controllers\Admin\CustomerController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\TransportController::class, 'create'])->name('create'); Route::get('create', [\App\Http\Controllers\Admin\CustomerController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\TransportController::class, 'store'])->name('store'); Route::post('store', [\App\Http\Controllers\Admin\CustomerController::class, 'store'])->name('store');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'edit'])->name('edit'); Route::get('show/{item}', [\App\Http\Controllers\Admin\CustomerController::class, 'show'])->name('show');
Route::post('update/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'update'])->name('update'); Route::get('edit/{item}', [\App\Http\Controllers\Admin\CustomerController::class, 'edit'])->name('edit');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'destroy'])->name('destroy'); Route::post('update/{item}', [\App\Http\Controllers\Admin\CustomerController::class, 'update'])->name('update');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'restore'])->name('restore'); Route::get('delete/{item}', [\App\Http\Controllers\Admin\CustomerController::class, 'destroy'])->name('destroy');
Route::post('bulk', [\App\Http\Controllers\Admin\TransportController::class, "bulk"])->name('bulk'); Route::get('restore/{item}', [\App\Http\Controllers\Admin\CustomerController::class, 'restore'])->name('restore');
Route::get('trashed', [\App\Http\Controllers\Admin\TransportController::class, "trashed"])->name('trashed'); Route::post('bulk', [\App\Http\Controllers\Admin\CustomerController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\CustomerController::class, "trashed"])->name('trashed');
}); });
Route::prefix('questions')->name('question.')->group( Route::prefix('discounts')->name('discount.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\QuestionController::class, 'index'])->name('index'); Route::get('', [\App\Http\Controllers\Admin\DiscountController::class, 'index'])->name('index');
// Route::get('create', [\App\Http\Controllers\Admin\TransportController::class, 'create'])->name('create'); Route::get('create', [\App\Http\Controllers\Admin\DiscountController::class, 'create'])->name('create');
// Route::post('store', [\App\Http\Controllers\Admin\TransportController::class, 'store'])->name('store'); Route::post('store', [\App\Http\Controllers\Admin\DiscountController::class, 'store'])->name('store');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\QuestionController::class, 'edit'])->name('edit'); Route::get('edit/{item}', [\App\Http\Controllers\Admin\DiscountController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\QuestionController::class, 'update'])->name('update'); Route::post('update/{item}', [\App\Http\Controllers\Admin\DiscountController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\QuestionController::class, 'destroy'])->name('destroy'); Route::get('delete/{item}', [\App\Http\Controllers\Admin\DiscountController::class, 'destroy'])->name('destroy');
// Route::get('restore/{item}', [\App\Http\Controllers\Admin\QuestionController::class, 'restore'])->name('restore'); Route::get('restore/{item}', [\App\Http\Controllers\Admin\DiscountController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\QuestionController::class, "bulk"])->name('bulk'); Route::post('bulk', [\App\Http\Controllers\Admin\DiscountController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\DiscountController::class, "trashed"])->name('trashed');
}); });
Route::prefix('evaluations')->name('evaluation.')->group(
Route::prefix('categories')->name('category.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\CategoryController::class, 'index'])->name('index'); Route::get('', [\App\Http\Controllers\Admin\EvaluationController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\CategoryController::class, 'create'])->name('create'); Route::get('create', [\App\Http\Controllers\Admin\EvaluationController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\CategoryController::class, 'store'])->name('store'); Route::post('store', [\App\Http\Controllers\Admin\EvaluationController::class, 'store'])->name('store');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\CategoryController::class, 'edit'])->name('edit'); Route::get('edit/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'edit'])->name('edit');
Route::get('show/{item}', [\App\Http\Controllers\Admin\CategoryController::class, 'show'])->name('show'); Route::post('update/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'update'])->name('update');
Route::post('update/{item}', [\App\Http\Controllers\Admin\CategoryController::class, 'update'])->name('update'); Route::get('delete/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'destroy'])->name('destroy');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\CategoryController::class, 'destroy'])->name('destroy'); Route::get('restore/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'restore'])->name('restore');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\CategoryController::class, 'restore'])->name('restore'); Route::post('bulk', [\App\Http\Controllers\Admin\EvaluationController::class, "bulk"])->name('bulk');
Route::post('bulk', [\App\Http\Controllers\Admin\CategoryController::class, "bulk"])->name('bulk'); Route::get('trashed', [\App\Http\Controllers\Admin\EvaluationController::class, "trashed"])->name('trashed');
Route::get('trashed', [\App\Http\Controllers\Admin\CategoryController::class, "trashed"])->name('trashed'); });
Route::post('sort/save', [\App\Http\Controllers\Admin\CategoryController::class, 'sortSave'])->name('sort-save'); Route::prefix('galleries')->name('gallery.')->group(
Route::get('sort', [\App\Http\Controllers\Admin\CategoryController::class, 'sort'])->name('sort'); function () {
Route::get('', [\App\Http\Controllers\Admin\GalleryController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\GalleryController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\GalleryController::class, 'store'])->name('store');
Route::get('show/{item}', [\App\Http\Controllers\Admin\GalleryController::class, 'show'])->name('show');
Route::post('title/update', [\App\Http\Controllers\Admin\GalleryController::class, 'updateTitle'])->name('title');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\GalleryController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\GalleryController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\GalleryController::class, 'destroy'])->name('destroy');
Route::post('bulk', [\App\Http\Controllers\Admin\GalleryController::class, "bulk"])->name('bulk');
});
Route::prefix('gfx')->name('gfx.')->group(
function () {
Route::get('index', [\App\Http\Controllers\Admin\GfxController::class, "index"])->name('index');
// Route::post('store', [\App\Http\Controllers\Admin\SettingController::class, "store"])->name('store');
Route::post('update', [\App\Http\Controllers\Admin\GfxController::class, "update"])->name('update');
}
);
Route::prefix('groups')->name('group.')->group(
function () {
Route::get('', [\App\Http\Controllers\Admin\GroupController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\GroupController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\GroupController::class, 'store'])->name('store');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\GroupController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\GroupController::class, 'update'])->name('update');
Route::get('show/{item}', [\App\Http\Controllers\Admin\GroupController::class, 'show'])->name('show');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\GroupController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\GroupController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\GroupController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\GroupController::class, "trashed"])->name('trashed');
Route::post('sort/save', [\App\Http\Controllers\Admin\GroupController::class, 'sortSave'])->name('sort-save');
Route::get('sort', [\App\Http\Controllers\Admin\GroupController::class, 'sort'])->name('sort');
}); });
Route::prefix('invoices')->name('invoice.')->group( Route::prefix('invoices')->name('invoice.')->group(
function () { function () {
@ -169,72 +221,25 @@ Route::prefix(config('app.panel.prefix'))->name('admin.')->group(
Route::post('bulk', [\App\Http\Controllers\Admin\InvoiceController::class, "bulk"])->name('bulk'); Route::post('bulk', [\App\Http\Controllers\Admin\InvoiceController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\InvoiceController::class, "trashed"])->name('trashed'); Route::get('trashed', [\App\Http\Controllers\Admin\InvoiceController::class, "trashed"])->name('trashed');
}); });
Route::prefix('langs')->name('lang.')->group(
Route::prefix('posts')->name('post.')->group(
function () {
Route::get('', [\App\Http\Controllers\Admin\PostController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\PostController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\PostController::class, 'store'])->name('store');
Route::get('show/{item}', [\App\Http\Controllers\Admin\PostController::class, 'show'])->name('show');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\PostController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\PostController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\PostController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\PostController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\PostController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\PostController::class, "trashed"])->name('trashed');
Route::get('group/edit/{id}', [\App\Http\Controllers\Admin\PostController::class, 'groupEdit'])->name('group-edit');
Route::post('group/save/{item}', [\App\Http\Controllers\Admin\PostController::class, 'groupSave'])->name('group-save');
});
Route::prefix('attachments')->name('attachment.')->group(
function () {
Route::get('', [\App\Http\Controllers\Admin\AttachmentController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\AttachmentController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\AttachmentController::class, 'store'])->name('store');
Route::get('show/{item}', [\App\Http\Controllers\Admin\AttachmentController::class, 'show'])->name('show');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\AttachmentController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\AttachmentController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\AttachmentController::class, 'destroy'])->name('destroy');
Route::get('deattach/{item}', [\App\Http\Controllers\Admin\AttachmentController::class, 'deattach'])->name('deattach');
Route::post('bulk', [\App\Http\Controllers\Admin\AttachmentController::class, "bulk"])->name('bulk');
});
Route::prefix('clips')->name('clip.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\ClipController::class, 'index'])->name('index'); Route::get('/', [\App\Http\Controllers\Admin\XLangController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\ClipController::class, 'create'])->name('create'); Route::get('/translates', [\App\Http\Controllers\Admin\XLangController::class, 'translate'])->name('translate');
Route::post('store', [\App\Http\Controllers\Admin\ClipController::class, 'store'])->name('store'); Route::get('/delete/{item}', [\App\Http\Controllers\Admin\XLangController::class, 'destroy'])->name('delete');
Route::get('show/{item}', [\App\Http\Controllers\Admin\ClipController::class, 'show'])->name('show'); Route::get('/create', [\App\Http\Controllers\Admin\XLangController::class, 'create'])->name('create');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\ClipController::class, 'edit'])->name('edit'); Route::post('/store', [\App\Http\Controllers\Admin\XLangController::class, 'store'])->name('store');
Route::post('update/{item}', [\App\Http\Controllers\Admin\ClipController::class, 'update'])->name('update'); Route::get('/edit/{item}', [\App\Http\Controllers\Admin\XLangController::class, 'edit'])->name('edit');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\ClipController::class, 'destroy'])->name('destroy'); Route::post('/update/{item}', [\App\Http\Controllers\Admin\XLangController::class, 'update'])->name('update');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\ClipController::class, 'restore'])->name('restore'); Route::post('bulk', [\App\Http\Controllers\Admin\XLangController::class, "bulk"])->name('bulk');
Route::post('bulk', [\App\Http\Controllers\Admin\ClipController::class, "bulk"])->name('bulk'); Route::get('/download/{tag}', [\App\Http\Controllers\Admin\XLangController::class, 'download'])->name('download');
Route::get('trashed', [\App\Http\Controllers\Admin\ClipController::class, "trashed"])->name('trashed'); Route::get('/ai/{tag}', [\App\Http\Controllers\Admin\XLangController::class, 'ai'])->name('ai');
}); Route::post('/upload/{tag}', [\App\Http\Controllers\Admin\XLangController::class, 'upload'])->name('upload');
Route::prefix('adv')->name('adv.')->group( Route::get('/model/translate/{id}/{model}', [\App\Http\Controllers\Admin\XLangController::class, 'translateModel'])->name('model');
function () { Route::post('/model/translate/save/{id}/{model}', [\App\Http\Controllers\Admin\XLangController::class, 'translateModelSave'])->name('modelSave');
Route::get('', [\App\Http\Controllers\Admin\AdvController::class, 'index'])->name('index'); Route::get('/model/ai/{id}/{model}/{field}/{lang}', [\App\Http\Controllers\Admin\XLangController::class, 'translateModelAi'])->name('aiText');
Route::get('create', [\App\Http\Controllers\Admin\AdvController::class, 'create'])->name('create'); Route::get('restore/{item}', [\App\Http\Controllers\Admin\XLangController::class, 'restore'])->name('restore');
Route::post('store', [\App\Http\Controllers\Admin\AdvController::class, 'store'])->name('store'); Route::get('trashed', [\App\Http\Controllers\Admin\XLangController::class, "trashed"])->name('trashed');
Route::get('show/{item}', [\App\Http\Controllers\Admin\AdvController::class, 'show'])->name('show');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\AdvController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\AdvController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\AdvController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\AdvController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\AdvController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\AdvController::class, "trashed"])->name('trashed');
});
Route::prefix('customers')->name('customer.')->group(
function () {
Route::get('', [\App\Http\Controllers\Admin\CustomerController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\CustomerController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\CustomerController::class, 'store'])->name('store');
Route::get('show/{item}', [\App\Http\Controllers\Admin\CustomerController::class, 'show'])->name('show');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\CustomerController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\CustomerController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\CustomerController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\CustomerController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\CustomerController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\CustomerController::class, "trashed"])->name('trashed');
}); });
Route::prefix('menus')->name('menu.')->group( Route::prefix('menus')->name('menu.')->group(
function () { function () {
@ -251,45 +256,21 @@ Route::prefix(config('app.panel.prefix'))->name('admin.')->group(
Route::post('sort/save', [\App\Http\Controllers\Admin\MenuController::class, 'sortSave'])->name('sort-save'); Route::post('sort/save', [\App\Http\Controllers\Admin\MenuController::class, 'sortSave'])->name('sort-save');
Route::get('sort/{item}', [\App\Http\Controllers\Admin\MenuController::class, 'sort'])->name('sort'); Route::get('sort/{item}', [\App\Http\Controllers\Admin\MenuController::class, 'sort'])->name('sort');
}); });
Route::prefix('states')->name('state.')->group( Route::prefix('posts')->name('post.')->group(
function () {
Route::get('', [\App\Http\Controllers\Admin\StateController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\StateController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\StateController::class, 'store'])->name('store');
Route::get('show/{item}', [\App\Http\Controllers\Admin\StateController::class, 'show'])->name('show');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\StateController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\StateController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\StateController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\StateController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\StateController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\StateController::class, "trashed"])->name('trashed');
});
Route::prefix('cities')->name('city.')->group(
function () {
Route::get('', [\App\Http\Controllers\Admin\CityController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\CityController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\CityController::class, 'store'])->name('store');
Route::get('show/{item}', [\App\Http\Controllers\Admin\CityController::class, 'show'])->name('show');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\CityController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\CityController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\CityController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\CityController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\CityController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\CityController::class, "trashed"])->name('trashed');
});
Route::prefix('galleries')->name('gallery.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\GalleryController::class, 'index'])->name('index'); Route::get('', [\App\Http\Controllers\Admin\PostController::class, 'index'])->name('index');
Route::get('create', [\App\Http\Controllers\Admin\GalleryController::class, 'create'])->name('create'); Route::get('create', [\App\Http\Controllers\Admin\PostController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\GalleryController::class, 'store'])->name('store'); Route::post('store', [\App\Http\Controllers\Admin\PostController::class, 'store'])->name('store');
Route::get('show/{item}', [\App\Http\Controllers\Admin\GalleryController::class, 'show'])->name('show'); Route::get('show/{item}', [\App\Http\Controllers\Admin\PostController::class, 'show'])->name('show');
Route::post('title/update', [\App\Http\Controllers\Admin\GalleryController::class, 'updateTitle'])->name('title'); Route::get('edit/{item}', [\App\Http\Controllers\Admin\PostController::class, 'edit'])->name('edit');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\GalleryController::class, 'edit'])->name('edit'); Route::post('update/{item}', [\App\Http\Controllers\Admin\PostController::class, 'update'])->name('update');
Route::post('update/{item}', [\App\Http\Controllers\Admin\GalleryController::class, 'update'])->name('update'); Route::get('delete/{item}', [\App\Http\Controllers\Admin\PostController::class, 'destroy'])->name('destroy');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\GalleryController::class, 'destroy'])->name('destroy'); Route::get('restore/{item}', [\App\Http\Controllers\Admin\PostController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\GalleryController::class, "bulk"])->name('bulk'); Route::post('bulk', [\App\Http\Controllers\Admin\PostController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\PostController::class, "trashed"])->name('trashed');
Route::get('group/edit/{id}', [\App\Http\Controllers\Admin\PostController::class, 'groupEdit'])->name('group-edit');
Route::post('group/save/{item}', [\App\Http\Controllers\Admin\PostController::class, 'groupSave'])->name('group-save');
}); });
Route::prefix('products')->name('product.')->group( Route::prefix('products')->name('product.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\ProductController::class, 'index'])->name('index'); Route::get('', [\App\Http\Controllers\Admin\ProductController::class, 'index'])->name('index');
@ -321,6 +302,26 @@ Route::prefix(config('app.panel.prefix'))->name('admin.')->group(
Route::post('sort/save', [\App\Http\Controllers\Admin\PropController::class, 'sortSave'])->name('sort-save'); Route::post('sort/save', [\App\Http\Controllers\Admin\PropController::class, 'sortSave'])->name('sort-save');
Route::get('sort', [\App\Http\Controllers\Admin\PropController::class, 'sort'])->name('sort'); Route::get('sort', [\App\Http\Controllers\Admin\PropController::class, 'sort'])->name('sort');
}); });
Route::prefix('questions')->name('question.')->group(
function () {
Route::get('', [\App\Http\Controllers\Admin\QuestionController::class, 'index'])->name('index');
// Route::get('create', [\App\Http\Controllers\Admin\TransportController::class, 'create'])->name('create');
// Route::post('store', [\App\Http\Controllers\Admin\TransportController::class, 'store'])->name('store');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\QuestionController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\QuestionController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\QuestionController::class, 'destroy'])->name('destroy');
// Route::get('restore/{item}', [\App\Http\Controllers\Admin\QuestionController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\QuestionController::class, "bulk"])->name('bulk');
});
Route::prefix('setting')->name('setting.')->group(
function () {
Route::get('index', [\App\Http\Controllers\Admin\SettingController::class, "index"])->name('index');
Route::post('store', [\App\Http\Controllers\Admin\SettingController::class, "store"])->name('store');
Route::post('update', [\App\Http\Controllers\Admin\SettingController::class, "update"])->name('update');
Route::get('cache/clear', [\App\Http\Controllers\Admin\SettingController::class, "cacheClear"])->name('cache-clear');
Route::get('live/{slug}', [\App\Http\Controllers\Admin\SettingController::class, "liveEdit"])->name('live');
}
);
Route::prefix('sliders')->name('slider.')->group( Route::prefix('sliders')->name('slider.')->group(
function () { function () {
Route::get('', [\App\Http\Controllers\Admin\SliderController::class, 'index'])->name('index'); Route::get('', [\App\Http\Controllers\Admin\SliderController::class, 'index'])->name('index');
@ -333,66 +334,59 @@ Route::prefix(config('app.panel.prefix'))->name('admin.')->group(
Route::get('delete/{item}', [\App\Http\Controllers\Admin\SliderController::class, 'destroy'])->name('destroy'); Route::get('delete/{item}', [\App\Http\Controllers\Admin\SliderController::class, 'destroy'])->name('destroy');
Route::post('bulk', [\App\Http\Controllers\Admin\SliderController::class, "bulk"])->name('bulk'); Route::post('bulk', [\App\Http\Controllers\Admin\SliderController::class, "bulk"])->name('bulk');
}); });
Route::prefix('addresses')->name('address.')->group( Route::prefix('states')->name('state.')->group(
function () { function () {
Route::get('customer/{item}', [\App\Http\Controllers\Admin\AddressController::class, 'customer'])->name('customer'); Route::get('', [\App\Http\Controllers\Admin\StateController::class, 'index'])->name('index');
Route::post('add/{item}', [\App\Http\Controllers\Admin\AddressController::class, 'store'])->name('store'); Route::get('create', [\App\Http\Controllers\Admin\StateController::class, 'create'])->name('create');
Route::post('update/{item}', [\App\Http\Controllers\Admin\AddressController::class, 'update'])->name('update'); Route::post('store', [\App\Http\Controllers\Admin\StateController::class, 'store'])->name('store');
Route::get('destroy/{item}', [\App\Http\Controllers\Admin\AddressController::class, 'destroy'])->name('destroy'); Route::get('show/{item}', [\App\Http\Controllers\Admin\StateController::class, 'show'])->name('show');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\StateController::class, 'edit'])->name('edit');
Route::post('update/{item}', [\App\Http\Controllers\Admin\StateController::class, 'update'])->name('update');
Route::get('delete/{item}', [\App\Http\Controllers\Admin\StateController::class, 'destroy'])->name('destroy');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\StateController::class, 'restore'])->name('restore');
Route::post('bulk', [\App\Http\Controllers\Admin\StateController::class, "bulk"])->name('bulk');
Route::get('trashed', [\App\Http\Controllers\Admin\StateController::class, "trashed"])->name('trashed');
}); });
Route::prefix('tags')->name('tag.')->group(
Route::prefix('setting')->name('setting.')->group(
function () { function () {
Route::get('index', [\App\Http\Controllers\Admin\SettingController::class, "index"])->name('index'); Route::get('', [\App\Http\Controllers\Admin\TagController::class, 'index'])->name('index');
Route::post('store', [\App\Http\Controllers\Admin\SettingController::class, "store"])->name('store'); });
Route::post('update', [\App\Http\Controllers\Admin\SettingController::class, "update"])->name('update'); Route::prefix('tickets')->name('ticket.')->group(
Route::get('cache/clear', [\App\Http\Controllers\Admin\SettingController::class, "cacheClear"])->name('cache-clear');
Route::get('live/{slug}', [\App\Http\Controllers\Admin\SettingController::class, "liveEdit"])->name('live');
}
);
Route::prefix('gfx')->name('gfx.')->group(
function () { function () {
Route::get('index', [\App\Http\Controllers\Admin\GfxController::class, "index"])->name('index'); Route::get('', [\App\Http\Controllers\Admin\TicketController::class, 'index'])->name('index');
// Route::post('store', [\App\Http\Controllers\Admin\SettingController::class, "store"])->name('store'); // Route::get('create', [\App\Http\Controllers\Admin\TicketController::class, 'create'])->name('create');
Route::post('update', [\App\Http\Controllers\Admin\GfxController::class, "update"])->name('update'); Route::post('store', [\App\Http\Controllers\Admin\TicketController::class, 'store'])->name('store');
} Route::get('edit/{item}', [\App\Http\Controllers\Admin\TicketController::class, 'edit'])->name('edit');
); Route::post('update/{item}', [\App\Http\Controllers\Admin\TicketController::class, 'update'])->name('update');
Route::prefix('area')->name('area.')->group( Route::get('delete/{item}', [\App\Http\Controllers\Admin\TicketController::class, 'destroy'])->name('destroy');
Route::post('bulk', [\App\Http\Controllers\Admin\TicketController::class, "bulk"])->name('bulk');
});
Route::prefix('transports')->name('transport.')->group(
function () { function () {
Route::get('index', [\App\Http\Controllers\Admin\AreaController::class, "index"])->name('index'); Route::get('', [\App\Http\Controllers\Admin\TransportController::class, 'index'])->name('index');
Route::get('design/{area}', [\App\Http\Controllers\Admin\AreaController::class, "design"])->name('design'); Route::get('create', [\App\Http\Controllers\Admin\TransportController::class, 'create'])->name('create');
Route::get('design/model/{area}/{model}/{id}', [\App\Http\Controllers\Admin\AreaController::class, "designModel"])->name('design.model'); Route::post('store', [\App\Http\Controllers\Admin\TransportController::class, 'store'])->name('store');
Route::get('image/{segment}/{part}', [\App\Http\Controllers\Admin\AreaController::class, "image"])->name('image'); Route::get('edit/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'edit'])->name('edit');
// Route::post('store', [\App\Http\Controllers\Admin\SettingController::class, "store"])->name('store'); Route::post('update/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'update'])->name('update');
Route::post('update/{area}', [\App\Http\Controllers\Admin\AreaController::class, "update"])->name('update'); Route::get('delete/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'destroy'])->name('destroy');
Route::post('update/model/{model}/{id}', [\App\Http\Controllers\Admin\AreaController::class, "updateModel"])->name('update.model'); Route::get('restore/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'restore'])->name('restore');
Route::get('sort/{area}', [\App\Http\Controllers\Admin\AreaController::class, "sort"])->name('sort'); Route::post('bulk', [\App\Http\Controllers\Admin\TransportController::class, "bulk"])->name('bulk');
Route::get('build', [\App\Http\Controllers\Admin\AreaController::class, "build"])->name('build'); Route::get('trashed', [\App\Http\Controllers\Admin\TransportController::class, "trashed"])->name('trashed');
Route::get('guide', [\App\Http\Controllers\Admin\AreaController::class, "guide"])->name('guide'); });
Route::post('sort-save/{area}', [\App\Http\Controllers\Admin\AreaController::class, "sortSave"])->name('sort-save'); Route::prefix('users')->name('user.')->group(
} function () {
); Route::get('', [\App\Http\Controllers\Admin\UserController::class, 'index'])->name('index');
}); Route::get('create', [\App\Http\Controllers\Admin\UserController::class, 'create'])->name('create');
Route::post('store', [\App\Http\Controllers\Admin\UserController::class, 'store'])->name('store');
Route::get('edit/{item}', [\App\Http\Controllers\Admin\UserController::class, 'edit'])->name('edit');
Route::prefix('langs')->name('lang.')->group( Route::get('log/{item}', [\App\Http\Controllers\Admin\AdminLogController::class, 'log'])->name('log');
function () { Route::get('show/{item}', [\App\Http\Controllers\Admin\UserController::class, 'show'])->name('show');
Route::get('/', [\App\Http\Controllers\Admin\XLangController::class, 'index'])->name('index'); Route::post('update/{item}', [\App\Http\Controllers\Admin\UserController::class, 'update'])->name('update');
Route::get('/translates', [\App\Http\Controllers\Admin\XLangController::class, 'translate'])->name('translate'); Route::get('delete/{item}', [\App\Http\Controllers\Admin\UserController::class, 'destroy'])->name('destroy');
Route::get('/delete/{item}', [\App\Http\Controllers\Admin\XLangController::class, 'destroy'])->name('delete'); Route::get('restore/{item}', [\App\Http\Controllers\Admin\UserController::class, 'restore'])->name('restore');
Route::get('/create', [\App\Http\Controllers\Admin\XLangController::class, 'create'])->name('create'); Route::post('bulk', [\App\Http\Controllers\Admin\UserController::class, "bulk"])->name('bulk');
Route::post('/store', [\App\Http\Controllers\Admin\XLangController::class, 'store'])->name('store'); Route::get('trashed', [\App\Http\Controllers\Admin\UserController::class, "trashed"])->name('trashed');
Route::get('/edit/{item}', [\App\Http\Controllers\Admin\XLangController::class, 'edit'])->name('edit'); });
Route::post('/update/{item}', [\App\Http\Controllers\Admin\XLangController::class, 'update'])->name('update');
Route::post('bulk', [\App\Http\Controllers\Admin\XLangController::class, "bulk"])->name('bulk');
Route::get('/download/{tag}', [\App\Http\Controllers\Admin\XLangController::class, 'download'])->name('download');
Route::get('/ai/{tag}', [\App\Http\Controllers\Admin\XLangController::class, 'ai'])->name('ai');
Route::post('/upload/{tag}', [\App\Http\Controllers\Admin\XLangController::class, 'upload'])->name('upload');
Route::get('/model/translate/{id}/{model}', [\App\Http\Controllers\Admin\XLangController::class, 'translateModel'])->name('model');
Route::post('/model/translate/save/{id}/{model}', [\App\Http\Controllers\Admin\XLangController::class, 'translateModelSave'])->name('modelSave');
Route::get('/model/ai/{id}/{model}/{field}/{lang}', [\App\Http\Controllers\Admin\XLangController::class, 'translateModelAi'])->name('aiText');
Route::get('restore/{item}', [\App\Http\Controllers\Admin\XLangController::class, 'restore'])->name('restore');
Route::get('trashed', [\App\Http\Controllers\Admin\XLangController::class, "trashed"])->name('trashed');
}); });

Loading…
Cancel
Save