Sync 3 Favicon System
Sync 4 Layout + homepage ok
13
.gitignore
vendored
|
|
@ -28,3 +28,16 @@ yarn-error.log
|
|||
public/fichiers
|
||||
storage
|
||||
resources/theme
|
||||
|
||||
# Ignore public favicon
|
||||
/public/android-chrome-192x192.png
|
||||
/public/android-chrome-512x512.png
|
||||
/public/apple-touch-icon.png
|
||||
/public/browserconfig.xml
|
||||
/public/browserconfig.xml
|
||||
/public/favicon-16x16.png
|
||||
/public/favicon-32x32.png
|
||||
/public/favicon.ico
|
||||
/public/mstile-150x150.png
|
||||
/public/safari-pinned-tab.svg
|
||||
/public/site.webmanifest
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Settings;
|
||||
|
||||
class EndPageController extends Controller
|
||||
|
|
@ -23,6 +24,6 @@ class EndPageController extends Controller
|
|||
) {
|
||||
return view('theme::fo.end', compact('settings'));
|
||||
}
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('fo.home');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\ParticipateRequest;
|
||||
use App\Mail\CourrierArcadiaError;
|
||||
use App\Mail\NotifAdmin;
|
||||
|
|
@ -31,7 +32,7 @@ class EnterCodeController extends Controller
|
|||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
|
||||
// $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -286,6 +287,6 @@ class EnterCodeController extends Controller
|
|||
if ($participation) {
|
||||
return view('theme::fo.winning-proof', compact('participation'));
|
||||
}
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('fo.home');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\FaqQuestion;
|
||||
use App\Models\FaqTheme;
|
||||
|
||||
|
|
@ -17,7 +18,7 @@ class FAQController extends Controller
|
|||
$questions = FaqQuestion::all();
|
||||
$themes = FaqTheme::all();
|
||||
if (count($questions) === 0 && count($themes) === 0) {
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('fo.home');
|
||||
}
|
||||
return view('theme::fo.faq', compact('questions', 'themes'));
|
||||
}
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class GainsController extends Controller
|
||||
{
|
||||
|
|
@ -14,6 +16,6 @@ class GainsController extends Controller
|
|||
if (view()->exists('theme::fo.gains')) {
|
||||
return view('theme::fo.gains');
|
||||
}
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('fo.home');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
|
|
@ -11,6 +13,6 @@ class HomeController extends Controller
|
|||
*/
|
||||
public function home()
|
||||
{
|
||||
return view('theme::fo.home');
|
||||
return view('theme::fo.pages.home');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class HowToPlayController extends Controller
|
||||
{
|
||||
|
|
@ -14,6 +16,6 @@ class HowToPlayController extends Controller
|
|||
if (view()->exists('theme::fo.basic.how-to-play')) {
|
||||
return view('theme::fo.basic.how-to-play');
|
||||
}
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('fo.home');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Mail\PasswordReset;
|
||||
use App\Mail\VerifyEmail;
|
||||
use App\Models\Customer;
|
||||
|
|
@ -25,7 +26,7 @@ class LoginController extends Controller
|
|||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest')->except('logout');
|
||||
$this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
|
||||
// $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -137,7 +138,7 @@ class LoginController extends Controller
|
|||
} //end if
|
||||
|
||||
Auth::login($userLocal);
|
||||
return redirect()->route('saisir-code');
|
||||
return redirect()->route('fo.saisir-code');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -148,7 +149,7 @@ class LoginController extends Controller
|
|||
public function logout()
|
||||
{
|
||||
Auth::logout();
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('fo.home');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -211,17 +212,17 @@ class LoginController extends Controller
|
|||
public function forgotPasswordReset(Request $request, string $token)
|
||||
{
|
||||
if (!$request->hasValidSignature(false)) {
|
||||
return redirect()->route('login')
|
||||
return redirect()->route('fo.login')
|
||||
->withErrors("Le lien de changement de votre mot de passe n'est plus valide, veuillez réessayer.");
|
||||
}
|
||||
$tokenValid = false;
|
||||
$user = Customer::where('password_token', $token)->first();
|
||||
if (!$user) {
|
||||
return redirect()->route('forgot-password', compact('tokenValid'))
|
||||
return redirect()->route('fo.forgot-password', compact('tokenValid'))
|
||||
->withErrors('Le lien de changement du mot de passe est incorrect.');
|
||||
}
|
||||
$tokenValid = true;
|
||||
return redirect()->route('forgot-password', compact('tokenValid', 'token'));
|
||||
return redirect()->route('fo.forgot-password', compact('tokenValid', 'token'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -280,7 +281,7 @@ class LoginController extends Controller
|
|||
/** @var \App\Models\Settings $settings */
|
||||
$settings = app(Settings::class);
|
||||
Mail::to($email)->send(new PasswordReset($user, $settings));
|
||||
return redirect()->route('login')
|
||||
return redirect()->route('fo.login')
|
||||
->with('success', 'Un mail de réinitialisation de votre mot de passe vous a été envoyé(e).');
|
||||
}
|
||||
|
||||
|
|
@ -310,7 +311,7 @@ class LoginController extends Controller
|
|||
if ($update->status === 'OK') {
|
||||
$user->password_token = null;
|
||||
$user->save();
|
||||
return redirect()->route('login')
|
||||
return redirect()->route('fo.login')
|
||||
->with('success', 'Vous pouvez désormais vous connecter avec votre nouveau mot de passe.');
|
||||
} else {
|
||||
if ($update->code === 123) {
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Range;
|
||||
|
||||
class ProduitsController extends Controller
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Settings;
|
||||
use App\Models\Reduction;
|
||||
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Mail\VerifyEmail;
|
||||
use App\Models\Customer;
|
||||
use Carbon\Carbon;
|
||||
|
|
@ -26,7 +27,7 @@ class RegisterController extends Controller
|
|||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
$this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
|
||||
// $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -132,7 +133,7 @@ class RegisterController extends Controller
|
|||
|
||||
Mail::to($email)->send(new VerifyEmail($user));
|
||||
|
||||
return redirect()->route('login')
|
||||
return redirect()->route('fo.login')
|
||||
->with(
|
||||
'success',
|
||||
"Pour finaliser votre inscription,
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Settings;
|
||||
|
||||
class TeaserController extends Controller
|
||||
|
|
@ -18,6 +19,6 @@ class TeaserController extends Controller
|
|||
if ($settings->activated_teaser === 1 && $settings->teaser_end_activity > now()) {
|
||||
return view('theme::fo.teaser', compact('settings'));
|
||||
}
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('fo.home');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Content;
|
||||
|
||||
class ViewContentController extends Controller
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
namespace App\Http\Controllers\Fo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Mail\NotifAdmin;
|
||||
use App\Mail\WinningProof;
|
||||
use App\Models\Customer;
|
||||
|
|
@ -24,7 +25,7 @@ class WinningProofController extends Controller
|
|||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
|
||||
// $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -43,7 +44,7 @@ class WinningProofController extends Controller
|
|||
['barcode', null]
|
||||
])->has('instantWin')->first();
|
||||
if (!$participation) {
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('fo.home');
|
||||
}
|
||||
|
||||
$request->validate([
|
||||
|
|
@ -31,9 +31,8 @@ class Authenticate extends Middleware
|
|||
}
|
||||
}
|
||||
}
|
||||
return route('login');
|
||||
return route('fo.login');
|
||||
}
|
||||
abort(401);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class GameCheckDate
|
|||
// Check si le teaser est actif.
|
||||
if ($settings->start_date > now()) {
|
||||
if ($settings->activated_teaser === 1 && $settings->teaser_end_activity > now()) {
|
||||
return redirect()->route('teaser');
|
||||
return redirect()->route('fo.teaser');
|
||||
}
|
||||
return redirect($settings->redirect_close);
|
||||
}
|
||||
|
|
@ -31,7 +31,7 @@ class GameCheckDate
|
|||
// Check si le jeu est terminé.
|
||||
if ($settings->end_date < now()) {
|
||||
if ($settings->activated_close_page === 1 && $settings->close_page_active_date > now()) {
|
||||
return redirect()->route('end');
|
||||
return redirect()->route('fo.end');
|
||||
}
|
||||
return redirect($settings->redirect_close);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ class Re7Middleware
|
|||
public function handle(Request $request, Closure $next)
|
||||
{
|
||||
if (config('app.env') === 'production') {
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('fo.home');
|
||||
}
|
||||
return $next($request);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ class RedirectIfAuthenticated
|
|||
if (Auth::guard($guard)->check()) {
|
||||
switch ($guard) {
|
||||
case 'frontend':
|
||||
return \redirect()->route('home');
|
||||
return \redirect()->route('fo.home');
|
||||
case 'backend':
|
||||
if (!$request->routeIs('bo.*')) {
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@ class SecureHeaders
|
|||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
// phpcs:enable
|
||||
// * For Vite DEV
|
||||
$host = \parse_url(\config('app.url'), \PHP_URL_HOST);
|
||||
View::share('nonce', $nonce = Vite::useCspNonce());
|
||||
// * For VueJS dev tool to execute
|
||||
$jsDev = config('app.debug') ? "'unsafe-eval' 'unsafe-inline'" : "'nonce-{$nonce}' 'strict-dynamic'";
|
||||
|
|
@ -51,14 +53,23 @@ class SecureHeaders
|
|||
"default-src 'none';",
|
||||
"manifest-src 'self';",
|
||||
// * CKEDITOR Specific https://ckeditor.com/docs/ckeditor5/latest/installation/advanced/csp.html
|
||||
"connect-src 'self' blob:;",
|
||||
"connect-src 'self' " . implode(' ', [
|
||||
// * VITE DEV
|
||||
config('app.debug') ? "wss://{$host}:4443" : '',
|
||||
config('app.debug') ? "https://{$host}:4443" : '',
|
||||
'https://yl.s-web.fr'
|
||||
]) . ';',
|
||||
"img-src * data: blob:;",
|
||||
'frame-src ' . implode(' ', [
|
||||
'https://www.google.com/recaptcha/',
|
||||
'https://recaptcha.google.com/recaptcha/',
|
||||
'https://www.google.com/maps/'
|
||||
]) . ';',
|
||||
"font-src 'self' data: https://fonts.gstatic.com;",
|
||||
"font-src 'self' data: " . \implode(' ', [
|
||||
// * VITE DEV
|
||||
config('app.debug') ? "https://{$host}:4443" : '',
|
||||
'https://fonts.gstatic.com;'
|
||||
]) . ';',
|
||||
// ! Using CKEditor will must have unsafe-inline style
|
||||
// phpcs:ignore Generic.Files.LineLength.TooLong
|
||||
"style-src 'self' 'unsafe-inline' " . \implode(' ', [
|
||||
|
|
@ -67,7 +78,9 @@ class SecureHeaders
|
|||
'https://fonts.googleapis.com',
|
||||
'https://cdn.jsdelivr.net',
|
||||
'https://use.fontawesome.com',
|
||||
'https://fonts.googleapis.com'
|
||||
'https://fonts.googleapis.com',
|
||||
// * VITE DEV
|
||||
config('app.debug') ? "https://{$host}:4443" : '',
|
||||
]) . ';',
|
||||
// ! If you dont use ckeditor use this
|
||||
// "style-src 'self' 'nonce-$nonce';",
|
||||
|
|
@ -77,6 +90,8 @@ class SecureHeaders
|
|||
'https://www.googletagmanager.com',
|
||||
'https://cdnjs.cloudflare.com',
|
||||
"$scheme://www.google-analytics.com",
|
||||
// * VITE DEV
|
||||
config('app.debug') ? "https://{$host}:4443" : '',
|
||||
]) . ';'
|
||||
];
|
||||
|
||||
|
|
@ -94,7 +109,7 @@ class SecureHeaders
|
|||
* @param array $headerList
|
||||
* @return void
|
||||
*/
|
||||
private function removeUnwantedHeaders(array $headerList)
|
||||
private function removeUnwantedHeaders(array $headerList): void
|
||||
{
|
||||
foreach ($headerList as $header) {
|
||||
header_remove($header);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ return [
|
|||
'default' => [
|
||||
'HTML.SafeIframe' => true,
|
||||
// * For iframes
|
||||
'URI.SafeIframeRegexp' => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/|vimeo.com/)%",
|
||||
'URI.SafeIframeRegexp' => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/|vimeo.com/|www.dailymotion.com/video/)%",
|
||||
'HTML.Doctype' => 'HTML 4.01 Transitional',
|
||||
// * Legacy filter en full avec safe legacy.
|
||||
// 'HTML.Allowed' => 'h1[style|id],h2[style|id],h3[style|id],h4[style|id],h5[style|id],h6[style|id],figure[class|style],oembed[url],div[style],b,strong,i,em,u,s,pre,code[class],a[href|title|target|rel|id],ul[style],ol[style],dl[style],li,p[style],br,span[style|class],img[width|height|alt|src|style|class|title],iframe[src|width|height|class|frameborder|style],table[style|align|border|cellspacing|cellpadding|width],thead,tbody,th[colspan|align|valign|style],tr[align|valign|style],td[style|colspan|rowspan|scope|align|valign],hr,dl,dt,mark[class]',
|
||||
|
|
@ -43,7 +43,7 @@ return [
|
|||
],
|
||||
"youtube" => [
|
||||
"HTML.SafeIframe" => 'true',
|
||||
"URI.SafeIframeRegexp" => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/|vimeo.com/)%",
|
||||
"URI.SafeIframeRegexp" => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/|vimeo.com/|www.dailymotion.com/video/)%",
|
||||
],
|
||||
'custom_definition' => [
|
||||
'id' => 'html5-definitions',
|
||||
|
|
|
|||
108
package-lock.json
generated
|
|
@ -38,6 +38,7 @@
|
|||
"prettier": "latest",
|
||||
"print-js": "^1.6.0",
|
||||
"resolve-url-loader": "^5.0.0",
|
||||
"rollup-plugin-copy": "^3.5.0",
|
||||
"sass": "latest",
|
||||
"slugify": "^1.6.6",
|
||||
"stylelint": "latest",
|
||||
|
|
@ -2530,6 +2531,25 @@
|
|||
"integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/fs-extra": {
|
||||
"version": "8.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz",
|
||||
"integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/glob": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
|
||||
"integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/minimatch": "*",
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/json-schema": {
|
||||
"version": "7.0.14",
|
||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
|
||||
|
|
@ -2543,6 +2563,12 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@types/minimatch": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
|
||||
"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/minimist": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz",
|
||||
|
|
@ -4157,6 +4183,12 @@
|
|||
"integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/colorette": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
|
||||
"integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/combined-stream": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||
|
|
@ -7486,6 +7518,82 @@
|
|||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-copy": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz",
|
||||
"integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/fs-extra": "^8.0.1",
|
||||
"colorette": "^1.1.0",
|
||||
"fs-extra": "^8.1.0",
|
||||
"globby": "10.0.1",
|
||||
"is-plain-object": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.3"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-copy/node_modules/fs-extra": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
||||
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^4.0.0",
|
||||
"universalify": "^0.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6 <7 || >=8"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-copy/node_modules/globby": {
|
||||
"version": "10.0.1",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz",
|
||||
"integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/glob": "^7.1.1",
|
||||
"array-union": "^2.1.0",
|
||||
"dir-glob": "^3.0.1",
|
||||
"fast-glob": "^3.0.3",
|
||||
"glob": "^7.1.3",
|
||||
"ignore": "^5.1.1",
|
||||
"merge2": "^1.2.3",
|
||||
"slash": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-copy/node_modules/is-plain-object": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
|
||||
"integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-copy/node_modules/jsonfile": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
|
||||
"dev": true,
|
||||
"optionalDependencies": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-copy/node_modules/universalify": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/run-parallel": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"prettier": "latest",
|
||||
"print-js": "^1.6.0",
|
||||
"resolve-url-loader": "^5.0.0",
|
||||
"rollup-plugin-copy": "^3.5.0",
|
||||
"sass": "latest",
|
||||
"slugify": "^1.6.6",
|
||||
"stylelint": "latest",
|
||||
|
|
|
|||
BIN
public/logo.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
resources/assets/images/engine/logo.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
50
resources/assets/images/engine/logo.svg
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
resources/favicon/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
resources/favicon/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
resources/favicon/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
9
resources/favicon/browserconfig.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<TileColor>#2b5797</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
BIN
resources/favicon/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 963 B |
BIN
resources/favicon/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
resources/favicon/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
resources/favicon/mstile-150x150.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
109
resources/favicon/safari-pinned-tab.svg
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="680.000000pt" height="680.000000pt" viewBox="0 0 680.000000 680.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.14, written by Peter Selinger 2001-2017
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,680.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M3378 6575 c-2 -1 -61 -5 -133 -9 -161 -7 -208 -12 -365 -38 -448
|
||||
-73 -906 -257 -1278 -515 -247 -171 -495 -397 -647 -588 -22 -27 -43 -52 -46
|
||||
-55 -4 -3 -46 -59 -94 -124 -239 -329 -418 -714 -514 -1106 -16 -69 -32 -136
|
||||
-35 -150 -26 -146 -41 -260 -51 -385 -5 -67 -6 -403 -1 -450 2 -16 7 -65 10
|
||||
-107 4 -43 9 -88 11 -100 2 -13 9 -54 15 -93 46 -294 145 -604 285 -890 71
|
||||
-143 181 -331 248 -423 51 -69 141 -187 147 -192 3 -3 29 -34 59 -70 64 -76
|
||||
250 -263 334 -335 290 -248 669 -467 1019 -590 77 -27 256 -81 298 -89 14 -3
|
||||
34 -7 45 -10 59 -15 231 -46 282 -52 32 -3 61 -8 64 -10 37 -23 711 -22 749 1
|
||||
3 2 33 6 68 9 34 4 119 18 189 32 1118 222 2042 1038 2407 2128 37 110 93 325
|
||||
110 426 14 84 17 101 35 230 17 119 11 630 -9 770 -127 904 -598 1679 -1340
|
||||
2205 -429 304 -894 479 -1485 560 -22 3 -107 8 -190 11 -82 3 -158 7 -167 8
|
||||
-9 2 -18 3 -20 1z m-74 -317 c0 -54 -2 -99 -5 -102 -2 -2 -49 -6 -104 -10 -55
|
||||
-3 -115 -8 -132 -11 -18 -3 -45 -7 -60 -9 -95 -13 -287 -55 -358 -76 -543
|
||||
-168 -959 -431 -1315 -831 -111 -125 -200 -240 -245 -317 -5 -9 -12 -19 -15
|
||||
-22 -15 -13 -123 -206 -167 -295 -152 -311 -247 -665 -269 -1000 -4 -55 -8
|
||||
-102 -10 -104 -2 -2 -48 -4 -101 -5 l-98 0 1 59 c1 75 16 236 30 315 2 14 7
|
||||
41 10 60 28 173 122 480 206 668 99 223 256 484 389 647 150 183 379 414 481
|
||||
483 13 9 25 18 28 22 13 15 156 115 250 175 139 88 386 211 541 267 114 42
|
||||
308 101 369 113 14 3 70 13 125 24 108 21 155 28 255 37 36 4 66 7 67 8 1 1
|
||||
30 1 65 1 l63 0 -1 -97z m431 86 c28 -2 61 -7 75 -9 14 -3 41 -7 60 -10 427
|
||||
-66 835 -225 1199 -469 58 -39 113 -76 121 -83 8 -7 31 -25 51 -40 103 -81
|
||||
146 -120 279 -253 171 -171 247 -263 378 -460 259 -388 428 -848 477 -1295 4
|
||||
-33 8 -71 10 -83 8 -46 8 -152 1 -159 -10 -10 -187 -10 -193 1 -3 4 -7 31 -8
|
||||
60 -7 129 -14 180 -61 439 -3 15 -21 81 -39 147 -215 753 -732 1376 -1434
|
||||
1730 -240 121 -542 221 -771 256 -19 2 -46 7 -60 9 -78 14 -168 22 -257 24
|
||||
l-53 1 0 106 0 106 88 -6 c48 -4 110 -9 137 -12z m-180 -398 c500 -20 1018
|
||||
-215 1444 -543 128 -99 364 -340 467 -478 295 -394 469 -844 511 -1320 9 -109
|
||||
9 -361 0 -468 -19 -215 -92 -526 -162 -692 -60 -145 -96 -221 -147 -313 -349
|
||||
-628 -937 -1084 -1622 -1258 -110 -28 -181 -43 -241 -50 -22 -3 -47 -7 -55 -9
|
||||
-67 -18 -427 -26 -575 -12 -400 38 -739 150 -1094 358 -233 138 -502 372 -682
|
||||
594 -269 333 -461 755 -533 1172 -14 79 -19 118 -31 243 -5 50 -5 358 0 405 2
|
||||
22 7 65 10 95 3 30 7 64 9 75 2 11 7 40 11 65 18 112 24 135 62 268 149 519
|
||||
449 969 878 1316 300 242 757 454 1105 511 19 3 58 10 85 15 85 16 125 20 260
|
||||
26 72 4 131 8 133 9 2 2 11 1 20 -1 9 -1 76 -5 147 -8z m-2924 -2733 c0 -32 2
|
||||
-67 4 -78 1 -11 6 -51 9 -90 19 -203 114 -566 191 -733 14 -29 25 -55 25 -58
|
||||
0 -4 51 -107 115 -234 39 -75 185 -290 270 -395 102 -127 277 -304 385 -390
|
||||
41 -33 77 -62 80 -65 3 -3 30 -23 60 -45 184 -135 418 -263 639 -350 139 -54
|
||||
393 -125 501 -140 14 -2 52 -8 85 -14 60 -10 129 -18 239 -26 32 -2 62 -8 65
|
||||
-14 9 -14 7 -173 -2 -188 -4 -7 -13 -10 -20 -8 -7 2 -50 6 -97 9 -74 4 -267
|
||||
28 -325 40 -289 60 -494 127 -740 245 -212 102 -409 226 -600 379 -100 81
|
||||
-350 332 -429 432 -37 47 -73 92 -79 100 -103 130 -272 425 -352 615 -81 193
|
||||
-159 457 -190 640 -3 17 -7 39 -9 50 -2 11 -7 49 -11 85 -4 36 -9 73 -10 82
|
||||
-2 9 -7 60 -10 112 l-7 96 106 0 106 0 1 -57z m5763 27 c-4 -63 -16 -203 -19
|
||||
-218 -1 -9 -6 -42 -9 -72 -9 -81 -42 -246 -66 -330 -115 -414 -268 -728 -513
|
||||
-1055 -141 -188 -367 -417 -532 -540 -22 -16 -42 -33 -45 -36 -13 -16 -235
|
||||
-162 -323 -213 -237 -136 -574 -269 -790 -312 -10 -2 -26 -5 -35 -8 -9 -3 -30
|
||||
-8 -47 -11 -31 -5 -62 -11 -105 -20 -14 -3 -41 -7 -60 -9 -19 -3 -55 -7 -80
|
||||
-10 -66 -9 -127 -14 -195 -17 l-60 -3 -3 102 c-3 100 -2 102 20 103 54 2 241
|
||||
22 318 34 560 86 1124 376 1526 787 173 175 294 329 407 514 54 88 177 324
|
||||
177 338 0 3 9 25 20 49 81 172 177 554 196 780 6 71 12 146 13 165 1 10 26 12
|
||||
104 10 102 -3 102 -3 101 -28z"/>
|
||||
<path d="M5081 3581 c-12 -7 -14 -48 -15 -210 l-1 -200 40 -7 c142 -27 216 21
|
||||
218 139 1 67 -18 113 -56 137 -27 16 -82 22 -111 10 -24 -9 -24 -8 -22 66 1
|
||||
68 -1 74 -19 74 -11 0 -26 -4 -34 -9z m148 -198 c26 -22 36 -86 20 -125 -12
|
||||
-30 -66 -54 -97 -44 -16 5 -19 18 -19 87 -1 74 0 81 20 89 34 13 53 12 76 -7z"/>
|
||||
<path d="M1619 3543 c-81 -24 -119 -75 -127 -169 -13 -169 94 -249 281 -208
|
||||
l27 6 0 92 0 93 -35 1 -35 1 0 -68 c0 -76 -4 -81 -59 -75 -77 9 -116 68 -106
|
||||
157 6 59 26 94 61 107 34 13 101 13 126 -1 23 -12 38 1 38 34 0 34 -99 52
|
||||
-171 30z"/>
|
||||
<path d="M2789 3550 c-91 -16 -150 -88 -154 -189 -5 -158 106 -235 284 -196
|
||||
l27 6 0 92 -1 92 -30 1 c-16 1 -32 -2 -35 -7 -3 -5 -5 -35 -5 -68 2 -65 -2
|
||||
-69 -54 -65 -80 6 -110 48 -108 147 2 57 6 70 28 93 31 31 100 43 149 26 28
|
||||
-10 32 -9 40 14 13 32 13 31 -7 39 -37 14 -99 21 -134 15z"/>
|
||||
<path d="M4215 3542 c-1 -2 1 -20 6 -40 50 -215 62 -263 76 -299 14 -38 19
|
||||
-43 47 -43 32 0 33 2 69 104 20 57 37 109 37 115 0 6 4 11 8 11 4 0 23 -46 41
|
||||
-102 18 -57 38 -109 43 -115 6 -7 23 -13 38 -13 25 0 29 6 48 63 11 34 30 105
|
||||
42 157 12 52 26 110 30 127 10 37 6 41 -34 39 -31 -2 -39 -15 -51 -96 -11 -73
|
||||
-39 -190 -43 -185 -3 3 -22 56 -42 117 -36 109 -39 113 -68 116 l-30 3 -38
|
||||
-122 c-37 -117 -39 -121 -50 -93 -6 16 -21 81 -34 145 l-23 116 -34 -1 c-19
|
||||
-1 -36 -2 -38 -4z"/>
|
||||
<path d="M1936 3440 c-52 -26 -71 -64 -70 -135 0 -52 5 -69 27 -98 29 -39 83
|
||||
-58 144 -50 57 6 63 10 63 38 0 25 -2 26 -51 21 -27 -3 -60 0 -73 5 -25 12
|
||||
-49 45 -42 58 3 5 46 8 96 7 54 -1 90 3 91 9 13 122 -83 197 -185 145z m106
|
||||
-62 c19 -19 20 -22 4 -33 -17 -13 -106 -14 -106 -2 0 4 0 11 0 16 0 18 32 41
|
||||
56 41 13 0 34 -10 46 -22z"/>
|
||||
<path d="M2255 3453 c-67 -13 -61 1 -61 -153 l0 -140 33 0 32 0 3 118 3 117
|
||||
30 3 c59 6 70 -14 73 -132 l4 -106 28 0 c15 0 30 6 32 13 10 24 1 195 -11 223
|
||||
-6 16 -21 36 -33 43 -22 13 -96 21 -133 14z"/>
|
||||
<path d="M3053 3450 c-24 -10 -27 -18 -18 -42 4 -11 19 -13 56 -10 55 5 79 -8
|
||||
79 -42 0 -19 -5 -21 -34 -18 -80 9 -141 -40 -130 -104 11 -67 79 -90 201 -69
|
||||
l32 6 -3 112 c-3 113 -13 149 -46 163 -26 10 -114 13 -137 4z m117 -200 c0
|
||||
-40 0 -40 -38 -40 -40 0 -62 14 -62 40 0 26 22 40 62 40 38 0 38 0 38 -40z"/>
|
||||
<path d="M3360 3451 l-35 -6 -3 -143 -3 -143 33 3 33 3 2 105 c0 58 2 111 2
|
||||
118 1 7 15 12 36 12 47 0 58 -24 59 -140 l2 -95 32 -3 33 -3 -3 115 -3 116 33
|
||||
6 c37 7 61 -8 67 -42 2 -10 4 -59 4 -107 l1 -88 33 3 32 3 -1 112 c-1 130 -12
|
||||
156 -71 173 -30 9 -47 9 -82 -4 -34 -11 -49 -12 -65 -4 -24 13 -84 17 -136 9z"/>
|
||||
<path d="M3848 3436 c-70 -46 -88 -160 -35 -229 36 -47 127 -66 195 -42 19 7
|
||||
11 61 -8 57 -50 -11 -85 -10 -110 3 -17 9 -30 20 -30 24 0 5 -2 16 -5 24 -5
|
||||
11 11 14 90 13 l95 -1 0 38 c0 47 -22 97 -52 116 -37 23 -103 22 -140 -3z
|
||||
m104 -48 c8 -7 18 -22 20 -33 5 -19 1 -21 -51 -19 -31 1 -60 2 -64 3 -9 1 12
|
||||
43 27 53 17 12 51 9 68 -4z"/>
|
||||
<path d="M4822 3450 c-56 -24 -85 -74 -85 -146 0 -62 29 -116 72 -134 62 -25
|
||||
179 -14 167 16 -3 9 -6 22 -6 30 0 9 -5 12 -11 8 -19 -12 -79 -13 -107 -3 -29
|
||||
11 -42 26 -42 50 0 13 13 16 83 14 45 0 87 1 93 3 14 4 11 64 -5 104 -19 50
|
||||
-104 81 -159 58z m94 -75 c9 -14 14 -29 10 -32 -4 -4 -31 -8 -61 -8 -60 -2
|
||||
-70 11 -38 47 24 27 69 23 89 -7z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.2 KiB |
19
resources/favicon/site.webmanifest
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone"
|
||||
}
|
||||
43
resources/lang/en/cookie-notice.php
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
|
||||
// * Version 3.0.8
|
||||
// phpcs:disable
|
||||
return [
|
||||
'button_customize_cookies' => 'Customize cookies',
|
||||
'button_forbid' => 'Prohibit',
|
||||
'button_allow' => 'Allow',
|
||||
'button_forbid_all' => 'Reject all',
|
||||
'button_allow_all' => 'Accept all',
|
||||
'button_customize' => 'Customize',
|
||||
'button_back' => 'Back',
|
||||
'banner_title' => 'The :site_name website uses cookies!',
|
||||
'banner_text_open' => 'This website stores cookies on your computer. :site_name uses this information to improve and personalize your browsing experience, as well as for analysis and indicators concerning our visitors both on this website and on other media. You can click on "Accept" if you consent to the use of these cookies.',
|
||||
'banner_text' => 'We use cookies to ensure the smooth operation of our site and for analytical purposes. By continuing to browse this site or by closing this banner, you consent to the use of these cookies.',
|
||||
'banner_details' => 'If you refuse the use of cookies, your information will not be tracked during your visit to this site. A cookie will be used in your browser to remember not to track your preferences. Some features will not be accessible. You can change your mind and modify your consent at any time by returning to this site.',
|
||||
'banner_details_link' => 'To find out more about the cookies we use, please consult our privacy policy.',
|
||||
'banner_details_link_title' => 'Privacy policy',
|
||||
'banner_more_details' => 'More details...',
|
||||
'banner_less_details' => 'Fewer details...',
|
||||
'Panel_title' => 'Cookie management panel',
|
||||
'Panel_subtitle' => 'Your privacy is our priority',
|
||||
'Panel_details' => 'The functionalities of this site are based on services provided by third parties. If you accept, these third parties will deposit cookies that will enable you to view content on the site hosted by these third parties. Through these cookies, these third parties will collect and use your browsing data for their own purposes, in accordance with their privacy policy (link below). This page allows you to give or withdraw your consent, either globally or service by service.',
|
||||
'custom' => [
|
||||
'youtube' => [
|
||||
'name' => 'Youtube',
|
||||
'description' => 'Cookies placed via video sharing services are intended to allow the user to view multimedia content directly on the site.',
|
||||
'labelLink' => 'Learn more',
|
||||
'warning' => 'You must accept cookies to view this video',
|
||||
],
|
||||
'matomo' => [
|
||||
'title' => 'Matomo',
|
||||
'description' => 'Audience measurement services are used to generate traffic statistics, which are useful for improving the site.',
|
||||
'labelLink' => 'Learn more',
|
||||
],
|
||||
'recaptcha' => [
|
||||
'title' => 'reCAPTACHA',
|
||||
'description' => 'The purpose of the cookies placed on forms via the recaptcha is to prevent them from being submitted by robots.',
|
||||
'labelLink' => 'Learn more',
|
||||
'warning' => 'You must accept cookies to send the form',
|
||||
]
|
||||
]
|
||||
];
|
||||
43
resources/lang/fr/cookie-notice.php
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
|
||||
// * Version 3.0.8
|
||||
// phpcs:disable
|
||||
return [
|
||||
'button_customize_cookies' => 'Personnaliser les cookies',
|
||||
'button_forbid' => 'Interdire',
|
||||
'button_allow' => 'Autoriser',
|
||||
'button_forbid_all' => 'Tout refuser',
|
||||
'button_allow_all' => 'Tout accepter',
|
||||
'button_customize' => 'Personnaliser',
|
||||
'button_back' => 'Retour',
|
||||
'banner_title' => 'Le site internet :site_name utilise des cookies !',
|
||||
'banner_text_open' => 'Ce site web stocke les cookies sur votre ordinateur. :site_name utilise ces informations afin d’améliorer et de personnaliser votre expérience de navigation, ainsi que pour l’analyse et les indicateurs concernant nos visiteurs à la fois sur ce site web et sur d’autres supports. Vous pouvez cliquer sur « Accepter » si vous consentez à l’utilisation de ces cookies.',
|
||||
'banner_text' => 'Nous utilisons des cookies pour nous assurer du bon fonctionnement de notre site et à des fins analytiques. En poursuivant votre navigation sur ce site ou en fermant ce bandeau, vous consentez à l’utilisationde ces cookies.',
|
||||
'banner_details' => 'Si vous refusez l’utilisation des cookies, vos informations ne seront pas suivies lors de votre visite sur ce site. Un cookie sera utilisé dans votre navigateur afin de se souvenir de ne pas suivre vos préférences. Certaines fonctionnalités ne seront pas accessibles. Vous pouvez changer d’avis et modifier votre consentement à tout moment en revenant sur ce site.',
|
||||
'banner_details_link' => 'Pour en savoir plus sur les cookies que nous utilisons, consultez notre charte de confidentialité.',
|
||||
'banner_details_link_title' => 'Charte de confidentialité',
|
||||
'banner_more_details' => 'Plus de détails...',
|
||||
'banner_less_details' => 'Moins de détails...',
|
||||
'Panel_title' => 'Panneau de gestion des cookies',
|
||||
'Panel_subtitle' => 'Le respect de votre vie privée est notre priorité',
|
||||
'Panel_details' => 'Les fonctionnalités de ce site s’appuient sur des services proposés par des tiers. Si vous acceptez, ces tiers déposeront des cookies qui vous permettront de visualiser sur le site du contenu hébergé par ces tiers. Via ces cookies, ces tiers collecteront et utiliseront vos données de navigation pour des finalités qui leur sont propres, conformément à leur politique de confidentialité (lien ci-dessous). Cette page vous permet de donner ou de retirer votre consentement, soit globalement soit service par service.',
|
||||
'custom' => [
|
||||
'youtube' => [
|
||||
'name' => 'Youtube',
|
||||
'description' => 'Les cookies placés via les services de partage de vidéos sont destinés à permettre à l\'utilisateur de visionner des contenus multimédias directement sur le site.',
|
||||
'labelLink' => 'En apprendre plus',
|
||||
'warning' => 'Vous devez accepter les cookies pour visionner cette vidéo',
|
||||
],
|
||||
'matomo' => [
|
||||
'title' => 'Matomo',
|
||||
'description' => 'Les services de mesure d\'audience permettent de générer des statistiques de fréquentation utiles à l\'amélioration du site.',
|
||||
'labelLink' => 'En apprendre plus',
|
||||
],
|
||||
'recaptcha' => [
|
||||
'title' => 'reCAPTACHA',
|
||||
'description' => 'Les cookies qui sont déposés via le recaptcha sur les formulaires ont pour finalité d\'empêcher que ceux-ci ne soient soumis par des robots.',
|
||||
'labelLink' => 'En apprendre plus',
|
||||
'warning' => 'Vous devez accepter les cookies pour envoyer le formulaire',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
@section('content')
|
||||
<div class="d-flex justify-content-between">
|
||||
<h2>{{ __('Dashboard') }}</h2>
|
||||
<a class="btn btn-primary text-decoration-none m-0 me-2" href="{{ route('home') }}">
|
||||
<a class="btn btn-primary text-decoration-none m-0 me-2" href="{{ route('fo.home') }}">
|
||||
{{ __('Accéder au jeu') }}
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
|||
3
resources/views/vendor/errors/403.blade.php
vendored
|
|
@ -8,6 +8,5 @@
|
|||
@section('button', true)
|
||||
|
||||
@section('image')
|
||||
{{-- FIXME: Personaliser ca --}}
|
||||
<img src="{{ Vite::asset('resources/assets/images/logo.png') }}" class="logo img-fluid" alt="{{ config('app.name') }}">
|
||||
<img class="logo img-fluid" src="{{ Vite::asset('resources/assets/images/engine/logo.svg') }}" alt="{{ config('app.name') }}">
|
||||
@endsection
|
||||
|
|
|
|||
3
resources/views/vendor/errors/404.blade.php
vendored
|
|
@ -8,6 +8,5 @@
|
|||
@section('button', true)
|
||||
|
||||
@section('image')
|
||||
{{-- FIXME: Personaliser ca --}}
|
||||
<img src="{{ Vite::asset('resources/assets/images/logo.png') }}" class="logo img-fluid" alt="{{ config('app.name') }}">
|
||||
<img class="logo img-fluid" src="{{ Vite::asset('resources/assets/images/engine/logo.svg') }}" alt="{{ config('app.name') }}">
|
||||
@endsection
|
||||
|
|
|
|||
3
resources/views/vendor/errors/503.blade.php
vendored
|
|
@ -6,6 +6,5 @@
|
|||
@section('submessage', __('Le site est en maintenance, nous reviendrons...'))
|
||||
|
||||
@section('image')
|
||||
{{-- FIXME: Personaliser ca --}}
|
||||
<img src="{{ Vite::asset('resources/assets/images/logo.png') }}" class="logo img-fluid" alt="{{ config('app.name') }}">
|
||||
<img class="logo img-fluid" src="{{ Vite::asset('resources/assets/images/engine/logo.svg') }}" alt="{{ config('app.name') }}">
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -1,48 +1,52 @@
|
|||
<!DOCTYPE html>
|
||||
<html dir="ltr" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
|
||||
@vite(['resources/sass/fo/fo.scss'])
|
||||
@stack('scripts')
|
||||
</head>
|
||||
<body>
|
||||
<div class="row bg-primary text-primary bg-opacity-25 bg-gradient d-md-flex min-vh-100 h-100 m-0">
|
||||
<div class="col-12 col-md-6 d-flex align-items-center justify-content-center">
|
||||
<div class="w-md-50 m-5">
|
||||
<div class="display-1">
|
||||
@yield('code', __('Oh no'))
|
||||
</div>
|
||||
@vite(['resources/sass/bo/bo.scss'])
|
||||
@stack('scripts')
|
||||
</head>
|
||||
|
||||
<div class="w-16 h-1 bg-purple-light my-3 my-md-5"></div>
|
||||
<body>
|
||||
<div class="row bg-primary text-primary bg-gradient d-md-flex min-vh-100 h-100 m-0 bg-opacity-25">
|
||||
<div class="col-12 col-md-6 d-flex align-items-center justify-content-center">
|
||||
<div class="w-md-50 m-5">
|
||||
<div class="display-1">
|
||||
@yield('code', __('Oh no'))
|
||||
</div>
|
||||
|
||||
<p class="display-6 font-light mb-8 leading-normal">
|
||||
@yield('message')
|
||||
</p>
|
||||
<div class="bg-purple-light my-md-5 my-3 h-1 w-16"></div>
|
||||
|
||||
<p class="text-grey-darker fs-4 font-light mb-8 leading-normal">
|
||||
@yield('submessage')
|
||||
</p>
|
||||
<p class="display-6 mb-8 font-light leading-normal">
|
||||
@yield('message')
|
||||
</p>
|
||||
|
||||
@hasSection('button')
|
||||
<a class="btn btn-primary fw-bold text-uppercase tracking-wider py-3 px-5" role="button" href="{{ app('router')->has('home') ? route('home') : url('/') }}">
|
||||
<p class="text-grey-darker fs-4 mb-8 font-light leading-normal">
|
||||
@yield('submessage')
|
||||
</p>
|
||||
|
||||
@hasSection('button')
|
||||
<a class="btn btn-primary fw-bold text-uppercase px-5 py-3 tracking-wider"
|
||||
href="{{ app('router')->has('home') ? route('home') : url('/') }}" role="button">
|
||||
{{ __('Go to page :page', [
|
||||
'page' => __('home')
|
||||
'page' => __('home'),
|
||||
]) }}
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col bg-primary bg-opacity-25 position-relative d-md-flex flex-wrap text-center align-items-center justify-content-center vh-md-100 min-vh-50">
|
||||
<div>
|
||||
@yield('image')
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<div
|
||||
class="col bg-primary position-relative d-md-flex align-items-center justify-content-center vh-md-100 min-vh-50 flex-wrap bg-opacity-25 text-center">
|
||||
<div>
|
||||
@yield('image')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
|
|||
46
resources/views/vendor/errors/minimal.blade.php
vendored
|
|
@ -1,29 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html dir="ltr" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<style>.tracking-wider{letter-spacing:.05em}</style>
|
||||
<title>@yield('title')</title>
|
||||
|
||||
@vite(['resources/sass/fo/fo.scss'])
|
||||
@stack('scripts')
|
||||
</head>
|
||||
<body>
|
||||
<div class="bg-primary text-primary bg-opacity-25 bg-gradient d-flex align-items-start justify-content-center vh-100 align-items-sm-center pt-sm-0">
|
||||
<div class="mx-auto px-sm-5">
|
||||
<div class="text-opacity-75 d-flex align-items-center pt-5 justify-content-sm-start pt-sm-0">
|
||||
<div class="px-4 display-5 border-primary-end-2 tracking-wider">
|
||||
@yield('code')
|
||||
</div>
|
||||
<style>
|
||||
.tracking-wider {
|
||||
letter-spacing: .05em
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="text-opacity-75 ms-4 fs-5 text-uppercase tracking-wider">
|
||||
@yield('message')
|
||||
</div>
|
||||
@vite(['resources/sass/bo/bo.scss'])
|
||||
@stack('scripts')
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div
|
||||
class="bg-primary text-primary bg-gradient d-flex align-items-start justify-content-center vh-100 align-items-sm-center pt-sm-0 bg-opacity-25">
|
||||
<div class="px-sm-5 mx-auto">
|
||||
<div class="d-flex align-items-center justify-content-sm-start pt-sm-0 pt-5 text-opacity-75">
|
||||
<div class="display-5 border-primary-end-2 px-4 tracking-wider">
|
||||
@yield('code')
|
||||
</div>
|
||||
|
||||
<div class="fs-5 text-uppercase ms-4 tracking-wider text-opacity-75">
|
||||
@yield('message')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -17,64 +17,60 @@ use Illuminate\Support\Facades\Auth;
|
|||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
// * BO
|
||||
Route::prefix('bo')
|
||||
->name('bo.')
|
||||
->group(function () {
|
||||
Route::namespace('\App\Http\Controllers\Bo')
|
||||
->group(function () {
|
||||
Auth::routes(
|
||||
[
|
||||
'confirm' => false,
|
||||
'login' => true,
|
||||
'logout' => true,
|
||||
'register' => false,
|
||||
'reset' => false,
|
||||
'verify' => false,
|
||||
]
|
||||
);
|
||||
});
|
||||
Route::middleware(['auth:backend', 'is-admin', 'is-super-admin'])
|
||||
->group(function () {
|
||||
Route::get('/', [DashboardController::class, 'index'])
|
||||
->name('dashboard')->withoutMiddleware('is-super-admin');
|
||||
// * BANNED IPS
|
||||
Route::resource('/bannedips', BannedIpController::class)->except('show');
|
||||
// * CONTENTS
|
||||
Route::resource('/contents', ContentController::class)
|
||||
->only(['index', 'edit', 'update'])
|
||||
->withoutMiddleware('htmlsanitize')
|
||||
->middleware(['htmlsanitize:value']);
|
||||
// * FAQ - THEMES
|
||||
Route::resource('/faq-themes', FaqThemesController::class)->except('show');
|
||||
// * FAQ - QUESTIONS
|
||||
Route::resource('/faq-questions', FaqQuestionsController::class)->except('show');
|
||||
// * GAIN VIEWS
|
||||
Route::resource('/gain-views', GainViewController::class)->except('show');
|
||||
// * PRIZES
|
||||
Route::resource('/prizes', PrizesController::class)
|
||||
->except('show')
|
||||
->withoutMiddleware('htmlsanitize')
|
||||
->middleware(['htmlsanitize:arg_content']);
|
||||
// * RANGES
|
||||
Route::resource('ranges', RangeController::class)
|
||||
->except('show')
|
||||
->withoutMiddleware('is-super-admin');
|
||||
// * PRODUCTS
|
||||
Route::resource('products', ProductsController::class)
|
||||
->except('show')
|
||||
->withoutMiddleware('is-super-admin');
|
||||
// * SETTINGS.
|
||||
Route::resource('/settings', SettingsController::class)
|
||||
->only(['edit', 'update']);
|
||||
// * WINNERS LIST
|
||||
Route::get('/winners-list', [WinnersListController::class, 'index'])->name('winners-list');
|
||||
// * INSTANT WIN
|
||||
Route::get('/instant-win', [InstantWinController::class, 'index'])->name('instant-win');
|
||||
Route::get('/ajax/instant-win-generate', [InstantWinController::class, 'instantWinGenerate']);
|
||||
// * UNIQUES CODES.
|
||||
Route::get('/codes', [CodesController::class, 'index'])->name('codes');
|
||||
Route::post('/codes', [CodesController::class, 'generate'])->name('generate-codes');
|
||||
Route::get('/codes/search', [CodesController::class, 'search'])->name('codes.search');
|
||||
Route::post('/codes/export', [CodesController::class, 'export'])->name('export-codes');
|
||||
});
|
||||
Route::prefix('bo')->name('bo.')->group(function () {
|
||||
Route::namespace('\App\Http\Controllers\Bo')->group(function () {
|
||||
Auth::routes(
|
||||
[
|
||||
'confirm' => false,
|
||||
'login' => true,
|
||||
'logout' => true,
|
||||
'register' => false,
|
||||
'reset' => false,
|
||||
'verify' => false,
|
||||
]
|
||||
);
|
||||
});
|
||||
Route::middleware(['auth:backend', 'is-admin', 'is-super-admin'])->group(function () {
|
||||
Route::get('/', [DashboardController::class, 'index'])
|
||||
->name('dashboard')->withoutMiddleware('is-super-admin');
|
||||
// * BANNED IPS
|
||||
Route::resource('/bannedips', BannedIpController::class)->except('show');
|
||||
// * CONTENTS
|
||||
Route::resource('/contents', ContentController::class)
|
||||
->only(['index', 'edit', 'update'])
|
||||
->withoutMiddleware('htmlsanitize')
|
||||
->middleware(['htmlsanitize:value']);
|
||||
// * FAQ - THEMES
|
||||
Route::resource('/faq-themes', FaqThemesController::class)->except('show');
|
||||
// * FAQ - QUESTIONS
|
||||
Route::resource('/faq-questions', FaqQuestionsController::class)->except('show');
|
||||
// * GAIN VIEWS
|
||||
Route::resource('/gain-views', GainViewController::class)->except('show');
|
||||
// * PRIZES
|
||||
Route::resource('/prizes', PrizesController::class)
|
||||
->except('show')
|
||||
->withoutMiddleware('htmlsanitize')
|
||||
->middleware(['htmlsanitize:arg_content']);
|
||||
// * RANGES
|
||||
Route::resource('ranges', RangeController::class)
|
||||
->except('show')
|
||||
->withoutMiddleware('is-super-admin');
|
||||
// * PRODUCTS
|
||||
Route::resource('products', ProductsController::class)
|
||||
->except('show')
|
||||
->withoutMiddleware('is-super-admin');
|
||||
// * SETTINGS.
|
||||
Route::resource('/settings', SettingsController::class)
|
||||
->only(['edit', 'update']);
|
||||
// * WINNERS LIST
|
||||
Route::get('/winners-list', [WinnersListController::class, 'index'])->name('winners-list');
|
||||
// * INSTANT WIN
|
||||
Route::get('/instant-win', [InstantWinController::class, 'index'])->name('instant-win');
|
||||
Route::get('/ajax/instant-win-generate', [InstantWinController::class, 'instantWinGenerate']);
|
||||
// * UNIQUES CODES.
|
||||
Route::get('/codes', [CodesController::class, 'index'])->name('codes');
|
||||
Route::post('/codes', [CodesController::class, 'generate'])->name('generate-codes');
|
||||
Route::get('/codes/search', [CodesController::class, 'search'])->name('codes.search');
|
||||
Route::post('/codes/export', [CodesController::class, 'export'])->name('export-codes');
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
<?php
|
||||
|
||||
use App\Http\Controllers\EndPageController;
|
||||
use App\Http\Controllers\EnterCodeController;
|
||||
use App\Http\Controllers\FAQController;
|
||||
use App\Http\Controllers\GainsController;
|
||||
use App\Http\Controllers\HomeController;
|
||||
use App\Http\Controllers\HowToPlayController;
|
||||
use App\Http\Controllers\LoginController;
|
||||
use App\Http\Controllers\ProduitsController;
|
||||
use App\Http\Controllers\RegisterController;
|
||||
use App\Http\Controllers\TeaserController;
|
||||
use App\Http\Controllers\ViewContentController;
|
||||
use App\Http\Controllers\WinningProofController;
|
||||
use App\Http\Controllers\Fo\EndPageController;
|
||||
use App\Http\Controllers\Fo\EnterCodeController;
|
||||
use App\Http\Controllers\Fo\FAQController;
|
||||
use App\Http\Controllers\Fo\GainsController;
|
||||
use App\Http\Controllers\Fo\HomeController;
|
||||
use App\Http\Controllers\Fo\HowToPlayController;
|
||||
use App\Http\Controllers\Fo\LoginController;
|
||||
use App\Http\Controllers\Fo\ProduitsController;
|
||||
use App\Http\Controllers\Fo\RegisterController;
|
||||
use App\Http\Controllers\Fo\TeaserController;
|
||||
use App\Http\Controllers\Fo\ViewContentController;
|
||||
use App\Http\Controllers\Fo\WinningProofController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::namespace('\App\Http\Controllers\Fo')->middleware(['throttle:credentials'])->group(function () {
|
||||
Route::middleware(['throttle:credentials'])->name('fo.')->group(function () {
|
||||
Route::middleware('game-date')->group(function () {
|
||||
// Routes nécessitant d'être connecté.
|
||||
Route::middleware('auth:frontend')->group(function () {
|
||||
|
|
|
|||
|
|
@ -1,18 +1,16 @@
|
|||
<?php
|
||||
|
||||
use App\Http\Controllers\Re7Controller;
|
||||
use App\Http\Controllers\Fo\Re7Controller;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::prefix('re7')
|
||||
->middleware(['re7'])
|
||||
->group(function () {
|
||||
Route::get('/', [Re7Controller::class, 'index']);
|
||||
Route::get('/teaser', [Re7Controller::class, 'teaser']);
|
||||
Route::get('/mail-gain', [Re7Controller::class, 'prizeMail']);
|
||||
Route::get('/mail-reduction', [Re7Controller::class, 'reductionMail']);
|
||||
Route::get('/br', [Re7Controller::class, 'br']);
|
||||
// phpcs:ignore
|
||||
// TODO : Rendre dynamique la partie gain par rapport au BO.
|
||||
Route::get('/gain1', [Re7Controller::class, 'gain1']);
|
||||
Route::get('/gain2', [Re7Controller::class, 'gain2']);
|
||||
});
|
||||
Route::prefix('re7')->name('re7.')->middleware(['re7'])->group(function () {
|
||||
Route::get('/', [Re7Controller::class, 'index'])->name('index');
|
||||
Route::get('/teaser', [Re7Controller::class, 'teaser'])->name('teaser');
|
||||
Route::get('/mail-gain', [Re7Controller::class, 'prizeMail'])->name('mail-gain');
|
||||
Route::get('/mail-reduction', [Re7Controller::class, 'reductionMail'])->name('mail-reduction');
|
||||
Route::get('/br', [Re7Controller::class, 'br'])->name('br');
|
||||
// phpcs:ignore
|
||||
// TODO : Rendre dynamique la partie gain par rapport au BO.
|
||||
Route::get('/gain1', [Re7Controller::class, 'gain1'])->name('gain1');
|
||||
Route::get('/gain2', [Re7Controller::class, 'gain2'])->name('gain2');
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import vue from "@vitejs/plugin-vue";
|
|||
import laravel from "laravel-vite-plugin";
|
||||
import path from "path";
|
||||
import postcssDiscard from "postcss-discard-comments";
|
||||
import copy from "rollup-plugin-copy";
|
||||
import { defineConfig, loadEnv } from "vite";
|
||||
import babel from "vite-plugin-babel";
|
||||
import checker from "vite-plugin-checker";
|
||||
|
|
@ -77,6 +78,43 @@ export default defineConfig({
|
|||
],
|
||||
refresh: true,
|
||||
}),
|
||||
copy({
|
||||
targets: [
|
||||
{
|
||||
src: [
|
||||
// * Logo for Bo error pages
|
||||
path.normalize("resources/assets/images/engine/logo.png"),
|
||||
// * Engine copy (Default favicon)
|
||||
path.normalize("resources/favicon/android-chrome-192x192.png"),
|
||||
path.normalize("resources/favicon/android-chrome-512x512.png"),
|
||||
path.normalize("resources/favicon/apple-touch-icon.png"),
|
||||
path.normalize("resources/favicon/browserconfig.xml"),
|
||||
path.normalize("resources/favicon/browserconfig.xml"),
|
||||
path.normalize("resources/favicon/favicon-16x16.png"),
|
||||
path.normalize("resources/favicon/favicon-32x32.png"),
|
||||
path.normalize("resources/favicon/favicon.ico"),
|
||||
path.normalize("resources/favicon/mstile-150x150.png"),
|
||||
path.normalize("resources/favicon/safari-pinned-tab.svg"),
|
||||
path.normalize("resources/favicon/site.webmanifest"),
|
||||
// * Theme Copy (override if present) favicon
|
||||
path.normalize("resources/theme/mounted/favicon/android-chrome-192x192.png"),
|
||||
path.normalize("resources/theme/mounted/favicon/android-chrome-512x512.png"),
|
||||
path.normalize("resources/theme/mounted/favicon/apple-touch-icon.png"),
|
||||
path.normalize("resources/theme/mounted/favicon/browserconfig.xml"),
|
||||
path.normalize("resources/theme/mounted/favicon/browserconfig.xml"),
|
||||
path.normalize("resources/theme/mounted/favicon/favicon-16x16.png"),
|
||||
path.normalize("resources/theme/mounted/favicon/favicon-32x32.png"),
|
||||
path.normalize("resources/theme/mounted/favicon/favicon.ico"),
|
||||
path.normalize("resources/theme/mounted/favicon/mstile-150x150.png"),
|
||||
path.normalize("resources/theme/mounted/favicon/safari-pinned-tab.svg"),
|
||||
path.normalize("resources/theme/mounted/favicon/site.webmanifest"),
|
||||
],
|
||||
dest: path.normalize("public")
|
||||
},
|
||||
],
|
||||
copyOnce: true,
|
||||
verbose: true
|
||||
}),
|
||||
stylelint({
|
||||
dev: false,
|
||||
build: true,
|
||||
|
|
|
|||