fix: 🐛 makes functional change order method on models who own order field
This commit is contained in:
parent
eb642c85eb
commit
ec031ec3ec
41 changed files with 1150 additions and 1032 deletions
|
|
@ -6,19 +6,19 @@ use App\Http\Controllers\Controller;
|
|||
use App\Http\Requests\Bo\AppUser\StoreAppUserRequest;
|
||||
use App\Http\Requests\Bo\AppUser\UpdateAppUserRequest;
|
||||
use App\Http\Requests\Bo\ImportRequest;
|
||||
use App\Http\Requests\Bo\UpdateChangeOrderRequest;
|
||||
use App\Imports\AppUserImport;
|
||||
use App\Models\AppUser;
|
||||
use App\Models\Directory;
|
||||
use App\Traits\Controllers\ChangesModelOrder;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Session;
|
||||
use Illuminate\Support\Str;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
|
||||
class AppUserController extends Controller
|
||||
{
|
||||
use ChangesModelOrder;
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
|
|
@ -40,7 +40,11 @@ class AppUserController extends Controller
|
|||
'email'
|
||||
);
|
||||
}
|
||||
$searchFields = trans('Nom, Prénom, Email');
|
||||
$searchFields = \implode(', ', [
|
||||
trans('validation.attributes.last_name'),
|
||||
trans('validation.attributes.first_name'),
|
||||
trans('validation.attributes.email'),
|
||||
]);
|
||||
|
||||
/** Sort columns with a query */
|
||||
$this->sortQuery($query);
|
||||
|
|
@ -188,4 +192,61 @@ class AppUserController extends Controller
|
|||
|
||||
return redirect()->route('bo.app-users.index')->with('success', 'Import terminé.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Change order.
|
||||
*
|
||||
* @param \App\Http\Requests\Bo\UpdateChangeOrderRequest $request
|
||||
* @param mixed ...$params
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
* @throws \RuntimeException Si le nom du parametre de la route ne correspond pas au params utilisé.
|
||||
*/
|
||||
public function changeOrder(UpdateChangeOrderRequest $request, mixed ...$params): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
$paramNames = collect(request()->route()->parameterNames);
|
||||
$className = Str::of($paramNames->get($paramNames->count() - 2))->lower()->studly();
|
||||
$className = "\\App\\Models\\AppUser";
|
||||
$modelId = Arr::get($params, $paramNames->count() - 2);
|
||||
$model = AppUser::find($modelId);
|
||||
|
||||
if (!class_exists($className)) {
|
||||
throw new \RuntimeException("The {$className} class doesn't exist.");
|
||||
}
|
||||
|
||||
if (!\is_object($model)) {
|
||||
throw new \RuntimeException("The second last param isn't an object.");
|
||||
}
|
||||
|
||||
if (get_class($model) !== (string) Str::of($className)->replaceStart('\\', '')) {
|
||||
throw new \RuntimeException("The {$className} doesn't match second last binded param.");
|
||||
}
|
||||
|
||||
/** @var \Illuminate\Database\Eloquent\Model|null */
|
||||
$model = $className::query()->where($model->getRouteKeyName(), $model->getRouteKey())->first();
|
||||
|
||||
if (!$model) {
|
||||
return back()->with('error', trans('crud.messages.order_not_changed'));
|
||||
}
|
||||
|
||||
return DB::transaction(function () use ($request, $className, $model) {
|
||||
/** @var \Illuminate\Database\Eloquent\Model|null */
|
||||
$tmp = $className::where('order', $request->direction ? '<' : '>', $model->getOriginal('order'))
|
||||
->orderBy('order', $request->direction ? 'DESC' : 'ASC')->first();
|
||||
|
||||
if (!$tmp) {
|
||||
return back()->with('error', trans('crud.messages.order_not_changed'));
|
||||
}
|
||||
|
||||
$newOrder = $tmp->getOriginal('order');
|
||||
// @phpstan-ignore property.notFound
|
||||
$tmp->order = $model->getOriginal('order');
|
||||
$tmp->saveQuietly();
|
||||
// @phpstan-ignore property.notFound
|
||||
$model->order = $newOrder;
|
||||
$model->saveQuietly();
|
||||
Session::flash('success', trans('crud.messages.order_changed'));
|
||||
|
||||
return back();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,11 @@ class ContactController extends Controller
|
|||
'email',
|
||||
);
|
||||
}
|
||||
$searchFields = \implode(',', [trans('Nom'), trans('Prénom'), trans('Email')]);
|
||||
$searchFields = \implode(', ', [
|
||||
trans('validation.attributes.last_name'),
|
||||
trans('validation.attributes.email'),
|
||||
trans('validation.attributes.phone'),
|
||||
]);
|
||||
|
||||
/** Sort columns with a query */
|
||||
$this->sortQuery($query);
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ class DocumentController extends Controller
|
|||
'title',
|
||||
);
|
||||
}
|
||||
$searchFields = trans('Titre');
|
||||
$searchFields = trans('validation.attributes.title');
|
||||
|
||||
/** Search by tags */
|
||||
$query->when($request->tag, function ($query) use ($request) {
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class FormularyController extends Controller
|
|||
'name',
|
||||
);
|
||||
}
|
||||
$searchFields = trans('Nom');
|
||||
$searchFields = trans('validation.attributes.name');
|
||||
|
||||
/** Sort columns with a query */
|
||||
$this->sortQuery($query);
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class TagController extends Controller
|
|||
'name',
|
||||
);
|
||||
}
|
||||
$searchFields = trans('Nom');
|
||||
$searchFields = trans('validation.attributes.name');
|
||||
|
||||
/** Sort columns with a query */
|
||||
$this->sortQuery($query);
|
||||
|
|
|
|||
21
app/Policies/AppUserPolicy.php
Normal file
21
app/Policies/AppUserPolicy.php
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\Enums\UserRolesEnum;
|
||||
use App\Models\User;
|
||||
use App\Policies\Rules\UserStaticRules;
|
||||
|
||||
class AppUserPolicy
|
||||
{
|
||||
/**
|
||||
* Determine whether the user can publish/unpublish the model.
|
||||
*
|
||||
* @param \App\Models\User $authUser
|
||||
* @return boolean
|
||||
*/
|
||||
public function changeOrder(User $authUser): bool
|
||||
{
|
||||
return UserStaticRules::atLeastRole($authUser, UserRolesEnum::admin);
|
||||
}
|
||||
}
|
||||
21
app/Policies/DocumentPolicy.php
Normal file
21
app/Policies/DocumentPolicy.php
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\Enums\UserRolesEnum;
|
||||
use App\Models\User;
|
||||
use App\Policies\Rules\UserStaticRules;
|
||||
|
||||
class DocumentPolicy
|
||||
{
|
||||
/**
|
||||
* Determine whether the user can publish/unpublish the model.
|
||||
*
|
||||
* @param \App\Models\User $authUser
|
||||
* @return boolean
|
||||
*/
|
||||
public function changeOrder(User $authUser): bool
|
||||
{
|
||||
return UserStaticRules::atLeastRole($authUser, UserRolesEnum::admin);
|
||||
}
|
||||
}
|
||||
42
database/migrations/2025_05_20_140312_alter_order_table.php
Normal file
42
database/migrations/2025_05_20_140312_alter_order_table.php
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
use App\Models\AppUser;
|
||||
use App\Models\Document;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
AppUser::query()->get()->map(function (AppUser $appUser, int $key) {
|
||||
$appUser->order = $key + 1;
|
||||
$appUser->saveQuietly();
|
||||
});
|
||||
Document::query()->get()->map(function (Document $document, int $key) {
|
||||
$document->order = $key + 1;
|
||||
$document->saveQuietly();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
AppUser::query()->get()->map(function (AppUser $appUser) {
|
||||
$appUser->order = 0;
|
||||
$appUser->saveQuietly();
|
||||
});
|
||||
Document::query()->get()->map(function (Document $document) {
|
||||
$document->order = 0;
|
||||
$document->saveQuietly();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
@ -57,3 +57,7 @@
|
|||
.table-col-sorter {
|
||||
height: 3rem;
|
||||
}
|
||||
|
||||
main {
|
||||
min-height: calc(100vh - 56px - 40px);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,24 +7,18 @@
|
|||
|
||||
<body>
|
||||
@include('bo.layouts.header')
|
||||
<main class="container-fluid @yield('bg-color') pt-3">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-12 col-md-6">
|
||||
@include('modules.flash-message')
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-12 col-md-10 col-lg-8">
|
||||
@include('modules.breadcrumb.breadcrumb-body')
|
||||
</div>
|
||||
</div>
|
||||
<div class="row p-md-3 justify-content-center">
|
||||
<div class="col-12 col-md-10 col-lg-8 p-md-0 pt-3">
|
||||
@yield('content')
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<main class="container py-3">
|
||||
{{-- Show a message when an action is performed --}}
|
||||
@include('modules.flash-messages')
|
||||
{{-- Main content --}}
|
||||
@yield('content')
|
||||
</main>
|
||||
@stack('scriptsConstants')
|
||||
|
||||
<!-- Footer -->
|
||||
@include('bo.layouts.footer')
|
||||
|
||||
<!-- Other -->
|
||||
@include('modules.script-constants')
|
||||
@vite(['resources/ts/bo/bo.ts'])
|
||||
@stack('scripts')
|
||||
|
|
|
|||
10
resources/views/bo/layouts/footer.blade.php
Normal file
10
resources/views/bo/layouts/footer.blade.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<footer class="bg-body-tertiary px-0 text-center" id="footer">
|
||||
<div class="p-2 text-center">
|
||||
@if (isset($cpsr_name) && isset($cpsr_version))
|
||||
<span class="text-reset">{{ $cpsr_name }} - {{ $cpsr_version }}</span>
|
||||
<span>-</span>
|
||||
@endif
|
||||
<span class="text-reset fw-bold">{{ __('UWIL') }}</span>
|
||||
© {{ date('Y') }}
|
||||
</div>
|
||||
</footer>
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<nav class="navbar navbar-expand-lg bg-light text-bg-light shadow-sm">
|
||||
<nav class="navbar navbar-expand-xl bg-light text-bg-light shadow-sm">
|
||||
<div class="container">
|
||||
<a class="navbar-brand rounded py-1" href="{{ url('/') }}">
|
||||
{{ config('app.name', 'Laravel') }}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.app-users.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.app-users.index') }}?rst=1" title="{{ __('Liste des :model', ['model' => __('models.classes.users')]) }}">
|
||||
href="{{ route('bo.app-users.index') }}" title="{{ __('Liste des :model', ['model' => __('models.classes.users')]) }}">
|
||||
{{ __(':model', ['model' => __('models.classes.users')]) }}
|
||||
</a>
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -1,87 +1,70 @@
|
|||
<div class="table-responsive">
|
||||
<table class="table fix-action">
|
||||
<thead>
|
||||
@php
|
||||
$cols = ['lastname' => __('Nom'), 'firstname' => __('Prénom'), 'email' => __('Email'), 'order' => __('Order')];
|
||||
@endphp
|
||||
@include('bo.modules.table-col-sorter', [
|
||||
'cols' => $cols,
|
||||
'cols' => [
|
||||
'lastname' => __('Nom'),
|
||||
'firstname' => __('Prénom'),
|
||||
'email' => __('Email'),
|
||||
'order' => __('Order')
|
||||
],
|
||||
'mobileHide' => [],
|
||||
])
|
||||
</thead>
|
||||
<tbody>
|
||||
@if ($app_users->count())
|
||||
@foreach ($app_users as $app_usersModel)
|
||||
<tr>
|
||||
<td>
|
||||
<span>{{ $app_usersModel->lastname }}</span>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<span>{{ $app_usersModel->firstname }}</span>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<span>{{ $app_usersModel->email }}</span>
|
||||
</td>
|
||||
@php $routeName = request()->route()->getName(); @endphp
|
||||
@if(empty(request()->search) && Session::get("$routeName.sort_col") === "order")
|
||||
<td class="align-middle d-flex justify-content-center align-items-center">
|
||||
<form action="{{ route('bo.app-users.change-order', ['appuser' => $app_usersModel, 'action' => 'up']) }}"
|
||||
method="POST"
|
||||
class="text-center @if($loop->first and $app_users->onFirstPage()) invisible @endif">
|
||||
@csrf
|
||||
<button type="submit"
|
||||
class="btn btn-sm btn-outline-dark @if(($loop->first and $app_users->onFirstPage())) disabled @endif"
|
||||
title="{{ __('Modifier l\'ordre d\'apparition vers le haut') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fas fa-arrow-up"></i>
|
||||
</button>
|
||||
</form>
|
||||
<form action="{{ route('bo.app-users.change-order', ['appuser' => $app_usersModel, 'action' => 'down']) }}"
|
||||
method="POST"
|
||||
class="text-center @if($loop->last and $app_users->currentPage() === $app_users->lastPage()) invisible @endif">
|
||||
@csrf
|
||||
<button type="submit"
|
||||
class="btn btn-sm btn-outline-dark ms-1 @if($loop->last and $app_users->currentPage() === $app_users->lastPage()) disabled @endif"
|
||||
title="{{ __('Modifier l\'ordre d\'apparition vers le bas') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fas fa-arrow-down"></i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
@endif
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<form action="{{ route('bo.app-users.destroy', $app_usersModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<a id="formSubmitClone"
|
||||
href="{{ route('bo.app-users.edit', $app_usersModel) }}"
|
||||
class="btn btn-sm btn-primary"
|
||||
role="button"
|
||||
title="{{ __('Modifier l\':model', ['model' => Str::singular(__('models.classes.users'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
<button class="btn btn-sm btn-danger"
|
||||
title="{{ __('Supprimer l\':model', ['model' => Str::singular(__('models.classes.users'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
@foreach ($app_users as $app_usersModel)
|
||||
<tr>
|
||||
<td>
|
||||
<span>{{ $app_usersModel->lastname }}</span>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<span>{{ $app_usersModel->firstname }}</span>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<span>{{ $app_usersModel->email }}</span>
|
||||
</td>
|
||||
@php $routeName = request()->route()->getName(); @endphp
|
||||
@if (empty(request()->search) && Session::get("$routeName.sort_col") === 'order')
|
||||
@include('bo.modules.change-model-order', [
|
||||
'routeName' => 'appUsers',
|
||||
'models' => $app_users,
|
||||
'model' => $app_usersModel,
|
||||
])
|
||||
@endif
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<form action="{{ route('bo.app-users.destroy', $app_usersModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<a id="formSubmitClone"
|
||||
href="{{ route('bo.app-users.edit', $app_usersModel) }}"
|
||||
class="btn btn-sm btn-primary"
|
||||
role="button"
|
||||
title="{{ __('Modifier l\':model', ['model' => Str::singular(__('models.classes.users'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
<button class="btn btn-sm btn-danger"
|
||||
title="{{ __('Supprimer l\':model', ['model' => Str::singular(__('models.classes.users'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@else
|
||||
<tr>
|
||||
<td colspan="{{ count($cols) + 1 }}" class="text-center">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.users')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="{{ count($cols) + 1 }}" class="text-center">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.users')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -6,48 +6,48 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ __('models.classes.app_users') }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col d-flex align-items-center">
|
||||
<form class="input-group"
|
||||
action="{{ route('bo.app-users.import') }}"
|
||||
method="POST"
|
||||
enctype="multipart/form-data">
|
||||
<input class="form-control" type="file" name="import" accept="text/csv,.csv"
|
||||
title="{{ __('Sélectionner un fichier .csv') }}"
|
||||
data-bs-toggle="tooltip" required>
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-primary"
|
||||
title="{{ __('Importer le fichier .csv') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Importer') }}
|
||||
</button>
|
||||
</form>
|
||||
<div class="ms-1 justify-content-end">
|
||||
<a href="{{ route('bo.app-users.create') }}"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Créer un(e) :model', ['model' => Str::singular(__('models.classes.app_users'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ __('models.classes.app_users') }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col d-flex align-items-center">
|
||||
<form class="input-group"
|
||||
action="{{ route('bo.app-users.import') }}"
|
||||
method="POST"
|
||||
enctype="multipart/form-data">
|
||||
<input class="form-control" type="file" name="import" accept="text/csv,.csv"
|
||||
title="{{ __('Sélectionner un fichier .csv') }}"
|
||||
data-bs-toggle="tooltip" required>
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-primary"
|
||||
title="{{ __('Importer le fichier .csv') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Importer') }}
|
||||
</button>
|
||||
</form>
|
||||
<div class="ms-1 justify-content-end">
|
||||
<a href="{{ route('bo.app-users.create') }}"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Créer un(e) :model', ['model' => Str::singular(__('models.classes.app_users'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@include('bo.modules.search-bar')
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
@include('bo.pages.app-users.index-list')
|
||||
<div class="card-body">
|
||||
@include('bo.modules.search-bar')
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
@include('bo.pages.app-users.index-list')
|
||||
</div>
|
||||
</div>
|
||||
{{ $app_users->withQueryString()->onEachSide(1)->links() }}
|
||||
</div>
|
||||
{{ $app_users->withQueryString()->onEachSide(1)->links() }}
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -1,17 +1,14 @@
|
|||
<div class="table-responsive">
|
||||
<table class="fix-action table">
|
||||
<thead>
|
||||
@php
|
||||
$cols = [
|
||||
@include('bo.modules.table-col-sorter', [
|
||||
'cols' => [
|
||||
'lastname' => __('Nom'),
|
||||
'email' => __('Email'),
|
||||
'phone' => __('Téléphone'),
|
||||
'app_user_id' => __('Commercial'),
|
||||
'updated_at' => __('Mis à jour'),
|
||||
];
|
||||
@endphp
|
||||
@include('bo.modules.table-col-sorter', [
|
||||
'cols' => $cols,
|
||||
],
|
||||
'mobileHide' => [],
|
||||
])
|
||||
</thead>
|
||||
|
|
|
|||
|
|
@ -3,8 +3,7 @@
|
|||
@section('title', sprintf('%s - %s', __('models.classes.contacts'), Str::ucfirst(__('liste'))))
|
||||
@section('description', __('Page de contôle sur tous les contacts de l\'application.'))
|
||||
|
||||
@section('breadcrumb',
|
||||
request()->route()->getName())
|
||||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
|
|
|
|||
|
|
@ -3,8 +3,7 @@
|
|||
@section('title', sprintf('%s - %s', __('models.classes.contacts'), Str::ucfirst(__('liste'))))
|
||||
@section('description', __('Page de contôle sur tous les contacts de l\'application.'))
|
||||
|
||||
@section('breadcrumb',
|
||||
request()->route()->getName())
|
||||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
|
|
|
|||
|
|
@ -6,60 +6,60 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.directories.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.directories')]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.directories')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('édition')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<form action="{{ route('bo.directories.destroy', $directoryModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('POST')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder le :model', ['model' => Str::singular(__('models.classes.directories'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
<button class="btn btn-danger"
|
||||
title="{{ __('Supprimer le :model', ['model' => Str::singular(__('models.classes.directories'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.directories.update', $directoryModel->id) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.directories.form', ['model' => $directoryModel])
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Sauvegarder :model', ['model' => Str::singular(__('models.classes.directories'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.directories.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.directories')]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.directories')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('édition')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<form action="{{ route('bo.directories.destroy', $directoryModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('POST')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder le :model', ['model' => Str::singular(__('models.classes.directories'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
<button class="btn btn-danger"
|
||||
title="{{ __('Supprimer le :model', ['model' => Str::singular(__('models.classes.directories'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.directories.update', $directoryModel->id) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.directories.form', ['model' => $directoryModel])
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Sauvegarder :model', ['model' => Str::singular(__('models.classes.directories'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -6,51 +6,51 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ __('models.classes.directories') }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<form action="{{ route('bo.directories.store') }}"
|
||||
class="pb-3 mb-3 border-bottom"
|
||||
method="POST">
|
||||
@csrf
|
||||
<div class="col-12 input-group">
|
||||
<input
|
||||
id="directoryName"
|
||||
class="form-control @error('name.fr') is-invalid @enderror"
|
||||
name="name[fr]"
|
||||
placeholder="{{ __('Ajouter un dossier (nom en français)') }}">
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
title="Ajouter un nouveau nom de dossier unique en français à la liste"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</button>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ __('models.classes.directories') }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<form action="{{ route('bo.directories.store') }}"
|
||||
class="pb-3 mb-3 border-bottom"
|
||||
method="POST">
|
||||
@csrf
|
||||
<div class="col-12 input-group">
|
||||
<input
|
||||
id="directoryName"
|
||||
class="form-control @error('name.fr') is-invalid @enderror"
|
||||
name="name[fr]"
|
||||
placeholder="{{ __('Ajouter un dossier (nom en français)') }}">
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
title="Ajouter un nouveau nom de dossier unique en français à la liste"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
@include('modules.input-error', [
|
||||
'inputName' => "name.fr",
|
||||
'helperId' => 'directoryNameHelp',
|
||||
'helper' => __('Doit posséder 3 caractères minimum, 255 maximum.'),
|
||||
])
|
||||
</form>
|
||||
<div class="col">
|
||||
@php
|
||||
$data = [
|
||||
'id' => 'system',
|
||||
'directories' => $directories
|
||||
]
|
||||
@endphp
|
||||
<div id="directories" data-json='@json($data)'></div>
|
||||
</div>
|
||||
@include('modules.input-error', [
|
||||
'inputName' => "name.fr",
|
||||
'helperId' => 'directoryNameHelp',
|
||||
'helper' => __('Doit posséder 3 caractères minimum, 255 maximum.'),
|
||||
])
|
||||
</form>
|
||||
<div class="col">
|
||||
@php
|
||||
$data = [
|
||||
'id' => 'system',
|
||||
'directories' => $directories
|
||||
]
|
||||
@endphp
|
||||
<div id="directories" data-json='@json($data)'></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -6,68 +6,68 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.documents.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.documents')]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.documents')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('édition')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<form action="{{ route('bo.documents.destroy', $documentModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<a href="{{ asset("storage/docs/" . $documentModel->uuid . "." . $documentModel->type->value()) }}"
|
||||
target="blank"
|
||||
class="btn btn-warning"
|
||||
role="button"
|
||||
title="{{ __('Visualiser le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-eye"></i>
|
||||
</a>
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
<button class="btn btn-danger"
|
||||
title="{{ __('Supprimer le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.documents.update', $documentModel->id) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.documents.form', ['model' => $documentModel])
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Sauvegarder :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.documents.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.documents')]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.documents')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('édition')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<form action="{{ route('bo.documents.destroy', $documentModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<a href="{{ asset("storage/docs/" . $documentModel->uuid . "." . $documentModel->type->value()) }}"
|
||||
target="blank"
|
||||
class="btn btn-warning"
|
||||
role="button"
|
||||
title="{{ __('Visualiser le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-eye"></i>
|
||||
</a>
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
<button class="btn btn-danger"
|
||||
title="{{ __('Supprimer le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.documents.update', $documentModel->id) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.documents.form', ['model' => $documentModel])
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Sauvegarder :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -1,122 +1,106 @@
|
|||
<div class="table-responsive">
|
||||
<table class="table fix-action">
|
||||
<thead>
|
||||
@php
|
||||
$cols = ['title' => __('Title'), 'directory_id' => __('Dossier'), 'document_id' => __('Document'), 'type' => __('Type'), 'order' => __('Order')];
|
||||
@endphp
|
||||
@include('bo.modules.table-col-sorter', [
|
||||
'cols' => $cols,
|
||||
'cols' => [
|
||||
'title' => __('Title'),
|
||||
'directory_id' => __('Dossier'),
|
||||
'document_id' => __('Document'),
|
||||
'type' => __('Type'),
|
||||
'order' => __('Order')
|
||||
],
|
||||
'mobileHide' => []
|
||||
])
|
||||
</thead>
|
||||
<tbody>
|
||||
@if ($documents->count())
|
||||
@foreach ($documents as $documentModel)
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<span>{{ $documentModel->title }}</span>
|
||||
</td>
|
||||
<td class="text-center align-middle">
|
||||
@if(isset($documentModel->directory->is_system) && !$documentModel->directory->is_system)
|
||||
<a href="{{ route('bo.directories.edit', ['directory' => $documentModel->directory_id]) }}">
|
||||
<button class="btn btn-sm btn-outline-dark"
|
||||
title="{{ __('Accéder au dossier associé') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ $documentModel->directory->name['fr'] }}
|
||||
</button>
|
||||
</a>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center align-middle">
|
||||
@if(!is_null($documentModel->document_id))
|
||||
<a href="{{ route('bo.documents.edit', ['document' => $documentModel->document_id]) }}">
|
||||
<button class="btn btn-sm btn-outline-dark"
|
||||
title="{{ __('Accéder au document associé') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ $documentModel->parentDocument->title }}
|
||||
</button>
|
||||
</a>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center align-middle">
|
||||
@foreach(\App\Enums\Documents\TypeEnum::cases() as $typeEnum)
|
||||
@if ($documentModel->type->value() === $typeEnum->value)
|
||||
<span class="px1"
|
||||
title="{{ sprintf('Document de type .%s', $documentModel->type->name()) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-{{ $typeEnum->icon() }}"></i>
|
||||
</span>
|
||||
@foreach ($documents as $documentModel)
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<span>{{ $documentModel->title }}</span>
|
||||
</td>
|
||||
<td class="text-center align-middle">
|
||||
@if(isset($documentModel->directory->is_system) && !$documentModel->directory->is_system)
|
||||
<a href="{{ route('bo.directories.edit', ['directory' => $documentModel->directory_id]) }}">
|
||||
<button class="btn btn-sm btn-outline-dark"
|
||||
title="{{ __('Accéder au dossier associé') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ $documentModel->directory->name['fr'] }}
|
||||
</button>
|
||||
</a>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center align-middle">
|
||||
@if(!is_null($documentModel->document_id))
|
||||
<a href="{{ route('bo.documents.edit', ['document' => $documentModel->document_id]) }}">
|
||||
<button class="btn btn-sm btn-outline-dark"
|
||||
title="{{ __('Accéder au document associé') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ $documentModel->parentDocument->title }}
|
||||
</button>
|
||||
</a>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center align-middle">
|
||||
@foreach(\App\Enums\Documents\TypeEnum::cases() as $typeEnum)
|
||||
@if ($documentModel->type->value() === $typeEnum->value)
|
||||
<span class="px1"
|
||||
title="{{ sprintf('Document de type .%s', $documentModel->type->name()) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-{{ $typeEnum->icon() }}"></i>
|
||||
</span>
|
||||
@endif
|
||||
@endforeach
|
||||
</td>
|
||||
@php $routeName = request()->route()->getName(); @endphp
|
||||
@if (empty(request()->search) && Session::get("$routeName.sort_col") === 'order')
|
||||
@include('bo.modules.change-model-order', [
|
||||
'routeName' => 'documents',
|
||||
'models' => $documents,
|
||||
'model' => $documentModel,
|
||||
])
|
||||
@endif
|
||||
@endforeach
|
||||
</td>
|
||||
@php $routeName = request()->route()->getName(); @endphp
|
||||
@if(empty(request()->search) && Session::get("$routeName.sort_col") === "order")
|
||||
<td class="align-middle d-flex justify-content-center align-items-center">
|
||||
<form action="{{ route('bo.documents.change-order', ['document' => $documentModel, 'action' => 'up']) }}"
|
||||
method="POST"
|
||||
class="text-center @if($loop->first and $documents->onFirstPage()) invisible @endif">
|
||||
@csrf
|
||||
<button type="submit"
|
||||
class="btn btn-sm btn-outline-dark @if(($loop->first and $documents->onFirstPage())) disabled @endif"
|
||||
title="{{ __('Modifier l\'ordre d\'apparition vers le haut') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fas fa-arrow-up"></i>
|
||||
</button>
|
||||
</form>
|
||||
<form action="{{ route('bo.documents.change-order', ['document' => $documentModel, 'action' => 'down']) }}"
|
||||
method="POST"
|
||||
class="text-center @if($loop->last and $documents->currentPage() === $documents->lastPage()) invisible @endif">
|
||||
@csrf
|
||||
<button type="submit"
|
||||
class="btn btn-sm btn-outline-dark ms-1 @if($loop->last and $documents->currentPage() === $documents->lastPage()) disabled @endif"
|
||||
title="{{ __('Modifier l\'ordre d\'apparition vers le bas') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fas fa-arrow-down"></i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
@endif
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<form action="{{ route('bo.documents.destroy', $documentModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<a href="{{ asset("storage/docs/" . $documentModel->uuid . "." . $documentModel->type->name()) }}"
|
||||
target="blank"
|
||||
class="btn btn-sm btn-warning"
|
||||
role="button"
|
||||
title="{{ __('Visualiser le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-eye"></i>
|
||||
</a>
|
||||
<a id="formSubmitClone"
|
||||
href="{{ route('bo.documents.edit', $documentModel) }}"
|
||||
class="btn btn-sm btn-primary"
|
||||
role="button"
|
||||
title="{{ __('Modifier le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
<button class="btn btn-sm btn-danger"
|
||||
title="{{ __('Supprimer le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<form action="{{ route('bo.documents.destroy', $documentModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<a href="{{ asset("storage/docs/" . $documentModel->uuid . "." . $documentModel->type->name()) }}"
|
||||
target="blank"
|
||||
class="btn btn-sm btn-warning"
|
||||
role="button"
|
||||
title="{{ __('Visualiser le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-eye"></i>
|
||||
</a>
|
||||
<a id="formSubmitClone"
|
||||
href="{{ route('bo.documents.edit', $documentModel) }}"
|
||||
class="btn btn-sm btn-primary"
|
||||
role="button"
|
||||
title="{{ __('Modifier le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
<button class="btn btn-sm btn-danger"
|
||||
title="{{ __('Supprimer le :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@else
|
||||
<tr>
|
||||
<td colspan="{{ count($cols) + 1 }}" class="text-center">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.documents')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="{{ count($cols) + 1 }}" class="text-center">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.documents')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -6,34 +6,34 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ __('models.classes.documents') }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-end align-items-center">
|
||||
<div class="ms-1 justify-content-end">
|
||||
<a href="{{ route('bo.documents.create') }}"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Créer un(e) :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ __('models.classes.documents') }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-end align-items-center">
|
||||
<div class="ms-1 justify-content-end">
|
||||
<a href="{{ route('bo.documents.create') }}"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Créer un(e) :model', ['model' => Str::singular(__('models.classes.documents'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@include('bo.modules.search-bar')
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
@include('bo.pages.documents.index-list')
|
||||
<div class="card-body">
|
||||
@include('bo.modules.search-bar')
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
@include('bo.pages.documents.index-list')
|
||||
</div>
|
||||
</div>
|
||||
{{ $documents->withQueryString()->onEachSide(1)->links() }}
|
||||
</div>
|
||||
{{ $documents->withQueryString()->onEachSide(1)->links() }}
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -6,48 +6,48 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.formularies.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des champs du :model', ['model' => Str::singular(__('models.classes.formularies'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.formularies')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('création')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder le champs du :model', ['model' => Str::singular(__('models.classes.formularies'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.formularies.store') }}" method="POST">
|
||||
@csrf
|
||||
@include('bo.pages.formularies.form')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.formularies.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des champs du :model', ['model' => Str::singular(__('models.classes.formularies'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.formularies')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('création')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder le champs du :model', ['model' => Str::singular(__('models.classes.formularies'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.formularies.store') }}" method="POST">
|
||||
@csrf
|
||||
@include('bo.pages.formularies.form')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Sauvegarder le champs du :model', ['model' => Str::singular(__('models.classes.formularies'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
@extends('bo.layout', ['brParam' => $formularyModel])
|
||||
|
||||
@section('title', sprintf('%s - %s %s', Str::singular(__('models.classes.formularies')), Str::ucfirst(__('édition')),
|
||||
$formularyModel->lastname))
|
||||
@section('title', sprintf('%s - %s %s', Str::singular(__('models.classes.formularies')), Str::ucfirst(__('édition')), $formularyModel->lastname))
|
||||
@section('description', __('Page d\'édition d\'un nouveau champs poour le formulaire de contact.'))
|
||||
|
||||
@section('breadcrumb',
|
||||
request()->route()->getName())
|
||||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
|
|
|
|||
|
|
@ -66,27 +66,27 @@
|
|||
title="{{ __('Supprimer le champs du :model', ['model' => Str::singular(__('models.classes.formularies'))]) }}">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@else
|
||||
<span data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
title="{{ __('Ce champs est obligatoire, seul son ordre est éditable') }}">
|
||||
<i class="fas fa-lock"></i>
|
||||
</span>
|
||||
<span data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
title="{{ __('Ce champs est obligatoire, seul son ordre est éditable') }}">
|
||||
<i class="fas fa-lock"></i>
|
||||
</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@else
|
||||
<tr>
|
||||
<td class="text-center" colspan="{{ count($cols) + 1 }}">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.users')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-center" colspan="{{ count($cols) + 1 }}">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.users')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -6,32 +6,32 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.formularies')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-end align-items-center">
|
||||
<a href="{{ route('bo.formularies.create') }}"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Créer un champs du :model', ['model' => Str::singular(__('models.classes.formularies'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.formularies')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-end align-items-center">
|
||||
<a href="{{ route('bo.formularies.create') }}"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Créer un champs du :model', ['model' => Str::singular(__('models.classes.formularies'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@include('bo.modules.search-bar')
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
@include('bo.pages.formularies.index-list')
|
||||
<div class="card-body">
|
||||
@include('bo.modules.search-bar')
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
@include('bo.pages.formularies.index-list')
|
||||
</div>
|
||||
</div>
|
||||
{{ $formulariesModel->withQueryString()->onEachSide(1)->links() }}
|
||||
</div>
|
||||
{{ $formulariesModel->withQueryString()->onEachSide(1)->links() }}
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -6,51 +6,51 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.settings.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.settings')]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.settings')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('édition')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<div class="btn-group" role="group">
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder le :model', ['model' => Str::singular(__('models.classes.settings'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.settings.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.settings')]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.settings')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('édition')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<div class="btn-group" role="group">
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder le :model', ['model' => Str::singular(__('models.classes.settings'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.settings.update', $settingModel->id) }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.settings.form', ['model' => $settingModel])
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Sauvegarder :model', ['model' => Str::singular(__('models.classes.settings'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.settings.update', $settingModel->id) }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.settings.form', ['model' => $settingModel])
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Sauvegarder :model', ['model' => Str::singular(__('models.classes.settings'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -1,186 +1,186 @@
|
|||
<input name="key" value="{{ $settingModel->key }}" class="d-none">
|
||||
@switch($settingModel->type)
|
||||
@case(\App\Enums\SettingTypesEnum::string)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.varchar', [
|
||||
'id' => 'setting' . $settingModel->key,
|
||||
'label' => __('Texte du :model', ['model' => Str::singular(__('models.classes.settings'))]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'value',
|
||||
'required' => true,
|
||||
'model' => $settingModel ?? null,
|
||||
'helper' => __('Doit posséder 3 caractères minimum, 255 maximum.'),
|
||||
'placeholder' => "Un beau texte"
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::json)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.text', [
|
||||
'id' => 'setting' . $settingModel->key,
|
||||
'label' => __('Texte du :model', ['model' => Str::singular(__('models.classes.settings'))]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'value',
|
||||
'required' => true,
|
||||
'model' => $settingModel ?? null,
|
||||
'helper' => __('Doit posséder 3 caractères minimum, 255 maximum.'),
|
||||
'placeholder' => "Un beau texte"
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::numeric)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.int-number', [
|
||||
'id' => $settingModel->key,
|
||||
'name' => 'value',
|
||||
'label' => __('Nombre du :model', ['model' => Str::singular(__('models.classes.settings'))]),
|
||||
'model' => $settingModel ?? null,
|
||||
'min' => 1,
|
||||
'helper' => __('Doit être un nombre (minimum 1).'),
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::boolean)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.boolean-switch', [
|
||||
'id' => $settingModel->key,
|
||||
'name' => 'value',
|
||||
'label' => __('Activer ce paramètre ?'),
|
||||
'model' => $settingModel ?? null,
|
||||
'value' => ($settingModel->value === "true") ? 1 : 0,
|
||||
'helper' => __('Une fois coché, ce paramètre sera activé.')
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::picture)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@php
|
||||
if($settingModel->key === "SquaredLogo") {
|
||||
$dimWidth = 187;
|
||||
$dimHeight = 187;
|
||||
} elseif ($settingModel->key === "RectangleLogo") {
|
||||
$dimWidth = 187;
|
||||
$dimHeight = 100;
|
||||
} elseif ($settingModel->key === "BackgroundImage") {
|
||||
$dimWidth = 1920;
|
||||
$dimHeight = 1200;
|
||||
} elseif ($settingModel->key === "HomeButtonImage") {
|
||||
$dimWidth = 100;
|
||||
$dimHeight = 100;
|
||||
}
|
||||
$data = [
|
||||
'id' => 'setting' . $settingModel->key,
|
||||
'name' => 'value',
|
||||
'helper' => __('L\'image qui va servir de vignette au produit, doit être de :widthpx (largeur) par :heightpx (hauteur)',
|
||||
[
|
||||
'width' => $dimWidth,
|
||||
'height' => $dimHeight
|
||||
]),
|
||||
'width' => $dimWidth,
|
||||
'height' => $dimHeight,
|
||||
'value' => $settingModel->value ?? '',
|
||||
];
|
||||
@endphp
|
||||
@include('modules.input-error', ['inputName' => 'value'])
|
||||
<div class="image-input" data-json='@json($data)'></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::color)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<div class="form-group">
|
||||
@include('bo.partials.inputs.color-picker', [
|
||||
'id' => $settingModel->key,
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.varchar', [
|
||||
'id' => 'setting' . $settingModel->key,
|
||||
'label' => __('Texte du :model', ['model' => Str::singular(__('models.classes.settings'))]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'value',
|
||||
'label' => __('Couleur du paramètre'),
|
||||
'title' => __('Choisissez la couleur du paramètre'),
|
||||
'model' => $settingModel,
|
||||
'rgbaMode' => false,
|
||||
'helper' => __('Doit être une couleur sous le format hexadécimal.'),
|
||||
'nullable' => false,
|
||||
'disabled' => false
|
||||
'required' => true,
|
||||
'model' => $settingModel ?? null,
|
||||
'helper' => __('Doit posséder 3 caractères minimum, 255 maximum.'),
|
||||
'placeholder' => "Un beau texte"
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::directory)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<div class="form-group">
|
||||
@include('bo.partials.inputs.bigint-foreign-id', [
|
||||
@case(\App\Enums\SettingTypesEnum::json)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.text', [
|
||||
'id' => 'setting' . $settingModel->key,
|
||||
'label' => __('Texte du :model', ['model' => Str::singular(__('models.classes.settings'))]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'value',
|
||||
'required' => true,
|
||||
'model' => $settingModel ?? null,
|
||||
'helper' => __('Doit posséder 3 caractères minimum, 255 maximum.'),
|
||||
'placeholder' => "Un beau texte"
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::numeric)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.int-number', [
|
||||
'id' => $settingModel->key,
|
||||
'name' => 'value',
|
||||
'label' => __('Model à associer'),
|
||||
'model' => $settingModel,
|
||||
'associatedModels' => $directories,
|
||||
'foreignLabel' => 'name',
|
||||
'helper' => __('Doit être une couleur sous le format hexadécimal.'),
|
||||
'label' => __('Nombre du :model', ['model' => Str::singular(__('models.classes.settings'))]),
|
||||
'model' => $settingModel ?? null,
|
||||
'min' => 1,
|
||||
'helper' => __('Doit être un nombre (minimum 1).'),
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::boolean)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.boolean-switch', [
|
||||
'id' => $settingModel->key,
|
||||
'name' => 'value',
|
||||
'label' => __('Activer ce paramètre ?'),
|
||||
'model' => $settingModel ?? null,
|
||||
'value' => ($settingModel->value === "true") ? 1 : 0,
|
||||
'helper' => __('Une fois coché, ce paramètre sera activé.')
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::picture)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@php
|
||||
if($settingModel->key === "SquaredLogo") {
|
||||
$dimWidth = 187;
|
||||
$dimHeight = 187;
|
||||
} elseif ($settingModel->key === "RectangleLogo") {
|
||||
$dimWidth = 187;
|
||||
$dimHeight = 100;
|
||||
} elseif ($settingModel->key === "BackgroundImage") {
|
||||
$dimWidth = 1920;
|
||||
$dimHeight = 1200;
|
||||
} elseif ($settingModel->key === "HomeButtonImage") {
|
||||
$dimWidth = 100;
|
||||
$dimHeight = 100;
|
||||
}
|
||||
$data = [
|
||||
'id' => 'setting' . $settingModel->key,
|
||||
'name' => 'value',
|
||||
'helper' => __('L\'image qui va servir de vignette au produit, doit être de :widthpx (largeur) par :heightpx (hauteur)',
|
||||
[
|
||||
'width' => $dimWidth,
|
||||
'height' => $dimHeight
|
||||
]),
|
||||
'width' => $dimWidth,
|
||||
'height' => $dimHeight,
|
||||
'value' => $settingModel->value ?? '',
|
||||
];
|
||||
@endphp
|
||||
@include('modules.input-error', ['inputName' => 'value'])
|
||||
<div class="image-input" data-json='@json($data)'></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::color)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<div class="form-group">
|
||||
@include('bo.partials.inputs.color-picker', [
|
||||
'id' => $settingModel->key,
|
||||
'name' => 'value',
|
||||
'label' => __('Couleur du paramètre'),
|
||||
'title' => __('Choisissez la couleur du paramètre'),
|
||||
'model' => $settingModel,
|
||||
'rgbaMode' => false,
|
||||
'helper' => __('Doit être une couleur sous le format hexadécimal.'),
|
||||
'nullable' => false,
|
||||
'disabled' => false
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::directory)
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<fieldset class="border bg-white p-3 mb-3">
|
||||
<legend>{{ $settingModel->key }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<div class="form-group">
|
||||
@include('bo.partials.inputs.bigint-foreign-id', [
|
||||
'id' => $settingModel->key,
|
||||
'name' => 'value',
|
||||
'label' => __('Model à associer'),
|
||||
'model' => $settingModel,
|
||||
'associatedModels' => $directories,
|
||||
'foreignLabel' => 'name',
|
||||
'helper' => __('Doit être une couleur sous le format hexadécimal.'),
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@break
|
||||
@endswitch
|
||||
|
||||
|
|
|
|||
|
|
@ -6,99 +6,98 @@
|
|||
$routeName = request()->route()->getName();
|
||||
$noOrder = Session::get("$routeName.sort_col") !== 'order' and (Session::has("$routeName.sort_col") or Session::has("$routeName.sort_way"));
|
||||
$noOrder = Session::get("$routeName.sort_col") !== '' and (Session::has("$routeName.sort_col") or Session::has("$routeName.sort_way"));
|
||||
$cols = ['key' => __('Clé'), 'value' => __('Valeur')];
|
||||
@endphp
|
||||
@include('bo.modules.table-col-sorter', [
|
||||
'cols' => $cols,
|
||||
'cols' => ['key' => __('Clé'), 'value' => __('Valeur')],
|
||||
'mobileHide' => [],
|
||||
])
|
||||
</thead>
|
||||
<tbody>
|
||||
@if ($settings->count())
|
||||
@foreach ($settings as $settingModel)
|
||||
@if (
|
||||
Auth::user()->role === 1 ||
|
||||
$settingModel->key === "Button1" ||
|
||||
$settingModel->key === "Button2" ||
|
||||
$settingModel->key === "Button3" ||
|
||||
$settingModel->key === "ShowIsActive"
|
||||
)
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<span>{{ $settingModel->key }}</span>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
@switch($settingModel->type)
|
||||
@case(\App\Enums\SettingTypesEnum::string)
|
||||
<p class="m-0">{{ $settingModel->value }}</p>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::json)
|
||||
<p class="text-ellipsis m-0">{{ $settingModel->value }}</p>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::numeric)
|
||||
<p class="m-0">{{ $settingModel->value }}</p>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::boolean)
|
||||
<p class="m-0">{{ $settingModel->value }}</p>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::picture)
|
||||
<img class="preview-image-index" src="{{ asset($settingModel->value) }}" alt="" title="">
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::color)
|
||||
@include('bo.partials.inputs.color-picker', [
|
||||
'id' => 'settingColor',
|
||||
'name' => 'value',
|
||||
'label' => __('Couleur du paramètre'),
|
||||
'title' => __('Choisissez la couleur du paramètre'),
|
||||
'model' => $settingModel,
|
||||
'rgbaMode' => true,
|
||||
'nullable' => false,
|
||||
'simple' => true,
|
||||
'disabled' => true
|
||||
])
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::directory)
|
||||
@if ($settingModel->value != null)
|
||||
<a href="{{ route('bo.directories.edit', ['directory' => $settingModel->value]) }}">
|
||||
<button class="btn btn-sm btn-outline-dark"
|
||||
title="{{ __('Accéder au dossier associé') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
@foreach ($directories as $directory)
|
||||
@if ($directory->id == $settingModel->value)
|
||||
{{ $directory->name }}
|
||||
@endif
|
||||
@endforeach
|
||||
</button>
|
||||
</a>
|
||||
@else
|
||||
<p class="text-muted m-0">{{ __('Aucun dossier associé') }}</p>
|
||||
@foreach ($settings as $settingModel)
|
||||
@if (
|
||||
Auth::user()->role === 1 ||
|
||||
$settingModel->key === "Button1" ||
|
||||
$settingModel->key === "Button2" ||
|
||||
$settingModel->key === "Button3" ||
|
||||
$settingModel->key === "ShowIsActive"
|
||||
)
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<span>{{ $settingModel->key }}</span>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
@switch($settingModel->type)
|
||||
@case(\App\Enums\SettingTypesEnum::string)
|
||||
<p class="m-0">{{ $settingModel->value }}</p>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::json)
|
||||
<p class="text-ellipsis m-0">{{ $settingModel->value }}</p>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::numeric)
|
||||
<p class="m-0">{{ $settingModel->value }}</p>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::boolean)
|
||||
<p class="m-0">{{ $settingModel->value }}</p>
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::picture)
|
||||
<img class="preview-image-index" src="{{ asset($settingModel->value) }}" alt="" title="">
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::color)
|
||||
@include('bo.partials.inputs.color-picker', [
|
||||
'id' => 'settingColor',
|
||||
'name' => 'value',
|
||||
'label' => __('Couleur du paramètre'),
|
||||
'title' => __('Choisissez la couleur du paramètre'),
|
||||
'model' => $settingModel,
|
||||
'rgbaMode' => true,
|
||||
'nullable' => false,
|
||||
'simple' => true,
|
||||
'disabled' => true
|
||||
])
|
||||
@break
|
||||
@case(\App\Enums\SettingTypesEnum::directory)
|
||||
@if ($settingModel->value != null)
|
||||
<a href="{{ route('bo.directories.edit', ['directory' => $settingModel->value]) }}">
|
||||
<button class="btn btn-sm btn-outline-dark"
|
||||
title="{{ __('Accéder au dossier associé') }}"
|
||||
data-bs-toggle="tooltip">
|
||||
@foreach ($directories as $directory)
|
||||
@if ($directory->id == $settingModel->value)
|
||||
{{ $directory->name }}
|
||||
@endif
|
||||
@endforeach
|
||||
</button>
|
||||
</a>
|
||||
@else
|
||||
<p class="text-muted m-0">{{ __('Aucun dossier associé') }}</p>
|
||||
@endif
|
||||
@break
|
||||
@endswitch
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<div class="btn-group" role="group">
|
||||
<a id="formSubmitClone"
|
||||
href="{{ route('bo.settings.edit', $settingModel) }}"
|
||||
class="btn btn-sm btn-primary"
|
||||
role="button"
|
||||
title="{{ __('Modifier le :model', ['model' => Str::singular(__('models.classes.settings'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@break
|
||||
@endswitch
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<div class="btn-group" role="group">
|
||||
<a id="formSubmitClone"
|
||||
href="{{ route('bo.settings.edit', $settingModel) }}"
|
||||
class="btn btn-sm btn-primary"
|
||||
role="button"
|
||||
title="{{ __('Modifier le :model', ['model' => Str::singular(__('models.classes.settings'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
@endforeach
|
||||
@else
|
||||
<tr>
|
||||
<td colspan="{{ count($cols) + 1 }}" class="text-center">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.settings')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="{{ count($cols) + 1 }}" class="text-center">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.settings')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -6,22 +6,22 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ __('models.classes.settings') }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ __('models.classes.settings') }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@include('bo.pages.settings.index-list')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@include('bo.pages.settings.index-list')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -6,48 +6,48 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.tags.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.tags')]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.tags')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('création')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.tags.store') }}" method="POST">
|
||||
@csrf
|
||||
@include('bo.pages.tags.form')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.tags.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.tags')]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.tags')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('création')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.tags.store') }}" method="POST">
|
||||
@csrf
|
||||
@include('bo.pages.tags.form')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Sauvegarder l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -6,60 +6,60 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.tags.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.tags')]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.tags')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('édition')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<form action="{{ route('bo.tags.destroy', $tagModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
<button class="btn btn-danger"
|
||||
title="{{ __('Supprimer l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.tags.update', $tagModel->id) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.tags.form', ['model' => $tagModel])
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Sauvegarder l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
<div class="col">
|
||||
<h1 class="text-center text-md-start h2">
|
||||
<a href="{{ route('bo.tags.index') }}"
|
||||
class="btn btn-primary text-decoration-none m-0"
|
||||
data-bs="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.tags')]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
<span class="fw-bold">{{ Str::singular(__('models.classes.tags')) }}</span> <small class="text-muted">{{ Str::ucfirst(__('édition')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<form action="{{ route('bo.tags.destroy', $tagModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<button id="formSubmitClone"
|
||||
class="btn btn-primary pull-end"
|
||||
title="{{ __('Sauvegarder l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-floppy-disk"></i>
|
||||
</button>
|
||||
<button class="btn btn-danger"
|
||||
title="{{ __('Supprimer l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-body bg-light">
|
||||
<form action="{{ route('bo.tags.update', $tagModel->id) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.tags.form', ['model' => $tagModel])
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button id="formSubmit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Sauvegarder l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -8,52 +8,52 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
@if ($tags->count())
|
||||
@foreach ($tags as $tagModel)
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<span>{{ $tagModel->name }}</span>
|
||||
</td>
|
||||
@php $routeName = request()->route()->getName(); @endphp
|
||||
@if (empty(request()->search) && Session::get("$routeName.sort_col") === 'order')
|
||||
@include('bo.modules.change-model-order', [
|
||||
'routeName' => 'tags',
|
||||
'models' => $tags,
|
||||
'model' => $tagModel,
|
||||
])
|
||||
@endif
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<form action="{{ route('bo.tags.destroy', $tagModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<a id="formSubmitClone"
|
||||
href="{{ route('bo.tags.edit', $tagModel) }}"
|
||||
class="btn btn-sm btn-primary"
|
||||
role="button"
|
||||
title="{{ __('Modifier l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
<button class="btn btn-sm btn-danger"
|
||||
title="{{ __('Supprimer l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
@foreach ($tags as $tagModel)
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<span>{{ $tagModel->name }}</span>
|
||||
</td>
|
||||
@php $routeName = request()->route()->getName(); @endphp
|
||||
@if (empty(request()->search) && Session::get("$routeName.sort_col") === 'order')
|
||||
@include('bo.modules.change-model-order', [
|
||||
'routeName' => 'tags',
|
||||
'models' => $tags,
|
||||
'model' => $tagModel,
|
||||
])
|
||||
@endif
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<form action="{{ route('bo.tags.destroy', $tagModel->id) }}" method="POST" class="d-inline confirmDeleteJS">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<div class="btn-group" role="group">
|
||||
<a id="formSubmitClone"
|
||||
href="{{ route('bo.tags.edit', $tagModel) }}"
|
||||
class="btn btn-sm btn-primary"
|
||||
role="button"
|
||||
title="{{ __('Modifier l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
<button class="btn btn-sm btn-danger"
|
||||
title="{{ __('Supprimer l\':model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@else
|
||||
<tr>
|
||||
<td colspan="{{ count($cols) + 1 }}" class="text-center">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.tags')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="{{ count($cols) + 1 }}" class="text-center">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.tags')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -6,34 +6,34 @@
|
|||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ __('models.classes.tags') }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-end align-items-center">
|
||||
<div class="ms-1 justify-content-end">
|
||||
<a href="{{ route('bo.tags.create') }}"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Créer une :model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="col h2">
|
||||
<span class="fw-bold">{{ __('models.classes.tags') }}</span> <small class="text-muted">{{ Str::ucfirst(__('liste')) }}</small>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-end align-items-center">
|
||||
<div class="ms-1 justify-content-end">
|
||||
<a href="{{ route('bo.tags.create') }}"
|
||||
class="btn btn-primary"
|
||||
title="{{ __('Créer une :model', ['model' => Str::singular(__('models.classes.tags'))]) }}"
|
||||
data-bs-toggle="tooltip">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@include('bo.modules.search-bar')
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
@include('bo.pages.tags.index-list')
|
||||
<div class="card-body">
|
||||
@include('bo.modules.search-bar')
|
||||
<div class="row mt-3">
|
||||
<div class="col">
|
||||
@include('bo.pages.tags.index-list')
|
||||
</div>
|
||||
</div>
|
||||
{{ $tags->withQueryString()->onEachSide(1)->links() }}
|
||||
</div>
|
||||
{{ $tags->withQueryString()->onEachSide(1)->links() }}
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -1,42 +0,0 @@
|
|||
@if(!request()->routeIs('login'))
|
||||
@if ($message = Session::get('success', Session::get('bo.success')))
|
||||
<div class="alert alert-success alert-dismissible fade show m-0" role="alert">
|
||||
<strong>{!! nl2br(e($message)) !!}</strong>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Fermer') }}"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('error', Session::get('bo.error')))
|
||||
<div class="alert alert-danger alert-dismissible fade show m-0" role="alert">
|
||||
<strong>{!! nl2br(e($message)) !!}</strong>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Fermer') }}"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('warning', Session::get('bo.warning')))
|
||||
<div class="alert alert-warning alert-dismissible fade show m-0" role="alert">
|
||||
<strong>{!! nl2br(e($message)) !!}</strong>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Fermer') }}"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('info', Session::get('bo.info')))
|
||||
<div class="alert alert-info alert-dismissible fade show m-0" role="alert">
|
||||
<strong>{!! nl2br(e($message)) !!}</strong>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Fermer') }}"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger alert-dismissible fade show m-0" role="alert">
|
||||
@if ($errors->any())
|
||||
<ul class="list-unstyled m-0">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Fermer') }}"></button>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
42
resources/views/modules/flash-messages.blade.php
Normal file
42
resources/views/modules/flash-messages.blade.php
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
@if (!request()->routeIs('login'))
|
||||
@if ($message = Session::get('success', Session::get('bo.success')))
|
||||
<div class="alert alert-success alert-dismissible fade show m-0 mb-3" role="alert">
|
||||
<strong>{!! nl2br(e($message)) !!}</strong>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Fermer') }}"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('error', Session::get('bo.error')))
|
||||
<div class="alert alert-danger alert-dismissible fade show m-0 mb-3" role="alert">
|
||||
<strong>{!! nl2br(e($message)) !!}</strong>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Fermer') }}"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('warning', Session::get('bo.warning')))
|
||||
<div class="alert alert-warning alert-dismissible fade show m-0 mb-3" role="alert">
|
||||
<strong>{!! nl2br(e($message)) !!}</strong>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Fermer') }}"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($message = Session::get('info', Session::get('bo.info')))
|
||||
<div class="alert alert-info alert-dismissible fade show m-0 mb-3" role="alert">
|
||||
<strong>{!! nl2br(e($message)) !!}</strong>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Fermer') }}"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger alert-dismissible fade show m-0 mb-3" role="alert">
|
||||
@if ($errors->any())
|
||||
<ul class="list-unstyled m-0">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@endif
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{ __('Fermer') }}"></button>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
@if($errors->has($inputName))
|
||||
<div class="col-12">
|
||||
<small class="text-danger">{{ implode(',', $errors->get($inputName)) }}</small>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<small class="text-danger">{{ implode(',', $errors->get($inputName)) }}</small>
|
||||
</div>
|
||||
@endif
|
||||
@if(isset($helper))
|
||||
<small @if(isset($helperId)) id="{{ $helperId }}" @endif class="form-text text-muted">{{ $helper }}</small>
|
||||
<small @if(isset($helperId)) id="{{ $helperId }}" @endif class="form-text text-muted">{{ $helper }}</small>
|
||||
@endif
|
||||
|
|
|
|||
|
|
@ -14,12 +14,12 @@ use Illuminate\Support\Facades\Route;
|
|||
Route::prefix('bo')->name('bo.')->middleware(['admin-secure'])->group(function () {
|
||||
Route::namespace('\App\Http\Controllers\Bo')->middleware(['throttle:credentials'])->group(function () {
|
||||
Auth::routes([
|
||||
'confirm' => false,
|
||||
'login' => true,
|
||||
'logout' => true,
|
||||
'confirm' => false,
|
||||
'login' => true,
|
||||
'logout' => true,
|
||||
'register' => false,
|
||||
'reset' => false,
|
||||
'verify' => false
|
||||
'reset' => false,
|
||||
'verify' => false
|
||||
]);
|
||||
});
|
||||
|
||||
|
|
@ -31,9 +31,10 @@ Route::prefix('bo')->name('bo.')->middleware(['admin-secure'])->group(function (
|
|||
|
||||
// * APP_USERS
|
||||
Route::resource('app-users', AppUserController::class)->except('show');
|
||||
Route::post('/app-users/{appuser}/change-order', [AppUserController::class, 'changeOrder'])
|
||||
->name('app-users.change-order');
|
||||
Route::post('/app-users/import', [AppUserController::class, 'import'])->name('app-users.import');
|
||||
Route::patch('/appUsers/change-order/{appUser}/{direction}', [AppUserController::class, 'changeOrder'])
|
||||
->where('direction', 'up|down')
|
||||
->name('appUsers.change-order');
|
||||
|
||||
// * DIRECTORIES
|
||||
Route::resource('directories', DirectoriesController::class)->except('show');
|
||||
|
|
@ -44,11 +45,12 @@ Route::prefix('bo')->name('bo.')->middleware(['admin-secure'])->group(function (
|
|||
|
||||
// * DOCUMENTS
|
||||
Route::resource('documents', DocumentController::class)->except('show');
|
||||
Route::post('/documents/{document}/change-order', [DocumentController::class, 'changeOrder'])
|
||||
->name('documents.change-order');
|
||||
Route::post('/documents/{document}/change-published', [DocumentController::class, 'changePublished'])
|
||||
->name('documents.change-published');
|
||||
Route::post('/documents/upload', [DocumentController::class, 'upload'])->name('documents.upload');
|
||||
Route::patch('/documents/change-order/{document}/{direction}', [DocumentController::class, 'changeOrder'])
|
||||
->where('direction', 'up|down')
|
||||
->name('documents.change-order');
|
||||
|
||||
// * TAGS
|
||||
Route::resource('tags', TagController::class)->except('show');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue