diff --git a/.env.example b/.env.example index 749786e..8ff8760 100644 --- a/.env.example +++ b/.env.example @@ -61,6 +61,9 @@ VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" # Sentry SENTRY_LARAVEL_DSN= +# Matomo +MATOMO_SITE_ID=id + # MAILS MAIL_CONTACT_REMARK="equipe.web@ldc.fr" MAIL_CONTACT_SPONSORING="equipe.web@ldc.fr" diff --git a/app/Enums/Sites/SpeciesEnum.php b/app/Enums/Sites/SpeciesEnum.php index 6d6254f..4770563 100644 --- a/app/Enums/Sites/SpeciesEnum.php +++ b/app/Enums/Sites/SpeciesEnum.php @@ -30,4 +30,74 @@ enum SpeciesEnum: int self::guinea_fowl->name => 'Pintade', self::rooster->name => 'Coq', ]; + + /** + * Pictures paths. + */ + private const PICTURES = [ + self::chicken->name => 'resources/assets/images/pictos/chicken.jpg', + self::turkey->name => 'resources/assets/images/pictos/turkey.jpg', + self::hen->name => 'resources/assets/images/pictos/hen_and_rooster.jpg', + self::duck->name => 'resources/assets/images/pictos/duck.jpg', + self::rabbit->name => 'resources/assets/images/pictos/rabbit.jpg', + self::guinea_fowl->name => 'resources/assets/images/pictos/guinea_fowl.jpg', + self::rooster->name => 'resources/assets/images/pictos/hen_and_rooster.jpg', + ]; + + /** + * Get picture path + * + * @return string + */ + public function picture(): string + { + return self::PICTURES[$this->name]; + } + + /** + * Alt attributes for pictures. + */ + private const ALTS = [ + self::chicken->name => 'Pictogramme pour la catégorie \'poulet\'', + self::turkey->name => 'Pictogramme pour la catégorie \'dinde\'', + self::hen->name => 'Pictogramme pour la catégorie \'poule\'', + self::duck->name => 'Pictogramme pour la catégorie \'canard\'', + self::rabbit->name => 'Pictogramme pour la catégorie \'lapin\'', + self::guinea_fowl->name => 'Pictogramme pour la catégorie \'pintade\'', + self::rooster->name => 'Pictogramme pour la catégorie \'coq\'', + ]; + + /** + * Get picture alt attribute + * + * @return string + */ + public function alt(): string + { + return self::ALTS[$this->name]; + } + + + /** + * Alt attributes for pictures. + */ + private const TITLES = [ + self::chicken->name => 'Pictogramme pour la catégorie \'poulet\'', + self::turkey->name => 'Pictogramme pour la catégorie \'dinde\'', + self::hen->name => 'Pictogramme pour la catégorie \'poule\'', + self::duck->name => 'Pictogramme pour la catégorie \'canard\'', + self::rabbit->name => 'Pictogramme pour la catégorie \'lapin\'', + self::guinea_fowl->name => 'Pictogramme pour la catégorie \'pintade\'', + self::rooster->name => 'Pictogramme pour la catégorie \'coq\'', + ]; + + /** + * Get picture alt attribute + * + * @return string + */ + public function title(): string + { + return self::TITLES[$this->name]; + } } diff --git a/app/Enums/StaticPageType.php b/app/Enums/StaticPageType.php index afb8f08..1ac9b02 100644 --- a/app/Enums/StaticPageType.php +++ b/app/Enums/StaticPageType.php @@ -66,7 +66,7 @@ enum StaticPageType: int // @phpcs:enable return match ($this) { self::contact => false, - self::legals => false, + self::legals => true, self::confidentiality => true, self::home => false, self::unveil => false, diff --git a/app/Http/Controllers/Bo/SiteController.php b/app/Http/Controllers/Bo/SiteController.php index 686f1ae..693ac4b 100644 --- a/app/Http/Controllers/Bo/SiteController.php +++ b/app/Http/Controllers/Bo/SiteController.php @@ -42,15 +42,13 @@ class SiteController extends Controller $siteModels, $search, null, - 'title', - 'introduction', - 'content', + 'name', + 'description', ); } $searchFields = \implode(', ', [ - Str::ucfirst(trans('validation.attributes.title')), - trans('validation.custom.introduction'), - trans('validation.attributes.content'), + Str::ucfirst(trans('validation.attributes.name')), + trans('validation.attributes.description'), ]); /** Sort columns with a query */ diff --git a/app/Http/Middleware/SecureHeaders.php b/app/Http/Middleware/SecureHeaders.php index 3429977..37ae290 100644 --- a/app/Http/Middleware/SecureHeaders.php +++ b/app/Http/Middleware/SecureHeaders.php @@ -61,6 +61,8 @@ class SecureHeaders "img-src 'self' data: blob: " . implode(' ', [ // * Leaftlet With OpenStreetmaps 'https://tile.openstreetmap.org', + // * Youtube thumbnails + 'https://img.youtube.com/vi/', // * VITE DEV config('app.debug') ? "https://{$host}:4443" : '', ]) . ';', diff --git a/app/Http/Requests/Bo/News/StoreNewsRequest.php b/app/Http/Requests/Bo/News/StoreNewsRequest.php index d7d73cb..5c2efac 100644 --- a/app/Http/Requests/Bo/News/StoreNewsRequest.php +++ b/app/Http/Requests/Bo/News/StoreNewsRequest.php @@ -59,7 +59,7 @@ class StoreNewsRequest extends FormRequest return \array_merge( $rules, $this->pictureRules('picture', 500, 390, 500, 390, true), - $this->pictureRules('thumbnail', 300, 200, 300, 200, true), + $this->pictureRules('thumbnail', 660, 440, 660, 440, true), ); } diff --git a/app/Http/Requests/Bo/Sections/UpdateSectionRequest.php b/app/Http/Requests/Bo/Sections/UpdateSectionRequest.php index bbbfbc0..fdee142 100644 --- a/app/Http/Requests/Bo/Sections/UpdateSectionRequest.php +++ b/app/Http/Requests/Bo/Sections/UpdateSectionRequest.php @@ -36,7 +36,9 @@ class UpdateSectionRequest extends UpdateMiniCrudRequest /** @var \App\Models\Section|null $section */ $section = $this->route('section'); if ($section) { - if ($section->section !== \App\Enums\Sections\PageSectionEnum::hire_grow) { + if ( + $section->section !== \App\Enums\Sections\PageSectionEnum::hire_grow + ) { $rules = \array_merge($rules, [ 'text' => 'present', ]); diff --git a/app/Http/Requests/Bo/Strips/StoreStripRequest.php b/app/Http/Requests/Bo/Strips/StoreStripRequest.php index d438903..2ecb5ba 100644 --- a/app/Http/Requests/Bo/Strips/StoreStripRequest.php +++ b/app/Http/Requests/Bo/Strips/StoreStripRequest.php @@ -2,9 +2,9 @@ namespace App\Http\Requests\Bo\Strips; +use App\Rules\WysiwygLength; use App\Traits\Requests\HasPicture; use Illuminate\Foundation\Http\FormRequest; -use Illuminate\Support\Str; use Illuminate\Validation\Rules\Enum; class StoreStripRequest extends FormRequest @@ -48,16 +48,7 @@ class StoreStripRequest extends FormRequest 'text' => [ 'required', 'string', - 'min:3', - // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundBeforeLastUsed - function (string $attribute, mixed $value, \Closure $fail) { - if (Str::wordCount(\strip_tags($value)) > 255) { - $fail(trans('validation.max_words', [ - 'attribute' => trans('validation.attributes.text'), - 'count' => '255' - ])); - } - } + new WysiwygLength(3, 90), ], 'news_id' => 'nullable|exists:news,id', 'published' => 'required|boolean', diff --git a/app/Http/Requests/Bo/UpdateMiniCrudRequest.php b/app/Http/Requests/Bo/UpdateMiniCrudRequest.php index 025a1b9..0be6769 100644 --- a/app/Http/Requests/Bo/UpdateMiniCrudRequest.php +++ b/app/Http/Requests/Bo/UpdateMiniCrudRequest.php @@ -86,7 +86,7 @@ abstract class UpdateMiniCrudRequest extends FormRequest ]); break; case InputType::image->value: - $required = $this->isUpdate() ? 'sometimes' : 'required'; + $required = $this->isUpdate() ? 'sometimes' : ($input['required'] ? 'required' : 'nullable'); $ipt = $this->data[$iptName]; $max = isset($ipt['dimensionsMax']); $dim = \is_string($input['dimensions']) ? collect(explode( diff --git a/app/Models/Section.php b/app/Models/Section.php index 4541cac..608df75 100644 --- a/app/Models/Section.php +++ b/app/Models/Section.php @@ -74,6 +74,7 @@ class Section extends Model $model->text = FileStorageHelper::storeModelFilesFromHtml($model, $model->text); }); static::updated(function (self $model) { + $model->minicrudUpdated(); FileStorageHelper::removeOldModelFilesFromHtml( $model->text, ToolboxHelper::getOriginal($model, 'text') @@ -196,18 +197,41 @@ class Section extends Model /** * Empty bloc for the button boolean. * - * @param array $data - * @param string $name + * @param array $data + * @param string $name + * @param boolean $value * @return array */ public static function emptyButtonBooleanBloc( array $data, - string $name + string $name, + bool $value = false ): array { $data['bloc_button_' . Str::of($name)->snake()->ascii()->remove(['\'', '-'])] = [ 'label' => "Afficher le bouton '{$name}' ?", 'inputType' => InputType::boolean->value, - 'value' => false + 'value' => $value + ]; + return $data; + } + + /** + * Empty bloc for a boolean. + * + * @param array $data + * @param string $name + * @param boolean $value + * @return array + */ + public static function emptyBooleanBloc( + array $data, + string $name, + bool $value = false + ): array { + $data['bloc_boolean_' . Str::of($name)->snake()->ascii()->remove(['\'', '-'])] = [ + 'label' => "{$name} ?", + 'inputType' => InputType::boolean->value, + 'value' => $value ]; return $data; } diff --git a/app/Rules/WysiwygLength.php b/app/Rules/WysiwygLength.php new file mode 100644 index 0000000..f57d257 --- /dev/null +++ b/app/Rules/WysiwygLength.php @@ -0,0 +1,83 @@ +max) and !($length >= $this->min && $length <= $this->max)) { + $fail(trans('validation.between.string', [ + 'attribute' => $translatedAttribute, + 'min' => $this->min, + 'max' => $this->max + ])); + return; + } + if ($length < $this->min) { + $fail(trans('validation.min.string', [ + 'attribute' => $translatedAttribute, + 'min' => $this->min + ])); + } + } + + /** + * Get the correct translation for the given attrribute. + * + * @param string $attribute + * @return string + */ + private static function getTranslatedAttribute(string $attribute): string + { + /** @var \Illuminate\Translation\Translator $trans */ + $trans = trans(); + if ($trans->has('validation.attributes.' . $attribute)) { + return trans('validation.attributes.' . $attribute); + } + if ($trans->has('validation.custom.' . $attribute)) { + return trans('validation.custom.' . $attribute); + } + return $attribute; + } +} diff --git a/app/Traits/Models/MiniCrudModel.php b/app/Traits/Models/MiniCrudModel.php index 60a3b7c..3e72544 100644 --- a/app/Traits/Models/MiniCrudModel.php +++ b/app/Traits/Models/MiniCrudModel.php @@ -39,8 +39,8 @@ trait MiniCrudModel foreach ($data as &$input) { switch ($input['inputType']) { case InputType::text->value: - $input['text'] = clean($input['text']); - $input['text'] = FileStorageHelper::storeModelFilesFromHtml($this, $input['text']); + $input['value'] = clean($input['value']); + $input['value'] = FileStorageHelper::storeModelFilesFromHtml($this, $input['value']); break; } //end switch } //end foreach @@ -70,8 +70,15 @@ trait MiniCrudModel case InputType::text->value: $original = ToolboxHelper::getOriginal($this, 'data'); FileStorageHelper::removeOldModelFilesFromHtml( - $input['text'], - $original[$index]['text'] ?? '' + $input['value'], + $original[$index]['value'] ?? '' + ); + break; + case InputType::image->value: + $original = ToolboxHelper::getOriginal($this, 'data'); + FileStorageHelper::removeOldFiles( + [$original[$index]['value']], + [$input['value']] ); break; } //end switch @@ -85,11 +92,18 @@ trait MiniCrudModel */ public function minicrudDeleted(): void { - /** @var array */ - foreach ($this->data as $input) { + /** @var array $input */ + foreach ($this->data as $index => $input) { switch ($input['inputType']) { case InputType::text->value: - FileStorageHelper::removeModelFilesOfHtml($input['text']); + FileStorageHelper::removeModelFilesOfHtml($input['value']); + break; + case InputType::image->value: + $original = ToolboxHelper::getOriginal($this, 'data'); + FileStorageHelper::removeOldFiles( + [$original[$index]['value']], + [] + ); break; } //end switch } //end foreach diff --git a/database/migrations/2024_06_21_145915_qa_section.php b/database/migrations/2024_06_21_145915_qa_section.php index 626dfba..ad70038 100644 --- a/database/migrations/2024_06_21_145915_qa_section.php +++ b/database/migrations/2024_06_21_145915_qa_section.php @@ -4,9 +4,7 @@ use App\Enums\Sections\PageSectionEnum; use App\Lib\Helpers\FileStorageHelper; use App\Models\Section; use Illuminate\Database\Migrations\Migration; -use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Collection; -use Illuminate\Support\Facades\Schema; return new class extends Migration { diff --git a/database/migrations/2024_07_24_145556_alter_sections_hire_page.php b/database/migrations/2024_07_24_145556_alter_sections_hire_page.php new file mode 100644 index 0000000..7058639 --- /dev/null +++ b/database/migrations/2024_07_24_145556_alter_sections_hire_page.php @@ -0,0 +1,68 @@ +items = array_merge(array_slice($this->items, 0, $target + 1), [$value], array_slice($this->items, $target + 1)); + return; + } + + foreach ($this->items as $key => $old) { + $new[$key] = $old; + if ($key === $target && is_null($new_key)) { + $new[] = $value; + } elseif ($key === $target) { + $new[$new_key] = $value; + } + } + + $this->items = $new; + }); + + $hireSection = Section::query()->where('section', PageSectionEnum::hire_find)->first(); + if ($hireSection) { + $data = collect($hireSection->data); + $bloc = collect(Section::emptyBooleanBloc( + [], + "Afficher l'image", + true + ))->first(); + $data->insertAfter( + "bloc_contenu_n1_content", + $bloc, + "bloc_button_display_picture" + ); + $hireSection->data = $data->all(); + $hireSection->saveQuietly(); + } //end if + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + $hireSection = Section::query()->where('section', PageSectionEnum::hire_find)->first(); + if ($hireSection) { + $data = collect($hireSection->data); + $data->forget("bloc_button_display_picture"); + $hireSection->data = $data->all(); + $hireSection->saveQuietly(); + } //end if + } +}; diff --git a/database/migrations/2024_07_24_161616_alter_sections_commitments_page.php b/database/migrations/2024_07_24_161616_alter_sections_commitments_page.php new file mode 100644 index 0000000..640b66e --- /dev/null +++ b/database/migrations/2024_07_24_161616_alter_sections_commitments_page.php @@ -0,0 +1,67 @@ +items = array_merge(array_slice($this->items, 0, $target + 1), [$value], array_slice($this->items, $target + 1)); + return; + } + + foreach ($this->items as $key => $old) { + $new[$key] = $old; + if ($key === $target && is_null($new_key)) { + $new[] = $value; + } elseif ($key === $target) { + $new[$new_key] = $value; + } + } + + $this->items = $new; + }); + + $commitSection = Section::query()->where('section', PageSectionEnum::commit_commitments)->first(); + if ($commitSection) { + $data = collect($commitSection->data); + $bloc = collect(Section::emptyLinkNewTabBloc( + [], + "le rapport" + ))->first(); + $data->insertAfter( + "bloc_link", + $bloc, + "bloc_link_new_tab" + ); + $commitSection->data = $data->all(); + $commitSection->saveQuietly(); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + $commitSection = Section::query()->where('section', PageSectionEnum::commit_commitments)->first(); + if ($commitSection) { + $data = collect($commitSection->data); + $data->forget("bloc_link_new_tab"); + $commitSection->data = $data->all(); + $commitSection->saveQuietly(); + } + } +}; diff --git a/package-lock.json b/package-lock.json index b44a5ef..183ff2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@fortawesome/free-regular-svg-icons": "^6.5.1", "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/vue-fontawesome": "^3.0.5", - "@ldc-web/cookie-notice": "^4.0.1", + "@ldc-web/cookie-notice": "^6.0.3", "@sipec/vue3-tags-input": "^3.0.4", "@types/bootstrap": "^5.2.7", "@types/leaflet": "^1.9.8", @@ -1069,9 +1069,9 @@ "dev": true }, "node_modules/@ldc-web/cookie-notice": { - "version": "4.0.1", - "resolved": "https://lab.s-web.fr/api/v4/projects/50/packages/npm/@ldc-web/cookie-notice/-/@ldc-web/cookie-notice-4.0.1.tgz", - "integrity": "sha1-NvTFoKF7Ki/+3PDr9hmqjjTFuZE=", + "version": "6.0.3", + "resolved": "https://lab.s-web.fr/api/v4/projects/50/packages/npm/@ldc-web/cookie-notice/-/@ldc-web/cookie-notice-6.0.3.tgz", + "integrity": "sha1-mW2DD+8ipWkmvKhZ3m9h5wemAHI=", "dev": true }, "node_modules/@nodelib/fs.scandir": { diff --git a/package.json b/package.json index ee33602..21dad18 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@fortawesome/free-regular-svg-icons": "^6.5.1", "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/vue-fontawesome": "^3.0.5", - "@ldc-web/cookie-notice": "^4.0.1", + "@ldc-web/cookie-notice": "^6.0.3", "@sipec/vue3-tags-input": "^3.0.4", "@types/bootstrap": "^5.2.7", "@types/leaflet": "^1.9.8", diff --git a/resources/assets/images/banners/we_commit.png b/resources/assets/images/banners/we_commit.png new file mode 100644 index 0000000..9b5d046 Binary files /dev/null and b/resources/assets/images/banners/we_commit.png differ diff --git a/resources/assets/images/banners/we_listen.png b/resources/assets/images/banners/we_listen.png new file mode 100644 index 0000000..4edc70e Binary files /dev/null and b/resources/assets/images/banners/we_listen.png differ diff --git a/resources/assets/images/banners/we_move.jpg b/resources/assets/images/banners/we_move.jpg new file mode 100644 index 0000000..f0a0255 Binary files /dev/null and b/resources/assets/images/banners/we_move.jpg differ diff --git a/resources/assets/images/banners/we_produce.png b/resources/assets/images/banners/we_produce.png new file mode 100644 index 0000000..211ab87 Binary files /dev/null and b/resources/assets/images/banners/we_produce.png differ diff --git a/resources/assets/images/banners/we_unveil.jpeg b/resources/assets/images/banners/we_unveil.jpeg new file mode 100644 index 0000000..01203a6 Binary files /dev/null and b/resources/assets/images/banners/we_unveil.jpeg differ diff --git a/resources/assets/images/pictos/chicken.jpg b/resources/assets/images/pictos/chicken.jpg new file mode 100644 index 0000000..6273230 Binary files /dev/null and b/resources/assets/images/pictos/chicken.jpg differ diff --git a/resources/assets/images/pictos/duck.jpg b/resources/assets/images/pictos/duck.jpg new file mode 100644 index 0000000..c6f83f6 Binary files /dev/null and b/resources/assets/images/pictos/duck.jpg differ diff --git a/resources/assets/images/pictos/guinea_fowl.jpg b/resources/assets/images/pictos/guinea_fowl.jpg new file mode 100644 index 0000000..98edd3f Binary files /dev/null and b/resources/assets/images/pictos/guinea_fowl.jpg differ diff --git a/resources/assets/images/pictos/hen_and_rooster.jpg b/resources/assets/images/pictos/hen_and_rooster.jpg new file mode 100644 index 0000000..8652bf3 Binary files /dev/null and b/resources/assets/images/pictos/hen_and_rooster.jpg differ diff --git a/resources/assets/images/pictos/rabbit.jpg b/resources/assets/images/pictos/rabbit.jpg new file mode 100644 index 0000000..450cf8a Binary files /dev/null and b/resources/assets/images/pictos/rabbit.jpg differ diff --git a/resources/assets/images/pictos/turkey.jpg b/resources/assets/images/pictos/turkey.jpg new file mode 100644 index 0000000..da41a4f Binary files /dev/null and b/resources/assets/images/pictos/turkey.jpg differ diff --git a/resources/lang/fr/cookie-notice.php b/resources/lang/fr/cookie-notice.php index 65da0ef..de0866d 100644 --- a/resources/lang/fr/cookie-notice.php +++ b/resources/lang/fr/cookie-notice.php @@ -1,32 +1,27 @@ 'Personnaliser les cookies', 'button_close_cookies' => 'Fermer la fenêtre des cookies', - 'button_forbid' => 'Interdire', - 'button_allow' => 'Autoriser', + 'button_toggle_cookie' => 'Autoriser ou refuser', 'button_forbid_all' => 'Tout refuser', 'button_allow_all' => 'Tout accepter', 'button_forbid_all_title' => 'Refuser tous les cookies et fermer le panneau des cookies', 'button_allow_all_title' => 'Accepter tous les cookies et fermer le panneau des cookies', 'button_customize' => 'Personnaliser', - 'button_back' => 'Retour', + 'button_validate_and_close' => 'Valider et fermer', 'button_title_open_new_tab' => 'Ouvrir le lien dans un nouvel onglet', 'banner_title' => 'Le site internet :site_name utilise des cookies !', 'banner_text' => 'Nous utilisons des cookies pour nous assurer du bon fonctionnement de notre site et à des fins analytiques. Vous pouvez changer d’avis à tout moment en cliquant sur l’icône présente sur chaque page de notre site. En autorisant ces services tiers, vous acceptez le dépôt et la lecture de cookies et l’utilisation de technologies de suivi nécessaires à leur bon fonctionnement.', 'modal_title' => 'Fenêtre de gestion de cookies', - 'panel_title' => 'Panneau de gestion des cookies', 'panel_content' => 'Contenu du panneau des cookies', - 'panel_subtitle' => 'Le respect de votre vie privée est notre priorité', - 'panel_details' => 'Les fonctionnalités de ce site s’appuient sur des services proposés par des tiers. Si vous acceptez, ces tiers déposeront des cookies qui vous permettront de visualiser sur le site du contenu hébergé par ces tiers. Via ces cookies, ces tiers collecteront et utiliseront vos données de navigation pour des finalités qui leur sont propres, conformément à leur politique de confidentialité (lien ci-dessous). Cette page vous permet de donner ou de retirer votre consentement, soit globalement soit service par service.', 'picture_cookie_title' => 'Image d’un bon gros cookie', 'navigation_title' => 'Navigation du panneau des cookies', 'custom' => [ - 'frame' => 'Vous devez accepter les cookies pour visionner cette vidéo', 'analytics' => [ 'title' => 'Google Analytics', 'description' => 'Les services de mesure d’audience permettent de générer des statistiques de fréquentation utiles à l’amélioration du site.', @@ -46,7 +41,7 @@ return [ 'title' => 'reCAPTCHA', 'description' => 'Les cookies qui sont déposés via le recaptcha sur les formulaires ont pour finalité d’empêcher que ceux-ci ne soient soumis par des robots.', 'labelLink' => 'En apprendre plus', - 'warning' => 'Vous devez accepter les cookies pour envoyer le formulaire', + 'warning' => 'Vous devez accepter les cookies reCAPTCHA pour envoyer le formulaire', ] ] ]; diff --git a/resources/sass/fo/fo.scss b/resources/sass/fo/fo.scss index 6083b66..9be1d0d 100644 --- a/resources/sass/fo/fo.scss +++ b/resources/sass/fo/fo.scss @@ -24,3 +24,6 @@ @import "./pages/unveil"; @import "./pages/news"; @import "./pages/hire"; + +// * PARTIALS +@import "./partials/slider"; diff --git a/resources/sass/fo/pages/_site.scss b/resources/sass/fo/pages/_site.scss index a7b9a1b..7c55318 100644 --- a/resources/sass/fo/pages/_site.scss +++ b/resources/sass/fo/pages/_site.scss @@ -11,9 +11,12 @@ .swiper-sites-brands { clip-path: inset(-2rem -50vw 0 0); - .separator { - border-right: 1px solid; - border-right-color: #ddd; + .swiper-slide { + padding: 0 1rem; + + &:not(:last-child) { + border-right: 1px solid #ddd; + } } } } diff --git a/resources/sass/fo/pages/_unveil.scss b/resources/sass/fo/pages/_unveil.scss index 8f88998..646bbd0 100644 --- a/resources/sass/fo/pages/_unveil.scss +++ b/resources/sass/fo/pages/_unveil.scss @@ -86,14 +86,15 @@ } .picture { - z-index: 0; - top: 3rem; - left: -3rem; - max-height: 70%; - transform: rotate(-15deg); + width: auto; + max-height: 20rem; @include media-breakpoint-up(lg) { + z-index: 0; + top: 3rem; left: 2rem; + max-height: 70%; + transform: rotate(-15deg); } } diff --git a/resources/sass/fo/partials/_slider.scss b/resources/sass/fo/partials/_slider.scss new file mode 100644 index 0000000..0dd272a --- /dev/null +++ b/resources/sass/fo/partials/_slider.scss @@ -0,0 +1,17 @@ +.swiper-sites-map { + .swiper-slide { + .ck-content { + height: 3em; + } + + .site-title { + display: block; + overflow: hidden; + height: 2.5em; + max-height: 2.5em; + line-height: 1.2em; + text-overflow: ellipsis; + word-wrap: break-word; + } + } +} diff --git a/resources/ts/fo/base/common.ts b/resources/ts/fo/base/common.ts index f58de70..fba862e 100644 --- a/resources/ts/fo/base/common.ts +++ b/resources/ts/fo/base/common.ts @@ -136,7 +136,6 @@ document.addEventListener("DOMContentLoaded", function () { modules: [Navigation], grabCursor: true, slidesPerView: 1.2, - centeredSlides: true, spaceBetween: 10, navigation: { nextEl: ".testi-next", @@ -154,6 +153,8 @@ document.addEventListener("DOMContentLoaded", function () { 1200: { slidesPerView: 3, spaceBetween: 20, + initialSlide: 1, + centerInsufficientSlides: true, }, }, }, @@ -245,7 +246,8 @@ document.addEventListener("DOMContentLoaded", function () { "swiper-sites-brands": { modules: [Navigation, Keyboard], grabCursor: true, - slidesPerView: "auto", + slidesPerView: 2, + centerInsufficientSlides: true, keyboard: { enabled: true, }, @@ -347,6 +349,15 @@ document.addEventListener("DOMContentLoaded", function () { (swiper.autoplay.paused) ? swiper.autoplay.start() : swiper.autoplay.pause(); }); } + // Specific behaviour for sites.show. + if (swiper.el.id === "swiper-sites-map" && window.location.pathname.startsWith("/sites/")) { + for (const slide of swiper.slides) { + // Slide to the correct slide + if (slide.dataset.indextoslide) { + swiper.slideTo(Number(slide.dataset.indextoslide)); + } + } + } } // GoToTop Button diff --git a/resources/ts/fo/pages/commitments.ts b/resources/ts/fo/pages/commitments.ts index f9faf2d..d75a127 100644 --- a/resources/ts/fo/pages/commitments.ts +++ b/resources/ts/fo/pages/commitments.ts @@ -5,9 +5,11 @@ document.addEventListener("DOMContentLoaded", function () { } const button = document.querySelector(".commit-navigation .btn") as HTMLButtonElement; - const navWrapper = document.querySelector(".commit-navigation-wrapper") as HTMLDivElement; + const navWrapper = document.querySelectorAll(".commit-navigation-wrapper "); button.addEventListener("click", () => { - navWrapper.classList.toggle("show"); + navWrapper.forEach((element: Element) => { + element.classList.toggle("show"); + }); document.querySelectorAll(".commit-navigation .btn svg").forEach(icon => { icon.classList.toggle("d-none"); }); diff --git a/resources/views/bo/pages/news/form.blade.php b/resources/views/bo/pages/news/form.blade.php index cade8e8..628bfd5 100644 --- a/resources/views/bo/pages/news/form.blade.php +++ b/resources/views/bo/pages/news/form.blade.php @@ -318,12 +318,12 @@ @include('bo.partials.inputs.varchar-picture', [ 'id' => 'newsPictureThumbnail', 'name' => 'thumbnail', - 'width' => 300, - 'height' => 200, + 'width' => 660, + 'height' => 440, 'model' => $newsModel ?? null, 'helper' => __('crud.minicrud.dimensions_must_be', [ - 'widthpx' => '300px', - 'heightpx' => '200px', + 'widthpx' => '660px', + 'heightpx' => '440px', ]), 'required' => true, 'preview' => true, diff --git a/resources/views/fo/layouts/banner-slider.blade.php b/resources/views/fo/layouts/banner-slider.blade.php index 30c5f54..46dd05c 100644 --- a/resources/views/fo/layouts/banner-slider.blade.php +++ b/resources/views/fo/layouts/banner-slider.blade.php @@ -7,11 +7,6 @@ {{ $slideModel->picture_alt }}
- @if ($loop->first) - - @endif @if (!empty($slideModel->title))

{{ $slideModel->title }}

@endif @@ -24,7 +19,7 @@ @endif
@isset($displayArrow) - diff --git a/resources/views/fo/layouts/banner.blade.php b/resources/views/fo/layouts/banner.blade.php index ef20bba..e8d4b56 100644 --- a/resources/views/fo/layouts/banner.blade.php +++ b/resources/views/fo/layouts/banner.blade.php @@ -3,7 +3,7 @@ @empty($noOverlay)
@endempty -
+

{{ $h1 }}

@if (!empty($span)) {{ $span }} diff --git a/resources/views/fo/layouts/footer.blade.php b/resources/views/fo/layouts/footer.blade.php index 5933522..a9115cf 100644 --- a/resources/views/fo/layouts/footer.blade.php +++ b/resources/views/fo/layouts/footer.blade.php @@ -22,13 +22,13 @@
- {{ __('Youtube') }} - + {{ __('LinkedIn') }} diff --git a/resources/views/fo/layouts/nav-menu.blade.php b/resources/views/fo/layouts/nav-menu.blade.php index 5e20172..d8441d3 100644 --- a/resources/views/fo/layouts/nav-menu.blade.php +++ b/resources/views/fo/layouts/nav-menu.blade.php @@ -82,12 +82,12 @@
{{-- Socials --}}
- + {{ __('Youtube') }} {{ __('Retrouvez nous sur les réseaux sociaux') }} - + {{ __('LinkedIn') }}
diff --git a/resources/views/fo/pages/commitments.blade.php b/resources/views/fo/pages/commitments.blade.php index 202ef2c..ec67d38 100644 --- a/resources/views/fo/pages/commitments.blade.php +++ b/resources/views/fo/pages/commitments.blade.php @@ -7,7 +7,7 @@ @section('banner') @include('fo.layouts.banner', [ 'h1' => __($staticPageModel->title), - 'asset' => Vite::asset('resources/assets/images/banners/home_reworked.jpg'), + 'asset' => Vite::asset('resources/assets/images/banners/we_commit.png'), 'title' => __('Paysage d\'un champs de blé au soleil couchant avec une lisière en fond de tableau'), 'alt' => __('Image de fond'), 'displayArrow' => true, @@ -185,7 +185,7 @@ alt="{{ $slide->picture_alt }}">
@@ -329,10 +329,12 @@
-

{{ $feedSection->h2_title }}

- {{ __('Illustration d\'une femme et d\'un enfant mangeant un délicieux repas') }} +
+

{{ $feedSection->h2_title }}

+ {{ __('Illustration d\'une femme et d\'un enfant mangeant un délicieux repas') }} +
diff --git a/resources/views/fo/pages/hire.blade.php b/resources/views/fo/pages/hire.blade.php index d59c573..20dc77b 100644 --- a/resources/views/fo/pages/hire.blade.php +++ b/resources/views/fo/pages/hire.blade.php @@ -70,15 +70,16 @@ @foreach ($videoModels as $video)
-
+
@include('fo.modules.video-frame', [ 'type' => 'youtube', 'title' => __('Visionner la vidéo'), 'videoId' => $video->video_id, - 'picture' => Vite::asset( - 'resources/assets/images/others/background_video.png'), + 'picture' => sprintf( + 'https://img.youtube.com/vi/%s/maxresdefault.jpg', + $video->video_id), 'alt' => __('Video_about_who_we_are'), - 'linkNewTab' => false, + 'linkNewTab' => true, ])
@@ -100,7 +101,7 @@
+ href="https://www.youtube.com/@Volena-ldc" title="{{ __('Lien vers YouTube') }}" target="blank"> {{ __('Voir toutes les vidéos') }} @@ -259,12 +260,6 @@ {!! clean($paritySection->data['bloc_contenu_n2_content']['value']) !!}
-
-
- {{ __('Schéma des activités') }} -
-
-

{{ $findSection->data['bloc_string_titre_h3_de_la_section']['value'] }}

+

{{ $findSection->h2_title }}

+
+
+
+ {!! clean($findSection->text) !!} +
+
+
+

{{ $findSection->data['bloc_string_titre_h3_de_la_section']['value'] }}

@@ -303,13 +306,15 @@
-
-
- {{ $findSection->data['bloc_image']['alt'] }} + @if ($findSection->data['bloc_button_display_picture']['value']) +
+
+ {{ $findSection->data['bloc_image']['alt'] }} +
-
+ @endif
{{ __('Nos offres: ') }} diff --git a/resources/views/fo/pages/home.blade.php b/resources/views/fo/pages/home.blade.php index 4213ce6..4a1118f 100644 --- a/resources/views/fo/pages/home.blade.php +++ b/resources/views/fo/pages/home.blade.php @@ -61,14 +61,14 @@
@if ($missionSection->data['bloc_button_on_se_devoile']['value'])
- @endif
-
+
@include('fo.modules.video-frame', [ 'type' => 'youtube', 'title' => __('Visionner la vidéo'), @@ -147,9 +147,12 @@
@php $homeTeamData = [ - 'Culture d’entreprise inclusive et collaborative :' => 'Notre entreprise valorise la diversité des perspectives et favorise un environnement où chacun se sent écouté et respecté. Nous croyons en la force de la collaboration et encourageons l’innovation à tous les niveaux.', - 'Opportunités de développement professionnel :' => 'En nous rejoignant, vous aurez accès à des programmes de formation et de développement pour renforcer vos compétences et progresser dans votre carrière. Nous encourageons la croissance personnelle et professionnelle de nos employés.', - 'Implication dans des projets innovants :' => 'Nous travaillons sur des projets stimulants et innovants qui offre l’opportunité de faire une réelle différence pour les consommateurs. Rejoindre notre équipe vous permettra de contribuer à des initiatives passionnantes et impactantes.

Et en plus, on est sympas.', + 'Culture d’entreprise inclusive et collaborative :' => + 'Notre entreprise valorise la diversité des perspectives et favorise un environnement où chacun se sent écouté et respecté. Nous croyons en la force de la collaboration et encourageons l’innovation à tous les niveaux.', + 'Opportunités de développement professionnel :' => + 'En nous rejoignant, vous aurez accès à des programmes de formation et de développement pour renforcer vos compétences et progresser dans votre carrière. Nous encourageons la croissance personnelle et professionnelle de nos employés.', + 'Implication dans des projets innovants :' => + 'Nous travaillons sur des projets stimulants et innovants qui offre l’opportunité de faire une réelle différence pour les consommateurs. Rejoindre notre équipe vous permettra de contribuer à des initiatives passionnantes et impactantes.

Et en plus, on est sympas.', ]; @endphp @foreach ($homeTeamData as $title => $text) @@ -255,7 +258,7 @@ {{-- STRIP --}} @if ($stripModels->isNotEmpty()) -
+
@foreach ($stripModels as $stripModel) @include('fo.partials.strips.strip-item') diff --git a/resources/views/fo/pages/listen.blade.php b/resources/views/fo/pages/listen.blade.php index 258aa20..450ba48 100644 --- a/resources/views/fo/pages/listen.blade.php +++ b/resources/views/fo/pages/listen.blade.php @@ -7,7 +7,7 @@ @section('banner') @include('fo.layouts.banner', [ 'h1' => __($staticPageModel->title), - 'asset' => Vite::asset('resources/assets/images/banners/home_reworked.jpg'), + 'asset' => Vite::asset('resources/assets/images/banners/we_listen.png'), 'title' => __('Paysage d\'un champs de blé au soleil couchant avec une lisière en fond de tableau'), 'alt' => __('Image de fond'), 'displayArrow' => true, @@ -21,27 +21,19 @@ {{ __('Je suis candidat') }} - - {{ __('Recrutement') }} -
-
+ {{--

{{ $staticPageModel->title }}

-
+
--}} -
+
@if ($staticPageModel->content)
{!! clean($staticPageModel->content) !!} @@ -52,14 +44,27 @@
+
+ enctype="multipart/form-data" inert> @method('POST') @csrf
-
+
@@ -67,7 +72,7 @@
{{ $message }}
@endforeach
-
+
@@ -76,7 +81,7 @@
{{ $message }}
@endforeach
-
+
@@ -85,7 +90,7 @@
{{ $message }}
@endforeach
-
+
@@ -95,7 +100,7 @@ @endforeach
- @foreach ($errors->get('phone') as $message) @@ -106,7 +111,7 @@
-
+
-
+
@@ -158,7 +163,7 @@
-
+
@@ -273,7 +248,14 @@ @push('scripts') @endpush diff --git a/resources/views/fo/pages/news/index.blade.php b/resources/views/fo/pages/news/index.blade.php index df429b2..d487f32 100644 --- a/resources/views/fo/pages/news/index.blade.php +++ b/resources/views/fo/pages/news/index.blade.php @@ -7,7 +7,7 @@ @section('banner') @include('fo.layouts.banner', [ 'h1' => __($staticPageModel->title), - 'asset' => Vite::asset('resources/assets/images/banners/alternative_banner_reworked.jpg'), + 'asset' => Vite::asset('resources/assets/images/banners/we_move.jpg'), 'title' => __('Paysage d\'un champs de blé au soleil couchant avec une lisière en fond de tableau'), 'alt' => __('Image de fond'), 'displayArrow' => true, diff --git a/resources/views/fo/pages/produce/show.blade.php b/resources/views/fo/pages/produce/show.blade.php index 377e2d8..4ebe4b8 100644 --- a/resources/views/fo/pages/produce/show.blade.php +++ b/resources/views/fo/pages/produce/show.blade.php @@ -7,7 +7,7 @@ @section('banner') @include('fo.layouts.banner', [ 'h1' => __($staticPageModel->title), - 'asset' => Vite::asset('resources/assets/images/banners/home_reworked.jpg'), + 'asset' => Vite::asset('resources/assets/images/banners/we_produce.png'), 'title' => __('Paysage d\'un champs de blé au soleil couchant avec une lisière en fond de tableau'), 'alt' => __('Image de fond'), 'displayArrow' => true, @@ -41,7 +41,7 @@
{{-- GMS --}} -
+ {{--

{{ $gmsSection->h2_title }}

@@ -50,21 +50,21 @@
{!! clean($gmsSection->text) !!}
-
+
--}} {{-- PART 1 --}} - @include('fo.pages.produce.banner-elements', [ + {{-- @include('fo.pages.produce.banner-elements', [ 'partName' => 'de_la_partie1', 'data' => $gmsSection->data, 'itemMax' => 3, - ]) + ]) --}} {{-- PART 2 --}} - @include('fo.pages.produce.banner-elements', [ + {{-- @include('fo.pages.produce.banner-elements', [ 'partName' => 'de_la_partie2', 'data' => $gmsSection->data, 'itemMax' => 3, - ]) + ]) --}} {{-- PART 3 --}} - @include('fo.pages.produce.banner-elements', [ + {{-- @include('fo.pages.produce.banner-elements', [ 'partName' => 'de_la_partie3', 'data' => $gmsSection->data, 'itemMax' => 1, @@ -72,15 +72,15 @@
- + --}} {{-- RHD --}} -
+ {{--

{{ $rhdSection->h2_title }}

-
+
--}} {{-- PART 1 --}} - @include('fo.pages.produce.banner-elements', [ + {{-- @include('fo.pages.produce.banner-elements', [ 'partName' => 'de_la_partie1', 'data' => $rhdSection->data, 'itemMax' => 10, @@ -92,9 +92,9 @@
-
+
--}} {{-- PART 2 --}} -
+ {{--

{{ __('le saviez-vous ?') }}

@@ -116,9 +116,9 @@
-
+
--}} {{-- EXPORT --}} -
+ {{--

{{ $exportSection->h2_title }}

@@ -131,25 +131,25 @@
- + --}} {{-- QUALITY --}} -
+ {{--
--}}

{{ $qualitySection->h2_title }}

+ {{-- @include('fo.pages.produce.banner-elements', [ + 'partName' => 'de_la_partie1', + 'data' => $qualitySection->data, + 'itemMax' => 1, + ])
{!! clean($qualitySection->text) !!}
@if ($qualitySection->data['bloc_button__on_vous_explique_comment_lire_cetteetiquette']['value']) {{ __('On vous explique comment lire cette étiquette') }} - @endif + @endif --}}
- @include('fo.pages.produce.banner-elements', [ - 'partName' => 'de_la_partie1', - 'data' => $qualitySection->data, - 'itemMax' => 1, - ])
{!! clean($qualitySection->data['bloc_text_de_la_partie2_content']['value']) !!}
@@ -193,5 +193,5 @@
-
+ {{--
--}} @endsection diff --git a/resources/views/fo/pages/site.blade.php b/resources/views/fo/pages/site.blade.php index 8ef5e3d..aa78bc4 100644 --- a/resources/views/fo/pages/site.blade.php +++ b/resources/views/fo/pages/site.blade.php @@ -14,7 +14,7 @@
-
-
+
+

{{ $siteModel->employees }} {{ __('personnes') }}

-
- -

+

+ @foreach ($siteModel->pictos as $picto) + @php $enum = \App\Enums\Sites\SpeciesEnum::make($picto) @endphp + {{ $enum->alt() }} + @endforeach +

{{ implode( ', ', collect($siteModel->pictos)->map(function ($picto) { @@ -232,16 +236,12 @@ @foreach ($siteModel->logos as $logo)

-
-
+
+
{{ $logo->picture_alt }}
-
-

{{ $logo->label }}

-
-
@endforeach diff --git a/resources/views/fo/pages/unveil.blade.php b/resources/views/fo/pages/unveil.blade.php index 560747c..5e06db6 100644 --- a/resources/views/fo/pages/unveil.blade.php +++ b/resources/views/fo/pages/unveil.blade.php @@ -7,7 +7,7 @@ @section('banner') @include('fo.layouts.banner', [ 'h1' => __($staticPageModel->title), - 'asset' => Vite::asset('resources/assets/images/banners/home_reworked.jpg'), + 'asset' => Vite::asset('resources/assets/images/banners/we_unveil.jpeg'), 'title' => __('Paysage d\'un champs de blé au soleil couchant avec une lisière en fond de tableau'), 'alt' => __('Image de fond'), 'displayArrow' => true, @@ -60,6 +60,15 @@ ])
+
+
+
+
+ {!! clean($keySection->text) !!} +
+
+
+
{{-- MISSIONS --}}
@@ -184,18 +193,26 @@