restore composer.json, add mysqli extension

This commit is contained in:
2026-04-15 17:02:52 +05:00
commit 77cf56a348
4317 changed files with 1397107 additions and 0 deletions

View File

@@ -0,0 +1,118 @@
@extends('dashboard.layouts.app')
@section('title', trans('admin.posts.title') . ' - ')
@section('speedbar')
<div class="content-header row">
<div class="content-header-left col-md-9 col-12 mb-2">
<div class="row breadcrumbs-top">
<div class="col-12">
<h2 class="content-header-title float-left mb-0">@lang('admin.posts.title')</h2>
<div class="breadcrumb-wrapper col-12">
<ol class="breadcrumb">
<li class="breadcrumb-item "><a href="{{ route('dashboard') }}">@lang('admin.home')</a>
</li>
<li class="breadcrumb-item active">
@lang('admin.posts.title') {{ $lang }}
</li>
{{-- <li class="breadcrumb-item active">Fixed Layout --}}
{{-- </li> --}}
</ol>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('content')
<div class="row" id="table-head">
<div class="col-md-12 mb-1">
@can('create', 'posts')
<a href="{{ route('dashboard.post.store', $lang) }}" class="btn btn-icon btn-success float-right">
<i class="feather icon-plus"></i> @lang('admin.add')
</a>
@endcan
</div>
<div class="col-12">
<div class="card">
<div class="card-content">
<div class="table-responsive">
<table class="table mb-0">
<thead class="thead-dark">
<tr>
<th scope="col" width="50">ID</th>
<th scope="col" width="50">@lang('admin.posts.image')</th>
<th scope="col">@lang('admin.posts.name')</th>
<th scope="col">@lang('admin.posts.views')</th>
<th scope="col">@lang('admin.categories.position')</th>
<th scope="col">@lang('admin.posts.type.title')</th>
<th scope="col" class="text-right">@lang('admin.actions')</th>
</tr>
</thead>
<tbody>
@if (count($posts) == 0)
<tr>
<td class="text-center" colspan="4">
@lang('admin.no_data')
</td>
</tr>
@endif
@foreach ($posts as $post)
<tr class="bg {{ $post->topped ? 'bg-light' : '' }}">
<th scope="row">{{ $post->id }}</th>
<td>
<img src="{{ $post->getImage() }}" width="100%" alt="">
</td>
<td>{{ $post->name }}</td>
<td>{{ $post->views }}</td>
<td>{{ $post->position }}</td>
<td>@lang("admin.posts.type.{$post->type}")</td>
<td class="text-right">
@can('update', 'posts')
<a href="{{ route('dashboard.post.update', [$lang, $post->id]) }}"
class="btn btn-sm btn-success btn-icon" data-toggle="tooltip"
data-original-title="@lang('admin.edit')">
<i class="feather icon-edit"></i>
</a>
@endcan
@can('delete', 'posts')
<a href="{{ route('dashboard.post.delete', $post->id) }}"
class="delete-alert btn btn-sm btn-danger btn-icon" data-toggle="tooltip"
data-original-title="@lang('admin.delete')">
<i class="feather icon-trash"></i>
</a>
@endcan
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
{{ $posts->links('pagination::bootstrap-4') }}
</div>
</div>
@endsection
<!-- JavaScript for delete confirmation -->
<script>
document.addEventListener('DOMContentLoaded', function() {
const deleteLinks = document.querySelectorAll('.delete-alert');
deleteLinks.forEach(link => {
link.addEventListener('click', function(event) {
event.preventDefault(); // Prevent the link from following through immediately
const confirmation = confirm("Are you sure you want to delete this post?");
if (confirmation) {
window.location.href = link.href; // Redirect to delete URL if confirmed
}
});
});
});
</script>

View File

@@ -0,0 +1,273 @@
@extends('dashboard.layouts.app')
@section('title', trans('admin.add') . ' - ')
@section('speedbar')
<div class="content-header row">
<div class="content-header-left col-md-9 col-12 mb-2">
<div class="row breadcrumbs-top">
<div class="col-12">
<h2 class="content-header-title float-left mb-0">@lang('admin.add')</h2>
<div class="breadcrumb-wrapper col-12">
<ol class="breadcrumb">
<li class="breadcrumb-item ">
<a href="{{ route('dashboard') }}">@lang('admin.home')</a>
</li>
<li class="breadcrumb-item ">
<a href="{{ route('dashboard.posts', $lang) }}">@lang('admin.posts.title') {{ $lang }}</a>
</li>
<li class="breadcrumb-item active">
@lang('admin.add')
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('css')
<link href="{{ asset('vendor/editor/dist/summernote.min.css') }}" rel="stylesheet">
<link rel="stylesheet" type="text/css"
href="{{ asset('/vendor/dashboard/app-assets/vendors/css/forms/select/select2.min.css') }}">
@endpush
@section('content')
<div class="row">
<form class="form form-vertical" action="{{ route('dashboard.post.store', $lang) }}" enctype="multipart/form-data"
method="post">
<div class="col-md-12 col-12">
<div class="card">
<div class="card-header">
<h4 class="card-title">@lang('admin.add')</h4>
</div>
<div class="card-content">
@csrf
<div class="card-body">
<div class="form-body">
<p>@lang('admin.all_fields_with')</p>
<div class="row">
<div class="col-12">
<div class="row">
<div class="col-12">
<div class="form-group">
<label for="first-name-vertical">@lang('admin.posts.name') *</label>
<input type="text" id="first-name-vertical" required
class="form-control @error('name') is-invalid @enderror"
name="name" value="{{ old('name') }}"
placeholder="@lang('admin.posts.name')">
@error('name')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="col-12">
<label>@lang('admin.posts.content') *</label>
<div class="controls">
<fieldset class="form-group position-relative">
<textarea class="form-control @error('content') is-invalid @enderror" required name="content"
placeholder="@lang('admin.posts.content')" id="description_ru">{{ old('content') }}</textarea>
</fieldset>
@error('content')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="col-12">
<label>@lang('admin.posts.language') *</label>
<fieldset class="form-group">
<select class="select2 form-control" required name="language">
<option disabled>@lang('admin.posts.language')</option>
<option value="{{ $lang }}" selected>{{ $lang }}
</option>
</select>
</fieldset>
</div>
<div class="col-12">
<label>@lang('admin.posts.type.title') *</label>
<fieldset class="form-group">
<select class="select2 form-control" name="type" required>
<option disabled selected>@lang('admin.posts.type.title')</option>
<option value="news">@lang('admin.posts.type.news')</option>
<option value="article">@lang('admin.posts.type.article')</option>
<option value="sales">@lang('admin.posts.type.sales')</option>
<option value="media">@lang('admin.posts.type.media')</option>
</select>
</fieldset>
</div>
</div>
</div>
<div class="col-12">
<div class="form-group">
<label for="image">@lang('admin.posts.image') *</label>
<input type="file" id="image" required
class="form-control @error('image') is-invalid @enderror" name="image"
value="{{ old('image') }}" placeholder="@lang('admin.posts.image')">
@error('image')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="col-12">
<div class="form-group">
<label for="position">@lang('admin.categories.position')</label>
<input type="number" id="position"
class="form-control @error('position') is-invalid @enderror" name="position"
value="{{ old('position') }}" placeholder="@lang('admin.categories.position')">
@error('position')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h4 class="card-title">SEO</h4>
</div>
<div class="card-content">
<div class="card-body">
<div class="row">
<div class="col-12">
<fieldset class="form-label-group">
<textarea class="form-control" name="keywords" id="label-descriptions-ru" rows="3"
placeholder="@lang('admin.settings.keywords')">{{ old('keywords') }}</textarea>
<label for="label-descriptions-ru">@lang('admin.settings.keywords') *</label>
</fieldset>
</div>
<div class="col-12">
<fieldset class="form-label-group">
<textarea class="form-control" name="descriptions" id="label-keywords-ru" rows="3"
placeholder="@lang('admin.settings.description')">{{ old('description') }}</textarea>
<label for="label-keywords-ru">@lang('admin.settings.description') *</label>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-2">
<div class="form-group">
<fieldset class="checkbox">
<div class="vs-checkbox-con vs-checkbox-primary">
<input type="checkbox" value="1" name="topped">
<span class="vs-checkbox">
<span class="vs-checkbox--check">
<i class="vs-icon feather icon-check"></i>
</span>
</span>
<span class="">
@lang('admin.posts.top')
</span>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<div class="card-content">
<div class="card-footer pb-0 pl-0 pt-1">
<div class="col-12 mb-0">
<div class="row">
<div class="col-3">
<button type="submit"
class="btn btn-primary mr-1 mb-1 waves-effect waves-light btn-icon">
<i class="feather icon-save"></i> @lang('admin.save')
</button>
</div>
<div class="col-9">
<a href="{{ route('dashboard.posts', $lang) }}"
class="btn btn-danger mr-1 mb-1 waves-effect waves-light btn-icon pull-right">
<i class="feather icon-x-circle"></i> @lang('admin.cancel')
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
@endsection
@push('js')
<script src="{{ asset('vendor/editor/dist/summernote.min.js') }}"></script>
<script src="{{ asset('/vendor/dashboard/app-assets/vendors/js/forms/select/select2.full.min.js') }}"></script>
<script src="{{ asset('/vendor/dashboard/app-assets/js/scripts/forms/select/form-select2.js') }}"></script>
<script>
$(document).ready(function() {
$('#description_ru').summernote({
height: 300,
callbacks: {
onImageUpload: function(files) {
var that = $(this);
sendFile(files[0], that);
}
}
});
function sendFile(file, that) {
console.log(that);
// console.log(welEditable);
console.log(1);
let data = new FormData();
data.append('file', file);
$.ajax({
url: "{{ route('dashboard.posts.image_upload') }}",
data: data,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data) {
$(that).summernote('insertImage', location.origin + '/' + data.image, '')
},
error: function(data) {
}
})
}
});
// ClassicEditor
// .create( document.querySelector( '#editor' ) )
// .catch( error => {
// console.error( error );
// } );
</script>
@endpush

View File

@@ -0,0 +1,284 @@
@extends('dashboard.layouts.app')
@section('title', trans('admin.edit') . ' ' . $post->name . ' - ')
@section('speedbar')
<div class="content-header row">
<div class="content-header-left col-md-9 col-12 mb-2">
<div class="row breadcrumbs-top">
<div class="col-12">
<h2 class="content-header-title float-left mb-0">@lang('admin.add')</h2>
<div class="breadcrumb-wrapper col-12">
<ol class="breadcrumb">
<li class="breadcrumb-item ">
<a href="{{ route('dashboard') }}">@lang('admin.home')</a>
</li>
<li class="breadcrumb-item ">
<a href="{{ route('dashboard.posts', $lang) }}">@lang('admin.posts.title') {{ $lang }}</a>
</li>
<li class="breadcrumb-item active">
{{ $post->name }}
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('css')
<link href="{{ asset('vendor/editor/dist/summernote.min.css') }}" rel="stylesheet">
<link rel="stylesheet" type="text/css"
href="{{ asset('/vendor/dashboard/app-assets/vendors/css/forms/select/select2.min.css') }}">
@endpush
@section('content')
<div class="row">
<form class="form form-vertical" action="{{ route('dashboard.post.update', [$lang, $post->id]) }}"
enctype="multipart/form-data" method="post">
<div class="col-md-12 col-12">
<div class="card">
<div class="card-header">
<h4 class="card-title">@lang('admin.edit')</h4>
</div>
<div class="card-content">
@csrf
<div class="card-body">
<div class="form-body">
<p>@lang('admin.all_fields_with')</p>
<div class="row">
<div class="col-12">
<div class="row">
<div class="col-12">
<div class="form-group">
<label for="first-name-vertical">@lang('admin.posts.name') *</label>
<input type="text" id="first-name-vertical" required
class="form-control @error('name') is-invalid @enderror"
name="name" value="{{ old('name', $post->name) }}"
placeholder="@lang('admin.posts.name')">
@error('name')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="col-12">
<label>@lang('admin.posts.content') *</label>
<div class="controls">
<fieldset class="form-group position-relative">
<textarea class="form-control @error('content') is-invalid @enderror" required name="content"
placeholder="@lang('admin.posts.content')" id="description_ru">{{ old('content', $post->content) }}</textarea>
</fieldset>
@error('content')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="col-12">
<label>@lang('admin.posts.language') *</label>
<fieldset class="form-group">
<select class="select2 form-control" required name="language">
<option disabled>@lang('admin.posts.language')</option>
<option value="{{ $lang }}" selected>{{ $lang }}
</option>
</select>
</fieldset>
</div>
<div class="col-12">
<label>@lang('admin.posts.type.title') *</label>
<fieldset class="form-group">
<select class="select2 form-control" name="type" required>
<option disabled selected>@lang('admin.posts.type.title')</option>
<option value="news"
{{ $post->type === 'news' ? 'selected' : '' }}>
@lang('admin.posts.type.news')</option>
<option value="article"
{{ $post->type === 'article' ? 'selected' : '' }}>
@lang('admin.posts.type.article')</option>
<option value="sales"
{{ $post->type === 'sales' ? 'selected' : '' }}>
@lang('admin.posts.type.sales')</option>
<option value="media"
{{ $post->type === 'media' ? 'selected' : '' }}>
@lang('admin.posts.type.media')</option>
</select>
</fieldset>
</div>
</div>
</div>
<div class="col-12">
<div class="form-group">
<label for="image">@lang('admin.brands.image') @if (is_file($post->image))
<a href="/{{ $post->image }}" target="_blank">@lang('admin.see')</a>
@endif
</label>
<input type="file" id="image"
class="form-control @error('image') is-invalid @enderror" name="image"
value="{{ old('image') }}" placeholder="@lang('admin.posts.image')">
@error('image')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="col-12">
<div class="form-group">
<label for="position">@lang('admin.categories.position')</label>
<input type="number" id="position"
class="form-control @error('position') is-invalid @enderror" name="position"
value="{{ old('position', $post->position) }}"
placeholder="@lang('admin.categories.position')">
@error('position')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h4 class="card-title">SEO</h4>
</div>
<div class="card-content">
<div class="card-body">
<div class="row">
<div class="col-12">
<fieldset class="form-label-group">
<textarea class="form-control" name="keywords" id="label-descriptions-ru" rows="3"
placeholder="@lang('admin.settings.keywords')">{{ old('keywords', $post->keywords) }}</textarea>
<label for="label-descriptions-ru">@lang('admin.settings.keywords') *</label>
</fieldset>
</div>
<div class="col-12">
<fieldset class="form-label-group">
<textarea class="form-control" name="descriptions" id="label-keywords-ru" rows="3"
placeholder="@lang('admin.settings.description')">{{ old('description', $post->descriptions) }}</textarea>
<label for="label-keywords-ru">@lang('admin.settings.description') *</label>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-content">
<div class="card-body">
<input type="hidden" name="topped" value="0">
<div class="form-group mt-1">
<fieldset class="checkbox">
<div class="vs-checkbox-con vs-checkbox-primary">
<input type="checkbox" value="1" {{ $post->topped ? 'checked' : '' }}
name="topped">
<span class="vs-checkbox">
<span class="vs-checkbox--check">
<i class="vs-icon feather icon-check"></i>
</span>
</span>
<span class="">
@lang('admin.posts.top')
</span>
</div>
</fieldset>
</div>
</div>
</div>
<div class="card-footer pb-0 pl-0 pt-1">
<div class="col-12 mb-0">
<div class="row">
<div class="col-3">
<button type="submit"
class="btn btn-primary mr-1 mb-1 waves-effect waves-light btn-icon">
<i class="feather icon-save"></i> @lang('admin.save')
</button>
</div>
<div class="col-9">
<a href="{{ route('dashboard.posts', $lang) }}"
class="btn btn-danger mr-1 mb-1 waves-effect waves-light btn-icon pull-right">
<i class="feather icon-x-circle"></i> @lang('admin.cancel')
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
@endsection
@push('js')
<script src="{{ asset('vendor/editor/dist/summernote.min.js') }}"></script>
<script src="{{ asset('/vendor/dashboard/app-assets/vendors/js/forms/select/select2.full.min.js') }}"></script>
<script src="{{ asset('/vendor/dashboard/app-assets/js/scripts/forms/select/form-select2.js') }}"></script>
<script>
$(document).ready(function() {
$('#description_ru').summernote({
height: 300,
callbacks: {
onImageUpload: function(files) {
var that = $(this);
sendFile(files[0], that);
}
}
});
function sendFile(file, that) {
console.log(that);
// console.log(welEditable);
console.log(1);
let data = new FormData();
data.append('file', file);
$.ajax({
url: "{{ route('dashboard.posts.image_upload') }}",
data: data,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data) {
$(that).summernote('insertImage', location.origin + '/' + data.image, '')
},
error: function(data) {
}
})
}
});
// ClassicEditor
// .create( document.querySelector( '#editor' ) )
// .catch( error => {
// console.error( error );
// } );
</script>
@endpush