Merge branch 'issue-65' into 'migrate-front-files'
feat: ✨ all the contact form with enums are done
See merge request ldc-web/projets/ldc!47
This commit is contained in:
commit
65a107bec7
35 changed files with 1864 additions and 401 deletions
28
app/Enums/Contact/BreedType.php
Normal file
28
app/Enums/Contact/BreedType.php
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
namespace App\Enums\Contact;
|
||||
|
||||
use Uwil\LaravelCommon\Traits\Enums\BaseEnum;
|
||||
|
||||
enum BreedType: int
|
||||
{
|
||||
use BaseEnum;
|
||||
|
||||
case chicken = 1;
|
||||
case duck = 2;
|
||||
case chickenEggs = 3;
|
||||
case other = 4;
|
||||
|
||||
/**
|
||||
* Optionnal labels definition.
|
||||
*
|
||||
* @phpstan-ignore-next-line
|
||||
*/
|
||||
private const LABELS = [
|
||||
self::chicken->name => 'enums.breedType.chicken',
|
||||
self::duck->name => 'enums.breedType.duck',
|
||||
self::chickenEggs->name => 'enums.breedType.chickenEggs',
|
||||
self::other->name => 'enums.breedType.other'
|
||||
];
|
||||
|
||||
}
|
||||
224
app/Enums/Contact/ContactFormType.php
Normal file
224
app/Enums/Contact/ContactFormType.php
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
<?php
|
||||
|
||||
namespace App\Enums\Contact;
|
||||
|
||||
use Uwil\LaravelCommon\Traits\Enums\BaseEnum;
|
||||
|
||||
enum ContactFormType: int
|
||||
{
|
||||
use BaseEnum;
|
||||
|
||||
case collaborator = 1;
|
||||
case breeder = 2;
|
||||
case professional = 3;
|
||||
case restauration = 4;
|
||||
case export = 5;
|
||||
case finance = 6;
|
||||
case commitments = 7;
|
||||
case product = 8;
|
||||
case info = 9;
|
||||
case press = 10;
|
||||
|
||||
|
||||
/**
|
||||
* Optionnal SUBTYPES definition.
|
||||
*
|
||||
* @phpstan-ignore-next-line
|
||||
*/
|
||||
private const SUBTYPES = [
|
||||
self::professional->name => [
|
||||
self::restauration,
|
||||
self::export,
|
||||
],
|
||||
self::collaborator->name => [],
|
||||
self::breeder->name => [],
|
||||
self::restauration->name => [],
|
||||
self::export->name => [],
|
||||
self::finance->name => [],
|
||||
self::commitments->name => [],
|
||||
self::product->name => [],
|
||||
self::info->name => [],
|
||||
self::press->name => [],
|
||||
];
|
||||
|
||||
/**
|
||||
* Get Class
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function isSubtype(): bool
|
||||
{
|
||||
foreach (self::SUBTYPES as $subtypes) {
|
||||
if (in_array($this, $subtypes, true)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Optionnal TOPLEVELS definition.
|
||||
*
|
||||
* @phpstan-ignore-next-line
|
||||
*/
|
||||
private const TOPLEVELS = [
|
||||
self::professional->name => true,
|
||||
self::collaborator->name => true,
|
||||
self::breeder->name => true,
|
||||
self::restauration->name => false,
|
||||
self::export->name => false,
|
||||
self::finance->name => true,
|
||||
self::commitments->name => true,
|
||||
self::product->name => true,
|
||||
self::info->name => true,
|
||||
self::press->name => true,
|
||||
];
|
||||
|
||||
/**
|
||||
* Get Class
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function topLevel(): ?string
|
||||
{
|
||||
return !empty(self::TOPLEVELS[$this->name]) ?
|
||||
self::TOPLEVELS[$this->name] : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Optionnal labels definition.
|
||||
*
|
||||
* @phpstan-ignore-next-line
|
||||
*/
|
||||
private const LABELS = [
|
||||
self::collaborator->name => 'enums.contactFormType.collaborator.label',
|
||||
self::breeder->name => 'enums.contactFormType.breeder.label',
|
||||
self::professional->name => 'enums.contactFormType.professional.label',
|
||||
self::restauration->name => 'enums.contactFormType.restauration.label',
|
||||
self::export->name => 'enums.contactFormType.export.label',
|
||||
self::finance->name => 'enums.contactFormType.finance.label',
|
||||
self::commitments->name => 'enums.contactFormType.commitments.label',
|
||||
self::product->name => 'enums.contactFormType.product.label',
|
||||
self::info->name => 'enums.contactFormType.info.label',
|
||||
self::press->name => 'enums.contactFormType.press.label',
|
||||
];
|
||||
|
||||
/**
|
||||
* Get the data-target
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function dataTarget(): string
|
||||
{
|
||||
return match ($this) {
|
||||
self::professional => 'askPro',
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the data-target
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function hasBlankTarget(): string
|
||||
{
|
||||
$locale = "fr"; #FIXME: récupérer la vraie locale
|
||||
|
||||
return match (true) {
|
||||
$this === self::restauration => $locale === "en" ? true : false,
|
||||
default => false,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the subtitle
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function subtitle(): string
|
||||
{
|
||||
return match (true) {
|
||||
$this === self::restauration => __('enums.contactFormType.' . $this->name . '.subtitle'),
|
||||
default => __('enums.contactFormType.' . $this->name . '.label'),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the slug for each type
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function slug(): string|null
|
||||
{
|
||||
return match ($this) {
|
||||
self::collaborator => __('enums.contactFormType.collaborator.slug'),
|
||||
self::breeder => __('enums.contactFormType.breeder.slug'),
|
||||
self::professional => null,
|
||||
self::restauration => __('enums.contactFormType.restauration.slug'),
|
||||
self::export => __('enums.contactFormType.export.slug'),
|
||||
self::finance => __('enums.contactFormType.finance.slug'),
|
||||
self::commitments => __('enums.contactFormType.commitments.slug'),
|
||||
self::product => __('enums.contactFormType.product.slug'),
|
||||
self::info => __('enums.contactFormType.info.slug'),
|
||||
self::press => null,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the route
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function route()
|
||||
{
|
||||
$commonRoutes = [
|
||||
self::collaborator,
|
||||
self::breeder,
|
||||
self::export,
|
||||
self::finance,
|
||||
self::commitments,
|
||||
self::product,
|
||||
self::info,
|
||||
|
||||
];
|
||||
$locale = "fr"; #FIXME: récupérer la vraie locale
|
||||
return match (true) {
|
||||
in_array($this, $commonRoutes, true) => route('front.contact.show', ['slug' => $this->slug()]),
|
||||
$this === self::professional => null,
|
||||
$this === self::press => route('front.espace-presse') . '#page-press-form',
|
||||
$this === self::restauration => $locale === "fr" ? route('front.contact.show', ['slug' => $this->slug()]) : 'https://www.legauloisprofessionnel.fr/contactez-nous',
|
||||
default => null,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the slug for each type
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function seo()
|
||||
{
|
||||
$commonRoutes = [
|
||||
self::collaborator,
|
||||
self::breeder,
|
||||
self::export,
|
||||
self::finance,
|
||||
self::commitments,
|
||||
self::professional,
|
||||
self::product,
|
||||
self::info,
|
||||
self::press,
|
||||
self::restauration
|
||||
];
|
||||
return match (true) {
|
||||
in_array($this, $commonRoutes, true) => [
|
||||
'title' => __('enums.contactFormType.' . $this->name . '.seo.title'),
|
||||
'description' => __('enums.contactFormType.' . $this->name . '.seo.description'),
|
||||
],
|
||||
default => [],
|
||||
};
|
||||
}
|
||||
}
|
||||
30
app/Enums/Contact/CustomerAskingType.php
Normal file
30
app/Enums/Contact/CustomerAskingType.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace App\Enums\Contact;
|
||||
|
||||
use Uwil\LaravelCommon\Traits\Enums\BaseEnum;
|
||||
|
||||
enum CustomerAskingType: int
|
||||
{
|
||||
use BaseEnum;
|
||||
|
||||
case collectiveRestauration = 1;
|
||||
case commercialRestauration = 2;
|
||||
case snaking = 3;
|
||||
case gastronomy = 4;
|
||||
case other = 5;
|
||||
|
||||
/**
|
||||
* Optionnal labels definition.
|
||||
*
|
||||
* @phpstan-ignore-next-line
|
||||
*/
|
||||
private const LABELS = [
|
||||
self::collectiveRestauration->name => 'enums.customerAskingType.collectiveRestauration',
|
||||
self::commercialRestauration->name => 'enums.customerAskingType.commercialRestauration',
|
||||
self::snaking->name => 'enums.customerAskingType.snaking',
|
||||
self::gastronomy->name => 'enums.customerAskingType.gastronomy',
|
||||
self::other->name => 'enums.customerAskingType.other',
|
||||
];
|
||||
|
||||
}
|
||||
30
app/Enums/Contact/PressType.php
Normal file
30
app/Enums/Contact/PressType.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace App\Enums\Contact;
|
||||
|
||||
use Uwil\LaravelCommon\Traits\Enums\BaseEnum;
|
||||
|
||||
enum PressType: int
|
||||
{
|
||||
use BaseEnum;
|
||||
|
||||
case groupLogo = 1;
|
||||
case companyLogo = 2;
|
||||
case brandLogo = 3;
|
||||
case photo = 4;
|
||||
case other = 5;
|
||||
|
||||
/**
|
||||
* Optionnal labels definition.
|
||||
*
|
||||
* @phpstan-ignore-next-line
|
||||
*/
|
||||
private const LABELS = [
|
||||
self::groupLogo->name => 'enums.pressType.groupLogo',
|
||||
self::companyLogo->name => 'enums.pressType.companyLogo',
|
||||
self::brandLogo->name => 'enums.pressType.brandLogo',
|
||||
self::photo->name => 'enums.pressType.photo',
|
||||
self::other->name => 'enums.pressType.other'
|
||||
];
|
||||
|
||||
}
|
||||
221
app/Enums/Department.php
Normal file
221
app/Enums/Department.php
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
<?php
|
||||
|
||||
namespace App\Enums;
|
||||
|
||||
use Uwil\LaravelCommon\Traits\Enums\BaseEnum;
|
||||
|
||||
enum Department: string
|
||||
{
|
||||
use BaseEnum;
|
||||
|
||||
case ain = '01';
|
||||
case aisne = '02';
|
||||
case allier = '03';
|
||||
case alpesdehauteprovence = '04';
|
||||
case hautesalpes = '05';
|
||||
case alpesmaritimes = '06';
|
||||
case ardeche = '07';
|
||||
case ardennes = '08';
|
||||
case ariege = '09';
|
||||
case aube = '10';
|
||||
case aude = '11';
|
||||
case aveyron = '12';
|
||||
case bouchesdurhone = '13';
|
||||
case calvados = '14';
|
||||
case cantal = '15';
|
||||
case charente = '16';
|
||||
case charentemaritime = '17';
|
||||
case cher = '18';
|
||||
case correze = '19';
|
||||
case corsedusud = '2A';
|
||||
case hautecorse = '2B';
|
||||
case cotedor = '21';
|
||||
case cotesdarmor = '22';
|
||||
case creuse = '23';
|
||||
case dordogne = '24';
|
||||
case doubs = '25';
|
||||
case drome = '26';
|
||||
case eure = '27';
|
||||
case eureetloir = '28';
|
||||
case finistere = '29';
|
||||
case gard = '30';
|
||||
case hautegaronne = '31';
|
||||
case gers = '32';
|
||||
case gironde = '33';
|
||||
case herault = '34';
|
||||
case illeetvilaine = '35';
|
||||
case indre = '36';
|
||||
case indreetloire = '37';
|
||||
case isere = '38';
|
||||
case jura = '39';
|
||||
case landes = '40';
|
||||
case loiretcher = '41';
|
||||
case loire = '42';
|
||||
case hauteloire = '43';
|
||||
case loireatlantique = '44';
|
||||
case loiret = '45';
|
||||
case lot = '46';
|
||||
case lotetgaronne = '47';
|
||||
case lozere = '48';
|
||||
case maineetloire = '49';
|
||||
case manche = '50';
|
||||
case marne = '51';
|
||||
case hautemarne = '52';
|
||||
case mayenne = '53';
|
||||
case meurtheetmoselle = '54';
|
||||
case meuse = '55';
|
||||
case morbihan = '56';
|
||||
case moselle = '57';
|
||||
case nievre = '58';
|
||||
case nord = '59';
|
||||
case oise = '60';
|
||||
case orne = '61';
|
||||
case pasdecalais = '62';
|
||||
case puydedome = '63';
|
||||
case pyreneesatlantiques = '64';
|
||||
case hautespyrenees = '65';
|
||||
case pyreneesorientales = '66';
|
||||
case basrhin = '67';
|
||||
case hautrhin = '68';
|
||||
case rhone = '69';
|
||||
case hautesaone = '70';
|
||||
case saoneetloire = '71';
|
||||
case sarthe = '72';
|
||||
case savoie = '73';
|
||||
case hautesavoie = '74';
|
||||
case paris = '75';
|
||||
case seinemaritime = '76';
|
||||
case seineetmarne = '77';
|
||||
case yvelines = '78';
|
||||
case deuxsevres = '79';
|
||||
case somme = '80';
|
||||
case tarn = '81';
|
||||
case tarnetgaronne = '82';
|
||||
case var = '83';
|
||||
case vaucluse = '84';
|
||||
case vendee = '85';
|
||||
case vienne = '86';
|
||||
case hautevienne = '87';
|
||||
case vosges = '88';
|
||||
case yonne = '89';
|
||||
case territoiredebelfort = '90';
|
||||
case essonne = '91';
|
||||
case hautsdeseine = '92';
|
||||
case seinesaintdenis = '93';
|
||||
case valdemarne = '94';
|
||||
case valdoise = '95';
|
||||
case guadeloupe = '971';
|
||||
case martinique = '972';
|
||||
case guyane = '973';
|
||||
case lareunion = '974';
|
||||
case mayotte = '976';
|
||||
|
||||
/**
|
||||
* Optionnal labels definition.
|
||||
*
|
||||
* @phpstan-ignore-next-line
|
||||
*/
|
||||
private const LABELS = [
|
||||
self::ain->name => 'Ain',
|
||||
self::aisne->name => 'Aisne',
|
||||
self::allier->name => 'Allier',
|
||||
self::alpesdehauteprovence->name => 'Alpes-de-Haute-Provence',
|
||||
self::hautesalpes->name => 'Hautes-alpes',
|
||||
self::alpesmaritimes->name => 'Alpes-maritimes',
|
||||
self::ardeche->name => 'Ardèche',
|
||||
self::ardennes->name => 'Ardennes',
|
||||
self::ariege->name => 'Ariège',
|
||||
self::aube->name => 'Aube',
|
||||
self::aude->name => 'Aude',
|
||||
self::aveyron->name => 'Aveyron',
|
||||
self::bouchesdurhone->name => 'Bouches-du-Rhône',
|
||||
self::calvados->name => 'Calvados',
|
||||
self::cantal->name => 'Cantal',
|
||||
self::charente->name => 'Charente',
|
||||
self::charentemaritime->name => 'Charente-maritime',
|
||||
self::cher->name => 'Cher',
|
||||
self::correze->name => 'Corrèze',
|
||||
self::corsedusud->name => 'Corse-du-sud',
|
||||
self::hautecorse->name => 'Haute-Corse',
|
||||
self::cotedor->name => 'Côte-d\'Or',
|
||||
self::cotesdarmor->name => 'Côtes-d\'Armor',
|
||||
self::creuse->name => 'Creuse',
|
||||
self::dordogne->name => 'Dordogne',
|
||||
self::doubs->name => 'Doubs',
|
||||
self::drome->name => 'Drôme',
|
||||
self::eure->name => 'Eure',
|
||||
self::eureetloir->name => 'Eure-et-loir',
|
||||
self::finistere->name => 'Finistère',
|
||||
self::gard->name => 'Gard',
|
||||
self::hautegaronne->name => 'Haute-garonne',
|
||||
self::gers->name => 'Gers',
|
||||
self::gironde->name => 'Gironde',
|
||||
self::herault->name => 'Hérault',
|
||||
self::illeetvilaine->name => 'Ille-et-vilaine',
|
||||
self::indre->name => 'Indre',
|
||||
self::indreetloire->name => 'Indre-et-loire',
|
||||
self::isere->name => 'Isère',
|
||||
self::jura->name => 'Jura',
|
||||
self::landes->name => 'Landes',
|
||||
self::loiretcher->name => 'Loir-et-cher',
|
||||
self::loire->name => 'Loire',
|
||||
self::hauteloire->name => 'Haute-loire',
|
||||
self::loireatlantique->name => 'Loire-atlantique',
|
||||
self::loiret->name => 'Loiret',
|
||||
self::lot->name => 'Lot',
|
||||
self::lotetgaronne->name => 'Lot-et-garonne',
|
||||
self::lozere->name => 'Lozère',
|
||||
self::maineetloire->name => 'Maine-et-loire',
|
||||
self::manche->name => 'Manche',
|
||||
self::marne->name => 'Marne',
|
||||
self::hautemarne->name => 'Haute-marne',
|
||||
self::mayenne->name => 'Mayenne',
|
||||
self::meurtheetmoselle->name => 'Meurthe-et-moselle',
|
||||
self::meuse->name => 'Meuse',
|
||||
self::morbihan->name => 'Morbihan',
|
||||
self::moselle->name => 'Moselle',
|
||||
self::nievre->name => 'Nièvre',
|
||||
self::nord->name => 'Nord',
|
||||
self::oise->name => 'Oise',
|
||||
self::orne->name => 'Orne',
|
||||
self::pasdecalais->name => 'Pas-de-calais',
|
||||
self::puydedome->name => 'Puy-de-dôme',
|
||||
self::pyreneesatlantiques->name => 'Pyrénées-atlantiques',
|
||||
self::hautespyrenees->name => 'Hautes-Pyrénées',
|
||||
self::pyreneesorientales->name => 'Pyrénées-orientales',
|
||||
self::basrhin->name => 'Bas-rhin',
|
||||
self::hautrhin->name => 'Haut-rhin',
|
||||
self::rhone->name => 'Rhône',
|
||||
self::hautesaone->name => 'Haute-saône',
|
||||
self::saoneetloire->name => 'Saône-et-loire',
|
||||
self::sarthe->name => 'Sarthe',
|
||||
self::savoie->name => 'Savoie',
|
||||
self::hautesavoie->name => 'Haute-savoie',
|
||||
self::paris->name => 'Paris',
|
||||
self::seinemaritime->name => 'Seine-maritime',
|
||||
self::seineetmarne->name => 'Seine-et-marne',
|
||||
self::yvelines->name => 'Yvelines',
|
||||
self::deuxsevres->name => 'Deux-sèvres',
|
||||
self::somme->name => 'Somme',
|
||||
self::tarn->name => 'Tarn',
|
||||
self::tarnetgaronne->name => 'Tarn-et-Garonne',
|
||||
self::var->name => 'Var',
|
||||
self::vaucluse->name => 'Vaucluse',
|
||||
self::vendee->name => 'Vendée',
|
||||
self::vienne->name => 'Vienne',
|
||||
self::hautevienne->name => 'Haute-vienne',
|
||||
self::vosges->name => 'Vosges',
|
||||
self::yonne->name => 'Yonne',
|
||||
self::territoiredebelfort->name => 'Territoire de belfort',
|
||||
self::essonne->name => 'Essonne',
|
||||
self::hautsdeseine->name => 'Hauts-de-seine',
|
||||
self::seinesaintdenis->name => 'Seine-Saint-Denis',
|
||||
self::valdemarne->name => 'Val-de-marne',
|
||||
self::valdoise->name => 'Val-d\'Oise',
|
||||
self::guadeloupe->name => 'Guadeloupe',
|
||||
self::martinique->name => 'Martinique',
|
||||
self::guyane->name => 'Guyane',
|
||||
self::lareunion->name => 'La réunion',
|
||||
self::mayotte->name => 'Mayotte'
|
||||
];
|
||||
}
|
||||
28
app/Http/Controllers/Front/ContactController.php
Normal file
28
app/Http/Controllers/Front/ContactController.php
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Front;
|
||||
|
||||
use App\Enums\Contact\ContactFormType;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ContactController
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$types = ContactFormType::toArray();
|
||||
return view('front.pages.contact.index', compact('types'));
|
||||
}
|
||||
|
||||
public function show(string $slug)
|
||||
{
|
||||
$enumType = collect(ContactFormType::all())->first(function ($enum) use ($slug) {
|
||||
return $enum->slug() === $slug;
|
||||
});
|
||||
|
||||
if (!$enumType) {
|
||||
return redirect()->route('front.contact.index');
|
||||
}
|
||||
|
||||
return view('front.pages.contact.show', compact('enumType'));
|
||||
}
|
||||
}
|
||||
|
|
@ -18,6 +18,7 @@ return Application::configure(basePath: dirname(__DIR__))
|
|||
\App\Http\Middleware\HandleInertiaRequests::class,
|
||||
\Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets::class,
|
||||
\Uwil\LaravelBackend\Middlewares\LogoutUnpublishedUsers::class,
|
||||
\Uwil\LaravelCommon\Middlewares\SecureHeaders::class
|
||||
]);
|
||||
$middleware->group('saml', [
|
||||
\Uwil\LaravelBackend\Middlewares\EncryptCookies::class,
|
||||
|
|
|
|||
|
|
@ -6,4 +6,63 @@ return [
|
|||
"admin" => "Admin",
|
||||
"visitor" => "Visitor",
|
||||
],
|
||||
'contactFormType' => [
|
||||
'collaborator' => [
|
||||
'label' => 'join us as an employee',
|
||||
'slug' => 'join-us-as-an-employee'
|
||||
],
|
||||
'breeder' => [
|
||||
'label' => 'join us as a farmer',
|
||||
'slug' => 'join us as a farmer'
|
||||
],
|
||||
'professional' => [
|
||||
'label' => 'a request as a professional'
|
||||
],
|
||||
'restauration' => [
|
||||
'label' => 'foodservice, Industry, Retailer France & Overseas',
|
||||
],
|
||||
'export' => [
|
||||
'label' => 'other countries / Export',
|
||||
'slug' => 'export'
|
||||
],
|
||||
'finance' => [
|
||||
'label' => 'finance',
|
||||
'slug' => 'finance-2' #FIXME: revoir le slug
|
||||
],
|
||||
'engagements' => [
|
||||
'label' => 'our commitments',
|
||||
'slug' => 'our-commitments-2' #FIXME: revoir le slug
|
||||
],
|
||||
'product' => [
|
||||
'label' => 'product information',
|
||||
'slug' => 'product-information'
|
||||
],
|
||||
'info' => [
|
||||
'label' => 'other general information',
|
||||
'slug' => 'other-general-information'
|
||||
],
|
||||
'press' => [
|
||||
'label' => 'a press request'
|
||||
],
|
||||
],
|
||||
'breedType' => [
|
||||
'chicken' => 'Chickens / turkeys / guinea fowl',
|
||||
'duck' => 'Ducks',
|
||||
'chickenEggs' => 'Laying hens',
|
||||
'other' => 'Other'
|
||||
],
|
||||
'customerAskingType' => [
|
||||
'collectiveRestauration' => 'Mass catering',
|
||||
'commercialRestauration' => 'Commercial catering',
|
||||
'snaking' => 'Snacking',
|
||||
'gastronomy' => 'Gastronomy',
|
||||
'other' => 'Other',
|
||||
],
|
||||
'pressType' => [
|
||||
'groupLogo' => 'Group logo request',
|
||||
'companyLogo' => 'Subsidiary/company logo request',
|
||||
'brandLogo' => 'Brand logo request',
|
||||
'photo' => 'Photo request',
|
||||
'other' => 'Other'
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,14 +1,98 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
"multiple_choice" => 'multiple choice',
|
||||
"required_field" => 'compulsory fields',
|
||||
"go_to_the_back_end" => "access the back-office",
|
||||
"homepage" => "LDC",
|
||||
"nos-engagements" => "our commitments",
|
||||
"nous-connaitre" => "know us",
|
||||
"nos-metiers" => "our jobs",
|
||||
"nous-rejoindre" => "careers",
|
||||
"nos-marques" => "our brands",
|
||||
"elever-durablement" => "sustainable farming",
|
||||
"mieux-vivre-ensemble" => "living and working together",
|
||||
"respecter-la-terre" => "respecting the nature",
|
||||
"bien-nourrir" => "providing healthy food",
|
||||
'search' => 'search'
|
||||
'search' => 'search',
|
||||
"actualites.index" => "news",
|
||||
"finance" => "finance",
|
||||
'espace-presse' => 'press space',
|
||||
|
||||
|
||||
'buttons' => [
|
||||
'send' => 'send',
|
||||
'back_to_contact' => 'return to choice of contact'
|
||||
],
|
||||
'contact' => [
|
||||
'you_want_job_offer' => 'Would you like to find out about our job offers, internships and apprenticeships, or would like to send us a spontaneous application? Click :',
|
||||
'if_other_subject_thanks_to' => 'If your request relates to a different matter, please telephone the HR department of the company in question.',
|
||||
'are_you_breeder_and_join_us' => 'Are you a poultry farmer or would you like to become one and join us? ',
|
||||
'describe_your_project' => 'Describe your project as precisely as possible so that we can guide your ask to the appropriate contact person. ',
|
||||
'info_personal_data' => 'The information collected from this form is processed by the Data Controller to respond to your contact request. To know your rights, you can consult',
|
||||
'confidentiality' => 'the Confidentiality Charter',
|
||||
'other_product_information' => 'Do you want information or have a comment about our products? Go directly to the website of the brand concerned (Contact or Consumer Service sections). If the brand or product does not have a website, please send your request by post to the address of the site mentioned on the packaging.',
|
||||
'inputs' => [
|
||||
'breedtype' => [
|
||||
'label' => 'Type of breeding desired'
|
||||
],
|
||||
'geo_zone' => [
|
||||
'label' => 'Geographic area of your project',
|
||||
'placeholder' => 'Drop-down list of departments'
|
||||
],
|
||||
'your_project' => [
|
||||
'label' => 'Your project',
|
||||
'placeholder' => 'Explain your project or request'
|
||||
],
|
||||
'message' => [
|
||||
'label' => 'Message',
|
||||
'placeholder' => 'Explain your project or request'
|
||||
],
|
||||
'customerAskingType' => [
|
||||
'label' => 'Type',
|
||||
'placeholder' => 'Dropdown list'
|
||||
],
|
||||
'company' => [
|
||||
'label' => 'Company',
|
||||
'placeholder' => 'Your company'
|
||||
],
|
||||
'object' => [
|
||||
'label' => 'Subject',
|
||||
'placeholder' => 'Select'
|
||||
]
|
||||
]
|
||||
],
|
||||
'inputs' => [
|
||||
'lastname' => [
|
||||
'label' => 'surname',
|
||||
'placeholder' => 'your surname'
|
||||
],
|
||||
'firstname' => [
|
||||
'label' => 'first name',
|
||||
'placeholder' => 'your first name'
|
||||
],
|
||||
'phone' => [
|
||||
'label' => 'telephone',
|
||||
'placeholder' => 'for example, 02 43 62 70 00'
|
||||
],
|
||||
'email' => [
|
||||
'label' => 'email address',
|
||||
'placeholder' => 'firstname.surname@mail.fr'
|
||||
],
|
||||
'country' => [
|
||||
'label' => 'Country',
|
||||
'placeholder' => 'Your country'
|
||||
],
|
||||
'town' => [
|
||||
'label' => 'Town',
|
||||
'placeholder' => 'Your town'
|
||||
],
|
||||
'postalcode' => [
|
||||
'label' => 'Postcode',
|
||||
'placeholder' => 'Your postcode'
|
||||
],
|
||||
'newsletter' => [
|
||||
'label' => 'I would like to subscribe to the newsletter'
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -6,4 +6,65 @@ return [
|
|||
"admin" => "Administrateur",
|
||||
"visitor" => "Visiteur",
|
||||
],
|
||||
'contactFormType' => [
|
||||
'collaborator' => [
|
||||
'label' => 'nous rejoindre en tant que collaborateur',
|
||||
'slug' => 'nous-rejoindre-en-tant-que-collaborateur'
|
||||
],
|
||||
'breeder' => [
|
||||
'label' => 'nous rejoindre en tant qu’éleveur',
|
||||
'slug' => 'nous-rejoindre-en-tant-queleveur'
|
||||
],
|
||||
'professional' => [
|
||||
'label' => 'une demande en tant que professionnel'
|
||||
],
|
||||
'restauration' => [
|
||||
'label' => 'restaurations, Distributeurs et Détaillants France',
|
||||
'subtitle' => 'une demande en tant que client / détaillant / distributeur',
|
||||
'slug' => 'une-demande-en-tant-que-client-detaillant-distributeur'
|
||||
],
|
||||
'export' => [
|
||||
'label' => 'l’export',
|
||||
'slug' => 'lexport'
|
||||
],
|
||||
'finance' => [
|
||||
'label' => 'la finance',
|
||||
'slug' => 'la-finance'
|
||||
],
|
||||
'commitments' => [
|
||||
'label' => 'nos engagements',
|
||||
'slug' => 'nos-engagements'
|
||||
],
|
||||
'product' => [
|
||||
'label' => 'une information produit',
|
||||
'slug' => 'une-information-produit'
|
||||
],
|
||||
'info' => [
|
||||
'label' => 'une autre information générale',
|
||||
'slug' => 'une-autre-information-generale'
|
||||
],
|
||||
'press' => [
|
||||
'label' => 'une demande presse'
|
||||
],
|
||||
],
|
||||
'breedType' => [
|
||||
'chicken' => 'Poulets/dindes/pintades',
|
||||
'duck' => 'Canards',
|
||||
'chickenEggs' => 'Poules pondeuses',
|
||||
'other' => 'Autre'
|
||||
],
|
||||
'customerAskingType' => [
|
||||
'collectiveRestauration' => 'Restauration collective',
|
||||
'commercialRestauration' => 'Restauration commerciale',
|
||||
'snaking' => 'Snacking',
|
||||
'gastronomy' => 'Gastronomie',
|
||||
'other' => 'Autres',
|
||||
],
|
||||
'pressType' => [
|
||||
'groupLogo' => 'Demander le logo du Groupe',
|
||||
'companyLogo' => 'Demander un logo de filiale/société',
|
||||
'brandLogo' => 'Demander un logo de marque',
|
||||
'photo' => 'Demande de photos',
|
||||
'other' => 'Autres'
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
"multiple_choice" => 'choix multiple',
|
||||
"required_field" => 'champs obligatoires',
|
||||
"go_to_the_back_end" => "accéder au back-office",
|
||||
"homepage" => "LDC",
|
||||
"nos-engagements" => "nos engagements",
|
||||
|
|
@ -16,4 +18,79 @@ return [
|
|||
"finance" => "finance",
|
||||
'search' => 'rechercher',
|
||||
'espace-presse' => 'espace presse',
|
||||
'buttons' => [
|
||||
'send' => 'envoyer',
|
||||
'back_to_contact' => 'retour au choix de contact'
|
||||
],
|
||||
'contact' => [
|
||||
'you_want_job_offer' => 'Vous souhaitez consulter nos offres d’emploi, de stage et d’alternance ; ou nous adresser une candidature spontanée ? Cliquez ici :',
|
||||
'if_other_subject_thanks_to' => 'Si votre demande concerne un autre sujet, merci de contacter par téléphone le service RH de la société concernée.',
|
||||
'are_you_breeder_and_join_us' => 'Vous êtes éleveur de volailles ou souhaitez le devenir, et nous rejoindre ? ',
|
||||
'describe_your_project' => 'Décrivez-nous votre projet le plus précisément possible afin que nous puissions orienter votre demande vers l’interlocuteur adéquat.',
|
||||
'info_personal_data' => 'Les informations recueillies à partir de ce formulaire sont traitées par le Responsable de Traitement pour donner suite à votre demande de contact. Pour connaître vos droits, vous pouvez consulter',
|
||||
'confidentiality' => 'la Charte de confidentialité',
|
||||
'other_product_information' => 'Vous souhaitez une information ou avez une remarque sur nos produits ? Dirigez-vous directement sur le site de la marque concernée (rubriques Contact ou Service Consommateurs). Si la marque ou le produit ne possède pas de site web, merci d’adresser votre demande par voie postale à l’adresse du site mentionnée sur l’emballage.',
|
||||
'inputs' => [
|
||||
'breedtype' => [
|
||||
'label' => 'Type d’élevage souhaité'
|
||||
],
|
||||
'geo_zone' => [
|
||||
'label' => 'Zone géographique de votre projet',
|
||||
'placeholder' => 'Liste déroulante de départements'
|
||||
],
|
||||
'your_project' => [
|
||||
'label' => 'Votre projet',
|
||||
'placeholder' => 'Détaillez ici votre projet et votre demande'
|
||||
],
|
||||
'message' => [
|
||||
'label' => 'Message',
|
||||
'placeholder' => 'Détaillez ici votre projet et votre demande'
|
||||
],
|
||||
'customerAskingType' => [
|
||||
'label' => 'Type',
|
||||
'placeholder' => 'Liste déroulante'
|
||||
],
|
||||
'company' => [
|
||||
'label' => 'Société',
|
||||
'placeholder' => 'Votre société'
|
||||
],
|
||||
'object' => [
|
||||
'label' => 'Objet de votre demande',
|
||||
'placeholder' => 'Sélectionnez'
|
||||
]
|
||||
]
|
||||
],
|
||||
'inputs' => [
|
||||
'lastname' => [
|
||||
'label' => 'nom',
|
||||
'placeholder' => 'votre Nom'
|
||||
],
|
||||
'firstname' => [
|
||||
'label' => 'prénom',
|
||||
'placeholder' => 'votre Prénom'
|
||||
],
|
||||
'phone' => [
|
||||
'label' => 'téléphone',
|
||||
'placeholder' => 'Par exemple, 02 43 62 70 00'
|
||||
],
|
||||
'email' => [
|
||||
'label' => 'Adresse Email',
|
||||
'placeholder' => 'Prenom.nom@mail.fr'
|
||||
],
|
||||
'country' => [
|
||||
'label' => 'Pays',
|
||||
'placeholder' => 'Votre pays'
|
||||
],
|
||||
'town' => [
|
||||
'label' => 'Ville',
|
||||
'placeholder' => 'Votre ville'
|
||||
],
|
||||
'postalcode' => [
|
||||
'label' => 'Code postal',
|
||||
'placeholder' => 'Votre code postal'
|
||||
],
|
||||
'newsletter' => [
|
||||
'label' => 'Je souhaite m’inscrire à la newsletter'
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
<div class="back-button-wrapper">
|
||||
<a class="back-button" href="{{ route('front.contact.index') }}" title="{{ ucfirst(__('front.buttons.back_to_contact')) }}">{{ ucfirst(__('front.buttons.back_to_contact')) }}
|
||||
<i class="btn__icon btn__icon_arrow-right"></i></a>
|
||||
</div>
|
||||
|
|
@ -1,3 +1,8 @@
|
|||
@php
|
||||
$type = isset($type) && $type ? $type : "link";
|
||||
@endphp
|
||||
|
||||
@if($type === "link")
|
||||
<a class="{{ isset($class) ? $class : 'engagements__btn'}} btn"
|
||||
href="{{ $url }}"
|
||||
title="{{ $title }}"
|
||||
|
|
@ -7,3 +12,11 @@ title="{{ $title }}"
|
|||
{{ $title }}
|
||||
<i class="btn__icon {{ $buttonIcon }}"></i>
|
||||
</a>
|
||||
@else
|
||||
<button class="{{ isset($class) ? $class : 'engagements__btn'}} btn"
|
||||
title="{{ $title }}" data-target="{{ isset($dataTarget) ? $dataTarget : ''}}"
|
||||
>
|
||||
{{ $title }}
|
||||
<i class="btn__icon {{ $buttonIcon }}"></i>
|
||||
</button>
|
||||
@endif
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
<div class="form__field">
|
||||
<div class="form__field-title">{{ $label }} {{ $required ? '*' : '' }} <span class="normal">({{ __('front.multiple_choice') }})</span></div>
|
||||
@foreach($options as $option)
|
||||
<label class="form__field-pseudolabel">
|
||||
<input type="checkbox" name="{{ $name }}" value="{{ $option['value'] }}" @if(isset($required)) required="true" @endif>
|
||||
<span class="form__field-pseudocircle">{{ $option['label'] }}</span>
|
||||
</label>
|
||||
@endforeach
|
||||
</div>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<div class="form__field">
|
||||
<div class="form__field-title">{{ $label }} {{ $required ? '*' : '' }}</div>
|
||||
<div class="geographic-checkboxes-block">
|
||||
<div class="geographic-checkboxes-result form__input"><span
|
||||
class="zones-wrapper">{{ $placeholder }}</span>
|
||||
</div>
|
||||
<div class="geographic-checkboxes-list">
|
||||
@foreach($options as $option)
|
||||
<label class="form__field-pseudolabel">
|
||||
<input type="checkbox" name="{{ $name }}" value="{{ $option['value'] }}" @if(isset($option['required'])) required="true" @endif>
|
||||
<span class="form__field-pseudosquare">{{ $option['label'] }}</span>
|
||||
</label>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<div class="form__field">
|
||||
<div class="form__field-title">{{ $label }} {{ isset($required) && $required ? '*' : '' }}</div>
|
||||
<input type="{{ isset($type) ? $type : 'text' }}" name="{{ $name }}" size="{{ isset($size) ? $size : '40'}}" class="form__input"
|
||||
placeholder="{{ $placeholder }}" autocomplete="{{ isset($autoComplete) ? $autoComplete : '' }}" @if(isset($required)) required="true" @endif>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<div class="form__field-title">{{ $label }} {{ $required ? '*' : '' }}</div>
|
||||
|
||||
<div class="form__field">
|
||||
<textarea name="{{ $name }}" cols="40" rows="10" class="form__input"
|
||||
placeholder="{{ $placeholder }}"
|
||||
@if(isset($required)) required="true" @endif
|
||||
></textarea>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<div class="form__row justify-content-center">
|
||||
<div class="form__field ">
|
||||
<span class="cn-cookie-activate" data-cookie-name="recaptcha">
|
||||
<span>
|
||||
<span>{{ __('cookie-notice.custom.recaptcha.warning') }}</span>
|
||||
<small> {{ __('Acceptez ce cookie pour utiliser les formulaires') }}</small>
|
||||
</span>
|
||||
<button type="button" id="recaptcha-accept" class="btn btn-red">{{ __('Autoriser') }}</button>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.getElementById("recaptcha-accept")?.addEventListener("click", function(e) {
|
||||
e.preventDefault();
|
||||
window.WebCookieNotice.acceptCookie("recaptcha");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<form id="contact-form" inert>
|
||||
{{ $slot }}
|
||||
</form>
|
||||
4
resources/views/components/front/pages/title.blade.php
Normal file
4
resources/views/components/front/pages/title.blade.php
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<h1 class="{{ isset($h1Class) ? $h1Class : 'page-contacts__title'}} title"><span class="title-text">{!! $title !!}</span></h1>
|
||||
@if (isset($subtitle))
|
||||
<h2 class="{{ isset($h2Class) ? $h2Class : 'contacts-page-subtitle'}} subtitle_paint">{{ $subtitle }}</h2>
|
||||
@endif
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<h2 class="{{ isset($class) ? $class : ''}} textblock__title title">
|
||||
<h2 class="{{ isset($class) ? $class : ''}} textblock__title title">
|
||||
<span class="title-text">{!! $title !!}</span>
|
||||
@if (isset($subtitle))
|
||||
<span class="{{ isset($secondaryClass) ? $secondaryClass : ''}} subtitle-text textblock__subtitle subtitle subtitle_paint">{{ $subtitle }}</span>
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
<a href="{{ route('front.nos-metiers') }}">Nos metiers</a>
|
||||
</li>
|
||||
<li id="menu-item-6108" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6108">
|
||||
<a href="/nous-contacter/">Nous contacter</a>
|
||||
<a href="{{ route('front.contact.index') }}">Nous contacter</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
$styleFiles = [
|
||||
'/fonts/stylesheet.css',
|
||||
'/css/swiper.min.css',
|
||||
'/css/cn-inline-buttons.min.css',
|
||||
'/css/jquery.fancybox.min.css',
|
||||
'/css/style.css',
|
||||
'/css/media.css',
|
||||
|
|
|
|||
43
resources/views/front/pages/contact/index.blade.php
Normal file
43
resources/views/front/pages/contact/index.blade.php
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
@extends('front.layouts.layout')
|
||||
|
||||
@section('title', 'Nous contacter | Les équipes du Groupe LDC vous répondent')
|
||||
@section('description',
|
||||
'Pour toute question, n\'hésitez pas à nous contacter grâce à nos formulaires de contact dédiés.
|
||||
Nos équipes seront présentes pour vous répondre !')
|
||||
|
||||
@section('content')
|
||||
|
||||
|
||||
<div class="page-contacts fw page_nohero">
|
||||
|
||||
@include('front.breadcrumbs.breadcrumb-body')
|
||||
|
||||
<x-front.pages.title h1Class="page-contacts__title" title="Nous contacter" />
|
||||
|
||||
<div class="contact-index">
|
||||
@foreach ($types as $type)
|
||||
@if ($type->toplevel)
|
||||
@php
|
||||
$enum = \App\Enums\Contact\ContactFormType::make($type->value);
|
||||
$hasSubType = count($type->subtype) > 0;
|
||||
$dataTarget = $hasSubType ? $enum->dataTarget() : null;
|
||||
@endphp
|
||||
<x-front.cta title="{{ ucfirst($type->label) }}" class="textblock__info-btn" url="{{ $enum->route() ? $enum->route() : '' }}"
|
||||
buttonIcon="btn__icon_arrow-right" type="{{ $hasSubType ?? null }}" dataTarget="{{ $dataTarget }}" />
|
||||
@if (count($type->subtype) > 0)
|
||||
<div id="{{ $dataTarget }}" class="contacts-group-buttons">
|
||||
@foreach ($type->subtype as $sub)
|
||||
<div>
|
||||
<x-front.cta
|
||||
target="{{ $sub->hasBlankTarget() ?? '' }}"
|
||||
title="{{ ucfirst($sub->label()) }}" class="textblock__info-btn" url="{{ $sub->route() ? $sub->route() : '' }}"
|
||||
buttonIcon="btn__icon_arrow-right" />
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.lastname.label')) }}"
|
||||
required="true" name="lastname"
|
||||
placeholder="{{ ucfirst(__('front.inputs.lastname.placeholder')) }}"
|
||||
autoComplete="family-name" type="text" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.firstname.label')) }}"
|
||||
required="true" name="firstname"
|
||||
placeholder="{{ ucfirst(__('front.inputs.firstname.placeholder')) }}"
|
||||
autoComplete="given-name" type="text" />
|
||||
</div>
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.phone.label')) }}"
|
||||
required="true" name="phone"
|
||||
placeholder="{{ ucfirst(__('front.inputs.phone.placeholder')) }}" autoComplete="tel"
|
||||
type="tel" />
|
||||
<x-front.inputs.simple-input label="Adresse Email" required="true" name="email"
|
||||
placeholder="Prenom.nom@mail.fr" autoComplete="off" type="email" />
|
||||
</div>
|
||||
<div class="form__row">
|
||||
<x-front.inputs.checkbox label="{{ ucfirst(__('front.contact.inputs.breedtype.label')) }}"
|
||||
required="true" name="typeelevage" :options="collect(\App\Enums\Contact\BreedType::toArray())->map(function ($type) {
|
||||
return [
|
||||
'value' => $type->name,
|
||||
'label' => $type->label,
|
||||
];
|
||||
})" />
|
||||
</div>
|
||||
|
||||
<div class="form__row">
|
||||
<x-front.inputs.multi-select
|
||||
placeholder="{{ ucfirst(__('front.contact.inputs.geo_zone.placeholder')) }}"
|
||||
label="{{ ucfirst(__('front.contact.inputs.geo_zone.label')) }}" required="true"
|
||||
name="zonegeo" :options="collect(\App\Enums\Department::toArray())->map(function ($type) {
|
||||
return [
|
||||
'value' => $type->name,
|
||||
'label' => $type->label,
|
||||
];
|
||||
})" />
|
||||
</div>
|
||||
|
||||
<div class="form__container">
|
||||
<x-front.inputs.textarea
|
||||
label="{{ ucfirst(__('front.contact.inputs.your_project.label')) }}" required="true"
|
||||
name="message"
|
||||
placeholder="{{ ucfirst(__('front.contact.inputs.your_project.placeholder')) }}"
|
||||
autoComplete="off" type="email" />
|
||||
</div>
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.lastname.label')) }}" required="true" name="lastname"
|
||||
placeholder="{{ ucfirst(__('front.inputs.lastname.placeholder')) }}" autoComplete="family-name" type="text" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.firstname.label')) }}" required="true"
|
||||
name="firstname" placeholder="{{ ucfirst(__('front.inputs.firstname.placeholder')) }}" autoComplete="given-name"
|
||||
type="text" />
|
||||
</div>
|
||||
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.postalcode.label')) }}" required="true"
|
||||
name="postalcode" placeholder="{{ ucfirst(__('front.inputs.postalcode.placeholder')) }}"
|
||||
autoComplete="postal-code" type="text" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.town.label')) }}" required="true" name="town"
|
||||
placeholder="{{ ucfirst(__('front.inputs.town.placeholder')) }}" autoComplete="address-level2"
|
||||
type="text" />
|
||||
</div>
|
||||
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.country.label')) }}" required="true" name="country"
|
||||
placeholder="{{ ucfirst(__('front.inputs.country.placeholder')) }}" autoComplete="country" type="text" />
|
||||
|
||||
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="Adresse Email" required="true" name="email" placeholder="Prenom.nom@mail.fr"
|
||||
autoComplete="off" type="email" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.phone.label')) }}" name="phone"
|
||||
placeholder="{{ ucfirst(__('front.inputs.phone.placeholder')) }}" autoComplete="tel" type="tel" />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<x-front.inputs.textarea label="{{ ucfirst(__('front.contact.inputs.message.label')) }}" required="true" name="message"
|
||||
placeholder="{{ ucfirst(__('front.contact.inputs.your_project.placeholder')) }}" autoComplete="off" />
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.lastname.label')) }}" required="true" name="lastname"
|
||||
placeholder="{{ ucfirst(__('front.inputs.lastname.placeholder')) }}" autoComplete="family-name" type="text" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.firstname.label')) }}" required="true"
|
||||
name="firstname" placeholder="{{ ucfirst(__('front.inputs.firstname.placeholder')) }}" autoComplete="given-name"
|
||||
type="text" />
|
||||
</div>
|
||||
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.postalcode.label')) }}" required="true"
|
||||
name="postalcode" placeholder="{{ ucfirst(__('front.inputs.postalcode.placeholder')) }}"
|
||||
autoComplete="postal-code" type="text" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.town.label')) }}" required="true" name="town"
|
||||
placeholder="{{ ucfirst(__('front.inputs.town.placeholder')) }}" autoComplete="address-level2"
|
||||
type="text" />
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="Adresse Email" required="true" name="email" placeholder="Prenom.nom@mail.fr"
|
||||
autoComplete="off" type="email" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.phone.label')) }}" name="phone"
|
||||
placeholder="{{ ucfirst(__('front.inputs.phone.placeholder')) }}" autoComplete="tel" type="tel" />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<x-front.inputs.textarea label="{{ ucfirst(__('front.contact.inputs.message.label')) }}" required="true" name="message"
|
||||
placeholder="{{ ucfirst(__('front.contact.inputs.your_project.placeholder')) }}" autoComplete="off" />
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
|
||||
<div class="form__row">
|
||||
@if (\App\Enums\Contact\ContactFormType::press->equals($enumType))
|
||||
<div class="form__field">
|
||||
<label class="form__field-pseudolabel">
|
||||
<input type="checkbox" name="newsletter">
|
||||
<span class="form__field-pseudosquare">{{ __('front.inputs.newsletter.label') }}</span>
|
||||
</label>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
<div class="form__field">
|
||||
<span class="form__field-label-text">{{ __('front.contact.info_personal_data') }}
|
||||
<br> <a href="/politique-de-confidentialite/" target="_blank"
|
||||
rel="noreferer noopener">{{ __('front.contact.confidentiality') }}</a></span>
|
||||
</div>
|
||||
|
||||
<div class="form__field">
|
||||
<div class="form__tip">* {{ ucfirst(__('front.required_field')) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form__row">
|
||||
<div class="form-submit">
|
||||
<input type="submit" value="{{ ucfirst(__('front.buttons.send')) }}" class="form-submit__btn btn">
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<div class="form">
|
||||
<div class="contacts-form__wrapper">
|
||||
<div class="form__container">
|
||||
@if (\App\Enums\Contact\ContactFormType::breeder->equals($enumType))
|
||||
<div class="form-top-text">{{ __('front.contact.are_you_breeder_and_join_us') }}
|
||||
<br>
|
||||
{{ __('front.contact.describe_your_project') }}
|
||||
</div>
|
||||
@endif
|
||||
<x-front.need-recaptcha-banner />
|
||||
|
||||
<x-front.pages.contact.form-wrapper>
|
||||
@if (\App\Enums\Contact\ContactFormType::breeder->equals($enumType))
|
||||
@include('front.pages.contact.partials.breeder')
|
||||
@endif
|
||||
@if (
|
||||
\App\Enums\Contact\ContactFormType::restauration->equals($enumType) ||
|
||||
\App\Enums\Contact\ContactFormType::export->equals($enumType))
|
||||
@include('front.pages.contact.partials.professional')
|
||||
@endif
|
||||
@if (\App\Enums\Contact\ContactFormType::finance->equals($enumType))
|
||||
@include('front.pages.contact.partials.finance')
|
||||
@endif
|
||||
@if (
|
||||
\App\Enums\Contact\ContactFormType::commitments->equals($enumType) ||
|
||||
\App\Enums\Contact\ContactFormType::info->equals($enumType))
|
||||
@include('front.pages.contact.partials.commitments-informations')
|
||||
@endif
|
||||
|
||||
@include('front.pages.contact.partials.form-footer')
|
||||
</x-front.pages.contact.form-wrapper>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
60
resources/views/front/pages/contact/partials/press.blade.php
Normal file
60
resources/views/front/pages/contact/partials/press.blade.php
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
<div class="form__title subtitle">Vos coordonnées</div>
|
||||
|
||||
<x-front.need-recaptcha-banner />
|
||||
|
||||
<x-front.pages.contact.form-wrapper>
|
||||
<div class="form__row">
|
||||
<div class="form__field form__field_flex">
|
||||
<div class="form__label">{{ __('front.contact.inputs.object.label') }} : </div>
|
||||
<span class="wpcf7-form-control-wrap">
|
||||
<select name="Subject" class="form__input form__input_notinput" aria-required="true" aria-invalid="false">
|
||||
<option value="" class="disabled" disabled="disabled">
|
||||
{{ __('front.contact.inputs.object.placeholder') }}
|
||||
</option>
|
||||
@foreach (\App\Enums\Contact\PressType::toArray() as $press)
|
||||
<option value="{{ $press->value }}">{{ $press->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.contact.inputs.company.label')) }}" name="company"
|
||||
required="true" placeholder="{{ ucfirst(__('front.contact.inputs.company.placeholder')) }}"
|
||||
autoComplete="organization" type="text" />
|
||||
</div>
|
||||
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.lastname.label')) }}" required="true"
|
||||
name="lastname" placeholder="{{ ucfirst(__('front.inputs.lastname.placeholder')) }}"
|
||||
autoComplete="family-name" type="text" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.firstname.label')) }}" required="true"
|
||||
name="firstname" placeholder="{{ ucfirst(__('front.inputs.firstname.placeholder')) }}"
|
||||
autoComplete="given-name" type="text" />
|
||||
</div>
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.postalcode.label')) }}" required="true"
|
||||
name="postalcode" placeholder="{{ ucfirst(__('front.inputs.postalcode.placeholder')) }}"
|
||||
autoComplete="postal-code" type="text" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.town.label')) }}" required="true"
|
||||
name="town" placeholder="{{ ucfirst(__('front.inputs.town.placeholder')) }}"
|
||||
autoComplete="address-level2" type="text" />
|
||||
</div>
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="Adresse Email" required="true" name="email"
|
||||
placeholder="Prenom.nom@mail.fr" autoComplete="off" type="email" />
|
||||
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.phone.label')) }}" required="true"
|
||||
name="phone" placeholder="{{ ucfirst(__('front.inputs.phone.placeholder')) }}" autoComplete="tel"
|
||||
type="tel" />
|
||||
|
||||
</div>
|
||||
<div class="form__container">
|
||||
<x-front.inputs.textarea label="{{ ucfirst(__('front.contact.inputs.message.label')) }}" required="true"
|
||||
name="message" placeholder="{{ ucfirst(__('front.contact.inputs.message.placeholder')) }}"
|
||||
autoComplete="off" type="email" />
|
||||
@include('front.pages.contact.partials.form-footer', ['enumType' => \App\Enums\Contact\ContactFormType::press])
|
||||
|
||||
|
||||
</div>
|
||||
</x-front.pages.contact.form-wrapper>
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.lastname.label')) }}" required="true" name="lastname"
|
||||
placeholder="{{ ucfirst(__('front.inputs.lastname.placeholder')) }}" autoComplete="family-name" type="text" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.firstname.label')) }}" required="true"
|
||||
name="firstname" placeholder="{{ ucfirst(__('front.inputs.firstname.placeholder')) }}" autoComplete="given-name"
|
||||
type="text" />
|
||||
</div>
|
||||
|
||||
<div class="form__row">
|
||||
<x-front.inputs.multi-select placeholder="{{ ucfirst(__('front.contact.inputs.customerAskingType.placeholder')) }}"
|
||||
label="{{ ucfirst(__('front.contact.inputs.customerAskingType.label')) }}" required="true" name="type"
|
||||
:options="collect(\App\Enums\Contact\CustomerAskingType::toArray())->map(function ($type) {
|
||||
return [
|
||||
'value' => $type->name,
|
||||
'label' => $type->label,
|
||||
];
|
||||
})" />
|
||||
|
||||
@if (\App\Enums\Contact\ContactFormType::restauration->equals($enumType))
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.contact.inputs.company.label')) }}" name="company"
|
||||
placeholder="{{ ucfirst(__('front.contact.inputs.company.placeholder')) }}" autoComplete="organization"
|
||||
type="text" />
|
||||
@endif
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.postalcode.label')) }}" required="true"
|
||||
name="postalcode" placeholder="{{ ucfirst(__('front.inputs.postalcode.placeholder')) }}"
|
||||
autoComplete="postal-code" type="text" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.town.label')) }}" required="true" name="town"
|
||||
placeholder="{{ ucfirst(__('front.inputs.town.placeholder')) }}" autoComplete="address-level2"
|
||||
type="text" />
|
||||
</div>
|
||||
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.country.label')) }}" required="true" name="country"
|
||||
placeholder="{{ ucfirst(__('front.inputs.country.placeholder')) }}" autoComplete="country" type="text" />
|
||||
|
||||
<div class="form__row">
|
||||
<x-front.inputs.simple-input label="Adresse Email" required="true" name="email" placeholder="Prenom.nom@mail.fr"
|
||||
autoComplete="off" type="email" />
|
||||
<x-front.inputs.simple-input label="{{ ucfirst(__('front.inputs.phone.label')) }}" name="phone"
|
||||
placeholder="{{ ucfirst(__('front.inputs.phone.placeholder')) }}" autoComplete="tel" type="tel" />
|
||||
|
||||
</div>
|
||||
|
||||
<x-front.inputs.textarea label="{{ ucfirst(__('front.contact.inputs.message.label')) }}" required="true" name="message"
|
||||
placeholder="{{ ucfirst(__('front.contact.inputs.your_project.placeholder')) }}" autoComplete="off" />
|
||||
41
resources/views/front/pages/contact/show.blade.php
Normal file
41
resources/views/front/pages/contact/show.blade.php
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
@extends('front.layouts.layout')
|
||||
|
||||
@section('title', $enumType->seo()['title'])
|
||||
@section('description', $enumType->seo()['description'])
|
||||
|
||||
@section('content')
|
||||
<div class="page-contacts fw page_nohero">
|
||||
|
||||
@include('front.breadcrumbs.breadcrumb-body')
|
||||
|
||||
<x-front.pages.title h1Class="page-contacts__title" h2Class="contacts-page-subtitle" title="Nous contacter"
|
||||
subtitle="{{ ucfirst($enumType->subtitle()) }}" />
|
||||
|
||||
<div class="contacts-category-page wrapper">
|
||||
@if (\App\Enums\Contact\ContactFormType::collaborator->equals($enumType))
|
||||
<div class="contact-page-tetx-block">
|
||||
<p>
|
||||
{{ __('front.contact.you_want_job_offer') }} <a
|
||||
href="https://recrutement.ldc.fr/fr/annonces?s_o=Site%20ldc" target="_blank"
|
||||
rel="noreferer noopener">recrutement.ldc.fr</a>
|
||||
<br>
|
||||
{{ __('front.contact.if_other_subject_thanks_to') }}
|
||||
</p>
|
||||
</div>
|
||||
@endif
|
||||
@if (\App\Enums\Contact\ContactFormType::product->equals($enumType))
|
||||
<div class="contact-page-tetx-block">
|
||||
<p>
|
||||
{{ __('front.contact.other_product_information') }}
|
||||
</p>
|
||||
</div>
|
||||
@endif
|
||||
<x-front.back-to-contact />
|
||||
@if(!\App\Enums\Contact\ContactFormType::collaborator->equals($enumType) &&
|
||||
!\App\Enums\Contact\ContactFormType::product->equals($enumType)
|
||||
)
|
||||
@include('front.pages.contact.partials.form-index')
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -7,406 +7,557 @@
|
|||
|
||||
@section('bodyClass', 'page-template page-template-page-press page-template-page-press-php page page-id-14')
|
||||
@section('content')
|
||||
{{-- # FIXME: il manque le formulaire de contact, lié à l'issue page de contact --}}
|
||||
@php
|
||||
$hero = [
|
||||
[
|
||||
'title' => 'espace presse',
|
||||
'subtitle' => '',
|
||||
'text' => nl2br(
|
||||
__(
|
||||
'LDC est un Groupe familial, parmi les leaders européens de la volaille et du traiteur. Près de 50 ans après sa création, le Groupe compte aujourd’hui 22 700 salariés répartis sur 89 sites en France et en Europe. Notre mission est d’agir pour la souveraineté alimentaire dans le respect des femmes, des hommes et de la nature. Notre stratégie « Agir avec nos territoires » consiste à Élever durablement, Mieux vivre ensemble, Respecter la terre et Bien nourrir. :br :br Vous êtes journalistes et vous recherchez une information ? Consultez les actualités ci-dessous et contactez-nous avec le formulaire pour une information complémentaire, obtenir un logo, une photo ou un visuel.',
|
||||
[
|
||||
'br' => '<br>',
|
||||
],
|
||||
),
|
||||
),
|
||||
'button' => '',
|
||||
'video_?' => false,
|
||||
'video_file' => null,
|
||||
'image' => '/assets/uploads/2020/07/173-scaled.jpg',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => true,
|
||||
'right' => true,
|
||||
'top' => true,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
@endphp
|
||||
@include('front.partials.hero', ['hero' => $hero]);
|
||||
<div class="page-press">
|
||||
{{-- # FIXME: il manque le formulaire de contact, lié à l'issue page de contact --}}
|
||||
@php
|
||||
$hero = [
|
||||
[
|
||||
'title' => 'espace presse',
|
||||
'subtitle' => '',
|
||||
'text' => nl2br(
|
||||
__(
|
||||
'LDC est un Groupe familial, parmi les leaders européens de la volaille et du traiteur. Près de 50 ans après sa création, le Groupe compte aujourd’hui 22 700 salariés répartis sur 89 sites en France et en Europe. Notre mission est d’agir pour la souveraineté alimentaire dans le respect des femmes, des hommes et de la nature. Notre stratégie « Agir avec nos territoires » consiste à Élever durablement, Mieux vivre ensemble, Respecter la terre et Bien nourrir. :br :br Vous êtes journalistes et vous recherchez une information ? Consultez les actualités ci-dessous et contactez-nous avec le formulaire pour une information complémentaire, obtenir un logo, une photo ou un visuel.',
|
||||
[
|
||||
'br' => '<br>',
|
||||
],
|
||||
),
|
||||
),
|
||||
'button' => '',
|
||||
'video_?' => false,
|
||||
'video_file' => null,
|
||||
'image' => '/assets/uploads/2020/07/173-scaled.jpg',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => true,
|
||||
'right' => true,
|
||||
'top' => true,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
@endphp
|
||||
@include('front.partials.hero', ['hero' => $hero]);
|
||||
|
||||
<div class="page-press-description fw fw-container">
|
||||
<div class="page-press-description__wrapper wrapper description">
|
||||
<h3><strong>Contacts presse :</strong></h3>
|
||||
<ul>
|
||||
<li><strong>Communication financière : </strong></li>
|
||||
</ul>
|
||||
<p>Jennifer JULLIA – 01 56 88 11 19 – jjullia@actifin.fr</p>
|
||||
<p><strong>Pour toute autre demande, merci de compléter le formulaire ci-dessous.</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-press-description fw fw-container">
|
||||
<div class="page-press-description__wrapper wrapper description">
|
||||
<h3><strong>Contacts presse :</strong></h3>
|
||||
<ul>
|
||||
<li><strong>Communication financière : </strong></li>
|
||||
</ul>
|
||||
<p>Jennifer JULLIA – 01 56 88 11 19 – jjullia@actifin.fr</p>
|
||||
<p><strong>Pour toute autre demande, merci de compléter le formulaire ci-dessous.</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@php
|
||||
$postContainer = [
|
||||
'class' => 'fw-container no-top-padding',
|
||||
'secondaryClass' => 'fw-container no-bottom-padding',
|
||||
'tertiaryClass' => 'tagged-posts',
|
||||
'list_type' => 'news',
|
||||
'id' => 'news',
|
||||
'post_id' => '9',
|
||||
'slug' => 'news',
|
||||
'url' => route('front.actualites.index'),
|
||||
'localized' => 'ajax_load_more_news_vars',
|
||||
'object' => 'ajax_load_more_news',
|
||||
'max_posts' => '9',
|
||||
'load_more' => 'Voir plus de ressources documentaires',
|
||||
'filters' => [
|
||||
[
|
||||
'title' => 'Thématique',
|
||||
'fields' => [
|
||||
[
|
||||
'title' => 'Actualités RH',
|
||||
'tag' => 'actualites-rh',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Vie du Groupe',
|
||||
'tag' => 'vie-du-groupe',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Événement',
|
||||
'tag' => 'evenement-2',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Communiqués et Avis financiers',
|
||||
'tag' => 'communiques-et-avis-financiers',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Communiqué',
|
||||
'tag' => 'communique',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Actualités RSE',
|
||||
'tag' => 'actualites-rse',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Actualités Produits',
|
||||
'tag' => 'actualites-produits',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Article de presse',
|
||||
'tag' => 'article-de-presse',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Partenariats et sponsorings',
|
||||
'tag' => 'partenariats-et-sponsorings',
|
||||
'category' => 'news',
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'title' => 'Année',
|
||||
'fields' => [
|
||||
[
|
||||
'title' => '2024/2025',
|
||||
'year' => '2025',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => '2023/2024',
|
||||
'year' => '2024',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => '2022/2023',
|
||||
'tag' => '2023',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => '2021/2022',
|
||||
'tag' => '2022',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => '2020/2021',
|
||||
'tag' => '2021',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => '2019/2020',
|
||||
'tag' => '2020',
|
||||
'category' => 'news',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'news' => [
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2024/04/VIGNETTE-412x232.jpg',
|
||||
'picture_alt' => 'Vignette communiqué de presse Groupe LDC',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2024/04/VIGNETTE-412x232.jpg 412w, /assets/uploads/2024/04/VIGNETTE-300x169.jpg 300w, /assets/uploads/2024/04/VIGNETTE-1024x576.jpg 1024w, /assets/app/uploads/2024/04/VIGNETTE-768x432.jpg 768w, /assets/uploads/2024/04/VIGNETTE-1536x864.jpg 1536w, /assets/uploads/2024/04/VIGNETTE.jpg 1920w',
|
||||
'subtitle' => 'Le Groupe LDC officialise sa stratégie Climat & Biodiversité 2030 ! 🌍',
|
||||
'created_at' => '04/06/2025',
|
||||
'slug' => 'le-groupe-ldc-officialise-sa-strategie-climat-biodiversite-2030-%f0%9f%8c%8d',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2025/03/VIGNETTE-412x232.jpg',
|
||||
'picture_alt' => 'Vignette lancement campagne alternants 2025',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2025/03/VIGNETTE-412x232.jpg 412w, /assets/uploads/2025/03/VIGNETTE-300x169.jpg 300w, /assets/uploads/2025/03/VIGNETTE-1024x576.jpg 1024w, /assets/uploads/2025/03/VIGNETTE-768x432.jpg 768w, /assets/uploads/2025/03/VIGNETTE-1536x864.jpg 1536w, /assets/uploads/2025/03/VIGNETTE-2048x1152.jpg 2048w',
|
||||
'subtitle' => 'Recrutement en alternance : plus de 100 opportunités dans tous les métiers !',
|
||||
'created_at' => '27/03/2025',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' => 'recrutement-en-alternance-plus-de-100-opportunites-dans-tous-les-metiers',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2025/01/VIGNETTE-ok-412x206.jpg',
|
||||
'picture_alt' => 'Retrouvez le Groupe LDC aux forums écoles de février',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2025/01/VIGNETTE-ok-412x206.jpg 412w, /assets/uploads/2025/01/VIGNETTE-ok-300x150.jpg 300w, /assets/uploads/2025/01/VIGNETTE-ok.jpg 600w',
|
||||
'subtitle' => 'Retrouvez-nous aux forums écoles en mars 2025 !',
|
||||
'created_at' => '28/02/2025',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' => 'retrouvez-nous-aux-forums-ecoles-en-mars-2025',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2025/02/VIGNETTE-412x206.jpg',
|
||||
'picture_alt' => 'Vignette acquisitions 2024 Groupe LDC',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2025/02/VIGNETTE-412x206.jpg 412w, /assets/uploads/2025/02/VIGNETTE-300x150.jpg 300w, /assets/uploads/2025/02/VIGNETTE.jpg 600w',
|
||||
'subtitle' => '[Rétrospective 2024] Retrouvez les entreprises qui ont rejoint le Groupe en 2024.',
|
||||
'created_at' => '11/02/2025',
|
||||
'date_type' => 'date_vie-du-groupe',
|
||||
'category' => 'Vie du Groupe',
|
||||
'category_type' => 'tag_vie-du-groupe',
|
||||
'slug' => 'retrospective-2024-retrouvez-les-entreprises-qui-ont-rejoint-le-groupe-en-2024',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2025/01/VIGNETTE-ok-412x206.jpg',
|
||||
'picture_alt' => 'Retrouvez le Groupe LDC aux forums écoles de février',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2025/01/VIGNETTE-ok-412x206.jpg 412w, /assets/uploads/2025/01/VIGNETTE-ok-300x150.jpg 300w, /assets/uploads/2025/01/VIGNETTE-ok.jpg 600w',
|
||||
'subtitle' => 'Retrouvez-nous aux forums écoles en février 2025 !',
|
||||
'created_at' => '31/01/2025',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' => 'retrouvez-nous-aux-forums-ecoles-en-fevrier-2025',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-412x232.png',
|
||||
'picture_alt' => 'Le Groupe LDC et ses marques présent au SIRHA Lyon 2025',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-412x232.png 412w, /assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-300x169.png 300w, /assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-1024x576.png 1024w, /assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-768x432.png 768w, /assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-1536x864.png 1536w, /assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025.png 1920w',
|
||||
'subtitle' =>
|
||||
'SIRHA LYON 2025 : LE GROUPE LDC ET SES MARQUES RESTAURATION SERONT PRÉSENTS DU 23 AU 27 JANVIER 2025',
|
||||
'created_at' => '21/01/2025',
|
||||
'date_type' => 'date_evenement-2',
|
||||
'category' => 'Événement',
|
||||
'category_type' => 'tag_evenement-2',
|
||||
'slug' =>
|
||||
'sirha-lyon-2025-le-groupe-ldc-et-ses-marques-restauration-seront-presents-du-23-au-27-janvier-2025',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2024/11/image-actualite-forum-ecoles-trame-360x240.png',
|
||||
'picture_alt' => 'Vignette actualité Forums Ecoles',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2024/11/image-actualite-forum-ecoles-trame-360x240.png 360w, /assets/uploads/2024/11/image-actualite-forum-ecoles-trame-300x200.png 300w, /assets/uploads/2024/11/image-actualite-forum-ecoles-trame.png 600w',
|
||||
'subtitle' =>
|
||||
'Le Groupe LDC présent aux Forums écoles de l’Institut Agro Dijon, ESA Angers, Oniris Nantes & ESAIP Angers !',
|
||||
'created_at' => '06/11/2024',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' =>
|
||||
'le-groupe-ldc-present-aux-forums-ecoles-de-linstitut-agro-dijon-esa-angers-oniris-nantes-esaip-angers',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' =>
|
||||
'/assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire-412x141.png',
|
||||
'picture_alt' => 'Logo Semaine Nationale de l\'Emploi Agroalimentaire 2024',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire-412x141.png 412w, /assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire-300x103.png 300w, /assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire-1024x350.png 1024w, /assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire-768x263.png 768w, /assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire.png 1170w',
|
||||
'subtitle' =>
|
||||
'Le Groupe LDC présent aux Forums écoles de l’Institut Agro Dijon, ESA Angers, Oniris Nantes & ESAIP Angers !',
|
||||
'created_at' => '29/10/2024',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' => 'le-groupe-ldc-participe-a-la-semaine-nationale-de-lemploi-agroalimentaire',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2024/10/visuel-uni-la-salle-2024-360x240.jpg',
|
||||
'picture_alt' => 'Photo des étudiants UniLa Salle sur le site de LDC Groupe',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2024/10/visuel-uni-la-salle-2024-360x240.jpg 360w, /assets/uploads/2024/10/visuel-uni-la-salle-2024-300x200.jpg 300w, /assets/uploads/2024/10/visuel-uni-la-salle-2024.jpg 600w',
|
||||
'subtitle' => 'Partenariat École : les étudiants UniLaSalle en visite chez LDC Groupe',
|
||||
'created_at' => '28/10/2024',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' => 'partenariat-ecole-les-etudiants-uni-la-salle-en-visite-chez-ldc-groupe',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
@endphp
|
||||
@php
|
||||
$postContainer = [
|
||||
'class' => 'fw-container no-top-padding',
|
||||
'secondaryClass' => 'fw-container no-bottom-padding',
|
||||
'tertiaryClass' => 'tagged-posts',
|
||||
'list_type' => 'news',
|
||||
'id' => 'news',
|
||||
'post_id' => '9',
|
||||
'slug' => 'news',
|
||||
'url' => route('front.actualites.index'),
|
||||
'localized' => 'ajax_load_more_news_vars',
|
||||
'object' => 'ajax_load_more_news',
|
||||
'max_posts' => '9',
|
||||
'load_more' => 'Voir plus de ressources documentaires',
|
||||
'filters' => [
|
||||
[
|
||||
'title' => 'Thématique',
|
||||
'fields' => [
|
||||
[
|
||||
'title' => 'Actualités RH',
|
||||
'tag' => 'actualites-rh',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Vie du Groupe',
|
||||
'tag' => 'vie-du-groupe',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Événement',
|
||||
'tag' => 'evenement-2',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Communiqués et Avis financiers',
|
||||
'tag' => 'communiques-et-avis-financiers',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Communiqué',
|
||||
'tag' => 'communique',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Actualités RSE',
|
||||
'tag' => 'actualites-rse',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Actualités Produits',
|
||||
'tag' => 'actualites-produits',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Article de presse',
|
||||
'tag' => 'article-de-presse',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => 'Partenariats et sponsorings',
|
||||
'tag' => 'partenariats-et-sponsorings',
|
||||
'category' => 'news',
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'title' => 'Année',
|
||||
'fields' => [
|
||||
[
|
||||
'title' => '2024/2025',
|
||||
'year' => '2025',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => '2023/2024',
|
||||
'year' => '2024',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => '2022/2023',
|
||||
'tag' => '2023',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => '2021/2022',
|
||||
'tag' => '2022',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => '2020/2021',
|
||||
'tag' => '2021',
|
||||
'category' => 'news',
|
||||
],
|
||||
[
|
||||
'title' => '2019/2020',
|
||||
'tag' => '2020',
|
||||
'category' => 'news',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'news' => [
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2024/04/VIGNETTE-412x232.jpg',
|
||||
'picture_alt' => 'Vignette communiqué de presse Groupe LDC',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2024/04/VIGNETTE-412x232.jpg 412w, /assets/uploads/2024/04/VIGNETTE-300x169.jpg 300w, /assets/uploads/2024/04/VIGNETTE-1024x576.jpg 1024w, /assets/app/uploads/2024/04/VIGNETTE-768x432.jpg 768w, /assets/uploads/2024/04/VIGNETTE-1536x864.jpg 1536w, /assets/uploads/2024/04/VIGNETTE.jpg 1920w',
|
||||
'subtitle' => 'Le Groupe LDC officialise sa stratégie Climat & Biodiversité 2030 ! 🌍',
|
||||
'created_at' => '04/06/2025',
|
||||
'slug' => 'le-groupe-ldc-officialise-sa-strategie-climat-biodiversite-2030-%f0%9f%8c%8d',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2025/03/VIGNETTE-412x232.jpg',
|
||||
'picture_alt' => 'Vignette lancement campagne alternants 2025',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2025/03/VIGNETTE-412x232.jpg 412w, /assets/uploads/2025/03/VIGNETTE-300x169.jpg 300w, /assets/uploads/2025/03/VIGNETTE-1024x576.jpg 1024w, /assets/uploads/2025/03/VIGNETTE-768x432.jpg 768w, /assets/uploads/2025/03/VIGNETTE-1536x864.jpg 1536w, /assets/uploads/2025/03/VIGNETTE-2048x1152.jpg 2048w',
|
||||
'subtitle' => 'Recrutement en alternance : plus de 100 opportunités dans tous les métiers !',
|
||||
'created_at' => '27/03/2025',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' => 'recrutement-en-alternance-plus-de-100-opportunites-dans-tous-les-metiers',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2025/01/VIGNETTE-ok-412x206.jpg',
|
||||
'picture_alt' => 'Retrouvez le Groupe LDC aux forums écoles de février',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2025/01/VIGNETTE-ok-412x206.jpg 412w, /assets/uploads/2025/01/VIGNETTE-ok-300x150.jpg 300w, /assets/uploads/2025/01/VIGNETTE-ok.jpg 600w',
|
||||
'subtitle' => 'Retrouvez-nous aux forums écoles en mars 2025 !',
|
||||
'created_at' => '28/02/2025',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' => 'retrouvez-nous-aux-forums-ecoles-en-mars-2025',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2025/02/VIGNETTE-412x206.jpg',
|
||||
'picture_alt' => 'Vignette acquisitions 2024 Groupe LDC',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2025/02/VIGNETTE-412x206.jpg 412w, /assets/uploads/2025/02/VIGNETTE-300x150.jpg 300w, /assets/uploads/2025/02/VIGNETTE.jpg 600w',
|
||||
'subtitle' => '[Rétrospective 2024] Retrouvez les entreprises qui ont rejoint le Groupe en 2024.',
|
||||
'created_at' => '11/02/2025',
|
||||
'date_type' => 'date_vie-du-groupe',
|
||||
'category' => 'Vie du Groupe',
|
||||
'category_type' => 'tag_vie-du-groupe',
|
||||
'slug' => 'retrospective-2024-retrouvez-les-entreprises-qui-ont-rejoint-le-groupe-en-2024',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2025/01/VIGNETTE-ok-412x206.jpg',
|
||||
'picture_alt' => 'Retrouvez le Groupe LDC aux forums écoles de février',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2025/01/VIGNETTE-ok-412x206.jpg 412w, /assets/uploads/2025/01/VIGNETTE-ok-300x150.jpg 300w, /assets/uploads/2025/01/VIGNETTE-ok.jpg 600w',
|
||||
'subtitle' => 'Retrouvez-nous aux forums écoles en février 2025 !',
|
||||
'created_at' => '31/01/2025',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' => 'retrouvez-nous-aux-forums-ecoles-en-fevrier-2025',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-412x232.png',
|
||||
'picture_alt' => 'Le Groupe LDC et ses marques présent au SIRHA Lyon 2025',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-412x232.png 412w, /assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-300x169.png 300w, /assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-1024x576.png 1024w, /assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-768x432.png 768w, /assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025-1536x864.png 1536w, /assets/uploads/2025/01/Le-Groupe-LDC-au-SIRHA-Lyon-2025.png 1920w',
|
||||
'subtitle' =>
|
||||
'SIRHA LYON 2025 : LE GROUPE LDC ET SES MARQUES RESTAURATION SERONT PRÉSENTS DU 23 AU 27 JANVIER 2025',
|
||||
'created_at' => '21/01/2025',
|
||||
'date_type' => 'date_evenement-2',
|
||||
'category' => 'Événement',
|
||||
'category_type' => 'tag_evenement-2',
|
||||
'slug' =>
|
||||
'sirha-lyon-2025-le-groupe-ldc-et-ses-marques-restauration-seront-presents-du-23-au-27-janvier-2025',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2024/11/image-actualite-forum-ecoles-trame-360x240.png',
|
||||
'picture_alt' => 'Vignette actualité Forums Ecoles',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2024/11/image-actualite-forum-ecoles-trame-360x240.png 360w, /assets/uploads/2024/11/image-actualite-forum-ecoles-trame-300x200.png 300w, /assets/uploads/2024/11/image-actualite-forum-ecoles-trame.png 600w',
|
||||
'subtitle' =>
|
||||
'Le Groupe LDC présent aux Forums écoles de l’Institut Agro Dijon, ESA Angers, Oniris Nantes & ESAIP Angers !',
|
||||
'created_at' => '06/11/2024',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' =>
|
||||
'le-groupe-ldc-present-aux-forums-ecoles-de-linstitut-agro-dijon-esa-angers-oniris-nantes-esaip-angers',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' =>
|
||||
'/assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire-412x141.png',
|
||||
'picture_alt' => 'Logo Semaine Nationale de l\'Emploi Agroalimentaire 2024',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire-412x141.png 412w, /assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire-300x103.png 300w, /assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire-1024x350.png 1024w, /assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire-768x263.png 768w, /assets/uploads/2024/10/logo-Semaine-Nationale-de-lEmploi-Agroalimentaire.png 1170w',
|
||||
'subtitle' =>
|
||||
'Le Groupe LDC présent aux Forums écoles de l’Institut Agro Dijon, ESA Angers, Oniris Nantes & ESAIP Angers !',
|
||||
'created_at' => '29/10/2024',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' => 'le-groupe-ldc-participe-a-la-semaine-nationale-de-lemploi-agroalimentaire',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'type_button' => true,
|
||||
'picture' => '/assets/uploads/2024/10/visuel-uni-la-salle-2024-360x240.jpg',
|
||||
'picture_alt' => 'Photo des étudiants UniLa Salle sur le site de LDC Groupe',
|
||||
'srcset' =>
|
||||
'/assets/uploads/2024/10/visuel-uni-la-salle-2024-360x240.jpg 360w, /assets/uploads/2024/10/visuel-uni-la-salle-2024-300x200.jpg 300w, /assets/uploads/2024/10/visuel-uni-la-salle-2024.jpg 600w',
|
||||
'subtitle' => 'Partenariat École : les étudiants UniLaSalle en visite chez LDC Groupe',
|
||||
'created_at' => '28/10/2024',
|
||||
'date_type' => 'date_actualites-rh',
|
||||
'category' => 'Actualités RH',
|
||||
'category_type' => 'tag_actualites-rh',
|
||||
'slug' => 'partenariat-ecole-les-etudiants-uni-la-salle-en-visite-chez-ldc-groupe',
|
||||
'image_borders' => [
|
||||
'desktop' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
'mobile' => [
|
||||
'left' => false,
|
||||
'right' => false,
|
||||
'top' => false,
|
||||
'bottom' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
@endphp
|
||||
|
||||
@include('front.partials.filter-posts', ['postContainer' => $postContainer])
|
||||
@include('front.partials.filter-posts', ['postContainer' => $postContainer])
|
||||
|
||||
<div id="page-press-form">
|
||||
<div class="page-press-form fw fw-container gray-bg">
|
||||
<div class="page-press-form__wrapper wrapper">
|
||||
<x-front.sections.title secondaryClass="page-press-form__subtitle " class="page-press-form__title" title="Contactez notre" subtitle="service presse" />
|
||||
|
||||
<div class="fw-container no-bottom-padding">
|
||||
|
||||
<div class="wpcf7-form">
|
||||
@include('front.pages.contact.partials.press')
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
/**
|
||||
* @param {number} postId
|
||||
* @param {string} action
|
||||
* @param {string} token
|
||||
* @param {Record<string,string>} data
|
||||
* @return {void}
|
||||
*/
|
||||
function ajaxContact(postId, action, token, data) {
|
||||
return $.ajax({
|
||||
type: "POST",
|
||||
url: MYSCRIPT.ajaxurl,
|
||||
data: {
|
||||
...{
|
||||
'action': action,
|
||||
'id': postId,
|
||||
token
|
||||
},
|
||||
...data
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/** The form is actually sending */
|
||||
let processing = false;
|
||||
|
||||
const listenFormSubmit = (inputs, getData, reset, post_id = null) => {
|
||||
$("input[type=submit]").on('click', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
const emailRegex =
|
||||
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||||
const $formResponse = $(".form__response");
|
||||
|
||||
if (processing === true) {
|
||||
return;
|
||||
}
|
||||
processing = true;
|
||||
|
||||
$formResponse.hide();
|
||||
|
||||
const data = getData();
|
||||
|
||||
const formIsValid = [...Object.entries(getData())]
|
||||
.filter(entry => inputs.optional[entry[0]] === undefined)
|
||||
.reduce((prev, cur) => prev && cur[1].length > 0);
|
||||
const emailIsValid = emailRegex.test(inputs.required.email.val());
|
||||
|
||||
if (!formIsValid) {
|
||||
$formResponse.show();
|
||||
processing = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!emailIsValid) {
|
||||
alert('Le format de l\'adresse email est invalide.');
|
||||
processing = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!window.__CN_Recaptcha_Loaded_Callback) {
|
||||
console.warn('Vous devez activer les cookies recaptcha');
|
||||
alert('Vous devez activer les cookies recaptcha');
|
||||
processing = false;
|
||||
return;
|
||||
}
|
||||
window.__CN_Recaptcha_Loaded_Callback('contact', (token) => ajaxContact(
|
||||
post_id ?? 3941,
|
||||
'ContactAjx',
|
||||
token,
|
||||
data
|
||||
)
|
||||
.done((response, textStatus, jqXHR) => {
|
||||
reset();
|
||||
alert('Message envoyé !');
|
||||
})
|
||||
.fail((jqXHR, textStatus, errorThrown) => {
|
||||
alert('Une erreur est survenue, veuillez recharger la page.');
|
||||
})
|
||||
.always(() => processing = false)
|
||||
);
|
||||
});
|
||||
};
|
||||
</script>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const inputs = {
|
||||
required: {
|
||||
subject: $("select[name=Subject]"),
|
||||
company: $("input[name=company]"),
|
||||
lastname: $("input[name=lastname]"),
|
||||
firstname: $("input[name=firstname]"),
|
||||
postcode: $("input[name=postcode]"),
|
||||
city: $("input[name=city]"),
|
||||
email: $("input[name=email]"),
|
||||
phone: $("input[name=phone]"),
|
||||
message: $("textarea[name=message]"),
|
||||
},
|
||||
optional: {
|
||||
newsletter: $("input[name=newsletter]")
|
||||
}
|
||||
};
|
||||
// 'id': 14,
|
||||
listenFormSubmit(
|
||||
// INPUTS
|
||||
inputs,
|
||||
// DATA
|
||||
() => Object.fromEntries([
|
||||
...[
|
||||
...Object.entries(inputs.required),
|
||||
...Object.entries(inputs.optional),
|
||||
].map(entry => [entry[0], entry[1].val()])
|
||||
]),
|
||||
// RESET
|
||||
() => {
|
||||
const resetFn = $input => {
|
||||
if ($input.is("input[type='checkbox']")) {
|
||||
$input.prop("checked", false);
|
||||
return;
|
||||
}
|
||||
if ($input.is("select")) {
|
||||
$input.val($input.children().eq(1).val())
|
||||
return;
|
||||
}
|
||||
$input.val('');
|
||||
};
|
||||
[...Object.values(inputs.required)].forEach(resetFn);
|
||||
[...Object.values(inputs.optional)].forEach(resetFn);
|
||||
},
|
||||
14
|
||||
);
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -12,6 +12,16 @@ Breadcrumbs::for('front.homepage', function (Generator $trail) {
|
|||
);
|
||||
});
|
||||
|
||||
|
||||
// * CONTACT PAGE
|
||||
Breadcrumbs::for('front.contact', function (Generator $trail) {
|
||||
$trail->parent('front.homepage');
|
||||
$trail->push(
|
||||
Str::of(trans('front.contact'))->ucfirst(),
|
||||
route('front.contact')
|
||||
);
|
||||
});
|
||||
|
||||
// * SEARCH PAGE
|
||||
Breadcrumbs::for('front.search', function (Generator $trail) {
|
||||
$trail->parent('front.homepage');
|
||||
|
|
|
|||
|
|
@ -1,11 +1,20 @@
|
|||
<?php
|
||||
|
||||
use App\Http\Controllers\Front\HomeController;
|
||||
use App\Http\Controllers\Front\ContactController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
|
||||
Route::name('front.')->group(function () {
|
||||
Route::get('/', [HomeController::class, 'homepage'])->name('homepage');
|
||||
|
||||
|
||||
|
||||
Route::prefix('nous-contacter')->name('contact.')->group(function() {
|
||||
Route::get('', [ContactController::class, 'index'])->name('index');
|
||||
Route::get('{slug}', [ContactController::class, 'show'])->name('show');
|
||||
});
|
||||
|
||||
Route::get('search', function () {
|
||||
return view('front.pages.search');
|
||||
})->name('search');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue