Compare commits
71 commits
fixCafelTe
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
107bb774f6 | ||
|
|
24d473ddab | ||
|
|
94435d9820 | ||
|
|
e5fdd3d345 | ||
|
|
e5dc2b82b5 | ||
|
|
7efde8651f | ||
|
|
3255a089c4 | ||
|
|
3f82a92221 | ||
|
|
af8a18bb8f | ||
|
|
6aca5dd3d7 | ||
|
|
64c8583dfc | ||
|
|
1c292023ea | ||
|
|
cfe7e1a778 | ||
|
|
e07780af67 | ||
|
|
729127fa28 | ||
|
|
ede3aa889c | ||
|
|
d640238082 | ||
|
|
3a49f0543c | ||
|
|
43a89a03a0 | ||
|
|
9e3cde59dd | ||
|
|
a549f5a8a5 | ||
|
|
ddb9c3fd59 | ||
|
|
c2d70b841a | ||
|
|
f5e5bc2362 | ||
|
|
c43f5220e1 | ||
|
|
608d420062 | ||
|
|
bebb0b5026 | ||
|
|
c56aed023d | ||
|
|
ccf2fde716 | ||
|
|
55012e8985 | ||
|
|
714df38f4b | ||
|
|
f58b55efbf | ||
|
|
7fd2068e77 | ||
|
|
61acab1cb1 | ||
|
|
39f95895ae | ||
|
|
791862202f | ||
|
|
ac26d7ff21 | ||
|
|
c21919e141 | ||
|
|
0e3f299228 | ||
|
|
a458e5fd75 | ||
|
|
7d60149a45 | ||
|
|
47d2f3e5a7 | ||
|
|
c7bc5713f5 | ||
|
|
a3b97ff5be | ||
|
|
46f75d216d | ||
|
|
4affcef601 | ||
|
|
bd8da4cbe7 | ||
|
|
5f6236e24e | ||
|
|
e7c5480fc8 | ||
|
|
db03f10b97 | ||
|
|
e38c3b4e4c | ||
|
|
82202efb3c | ||
|
|
e6a3f429e9 | ||
|
|
c79d0d5137 | ||
|
|
4bb31c7aa4 | ||
|
|
9cba6891ef | ||
|
|
20e4084361 | ||
|
|
21aeaa34c0 | ||
|
|
cd0f1fdd76 | ||
|
|
ba4aa3e001 | ||
|
|
e0aefec165 | ||
|
|
746cc4d8eb | ||
|
|
c9c7752d2f | ||
|
|
1266665702 | ||
|
|
60159fdfb9 | ||
|
|
df4f4d360e | ||
|
|
0c96300587 | ||
|
|
8a56fa108e | ||
|
|
3f08a381ff | ||
|
|
2a1d095e71 | ||
|
|
c13ef55eee |
41 changed files with 6093 additions and 4941 deletions
|
|
@ -3,6 +3,7 @@ APP_ENV=local
|
||||||
APP_KEY=
|
APP_KEY=
|
||||||
APP_DEBUG=true
|
APP_DEBUG=true
|
||||||
APP_URL=http://localhost
|
APP_URL=http://localhost
|
||||||
|
APP_DOMAIN=
|
||||||
|
|
||||||
LOG_CHANNEL=stack
|
LOG_CHANNEL=stack
|
||||||
|
|
||||||
|
|
@ -37,7 +38,6 @@ CAFEL_PASSWORD=
|
||||||
MAIL_INVALID_CAFEL_DATA=equipe.web@ldc.fr
|
MAIL_INVALID_CAFEL_DATA=equipe.web@ldc.fr
|
||||||
MAIL_INVALID_CAFEL_DATA_IMAGE=equipe.web@ldc.fr
|
MAIL_INVALID_CAFEL_DATA_IMAGE=equipe.web@ldc.fr
|
||||||
MAIL_INVALID_XML=equipe.web@ldc.fr
|
MAIL_INVALID_XML=equipe.web@ldc.fr
|
||||||
MAIL_LIST_SERVICEWEB=equipe.web@ldc.fr
|
|
||||||
|
|
||||||
## LDC WEB STATUS CHECKER
|
## LDC WEB STATUS CHECKER
|
||||||
LDC_STATUS_CHECKER_API_KEY="MY_KEY"
|
LDC_STATUS_CHECKER_API_KEY="MY_KEY"
|
||||||
|
|
@ -45,6 +45,9 @@ LDC_STATUS_CHECKER_UUID="UUID_PROJECT"
|
||||||
## LDC WEB ADMIN SECURE
|
## LDC WEB ADMIN SECURE
|
||||||
LDC_WEB_API_KEY="MY_KEY"
|
LDC_WEB_API_KEY="MY_KEY"
|
||||||
|
|
||||||
|
|
||||||
## GOOGLE
|
## GOOGLE
|
||||||
ANALYTICS_GOOGLE_ID=
|
ANALYTICS_GOOGLE_ID=
|
||||||
|
|
||||||
|
# TERRE D'ACTION MODAL (YYYY-MM-DD)
|
||||||
|
TERRE_ACTION_START_DATE=
|
||||||
|
TERRE_ACTION_END_DATE=
|
||||||
|
|
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -18,3 +18,4 @@ Homestead.json
|
||||||
Homestead.yaml
|
Homestead.yaml
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
|
auth.json
|
||||||
|
|
@ -1,46 +1,12 @@
|
||||||
image: $CI_REGISTRY/service-web-lab/ldc-web-images-docker/ldcweb-qa:php7.3-1.0
|
include:
|
||||||
|
- project: 'ldc-web/shared-ci'
|
||||||
|
ref: 'main'
|
||||||
|
file: 'lint/lint7.3.yml'
|
||||||
|
- project: 'ldc-web/shared-ci'
|
||||||
|
ref: 'main'
|
||||||
|
file: 'security/security7.3.yml'
|
||||||
|
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- Security
|
- lint
|
||||||
- CodingStandards
|
- security
|
||||||
|
|
||||||
composer-security:
|
|
||||||
stage: Security
|
|
||||||
script:
|
|
||||||
- local-php-security-checker --format=json --path=./composer.lock > composer-security-checker-report.json
|
|
||||||
artifacts:
|
|
||||||
when: on_failure
|
|
||||||
expose_as: 'composer-security-checker'
|
|
||||||
paths:
|
|
||||||
- composer-security-checker-report.json
|
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
npm-security:
|
|
||||||
stage: Security
|
|
||||||
script:
|
|
||||||
- audit-ci -p npm -o json > npm-security-checker-report.json
|
|
||||||
artifacts:
|
|
||||||
when: on_failure
|
|
||||||
expose_as: 'npm-security-checker'
|
|
||||||
paths:
|
|
||||||
- npm-security-checker-report.json
|
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
phpcs:
|
|
||||||
stage: CodingStandards
|
|
||||||
before_script:
|
|
||||||
- composer config gitlab-token.gitlab.com $CI_DEPLOY_USER $CI_DEPLOY_PASSWORD
|
|
||||||
- composer install
|
|
||||||
cache:
|
|
||||||
paths:
|
|
||||||
- vendor/
|
|
||||||
script:
|
|
||||||
- vendor/bin/phpcs --report=junit --report-file=phpcs-report.xml
|
|
||||||
artifacts:
|
|
||||||
when: on_failure
|
|
||||||
expose_as: 'phpcs'
|
|
||||||
paths:
|
|
||||||
- phpcs-report.xml
|
|
||||||
reports:
|
|
||||||
junit: phpcs-report.xml
|
|
||||||
allow_failure: false
|
|
||||||
|
|
|
||||||
11
.gitlab/issue_templates/bug.md
Normal file
11
.gitlab/issue_templates/bug.md
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
## Comportement constaté
|
||||||
|
|
||||||
|
|
||||||
|
## Comportement attendu
|
||||||
|
|
||||||
|
|
||||||
|
## Solution envisagée
|
||||||
|
|
||||||
|
|
||||||
|
## Étapes pour la reproduction du bug
|
||||||
|
*
|
||||||
7
.gitlab/issue_templates/feature.md
Normal file
7
.gitlab/issue_templates/feature.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
## Présentation du besoin
|
||||||
|
|
||||||
|
|
||||||
|
## Implémentation
|
||||||
|
|
||||||
|
|
||||||
|
## Maquettes, documentations...
|
||||||
|
|
@ -30,11 +30,11 @@ class Kernel extends ConsoleKernel
|
||||||
protected function schedule(Schedule $schedule)
|
protected function schedule(Schedule $schedule)
|
||||||
{
|
{
|
||||||
// * Jobs cafel sur queue cafel
|
// * Jobs cafel sur queue cafel
|
||||||
$schedule->job(CafelFoodJob::class, 'cafel')->onOneServer()->everyThreeHours();
|
$schedule->job(CafelFoodJob::class, 'cafel')->onOneServer()->dailyAt('22h30');
|
||||||
$schedule->job(CafelBeaVolJob::class, 'cafel')->onOneServer()->everyThreeHours();
|
$schedule->job(CafelBeaVolJob::class, 'cafel')->onOneServer()->dailyAt('22h45');
|
||||||
$schedule->job(CafelMepEggJob::class, 'cafel')->onOneServer()->everyThreeHours();
|
$schedule->job(CafelMepEggJob::class, 'cafel')->onOneServer()->dailyAt('23h00');
|
||||||
$schedule->job(CafelEggBreederJob::class, 'cafel')->onOneServer()->everyThreeHours();
|
$schedule->job(CafelEggBreederJob::class, 'cafel')->onOneServer()->dailyAt('23h15');
|
||||||
$schedule->job(CafelPoultryBreederJob::class, 'cafel')->onOneServer()->everyThreeHours();
|
$schedule->job(CafelPoultryBreederJob::class, 'cafel')->onOneServer()->dailyAt('23h30');
|
||||||
|
|
||||||
$schedule->job(XmlFluxEggJob::class, 'tracea')->onOneServer()->dailyAt('02:00');
|
$schedule->job(XmlFluxEggJob::class, 'tracea')->onOneServer()->dailyAt('02:00');
|
||||||
$schedule->job(XmlFluxPoultryJob::class, 'tracea')->onOneServer()->dailyAt('22:00');
|
$schedule->job(XmlFluxPoultryJob::class, 'tracea')->onOneServer()->dailyAt('22:00');
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ namespace App\Exceptions;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Support\Facades\Mail;
|
use Illuminate\Support\Facades\Mail;
|
||||||
use Throwable;
|
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
||||||
use Kwaadpepper\ExceptionHandler\Exceptions\ExceptionHandler;
|
use Sentry\Laravel\Integration;
|
||||||
|
|
||||||
class Handler extends ExceptionHandler
|
class Handler extends ExceptionHandler
|
||||||
{
|
{
|
||||||
|
|
@ -27,18 +27,19 @@ class Handler extends ExceptionHandler
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Report or log an exception.
|
* Register the exception handling callbacks for the application.
|
||||||
*
|
*
|
||||||
* @param \Throwable $exception
|
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function report(Throwable $exception)
|
public function register()
|
||||||
{
|
{
|
||||||
if ($exception instanceof CafelApiImageFetchException) {
|
$this->reportable(function (\Throwable $e) {
|
||||||
$this->reportCafelApiImageErrorException($exception);
|
if ($e instanceof CafelApiImageFetchException) {
|
||||||
return;
|
$this->reportCafelApiImageErrorException($e);
|
||||||
}
|
return;
|
||||||
parent::report($exception);
|
}
|
||||||
|
Integration::captureUnhandledException($e);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ class EggController extends Controller
|
||||||
$mobas = TraceaEgg::where('box_code', $id)->orderBy('box_code', 'DESC')->first();
|
$mobas = TraceaEgg::where('box_code', $id)->orderBy('box_code', 'DESC')->first();
|
||||||
|
|
||||||
if (!$mobas) {
|
if (!$mobas) {
|
||||||
return redirect('/search');
|
return redirect()->route('egg.search');
|
||||||
}
|
}
|
||||||
|
|
||||||
$edes = $mobas->code_edes;
|
$edes = $mobas->code_edes;
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ class TrustHosts extends Middleware
|
||||||
public function hosts()
|
public function hosts()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
\config('app.egg_domain'),
|
||||||
$this->allSubdomainsOfApplicationUrl(),
|
$this->allSubdomainsOfApplicationUrl(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ class RemoveOldXmlEntries
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
$q = TraceaEgg::query();
|
$q = TraceaEgg::query();
|
||||||
$q->where('dcr', '<=', now()->subMonths(config('tracea.keepEggMonths', 12)))->destroy();
|
$q->where('dcr', '<=', now()->subMonths(config('tracea.keepEggMonths', 12)));
|
||||||
$q->delete();
|
$q->delete();
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
report($e);
|
report($e);
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
namespace App\Jobs;
|
namespace App\Jobs;
|
||||||
|
|
||||||
use App\Lib\CafelApi\Models\CafelClientModel;
|
use App\Lib\CafelApi\Models\CafelClientModel;
|
||||||
|
use GuzzleHttp\Exception\ConnectException;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
|
|
@ -84,7 +86,11 @@ abstract class CafelJobs implements ShouldQueue
|
||||||
$attribute => collect($messages)->implode(', ') . $verifiedValue
|
$attribute => collect($messages)->implode(', ') . $verifiedValue
|
||||||
];
|
];
|
||||||
})->implode(' '))->all();
|
})->implode(' '))->all();
|
||||||
}
|
} catch (ConnectException | RequestException $e) {
|
||||||
|
// ! Guzzle SSL Error connection failure
|
||||||
|
\report($e);
|
||||||
|
$this->invalidRows[] = collect($row)->put('validation_message', $e->getMessage())->all();
|
||||||
|
}//end try
|
||||||
}//end foreach
|
}//end foreach
|
||||||
} while (!empty($result));
|
} while (!empty($result));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
190
app/Lib/ExceptionsHelper.php
Normal file
190
app/Lib/ExceptionsHelper.php
Normal file
|
|
@ -0,0 +1,190 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Lib;
|
||||||
|
|
||||||
|
class ExceptionsHelper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Handle sentry event
|
||||||
|
*
|
||||||
|
* @param \Sentry\Event $event
|
||||||
|
* @return null|\Sentry\Event
|
||||||
|
*/
|
||||||
|
public static function sentryEventHandler(\Sentry\Event $event): ?\Sentry\Event
|
||||||
|
{
|
||||||
|
// Remove unwanted reports.
|
||||||
|
$event->setModules([]);
|
||||||
|
$event->setOsContext(null);
|
||||||
|
|
||||||
|
/** @var \Sentry\ExceptionDataBag[] */
|
||||||
|
$exceptionBag = [];
|
||||||
|
foreach ($event->getExceptions() as $exceptionDataBag) {
|
||||||
|
$exceptionBag[] = self::getAnonymizedSentryException($exceptionDataBag);
|
||||||
|
}
|
||||||
|
$event->setExceptions($exceptionBag);
|
||||||
|
return $event;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Anonimize Sentry Exception bag
|
||||||
|
*
|
||||||
|
* @param \Sentry\ExceptionDataBag $exceptionDataBag
|
||||||
|
* @return \Sentry\ExceptionDataBag
|
||||||
|
*/
|
||||||
|
private static function getAnonymizedSentryException(
|
||||||
|
\Sentry\ExceptionDataBag $exceptionDataBag
|
||||||
|
): \Sentry\ExceptionDataBag {
|
||||||
|
$exceptionDataBag->setValue(self::getAnonymizedMessage($exceptionDataBag->getValue()));
|
||||||
|
if ($stackTrace = $exceptionDataBag->getStacktrace()) {
|
||||||
|
$exceptionDataBag->setStacktrace(self::getAnonymizedSentryStackTrace($stackTrace));
|
||||||
|
}
|
||||||
|
return $exceptionDataBag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Anonymise sentry stacktrace
|
||||||
|
*
|
||||||
|
* @param \Sentry\Stacktrace $stackTrace
|
||||||
|
* @return \Sentry\Stacktrace
|
||||||
|
*/
|
||||||
|
private static function getAnonymizedSentryStackTrace(\Sentry\Stacktrace $stackTrace): \Sentry\Stacktrace
|
||||||
|
{
|
||||||
|
/** @var \Sentry\Frame[] */
|
||||||
|
$frames = \array_reverse($stackTrace->getFrames(), true);
|
||||||
|
$i = \count($frames) - 1;
|
||||||
|
// * Remove all but keep first (index.php).
|
||||||
|
while ($i-- > 0) {
|
||||||
|
$stackTrace->removeFrame(count($stackTrace->getFrames()) - 1);
|
||||||
|
}
|
||||||
|
foreach ($frames as $index => $frame) {
|
||||||
|
$frame->setPostContext([]);
|
||||||
|
$frame->setPreContext([]);
|
||||||
|
$frame->setContextLine('');
|
||||||
|
$frame->setVars(self::getAnonymizedSentryParams($frame->getVars()));
|
||||||
|
$stackTrace->addFrame($frame);
|
||||||
|
if ($index === 0) {
|
||||||
|
$stackTrace->removeFrame(count($stackTrace->getFrames()) - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $stackTrace;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get anonymized sentry params
|
||||||
|
*
|
||||||
|
* @param mixed[] $params
|
||||||
|
* @return string[]
|
||||||
|
*/
|
||||||
|
private static function getAnonymizedSentryParams(array $params): array
|
||||||
|
{
|
||||||
|
foreach ($params as &$param) {
|
||||||
|
$type = \strtolower(\gettype($param));
|
||||||
|
if (\is_string($param)) {
|
||||||
|
$type = \explode(' ', \trim($param))[0] ?? null;
|
||||||
|
}
|
||||||
|
switch ($type) {
|
||||||
|
case 'Lambda':
|
||||||
|
case 'Object':
|
||||||
|
continue 2;
|
||||||
|
case 'array':
|
||||||
|
$param = sprintf('Array(%d)', \count($param));
|
||||||
|
continue 2;
|
||||||
|
default:
|
||||||
|
if (\is_numeric($param)) {
|
||||||
|
$param = \ucfirst($type);
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
if (\is_string($param)) {
|
||||||
|
$param = sprintf('String(%d)', \strlen($param));
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
} //end switch
|
||||||
|
} //end foreach
|
||||||
|
return $params;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Anonymize at least Sql queries
|
||||||
|
*
|
||||||
|
* @param string $message
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getAnonymizedMessage(string $message): string
|
||||||
|
{
|
||||||
|
$message = \preg_replace('/^(.*)( \(SQL:.*\))$/', '$1', $message) ?? $message;
|
||||||
|
if ($sqlPos = \strpos($message, 'to use near')) {
|
||||||
|
$message = \mb_strcut($message, 0, $sqlPos);
|
||||||
|
}
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Anonymize stack trace
|
||||||
|
*
|
||||||
|
* @param \Throwable $e
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getAnonymizedStackTrace(\Throwable $e): string
|
||||||
|
{
|
||||||
|
$projectPath = \realpath(\sprintf('%s/../', \app_path()));
|
||||||
|
$traceStack = $e->getTrace();
|
||||||
|
$traceStr = '';
|
||||||
|
$maxStackStage = 0;
|
||||||
|
foreach ($traceStack as $stackStage => $stack) {
|
||||||
|
$maxStackStage = $stackStage;
|
||||||
|
$traceStr .= \sprintf(
|
||||||
|
'#%s %s(%d): ',
|
||||||
|
$stackStage,
|
||||||
|
str_replace($projectPath, '', $stack['file'] ?? ''),
|
||||||
|
$stack['line'] ?? ''
|
||||||
|
);
|
||||||
|
if (isset($stack['class'])) {
|
||||||
|
$traceStr .= "{$stack['class']}->{$stack['function']}(";
|
||||||
|
if (isset($stack['args'])) {
|
||||||
|
$traceStr .= self::handleArgs($stack);
|
||||||
|
}
|
||||||
|
$traceStr .= ")\n";
|
||||||
|
} elseif (isset($stack['function'])) {
|
||||||
|
$traceStr .= "{$stack['function']}(";
|
||||||
|
if (isset($stack['args'])) {
|
||||||
|
$traceStr .= self::handleArgs($stack);
|
||||||
|
}
|
||||||
|
$traceStr .= ")\n";
|
||||||
|
}
|
||||||
|
} //end foreach
|
||||||
|
$maxStackStage++;
|
||||||
|
$traceStr .= "#$maxStackStage {main}";
|
||||||
|
return $traceStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle Args
|
||||||
|
*
|
||||||
|
* @param array $stack
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function handleArgs(array $stack): string
|
||||||
|
{
|
||||||
|
$traceArgs = '';
|
||||||
|
$argsCount = count($stack['args']);
|
||||||
|
for ($i = 0; $i < $argsCount; $i++) {
|
||||||
|
$type = \gettype($stack['args'][$i]);
|
||||||
|
switch ($type) {
|
||||||
|
case 'object':
|
||||||
|
$traceArgs .= sprintf('Object(%s)', \get_class($stack['args'][$i]));
|
||||||
|
break;
|
||||||
|
case 'array':
|
||||||
|
$traceArgs .= sprintf('Array(%d)', \count($stack['args'][$i]));
|
||||||
|
break;
|
||||||
|
case 'string':
|
||||||
|
$traceArgs .= sprintf('String(%d)', \strlen($stack['args'][$i]));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$traceArgs .= \gettype($stack['args'][$i]);
|
||||||
|
}
|
||||||
|
$traceArgs .= ($i !== ($argsCount - 1) ? ',' : '');
|
||||||
|
}
|
||||||
|
return $traceArgs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -99,8 +99,8 @@ class CafelEggBreeder extends Model
|
||||||
{
|
{
|
||||||
// * EVENT CLOSURES.
|
// * EVENT CLOSURES.
|
||||||
static::creating(function (self $model) {
|
static::creating(function (self $model) {
|
||||||
return self::areInuavCodesUniques($model);
|
self::areInuavCodesUniques($model);
|
||||||
return self::isEdeCodeUnique($model);
|
self::isEdeCodeUnique($model);
|
||||||
});
|
});
|
||||||
static::updating(function (self $model) {
|
static::updating(function (self $model) {
|
||||||
if ($model->getRawOriginal('path_picture_1') !== $model->path_picture_1) {
|
if ($model->getRawOriginal('path_picture_1') !== $model->path_picture_1) {
|
||||||
|
|
@ -109,8 +109,8 @@ class CafelEggBreeder extends Model
|
||||||
if ($model->getRawOriginal('path_picture_2') !== $model->path_picture_2) {
|
if ($model->getRawOriginal('path_picture_2') !== $model->path_picture_2) {
|
||||||
Storage::delete(\public_path($model->getRawOriginal('path_picture_2')));
|
Storage::delete(\public_path($model->getRawOriginal('path_picture_2')));
|
||||||
}
|
}
|
||||||
return self::areInuavCodesUniques($model);
|
self::areInuavCodesUniques($model);
|
||||||
return self::isEdeCodeUnique($model);
|
self::isEdeCodeUnique($model);
|
||||||
});
|
});
|
||||||
static::deleting(function (self $model) {
|
static::deleting(function (self $model) {
|
||||||
if ($model->getRawOriginal('path_picture_1')) {
|
if ($model->getRawOriginal('path_picture_1')) {
|
||||||
|
|
|
||||||
26
app/Providers/ViewServiceProvider.php
Normal file
26
app/Providers/ViewServiceProvider.php
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Providers;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Support\Facades\View;
|
||||||
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
|
class ViewServiceProvider extends ServiceProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Bootstrap any application services.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function boot(): void
|
||||||
|
{
|
||||||
|
if (!app()->runningInConsole()) {
|
||||||
|
View::share('isDisplayedTAModal', (function () {
|
||||||
|
$now = now();
|
||||||
|
return $now->greaterThanOrEqualTo(new Carbon(config('modal.terreActionStartDate'))) &&
|
||||||
|
$now->lessThanOrEqualTo(new Carbon(config('modal.terreActionEndDate')));
|
||||||
|
})());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
"gitlab-token": {
|
|
||||||
"gitlab.com": "glpat-gbNVMUd6T2kaB5eii7TZ"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -17,16 +17,16 @@
|
||||||
"fideloper/proxy": "^4.0",
|
"fideloper/proxy": "^4.0",
|
||||||
"guzzlehttp/guzzle": "^7.4",
|
"guzzlehttp/guzzle": "^7.4",
|
||||||
"kwaadpepper/enum": "^2.1",
|
"kwaadpepper/enum": "^2.1",
|
||||||
"kwaadpepper/exception-handler": "^0.0.6",
|
|
||||||
"kwaadpepper/refresh-sitemap": "^1.0",
|
"kwaadpepper/refresh-sitemap": "^1.0",
|
||||||
"laravel/framework": "^8.0",
|
"laravel/framework": "^8.0",
|
||||||
"laravel/tinker": "^2.0",
|
"laravel/tinker": "^2.0",
|
||||||
"laravel/ui": "^3.0",
|
"laravel/ui": "^3.0",
|
||||||
"laravelcollective/html": "^6.0",
|
"laravelcollective/html": "^6.0",
|
||||||
"ldc/web-admin-secure-laravel": "1.0.1",
|
"ldc/web-admin-secure-laravel": "^1.0",
|
||||||
"ldc/web-status-checker-laravel": "^1.0",
|
"ldc/web-status-checker-laravel": "^1.0",
|
||||||
"mews/purifier": "^3.3",
|
"mews/purifier": "^3.3",
|
||||||
"nesbot/carbon": "^2.29",
|
"nesbot/carbon": "^2.29",
|
||||||
|
"sentry/sentry-laravel": "^3.1",
|
||||||
"spatie/laravel-mix-preload": "^1.3"
|
"spatie/laravel-mix-preload": "^1.3"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
|
@ -45,7 +45,10 @@
|
||||||
"sort-packages": true,
|
"sort-packages": true,
|
||||||
"allow-plugins": {
|
"allow-plugins": {
|
||||||
"dealerdirect/phpcodesniffer-composer-installer": true
|
"dealerdirect/phpcodesniffer-composer-installer": true
|
||||||
}
|
},
|
||||||
|
"gitlab-domains": [
|
||||||
|
"lab.s-web.fr"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"extra": {
|
"extra": {
|
||||||
"laravel": {
|
"laravel": {
|
||||||
|
|
@ -79,9 +82,9 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"repositories": {
|
"repositories": {
|
||||||
"gitlab.com/16669037": {
|
"lab.s-web.fr": {
|
||||||
"type": "composer",
|
"type": "composer",
|
||||||
"url": "https://gitlab.com/api/v4/group/16669037/-/packages/composer/packages.json"
|
"url": "https://lab.s-web.fr/api/v4/group/23/-/packages/composer/packages.json"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2197
composer.lock
generated
2197
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -53,6 +53,8 @@ return [
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'url' => env('APP_URL', 'http://localhost'),
|
'url' => env('APP_URL', 'http://localhost'),
|
||||||
|
'domain' => env('APP_DOMAIN', 'tracabilite.loue.fr'),
|
||||||
|
'egg_domain' => env('APP_EGG_DOMAIN', 'bo.gt'),
|
||||||
|
|
||||||
'asset_url' => env('ASSET_URL', null),
|
'asset_url' => env('ASSET_URL', null),
|
||||||
|
|
||||||
|
|
@ -175,6 +177,7 @@ return [
|
||||||
App\Providers\AuthServiceProvider::class,
|
App\Providers\AuthServiceProvider::class,
|
||||||
App\Providers\EventServiceProvider::class,
|
App\Providers\EventServiceProvider::class,
|
||||||
App\Providers\RouteServiceProvider::class,
|
App\Providers\RouteServiceProvider::class,
|
||||||
|
App\Providers\ViewServiceProvider::class,
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
@ -234,7 +237,4 @@ return [
|
||||||
'CafelPoultryBreeder' => \App\Models\CafelPoultryBreeder::class,
|
'CafelPoultryBreeder' => \App\Models\CafelPoultryBreeder::class,
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
'project_uuid' => env('PROJECT_UUID'),
|
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
/**
|
|
||||||
* Send mail when app debug is turn off
|
|
||||||
* so you can be warned if an unhandled exception occurs
|
|
||||||
*/
|
|
||||||
'enableMaiLog' => !config('app.debug'),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Put a developper secured mailbox in here
|
|
||||||
* so you can receive email if things go mad
|
|
||||||
*/
|
|
||||||
'contactsList' => explode(',', env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr')),
|
|
||||||
];
|
|
||||||
6
config/modal.php
Normal file
6
config/modal.php
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'terreActionStartDate' => env('TERRE_ACTION_START_DATE'),
|
||||||
|
'terreActionEndDate' => env('TERRE_ACTION_END_DATE')
|
||||||
|
];
|
||||||
62
config/sentry.php
Normal file
62
config/sentry.php
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
'dsn' => env('SENTRY_LARAVEL_DSN', env('SENTRY_DSN')),
|
||||||
|
|
||||||
|
// The release version of your application
|
||||||
|
// Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')).
|
||||||
|
'release' => env('SENTRY_RELEASE'),
|
||||||
|
|
||||||
|
// When left empty or `null` the Laravel environment will be used.
|
||||||
|
'environment' => env('SENTRY_ENVIRONMENT'),
|
||||||
|
|
||||||
|
'breadcrumbs' => [
|
||||||
|
// Capture Laravel logs in breadcrumbs.
|
||||||
|
'logs' => true,
|
||||||
|
|
||||||
|
// Capture SQL queries in breadcrumbs.
|
||||||
|
'sql_queries' => true,
|
||||||
|
|
||||||
|
// Capture bindings on SQL queries logged in breadcrumbs.
|
||||||
|
'sql_bindings' => true,
|
||||||
|
|
||||||
|
// Capture queue job information in breadcrumbs.
|
||||||
|
'queue_info' => true,
|
||||||
|
|
||||||
|
// Capture command information in breadcrumbs.
|
||||||
|
'command_info' => true,
|
||||||
|
],
|
||||||
|
|
||||||
|
'tracing' => [
|
||||||
|
// Trace queue jobs as their own transactions.
|
||||||
|
'queue_job_transactions' => env('SENTRY_TRACE_QUEUE_ENABLED', false),
|
||||||
|
|
||||||
|
// Capture queue jobs as spans when executed on the sync driver.
|
||||||
|
'queue_jobs' => true,
|
||||||
|
|
||||||
|
// Capture SQL queries as spans.
|
||||||
|
'sql_queries' => true,
|
||||||
|
|
||||||
|
// Try to find out where the SQL query originated from and add it to the query spans.
|
||||||
|
'sql_origin' => true,
|
||||||
|
|
||||||
|
// Capture views as spans.
|
||||||
|
'views' => true,
|
||||||
|
|
||||||
|
// Indicates if the tracing integrations supplied by Sentry should be loaded.
|
||||||
|
'default_integrations' => true,
|
||||||
|
|
||||||
|
// Indicates that requests without a matching route should be traced.
|
||||||
|
'missing_routes' => false,
|
||||||
|
],
|
||||||
|
|
||||||
|
// @see: https://docs.sentry.io/platforms/php/guides/laravel/configuration/options/#send-default-pii
|
||||||
|
'send_default_pii' => env('SENTRY_SEND_DEFAULT_PII', false),
|
||||||
|
|
||||||
|
// @see: https://docs.sentry.io/platforms/php/guides/laravel/configuration/options/#traces-sample-rate
|
||||||
|
'traces_sample_rate' => env('SENTRY_TRACES_SAMPLE_RATE') === null ? null : (float)env('SENTRY_TRACES_SAMPLE_RATE'),
|
||||||
|
|
||||||
|
'before_send' => [\App\Lib\ExceptionsHelper::class, 'sentryEventHandler'],
|
||||||
|
|
||||||
|
];
|
||||||
File diff suppressed because it is too large
Load diff
5138
package-lock.json
generated
5138
package-lock.json
generated
File diff suppressed because it is too large
Load diff
2
resources/js/alert.js
vendored
2
resources/js/alert.js
vendored
|
|
@ -10,7 +10,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
imageHeight: 200,
|
imageHeight: 200,
|
||||||
imageAlt: 'Logo Loué terre d\'action',
|
imageAlt: 'Logo Loué terre d\'action',
|
||||||
background: '#4b8764',
|
background: '#4b8764',
|
||||||
confirmButtonText: '<a href="https://www.loue.fr/article/Des-arbres-et-des-haies-pour-les-volailles-fermières-de-Loué/a3.aspx" target="_blank">Je valide mon achat</a>',
|
confirmButtonText: '<a href="https://action-reboisement.loue.fr" target="_blank">Je valide mon achat</a>',
|
||||||
confirmButtonColor: '#005621',
|
confirmButtonColor: '#005621',
|
||||||
showCloseButton: true,
|
showCloseButton: true,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
23
resources/sass/front.scss
vendored
23
resources/sass/front.scss
vendored
|
|
@ -1,19 +1,19 @@
|
||||||
// Variables
|
// 1. Include new custom variables
|
||||||
@import 'variables';
|
@import 'variables';
|
||||||
|
|
||||||
|
|
||||||
// 1. Include functions first (so you can manipulate colors, SVGs, calc, etc)
|
// 2. Include functions first (so you can manipulate colors, SVGs, calc, etc)
|
||||||
@import '~bootstrap/scss/functions';
|
@import "~bootstrap/scss/functions";
|
||||||
|
|
||||||
// 2. Include any default variable overrides here
|
|
||||||
|
|
||||||
// 3. Include remainder of required Bootstrap stylesheets
|
// 3. Include remainder of required Bootstrap stylesheets
|
||||||
@import '~bootstrap/scss/variables';
|
@import "~bootstrap/scss/variables";
|
||||||
@import '~bootstrap/scss/mixins';
|
|
||||||
|
|
||||||
|
// 4. Include remainder of required parts
|
||||||
|
@import "~bootstrap/scss/maps";
|
||||||
|
@import "~bootstrap/scss/mixins";
|
||||||
|
@import "~bootstrap/scss/root";
|
||||||
|
|
||||||
// 4. Include any optional Bootstrap components as you like
|
// 5. Optionally include any other parts as needed
|
||||||
@import '~bootstrap/scss/root';
|
|
||||||
@import '~bootstrap/scss/reboot';
|
@import '~bootstrap/scss/reboot';
|
||||||
@import '~bootstrap/scss/type';
|
@import '~bootstrap/scss/type';
|
||||||
@import '~bootstrap/scss/images';
|
@import '~bootstrap/scss/images';
|
||||||
|
|
@ -27,6 +27,9 @@
|
||||||
@import '~bootstrap/scss/alert';
|
@import '~bootstrap/scss/alert';
|
||||||
@import '~bootstrap/scss/close';
|
@import '~bootstrap/scss/close';
|
||||||
|
|
||||||
|
// 6. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss`
|
||||||
|
@import "~bootstrap/scss/utilities/api";
|
||||||
|
|
||||||
// Fix for bootstrap
|
// Fix for bootstrap
|
||||||
.text-break {
|
.text-break {
|
||||||
overflow-wrap: break-word !important;
|
overflow-wrap: break-word !important;
|
||||||
|
|
@ -43,4 +46,4 @@
|
||||||
// App
|
// App
|
||||||
@import './front/variables';
|
@import './front/variables';
|
||||||
@import './front/pages';
|
@import './front/pages';
|
||||||
@import './front/alert';
|
@import './front/alert';
|
||||||
|
|
|
||||||
|
|
@ -5,31 +5,33 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page yellow">
|
<div class="sub-page yellow">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.FrontPage', ['id' => request()->id])}}">
|
<a href="{{ route('egg.FrontPage', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="details-alimentation">
|
<div class="details-alimentation">
|
||||||
<p class="title">De quoi est composée l'alimentation des poules ?</p>
|
<p class="title">De quoi est composée l'alimentation des poules ?</p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
@if (Session::get('subColor') == 'blue')
|
@if (Session::get('subColor') == 'blue')
|
||||||
<img src="{{ asset('assets/images/parts/alimentation-lr.jpg') }}" alt="Alimentation Label Rouge" class="type active">
|
<img class="type active" src="{{ asset('assets/images/parts/alimentation-lr.jpg') }}" alt="Alimentation Label Rouge">
|
||||||
@else
|
@else
|
||||||
<img src="{{ asset('assets/images/parts/alimentation-bio.jpg') }}" alt="Alimentation Bio" class="type active">
|
<img class="type active" src="{{ asset('assets/images/parts/alimentation-bio.jpg') }}" alt="Alimentation Bio">
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<p class="title">D'où proviennent les céréales ?</p>
|
<p class="title">D'où proviennent les céréales ?</p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<p>De l’éleveur lui-même. Il cultive les céréales qui seront ensuite envoyées à l’usine d’aliments de la coopérative des Fermiers de Loué, ALIFEL, pour les transformer en alimentation pour poules, qui sera ensuite retournée à l’éleveur.</p>
|
<p>De l’éleveur lui-même. Il cultive les céréales qui seront ensuite envoyées à l’usine d’aliments de la coopérative des
|
||||||
<img src="{{ asset('assets/images/parts/circuit_alimentation.png') }}" alt="Circuit Alimentation" class="circuit">
|
Fermiers de Loué, ALIFEL, pour les transformer en alimentation pour poules, qui sera ensuite retournée à l’éleveur.
|
||||||
|
</p>
|
||||||
|
<img class="circuit" src="{{ asset('assets/images/parts/circuit_alimentation.png') }}" alt="Circuit Alimentation">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,22 +5,24 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page emballage">
|
<div class="sub-page emballage">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.FrontPage', ['id' => request()->id])}}">
|
<a href="{{ route('egg.FrontPage', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="details-alimentation">
|
<div class="details-alimentation">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<img src="{{ asset('assets/images/egg/LOGO_LOEUF.png') }}" alt="Logo l'oeuf" class="oeuf">
|
<img class="oeuf" src="{{ asset('assets/images/egg/LOGO_LOEUF.png') }}" alt="Logo l'oeuf">
|
||||||
<p>Une fois les œufs triés à la main par nos éleveurs, un camion passe 4 fois par semaine dans les fermes pour les récupérer et les emmener au centre d’emballage : LOEUF (72). Les œufs pourront y être contrôlés, triés, calibrés et emballés dans les boîtes prêts à être livrés dans vos magasins.</p>
|
<p>Une fois les œufs triés à la main par nos éleveurs, un camion passe 4 fois par semaine dans les fermes pour les
|
||||||
|
récupérer et les emmener au centre d’emballage : LOEUF (72). Les œufs pourront y être contrôlés, triés, calibrés et
|
||||||
|
emballés dans les boîtes prêts à être livrés dans vos magasins.</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,23 +5,25 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page elevage">
|
<div class="sub-page elevage">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.infoElevage', ['id' => request()->id])}}">
|
<a href="{{ route('egg.infoElevage', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="elevage-liberte text-center">
|
<div class="elevage-liberte text-center">
|
||||||
<p class="title">Un mode d'élevage en liberté,<br>qu'est-ce que cela signifie ?</p>
|
<p class="title">Un mode d'élevage en liberté,<br>qu'est-ce que cela signifie ?</p>
|
||||||
<img class="img img-fluid" src="{{ asset('assets/images/egg/generique.jpg') }}" alt="Loué">
|
<img class="img img-fluid" src="{{ asset('assets/images/egg/generique.jpg') }}" alt="Loué">
|
||||||
<div class="items">
|
<div class="items">
|
||||||
<p class="description">Nos poules gambadent librement, du matin au crépuscule, en profitant en moyenne de 50 000 m2 (5 hectares) de prairies arborées. Toutes les fermes disposent d’un parcours boisé sur lequel elles peuvent compléter leur alimentation et laisser libre cours à leur comportement naturel : gratter, picorer, fouiller, courir !</p>
|
<p class="description">Nos poules gambadent librement, du matin au crépuscule, en profitant en moyenne de 50 000 m2 (5
|
||||||
|
hectares) de prairies arborées. Toutes les fermes disposent d’un parcours boisé sur lequel elles peuvent compléter
|
||||||
|
leur alimentation et laisser libre cours à leur comportement naturel : gratter, picorer, fouiller, courir !</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,75 +5,79 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page elevage">
|
<div class="sub-page elevage">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.FrontPage', ['id' => request()->id])}}">
|
<a href="{{ route('egg.FrontPage', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="portrait-eleveur">
|
<div class="portrait-eleveur">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
@if ($eleveur->path_picture_2 != null && $eleveur->path_picture_2 != "")
|
@if ($eleveur->path_picture_2 != null && $eleveur->path_picture_2 != '')
|
||||||
<img src="{{ asset($eleveur->path_picture_2) }}" alt="Éleveur">
|
<img src="{{ asset($eleveur->path_picture_2) }}" alt="Éleveur">
|
||||||
@else
|
|
||||||
<img src="{{ asset('assets/images/parts/generique_portrait.jpg') }}" alt="Éleveur">
|
|
||||||
@endif
|
|
||||||
<div class="content">
|
|
||||||
<p>
|
|
||||||
<span class="name green">{{$eleveur->firstname}} {{$eleveur->lastname}}</span><br>
|
|
||||||
@if ($age)
|
|
||||||
{{$age}} ans <span class="green">/</span>
|
|
||||||
@endif
|
|
||||||
{{$eleveur->city}} ({{$eleveur->postcode}})
|
|
||||||
</p>
|
|
||||||
|
|
||||||
@if ($ageElevage)
|
|
||||||
@switch($eleveur->civilite)
|
|
||||||
@case(App\Enums\BreederCivilty::elle())
|
|
||||||
<p>Éleveuse de poules de Loué depuis {{$ageElevage}} ans</p>
|
|
||||||
@break
|
|
||||||
@case(App\Enums\BreederCivilty::il())
|
|
||||||
<p>Éleveur de poules de Loué depuis {{$ageElevage}} ans</p>
|
|
||||||
@break
|
|
||||||
@case(App\Enums\BreederCivilty::elles())
|
|
||||||
<p>Éleveuses de poules de Loué depuis {{$ageElevage}} ans</p>
|
|
||||||
@break
|
|
||||||
@case(App\Enums\BreederCivilty::ils())
|
|
||||||
<p>Éleveurs de poules de Loué depuis {{$ageElevage}} ans</p>
|
|
||||||
@break
|
|
||||||
@default
|
|
||||||
<p>Éleveur(se) de poules de Loué depuis {{$ageElevage}} ans</p>
|
|
||||||
@endswitch
|
|
||||||
@endif
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="pagination">
|
|
||||||
<div class="prev"></div>
|
|
||||||
<div class="next"></div>
|
|
||||||
<p>Question<br><span id="q-index">1</span>/{{count($questions)}}</p>
|
|
||||||
</div>
|
|
||||||
<div class="slider">
|
|
||||||
@foreach ($questions as $key => $question)
|
|
||||||
@if ($key == 0)
|
|
||||||
<div class="item active" id="q-{{$key + 1}}">
|
|
||||||
@else
|
@else
|
||||||
<div class="item" id="q-{{$key + 1}}">
|
<img src="{{ asset('assets/images/parts/generique_portrait.jpg') }}" alt="Éleveur">
|
||||||
|
@endif
|
||||||
|
<div class="content">
|
||||||
|
<p>
|
||||||
|
<span class="name green">{{ $eleveur->firstname }} {{ $eleveur->lastname }}</span><br>
|
||||||
|
@if ($age)
|
||||||
|
{{ $age }} ans <span class="green">/</span>
|
||||||
|
@endif
|
||||||
|
{{ $eleveur->city }} ({{ $eleveur->postcode }})
|
||||||
|
</p>
|
||||||
|
|
||||||
|
@if ($ageElevage)
|
||||||
|
@switch($eleveur->civilite)
|
||||||
|
@case(App\Enums\BreederCivilty::elle())
|
||||||
|
<p>Éleveuse de poules de Loué depuis {{ $ageElevage }} ans</p>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case(App\Enums\BreederCivilty::il())
|
||||||
|
<p>Éleveur de poules de Loué depuis {{ $ageElevage }} ans</p>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case(App\Enums\BreederCivilty::elles())
|
||||||
|
<p>Éleveuses de poules de Loué depuis {{ $ageElevage }} ans</p>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case(App\Enums\BreederCivilty::ils())
|
||||||
|
<p>Éleveurs de poules de Loué depuis {{ $ageElevage }} ans</p>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@default
|
||||||
|
<p>Éleveur(se) de poules de Loué depuis {{ $ageElevage }} ans</p>
|
||||||
|
@endswitch
|
||||||
@endif
|
@endif
|
||||||
<p class="question">{{$question[0]}}</p>
|
|
||||||
<p class="answer">« <span class="green">{{$question[1]}}</span> »</p>
|
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="pagination">
|
||||||
|
<div class="prev"></div>
|
||||||
|
<div class="next"></div>
|
||||||
|
<p>Question<br><span id="q-index">1</span>/{{ count($questions) }}</p>
|
||||||
|
</div>
|
||||||
|
<div class="slider">
|
||||||
|
@foreach ($questions as $key => $question)
|
||||||
|
@if ($key == 0)
|
||||||
|
<div class="item active" id="q-{{ $key + 1 }}">
|
||||||
|
@else
|
||||||
|
<div class="item" id="q-{{ $key + 1 }}">
|
||||||
|
@endif
|
||||||
|
<p class="question">{{ $question[0] }}</p>
|
||||||
|
<p class="answer">« <span class="green">{{ $question[1] }}</span> »</p>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
<script nonce="{{ $nonce }}">
|
<script nonce="{{ $nonce }}">
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
let currentPage = 1;
|
let currentPage = 1;
|
||||||
|
|
@ -109,4 +113,4 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@endpush
|
@endpush
|
||||||
|
|
|
||||||
|
|
@ -5,58 +5,59 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page elevage">
|
<div class="sub-page elevage">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.infoElevage', ['id' => request()->id])}}">
|
<a href="{{ route('egg.infoElevage', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="vs-oeufs">
|
<div class="vs-oeufs">
|
||||||
<p class="title">Quelle différence entre un œuf<br>plein air et un œuf fermier IGP<br>Label Rouge de Loué ?</p>
|
<p class="title">Quelle différence entre un œuf<br>plein air et un œuf fermier IGP<br>Label Rouge de Loué ?</p>
|
||||||
<div class="items">
|
<div class="items">
|
||||||
<p class="description">Même si les œufs Plein Air et les œufs Label Rouge de Loué bénéficient du même code d’identification (code 1), de grandes différences existent :</p>
|
<p class="description">Même si les œufs Plein Air et les œufs Label Rouge de Loué bénéficient du même code
|
||||||
<div class="tables">
|
d’identification (code 1), de grandes différences existent :</p>
|
||||||
<div class="table">
|
<div class="tables">
|
||||||
<table>
|
<div class="table">
|
||||||
<tr>
|
<table>
|
||||||
<td></td>
|
<tr>
|
||||||
<th>Œufs fermiers IGP Label Rouge de Loué de poules élevées en liberté</th>
|
<td></td>
|
||||||
<th>Œufs de poules élevées en Plein Air</th>
|
<th>Œufs fermiers IGP Label Rouge de Loué de poules élevées en liberté</th>
|
||||||
</tr>
|
<th>Œufs de poules élevées en Plein Air</th>
|
||||||
<tr>
|
</tr>
|
||||||
<td><img src="{{ asset('assets/images/egg/poule.png') }}" alt="Poule"></td>
|
<tr>
|
||||||
<td>Limité à 6 000 poules par exploitation</td>
|
<td><img src="{{ asset('assets/images/egg/poule.png') }}" alt="Poule"></td>
|
||||||
<td>Pas de limite</td>
|
<td>Limité à 6 000 poules par exploitation</td>
|
||||||
</tr>
|
<td>Pas de limite</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td><img src="{{ asset('assets/images/egg/main_œuf.png') }}" alt="Oeufs"></td>
|
<tr>
|
||||||
<td>Œufs ramassés quotidiennement et triés à la main</td>
|
<td><img src="{{ asset('assets/images/egg/main_œuf.png') }}" alt="Oeufs"></td>
|
||||||
<td>Automatisé</td>
|
<td>Œufs ramassés quotidiennement et triés à la main</td>
|
||||||
</tr>
|
<td>Automatisé</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td><img src="{{ asset('assets/images/egg/ble.png') }}" alt="Céréales"></td>
|
<tr>
|
||||||
<td>65 % de céréales locales minimu, sans OGM (< 0,9%) </td>
|
<td><img src="{{ asset('assets/images/egg/ble.png') }}" alt="Céréales"></td>
|
||||||
<td>Aucune garantie sur l’alimentation des poules</td>
|
<td>65 % de céréales locales minimum</td>
|
||||||
</tr>
|
<td>Aucune garantie sur l’alimentation des poules</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td><img src="{{ asset('assets/images/egg/mail.png') }}" alt="Lettre"></td>
|
<tr>
|
||||||
<td>Parcours extérieur de 8 m2 par poule</td>
|
<td><img src="{{ asset('assets/images/egg/mail.png') }}" alt="Lettre"></td>
|
||||||
<td>Parcours extérieur de 4 m2 par poule</td>
|
<td>Parcours extérieur de 8 m2 par poule</td>
|
||||||
</tr>
|
<td>Parcours extérieur de 4 m2 par poule</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td><img src="{{ asset('assets/images/egg/tracteur.png') }}" alt="Tracteur"></td>
|
<tr>
|
||||||
<td>Conditionnement des œufs dans un rayon de 150 km de l’élevage</td>
|
<td><img src="{{ asset('assets/images/egg/tracteur.png') }}" alt="Tracteur"></td>
|
||||||
<td>Aucune contrainte géographique entre l’élevage et le centre d’emballage</td>
|
<td>Conditionnement des œufs dans un rayon de 150 km de l’élevage</td>
|
||||||
</tr>
|
<td>Aucune contrainte géographique entre l’élevage et le centre d’emballage</td>
|
||||||
</table>
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,17 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="block {{ Session::get('subColor') }}">
|
<div class="{{ Session::get('subColor') }} block">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<p>Vous venez de scanner :</p>
|
<p>Vous venez de scanner :</p>
|
||||||
<p>Œufs fermiers de Loué de <br> poules élevées en liberté</p>
|
<p>Œufs fermiers de Loué de <br> poules élevées en liberté</p>
|
||||||
<p>{{ $dataVisuel->libelle }}</p>
|
<p>{{ optional($dataVisuel)->libelle }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<img src="{{ asset($dataVisuel->path) }}" alt="œufs" class="box_img">
|
@if ($dataVisuel)
|
||||||
|
<img class="box_img" src="{{ asset($dataVisuel->path) }}" alt="œufs">
|
||||||
|
@endif
|
||||||
<div class="date">
|
<div class="date">
|
||||||
<p>Ces œufs ont été pondus le :</p>
|
<p>Ces œufs ont été pondus le :</p>
|
||||||
<p>{{ Carbon\Carbon::parse($datePonte)->format('d/m/Y') }}</p>
|
<p>{{ Carbon\Carbon::parse($datePonte)->format('d/m/Y') }}</p>
|
||||||
|
|
@ -23,34 +25,36 @@
|
||||||
<p>{{ Carbon\Carbon::parse($dcr)->format('d/m/Y') }}</p>
|
<p>{{ Carbon\Carbon::parse($dcr)->format('d/m/Y') }}</p>
|
||||||
</div>
|
</div>
|
||||||
@if (!$dcrGood)
|
@if (!$dcrGood)
|
||||||
<p class="message red"><span>ATTENTION !</span><br>La date de consommation recommandée (DCR) est dépassée. Vos œufs ne doivent plus être consommés.</p>
|
<p class="message red"><span>ATTENTION !</span><br>La date de consommation recommandée (DCR) est dépassée. Vos œufs ne
|
||||||
<p class="message blue"><span>BONNE NOUVELLE !</span><br>Vous pouvez toujours connaître toute l'origine de vos œufs en parcourant cette page.</p>
|
doivent plus être consommés.</p>
|
||||||
|
<p class="message blue"><span>BONNE NOUVELLE !</span><br>Vous pouvez toujours connaître toute l'origine de vos œufs en
|
||||||
|
parcourant cette page.</p>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
<div class="labels">
|
<div class="labels">
|
||||||
<a href="{{route('egg.labelRouge', ['id' => request()->id])}}" class="lr">
|
<a class="lr" href="{{ route('egg.labelRouge', ['id' => request()->id]) }}">
|
||||||
<img src="{{ asset('assets/images/labels/LR.png') }}" alt="Label Rouge" class="lr">
|
<img class="lr" src="{{ asset('assets/images/labels/LR.png') }}" alt="Label Rouge">
|
||||||
</a>
|
</a>
|
||||||
<a href="{{route('egg.labelBio', ['id' => request()->id])}}" class="bio">
|
<a class="bio" href="{{ route('egg.labelBio', ['id' => request()->id]) }}">
|
||||||
<img src="{{ asset('assets/images/labels/AB.png') }}" alt="Agriculture Biologique" class="bio">
|
<img class="bio" src="{{ asset('assets/images/labels/AB.png') }}" alt="Agriculture Biologique">
|
||||||
</a>
|
</a>
|
||||||
<a href="{{route('egg.labelIGP', ['id' => request()->id])}}">
|
<a href="{{ route('egg.labelIGP', ['id' => request()->id]) }}">
|
||||||
<img src="{{ asset('assets/images/labels/IGP.png') }}" alt="Indication Géographique Protégée">
|
<img src="{{ asset('assets/images/labels/IGP.png') }}" alt="Indication Géographique Protégée">
|
||||||
</a>
|
</a>
|
||||||
<a href="{{route('egg.labelNutriscore', ['id' => request()->id])}}">
|
<a href="{{ route('egg.labelNutriscore', ['id' => request()->id]) }}">
|
||||||
<img src="{{ asset('assets/images/labels/nutriscore.png') }}" alt="Nutriscore">
|
<img src="{{ asset('assets/images/labels/nutriscore.png') }}" alt="Nutriscore">
|
||||||
</a>
|
</a>
|
||||||
<a href="{{route('egg.labelFermiers', ['id' => request()->id])}}">
|
<a href="{{ route('egg.labelFermiers', ['id' => request()->id]) }}">
|
||||||
<img src="{{ asset('assets/images/labels/fermiers.png') }}" alt="Fermiers">
|
<img src="{{ asset('assets/images/labels/fermiers.png') }}" alt="Fermiers">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<a href="{{route('egg.labelCertif', ['id' => $id])}}">en savoir + sur</a>
|
<a href="{{ route('egg.labelCertif', ['id' => $id]) }}">en savoir + sur</a>
|
||||||
<p>Les Labels et les Certifications</p>
|
<p>Les Labels et les Certifications</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a href="#content" class="btn-discover"><b><i>Tout connaître de <br> l’origine de mes œufs</i></b></a>
|
<a class="btn-discover" href="#content"><b><i>Tout connaître de <br> l’origine de mes œufs</i></b></a>
|
||||||
|
|
||||||
@if (!$multiple)
|
@if (!$multiple)
|
||||||
<div class="elevage" id="content">
|
<div class="elevage" id="content">
|
||||||
|
|
@ -64,23 +68,25 @@
|
||||||
@endif
|
@endif
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<p>Ces poules ont été élevées en liberté</p>
|
<p>Ces poules ont été élevées en liberté</p>
|
||||||
<a href="{{route('egg.infoElevage', ['id' => $id])}}"><img src="{{ asset('assets/images/egg/picto_info_elevage.png') }}" alt="Info"></a>
|
<a href="{{ route('egg.infoElevage', ['id' => $id]) }}"><img
|
||||||
|
src="{{ asset('assets/images/egg/picto_info_elevage.png') }}" alt="Info"></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="details">
|
<div class="details">
|
||||||
<p class="by">
|
<p class="by">
|
||||||
<span class="green">PAR : </span> {{$eleveurs[0]->firstname}} {{$eleveurs[0]->lastname}} <br>
|
<span class="green">PAR : </span> {{ $eleveurs[0]->firstname }} {{ $eleveurs[0]->lastname }} <br>
|
||||||
<span class="green">À : </span> {{$eleveurs[0]->city}} ({{$eleveurs[0]->postcode}})
|
<span class="green">À : </span> {{ $eleveurs[0]->city }} ({{ $eleveurs[0]->postcode }})
|
||||||
</p>
|
</p>
|
||||||
@if (isset($eleveurs[0]->path_photo1) && $eleveurs[0]->path_photo1 != '')
|
@if (isset($eleveurs[0]->path_picture_1) && $eleveurs[0]->path_picture_1 != '')
|
||||||
<img class="img-fluid" src="{{ asset($eleveurs[0]->path_photo1) }}" alt="Élevage">
|
<img class="img-fluid" src="{{ asset($eleveurs[0]->path_picture_1) }}" alt="Élevage">
|
||||||
@else
|
@else
|
||||||
<img class="img-fluid" src="{{ asset('assets/images/egg/generique.jpg') }}" alt="Élevage">
|
<img class="img-fluid" src="{{ asset('assets/images/egg/generique.jpg') }}" alt="Élevage">
|
||||||
@endif
|
@endif
|
||||||
<div class="bottom one">
|
<div class="bottom one">
|
||||||
@if ($eleveurs[0]->questions)
|
@if ($eleveurs[0]->questions)
|
||||||
<a href="{{route('egg.portraitEleveur', ['id' => $id, 'eleveurId' => $eleveurs[0]->cafel_code])}}">en savoir + sur</a>
|
<a href="{{ route('egg.portraitEleveur', ['id' => $id, 'eleveurId' => $eleveurs[0]->cafel_code]) }}">en savoir
|
||||||
|
+ sur</a>
|
||||||
@endif
|
@endif
|
||||||
<p>{{$eleveurs[0]->firstname}} {{$eleveurs[0]->lastname}}</p>
|
<p>{{ $eleveurs[0]->firstname }} {{ $eleveurs[0]->lastname }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -98,7 +104,8 @@
|
||||||
|
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<p>Ces poules ont été élevées en liberté</p>
|
<p>Ces poules ont été élevées en liberté</p>
|
||||||
<a href="{{ route('egg.infoElevage', ['id' => $id]) }}"><img src="{{ asset('assets/images/egg/picto_info_elevage.png') }}" alt="Info"></a>
|
<a href="{{ route('egg.infoElevage', ['id' => $id]) }}"><img
|
||||||
|
src="{{ asset('assets/images/egg/picto_info_elevage.png') }}" alt="Info"></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="details">
|
<div class="details">
|
||||||
<p class="by">
|
<p class="by">
|
||||||
|
|
@ -112,9 +119,12 @@
|
||||||
<div class="bottom multiple">
|
<div class="bottom multiple">
|
||||||
@foreach ($eleveurs as $eleveur)
|
@foreach ($eleveurs as $eleveur)
|
||||||
@if ($eleveur->questions)
|
@if ($eleveur->questions)
|
||||||
<a href="{{ route('egg.portraitEleveur', ['id' => $id, 'eleveurId' => $eleveur->cafel_code]) }}">{{ $eleveur->firstname }} {{$eleveur->lastname}} <br> <span class="light">{{$eleveur->city}} ({{$eleveur->postcode}})</span></a>
|
<a href="{{ route('egg.portraitEleveur', ['id' => $id, 'eleveurId' => $eleveur->cafel_code]) }}">{{ $eleveur->firstname }}
|
||||||
|
{{ $eleveur->lastname }} <br> <span class="light">{{ $eleveur->city }}
|
||||||
|
({{ $eleveur->postcode }})</span></a>
|
||||||
@else
|
@else
|
||||||
<div class="disabled">{{$eleveur->firstname}} {{$eleveur->lastname}} <br> <span class="light">{{$eleveur->city}} ({{$eleveur->postcode}})</span></div>
|
<div class="disabled">{{ $eleveur->firstname }} {{ $eleveur->lastname }} <br> <span
|
||||||
|
class="light">{{ $eleveur->city }} ({{ $eleveur->postcode }})</span></div>
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -126,15 +136,16 @@
|
||||||
<p class="title">Alimentation</p>
|
<p class="title">Alimentation</p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<p>Poules nourries à base de céréales locales (65% minimum) garanties sans OGM (<0,9%)</p>
|
<p>Poules nourries à base de céréales locales (65% minimum)< /p>
|
||||||
</div>
|
</div>
|
||||||
<p class="infos"><span class="yellow">Usine d'aliment : </span><br>ALIFEL, 72540 Loué</p>
|
<p class="infos"><span class="yellow">Usine d'aliment : </span><br>ALIFEL, 72540 Loué</p>
|
||||||
@if (isset($aliment) && !empty($aliment))
|
@if (isset($aliment) && !empty($aliment))
|
||||||
<p class="infos"><span class="yellow">Dernière livraison : </span><br>{{ Carbon\Carbon::parse($aliment->date_livraison)->format('d/m/Y') }}</p>
|
<p class="infos"><span class="yellow">Dernière livraison :
|
||||||
|
</span><br>{{ Carbon\Carbon::parse($aliment->date_livraison)->format('d/m/Y') }}</p>
|
||||||
@endif
|
@endif
|
||||||
<img src="{{ asset('assets/images/parts/ALIFEL.jpg') }}" alt="Alifel" class="alifel img-fluid">
|
<img class="alifel img-fluid" src="{{ asset('assets/images/parts/ALIFEL.jpg') }}" alt="Alifel">
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<a href="{{route('egg.infoAlim', ['id' => $id])}}">en savoir +</a>
|
<a href="{{ route('egg.infoAlim', ['id' => $id]) }}">en savoir +</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -143,25 +154,26 @@
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<p class="date">{{ Carbon\Carbon::parse($date_emballage)->format('d/m/Y') }}</p>
|
<p class="date">{{ Carbon\Carbon::parse($date_emballage)->format('d/m/Y') }}</p>
|
||||||
<p class="lieu"><span class="title">LIEU : </span>LA BAZOGE (72650)</p>
|
<p class="lieu"><span class="title">LIEU : </span>LA BAZOGE (72650)</p>
|
||||||
<p class="description">Chaque œuf est vérifié et trié individuellement, puis emballé dans des boîtes recyclées et recyclables.</p>
|
<p class="description">Chaque œuf est vérifié et trié individuellement, puis emballé dans des boîtes recyclées et recyclables.
|
||||||
|
</p>
|
||||||
<img src="{{ asset('assets/images/egg/Photo-LOEUF.jpg') }}" alt="Logo">
|
<img src="{{ asset('assets/images/egg/Photo-LOEUF.jpg') }}" alt="Logo">
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<a href="{{route('egg.infoEmballage', ['id' => $id])}}">en savoir + sur</a>
|
<a href="{{ route('egg.infoEmballage', ['id' => $id]) }}">en savoir + sur</a>
|
||||||
<p>LŒUF</p>
|
<p>LŒUF</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--div class="magasin">
|
<!--div class="magasin">
|
||||||
<p class="title">Magasin</p>
|
<p class="title">Magasin</p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<p class="title">Merci pour votre confiance !</p>
|
<p class="title">Merci pour votre confiance !</p>
|
||||||
<p class="description">Les Fermiers de Loué vous offrent<br>un bon de réduction de 0,50 €<br>pour votre prochain achat d'œufs.</p>
|
<p class="description">Les Fermiers de Loué vous offrent<br>un bon de réduction de 0,50 €<br>pour votre prochain achat d'œufs.</p>
|
||||||
<img src="/loue/img/bon_reduc.png" alt="Réduction">
|
<img src="/loue/img/bon_reduc.png" alt="Réduction">
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<a href="#">Cliquez ici<br>pour en profiter</a>
|
<a href="#">Cliquez ici<br>pour en profiter</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div-->
|
||||||
</div-->
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|
|
||||||
|
|
@ -5,35 +5,37 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page elevage">
|
<div class="sub-page elevage">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.FrontPage', ['id' => request()->id])}}">
|
<a href="{{ route('egg.FrontPage', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="infos-elevages">
|
<div class="infos-elevages">
|
||||||
<p class="title">Infos pratiques</p>
|
<p class="title">Infos pratiques</p>
|
||||||
<div class="items">
|
<div class="items">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<img src="{{ asset('assets/images/egg/infos-elevages-1.jpg') }}" alt="Élevage en liberté" class="top-img">
|
<img class="top-img" src="{{ asset('assets/images/egg/infos-elevages-1.jpg') }}" alt="Élevage en liberté">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>Un mode d'élevage en liberté, qu'est-ce que cela signifie ?</p>
|
<p>Un mode d'élevage en liberté, qu'est-ce que cela signifie ?</p>
|
||||||
<a href="{{ route('egg.infoElevageLib', ['id' => request()->id]) }}"><img src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +"></a>
|
<a href="{{ route('egg.infoElevageLib', ['id' => request()->id]) }}"><img
|
||||||
|
src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +"></a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="item">
|
||||||
<div class="item">
|
<img class="top-img" src="{{ asset('assets/images/egg/infos-elevages-2.jpg') }}" alt="Différence entre les œufs">
|
||||||
<img src="{{ asset('assets/images/egg/infos-elevages-2.jpg') }}" alt="Différence entre les œufs" class="top-img">
|
<div class="text">
|
||||||
<div class="text">
|
<p>Quelle différence entre un œuf plein air et un œuf fermier IGP Label Rouge de Loué ?</p>
|
||||||
<p>Quelle différence entre un œuf plein air et un œuf fermier IGP Label Rouge de Loué ?</p>
|
<a href="{{ route('egg.infoDiffOeufs', ['id' => request()->id]) }}"><img
|
||||||
<a href="{{ route('egg.infoDiffOeufs', ['id' => request()->id]) }}"><img src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +"></a>
|
src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +"></a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,43 +5,45 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page {{ Session::get('subColor') }}">
|
<div class="sub-page {{ Session::get('subColor') }}">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.labelCertif', ['id' => request()->id])}}">
|
<a href="{{ route('egg.labelCertif', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="labels-and-certifs">
|
<div class="labels-and-certifs">
|
||||||
<div class="label-fermiers">
|
<div class="label-fermiers">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<img src="{{ asset('assets/images/labels/fermiers.png') }}" alt="Fermiers" class="logo">
|
<img class="logo" src="{{ asset('assets/images/labels/fermiers.png') }}" alt="Fermiers">
|
||||||
</div>
|
</div>
|
||||||
<p class="title">Qu’est-ce-qu’un œuf «fermier» ?</p>
|
<p class="title">Qu’est-ce-qu’un œuf «fermier» ?</p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<p>Le terme « fermier » va bien au-delà d’un mot inscrit sur une boîte. C’est un décret délibéré qui doit répondre à un cahier des charges bien précis. Pour en bénéficier, 5 critères sont à respecter :</p>
|
<p>Le terme « fermier » va bien au-delà d’un mot inscrit sur une boîte. C’est un décret délibéré qui doit répondre à
|
||||||
<div class="items">
|
un cahier des charges bien précis. Pour en bénéficier, 5 critères sont à respecter :</p>
|
||||||
<div class="item">
|
<div class="items">
|
||||||
<img src="{{ asset('assets/images/egg/poule.png') }}" alt="Poule">
|
<div class="item">
|
||||||
<p>Élevage limité à 6 000 poules</p>
|
<img src="{{ asset('assets/images/egg/poule.png') }}" alt="Poule">
|
||||||
</div>
|
<p>Élevage limité à 6 000 poules</p>
|
||||||
<div class="item">
|
</div>
|
||||||
<img src="{{ asset('assets/images/egg/main_œuf.png') }}" alt="Oeufs">
|
<div class="item">
|
||||||
<p>Œufs ramassés quotidiennement et triés à la main</p>
|
<img src="{{ asset('assets/images/egg/main_œuf.png') }}" alt="Oeufs">
|
||||||
</div>
|
<p>Œufs ramassés quotidiennement et triés à la main</p>
|
||||||
<div class="item">
|
</div>
|
||||||
<img src="{{ asset('assets/images/egg/ble.png') }}" alt="Céréales">
|
<div class="item">
|
||||||
<p>Céréales contenues dans l’alimentation issues de l’exploitation ou des exploitations environnantes</p>
|
<img src="{{ asset('assets/images/egg/ble.png') }}" alt="Céréales">
|
||||||
</div>
|
<p>Céréales contenues dans l’alimentation issues de l’exploitation ou des exploitations environnantes</p>
|
||||||
<div class="item">
|
</div>
|
||||||
<img src="{{ asset('assets/images/egg/mail.png') }}" alt="Lettre">
|
<div class="item">
|
||||||
<p>Nom et adresse de l’éleveur mentionnés sur la boîte</p>
|
<img src="{{ asset('assets/images/egg/mail.png') }}" alt="Lettre">
|
||||||
</div>
|
<p>Nom et adresse de l’éleveur mentionnés sur la boîte</p>
|
||||||
<div class="item">
|
</div>
|
||||||
<img src="{{ asset('assets/images/egg/tracteur.png') }}" alt="Tracteur">
|
<div class="item">
|
||||||
<p>Élevage intégré dans une activité agricole diversifiée</p>
|
<img src="{{ asset('assets/images/egg/tracteur.png') }}" alt="Tracteur">
|
||||||
|
<p>Élevage intégré dans une activité agricole diversifiée</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -49,5 +51,4 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,30 +5,32 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page {{ Session::get('subColor') }}">
|
<div class="sub-page {{ Session::get('subColor') }}">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.labelCertif', ['id' => request()->id])}}">
|
<a href="{{ route('egg.labelCertif', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="labels-and-certifs">
|
<div class="labels-and-certifs">
|
||||||
<div class="label-igp">
|
<div class="label-igp">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<img src="{{ asset('assets/images/labels/IGP.png') }}" alt="Indication Géographique Protégée" class="logo">
|
<img class="logo" src="{{ asset('assets/images/labels/IGP.png') }}" alt="Indication Géographique Protégée">
|
||||||
</div>
|
</div>
|
||||||
<p class="title">Une filière locale encadrée par l’Indication Géographique Protégée (IGP)</p>
|
<p class="title">Une filière locale encadrée par l’Indication Géographique Protégée (IGP)</p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<p>Les œufs de Loué sont les seuls à bénéficier d’une Indication Géographique Protégée (IGP). Celle-ci détermine une zone d’élevage délimitée.
|
<p>Les œufs de Loué sont les seuls à bénéficier d’une Indication Géographique Protégée (IGP). Celle-ci détermine une
|
||||||
<br><br>
|
zone d’élevage délimitée.
|
||||||
Pour les œufs et les volailles de Loué, l’IGP se concentre dans un périmètre de 150 km autour du village de Loué situé en Sarthe (72).
|
<br><br>
|
||||||
</p>
|
Pour les œufs et les volailles de Loué, l’IGP se concentre dans un périmètre de 150 km autour du village de Loué
|
||||||
|
situé en Sarthe (72).
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,36 +5,40 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page {{ Session::get('subColor') }}">
|
<div class="sub-page {{ Session::get('subColor') }}">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.labelCertif', ['id' => request()->id ])}}">
|
<a href="{{ route('egg.labelCertif', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="labels-and-certifs">
|
<div class="labels-and-certifs">
|
||||||
<div class="label-bio">
|
<div class="label-bio">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<img src="{{ asset('assets/images/labels/AB.png') }}" alt="Agriculture Biologique" class="logo">
|
<img class="logo" src="{{ asset('assets/images/labels/AB.png') }}" alt="Agriculture Biologique">
|
||||||
</div>
|
</div>
|
||||||
<p class="title">Qu'est-ce qu'un œuf BIO ?</p>
|
<p class="title">Qu'est-ce qu'un œuf BIO ?</p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<p>Depuis 1994, les Fermiers de Loué ont décidé de s’engager dans l’élevage biologique. Le Label Agriculture Biologique garantit un mode de production fondé sur la non-utilisation de produits chimiques de synthèse et d’OGM.
|
<p>Depuis 1994, les Fermiers de Loué ont décidé de s’engager dans l’élevage biologique. Le Label Agriculture
|
||||||
<br>
|
Biologique garantit un mode de production fondé sur la non-utilisation de produits chimiques de synthèse.
|
||||||
Ce Label permet aux Fermiers de Loué d’aller encore plus loin dans le respect de l’environnement et du bien-être animal.
|
<br>
|
||||||
</p>
|
Ce Label permet aux Fermiers de Loué d’aller encore plus loin dans le respect de l’environnement et du bien-être
|
||||||
<p>Les œufs de Loué sont exclusivement des œufs de poules élevées en liberté, Label Rouge (code 1) ou Bio (code 0).</p>
|
animal.
|
||||||
</div>
|
</p>
|
||||||
<div class="mt-5">
|
<p>Les œufs de Loué sont exclusivement des œufs de poules élevées en liberté, Label Rouge (code 1) ou Bio (code 0).
|
||||||
<div class="video youtube ratio ratio-16x9" data-authorize="0">
|
</p>
|
||||||
<iframe src="/frame/youtube" data-src="https://www.youtube.com/embed/IeTVms72rJw?controls=0" width="100%" height="100%" frameborder="0" allow="fullscreen picture-in-picture"></iframe>
|
</div>
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="video youtube ratio ratio-16x9" data-authorize="0">
|
||||||
|
<iframe data-src="https://www.youtube.com/embed/IeTVms72rJw?controls=0" src="/frame/youtube" width="100%"
|
||||||
|
height="100%" frameborder="0" allow="fullscreen picture-in-picture"></iframe>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,33 +5,37 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page {{ Session::get('subColor') }}">
|
<div class="sub-page {{ Session::get('subColor') }}">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.labelCertif', ['id' => request()->id ])}}">
|
<a href="{{ route('egg.labelCertif', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="labels-and-certifs">
|
<div class="labels-and-certifs">
|
||||||
<div class="label-rouge">
|
<div class="label-rouge">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<img src="{{ asset('assets/images/labels/LR.png') }}" alt="Label Rouge" class="logo">
|
<img class="logo" src="{{ asset('assets/images/labels/LR.png') }}" alt="Label Rouge">
|
||||||
</div>
|
</div>
|
||||||
<p class="title">Le Label Rouge, un Label de qualité</p>
|
<p class="title">Le Label Rouge, un Label de qualité</p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<p>Les produits certifiés Label Rouge répondent à un cahier des charges strict, garantissant un niveau de qualité supérieur. Pour y prétendre, un organisme certificateur indépendant se rend chez les éleveurs pour les auditer.</p>
|
<p>Les produits certifiés Label Rouge répondent à un cahier des charges strict, garantissant un niveau de qualité
|
||||||
<p>Les œufs de Loué sont exclusivement des œufs de poules élevées en liberté, Label Rouge (code 1) ou Bio (code 0).</p>
|
supérieur. Pour y prétendre, un organisme certificateur indépendant se rend chez les éleveurs pour les auditer.
|
||||||
</div>
|
</p>
|
||||||
<div class="mt-5">
|
<p>Les œufs de Loué sont exclusivement des œufs de poules élevées en liberté, Label Rouge (code 1) ou Bio (code 0).
|
||||||
<div class="video youtube ratio ratio-16x9" data-authorize="0">
|
</p>
|
||||||
<iframe src="/frame/youtube" data-src="https://www.youtube.com/embed/eXyg-eRPpSw?controls=0" width="100%" height="100%" frameborder="0" allow="fullscreen picture-in-picture"></iframe>
|
</div>
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="video youtube ratio ratio-16x9" data-authorize="0">
|
||||||
|
<iframe data-src="https://www.youtube.com/embed/eXyg-eRPpSw?controls=0" src="/frame/youtube" width="100%"
|
||||||
|
height="100%" frameborder="0" allow="fullscreen picture-in-picture"></iframe>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,32 +5,36 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page {{ Session::get('subColor') }}">
|
<div class="sub-page {{ Session::get('subColor') }}">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.labelCertif', ['id' => request()->id])}}">
|
<a href="{{ route('egg.labelCertif', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="labels-and-certifs">
|
<div class="labels-and-certifs">
|
||||||
<div class="label-nutriscore">
|
<div class="label-nutriscore">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<img src="{{ asset('assets/images/labels/nutriscore.png') }}" alt="Nutriscore" class="logo">
|
<img class="logo" src="{{ asset('assets/images/labels/nutriscore.png') }}" alt="Nutriscore">
|
||||||
</div>
|
</div>
|
||||||
<p class="title">Les œufs de Loué sont notés A au Nutri-Score</p>
|
<p class="title">Les œufs de Loué sont notés A au Nutri-Score</p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<p>Conçu dans le cadre du Programme National Nutrition santé, le logo Nutri-Score est le logo officiel de l’étiquetage nutritionnel en France. Diététiques, riches en bons nutriments et reconnus meilleure source naturelle de protéines, les œufs fermiers de Loué (Label rouge ou Bio) obtiennent la lettre A : la notation la plus favorable sur le plan nutritionnel.</p>
|
<p>Conçu dans le cadre du Programme National Nutrition santé, le logo Nutri-Score est le logo officiel de
|
||||||
</div>
|
l’étiquetage nutritionnel en France. Diététiques, riches en bons nutriments et reconnus meilleure source
|
||||||
<div class="mt-5">
|
naturelle de protéines, les œufs fermiers de Loué (Label rouge ou Bio) obtiennent la lettre A : la notation la
|
||||||
<div class="video youtube ratio ratio-16x9" data-authorize="0">
|
plus favorable sur le plan nutritionnel.</p>
|
||||||
<iframe src="/frame/youtube" data-src="https://www.youtube.com/embed/D9rFCgZa9zs?controls=0" width="100%" height="100%" frameborder="0" allow="fullscreen picture-in-picture"></iframe>
|
</div>
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="video youtube ratio ratio-16x9" data-authorize="0">
|
||||||
|
<iframe data-src="https://www.youtube.com/embed/D9rFCgZa9zs?controls=0" src="/frame/youtube" width="100%"
|
||||||
|
height="100%" frameborder="0" allow="fullscreen picture-in-picture"></iframe>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,46 +5,46 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="sub-page {{ Session::get('subColor') }}">
|
<div class="sub-page {{ Session::get('subColor') }}">
|
||||||
<header>
|
<header>
|
||||||
<a href="{{route('egg.FrontPage', ['id' => request()->id])}}">
|
<a href="{{ route('egg.FrontPage', ['id' => request()->id]) }}">
|
||||||
<p class="arrow">◄</p>
|
<p class="arrow">◄</p>
|
||||||
<p>Retour</p>
|
<p>Retour</p>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="labels-and-certifs">
|
<div class="labels-and-certifs">
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
<p class="title">Mieux comprendre les Labels et les mentions présentes sur les boites</p>
|
<p class="title">Mieux comprendre les Labels et les mentions présentes sur les boites</p>
|
||||||
<a href="{{ route('egg.labelBio', ['id' => request()->id]) }}" class="item bio">
|
<a class="item bio" href="{{ route('egg.labelBio', ['id' => request()->id]) }}">
|
||||||
<img src="{{ asset('assets/images/labels/AB.png') }}" alt="Agriculture Biologique">
|
<img src="{{ asset('assets/images/labels/AB.png') }}" alt="Agriculture Biologique">
|
||||||
<p class="text-center">Qu'est-ce qu'un œuf BIO ?</p>
|
<p class="text-center">Qu'est-ce qu'un œuf BIO ?</p>
|
||||||
<img src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +" class="loupe">
|
<img class="loupe" src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +">
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ route('egg.labelRouge', ['id' => request()->id]) }}" class="item lr">
|
<a class="item lr" href="{{ route('egg.labelRouge', ['id' => request()->id]) }}">
|
||||||
<img src="{{ asset('assets/images/labels/LR.png') }}" alt="Label Rouge">
|
<img src="{{ asset('assets/images/labels/LR.png') }}" alt="Label Rouge">
|
||||||
<p class="text-center">Le Label Rouge, un<br>Label de qualité</p>
|
<p class="text-center">Le Label Rouge, un<br>Label de qualité</p>
|
||||||
<img src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +" class="loupe">
|
<img class="loupe" src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +">
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ route('egg.labelIGP', ['id' => request()->id]) }}" class="item">
|
<a class="item" href="{{ route('egg.labelIGP', ['id' => request()->id]) }}">
|
||||||
<img src="{{ asset('assets/images/labels/IGP.png') }}" alt="Indication Géographique Protégée">
|
<img src="{{ asset('assets/images/labels/IGP.png') }}" alt="Indication Géographique Protégée">
|
||||||
<p class="text-center">Une fillière locale<br>encadrée par l'Indication<br>Géographique Protégée<br>(IGP)</p>
|
<p class="text-center">Une fillière locale<br>encadrée par l'Indication<br>Géographique Protégée<br>(IGP)</p>
|
||||||
<img src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +" class="loupe">
|
<img class="loupe" src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +">
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ route('egg.labelNutriscore', ['id' => request()->id]) }}" class="item">
|
<a class="item" href="{{ route('egg.labelNutriscore', ['id' => request()->id]) }}">
|
||||||
<img src="{{ asset('assets/images/labels/nutriscore.png') }}" alt="Nutriscore">
|
<img src="{{ asset('assets/images/labels/nutriscore.png') }}" alt="Nutriscore">
|
||||||
<p class="text-center">Les œufs de Loué sont<br>notés A au Nutri-Score</p>
|
<p class="text-center">Les œufs de Loué sont<br>notés A au Nutri-Score</p>
|
||||||
<img src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +" class="loupe">
|
<img class="loupe" src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +">
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ route('egg.labelFermiers', ['id' => request()->id]) }}" class="item">
|
<a class="item" href="{{ route('egg.labelFermiers', ['id' => request()->id]) }}">
|
||||||
<img src="{{ asset('assets/images/labels/fermiers.png') }}" alt="Fermiers">
|
<img src="{{ asset('assets/images/labels/fermiers.png') }}" alt="Fermiers">
|
||||||
<p class="text-center">Qu'est-ce-qu'un œuf<br>"fermier" ?</p>
|
<p class="text-center">Qu'est-ce-qu'un œuf<br>"fermier" ?</p>
|
||||||
<img src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +" class="loupe">
|
<img class="loupe" src="{{ asset('assets/images/egg/loupe.png') }}" alt="En savoir +">
|
||||||
</a>
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,18 +5,18 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="block blue">
|
<div class="blue block">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<p></p>
|
<p></p>
|
||||||
<p>Erreur</p>
|
<p>Erreur</p>
|
||||||
<p>Ne mettez pas tous vos oeufs dans le même panier ! :)</p>
|
<p>Ne mettez pas tous vos oeufs dans le même panier ! :)</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="body egg-alert">
|
<div class="body egg-alert">
|
||||||
<img class="img-fluid" src="{{ asset('assets/images/egg/generique.jpg') }}" alt="Élevage">
|
<img class="img-fluid" src="{{ asset('assets/images/egg/generique.jpg') }}" alt="Élevage">
|
||||||
<p class="message blue">Nous n'avons pu retrouver l'éleveur concerné par votre boite.</p>
|
<p class="message blue">Nous n'avons pu retrouver l'éleveur concerné par votre boite.</p>
|
||||||
<p></p>
|
<p></p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
@endsection
|
|
||||||
|
|
|
||||||
|
|
@ -5,64 +5,64 @@
|
||||||
@section('breadcrumb', request()->route()->getName())
|
@section('breadcrumb', request()->route()->getName())
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container oldEgg">
|
<div @class(['container', 'oldEgg' => $isDisplayedTAModal])>
|
||||||
<div class="block-fill">
|
<div class="block-fill">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<p><span>Tout connaître</span><br>de l’origine de mes œufs</p>
|
<p><span>Tout connaître</span><br>de l’origine de mes œufs</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<p class="message blue">Merci de compléter ces indications que<br>vous trouverez sur votre boîte d’œufs :</p>
|
<p class="message blue">Merci de compléter ces indications que<br>vous trouverez sur votre boîte d’œufs :</p>
|
||||||
<form action="{{ route('egg.searchSubmit') }}" method="POST">
|
<form action="{{ route('egg.searchSubmit') }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<label>Code du producteur <span>A</span> :</label>
|
<label>Code du producteur <span>A</span> :</label>
|
||||||
<input type="text" name="code" placeholder="Ex. 1FRJBB01" required>
|
<input name="code" type="text" placeholder="Ex. 1FRJBB01" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<label>Date de consommation<br>recommandée (DCR) <span>B</span> :</label>
|
<label>Date de consommation<br>recommandée (DCR) <span>B</span> :</label>
|
||||||
<input type="text" name="date" placeholder="JJ/MM" pattern="[0-9]{2}/[0-9]{2}" required>
|
<input name="date" type="text" placeholder="JJ/MM" pattern="[0-9]{2}/[0-9]{2}" required>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="submit" value="Valider">
|
<input type="submit" value="Valider">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer d-flex justify-content-center mt-5">
|
<div class="footer d-flex justify-content-center mt-5">
|
||||||
<p>Informations sur l'oeuf :</p>
|
<p>Informations sur l'oeuf :</p>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<img src="{{ asset('assets/images/egg/oeuf.png') }}" alt="Oeuf" width="70%">
|
<img src="{{ asset('assets/images/egg/oeuf.png') }}" alt="Oeuf" width="70%">
|
||||||
{{--<p>Pondu le<br><span class="date">14/12</span></p>
|
{{-- <p>Pondu le<br><span class="date">14/12</span></p>
|
||||||
<p>À cons. de préf. avant le
|
<p>À cons. de préf. avant le
|
||||||
<br><span class="date">11/01</span><span class="step">A</span>
|
<br><span class="date">11/01</span><span class="step">A</span>
|
||||||
<br><span class="prod">1FR0PD01</span><span class="step">B</span>
|
<br><span class="prod">1FR0PD01</span><span class="step">B</span>
|
||||||
</p>--}}
|
</p> --}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
<script nonce="{{ $nonce }}">
|
<script nonce="{{ $nonce }}">
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('input[name=date]').bind('keyup', 'keydown', function(e) {
|
$('input[name=date]').bind('keyup', 'keydown', function(e) {
|
||||||
//To accomdate for backspacing, we detect which key was pressed - if backspace, do nothing:
|
//To accomdate for backspacing, we detect which key was pressed - if backspace, do nothing:
|
||||||
if (e.which !== 8) {
|
if (e.which !== 8) {
|
||||||
var numChars = $(this).val().length;
|
var numChars = $(this).val().length;
|
||||||
var thisVal = $(this).val();
|
var thisVal = $(this).val();
|
||||||
if (numChars === 2) {
|
if (numChars === 2) {
|
||||||
thisVal += '/';
|
thisVal += '/';
|
||||||
$(this).val(thisVal);
|
|
||||||
}
|
|
||||||
if (numChars >= 3) {
|
|
||||||
if (thisVal.charAt(2) != '/') {
|
|
||||||
thisVal = thisVal.substring(0, 2) + '/' + thisVal.substring(2);
|
|
||||||
$(this).val(thisVal);
|
$(this).val(thisVal);
|
||||||
}
|
}
|
||||||
|
if (numChars >= 3) {
|
||||||
|
if (thisVal.charAt(2) != '/') {
|
||||||
|
thisVal = thisVal.substring(0, 2) + '/' + thisVal.substring(2);
|
||||||
|
$(this).val(thisVal);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
</script>
|
||||||
</script>
|
@endpush
|
||||||
@endpush
|
|
||||||
|
|
|
||||||
|
|
@ -6,82 +6,103 @@ use App\Http\Controllers\Fo\InfoController;
|
||||||
use App\Http\Controllers\Fo\TraceaPoultryController;
|
use App\Http\Controllers\Fo\TraceaPoultryController;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
// * LEGALS and POLICY
|
Route::domain(config('app.domain'))->group(function () {
|
||||||
Route::view('/charte-confidentialite', 'front.pages.policy')->name('policy');
|
// * LEGALS and POLICY
|
||||||
Route::view('/mentions-legales-cgu', 'front.pages.legals')->name('legals');
|
Route::view('/charte-confidentialite', 'front.pages.policy')->name('policy');
|
||||||
|
Route::view('/mentions-legales-cgu', 'front.pages.legals')->name('legals');
|
||||||
|
|
||||||
// * IFRAME Media COOKIE
|
// * IFRAME Media COOKIE
|
||||||
Route::view('/frame/{type}', 'front.frame')
|
Route::view('/frame/{type}', 'front.frame')
|
||||||
->where('type', 'youtube')->name('front.frame');
|
->where('type', 'youtube')->name('front.frame');
|
||||||
|
|
||||||
// * Page éleveur (Oeuf et Volaille)
|
// * Page éleveur (Oeuf et Volaille)
|
||||||
Route::get('/eleveurs/{breeder}', [BreederController::class, 'show'])->name('breeders.show');
|
Route::get('/eleveurs/{breeder}', [BreederController::class, 'show'])->name('breeders.show');
|
||||||
|
|
||||||
// * Partie Poultry
|
// * Partie Poultry
|
||||||
Route::name('poultry.')->group(function () {
|
Route::name('poultry.')->group(function () {
|
||||||
Route::view('/', 'front.poultry.search')->name('search');
|
Route::view('/', 'front.poultry.search')->name('search');
|
||||||
Route::post('/', [TraceaPoultryController::class, 'searchSubmit'])->name('searchSubmit');
|
Route::post('/', [TraceaPoultryController::class, 'searchSubmit'])->name('searchSubmit');
|
||||||
Route::get('tracabilite/volaille', [TraceaPoultryController::class, 'show'])->name('show');
|
Route::get('tracabilite/volaille', [TraceaPoultryController::class, 'show'])->name('show');
|
||||||
Route::get('tracabilite/volaille/distribution', [TraceaPoultryController::class, 'getDistribution'])
|
Route::get('tracabilite/volaille/distribution', [TraceaPoultryController::class, 'getDistribution'])
|
||||||
->name('distribution');
|
->name('distribution');
|
||||||
Route::get('tracabilite/volaille/info', [InfoController::class, 'poultry'])->name('infos');
|
Route::get('tracabilite/volaille/info', [InfoController::class, 'poultry'])->name('infos');
|
||||||
Route::get(
|
Route::get(
|
||||||
'tracabilite/volaille/info/des-poulets-libres-par-nature',
|
'tracabilite/volaille/info/des-poulets-libres-par-nature',
|
||||||
[InfoController::class, 'poultryFreeChicken']
|
[InfoController::class, 'poultryFreeChicken']
|
||||||
)->name('infos.freeChicken');
|
)->name('infos.freeChicken');
|
||||||
Route::get(
|
Route::get(
|
||||||
'tracabilite/volaille/info/quest-ce-quun-poulet-fermier-de-loue',
|
'tracabilite/volaille/info/quest-ce-quun-poulet-fermier-de-loue',
|
||||||
[InfoController::class, 'poultryFarmChicken']
|
[InfoController::class, 'poultryFarmChicken']
|
||||||
)->name('infos.farmChiken');
|
)->name('infos.farmChiken');
|
||||||
Route::get(
|
Route::get(
|
||||||
'tracabilite/volaille/alimentation/bio',
|
'tracabilite/volaille/alimentation/bio',
|
||||||
[InfoController::class, 'poultryBio']
|
[InfoController::class, 'poultryBio']
|
||||||
)->name('food.bio');
|
)->name('food.bio');
|
||||||
Route::get(
|
Route::get(
|
||||||
'tracabilite/volaille/alimentation/label-rouge',
|
'tracabilite/volaille/alimentation/label-rouge',
|
||||||
[InfoController::class, 'poultryLr']
|
[InfoController::class, 'poultryLr']
|
||||||
)->name('food.lr');
|
)->name('food.lr');
|
||||||
Route::name('labels.')->prefix('/tracabilite/volaille/labels')->group(function () {
|
Route::name('labels.')->prefix('/tracabilite/volaille/labels')->group(function () {
|
||||||
Route::view('/ab', 'front.poultry.labels.ab')->name('ab');
|
Route::view('/ab', 'front.poultry.labels.ab')->name('ab');
|
||||||
Route::view('/lr', 'front.poultry.labels.lr')->name('lr');
|
Route::view('/lr', 'front.poultry.labels.lr')->name('lr');
|
||||||
Route::view('/bea', 'front.poultry.labels.bea')->name('bea');
|
Route::view(
|
||||||
Route::view('/igp', 'front.poultry.labels.igp')->name('igp');
|
'/bea',
|
||||||
Route::view('/nutriscore', 'front.poultry.labels.nutriscore')->name('nutriscore');
|
'front.poultry.labels.bea'
|
||||||
Route::view('/planet-score', 'front.poultry.labels.planet-score')->name('planet-score');
|
)->name('bea');
|
||||||
|
Route::view(
|
||||||
|
'/igp',
|
||||||
|
'front.poultry.labels.igp'
|
||||||
|
)->name('igp');
|
||||||
|
Route::view('/nutriscore', 'front.poultry.labels.nutriscore')->name('nutriscore');
|
||||||
|
Route::view('/planet-score', 'front.poultry.labels.planet-score')->name('planet-score');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// * Partie Egg
|
||||||
|
Route::prefix('/oeuf')->name('egg.')->group(function () {
|
||||||
|
Route::view('/search', 'front.egg.search')->name('search');
|
||||||
|
Route::post('/find-my-box', [EggController::class, 'findMyBox'])->name('searchSubmit');
|
||||||
|
|
||||||
|
// * LABELS
|
||||||
|
Route::view('/{id}/labels-et-certifications', 'front.egg.labels_and_certifs')->name('labelCertif');
|
||||||
|
|
||||||
|
Route::view('/{id}/label-rouge', 'front.egg.labels.label_rouge')->name('labelRouge');
|
||||||
|
Route::view('/{id}/label-bio', 'front.egg.labels.label_bio')->name('labelBio');
|
||||||
|
Route::view('/{id}/label-igp', 'front.egg.labels.igp')->name('labelIGP');
|
||||||
|
Route::view('/{id}/label-nutriscore', 'front.egg.labels.nutriscore')->name('labelNutriscore');
|
||||||
|
Route::view('/{id}/label-fermiers', 'front.egg.labels.fermiers')->name('labelFermiers');
|
||||||
|
|
||||||
|
|
||||||
|
// * INFOS ELEVAGE
|
||||||
|
Route::view('/{id}/infos-elevages', 'front.egg.infos_elevages')->name('infoElevage');
|
||||||
|
Route::view('/{id}/differences-oeufs', 'front.egg.elevages.vs_oeufs')->name('infoDiffOeufs');
|
||||||
|
Route::view('/{id}/elevage-liberte', 'front.egg.elevages.elevage_liberte')->name('infoElevageLib');
|
||||||
|
|
||||||
|
|
||||||
|
// * ALIMENTATION
|
||||||
|
Route::view('/{id}/details-alimentation', 'front.egg.details-alimentation')->name('infoAlim');
|
||||||
|
|
||||||
|
// * EMBALLAGE
|
||||||
|
Route::view('/{id}/details-emballage', 'front.egg.details-emballage')->name('infoEmballage');
|
||||||
|
|
||||||
|
|
||||||
|
// * ELEVEURS
|
||||||
|
Route::get('/{id}/portrait-eleveur/{eleveurId}', [EggController::class, 'eleveurPortrait'])
|
||||||
|
->name('portraitEleveur');
|
||||||
|
|
||||||
|
Route::get('/{id}', [EggController::class, 'indexId'])->name('FrontPage');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// * Partie Egg
|
Route::domain(config('app.egg_domain'))->group(function () {
|
||||||
Route::prefix('/oeuf')->name('egg.')->group(function () {
|
Route::get('/{id}', function ($id) {
|
||||||
Route::view('/search', 'front.egg.search')->name('search');
|
return redirect(config('app.url') . route('egg.FrontPage', ['id' => $id], false));
|
||||||
Route::post('/find-my-box', [EggController::class, 'findMyBox'])->name('searchSubmit');
|
});
|
||||||
|
});
|
||||||
// * LABELS
|
|
||||||
Route::view('/{id}/labels-et-certifications', 'front.egg.labels_and_certifs')->name('labelCertif');
|
Route::fallback(function () {
|
||||||
|
if (request()->getHost() === config('app.egg_domain')) {
|
||||||
Route::view('/{id}/label-rouge', 'front.egg.labels.label_rouge')->name('labelRouge');
|
return redirect(config('app.url'));
|
||||||
Route::view('/{id}/label-bio', 'front.egg.labels.label_bio')->name('labelBio');
|
}
|
||||||
Route::view('/{id}/label-igp', 'front.egg.labels.igp')->name('labelIGP');
|
abort(404);
|
||||||
Route::view('/{id}/label-nutriscore', 'front.egg.labels.nutriscore')->name('labelNutriscore');
|
|
||||||
Route::view('/{id}/label-fermiers', 'front.egg.labels.fermiers')->name('labelFermiers');
|
|
||||||
|
|
||||||
|
|
||||||
// * INFOS ELEVAGE
|
|
||||||
Route::view('/{id}/infos-elevages', 'front.egg.infos_elevages')->name('infoElevage');
|
|
||||||
Route::view('/{id}/differences-oeufs', 'front.egg.elevages.vs_oeufs')->name('infoDiffOeufs');
|
|
||||||
Route::view('/{id}/elevage-liberte', 'front.egg.elevages.elevage_liberte')->name('infoElevageLib');
|
|
||||||
|
|
||||||
|
|
||||||
// * ALIMENTATION
|
|
||||||
Route::view('/{id}/details-alimentation', 'front.egg.details-alimentation')->name('infoAlim');
|
|
||||||
|
|
||||||
// * EMBALLAGE
|
|
||||||
Route::view('/{id}/details-emballage', 'front.egg.details-emballage')->name('infoEmballage');
|
|
||||||
|
|
||||||
|
|
||||||
// * ELEVEURS
|
|
||||||
Route::get('/{id}/portrait-eleveur/{eleveurId}', [EggController::class, 'eleveurPortrait'])
|
|
||||||
->name('portraitEleveur');
|
|
||||||
|
|
||||||
Route::get('/{id}', [EggController::class, 'indexId'])->name('FrontPage');
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue