clean back office
This commit is contained in:
parent
b23524f292
commit
5aff3c64ed
69 changed files with 280 additions and 962 deletions
|
|
@ -41,7 +41,7 @@ class StoreHistoricalMilestoneRequest extends FormRequest
|
|||
public function rules(): array
|
||||
{
|
||||
$rules = [
|
||||
'year' => 'required|integer|min:1901|max:2155',
|
||||
'year' => 'required|integer|min:1900|max:2100',
|
||||
'title' => 'required|string|between:3,255',
|
||||
'text' => 'required|string|between:3,255',
|
||||
'picture_alt' => 'required|string|between:3,255',
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\Models;
|
||||
|
||||
use App\Lib\Helpers\FileStorageHelper;
|
||||
use App\Traits\Models\ActivityLog;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
|
|
@ -19,9 +20,12 @@ use Illuminate\Database\Eloquent\Model;
|
|||
* @property integer $year Year of the historical milestone.
|
||||
* @property-read \Carbon\Carbon $created_at Created date.
|
||||
* @property-read \Carbon\Carbon $updated_at Updated date.
|
||||
*
|
||||
* @property-read \App\Models\ActivityLog $activityLogs Activities logs One-to-many relationship.
|
||||
*/
|
||||
class HistoricalMilestone extends Model
|
||||
{
|
||||
use ActivityLog;
|
||||
use HasFactory;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Traits\Models\ActivityLog;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
|
|
@ -11,9 +12,12 @@ use Illuminate\Database\Eloquent\Model;
|
|||
* @property string $video_id Id of the Youtube video.
|
||||
* @property-read \Carbon\Carbon $created_at Created date.
|
||||
* @property-read \Carbon\Carbon $updated_at Updated date.
|
||||
*
|
||||
* @property-read \App\Models\ActivityLog $activityLogs Activities logs One-to-many relationship.
|
||||
*/
|
||||
class JobVideo extends Model
|
||||
{
|
||||
use ActivityLog;
|
||||
use HasFactory;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\Models;
|
||||
|
||||
use App\Lib\Helpers\FileStorageHelper;
|
||||
use App\Traits\Models\ActivityLog;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
|
|
@ -15,10 +16,11 @@ use Illuminate\Database\Eloquent\Model;
|
|||
* @property-read \Carbon\Carbon $updated_at Updated date.
|
||||
*
|
||||
* @property-read \App\Models\Site $sites Sites Many-to-many relationship.
|
||||
|
||||
* @property-read \App\Models\ActivityLog $activityLogs Activities logs One-to-many relationship.
|
||||
*/
|
||||
class Logo extends Model
|
||||
{
|
||||
use ActivityLog;
|
||||
use HasFactory;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ use Illuminate\Support\Str;
|
|||
* @property \Carbon\Carbon|null $unpublish_at Unpublication status update date.
|
||||
* @property-read \Carbon\Carbon $created_at Created date.
|
||||
* @property-read \Carbon\Carbon $updated_at Updated date.
|
||||
*
|
||||
* @property-read \App\Models\ActivityLog $activityLogs Activities logs One-to-many relationship.
|
||||
*/
|
||||
class News extends Model
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ use App\Enums\InputType;
|
|||
use App\Enums\Sections\PageSectionEnum;
|
||||
use App\Lib\Helpers\FileStorageHelper;
|
||||
use App\Lib\Helpers\ToolboxHelper;
|
||||
use App\Traits\Models\ActivityLog;
|
||||
use App\Traits\Models\MiniCrudModel;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
|
@ -20,10 +21,11 @@ use Illuminate\Support\Str;
|
|||
* @property-read \Carbon\Carbon $updated_at Updated date.
|
||||
*
|
||||
* @property-read \App\Models\StaticPage $page StaticPage Belongs to relationship.
|
||||
|
||||
* @property-read \App\Models\ActivityLog $activityLogs Activities logs One-to-many relationship.
|
||||
*/
|
||||
class Section extends Model
|
||||
{
|
||||
use ActivityLog;
|
||||
use HasFactory;
|
||||
use MiniCrudModel;
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ use Illuminate\Support\Str;
|
|||
* @property-read \Carbon\Carbon $updated_at Updated date.
|
||||
*
|
||||
* @property-read \App\Models\Logo $logos Logos Many-to-many relationship.
|
||||
* @property-read \App\Models\ActivityLog $activityLogs Activities logs One-to-many relationship.
|
||||
*/
|
||||
class Site extends Model
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\Models;
|
||||
|
||||
use App\Lib\Helpers\FileStorageHelper;
|
||||
use App\Traits\Models\ActivityLog;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
|
|
@ -21,9 +22,12 @@ use Illuminate\Database\Eloquent\Model;
|
|||
* @property string $picture_title Title attribute of the image.
|
||||
* @property-read \Carbon\Carbon $created_at Created date.
|
||||
* @property-read \Carbon\Carbon $updated_at Updated date.
|
||||
*
|
||||
* @property-read \App\Models\ActivityLog $activityLogs Activities logs One-to-many relationship.
|
||||
*/
|
||||
class Slide extends Model
|
||||
{
|
||||
use ActivityLog;
|
||||
use HasFactory;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ use Illuminate\Support\Str;
|
|||
* @property string $content WYSIWYG text content using ckeditor.
|
||||
* @property-read \Illuminate\Support\Carbon $created_at Created date.
|
||||
* @property-read \Illuminate\Support\Carbon $updated_at Updated date.
|
||||
*
|
||||
* @property-read \App\Models\ActivityLog $activityLogs Activities logs One-to-many relationship.
|
||||
*/
|
||||
class StaticPage extends Model
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ use Illuminate\Database\Eloquent\Model;
|
|||
* @property-read \Carbon\Carbon $updated_at Updated date.
|
||||
*
|
||||
* @property-read \App\Models\News $news News Belongs to relationship.
|
||||
* @property-read \App\Models\ActivityLog $activityLogs Activities logs One-to-many relationship.
|
||||
*/
|
||||
class Strip extends Model
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\Models;
|
||||
|
||||
use App\Lib\Helpers\FileStorageHelper;
|
||||
use App\Traits\Models\ActivityLog;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
|
|
@ -16,9 +17,12 @@ use Illuminate\Database\Eloquent\Model;
|
|||
* @property string $picture_title Title attribute of the image.
|
||||
* @property-read \Carbon\Carbon $created_at Created date.
|
||||
* @property-read \Carbon\Carbon $updated_at Updated date.
|
||||
*
|
||||
* @property-read \App\Models\ActivityLog $activityLogs Activities logs One-to-many relationship.
|
||||
*/
|
||||
class Testimonial extends Model
|
||||
{
|
||||
use ActivityLog;
|
||||
use HasFactory;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -112,16 +112,4 @@ class User extends Authenticatable
|
|||
$model->password = Hash::make($model->password);
|
||||
}
|
||||
}
|
||||
|
||||
// * RELATIONS
|
||||
|
||||
/**
|
||||
* Activities logs One-to-many relationship.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function activityLogs(): \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
{
|
||||
return $this->hasMany(ActivityLog::class);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -122,8 +122,9 @@ class UserPolicy
|
|||
*/
|
||||
public function changePublished(User $authUser, User $user): bool
|
||||
{
|
||||
return $authUser->getRouteKey() !== $user->getRouteKey() and
|
||||
return ($user->getRouteKey()) ? $authUser->getRouteKey() !== $user->getRouteKey() and
|
||||
UserStaticRules::atLeastRole($authUser, RoleEnum::admin) and
|
||||
UserStaticRules::atLeastRole($authUser, $user->role);
|
||||
UserStaticRules::atLeastRole($authUser, $user->role) :
|
||||
UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Models\News;
|
||||
use App\Models\Strip;
|
||||
use App\Models\User;
|
||||
use Illuminate\Cache\RateLimiting\Limit;
|
||||
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
|
||||
|
|
@ -42,6 +44,8 @@ class RouteServiceProvider extends ServiceProvider
|
|||
});
|
||||
|
||||
Route::model('user', User::class);
|
||||
Route::model('strip', Strip::class);
|
||||
Route::model('news', News::class);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -20,4 +20,16 @@ trait ActivityLog
|
|||
{
|
||||
static::observe(ModelObserver::class);
|
||||
}
|
||||
|
||||
// * RELATIONS
|
||||
|
||||
/**
|
||||
* Activities logs One-to-many relationship.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function activityLogs(): \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
{
|
||||
return $this->hasMany(ActivityLog::class);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
database/.gitignore
vendored
1
database/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
*.sqlite*
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
{
|
||||
"(and :count more error)": "(and :count more error)",
|
||||
"(and :count more errors)": "(and :count more errors)",
|
||||
"A fresh verification link has been sent to your email address.": "A fresh verification link has been sent to your email address.",
|
||||
"All rights reserved.": "All rights reserved.",
|
||||
"Before proceeding, please check your email for a verification link.": "Before proceeding, please check your email for a verification link.",
|
||||
"click here to request another": "click here to request another",
|
||||
"Confirm Password": "Confirm Password",
|
||||
"Dashboard": "Dashboard",
|
||||
"Email Address": "Email Address",
|
||||
"Forbidden": "Forbidden",
|
||||
"Forgot Your Password?": "Forgot Your Password?",
|
||||
"Go to page :page": "Go to page :page",
|
||||
"Hello!": "Hello!",
|
||||
"If you did not create an account, no further action is required.": "If you did not create an account, no further action is required.",
|
||||
"If you did not receive the email": "If you did not receive the email",
|
||||
"If you did not request a password reset, no further action is required.": "If you did not request a password reset, no further action is required.",
|
||||
"If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:",
|
||||
"Invalid JSON was returned from the route.": "Invalid JSON was returned from the route.",
|
||||
"Login": "Login",
|
||||
"Logout": "Logout",
|
||||
"Name": "Name",
|
||||
"Not Found": "Not Found",
|
||||
"of": "of",
|
||||
"Page Expired": "Page Expired",
|
||||
"Pagination Navigation": "Pagination Navigation",
|
||||
"Password": "Password",
|
||||
"Payment Required": "Payment Required",
|
||||
"Please click the button below to verify your email address.": "Please click the button below to verify your email address.",
|
||||
"Please confirm your password before continuing.": "Please confirm your password before continuing.",
|
||||
"Regards": "Regards",
|
||||
"Register": "Register",
|
||||
"Remember Me": "Remember Me",
|
||||
"Reset Password": "Reset Password",
|
||||
"Reset Password Notification": "Reset Password Notification",
|
||||
"results": "results",
|
||||
"Send Password Reset Link": "Send Password Reset Link",
|
||||
"Server Error": "Server Error",
|
||||
"Service Unavailable": "Service Unavailable",
|
||||
"Showing": "Showing",
|
||||
"The given data was invalid.": "The given data was invalid.",
|
||||
"The response is not a streamed response.": "The response is not a streamed response.",
|
||||
"The response is not a view.": "The response is not a view.",
|
||||
"This password reset link will expire in :count minutes.": "This password reset link will expire in :count minutes.",
|
||||
"to": "to",
|
||||
"Toggle navigation": "Toggle navigation",
|
||||
"Too Many Requests": "Too Many Requests",
|
||||
"Unauthorized": "Unauthorized",
|
||||
"Verify Email Address": "Verify Email Address",
|
||||
"Verify Your Email Address": "Verify Your Email Address",
|
||||
"Whoops!": "Whoops!",
|
||||
"You are logged in!": "You are logged in!",
|
||||
"You are receiving this email because we received a password reset request for your account.": "You are receiving this email because we received a password reset request for your account."
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'failed' => 'These credentials do not match our records.',
|
||||
'password' => 'The password is incorrect.',
|
||||
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
|
||||
];
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'actions' => [
|
||||
'list' => 'list',
|
||||
'view' => 'view',
|
||||
'create' => 'create',
|
||||
'duplicate' => 'duplicate',
|
||||
'update' => 'update',
|
||||
'delete' => 'delete',
|
||||
'save' => 'save',
|
||||
'edit' => 'edit',
|
||||
],
|
||||
|
||||
'helpers' => [
|
||||
'list' => 'List',
|
||||
'list_all' => 'List all :model',
|
||||
'create_model' => 'Create :model',
|
||||
'view_model' => 'View :model',
|
||||
'update_model' => 'Update :model',
|
||||
'duplicate_model' => 'Duplicate :model',
|
||||
'delete_model' => 'Delete :model',
|
||||
'save_model' => 'Save :model',
|
||||
'edit_model' => 'Edit :model',
|
||||
'no_results' => 'No results for :models',
|
||||
'publish' => 'Publish',
|
||||
'unpublish' => 'Unpublish',
|
||||
'seo_title' => 'Must give a precise description of the page, which is recommended for optimum
|
||||
positioning in search engines (<title> tag).',
|
||||
'seo_description' => 'Must give a precise description of the page content (<meta> description tag).',
|
||||
],
|
||||
|
||||
'libs' => [
|
||||
'toolbox' => [
|
||||
'assertFieldIsUnique' => 'The :value for the :attribute field is already in use',
|
||||
'assertNoInternalBoUrls' => ':attribute : It is forbidden to paste back-office uri into this field',
|
||||
'assertNoInternalUrls' => ':attribute : It is forbidden to paste a url of :appname into this field',
|
||||
]
|
||||
],
|
||||
|
||||
'messages' => [
|
||||
'has_been_created' => ':model has been created',
|
||||
'cannot_be_created' => ':model cannot be created',
|
||||
'has_been_updated' => ':model has been updated',
|
||||
'cannot_be_updated' => ':model cannot be updated',
|
||||
'has_been_deleted' => ':model has been deleted',
|
||||
'cannot_be_deleted' => ':model cannot be deleted',
|
||||
'order_changed' => 'The order has been changed!',
|
||||
'order_not_changed' => 'The order hasn\'t been changed!',
|
||||
'publish_status_saved' => 'Change of publication status successful!',
|
||||
'right' => 'You don\'t have the rights to access this part !',
|
||||
'theme_updated' => 'The theme has been updated !',
|
||||
'user_unpublished' => 'You cannot unpublished your own account !',
|
||||
],
|
||||
|
||||
'minicrud' => [
|
||||
'visibility_label' => 'Visibility',
|
||||
'visibility_helper' => 'Check to make it visible.',
|
||||
'enum_select' => 'Select :enum from the list.',
|
||||
'associated_enum' => 'Associated :enum',
|
||||
'dimensions_must_be' => 'Must be :widthpx (width) by :heightpx (height).',
|
||||
'picture_title_helper' => 'Useful for users, displayed by moving the mouse over the image',
|
||||
'picture_title_label' => 'Title attribute of the image',
|
||||
'picture_alt_helper' => 'Must describe your image for search engines and blind people (5 to 6 words)',
|
||||
'picture_alt_label' => 'Alt attribute of the image',
|
||||
'text_warning' => 'Proofread your content before publishing it',
|
||||
],
|
||||
|
||||
'other' => [
|
||||
'up' => 'Change the order of appearance upwards',
|
||||
'down' => 'Change the order of appearance downwards',
|
||||
'no_model_found' => 'No :model found|No :model found',
|
||||
'publish' => 'Published',
|
||||
'unpublish' => 'Unpublished',
|
||||
'search_start' => 'Start search',
|
||||
'search_delete' => 'Delete search',
|
||||
'search_placeholder' => 'Your keywords here...',
|
||||
'sort_ascending' => 'Sort :name in ascending order',
|
||||
'sort_descending' => 'Sort :name in descending order',
|
||||
'sort_delete' => 'Delete sorting',
|
||||
'sort_arrow' => 'Here, the arrows are used to sort, not filter.',
|
||||
'right' => 'You don\'t have the rights',
|
||||
],
|
||||
|
||||
'meta' => [
|
||||
'title' => [
|
||||
'create' => '{*} Create a new :model',
|
||||
'edit' => '{*} Edit an existing :model',
|
||||
'show' => '{*} See an existing :model',
|
||||
],
|
||||
// phpcs:disable Generic.Files.LineLength.TooLong
|
||||
'description' => [
|
||||
'index' => '{*} List of all the :model',
|
||||
'create' => '{*} Creation of a new :model',
|
||||
'edit' => '{*} Edition of an existing :model',
|
||||
'show' => '{*} See informations of an existing :model déjà existant',
|
||||
],
|
||||
// phpcs:enable
|
||||
]
|
||||
];
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'bootstrap-theme' => [
|
||||
"light" => "light",
|
||||
"dark" => "dark",
|
||||
],
|
||||
'user-role' => [
|
||||
"conceptor" => "conceptor",
|
||||
"admin" => "admin",
|
||||
"visitor" => "visitor",
|
||||
]
|
||||
];
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'0' => 'Unknown Error',
|
||||
'100' => 'Continue',
|
||||
'101' => 'Switching Protocols',
|
||||
'102' => 'Processing',
|
||||
'200' => 'OK',
|
||||
'201' => 'Created',
|
||||
'202' => 'Accepted',
|
||||
'203' => 'Non-Authoritative Information',
|
||||
'204' => 'No Content',
|
||||
'205' => 'Reset Content',
|
||||
'206' => 'Partial Content',
|
||||
'207' => 'Multi-Status',
|
||||
'208' => 'Already Reported',
|
||||
'226' => 'IM Used',
|
||||
'300' => 'Multiple Choices',
|
||||
'301' => 'Moved Permanently',
|
||||
'302' => 'Found',
|
||||
'303' => 'See Other',
|
||||
'304' => 'Not Modified',
|
||||
'305' => 'Use Proxy',
|
||||
'307' => 'Temporary Redirect',
|
||||
'308' => 'Permanent Redirect',
|
||||
'400' => 'Bad Request',
|
||||
'401' => 'Unauthorized',
|
||||
'402' => 'Payment Required',
|
||||
'403' => 'Forbidden',
|
||||
'404' => 'Not Found',
|
||||
'405' => 'Method Not Allowed',
|
||||
'406' => 'Not Acceptable',
|
||||
'407' => 'Proxy Authentication Required',
|
||||
'408' => 'Request Timeout',
|
||||
'409' => 'Conflict',
|
||||
'410' => 'Gone',
|
||||
'411' => 'Length Required',
|
||||
'412' => 'Precondition Failed',
|
||||
'413' => 'Payload Too Large',
|
||||
'414' => 'URI Too Long',
|
||||
'415' => 'Unsupported Media Type',
|
||||
'416' => 'Range Not Satisfiable',
|
||||
'417' => 'Expectation Failed',
|
||||
'418' => 'I\'m a teapot',
|
||||
'419' => 'Session Has Expired',
|
||||
'421' => 'Misdirected Request',
|
||||
'422' => 'Unprocessable Entity',
|
||||
'423' => 'Locked',
|
||||
'424' => 'Failed Dependency',
|
||||
'425' => 'Too Early',
|
||||
'426' => 'Upgrade Required',
|
||||
'428' => 'Precondition Required',
|
||||
'429' => 'Too Many Requests',
|
||||
'431' => 'Request Header Fields Too Large',
|
||||
'444' => 'Connection Closed Without Response',
|
||||
'449' => 'Retry With',
|
||||
'451' => 'Unavailable For Legal Reasons',
|
||||
'499' => 'Client Closed Request',
|
||||
'500' => 'Internal Server Error',
|
||||
'501' => 'Not Implemented',
|
||||
'502' => 'Bad Gateway',
|
||||
'503' => 'Maintenance Mode',
|
||||
'504' => 'Gateway Timeout',
|
||||
'505' => 'HTTP Version Not Supported',
|
||||
'506' => 'Variant Also Negotiates',
|
||||
'507' => 'Insufficient Storage',
|
||||
'508' => 'Loop Detected',
|
||||
'509' => 'Bandwidth Limit Exceeded',
|
||||
'510' => 'Not Extended',
|
||||
'511' => 'Network Authentication Required',
|
||||
'520' => 'Unknown Error',
|
||||
'521' => 'Web Server is Down',
|
||||
'522' => 'Connection Timed Out',
|
||||
'523' => 'Origin Is Unreachable',
|
||||
'524' => 'A Timeout Occurred',
|
||||
'525' => 'SSL Handshake Failed',
|
||||
'526' => 'Invalid SSL Certificate',
|
||||
'527' => 'Railgun Error',
|
||||
'598' => 'Network Read Timeout Error',
|
||||
'599' => 'Network Connect Timeout Error',
|
||||
'unknownError' => 'Unknown Error',
|
||||
];
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'classes' => [
|
||||
'user' => 'user',
|
||||
'activity_log' => 'activity log|activity logs',
|
||||
'static_page' => 'static page|static pages',
|
||||
]
|
||||
];
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'next' => 'Next »',
|
||||
'previous' => '« Previous',
|
||||
'previous_page' => 'Previous page',
|
||||
'next_page' => 'Next page',
|
||||
'specific_page' => 'Go to page n°:id',
|
||||
'paginate_list' => 'Number of elements per page',
|
||||
];
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'reset' => 'Your password has been reset.',
|
||||
'sent' => 'We have emailed your password reset link.',
|
||||
'throttled' => 'Please wait before retrying.',
|
||||
'token' => 'This password reset token is invalid.',
|
||||
'user' => 'We can\'t find a user with that email address.',
|
||||
];
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'error' => 'An error occurred when validating the form, please try again',
|
||||
'not_enough_score' => 'You have not obtained a fairly high score when validation of the reCAPTCHA'
|
||||
];
|
||||
|
|
@ -1,240 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'accepted' => 'The :attribute must be accepted.',
|
||||
'accepted_if' => 'The :attribute must be accepted when :other is :value.',
|
||||
'active_url' => 'The :attribute is not a valid URL.',
|
||||
'after' => 'The :attribute must be a date after :date.',
|
||||
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
|
||||
'alpha' => 'The :attribute may only contain letters.',
|
||||
'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
|
||||
'alpha_num' => 'The :attribute may only contain letters and numbers.',
|
||||
'array' => 'The :attribute must be an array.',
|
||||
'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.',
|
||||
'before' => 'The :attribute must be a date before :date.',
|
||||
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
|
||||
'between' => [
|
||||
'array' => 'The :attribute must have between :min and :max items.',
|
||||
'file' => 'The :attribute must be between :min and :max kilobytes.',
|
||||
'numeric' => 'The :attribute must be between :min and :max.',
|
||||
'string' => 'The :attribute must be between :min and :max characters.',
|
||||
],
|
||||
'boolean' => 'The :attribute field must be true or false.',
|
||||
'can' => 'The :attribute field contains an unauthorized value.',
|
||||
'confirmed' => 'The :attribute confirmation does not match.',
|
||||
'current_password' => 'The password is incorrect.',
|
||||
'date' => 'The :attribute is not a valid date.',
|
||||
'date_equals' => 'The :attribute must be a date equal to :date.',
|
||||
'date_format' => 'The :attribute does not match the format :format.',
|
||||
'decimal' => 'The :attribute field must have :decimal decimal places.',
|
||||
'declined' => 'The :attribute must be declined.',
|
||||
'declined_if' => 'The :attribute must be declined when :other is :value.',
|
||||
'different' => 'The :attribute and :other must be different.',
|
||||
'digits' => 'The :attribute must be :digits digits.',
|
||||
'digits_between' => 'The :attribute must be between :min and :max digits.',
|
||||
'dimensions' => 'The :attribute has invalid image dimensions.',
|
||||
'distinct' => 'The :attribute field has a duplicate value.',
|
||||
'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.',
|
||||
'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.',
|
||||
'email' => 'The :attribute must be a valid email address.',
|
||||
'ends_with' => 'The :attribute must end with one of the following: :values.',
|
||||
'enum' => 'The selected :attribute is invalid.',
|
||||
'exists' => 'The selected :attribute is invalid.',
|
||||
'file' => 'The :attribute must be a file.',
|
||||
'filled' => 'The :attribute field is required.',
|
||||
'gt' => [
|
||||
'array' => 'The :attribute must have more than :value items.',
|
||||
'file' => 'The :attribute must be greater than :value kilobytes.',
|
||||
'numeric' => 'The :attribute must be greater than :value.',
|
||||
'string' => 'The :attribute must be greater than :value characters.',
|
||||
],
|
||||
'gte' => [
|
||||
'array' => 'The :attribute must have :value items or more.',
|
||||
'file' => 'The :attribute must be greater than or equal :value kilobytes.',
|
||||
'numeric' => 'The :attribute must be greater than or equal :value.',
|
||||
'string' => 'The :attribute must be greater than or equal :value characters.',
|
||||
],
|
||||
'image' => 'The :attribute must be an image.',
|
||||
'in' => 'The selected :attribute is invalid.',
|
||||
'in_array' => 'The :attribute field does not exist in :other.',
|
||||
'integer' => 'The :attribute must be an integer.',
|
||||
'ip' => 'The :attribute must be a valid IP address.',
|
||||
'ipv4' => 'The :attribute must be a valid IPv4 address.',
|
||||
'ipv6' => 'The :attribute must be a valid IPv6 address.',
|
||||
'json' => 'The :attribute must be a valid JSON string.',
|
||||
'lowercase' => 'The :attribute field must be lowercase.',
|
||||
'lt' => [
|
||||
'array' => 'The :attribute must have less than :value items.',
|
||||
'file' => 'The :attribute must be less than :value kilobytes.',
|
||||
'numeric' => 'The :attribute must be less than :value.',
|
||||
'string' => 'The :attribute must be less than :value characters.',
|
||||
],
|
||||
'lte' => [
|
||||
'array' => 'The :attribute must not have more than :value items.',
|
||||
'file' => 'The :attribute must be less than or equal :value kilobytes.',
|
||||
'numeric' => 'The :attribute must be less than or equal :value.',
|
||||
'string' => 'The :attribute must be less than or equal :value characters.',
|
||||
],
|
||||
'mac_address' => 'The :attribute must be a valid MAC address.',
|
||||
'max' => [
|
||||
'array' => 'The :attribute may not have more than :max items.',
|
||||
'file' => 'The :attribute may not be greater than :max kilobytes.',
|
||||
'numeric' => 'The :attribute may not be greater than :max.',
|
||||
'string' => 'The :attribute may not be greater than :max characters.',
|
||||
],
|
||||
'max_digits' => 'The :attribute field must not have more than :max digits.',
|
||||
'mimes' => 'The :attribute must be a file of type: :values.',
|
||||
'mimetypes' => 'The :attribute must be a file of type: :values.',
|
||||
'min' => [
|
||||
'array' => 'The :attribute must have at least :min items.',
|
||||
'file' => 'The :attribute must be at least :min kilobytes.',
|
||||
'numeric' => 'The :attribute must be at least :min.',
|
||||
'string' => 'The :attribute must be at least :min characters.',
|
||||
],
|
||||
'min_digits' => 'The :attribute field must have at least :min digits.',
|
||||
'missing' => 'The :attribute field must be missing.',
|
||||
'missing_if' => 'The :attribute field must be missing when :other is :value.',
|
||||
'missing_unless' => 'The :attribute field must be missing unless :other is :value.',
|
||||
'missing_with' => 'The :attribute field must be missing when :values is present.',
|
||||
'missing_with_all' => 'The :attribute field must be missing when :values are present.',
|
||||
'multiple_of' => 'The :attribute must be a multiple of :value.',
|
||||
'not_in' => 'The selected :attribute is invalid.',
|
||||
'not_regex' => 'The :attribute format is invalid.',
|
||||
'numeric' => 'The :attribute must be a number.',
|
||||
'password' => [
|
||||
'letters' => 'The :attribute field must contain at least one letter.',
|
||||
'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.',
|
||||
'numbers' => 'The :attribute field must contain at least one number.',
|
||||
'symbols' => 'The :attribute field must contain at least one symbol.',
|
||||
'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.',
|
||||
],
|
||||
'present' => 'The :attribute field must be present.',
|
||||
'prohibited' => 'The :attribute field is prohibited.',
|
||||
'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
|
||||
'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
|
||||
'prohibits' => 'The :attribute field prohibits :other from being present.',
|
||||
'regex' => 'The :attribute format is invalid.',
|
||||
'required' => 'The :attribute field is required.',
|
||||
'required_array_keys' => 'The :attribute field must contain entries for: :values.',
|
||||
'required_if' => 'The :attribute field is required when :other is :value.',
|
||||
'required_if_accepted' => 'The :attribute field is required when :other is accepted.',
|
||||
'required_unless' => 'The :attribute field is required unless :other is in :values.',
|
||||
'required_with' => 'The :attribute field is required when :values is present.',
|
||||
'required_with_all' => 'The :attribute field is required when :values is present.',
|
||||
'required_without' => 'The :attribute field is required when :values is not present.',
|
||||
'required_without_all' => 'The :attribute field is required when none of :values are present.',
|
||||
'same' => 'The :attribute and :other must match.',
|
||||
'size' => [
|
||||
'array' => 'The :attribute must contain :size items.',
|
||||
'file' => 'The :attribute must be :size kilobytes.',
|
||||
'numeric' => 'The :attribute must be :size.',
|
||||
'string' => 'The :attribute must be :size characters.',
|
||||
],
|
||||
'starts_with' => 'The :attribute must start with one of the following: :values',
|
||||
'string' => 'The :attribute must be a string.',
|
||||
'timezone' => 'The :attribute must be a valid zone.',
|
||||
'ulid' => 'The :attribute field must be a valid ULID.',
|
||||
'unique' => 'The :attribute has already been taken.',
|
||||
'uploaded' => 'The :attribute failed to upload.',
|
||||
'uppercase' => 'The :attribute field must be uppercase.',
|
||||
'url' => 'The :attribute format is invalid.',
|
||||
'uuid' => 'The :attribute must be a valid UUID.',
|
||||
'attributes' => [
|
||||
'address' => 'address',
|
||||
'age' => 'age',
|
||||
'amount' => 'amount',
|
||||
'area' => 'area',
|
||||
'available' => 'available',
|
||||
'birthday' => 'birthday',
|
||||
'body' => 'body',
|
||||
'city' => 'city',
|
||||
'content' => 'content',
|
||||
'country' => 'country',
|
||||
'created_at' => 'created at',
|
||||
'creator' => 'creator',
|
||||
'current_password' => 'current password',
|
||||
'date' => 'date',
|
||||
'date_of_birth' => 'date of birth',
|
||||
'day' => 'day',
|
||||
'deleted_at' => 'deleted at',
|
||||
'description' => 'description',
|
||||
'district' => 'district',
|
||||
'duration' => 'duration',
|
||||
'email' => 'email',
|
||||
'excerpt' => 'excerpt',
|
||||
'filter' => 'filter',
|
||||
'first_name' => 'first name',
|
||||
'gender' => 'gender',
|
||||
'group' => 'group',
|
||||
'hour' => 'hour',
|
||||
'image' => 'image',
|
||||
'last_name' => 'last name',
|
||||
'lesson' => 'lesson',
|
||||
'line_address_1' => 'line address 1',
|
||||
'line_address_2' => 'line address 2',
|
||||
'message' => 'message',
|
||||
'middle_name' => 'middle name',
|
||||
'minute' => 'minute',
|
||||
'mobile' => 'mobile',
|
||||
'month' => 'month',
|
||||
'name' => 'name',
|
||||
'national_code' => 'national code',
|
||||
'number' => 'number',
|
||||
'password' => 'password',
|
||||
'password_confirmation' => 'password confirmation',
|
||||
'phone' => 'phone',
|
||||
'photo' => 'photo',
|
||||
'postal_code' => 'postal code',
|
||||
'price' => 'price',
|
||||
'province' => 'province',
|
||||
'recaptcha_response_field' => 'recaptcha response field',
|
||||
'remember' => 'remember',
|
||||
'restored_at' => 'restored at',
|
||||
'result_text_under_image' => 'result text under image',
|
||||
'role' => 'role',
|
||||
'second' => 'second',
|
||||
'sex' => 'sex',
|
||||
'short_text' => 'short text',
|
||||
'size' => 'size',
|
||||
'state' => 'state',
|
||||
'street' => 'street',
|
||||
'student' => 'student',
|
||||
'subject' => 'subject',
|
||||
'teacher' => 'teacher',
|
||||
'terms' => 'terms',
|
||||
'test_description' => 'test description',
|
||||
'test_locale' => 'test locale',
|
||||
'test_name' => 'test name',
|
||||
'text' => 'text',
|
||||
'time' => 'time',
|
||||
'title' => 'title',
|
||||
'updated_at' => 'updated at',
|
||||
'username' => 'username',
|
||||
'year' => 'year',
|
||||
],
|
||||
|
||||
'youtube_id' => ':attribute must be a valid Youtube video ID',
|
||||
'vimeo_id' => ':attribute must be a valid Vimeo video ID',
|
||||
|
||||
'custom' => [
|
||||
'of_the' => [
|
||||
'male' => 'of the ',
|
||||
'female' => 'of the ',
|
||||
'vowel' => 'of the '
|
||||
],
|
||||
'event' => 'event',
|
||||
'model' => 'target element',
|
||||
'order' => 'order',
|
||||
'publication' => 'publication',
|
||||
'activated' => 'activated',
|
||||
'target' => 'target',
|
||||
'static_page_type' => 'static page type',
|
||||
'seo_title' => 'SEO title',
|
||||
'seo_description' => 'SEO description',
|
||||
'video_id' => 'ID of the video',
|
||||
'youtube_video_id' => 'ID od the youtube video',
|
||||
'vimeo_video_id' => 'ID of the vimeo video',
|
||||
],
|
||||
];
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'ImageInputComponent' => [
|
||||
'choose_a_file' => 'Choose a file',
|
||||
'change_source_picture' => 'Edit Source Image',
|
||||
'view_source_picture' => 'View image',
|
||||
'resize_source_picture' => 'Resize image',
|
||||
'resized_source_picture' => 'Image resized',
|
||||
'preview_picture' => 'Image preview',
|
||||
'change_picture_before_import' => 'Image modification before import',
|
||||
'close_window' => 'Close the window',
|
||||
'close_and_validate' => 'Validate the content and close the window',
|
||||
'close_window_without_validation' => 'Close the window without validating the content',
|
||||
'zoom_in' => 'Zoom in',
|
||||
'zoom_out' => 'Zoom out',
|
||||
'move_left' => 'Move left',
|
||||
'move_right' => 'Move right',
|
||||
'move_up' => 'Move up',
|
||||
'move_down' => 'Move down',
|
||||
'mirror_horizontal' => 'Horizontal mirror',
|
||||
'mirror_vertical' => 'Vertical mirror',
|
||||
'rotation' => 'Rotation',
|
||||
'rotate_rewind' => 'Counter-clockwise rotation',
|
||||
'rotate' => 'Clockwise rotation',
|
||||
'degres' => ':deg degrees',
|
||||
'validate' => 'Validate',
|
||||
'preview' => 'Preview',
|
||||
],
|
||||
'WordCounterComponent' => [
|
||||
'words' => 'Words',
|
||||
'characters' => 'Characters'
|
||||
],
|
||||
'PasswordVisibility' => [
|
||||
'hide' => 'Hide the password',
|
||||
'show' => 'Show the password',
|
||||
]
|
||||
];
|
||||
|
|
@ -2,16 +2,15 @@
|
|||
|
||||
return [
|
||||
'actions' => [
|
||||
'list' => 'liste',
|
||||
'view' => 'voir',
|
||||
'create' => 'créer',
|
||||
'list' => 'liste',
|
||||
'view' => 'voir',
|
||||
'create' => 'créer',
|
||||
'duplicate' => 'dupliquer',
|
||||
'update' => 'éditer',
|
||||
'delete' => 'supprimer',
|
||||
'save' => 'sauvegarder',
|
||||
'edit' => 'mettre à jour',
|
||||
'update' => 'éditer',
|
||||
'delete' => 'supprimer',
|
||||
'save' => 'sauvegarder',
|
||||
'edit' => 'mettre à jour',
|
||||
],
|
||||
|
||||
'helpers' => [
|
||||
'list' => 'Liste',
|
||||
'list_all' => 'Lister tous les :model',
|
||||
|
|
@ -22,14 +21,7 @@ return [
|
|||
'delete_model' => 'Supprimer :model',
|
||||
'save_model' => 'Sauvegarder :model',
|
||||
'edit_model' => 'Mettre à jour :model',
|
||||
'no_results' => 'Aucun résultat pour :model',
|
||||
'publish' => 'Publié',
|
||||
'unpublish' => 'Dépublié',
|
||||
'seo_title' => 'Doit décrire précisément la page, recommandation pour un positionnement
|
||||
optimal dans les moteurs de recherche (balise <title>).',
|
||||
'seo_description' => 'Doit décrire précisément le contenu de la page (balise <meta> description).',
|
||||
],
|
||||
|
||||
'libs' => [
|
||||
'toolbox' => [
|
||||
'assertFieldIsUnique' => 'La :valeur du champ :attribut est déjà utilisée',
|
||||
|
|
@ -37,7 +29,6 @@ return [
|
|||
'assertNoInternalUrls' => ':attribute : Il est interdit de coller une url de :appname dans ce champ.',
|
||||
]
|
||||
],
|
||||
|
||||
'messages' => [
|
||||
'has_been_created' => ':model a été créé',
|
||||
'cannot_be_created' => ':model ne peut être créé',
|
||||
|
|
@ -52,27 +43,25 @@ return [
|
|||
'theme_updated' => 'Le thème a été mis à jour !',
|
||||
'user_unpublished' => 'Vous ne pouvez pas désactiver votre propre compte !',
|
||||
],
|
||||
|
||||
'minicrud' => [
|
||||
'visibility_label' => 'Visibilité',
|
||||
'visibility_helper' => 'Cocher pour rendre visible.',
|
||||
'enum_select' => 'Sélectionnez :enum dans la liste.',
|
||||
'associated_enum' => 'Associé :enum',
|
||||
'dimensions_must_be' => 'Doit être :widthpx (largeur) par :heightpx (hauteur).',
|
||||
'picture_title_helper' => 'Utile pour les utilisateurs, s\'affiche en passant la souris sur l\'image',
|
||||
'picture_title_helper' => 'Utile pour les utilisateurs, s\'affiche en passant la souris sur l\'image.',
|
||||
'picture_title_label' => 'Attribut du titre de l\'image',
|
||||
'picture_alt_helper' => 'Doit décrire votre image pour les moteurs de recherche et les aveugles (5 à 6 mots)',
|
||||
'picture_alt_helper' => 'Doit décrire votre image pour les moteurs de recherche et les
|
||||
aveugles (5 à 6 mots).',
|
||||
'picture_alt_label' => 'Attribut Alt de l\'image',
|
||||
'text_warning' => 'Relisez votre contenu avant de le publier',
|
||||
'text_warning' => 'Relisez votre contenu avant de le publier.',
|
||||
],
|
||||
|
||||
'pagination' => [
|
||||
"previous" => "Page précédente",
|
||||
"next" => "Page suivante",
|
||||
"specific_page" => "Accéder à la page n°:id",
|
||||
'paginate_list' => 'Nombre d\'éléments par page',
|
||||
],
|
||||
|
||||
'other' => [
|
||||
'up' => 'Modifier l\'ordre d\'apparition vers le haut',
|
||||
'down' => 'Modifier l\'ordre d\'apparition vers le bas',
|
||||
|
|
@ -88,20 +77,18 @@ return [
|
|||
'sort_arrow' => 'Ici, les flèches sont utilisées pour trier et non pour filtrer',
|
||||
'right' => 'Vous n\'avez pas les droits',
|
||||
],
|
||||
|
||||
'meta' => [
|
||||
'title' => [
|
||||
'create' => '{0} Création d\'un :model|{1} Création d\'une :model',
|
||||
'edit' => '{0} Edition d\'un :model|{1} Edition d\'une :model',
|
||||
'show' => '{0} Visualisation d\'un :model|{1} Visualisation d\'une :model',
|
||||
],
|
||||
// phpcs:disable Generic.Files.LineLength.TooLong
|
||||
'description' => [
|
||||
'index' => '{0} Liste de tous les :model|{1} Liste de toutes les :model',
|
||||
'create' => '{0} Création d\'un tout nouveau :model|{1} Création d\'une toute nouvelle :model|{2} Création d\'un tout nouvel :model',
|
||||
'create' => '{0} Création d\'un tout nouveau :model|{1} Création d\'une toute nouvelle
|
||||
:model|{2} Création d\'un tout nouvel :model',
|
||||
'edit' => '{0} Edition d\'un :model déjà existant|{1} Edition d\'une :model déjà existante',
|
||||
'show' => '{0} Visualisation d\'un :model déjà existant|{1} Visualisation d\'une :model déjà existante',
|
||||
],
|
||||
// phpcs:enable
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'error' => 'Une erreur s\'est produite lors de la validation du formulaire, veuillez réessayer',
|
||||
'error' => 'Une erreur s\'est produite lors de la validation du formulaire, veuillez réessayer',
|
||||
'not_enough_score' => 'Vous n\'avez pas obtenu un score assez élevé lors de la validation du reCAPTCHA'
|
||||
];
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@ return [
|
|||
'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.',
|
||||
'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.',
|
||||
'array' => 'Le champ :attribute doit être un tableau.',
|
||||
'ascii' => 'Le champ :attribute ne doit contenir que des caractères alphanumériques et des symboles codés sur un octet.',
|
||||
'ascii' => 'Le champ :attribute ne doit contenir que des caractères alphanumériques et des
|
||||
symboles codés sur un octet.',
|
||||
'before' => 'Le champ :attribute doit être une date antérieure au :date.',
|
||||
'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.',
|
||||
'between' => [
|
||||
|
|
@ -108,7 +109,8 @@ return [
|
|||
'mixed' => 'Le champ :attribute doit contenir au moins une majuscule et une minuscule.',
|
||||
'numbers' => 'Le champ :attribute doit contenir au moins un chiffre.',
|
||||
'symbols' => 'Le champ :attribute doit contenir au moins un symbole.',
|
||||
'uncompromised' => 'La valeur du champ :attribute est apparue dans une fuite de données. Veuillez choisir une valeur différente.',
|
||||
'uncompromised' => 'La valeur du champ :attribute est apparue dans une fuite de données. Veuillez
|
||||
choisir une valeur différente.',
|
||||
],
|
||||
'present' => 'Le champ :attribute doit être présent.',
|
||||
'prohibited' => 'Le champ :attribute est interdit.',
|
||||
|
|
@ -141,6 +143,8 @@ return [
|
|||
'uppercase' => 'Le champ :attribute doit être en majuscules.',
|
||||
'url' => 'Le format de l\'URL de :attribute n\'est pas valide.',
|
||||
'uuid' => 'Le champ :attribute doit être un UUID valide',
|
||||
'youtube_id' => ':attribute doit être un ID de vidéo Youtube valide',
|
||||
'vimeo_id' => ':attribute doit être un ID de vidéo Vimeo valide',
|
||||
'attributes' => [
|
||||
'address' => 'adresse',
|
||||
'age' => 'âge',
|
||||
|
|
@ -214,29 +218,24 @@ return [
|
|||
'username' => 'nom d\'utilisateur',
|
||||
'year' => 'année',
|
||||
],
|
||||
|
||||
'youtube_id' => ':attribute doit être un ID de vidéo Youtube valide',
|
||||
'vimeo_id' => ':attribute doit être un ID de vidéo Vimeo valide',
|
||||
|
||||
'custom' => [
|
||||
'of_the' => [
|
||||
'male' => 'du ',
|
||||
'female' => 'de la ',
|
||||
'vowel' => 'de l\''
|
||||
],
|
||||
'event' => 'évènement',
|
||||
'model' => 'élément ciblé',
|
||||
'order' => 'ordre',
|
||||
'publication' => 'publication',
|
||||
'activated' => 'activé',
|
||||
'target' => 'cible',
|
||||
'static_page_type' => 'type de page',
|
||||
'seo_title' => 'titre SEO',
|
||||
'seo_description' => 'description SEO',
|
||||
'video_id' => 'ID de la vidéo',
|
||||
'youtube_video_id' => 'ID de la vidéo youtube',
|
||||
'vimeo_video_id' => 'ID de la vidéo viméo',
|
||||
|
||||
'event' => 'évènement',
|
||||
'model' => 'élément ciblé',
|
||||
'order' => 'ordre',
|
||||
'publication' => 'publication',
|
||||
'activated' => 'activé',
|
||||
'target' => 'cible',
|
||||
'static_page_type' => 'type de page',
|
||||
'seo_title' => 'titre SEO',
|
||||
'seo_description' => 'description SEO',
|
||||
'video_id' => 'ID de la vidéo',
|
||||
'youtube_video_id' => 'ID de la vidéo youtube',
|
||||
'vimeo_video_id' => 'ID de la vidéo viméo',
|
||||
'alt_attribute' => 'attribut alt',
|
||||
'description_2' => 'deuxième niveau de description',
|
||||
'description' => 'description',
|
||||
|
|
@ -271,7 +270,7 @@ return [
|
|||
'button_label' => 'label du bouton',
|
||||
'button_new_tab' => 'ouverture du lien du bouton dans un nouvel onglet',
|
||||
'button_status' => 'status du bouton',
|
||||
'button_url' => 'lien du bouton',
|
||||
'button_url' => 'Le lien du bouton doit être une url valide.',
|
||||
'button' => 'bouton',
|
||||
'url' => 'url',
|
||||
'youtube_video' => 'vidéo YouTube',
|
||||
|
|
@ -280,6 +279,9 @@ return [
|
|||
'job' => 'métier',
|
||||
'type' => 'type',
|
||||
'person' => 'personne',
|
||||
|
||||
'seo_title' => 'Doit décrire précisément la page, recommandation pour un positionnement
|
||||
optimal dans les moteurs de recherche (balise <title>).',
|
||||
'seo_description' => 'Doit décrire précisément le contenu de la page (balise <meta> description).',
|
||||
'required_fields' => '* Champs obligatoires',
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -121,9 +121,7 @@
|
|||
v-if="intOriginalFile"
|
||||
class="form-text text-body-secondary"
|
||||
>
|
||||
{{ humanFileSize(intOriginalFile.size) }}
|
||||
{{ `hauteur ${intOriginalFileDimensions.height}px` }}
|
||||
{{ `largeur ${intOriginalFileDimensions.width}px` }}
|
||||
{{ `Poids: ${humanFileSize(intOriginalFile.size)}, largeur: ${intOriginalFileDimensions.width}px, hauteur: ${intOriginalFileDimensions.height}px.` }}
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -106,6 +106,8 @@ export default defineComponent({
|
|||
<style lang="scss">
|
||||
#word-counter + input[type="text"],
|
||||
.word-counter + input[type="text"],
|
||||
#word-counter + input[type="url"],
|
||||
.word-counter + input[type="url"],
|
||||
#word-counter + textarea,
|
||||
.word-counter + textarea,
|
||||
#word-counter-varchar + textarea,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<nav class="navbar navbar-expand-lg position-fixed fixed-top bg-body-tertiary shadow-sm" id="top-navbar">
|
||||
<nav class="navbar navbar-expand-xxl position-fixed fixed-top bg-body-tertiary shadow-sm" id="top-navbar">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" data-bs-toggle="tooltip" data-bs-placement="bottom" href="{{ route('fo.homepage') }}"
|
||||
title="{{ __('Accéder au front du projet') }}" target="_blank">
|
||||
|
|
@ -40,11 +40,13 @@
|
|||
</script>
|
||||
@endpush
|
||||
@csrf
|
||||
@php $theme = intval(Cache::get('theme')); @endphp
|
||||
@foreach (\App\Enums\Theme\BootstrapThemeEnum::toArray() as $key => $bootstrapTheme)
|
||||
<input class="d-none form-check-input" id="theme{{ $key }}" name="theme" type="radio"
|
||||
value="{{ $bootstrapTheme->value }}">
|
||||
<label class="dropdown-item w-100 text-decoration-none @if ($bootstrapTheme->value === intval(Cache::get('theme'))) active @endif p-2"
|
||||
<label class="dropdown-item w-100 text-decoration-none @if (
|
||||
!is_null(Cache::get('theme'))
|
||||
? $bootstrapTheme->value === intval(Cache::get('theme'))
|
||||
: $bootstrapTheme->value === \App\Enums\Theme\BootstrapThemeEnum::light->value) active @endif p-2"
|
||||
for="theme{{ $key }}" role="button">
|
||||
{{ Str::of($bootstrapTheme->label)->ucFirst() }}
|
||||
</label>
|
||||
|
|
|
|||
|
|
@ -6,90 +6,83 @@
|
|||
{{ __('Accueil') }}
|
||||
</a>
|
||||
</li>
|
||||
@can('viewAny', \App\Models\StaticPage::class)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.static_pages.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.static_pages.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.static_page', '*'))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.static_page', '*'))->title() }}
|
||||
<li class="nav-item">
|
||||
<div class="dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.static_pages.*') || request()->routeIs('bo.sections.*')) active @endif dropdown-toggle" data-bs-toggle="dropdown" type="button"
|
||||
aria-expanded="false">
|
||||
{{ Str::of(__('Pages'))->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('viewAny', \App\Models\Section::class)
|
||||
<li class="nav-item">
|
||||
<div class="dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.sections.*')) active @endif dropdown-toggle" data-bs-toggle="dropdown" type="button"
|
||||
aria-expanded="false">
|
||||
{{ Str::of(trans_choice('models.classes.section', 1))->plural()->ucfirst() }}
|
||||
</a>
|
||||
<ol class="dropdown-menu">
|
||||
@can('viewAny', \App\Models\Section::class)
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.sections.*') && !request()->related_page) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.sections.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.section', '*')]) }}">
|
||||
{{ sprintf('Toutes les %s', Str::of(trans_choice('models.classes.section', 1))->title()->plural()) }}
|
||||
</a>
|
||||
</li>
|
||||
@foreach (\App\Enums\StaticPageType::containsSection() as $page)
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.sections.*') && request()->related_page === $page->name) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.sections.index', ['related_page' => $page->name]) }}"
|
||||
title="{{ __('crud.helpers.list_all', [
|
||||
'model' => sprintf(
|
||||
'%s %s %s %s',
|
||||
trans_choice('models.classes.section', '*'),
|
||||
__('validation.custom.of_the.female'),
|
||||
trans_choice('models.classes.static_page', 1),
|
||||
$page->label(),
|
||||
),
|
||||
]) }}">
|
||||
{{ sprintf('%s - %s', Str::of(trans_choice('models.classes.section', 1))->title(), $page->label()) }}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
@endcan
|
||||
</ol>
|
||||
</div>
|
||||
</li>
|
||||
@endcan
|
||||
<ol class="dropdown-menu">
|
||||
@can('viewAny', \App\Models\StaticPage::class)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.static_pages.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.static_pages.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.static_page', 2))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.static_page', 2))->title() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('viewAny', \App\Models\Section::class)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.sections.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.sections.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(__('models.classes.section'))->plural()->title()]) }}">
|
||||
{{ Str::of(__('models.classes.section'))->plural()->title() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
</ol>
|
||||
</div>
|
||||
</li>
|
||||
@can('viewAny', \App\Models\News::class)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.news.*')) active @endif" data-bs-toggle="tooltip" href="{{ route('bo.news.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.news', 1))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.news', 1))->ucfirst()->plural() }}
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(__('models.classes.news'))->plural()->title()]) }}">
|
||||
{{ Str::of(__('models.classes.news'))->plural()->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('viewAny', \App\Models\Site::class)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.sites.*')) active @endif" data-bs-toggle="tooltip" href="{{ route('bo.sites.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.site', 1))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.site', 1))->ucfirst()->plural() }}
|
||||
<li class="nav-item">
|
||||
<div class="dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.sites.*') || request()->routeIs('bo.logos.*')) active @endif dropdown-toggle" data-bs-toggle="dropdown" type="button"
|
||||
aria-expanded="false">
|
||||
{{ Str::of(__('models.classes.site'))->plural()->title() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('viewAny', \App\Models\Logo::class)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.logos.*')) active @endif" data-bs-toggle="tooltip" href="{{ route('bo.logos.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.logo', 1))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.logo', 1))->ucfirst()->plural() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
<ol class="dropdown-menu">
|
||||
@can('viewAny', \App\Models\Site::class)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.sites.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.sites.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(__('models.classes.site'))->plural()->title()]) }}">
|
||||
{{ Str::of(__('models.classes.site'))->plural()->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('viewAny', \App\Models\Logo::class)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.logos.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.logos.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(__('models.classes.logo'))->plural()]) }}">
|
||||
{{ Str::of(__('models.classes.logo'))->plural()->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
</ol>
|
||||
</div>
|
||||
</li>
|
||||
@can('viewAny', \App\Models\Slide::class)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.slides.*')) active @endif" data-bs-toggle="tooltip" href="{{ route('bo.slides.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.slide', 1))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.slide', 1))->ucfirst()->plural() }}
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(__('models.classes.slide'))->plural()->title()]) }}">
|
||||
{{ Str::of(__('models.classes.slide'))->plural()->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('viewAny', \App\Models\Strip::class)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.strips.*')) active @endif" data-bs-toggle="tooltip" href="{{ route('bo.strips.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.strip', 1))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.strip', '*'))->ucfirst() }}
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.strip', 2))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.strip', 2))->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
|
|
@ -97,8 +90,8 @@
|
|||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.testimonials.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.testimonials.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.testimonial', 1))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.testimonial', 1))->ucfirst()->plural() }}
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(__('models.classes.testimonial'))->plural()->title()]) }}">
|
||||
{{ Str::of(__('models.classes.testimonial'))->plural()->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
|
|
@ -106,8 +99,8 @@
|
|||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.jobvideos.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.jobvideos.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.job_video', '*'))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.job_video', '*'))->ucfirst()->plural() }}
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.job_video', 2))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.job_video', 2))->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
|
|
@ -115,8 +108,8 @@
|
|||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.historicalmilestones.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.historicalmilestones.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.historicalMilestone', '*'))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.historicalMilestone', '*'))->ucfirst()->plural() }}
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(trans_choice('models.classes.historicalMilestone', 2))->title()]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.historicalMilestone', 2))->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
|
|
@ -132,23 +125,23 @@
|
|||
<li>
|
||||
<a class="dropdown-item text-lg-start @if (request()->routeIs('bo.users.*')) active @endif p-2 text-center"
|
||||
data-bs-toggle="tooltip" href="{{ route('bo.users.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.user', '*')]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.user', 1))->plural()->ucfirst() }}
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::of(__('models.classes.user'))->plural()]) }}">
|
||||
{{ Str::of(__('models.classes.user'))->plural()->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('isConceptor')
|
||||
<hr class="dropdown-divider m-0">
|
||||
<hr class="dropdown-divider m-0" />
|
||||
<li>
|
||||
<a class="dropdown-item text-lg-start @if (request()->routeIs('bo.activity_logs.*')) active @endif p-2 text-center"
|
||||
data-bs-toggle="tooltip" href="{{ route('bo.activity_logs.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.activity_log', '*')]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.activity_log', '*'))->ucfirst() }}
|
||||
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.activity_log', 2)]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.activity_log', 2))->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
</ol>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
@endcan
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
<form action="{{ route('bo.historicalmilestones.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@include('bo.pages.historicalmilestones.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row mt-3">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.historicalmilestones.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -45,8 +45,14 @@
|
|||
'max' => 2155,
|
||||
'required' => true,
|
||||
'model' => $historicalMilestoneModel ?? null,
|
||||
'helper' => __('crud.helpers.year', [
|
||||
'model' => trans_choice('models.classes.historicalMilestone', 1),
|
||||
'helper' => __('validation.between.numeric', [
|
||||
'attribute' => __(':field1 :inter:field2', [
|
||||
'field1' => __('validation.attributes.year'),
|
||||
'inter' => __('validation.custom.of_the.male'),
|
||||
'field2' => trans_choice('models.classes.historicalMilestone', 1),
|
||||
]),
|
||||
'min' => 1900,
|
||||
'max' => 2100,
|
||||
]),
|
||||
])
|
||||
</div>
|
||||
|
|
@ -206,7 +212,7 @@
|
|||
'name' => 'button_url',
|
||||
'required' => false,
|
||||
'model' => $historicalMilestoneModel ?? null,
|
||||
'helper' => __('crud.helpers.url'),
|
||||
'helper' => __('validation.custom.button_url'),
|
||||
'placeholder' => __(':field :inter:model', [
|
||||
'field' => Str::ucfirst(__('validation.custom.url')),
|
||||
'inter' => __('validation.custom.of_the.male'),
|
||||
|
|
@ -223,8 +229,8 @@
|
|||
'id' => 'historicalMilestoneButtonNewTab',
|
||||
'name' => 'button_new_tab',
|
||||
'model' => $historicalMilestoneModel ?? null,
|
||||
'label' => __('crud.labels.new_tab_boolean'),
|
||||
'helper' => __('crud.helpers.new_tab_boolean'),
|
||||
'label' => Str::of(__('validation.custom.button_new_tab'))->ucFirst(),
|
||||
'helper' => __('validation.boolean', ['attribute' => __('validation.custom.button_new_tab')]),
|
||||
])
|
||||
</div>
|
||||
{{-- BUTTON_STATUS --}}
|
||||
|
|
@ -247,24 +253,7 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<p><b>{{ __('* Champs obligatoires') }}</b></p>
|
||||
<div class="col-12 text-center">
|
||||
<p><b>{{ __('validation.custom.required_fields') }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -16,8 +16,9 @@
|
|||
<td class="text-center align-middle">{{ $historicalMilestoneModel->year }}</td>
|
||||
<td class="text-center align-middle">{{ $historicalMilestoneModel->title }}</td>
|
||||
<td class="text-center align-middle">
|
||||
<img src="{{ asset($historicalMilestoneModel->picture) }}" title="{{ $historicalMilestoneModel->picture_title }}"
|
||||
alt="{{ $historicalMilestoneModel->picture_alt }}" height="50px">
|
||||
<img data-bs-toggle="tooltip" src="{{ asset($historicalMilestoneModel->picture) }}"
|
||||
title="{{ $historicalMilestoneModel->picture_title }}" alt="{{ $historicalMilestoneModel->picture_alt }}"
|
||||
height="50px">
|
||||
</td>
|
||||
<td class="text-center align-middle">
|
||||
<span class="badge bg-secondary">{{ $historicalMilestoneModel->updated_at->isoFormat('LLLL') }}</span>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
<form action="{{ route('bo.jobvideos.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@include('bo.pages.job_videos.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row mt-3">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.job_videos.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -96,24 +96,7 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<p><b>{{ __('* Champs obligatoires') }}</b></p>
|
||||
<div class="col-12 text-center">
|
||||
<p><b>{{ __('validation.custom.required_fields') }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -16,12 +16,11 @@
|
|||
<td class="text-center align-middle">{{ $jobVideoModel->title }}</td>
|
||||
<td class="text-center align-middle">{{ $jobVideoModel->place }}</td>
|
||||
<td class="text-center align-middle">
|
||||
<a href="https://www.youtube.com/watch?v={{ $jobVideoModel->video_id }}"
|
||||
title="{{ __('Ouvrir la vidéo ') . $jobVideoModel->title }}">
|
||||
<a data-bs-toggle="tooltip" href="https://www.youtube.com/watch?v={{ $jobVideoModel->video_id }}"
|
||||
title="{{ __("Ouvrir la vidéo ':name'", ['name' => $jobVideoModel->title]) }}" target="_blank">
|
||||
{{ __('Ouvrir la vidéo') }}
|
||||
</a>
|
||||
</td>
|
||||
|
||||
<td class="text-center align-middle">
|
||||
<span class="badge bg-secondary">{{ $jobVideoModel->updated_at->isoFormat('LLLL') }}</span>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
<form action="{{ route('bo.logos.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@include('bo.pages.logos.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row mt-3">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.logos.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -105,24 +105,7 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<p><b>* {{ __('crud.helpers.required_fields') }}</b></p>
|
||||
<div class="col-12 text-center">
|
||||
<p><b>{{ __('validation.custom.required_fields') }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
@extends('bo.layout')
|
||||
|
||||
@section('title', Str::ucfirst(trans_choice('models.classes.logo', 1)))
|
||||
@section('description', __('Liste de tous les :model', ['model' => trans_choice('models.classes.logo', '*')]))
|
||||
@section('title', Str::of(__('models.classes.logo'))->plural()->ucfirst())
|
||||
@section('description', __('Liste de tous les :model', ['model' => Str::of(__('models.classes.logo'))->plural()]))
|
||||
|
||||
@section('content')
|
||||
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap">
|
||||
@include('modules.breadcrumbs.breadcrumb-body')
|
||||
@can('create', \App\Models\Logo::class)
|
||||
<a class="btn btn-primary float-right" data-bs-toggle="tooltip" href="{{ route('bo.logos.create') }}"
|
||||
title="{{ __('crud.helpers.create_model', ['model' => trans_choice('models.classes.logo', 1)]) }}">
|
||||
title="{{ __('crud.helpers.create_model', ['model' => __('models.classes.logo')]) }}">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
@endcan
|
||||
|
|
|
|||
|
|
@ -2,8 +2,7 @@
|
|||
|
||||
@section('title', __('Création d\'une :model', ['model' => trans_choice('models.classes.news', 1)]))
|
||||
@section('description', __('Création d\'une toute nouvelle :model', ['model' => trans_choice('models.classes.news', 1)]))
|
||||
@section('breadcrumb',
|
||||
request()->route()->getName())
|
||||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
|
||||
|
|
@ -24,6 +23,7 @@
|
|||
<form action="{{ route('bo.news.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@include('bo.pages.news.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row mt-3">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.news.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
'model' => $newsModel ?? null,
|
||||
'helper' => sprintf(
|
||||
'%s %s',
|
||||
__('crud.helpers.seo_title'),
|
||||
__('validation.custom.seo_title'),
|
||||
__('validation.between.string', [
|
||||
'attribute' => __(':field :inter:model', [
|
||||
'field' => __('validation.custom.seo_title'),
|
||||
|
|
@ -383,25 +383,7 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<p><b>* {{ __('crud.helpers.required_fields') }}</b></p>
|
||||
<div class="col-12 text-center">
|
||||
<p><b>{{ __('validation.custom.required_fields') }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
</div>
|
||||
|
|
@ -26,6 +26,7 @@
|
|||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.sections.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
{{-- H2_TITLE --}}
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<fieldset class="h-100 border p-3">
|
||||
|
|
@ -77,10 +76,7 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if ($sectionModel->section !== \App\Enums\Sections\PageSectionenum::hire_grow)
|
||||
<div class="row">
|
||||
@if ($sectionModel->section !== \App\Enums\Sections\PageSectionenum::hire_grow)
|
||||
{{-- CONTENT --}}
|
||||
<div class="col-12 mb-3">
|
||||
<fieldset class="border p-3">
|
||||
|
|
@ -104,11 +100,8 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($sectionModel->data)
|
||||
<div class="row">
|
||||
@endif
|
||||
@if ($sectionModel->data)
|
||||
{{-- MINICRUD --}}
|
||||
<div class="col-12 mb-3">
|
||||
<button class="btn btn-primary col-form-label rounded-0 dropdown-toggle w-100" data-bs-toggle="collapse"
|
||||
|
|
@ -126,25 +119,8 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
@endif
|
||||
<div class="col-12 text-center">
|
||||
<p><b>{{ __('* Champs obligatoires') }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -2,18 +2,21 @@
|
|||
@if (count($sectionModelList) > 0)
|
||||
<thead>
|
||||
@include('bo.modules.table-col-sorter', [
|
||||
'cols' => [
|
||||
'page_id' => Str::ucfirst(trans_choice('models.classes.static_page', 1)),
|
||||
'section' => Str::ucfirst(trans_choice('models.classes.section', 1)),
|
||||
'h2_title' => Str::ucfirst(__('validation.custom.h2_title')),
|
||||
'updated_at' => Str::ucfirst(__('validation.attributes.updated_at')),
|
||||
],
|
||||
'cols' => array_merge(
|
||||
!request()->related_page ? ['page_id' => Str::ucfirst(trans_choice('models.classes.static_page', 1))] : [],
|
||||
[
|
||||
'section' => Str::ucfirst(trans_choice('models.classes.section', 1)),
|
||||
'h2_title' => Str::ucfirst(__('validation.custom.h2_title')),
|
||||
'updated_at' => Str::ucfirst(__('validation.attributes.updated_at')),
|
||||
]),
|
||||
])
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($sectionModelList as $sectionModel)
|
||||
<tr class="border-bottom list-item">
|
||||
<td class="text-center align-middle">{{ $sectionModel->page->title }}</td>
|
||||
@if (!request()->related_page)
|
||||
<td class="text-center align-middle">{{ $sectionModel->page->title }}</td>
|
||||
@endif
|
||||
<td class="text-center align-middle">{{ $sectionModel->section->label() }}</td>
|
||||
<td class="text-center align-middle">{{ $sectionModel->h2_title }}</td>
|
||||
<td class="text-center align-middle">
|
||||
|
|
@ -42,7 +45,8 @@
|
|||
@else
|
||||
<tr>
|
||||
<td class="border-0">
|
||||
{{ trans_choice('crud.other.no_model_found', 1, ['model' => trans_choice('models.classes.section', 1)]) }}</td>
|
||||
{{ trans_choice('crud.other.no_model_found', 1, ['model' => trans_choice('models.classes.section', 1)]) }}
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,25 +1,28 @@
|
|||
@extends('bo.layout')
|
||||
@extends('bo.layout', ['brParam' => request()->related_page ? \App\Enums\StaticPageType::make(request()->related_page, 'name')->label() : ''])
|
||||
|
||||
@section('title', Str::ucfirst(trans_choice('models.classes.section', 1)))
|
||||
@section('description', __('Liste de toutes les :model', ['model' => trans_choice('models.classes.section', '*')]))
|
||||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap">
|
||||
@include('modules.breadcrumbs.breadcrumb-body')
|
||||
@include('modules.breadcrumbs.breadcrumb-body', [
|
||||
'brParam' => request()->related_page ? \App\Enums\StaticPageType::make(request()->related_page, 'name')->label() : '',
|
||||
])
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-light dropdown-toggle border" data-bs-toggle="dropdown" type="button" aria-expanded="false">
|
||||
{{ __('Sélectionnez une page') }}
|
||||
<button class="btn dropdown-toggle border" data-bs-toggle="dropdown" type="button" aria-expanded="false">
|
||||
{{ request()->related_page ? \App\Enums\StaticPageType::make(request()->related_page, 'name')->label() : __('Sélectionnez une page') }}
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.sections.*') && !request()->related_page) active @endif" data-bs-toggle="tooltip"
|
||||
<a class="dropdown-item @if (!request()->related_page) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.sections.index') }}" title="{{ __('Toutes les sections') }}">
|
||||
{{ __('Toutes') }}
|
||||
</a>
|
||||
</li>
|
||||
@foreach (\App\Enums\StaticPageType::containsSection() as $page)
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.sections.*') && request()->related_page === $page->name) active @endif" data-bs-toggle="tooltip"
|
||||
<a class="dropdown-item @if (request()->related_page === $page->name) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.sections.index', ['related_page' => $page->name]) }}"
|
||||
title="{{ __('Sections de la page ') . $page->label() }}">
|
||||
{{ $page->label() }}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
<form action="{{ route('bo.sites.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@include('bo.pages.sites.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row mt-3">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.sites.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
'model' => $siteModel ?? null,
|
||||
'helper' => sprintf(
|
||||
'%s %s',
|
||||
__('crud.helpers.seo_title'),
|
||||
__('validation.custom.seo_title'),
|
||||
__('validation.between.string', [
|
||||
'attribute' => __(':field :inter:model', [
|
||||
'field' => __('validation.custom.seo_title'),
|
||||
|
|
@ -219,13 +219,15 @@
|
|||
|
||||
{{-- PICTOS --}}
|
||||
<div class="col-12 pb-3">
|
||||
<fieldset class="h-100 border bg-white p-3">
|
||||
<fieldset class="h-100 border p-3">
|
||||
<legend>{{ Str::of(__('validation.custom.picto'))->ucfirst()->plural() }}</legend>
|
||||
<div class="row">
|
||||
@php
|
||||
$itemsList = collect(\App\Enums\Sites\SpeciesEnum::toArray())->values();
|
||||
$values = collect(old('pictos', $siteModel->pictos ?? []))->values();
|
||||
$selectedItemList = collect($itemsList)->filter(fn($picto) => $values->filter(fn($value) => intval($value) === $picto->value)->count())->values();
|
||||
$selectedItemList = collect($itemsList)
|
||||
->filter(fn($picto) => $values->filter(fn($value) => intval($value) === $picto->value)->count())
|
||||
->values();
|
||||
@endphp
|
||||
@include('bo.partials.inputs.select-multiple-enum', [
|
||||
'id' => 'sitePictos',
|
||||
|
|
@ -902,24 +904,7 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<p><b>* {{ __('crud.helpers.required_fields') }}</b></p>
|
||||
<div class="col-12 text-center">
|
||||
<p><b>{{ __('validation.custom.required_fields') }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
<form action="{{ route('bo.slides.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@include('bo.pages.slides.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row mt-3">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.slides.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@
|
|||
'name' => 'button_url',
|
||||
'required' => false,
|
||||
'model' => $slideModel ?? null,
|
||||
'helper' => __('crud.helpers.url'),
|
||||
'helper' => __('validation.custom.button_url'),
|
||||
'placeholder' => __(':field :inter:model', [
|
||||
'field' => Str::ucfirst(__('validation.custom.url')),
|
||||
'inter' => __('validation.custom.of_the.male'),
|
||||
|
|
@ -254,8 +254,8 @@
|
|||
'id' => 'slideButtonNewTab',
|
||||
'name' => 'button_new_tab',
|
||||
'model' => $slideModel ?? null,
|
||||
'label' => __('crud.labels.new_tab_boolean'),
|
||||
'helper' => __('crud.helpers.new_tab_boolean'),
|
||||
'label' => Str::of(__('validation.custom.button_new_tab'))->ucFirst(),
|
||||
'helper' => __('validation.boolean', ['attribute' => __('validation.custom.button_new_tab')]),
|
||||
])
|
||||
</div>
|
||||
{{-- BUTTON_STATUS --}}
|
||||
|
|
@ -278,30 +278,18 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<p><b>* {{ __('crud.helpers.required_fields') }}</b></p>
|
||||
<div class="col-12 text-center">
|
||||
<p><b>{{ __('validation.custom.required_fields') }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
|
||||
// Update inputs for sliders other than 'home'.
|
||||
const sliderInput = document.getElementById('slider');
|
||||
const videoIdField = document.getElementById('video_id_input');
|
||||
const titleInput = document.getElementById('slideTitle');
|
||||
|
||||
if (sliderInput.value === "{{ \App\Enums\Slides\SliderTypeEnum::home->value() }}") {
|
||||
videoIdField.hidden = false;
|
||||
titleInput.required = false;
|
||||
|
|
@ -309,7 +297,6 @@
|
|||
videoIdField.hidden = true;
|
||||
titleInput.required = true;
|
||||
}
|
||||
|
||||
sliderInput.addEventListener('input', () => {
|
||||
if (sliderInput.value === "{{ \App\Enums\Slides\SliderTypeEnum::home->value() }}") {
|
||||
videoIdField.hidden = false;
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
'model' => $staticPageModel ?? null,
|
||||
'helper' => sprintf(
|
||||
'%s %s',
|
||||
__('crud.helpers.seo_title'),
|
||||
__('validation.custom.seo_title'),
|
||||
__('validation.between.string', [
|
||||
'attribute' => __(':field :inter:model', [
|
||||
'field' => __('validation.custom.seo_title'),
|
||||
|
|
|
|||
|
|
@ -2,8 +2,7 @@
|
|||
|
||||
@section('title', __('Création d\'un :model', ['model' => trans_choice('models.classes.strip', 1)]))
|
||||
@section('description', __('Création d\'un tout nouveau :model', ['model' => trans_choice('models.classes.strip', 1)]))
|
||||
@section('breadcrumb',
|
||||
request()->route()->getName())
|
||||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
|
||||
|
|
@ -24,6 +23,7 @@
|
|||
<form action="{{ route('bo.strips.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@include('bo.pages.strips.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row mt-3">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -2,8 +2,7 @@
|
|||
|
||||
@section('title', __('Édition d\'un :model', ['model' => trans_choice('models.classes.strip', 1)]))
|
||||
@section('description', __('Édition d\'un :model déjà existant', ['model' => trans_choice('models.classes.strip', 1)]))
|
||||
@section('breadcrumb',
|
||||
request()->route()->getName())
|
||||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
|
||||
|
|
@ -40,6 +39,7 @@
|
|||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.strips.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -116,24 +116,7 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<p><b>* {{ __('crud.helpers.required_fields') }}</b></p>
|
||||
<div class="col-12 text-center">
|
||||
<p><b>{{ __('validation.custom.required_fields') }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
<form action="{{ route('bo.testimonials.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@include('bo.pages.testimonials.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row mt-3">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.testimonials.form')
|
||||
@include('bo.partials.script-button-clone')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
|
||||
|
|
|
|||
|
|
@ -182,30 +182,18 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
<p><b>* {{ __('crud.helpers.required_fields') }}</b></p>
|
||||
<div class="col-12 text-center">
|
||||
<p><b>{{ __('validation.custom.required_fields') }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
|
||||
// Update inputs for testimonialrs other than 'home'.
|
||||
const testimonialrInput = document.getElementById('testimonialr');
|
||||
const videoIdField = document.getElementById('video_id_input');
|
||||
const titleInput = document.getElementById('testimonialTitle');
|
||||
|
||||
if (testimonialrInput.value === "{{ \App\Enums\Slides\SliderTypeEnum::home->value() }}") {
|
||||
videoIdField.hidden = false;
|
||||
titleInput.required = false;
|
||||
|
|
@ -213,7 +201,6 @@
|
|||
videoIdField.hidden = true;
|
||||
titleInput.required = true;
|
||||
}
|
||||
|
||||
testimonialrInput.addEventListener('input', () => {
|
||||
if (testimonialrInput.value === "{{ \App\Enums\Slides\SliderTypeEnum::home->value() }}") {
|
||||
videoIdField.hidden = false;
|
||||
|
|
|
|||
|
|
@ -123,24 +123,26 @@
|
|||
</fieldset>
|
||||
</div>
|
||||
{{-- STATUS --}}
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<fieldset class="h-100 border p-3">
|
||||
<legend>{{ __('Visibilité') }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.tinyint-boolean', [
|
||||
'id' => 'userPublished',
|
||||
'name' => 'published',
|
||||
'label' => __('État de publication de l\':model', ['model' => trans_choice('models.classes.user', 1)]),
|
||||
'helper' => __('Deux réponses possibles : oui ou non.'),
|
||||
'model' => $userModel ?? null,
|
||||
])
|
||||
@can('changePublished', $userModel)
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<fieldset class="h-100 border p-3">
|
||||
<legend>{{ __('Visibilité') }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.tinyint-boolean', [
|
||||
'id' => 'userPublished',
|
||||
'name' => 'published',
|
||||
'label' => __('État de publication de l\':model', ['model' => trans_choice('models.classes.user', 1)]),
|
||||
'helper' => __('Deux réponses possibles : oui ou non.'),
|
||||
'model' => $userModel ?? null,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@endcan
|
||||
<div class="col-12 text-center">
|
||||
<p><b>{{ __('* Champs obligatoires') }}</b></p>
|
||||
<p><b>{{ __('validation.custom.required_fields') }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -221,13 +221,15 @@ Breadcrumbs::for('bo.testimonials.duplicate', function (Generator $trail) {
|
|||
});
|
||||
|
||||
// * SECTIONS
|
||||
Breadcrumbs::for('bo.sections.index', function (Generator $trail) {
|
||||
Breadcrumbs::for('bo.sections.index', function (Generator $trail, string $name) {
|
||||
$trail->push(
|
||||
Str::of(__('models.classes.section'))->plural()->ucfirst(),
|
||||
!empty($name) ?
|
||||
sprintf('%s (page %s)', Str::of(__('models.classes.section'))->plural()->ucfirst(), $name) :
|
||||
Str::of(__('models.classes.section'))->plural()->ucfirst(),
|
||||
route('bo.sections.index', ['sort_col' => 'updated_at', 'sort_way' => 'desc'])
|
||||
);
|
||||
});
|
||||
Breadcrumbs::for('bo.sections.edit', function (Generator $trail, Section $section) {
|
||||
$trail->parent('bo.sections.index');
|
||||
$trail->parent('bo.sections.index', '');
|
||||
$trail->push(Str::ucfirst(trans('crud.actions.edit')), route('bo.sections.edit', $section));
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue