diff --git a/app/Http/Controllers/Bo/FaqQuestionsController.php b/app/Http/Controllers/Bo/FaqQuestionsController.php
index f137928..6ba10c1 100644
--- a/app/Http/Controllers/Bo/FaqQuestionsController.php
+++ b/app/Http/Controllers/Bo/FaqQuestionsController.php
@@ -3,57 +3,170 @@
namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
+use App\Http\Requests\Bo\FaqQuestions\StoreFaqQuestionRequest;
+use App\Http\Requests\Bo\FaqQuestions\UpdateFaqQuestionRequest;
use App\Models\FaqQuestion;
use App\Models\FaqTheme;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Str;
class FaqQuestionsController extends Controller
{
- public function index()
+ /**
+ * Display a listing of the resource.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return \Illuminate\Contracts\View\View
+ */
+ public function index(Request $request): \Illuminate\Contracts\View\View
{
- $questions = FaqQuestion::all();
- for ($i = 0; $i < count($questions); $i++) {
- $questions[$i]['toggle'] = false;
+ /** @var \Illuminate\Database\Eloquent\Builder $faqQuestionModels */
+ $faqQuestionModels = FaqQuestion::query();
+
+ /** @var string $search Search field */
+ $search = $request->search;
+ if ($search) {
+ $this->searchQuery(
+ $faqQuestionModels,
+ $search,
+ null,
+ 'question',
+ 'answer'
+ );
}
- $themes = FaqTheme::all();
- return view('bo.faq-questions.index', compact('questions', 'themes'));
+ $searchFields = \sprintf(
+ '%s, %s ...',
+ Str::ucfirst(__('validation.attributes.question')),
+ __('validation.attributes.answer'),
+ );
+
+ /** Sort columns with a query */
+ $this->sortQuery($faqQuestionModels);
+
+ /** Custom pagination */
+ $faqQuestionModels = $this->customPaginate($faqQuestionModels, $request->pagination);
+
+ return view('bo.pages.faq-questions.index', compact('faqQuestionModels', 'search', 'searchFields'));
}
- public function destroy(Request $request)
+ /**
+ * Show the form for creating a new resource.
+ *
+ * @param \App\Models\FaqQuestion $faqQuestion
+ * @return \Illuminate\Contracts\View\View
+ */
+ public function create(FaqQuestion $faqQuestion): \Illuminate\Contracts\View\View
{
- if ($request->id !== null) {
- $question = FaqQuestion::findOrFail($request->id);
- $question->delete();
- }
+ $faqThemeModels = FaqTheme::all();
+ return view('bo.pages.faq-questions.create', [
+ 'faqQuestionModel' => $faqQuestion,
+ 'faqThemeModels' => $faqThemeModels
+ ]);
}
- public function saveDatas(Request $request)
+ /**
+ * Store a newly created resource in storage.
+ *
+ * @param \App\Http\Requests\Bo\FaqQuestions\StoreFaqQuestionRequest $request
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function store(StoreFaqQuestionRequest $request): \Illuminate\Http\RedirectResponse
{
- $questions = $request->questions;
-
- for ($i = 0; $i < count($questions); $i++) {
- if (isset($questions[$i]["id"])) {
- $q = FaqQuestion::findOrFail($questions[$i]["id"]);
- $q->question = $questions[$i]["question"];
- $q->answer = $questions[$i]["answer"];
- $q->positive_vote = $questions[$i]["positive_vote"];
- $q->negative_vote = $questions[$i]["negative_vote"];
- $q->theme_id = $questions[$i]["theme_id"];
- $q->save();
- } else {
- $t = FaqQuestion::updateOrCreate(
- [
- 'question' => $questions[$i]["question"],
- 'answer' => $questions[$i]["answer"],
- 'positive_vote' => $questions[$i]["positive_vote"],
- 'negative_vote' => $questions[$i]["negative_vote"],
- 'theme_id' => $questions[$i]["theme_id"]
- ]
- );
- $questions[$i]["id"] = $t->id;
+ return DB::transaction(function () use ($request) {
+ $faqQuestion = new FaqQuestion();
+ $faqQuestion->fill($request->validated());
+ if ($faqQuestion->saveOrFail()) {
+ return redirect()
+ ->route('bo.faq-questions.edit', $faqQuestion)
+ ->with(
+ 'success',
+ trans(
+ 'crud.messages.has_been_created',
+ ['model' => trans_choice('models.classes.faq-questions', 1)]
+ )
+ );
}
- }//end for
+ return redirect()
+ ->back()
+ ->with('error', trans(
+ 'crud.messages.cannot_be_created',
+ ['model' => trans_choice('models.classes.faq-questions', 1)]
+ ));
+ });
+ }
- return $questions;
+ /**
+ * Show the form for editing the specified resource.
+ *
+ * @param \App\Models\FaqQuestion $faqQuestion
+ * @return \Illuminate\Contracts\View\View
+ */
+ public function edit(FaqQuestion $faqQuestion): \Illuminate\Contracts\View\View
+ {
+ $faqThemeModels = FaqTheme::all();
+ return view('bo.pages.faq-questions.edit', [
+ 'faqQuestionModel' => $faqQuestion,
+ 'faqThemeModels' => $faqThemeModels
+ ]);
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param \App\Http\Requests\Bo\FaqQuestions\UpdateFaqQuestionRequest $request
+ * @param \App\Models\FaqQuestion $faqQuestion
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function update(
+ UpdateFaqQuestionRequest $request,
+ FaqQuestion $faqQuestion
+ ): \Illuminate\Http\RedirectResponse {
+ return DB::transaction(function () use ($request, $faqQuestion) {
+ $faqQuestion->fill($request->validated());
+ if ($faqQuestion->saveOrFail()) {
+ return redirect()
+ ->route(
+ 'bo.faq-questions.edit',
+ $faqQuestion
+ )
+ ->with('success', trans(
+ 'crud.messages.has_been_updated',
+ ['model' => trans_choice('models.classes.faq-questions', 1)]
+ ));
+ }
+ return redirect()
+ ->back()
+ ->with('error', trans(
+ 'crud.messages.cannot_be_updated',
+ ['model' => trans_choice('models.classes.faq-questions', 1)]
+ ));
+ });
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ *
+ * @param \App\Models\FaqQuestion $faqQuestion
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function destroy(FaqQuestion $faqQuestion): \Illuminate\Http\RedirectResponse
+ {
+ return DB::transaction(function () use ($faqQuestion) {
+ if ($faqQuestion->deleteOrFail()) {
+ return redirect()
+ ->route('bo.faq-questions.index')
+ ->with('success', __(
+ 'crud.messages.has_been_deleted',
+ ['model' => trans_choice('models.classes.faq-questions', 1)]
+ ));
+ }
+ return redirect()
+ ->back()
+ ->with('error', __(
+ ':crud.messages.cannot_be_deleted',
+ ['model' => trans_choice('models.classes.faq-questions', 1)]
+ ));
+ });
}
}
diff --git a/app/Http/Controllers/Bo/FaqThemesController.php b/app/Http/Controllers/Bo/FaqThemesController.php
index e8e5cd9..162f9f0 100644
--- a/app/Http/Controllers/Bo/FaqThemesController.php
+++ b/app/Http/Controllers/Bo/FaqThemesController.php
@@ -3,49 +3,167 @@
namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
-use App\Models\FaqQuestion;
+use App\Http\Requests\Bo\FaqThemes\StoreFaqThemeRequest;
+use App\Http\Requests\Bo\FaqThemes\UpdateFaqThemeRequest;
use App\Models\FaqTheme;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Str;
class FaqThemesController extends Controller
{
- public function index()
+ /**
+ * Display a listing of the resource.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return \Illuminate\Contracts\View\View
+ */
+ public function index(Request $request): \Illuminate\Contracts\View\View
{
- $themes = FaqTheme::all();
- return view('bo.faq-themes.index', compact('themes'));
- }
+ /** @var \Illuminate\Database\Eloquent\Builder $faqThemeModels */
+ $faqThemeModels = FaqTheme::query();
- public function destroy(Request $request)
- {
- $deleteOk = 0;
-
- if (FaqQuestion::where('theme_id', $request->id)->count() > 0) {
- $deleteOk = 1;
- } elseif ($request->id !== null) {
- $theme = FaqTheme::findOrFail($request->id);
- $theme->delete();
- } else {
- $deleteOk = 2;
+ /** @var string $search Search field */
+ $search = $request->search;
+ if ($search) {
+ $this->searchQuery(
+ $faqThemeModels,
+ $search,
+ null,
+ 'question',
+ 'answer'
+ );
}
+ $searchFields = \sprintf(
+ '%s, %s ...',
+ Str::ucfirst(__('validation.attributes.question')),
+ __('validation.attributes.answer'),
+ );
- return $deleteOk;
+ /** Sort columns with a query */
+ $this->sortQuery($faqThemeModels);
+
+ /** Custom pagination */
+ $faqThemeModels = $this->customPaginate($faqThemeModels, $request->pagination);
+
+ return view('bo.pages.faq-themes.index', compact('faqThemeModels', 'search', 'searchFields'));
}
- public function saveDatas(Request $request)
+ /**
+ * Show the form for creating a new resource.
+ *
+ * @param \App\Models\FaqTheme $faqTheme
+ * @return \Illuminate\Contracts\View\View
+ */
+ public function create(FaqTheme $faqTheme): \Illuminate\Contracts\View\View
{
- $themes = $request->themes;
+ return view('bo.pages.faq-themes.create', [
+ 'faqThemeModel' => $faqTheme,
+ ]);
+ }
- for ($i = 0; $i < count($themes); $i++) {
- if (isset($themes[$i]["id"])) {
- $t = FaqTheme::findOrFail($themes[$i]["id"]);
- $t->name = $themes[$i]["name"];
- $t->save();
- } else {
- $t = FaqTheme::updateOrCreate(['name' => $themes[$i]["name"]]);
- $themes[$i]["id"] = $t->id;
+ /**
+ * Store a newly created resource in storage.
+ *
+ * @param \App\Http\Requests\Bo\FaqThemes\StoreFaqThemeRequest $request
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function store(StoreFaqThemeRequest $request): \Illuminate\Http\RedirectResponse
+ {
+ return DB::transaction(function () use ($request) {
+ $faqTheme = new FaqTheme();
+ $faqTheme->fill($request->validated());
+ if ($faqTheme->saveOrFail()) {
+ return redirect()
+ ->route('bo.faq-themes.edit', $faqTheme)
+ ->with(
+ 'success',
+ trans(
+ 'crud.messages.has_been_created',
+ ['model' => trans_choice('models.classes.faq-themes', 1)]
+ )
+ );
}
- }
+ return redirect()
+ ->back()
+ ->with('error', trans(
+ 'crud.messages.cannot_be_created',
+ ['model' => trans_choice('models.classes.faq-themes', 1)]
+ ));
+ });
+ }
- return $themes;
+ /**
+ * Show the form for editing the specified resource.
+ *
+ * @param \App\Models\FaqTheme $faqTheme
+ * @return \Illuminate\Contracts\View\View
+ */
+ public function edit(FaqTheme $faqTheme): \Illuminate\Contracts\View\View
+ {
+ return view('bo.pages.faq-themes.edit', [
+ 'faqThemeModel' => $faqTheme,
+ ]);
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param \App\Http\Requests\Bo\FaqThemes\UpdateFaqThemeRequest $request
+ * @param \App\Models\FaqTheme $faqTheme
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function update(
+ UpdateFaqThemeRequest $request,
+ FaqTheme $faqTheme
+ ): \Illuminate\Http\RedirectResponse {
+ return DB::transaction(function () use ($request, $faqTheme) {
+ $faqTheme->fill($request->validated());
+ if ($faqTheme->saveOrFail()) {
+ return redirect()
+ ->route(
+ 'bo.faq-themes.edit',
+ $faqTheme
+ )
+ ->with('success', trans(
+ 'crud.messages.has_been_updated',
+ ['model' => trans_choice('models.classes.faq-themes', 1)]
+ ));
+ }
+ return redirect()
+ ->back()
+ ->with('error', trans(
+ 'crud.messages.cannot_be_updated',
+ ['model' => trans_choice('models.classes.faq-themes', 1)]
+ ));
+ });
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ *
+ * @param \App\Models\FaqTheme $faqTheme
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function destroy(FaqTheme $faqTheme): \Illuminate\Http\RedirectResponse
+ {
+ return DB::transaction(function () use ($faqTheme) {
+ if ($faqTheme->questions()->count() === 0) {
+ if ($faqTheme->deleteOrFail()) {
+ return redirect()
+ ->route('bo.faq-themes.index')
+ ->with('success', __(
+ 'crud.messages.has_been_deleted',
+ ['model' => trans_choice('models.classes.faq-themes', 1)]
+ ));
+ }
+ }
+ return redirect()
+ ->back()
+ ->with('error', __(
+ 'crud.messages.cannot_be_deleted',
+ ['model' => trans_choice('models.classes.faq-themes', 1)]
+ ));
+ });
}
}
diff --git a/app/Http/Requests/Bo/FaqQuestions/StoreFaqQuestionRequest.php b/app/Http/Requests/Bo/FaqQuestions/StoreFaqQuestionRequest.php
new file mode 100644
index 0000000..c7671bd
--- /dev/null
+++ b/app/Http/Requests/Bo/FaqQuestions/StoreFaqQuestionRequest.php
@@ -0,0 +1,46 @@
+check();
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'question' => 'required|string|min:3|max:255',
+ 'answer' => 'required|string|min:3|max:255',
+ 'theme_id' => 'required|exists:faq_themes,id',
+ ];
+ }
+
+ /**
+ * Get custom attributes for validator errors.
+ *
+ * @return array
+ */
+ public function attributes(): array
+ {
+ return [
+ 'question' => trans('Question'),
+ 'answer' => trans('Réponse'),
+ 'theme_id' => trans('Thème associé'),
+ ];
+ }
+}
diff --git a/app/Http/Requests/Bo/FaqQuestions/UpdateFaqQuestionRequest.php b/app/Http/Requests/Bo/FaqQuestions/UpdateFaqQuestionRequest.php
new file mode 100644
index 0000000..d3537ad
--- /dev/null
+++ b/app/Http/Requests/Bo/FaqQuestions/UpdateFaqQuestionRequest.php
@@ -0,0 +1,7 @@
+check();
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'name' => 'required|string|min:3|max:255'
+ ];
+ }
+
+ /**
+ * Get custom attributes for validator errors.
+ *
+ * @return array
+ */
+ public function attributes(): array
+ {
+ return [
+ 'name' => trans('Nom'),
+ ];
+ }
+}
diff --git a/app/Http/Requests/Bo/FaqThemes/UpdateFaqThemeRequest.php b/app/Http/Requests/Bo/FaqThemes/UpdateFaqThemeRequest.php
new file mode 100644
index 0000000..45209d0
--- /dev/null
+++ b/app/Http/Requests/Bo/FaqThemes/UpdateFaqThemeRequest.php
@@ -0,0 +1,7 @@
+belongsTo(FaqTheme::class, 'theme_id');
}
-
- /**
- * get Utility
- * @return float|integer
- */
- public function getUtilityAttribute()
- {
- $pourcent = 0;
-
- if (
- $this->positive_vote !== null && $this->negative_vote !== null && $this->positive_vote >= $this->negative_vote && $this->positive_vote > 0 && $this->negative_vote > 0
- ) {
- $ratio = $this->negative_vote / $this->positive_vote;
- $pourcent = ceil((1 - $ratio) * 100);
- }
-
- return $pourcent;
- }
}
diff --git a/app/Models/FaqTheme.php b/app/Models/FaqTheme.php
index 4f56a73..176ec57 100644
--- a/app/Models/FaqTheme.php
+++ b/app/Models/FaqTheme.php
@@ -22,6 +22,7 @@ class FaqTheme extends Model
/**
* Question relation
+ *
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function questions()
diff --git a/database/migrations/2020_10_26_093746_create_faq_questions.php b/database/migrations/2020_10_26_093746_create_faq_questions.php
index ef4d55d..0bcd094 100644
--- a/database/migrations/2020_10_26_093746_create_faq_questions.php
+++ b/database/migrations/2020_10_26_093746_create_faq_questions.php
@@ -17,8 +17,6 @@ class CreateFaqQuestions extends Migration
$table->id();
$table->string('question');
$table->text('answer');
- $table->unsignedInteger('positive_vote')->nullable();
- $table->unsignedInteger('negative_vote')->nullable();
$table->foreignId('theme_id')->constrained('faq_themes');
$table->timestamps();
});
diff --git a/resources/lang/fr/models.php b/resources/lang/fr/models.php
index 2f1ed6c..a901cd0 100644
--- a/resources/lang/fr/models.php
+++ b/resources/lang/fr/models.php
@@ -3,6 +3,8 @@
return [
'classes' => [
'bannedips' => 'IP bannies',
- 'contents' => 'contenus',
+ 'contents' => 'Contenus',
+ 'faq-questions' => 'Question pour la FAQ|Questions pour la FAQ',
+ 'faq-themes' => 'Thème pour la FAQ|Thèmes pour la FAQ',
]
];
diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php
index 544de0c..a971c8f 100644
--- a/resources/lang/fr/validation.php
+++ b/resources/lang/fr/validation.php
@@ -177,5 +177,8 @@ return [
'ip' => 'IP',
'value' => 'valeur',
+ 'question' => 'question',
+ 'answer' => 'réponse',
+ 'theme' => 'thème',
],
];
diff --git a/resources/views/bo/faq-questions/index.blade.php b/resources/views/bo/faq-questions/index.blade.php
deleted file mode 100644
index f3f59e9..0000000
--- a/resources/views/bo/faq-questions/index.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-@extends('bo.layout')
-
-@section('content')
- @php
- $data = [
- 'dbdatas' => $questions,
- 'dbthemes' => $themes
- ]
- @endphp
-
-@endsection
diff --git a/resources/views/bo/faq-themes/index.blade.php b/resources/views/bo/faq-themes/index.blade.php
deleted file mode 100644
index 09e8321..0000000
--- a/resources/views/bo/faq-themes/index.blade.php
+++ /dev/null
@@ -1,6 +0,0 @@
-@extends('bo.layout')
-
-@section('content')
- @php $data = ['dbdatas' => $themes]; @endphp
-
-@endsection
diff --git a/resources/views/bo/layouts/nav-menu.blade.php b/resources/views/bo/layouts/nav-menu.blade.php
index 6b54433..2806890 100644
--- a/resources/views/bo/layouts/nav-menu.blade.php
+++ b/resources/views/bo/layouts/nav-menu.blade.php
@@ -105,10 +105,10 @@
diff --git a/resources/views/bo/pages/faq-questions/create.blade.php b/resources/views/bo/pages/faq-questions/create.blade.php
new file mode 100644
index 0000000..0bc875b
--- /dev/null
+++ b/resources/views/bo/pages/faq-questions/create.blade.php
@@ -0,0 +1,46 @@
+@extends('bo.layout', ['brParam' => $faqQuestionModel])
+
+@section('title', __('Création d\'une :model', ['model' => trans_choice('models.classes.faq-questions', 1)]))
+@section('description', __('Création d\'une toute nouvelle :model', ['model' => trans_choice('models.classes.faq-questions', 1)]))
+@section('breadcrumb', request()->route()->getName())
+
+@section('content')
+
+
+
+
+
+ @include('breadcrumbs.breadcrumb-body', ['brParam' => $faqQuestionModel])
+
+
+
+
+
+
+@endsection
diff --git a/resources/views/bo/pages/faq-questions/edit.blade.php b/resources/views/bo/pages/faq-questions/edit.blade.php
new file mode 100644
index 0000000..3869a84
--- /dev/null
+++ b/resources/views/bo/pages/faq-questions/edit.blade.php
@@ -0,0 +1,62 @@
+@extends('bo.layout', ['brParam' => $faqQuestionModel])
+
+@section('title', __('Édition d\'une :model', ['model' => trans_choice('models.classes.faq-questions', 1)]))
+@section('description', __('Édition d\'une :model déjà existante', ['model' => trans_choice('models.classes.faq-questions', 1)]))
+@section('breadcrumb', request()->route()->getName())
+
+@section('content')
+
+
+
+
+
+ @include('breadcrumbs.breadcrumb-body', ['brParam' => $faqQuestionModel])
+
+
+
+
+@endsection
diff --git a/resources/views/bo/pages/faq-questions/form-inputs.blade.php b/resources/views/bo/pages/faq-questions/form-inputs.blade.php
new file mode 100644
index 0000000..72bdfc9
--- /dev/null
+++ b/resources/views/bo/pages/faq-questions/form-inputs.blade.php
@@ -0,0 +1,96 @@
+
+ {{-- QUESTION --}}
+
+
+
+ {{-- ANSWER --}}
+
+
+
+ {{-- THEME_ID --}}
+
+
+
+
+
+@push('scripts')
+
+@endpush
diff --git a/resources/views/bo/pages/faq-questions/index.blade.php b/resources/views/bo/pages/faq-questions/index.blade.php
new file mode 100644
index 0000000..aa5a18a
--- /dev/null
+++ b/resources/views/bo/pages/faq-questions/index.blade.php
@@ -0,0 +1,68 @@
+@extends('bo.layout')
+
+@section('title', trans_choice('models.classes.faq-questions', 2))
+@section('description', __('Liste de toutes les :model', ['model' => trans_choice('models.classes.faq-questions', 2)]))
+
+@section('content')
+
+ @include('breadcrumbs.breadcrumb-body')
+
+
+
+
+@include('bo.modules.search-bar')
+
+ @if (count($faqQuestionModels) > 0)
+
+ @include('bo.modules.table-col-sorter', [
+ 'cols' => [
+ 'question' => Str::ucfirst(__('validation.attributes.question')),
+ 'answer' => Str::ucfirst(__('validation.attributes.answer')),
+ 'theme_id' => Str::ucfirst(__('validation.attributes.theme')),
+ ],
+ ])
+
+
+ @foreach ($faqQuestionModels as $faqQuestionModel)
+
+ | {{ $faqQuestionModel->question }} |
+ {{ $faqQuestionModel->answer }} |
+ {{ $faqQuestionModel->theme->name }} |
+
+
+ |
+
+ @endforeach
+
+ @else
+
+ | {{ __('crud.other.no_model_found', ['model' => trans_choice('models.classes.faq-questions', 1)]) }} |
+
+ @endif
+
+{!! $faqQuestionModels->links() !!}
+@endsection
diff --git a/resources/views/bo/pages/faq-themes/create.blade.php b/resources/views/bo/pages/faq-themes/create.blade.php
new file mode 100644
index 0000000..b4f1a71
--- /dev/null
+++ b/resources/views/bo/pages/faq-themes/create.blade.php
@@ -0,0 +1,46 @@
+@extends('bo.layout', ['brParam' => $faqThemeModel])
+
+@section('title', __('Création d\'une :model', ['model' => trans_choice('models.classes.faq-themes', 1)]))
+@section('description', __('Création d\'une toute nouvelle :model', ['model' => trans_choice('models.classes.faq-themes', 1)]))
+@section('breadcrumb', request()->route()->getName())
+
+@section('content')
+
+
+
+
+
+ @include('breadcrumbs.breadcrumb-body', ['brParam' => $faqThemeModel])
+
+
+
+
+
+
+@endsection
diff --git a/resources/views/bo/pages/faq-themes/edit.blade.php b/resources/views/bo/pages/faq-themes/edit.blade.php
new file mode 100644
index 0000000..96f5070
--- /dev/null
+++ b/resources/views/bo/pages/faq-themes/edit.blade.php
@@ -0,0 +1,62 @@
+@extends('bo.layout', ['brParam' => $faqThemeModel])
+
+@section('title', __('Édition d\'une :model', ['model' => trans_choice('models.classes.faq-themes', 1)]))
+@section('description', __('Édition d\'une :model déjà existante', ['model' => trans_choice('models.classes.faq-themes', 1)]))
+@section('breadcrumb', request()->route()->getName())
+
+@section('content')
+
+
+
+
+
+ @include('breadcrumbs.breadcrumb-body', ['brParam' => $faqThemeModel])
+
+
+
+
+@endsection
diff --git a/resources/views/bo/pages/faq-themes/form-inputs.blade.php b/resources/views/bo/pages/faq-themes/form-inputs.blade.php
new file mode 100644
index 0000000..a682211
--- /dev/null
+++ b/resources/views/bo/pages/faq-themes/form-inputs.blade.php
@@ -0,0 +1,48 @@
+
+ {{-- NAME --}}
+
+
+
+
+
+@push('scripts')
+
+@endpush
diff --git a/resources/views/bo/pages/faq-themes/index.blade.php b/resources/views/bo/pages/faq-themes/index.blade.php
new file mode 100644
index 0000000..39887c0
--- /dev/null
+++ b/resources/views/bo/pages/faq-themes/index.blade.php
@@ -0,0 +1,64 @@
+@extends('bo.layout')
+
+@section('title', trans_choice('models.classes.faq-themes', 2))
+@section('description', __('Liste de toutes les :model', ['model' => trans_choice('models.classes.faq-themes', 2)]))
+
+@section('content')
+
+ @include('breadcrumbs.breadcrumb-body')
+
+
+
+
+@include('bo.modules.search-bar')
+
+ @if (count($faqThemeModels) > 0)
+
+ @include('bo.modules.table-col-sorter', [
+ 'cols' => [
+ 'name' => Str::ucfirst(__('validation.attributes.name')),
+ ],
+ ])
+
+
+ @foreach ($faqThemeModels as $faqThemeModel)
+
+ | {{ $faqThemeModel->name }} |
+
+
+ |
+
+ @endforeach
+
+ @else
+
+ | {{ __('crud.other.no_model_found', ['model' => trans_choice('models.classes.faq-themes', 1)]) }} |
+
+ @endif
+
+{!! $faqThemeModels->links() !!}
+@endsection
diff --git a/routes/breadcrumbs-bo.php b/routes/breadcrumbs-bo.php
index aed30f0..05be3f3 100644
--- a/routes/breadcrumbs-bo.php
+++ b/routes/breadcrumbs-bo.php
@@ -1,6 +1,9 @@
parent('bo.bannedips.index');
$trail->push(__('crud.actions.edit'), route('bo.bannedips.edit', $bannedip->id));
});
+
+// * CONTENTS
+Breadcrumbs::for('bo.contents.index', function (Generator $trail) {
+ $trail->push(__('models.classes.contents'), route('bo.contents.index'));
+});
+Breadcrumbs::for('bo.contents.edit', function (Generator $trail, Content $content) {
+ $trail->parent('bo.contents.index');
+ $trail->push(__('crud.actions.edit'), route('bo.contents.edit', $content->id));
+});
+
+// * FAQ - QUESTIONS
+Breadcrumbs::for('bo.faq-questions.index', function (Generator $trail) {
+ $trail->push(trans_choice('models.classes.faq-questions', 2), route('bo.faq-questions.index'));
+});
+Breadcrumbs::for('bo.faq-questions.create', function (Generator $trail) {
+ $trail->parent('bo.faq-questions.index');
+ $trail->push(__('crud.actions.create'), route('bo.faq-questions.create'));
+});
+Breadcrumbs::for('bo.faq-questions.edit', function (Generator $trail, FaqQuestion $faqQuestion) {
+ $trail->parent('bo.faq-questions.index');
+ $trail->push(__('crud.actions.edit'), route('bo.faq-questions.edit', $faqQuestion->id));
+});
+
+// * FAQ - THEMES
+Breadcrumbs::for('bo.faq-themes.index', function (Generator $trail) {
+ $trail->push(trans_choice('models.classes.faq-themes', 2), route('bo.faq-themes.index'));
+});
+Breadcrumbs::for('bo.faq-themes.create', function (Generator $trail) {
+ $trail->parent('bo.faq-themes.index');
+ $trail->push(__('crud.actions.create'), route('bo.faq-themes.create'));
+});
+Breadcrumbs::for('bo.faq-themes.edit', function (Generator $trail, FaqTheme $faqTheme) {
+ $trail->parent('bo.faq-themes.index');
+ $trail->push(__('crud.actions.edit'), route('bo.faq-themes.edit', $faqTheme->id));
+});
diff --git a/routes/web-bo.php b/routes/web-bo.php
index 4ac265a..bac2b4f 100644
--- a/routes/web-bo.php
+++ b/routes/web-bo.php
@@ -36,13 +36,17 @@ Route::prefix('bo')
});
Route::middleware(['auth:backend', 'is-admin', 'is-super-admin'])
->group(function () {
- // * BANNED IPS.
+ // * BANNED IPS
Route::resource('/bannedips', BannedIpController::class)->except('show');
- // * CONTENTS.
+ // * CONTENTS
Route::resource('/contents', ContentController::class)
->only(['index', 'edit', 'update'])
->withoutMiddleware('htmlsanitize')
->middleware(['htmlsanitize:value']);
+ // * FAQ - THEMES
+ Route::resource('/faq-themes', FaqThemesController::class)->except('show');
+ // * FAQ - QUESTIONS
+ Route::resource('/faq-questions', FaqQuestionsController::class)->except('show');
// TODO RESTE A FAIRE :.
Route::get('/', [DashboardController::class, 'index'])
@@ -69,14 +73,6 @@ Route::prefix('bo')
->withoutMiddleware('is-super-admin');
Route::post('/ajax/save-codes-ean', [CodesEANController::class, 'saveDatas'])
->withoutMiddleware('is-super-admin');
- // FAQ - Thèmes.
- Route::get('/faq-themes', [FaqThemesController::class, 'index'])->name('faq-themes');
- Route::post('/ajax/delete-faq-theme', [FaqThemesController::class, 'destroy']);
- Route::post('/ajax/save-faq-theme', [FaqThemesController::class, 'saveDatas']);
- // FAQ - Questions.
- Route::get('/faq-questions', [FaqQuestionsController::class, 'index'])->name('faq-questions');
- Route::post('/ajax/delete-faq-question', [FaqQuestionsController::class, 'destroy']);
- Route::post('/ajax/save-faq-question', [FaqQuestionsController::class, 'saveDatas']);
// Codes uniques.
Route::get('/codes', [CodesController::class, 'index'])->name('codes');
Route::post('/codes', [CodesController::class, 'generate'])->name('generate-codes');