diff --git a/resources/views/bo/pages/news/create.blade.php b/resources/views/bo/pages/news/create.blade.php
new file mode 100644
index 0000000..aedd76b
--- /dev/null
+++ b/resources/views/bo/pages/news/create.blade.php
@@ -0,0 +1,36 @@
+@extends('bo.layout', ['brParam' => $newsModel])
+
+@section('title', __('Création d\'un :model', ['model' => __('models.classes.news')]))
+@section('description', __('Création d\'un tout nouveau :model', ['model' => __('models.classes.news')]))
+@section('breadcrumb',
+ request()->route()->getName())
+
+@section('content')
+
+
+
+
+
+ @include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $newsModel])
+
+
+
+
+
+
+@endsection
diff --git a/resources/views/bo/pages/news/edit.blade.php b/resources/views/bo/pages/news/edit.blade.php
new file mode 100644
index 0000000..35f1a4d
--- /dev/null
+++ b/resources/views/bo/pages/news/edit.blade.php
@@ -0,0 +1,52 @@
+@extends('bo.layout', ['brParam' => $newsModel])
+
+@section('title', __('Édition d\'un :model', ['model' => __('models.classes.news')]))
+@section('description', __('Édition d\'un :model déjà existant', ['model' => __('models.classes.news')]))
+@section('breadcrumb',
+ request()->route()->getName())
+
+@section('content')
+
+
+
+
+
+ @include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $newsModel])
+
+
+
+
+@endsection
diff --git a/resources/views/bo/pages/news/form.blade.php b/resources/views/bo/pages/news/form.blade.php
new file mode 100644
index 0000000..d54c3f6
--- /dev/null
+++ b/resources/views/bo/pages/news/form.blade.php
@@ -0,0 +1,399 @@
+
+ {{-- SEO --}}
+
+
+
+ {{-- TITLE --}}
+
+
+
+ {{-- SUBTITLE --}}
+
+
+
+ {{-- CATEGORY --}}
+
+
+
+ {{-- CONTENT --}}
+
+
+
+ {{-- PICTURE --}}
+
+
+
+ {{-- PICTURE_THUMBNAIL --}}
+
+
+
+ {{-- PUBLISHED --}}
+
+
+
+ {{-- PUBLICATION --}}
+
+
+
+
+
+
+
+
+
{{ __('* Champs obligatoires') }}
+
+
+
+@push('scripts')
+
+@endpush
diff --git a/resources/views/bo/pages/news/index-list.blade.php b/resources/views/bo/pages/news/index-list.blade.php
new file mode 100644
index 0000000..42f19e0
--- /dev/null
+++ b/resources/views/bo/pages/news/index-list.blade.php
@@ -0,0 +1,83 @@
+
+ @if (count($newsModels) > 0)
+
+ @include('bo.modules.table-col-sorter', [
+ 'cols' => [
+ 'title' => Str::ucfirst(__('validation.attributes.title')),
+ 'category' => Str::ucfirst(__('validation.custom.category')),
+ 'picture' => Str::ucfirst(__('validation.attributes.image')),
+ 'order' => Str::ucfirst(__('validation.custom.order')),
+ 'published' => Str::ucfirst(__('validation.custom.activated')),
+ 'updated_at' => Str::ucfirst(__('validation.attributes.updated_at')),
+ ],
+ ])
+
+
+ @foreach ($newsModels as $newsModel)
+
+ | {{ $newsModel->title }} |
+ {{ $newsModel->category->label() }} |
+
+
+ |
+ @php
+ $routeName = request()
+ ->route()
+ ->getName();
+ @endphp
+ @if (empty(request()->search) && Session::get("$routeName.sort_col") === 'order')
+ @include('bo.modules.change-model-order', [
+ 'routeName' => 'news',
+ 'model' => $newsModel,
+ 'models' => $newsModels,
+ ])
+ @endif
+ @include('bo.modules.change-published-status', [
+ 'routeName' => 'news',
+ 'model' => $newsModel,
+ ])
+
+ {{ $newsModel->updated_at->isoFormat('LLLL') }}
+ |
+
+ @canAny(['delete', 'duplicate', 'update'], $newsModel)
+
+ @else
+
+
+
+ @endcan
+ |
+
+ @endforeach
+
+ @else
+
+ | {{ __('crud.other.no_model_found', ['model' => __('models.classes.news')]) }} |
+
+ @endif
+
diff --git a/resources/views/bo/pages/news/index.blade.php b/resources/views/bo/pages/news/index.blade.php
new file mode 100644
index 0000000..a5251a0
--- /dev/null
+++ b/resources/views/bo/pages/news/index.blade.php
@@ -0,0 +1,21 @@
+@extends('bo.layout')
+
+@section('title', Str::ucfirst(__('models.classes.news')))
+@section('description', __('Liste de tous les :model', ['model' => Str::plural(__('models.classes.news'))]))
+
+@section('content')
+
+ @include('modules.breadcrumbs.breadcrumb-body')
+ @can('create', \App\Models\News::class)
+
+
+
+ @endcan
+
+ @include('bo.modules.search-bar')
+
+ @include('bo.pages.news.index-list')
+
+ {{ $newsModels->links() }}
+@endsection
diff --git a/resources/views/bo/pages/ranges/form.blade.php b/resources/views/bo/pages/ranges/form.blade.php
index c0cf11c..deae11e 100644
--- a/resources/views/bo/pages/ranges/form.blade.php
+++ b/resources/views/bo/pages/ranges/form.blade.php
@@ -95,7 +95,7 @@
'model' => __('models.classes.range'),
]),
'min' => 3,
- 'max' => 255,
+ 'max' => 100,
]),
'placeholder' => __('Un titre clair et concis'),
])
diff --git a/routes/breadcrumbs-bo.php b/routes/breadcrumbs-bo.php
index d4659fe..6f3b70f 100644
--- a/routes/breadcrumbs-bo.php
+++ b/routes/breadcrumbs-bo.php
@@ -4,6 +4,7 @@ use App\Models\ActivityLog;
use App\Models\Commitment;
use App\Models\Range;
use App\Models\SeasonalSection;
+use App\Models\News;
use App\Models\StaticPage;
use App\Models\User;
use Diglactic\Breadcrumbs\Breadcrumbs;
@@ -113,3 +114,23 @@ Breadcrumbs::for('bo.seasonalsections.duplicate', function (Generator $trail) {
$trail->parent('bo.seasonalsections.index');
$trail->push(Str::ucfirst(trans('crud.actions.duplicate')));
});
+
+// * NEWS
+Breadcrumbs::for('bo.news.index', function (Generator $trail) {
+ $trail->push(
+ Str::of(trans('models.classes.news'))->plural()->ucfirst(),
+ route('bo.news.index', ['sort_col' => 'updated_at', 'sort_way' => 'desc'])
+ );
+});
+Breadcrumbs::for('bo.news.create', function (Generator $trail) {
+ $trail->parent('bo.news.index');
+ $trail->push(Str::ucfirst(trans('crud.actions.create')), route('bo.news.create'));
+});
+Breadcrumbs::for('bo.news.edit', function (Generator $trail, News $news) {
+ $trail->parent('bo.news.index');
+ $trail->push(Str::ucfirst(trans('crud.actions.edit')), route('bo.news.edit', $news));
+});
+Breadcrumbs::for('bo.news.duplicate', function (Generator $trail) {
+ $trail->parent('bo.news.index');
+ $trail->push(Str::ucfirst(trans('crud.actions.duplicate')));
+});
diff --git a/routes/web-bo.php b/routes/web-bo.php
index 6ab8d2a..2383b0b 100644
--- a/routes/web-bo.php
+++ b/routes/web-bo.php
@@ -3,6 +3,7 @@
use App\Http\Controllers\Bo\ActivityLogsController;
use App\Http\Controllers\Bo\CommitmentController;
use App\Http\Controllers\Bo\DashboardController;
+use App\Http\Controllers\Bo\NewsController;
use App\Http\Controllers\Bo\StaticPageController;
use App\Http\Controllers\Bo\RangeController;
use App\Http\Controllers\Bo\SeasonalSectionController;
@@ -65,7 +66,9 @@ Route::prefix('bo')
->middleware('htmlsanitize:content');
// * RANGES.
- Route::resource('ranges', RangeController::class)->except('show');
+ Route::resource('ranges', RangeController::class)->except('show')
+ ->withoutMiddleware('htmlsanitize')
+ ->middleware('htmlsanitize:description');
Route::patch('/ranges/{range}/change-published', [
RangeController::class, 'changePublished'
])->name('ranges.change-published');
@@ -88,6 +91,20 @@ Route::prefix('bo')
SeasonalSectionController::class, 'duplicate'
])->name('seasonalsections.duplicate');
+ // * NEWS.
+ Route::resource('news', NewsController::class)->except('show')
+ ->withoutMiddleware('htmlsanitize')
+ ->middleware('htmlsanitize:content');
+ Route::patch('/news/{news}/change-published', [
+ NewsController::class, 'changePublished'
+ ])->name('news.change-published');
+ Route::patch('/news/{news}/change-order/{direction}', [
+ RangeController::class, 'changeOrder'
+ ])->where('direction', 'up|down')->name('news.change-order');
+ Route::get('/news/{news}/duplicate', [
+ NewsController::class, 'duplicate'
+ ])->name('news.duplicate');
+
Route::middleware('can:isConceptor')->group(function () {
// * ACTIVITY LOGS.
Route::resource('activity_logs', ActivityLogsController::class)->only(['index', 'show']);