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 @@
+
+
-
+ @if ($findSection->data['bloc_button_display_picture']['value'])
+