diff --git a/.env.example b/.env.example index b7becba..12d4487 100644 --- a/.env.example +++ b/.env.example @@ -22,12 +22,6 @@ QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - MAIL_MAILER=smtp MAIL_HOST=mailhog MAIL_PORT=1025 @@ -37,16 +31,5 @@ MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=null MAIL_FROM_NAME="${APP_NAME}" -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= -AWS_USE_PATH_STYLE_ENDPOINT=false - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" +MAIL_LIST_SERVICEWEB= +MAIL_LIST_CONTACTFORM= \ No newline at end of file diff --git a/.gitignore b/.gitignore index eb003b0..aad1c0a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ /node_modules /public/hot /public/storage +/public /storage/*.key /vendor .env diff --git a/README.md b/README.md index d400ec6..528136f 100644 --- a/README.md +++ b/README.md @@ -1,65 +1,20 @@ -

+# DOUX -

-Build Status -Total Downloads -Latest Stable Version -License -

- -## About Laravel - -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: - -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - -Laravel is accessible, powerful, and provides tools required for large, robust applications. - -## Learning Laravel - -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 1500 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[CMS Max](https://www.cmsmax.com/)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). +## Installation +``` +php artisan storage:link +cp .env.example .env +php artisan key:generate +composer install +php artisan vendor:publish --provider="JoeDixon\Translation\TranslationServiceProvider" +``` +- Créez la base de données +- Éditez le .env +``` +php artisan migrate --seed +``` +Pour le front : +``` +npm install +npm run prod +``` \ No newline at end of file diff --git a/app/Console/Commands/AdminCreate.php b/app/Console/Commands/AdminCreate.php new file mode 100644 index 0000000..6631d90 --- /dev/null +++ b/app/Console/Commands/AdminCreate.php @@ -0,0 +1,58 @@ +ask('Name ?'); + $email = $this->ask('Email ?'); + $password = $this->secret('What is the password?'); + + $user = new User([ + 'name' => $name, + 'email' => $email, + 'role' => $role, + 'password' => Hash::make($password) + ]); + $user->saveOrFail(); + + $this->info('Admin created.'); + return 0; + } +} diff --git a/app/Enums/Country.php b/app/Enums/Country.php new file mode 100644 index 0000000..a444c95 --- /dev/null +++ b/app/Enums/Country.php @@ -0,0 +1,784 @@ + 1, + 'alandIslands' => 2, + 'albania' => 3, + 'algeria' => 4, + 'americanSamoa' => 5, + 'andorra' => 6, + 'angola' => 7, + 'anguilla' => 8, + 'antarctica' => 9, + 'antiguaAndBarbuda' => 10, + 'argentina' => 11, + 'armenia' => 12, + 'aruba' => 13, + 'australia' => 14, + 'austria' => 15, + 'azerbaijan' => 16, + 'bahrain' => 17, + 'bahamas' => 18, + 'bangladesh' => 19, + 'barbados' => 20, + 'belarus' => 21, + 'belgium' => 22, + 'belize' => 23, + 'benin' => 24, + 'bermuda' => 25, + 'bhutan' => 26, + 'boliviaPlurinationalStateOf' => 27, + 'bonaireSintEustatiusAndSaba' => 28, + 'bosniaAndHerzegovina' => 29, + 'botswana' => 30, + 'bouvetIsland' => 31, + 'brazil' => 32, + 'britishIndianOceanTerritory' => 33, + 'bruneiDarussalam' => 34, + 'bulgaria' => 35, + 'burkinaFaso' => 36, + 'burundi' => 37, + 'cambodia' => 38, + 'cameroon' => 39, + 'canada' => 40, + 'capeVerde' => 41, + 'caymanIslands' => 42, + 'centralAfricanRepublic' => 43, + 'chad' => 44, + 'chile' => 45, + 'china' => 46, + 'christmasIsland' => 47, + 'cocosKeelingIslands' => 48, + 'colombia' => 49, + 'comoros' => 50, + 'congo' => 51, + 'congoTheDemocraticRepublicOfThe' => 52, + 'cookIslands' => 53, + 'costaRica' => 54, + 'coteDivoire' => 55, + 'croatia' => 56, + 'cuba' => 57, + 'curacao' => 58, + 'cyprus' => 59, + 'czechRepublic' => 60, + 'denmark' => 61, + 'djibouti' => 62, + 'dominica' => 63, + 'dominicanRepublic' => 64, + 'ecuador' => 65, + 'egypt' => 66, + 'elSalvador' => 67, + 'equatorialGuinea' => 68, + 'eritrea' => 69, + 'estonia' => 70, + 'ethiopia' => 71, + 'falklandIslandsMalvinas' => 72, + 'faroeIslands' => 73, + 'fiji' => 74, + 'finland' => 75, + 'france' => 76, + 'frenchGuiana' => 77, + 'frenchPolynesia' => 78, + 'frenchSouthernTerritories' => 79, + 'gabon' => 80, + 'gambia' => 81, + 'georgia' => 82, + 'germany' => 83, + 'ghana' => 84, + 'gibraltar' => 85, + 'greece' => 86, + 'greenland' => 87, + 'grenada' => 88, + 'guadeloupe' => 89, + 'guam' => 90, + 'guatemala' => 91, + 'guernsey' => 92, + 'guinea' => 93, + 'guineaBissau' => 94, + 'guyana' => 95, + 'haiti' => 96, + 'heardIslandAndMcdonaldIslands' => 97, + 'holySeeVaticanCityState' => 98, + 'honduras' => 99, + 'hongKong' => 100, + 'hungary' => 101, + 'iceland' => 102, + 'india' => 103, + 'indonesia' => 104, + 'iranIslamicRepublicOf' => 105, + 'iraq' => 106, + 'ireland' => 107, + 'isleOfMan' => 108, + 'israel' => 109, + 'italy' => 110, + 'jamaica' => 111, + 'japan' => 112, + 'jersey' => 113, + 'jordan' => 114, + 'kazakhstan' => 115, + 'kenya' => 116, + 'kiribati' => 117, + 'koreaDemocraticPeoplesRepublicOf' => 118, + 'koreaRepublicOf' => 119, + 'kuwait' => 120, + 'kyrgyzstan' => 121, + 'laoPeoplesDemocraticRepublic' => 122, + 'latvia' => 123, + 'lebanon' => 124, + 'lesotho' => 125, + 'liberia' => 126, + 'libya' => 127, + 'liechtenstein' => 128, + 'lithuania' => 129, + 'luxembourg' => 130, + 'macao' => 131, + 'macedoniaTheFormerYugoslavRepublicOf' => 132, + 'madagascar' => 133, + 'malawi' => 134, + 'malaysia' => 135, + 'maldives' => 136, + 'mali' => 137, + 'malta' => 138, + 'marshallIslands' => 139, + 'martinique' => 140, + 'mauritania' => 141, + 'mauritius' => 142, + 'mayotte' => 143, + 'mexico' => 144, + 'micronesiaFederatedStatesOf' => 145, + 'moldovaRepublicOf' => 146, + 'monaco' => 147, + 'mongolia' => 148, + 'montenegro' => 149, + 'montserrat' => 150, + 'morocco' => 151, + 'mozambique' => 152, + 'myanmar' => 153, + 'namibia' => 154, + 'nauru' => 155, + 'nepal' => 156, + 'netherlands' => 157, + 'newCaledonia' => 158, + 'newZealand' => 159, + 'nicaragua' => 160, + 'niger' => 161, + 'nigeria' => 162, + 'niue' => 163, + 'norfolkIsland' => 164, + 'northernMarianaIslands' => 165, + 'norway' => 166, + 'oman' => 167, + 'pakistan' => 168, + 'palau' => 169, + 'palestineStateOf' => 170, + 'panama' => 171, + 'papuaNewGuinea' => 172, + 'paraguay' => 173, + 'peru' => 174, + 'philippines' => 175, + 'pitcairn' => 176, + 'poland' => 177, + 'portugal' => 178, + 'puertoRico' => 179, + 'qatar' => 180, + 'reunion' => 181, + 'romania' => 182, + 'russianFederation' => 183, + 'rwanda' => 184, + 'saintBarthelemy' => 185, + 'saintHelenaAscensionAndTristanDaCunha' => 186, + 'saintKittsAndNevis' => 187, + 'saintLucia' => 188, + 'saintMartinFrenchPart' => 189, + 'saintPierreAndMiquelon' => 190, + 'saintVincentAndTheGrenadines' => 191, + 'samoa' => 192, + 'sanMarino' => 193, + 'saoTomeAndPrincipe' => 194, + 'saudiArabia' => 195, + 'senegal' => 196, + 'serbia' => 197, + 'seychelles' => 198, + 'sierraLeone' => 199, + 'singapore' => 200, + 'sintMaartenDutchPart' => 201, + 'slovakia' => 202, + 'slovenia' => 203, + 'solomonIslands' => 204, + 'somalia' => 205, + 'southAfrica' => 206, + 'southGeorgiaAndTheSouthSandwichIslands' => 207, + 'southSudan' => 208, + 'spain' => 209, + 'sriLanka' => 210, + 'sudan' => 211, + 'suriname' => 212, + 'svalbardAndJanMayen' => 213, + 'swaziland' => 214, + 'sweden' => 215, + 'switzerland' => 216, + 'syrianArabRepublic' => 217, + 'taiwanProvinceOfChina' => 218, + 'tajikistan' => 219, + 'tanzaniaUnitedRepublicOf' => 220, + 'thailand' => 221, + 'timorLeste' => 222, + 'togo' => 223, + 'tokelau' => 224, + 'tonga' => 225, + 'trinidadAndTobago' => 226, + 'tunisia' => 227, + 'turkey' => 228, + 'turkmenistan' => 229, + 'turksAndCaicosIslands' => 230, + 'tuvalu' => 231, + 'uganda' => 232, + 'ukraine' => 233, + 'unitedArabEmirates' => 234, + 'unitedKingdom' => 235, + 'unitedStates' => 236, + 'unitedStatesMinorOutlyingIslands' => 237, + 'uruguay' => 238, + 'uzbekistan' => 239, + 'vanuatu' => 240, + 'venezuelaBolivarianRepublicOf' => 241, + 'vietNam' => 242, + 'virginIslandsBritish' => 243, + 'virginIslandsUs' => 244, + 'wallisAndFutuna' => 245, + 'westernSahara' => 246, + 'yemen' => 247, + 'zambia' => 248, + 'zimbabwe' => 249 + ]; + } + + /** + * Libellés des possibilités de cet énumération (label) + * + * @return array + */ + public static function labels(): array + { + return [ + 'afghanistan' => 'Afghanistan', + 'alandIslands' => 'Åland Islands', + 'albania' => 'Albania', + 'algeria' => 'Algeria', + 'americanSamoa' => 'American Samoa', + 'andorra' => 'Andorra', + 'angola' => 'Angola', + 'anguilla' => 'Anguilla', + 'antarctica' => 'Antarctica', + 'antiguaAndBarbuda' => 'Antigua and Barbuda', + 'argentina' => 'Argentina', + 'armenia' => 'Armenia', + 'aruba' => 'Aruba', + 'australia' => 'Australia', + 'austria' => 'Austria', + 'azerbaijan' => 'Azerbaijan', + 'bahrain' => 'Bahrain', + 'bahamas' => 'Bahamas', + 'bangladesh' => 'Bangladesh', + 'barbados' => 'Barbados', + 'belarus' => 'Belarus', + 'belgium' => 'Belgium', + 'belize' => 'Belize', + 'benin' => 'Benin', + 'bermuda' => 'Bermuda', + 'bhutan' => 'Bhutan', + 'boliviaPlurinationalStateOf' => 'Bolivia, Plurinational State of', + 'bonaireSintEustatiusAndSaba' => 'Bonaire, Sint Eustatius and Saba', + 'bosniaAndHerzegovina' => 'Bosnia and Herzegovina', + 'botswana' => 'Botswana', + 'bouvetIsland' => 'Bouvet Island', + 'brazil' => 'Brazil', + 'britishIndianOceanTerritory' => 'British Indian Ocean Territory', + 'bruneiDarussalam' => 'Brunei Darussalam', + 'bulgaria' => 'Bulgaria', + 'burkinaFaso' => 'Burkina Faso', + 'burundi' => 'Burundi', + 'cambodia' => 'Cambodia', + 'cameroon' => 'Cameroon', + 'canada' => 'Canada', + 'capeVerde' => 'Cape Verde', + 'caymanIslands' => 'Cayman Islands', + 'centralAfricanRepublic' => 'Central African Republic', + 'chad' => 'Chad', + 'chile' => 'Chile', + 'china' => 'China', + 'christmasIsland' => 'Christmas Island', + 'cocosKeelingIslands' => 'Cocos (Keeling) Islands', + 'colombia' => 'Colombia', + 'comoros' => 'Comoros', + 'congo' => 'Congo', + 'congoTheDemocraticRepublicOfThe' => 'Congo, the Democratic Republic of the', + 'cookIslands' => 'Cook Islands', + 'costaRica' => 'Costa Rica', + 'coteDivoire' => 'Côte d\'Ivoire', + 'croatia' => 'Croatia', + 'cuba' => 'Cuba', + 'curacao' => 'Curaçao', + 'cyprus' => 'Cyprus', + 'czechRepublic' => 'Czech Republic', + 'denmark' => 'Denmark', + 'djibouti' => 'Djibouti', + 'dominica' => 'Dominica', + 'dominicanRepublic' => 'Dominican Republic', + 'ecuador' => 'Ecuador', + 'egypt' => 'Egypt', + 'elSalvador' => 'El Salvador', + 'equatorialGuinea' => 'Equatorial Guinea', + 'eritrea' => 'Eritrea', + 'estonia' => 'Estonia', + 'ethiopia' => 'Ethiopia', + 'falklandIslandsMalvinas' => 'Falkland Islands (Malvinas)', + 'faroeIslands' => 'Faroe Islands', + 'fiji' => 'Fiji', + 'finland' => 'Finland', + 'france' => 'France', + 'frenchGuiana' => 'French Guiana', + 'frenchPolynesia' => 'French Polynesia', + 'frenchSouthernTerritories' => 'French Southern Territories', + 'gabon' => 'Gabon', + 'gambia' => 'Gambia', + 'georgia' => 'Georgia', + 'germany' => 'Germany', + 'ghana' => 'Ghana', + 'gibraltar' => 'Gibraltar', + 'greece' => 'Greece', + 'greenland' => 'Greenland', + 'grenada' => 'Grenada', + 'guadeloupe' => 'Guadeloupe', + 'guam' => 'Guam', + 'guatemala' => 'Guatemala', + 'guernsey' => 'Guernsey', + 'guinea' => 'Guinea', + 'guineaBissau' => 'GuineaBissau', + 'guyana' => 'Guyana', + 'haiti' => 'Haiti', + 'heardIslandAndMcdonaldIslands' => 'Heard Island and McDonald Islands', + 'holySeeVaticanCityState' => 'Holy See (Vatican City State)', + 'honduras' => 'Honduras', + 'hongKong' => 'Hong Kong', + 'hungary' => 'Hungary', + 'iceland' => 'Iceland', + 'india' => 'India', + 'indonesia' => 'Indonesia', + 'iranIslamicRepublicOf' => 'Iran, Islamic Republic of', + 'iraq' => 'Iraq', + 'ireland' => 'Ireland', + 'isleOfMan' => 'Isle of Man', + 'israel' => 'Israel', + 'italy' => 'Italy', + 'jamaica' => 'Jamaica', + 'japan' => 'Japan', + 'jersey' => 'Jersey', + 'jordan' => 'Jordan', + 'kazakhstan' => 'Kazakhstan', + 'kenya' => 'Kenya', + 'kiribati' => 'Kiribati', + 'koreaDemocraticPeoplesRepublicOf' => 'Korea, Democratic People\'s Republic of', + 'koreaRepublicOf' => 'Korea, Republic of', + 'kuwait' => 'Kuwait', + 'kyrgyzstan' => 'Kyrgyzstan', + 'laoPeoplesDemocraticRepublic' => 'Lao People\'s Democratic Republic', + 'latvia' => 'Latvia', + 'lebanon' => 'Lebanon', + 'lesotho' => 'Lesotho', + 'liberia' => 'Liberia', + 'libya' => 'Libya', + 'liechtenstein' => 'Liechtenstein', + 'lithuania' => 'Lithuania', + 'luxembourg' => 'Luxembourg', + 'macao' => 'Macao', + 'macedoniaTheFormerYugoslavRepublicOf' => 'Macedonia, the Former Yugoslav Republic of', + 'madagascar' => 'Madagascar', + 'malawi' => 'Malawi', + 'malaysia' => 'Malaysia', + 'maldives' => 'Maldives', + 'mali' => 'Mali', + 'malta' => 'Malta', + 'marshallIslands' => 'Marshall Islands', + 'martinique' => 'Martinique', + 'mauritania' => 'Mauritania', + 'mauritius' => 'Mauritius', + 'mayotte' => 'Mayotte', + 'mexico' => 'Mexico', + 'micronesiaFederatedStatesOf' => 'Micronesia, Federated States of', + 'moldovaRepublicOf' => 'Moldova, Republic of', + 'monaco' => 'Monaco', + 'mongolia' => 'Mongolia', + 'montenegro' => 'Montenegro', + 'montserrat' => 'Montserrat', + 'morocco' => 'Morocco', + 'mozambique' => 'Mozambique', + 'myanmar' => 'Myanmar', + 'namibia' => 'Namibia', + 'nauru' => 'Nauru', + 'nepal' => 'Nepal', + 'netherlands' => 'Netherlands', + 'newCaledonia' => 'New Caledonia', + 'newZealand' => 'New Zealand', + 'nicaragua' => 'Nicaragua', + 'niger' => 'Niger', + 'nigeria' => 'Nigeria', + 'niue' => 'Niue', + 'norfolkIsland' => 'Norfolk Island', + 'northernMarianaIslands' => 'Northern Mariana Islands', + 'norway' => 'Norway', + 'oman' => 'Oman', + 'pakistan' => 'Pakistan', + 'palau' => 'Palau', + 'palestineStateOf' => 'Palestine, State of', + 'panama' => 'Panama', + 'papuaNewGuinea' => 'Papua New Guinea', + 'paraguay' => 'Paraguay', + 'peru' => 'Peru', + 'philippines' => 'Philippines', + 'pitcairn' => 'Pitcairn', + 'poland' => 'Poland', + 'portugal' => 'Portugal', + 'puertoRico' => 'Puerto Rico', + 'qatar' => 'Qatar', + 'reunion' => 'Réunion', + 'romania' => 'Romania', + 'russianFederation' => 'Russian Federation', + 'rwanda' => 'Rwanda', + 'saintBarthelemy' => 'Saint Barthélemy', + 'saintHelenaAscensionAndTristanDaCunha' => 'Saint Helena, Ascension and Tristan da Cunha', + 'saintKittsAndNevis' => 'Saint Kitts and Nevis', + 'saintLucia' => 'Saint Lucia', + 'saintMartinFrenchPart' => 'Saint Martin (French part)', + 'saintPierreAndMiquelon' => 'Saint Pierre and Miquelon', + 'saintVincentAndTheGrenadines' => 'Saint Vincent and the Grenadines', + 'samoa' => 'Samoa', + 'sanMarino' => 'San Marino', + 'saoTomeAndPrincipe' => 'Sao Tome and Principe', + 'saudiArabia' => 'Saudi Arabia', + 'senegal' => 'Senegal', + 'serbia' => 'Serbia', + 'seychelles' => 'Seychelles', + 'sierraLeone' => 'Sierra Leone', + 'singapore' => 'Singapore', + 'sintMaartenDutchPart' => 'Sint Maarten (Dutch part)', + 'slovakia' => 'Slovakia', + 'slovenia' => 'Slovenia', + 'solomonIslands' => 'Solomon Islands', + 'somalia' => 'Somalia', + 'southAfrica' => 'South Africa', + 'southGeorgiaAndTheSouthSandwichIslands' => 'South Georgia and the South Sandwich Islands', + 'southSudan' => 'South Sudan', + 'spain' => 'Spain', + 'sriLanka' => 'Sri Lanka', + 'sudan' => 'Sudan', + 'suriname' => 'Suriname', + 'svalbardAndJanMayen' => 'Svalbard and Jan Mayen', + 'swaziland' => 'Swaziland', + 'sweden' => 'Sweden', + 'switzerland' => 'Switzerland', + 'syrianArabRepublic' => 'Syrian Arab Republic', + 'taiwanProvinceOfChina' => 'Taiwan, Province of China', + 'tajikistan' => 'Tajikistan', + 'tanzaniaUnitedRepublicOf' => 'Tanzania, United Republic of', + 'thailand' => 'Thailand', + 'timorLeste' => 'TimorLeste', + 'togo' => 'Togo', + 'tokelau' => 'Tokelau', + 'tonga' => 'Tonga', + 'trinidadAndTobago' => 'Trinidad and Tobago', + 'tunisia' => 'Tunisia', + 'turkey' => 'Turkey', + 'turkmenistan' => 'Turkmenistan', + 'turksAndCaicosIslands' => 'Turks and Caicos Islands', + 'tuvalu' => 'Tuvalu', + 'uganda' => 'Uganda', + 'ukraine' => 'Ukraine', + 'unitedArabEmirates' => 'United Arab Emirates', + 'unitedKingdom' => 'United Kingdom', + 'unitedStates' => 'United States', + 'unitedStatesMinorOutlyingIslands' => 'United States Minor Outlying Islands', + 'uruguay' => 'Uruguay', + 'uzbekistan' => 'Uzbekistan', + 'vanuatu' => 'Vanuatu', + 'venezuelaBolivarianRepublicOf' => 'Venezuela, Bolivarian Republic of', + 'vietNam' => 'Viet Nam', + 'virginIslandsBritish' => 'Virgin Islands, British', + 'virginIslandsUs' => 'Virgin Islands, U.S.', + 'wallisAndFutuna' => 'Wallis and Futuna', + 'westernSahara' => 'Western Sahara', + 'yemen' => 'Yemen', + 'zambia' => 'Zambia', + 'zimbabwe' => 'Zimbabwe' + ]; + } +} diff --git a/app/Enums/Page.php b/app/Enums/Page.php new file mode 100644 index 0000000..e8848d4 --- /dev/null +++ b/app/Enums/Page.php @@ -0,0 +1,64 @@ + 0, + 'homeProducts' => 1, + 'homeNews' => 2, + 'marqueHeader' => 3, + 'marqueHistory' => 4, + 'marqueBloc2' => 5, + 'marqueBloc3' => 6, + 'marqueBloc4' => 7, + 'marqueBloc4l' => 8, + 'marqueBloc4r' => 9, + 'marqueFooter' => 10, + 'newsAdvice' => 11, + 'newsQuestions' => 12, + 'newsPosts' => 13, + 'newsProducts' => 14, + 'foodHeader' => 15, + 'foodBloc2' => 16, + 'foodProducts' => 17, + 'mentions' => 18, + 'charte' => 19, + 'home' => 20, + 'marque' => 21, + 'news' => 22, + 'foodservice' => 23, + 'gammes' => 24 + ]; + } +} diff --git a/app/Enums/Role.php b/app/Enums/Role.php new file mode 100644 index 0000000..730b402 --- /dev/null +++ b/app/Enums/Role.php @@ -0,0 +1,20 @@ + 0, + 'user' => 1, + ]; + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index c18c43c..f34f3c8 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -1,10 +1,29 @@ + * @license http://url.com MIT + * @link http://url.com + * phpcs:ignore PEAR.Commenting.FileComment.MissingVersion + */ + namespace App\Exceptions; -use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; -use Throwable; +use Kwaadpepper\ExceptionHandler\Exceptions\ExceptionHandler; +/** + * Undocumented class + * + * @category Description + * @package Category + * @author Name + * @license http://url.com MIT + * @link http://url.com + */ class Handler extends ExceptionHandler { /** @@ -12,9 +31,7 @@ class Handler extends ExceptionHandler * * @var array */ - protected $dontReport = [ - // - ]; + protected $dontReport = []; /** * A list of the inputs that are never flashed for validation exceptions. @@ -26,16 +43,4 @@ class Handler extends ExceptionHandler 'password', 'password_confirmation', ]; - - /** - * Register the exception handling callbacks for the application. - * - * @return void - */ - public function register() - { - $this->reportable(function (Throwable $e) { - // - }); - } } diff --git a/app/Http/Controllers/Auth/ConfirmPasswordController.php b/app/Http/Controllers/Auth/ConfirmPasswordController.php new file mode 100644 index 0000000..d90f81e --- /dev/null +++ b/app/Http/Controllers/Auth/ConfirmPasswordController.php @@ -0,0 +1,39 @@ +middleware('auth'); + } +} diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php new file mode 100644 index 0000000..38b0a73 --- /dev/null +++ b/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -0,0 +1,21 @@ + + * @license http://url.com MIT + * @link http://url.com + * phpcs:ignore PEAR.Commenting.FileComment.MissingVersion + */ + +namespace App\Http\Controllers\Auth; + +use App\Http\Controllers\Controller; +use App\Providers\RouteServiceProvider; +use Illuminate\Foundation\Auth\AuthenticatesUsers; + +/** + * Undocumented class + * + * @category Description + * @package Category + * @author Name + * @license http://url.com MIT + * @link http://url.com + */ +class LoginController extends Controller +{ + /* + |-------------------------------------------------------------------------- + | Login Controller + |-------------------------------------------------------------------------- + | + | This controller handles authenticating users for the application and + | redirecting them to your home screen. The controller uses a trait + | to conveniently provide its functionality to your applications. + | + */ + use AuthenticatesUsers; + + /** + * Where to redirect users after login. + * + * @var string + */ + protected $redirectTo = RouteServiceProvider::HOME; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->middleware('guest:web')->except('logout'); + } +} diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php new file mode 100644 index 0000000..15631bd --- /dev/null +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -0,0 +1,72 @@ +middleware('guest:web'); + } + + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * @return \Illuminate\Contracts\Validation\Validator + */ + protected function validator(array $data) + { + return Validator::make($data, [ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], + ]); + } + + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return \App\Models\User + */ + protected function create(array $data) + { + return User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => Hash::make($data['password']), + ]); + } +} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php new file mode 100644 index 0000000..f858dc6 --- /dev/null +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,29 @@ +middleware('auth'); + $this->middleware('signed')->only('verify'); + $this->middleware('throttle:6,1')->only('verify', 'resend'); + } +} diff --git a/app/Http/Controllers/Bo/AdviceController.php b/app/Http/Controllers/Bo/AdviceController.php new file mode 100644 index 0000000..0d66ac4 --- /dev/null +++ b/app/Http/Controllers/Bo/AdviceController.php @@ -0,0 +1,52 @@ +fill($request->validated()); + if (is_a($request->picture1,"SplFileInfo")) { + $advice->picture1 = Utils::storeImage($request->picture1, $advice->getTable()); + } + if (is_a($request->picture2,"SplFileInfo")) { + $advice->picture2 = Utils::storeImage($request->picture2, $advice->getTable()); + } + if (is_a($request->picture3,"SplFileInfo")) { + $advice->picture3 = Utils::storeImage($request->picture3, $advice->getTable()); + } + + if (!$advice->saveOrFail()) { + return redirect()->route('bo.advice.edit', $advice->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.advice.edit', $advice->id) + ->with('success', trans('Modifications enregistrées !')); + } +} diff --git a/app/Http/Controllers/Bo/EncartsController.php b/app/Http/Controllers/Bo/EncartsController.php new file mode 100644 index 0000000..6cc4f17 --- /dev/null +++ b/app/Http/Controllers/Bo/EncartsController.php @@ -0,0 +1,45 @@ +fill($request->validated()); + if (is_a($request->picture,"SplFileInfo")) { + $encart->picture = Utils::storeImage($request->picture, $encart->getTable()); + } + + if (!$encart->saveOrFail()) { + return redirect()->route('bo.encarts.edit', $encart->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.encarts.edit', $encart->id) + ->with('success', trans('Modifications enregistrées !')); + } +} diff --git a/app/Http/Controllers/Bo/GammesController.php b/app/Http/Controllers/Bo/GammesController.php new file mode 100644 index 0000000..5b80ab7 --- /dev/null +++ b/app/Http/Controllers/Bo/GammesController.php @@ -0,0 +1,130 @@ +whereNull('parent_gamme_id') + ->with('childGammes')->get(); + + /** @var \App\Models\Gamme $gamme */ + foreach ($dbGammes as $gamme) { + $gammes->push($gamme); + $gamme->childGammes->sortBy('title') + ->map(function (Gamme $childGamme) use (&$gammes) { + $gammes->push($childGamme); + }); + } + + return view('back.gammes.index', compact('gammes')); + } + + /** + * Show the form for creating a new resource. + * + * @param Gamme $gamme + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function create(Gamme $gamme) + { + $parentGammes = Gamme::whereNull('parent_gamme_id') + ->where('id', '!=', $gamme->id) + ->orderBy('created_at', 'DESC')->get(); + + return view('back.gammes.create', compact('gamme', 'parentGammes')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\StoreGammeRequest $request + * @return \Illuminate\Http\Response + */ + public function store(StoreGammeRequest $request) + { + $gamme = new Gamme($request->validated()); + if (is_a($request->picture, "SplFileInfo")) { + $gamme->picture = Utils::storeImage($request->picture, $gamme->getTable()); + } + if (is_a($request->banner, "SplFileInfo")) { + $gamme->banner = Utils::storeImage($request->banner, $gamme->getTable()); + } + + if (!$gamme->saveOrFail()) { + return redirect()->route('bo.gammes.edit', $gamme->id)->with('error', 'L\'actualité n\'a pas été créee'); + } + return redirect()->route('bo.gammes.edit', $gamme->id)->with('success', 'Gamme créée !'); + } + + /** + * Show the form for editing the specified resource. + * + * @param Gamme $gamme + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function edit(Gamme $gamme) + { + $parentGammes = Gamme::whereNull('parent_gamme_id') + ->where('id', '!=', $gamme->id) + ->orderBy('created_at', 'DESC')->get(); + + return view('back.gammes.edit', compact('gamme', 'parentGammes')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\UpdateGammeRequest $request + * @param Gamme $gamme + * @return \Illuminate\Http\Response + */ + public function update(Gamme $gamme, UpdateGammeRequest $request) + { + $gamme->fill($request->validated()); + if (is_a($request->picture, "SplFileInfo")) { + $gamme->picture = Utils::storeImage($request->picture, $gamme->getTable()); + } + if (is_a($request->banner, "SplFileInfo")) { + $gamme->banner = Utils::storeImage($request->banner, $gamme->getTable()); + } + + if (!$gamme->saveOrFail()) { + return redirect()->route('bo.gammes.edit', $gamme->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.gammes.edit', $gamme->id) + ->with('success', trans('Modifications enregistrées !')); + } + + /** + * Remove the specified resource from storage. + * + * @param Gamme $gamme + * @return \Illuminate\Http\Response + */ + public function destroy(Gamme $gamme) + { + if (!$gamme->delete()) { + return redirect()->route('bo.gammes.index')->with('error', trans('La suppression a échoué')); + } + + return redirect()->route('bo.gammes.index')->with('success', trans('Suppression faite avec succès')); + } +} diff --git a/app/Http/Controllers/Bo/HomeController.php b/app/Http/Controllers/Bo/HomeController.php new file mode 100644 index 0000000..61bc0f1 --- /dev/null +++ b/app/Http/Controllers/Bo/HomeController.php @@ -0,0 +1,15 @@ +get(); + + return view('back.moments.index', compact('moments')); + } + + /** + * Show the form for editing the specified resource. + * + * @param Moment $moment + * @return \Illuminate\Http\Response + */ + public function edit(Moment $moment) + { + return view('back.moments.edit', compact('moment')); + } + + /** + * Update the specified resource in storage. + * + * @param Moment $moment + * @param \Illuminate\Http\UpdateMomentRequest $request + * @return \Illuminate\Http\Response + */ + public function update(Moment $moment, UpdateMomentRequest $request) + { + $moment->fill($request->validated()); + if (is_a($request->picture, "SplFileInfo")) { + $moment->picture = Utils::storeImage($request->picture, $moment->getTable()); + } + + if (!$moment->saveOrFail()) { + return redirect()->route('bo.moments.edit', $moment->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.moments.edit', $moment->id) + ->with('success', trans('Modifications enregistrées !')); + } +} diff --git a/app/Http/Controllers/Bo/PictoBrandsController.php b/app/Http/Controllers/Bo/PictoBrandsController.php new file mode 100644 index 0000000..66d7795 --- /dev/null +++ b/app/Http/Controllers/Bo/PictoBrandsController.php @@ -0,0 +1,105 @@ +validated()); + if (is_a($request->picture,"SplFileInfo")) { + $pictobrand->picture = Utils::storeImage($request->picture, $pictobrand->getTable()); + } + + if (!$pictobrand->saveOrFail()) { + return redirect()->route('bo.pictobrands.edit', $pictobrand->id)->with('error', 'Le pictogramme n\'a pas été crée'); + } + return redirect()->route('bo.pictobrands.edit', $pictobrand->id)->with('success', 'Pictogramme créé !'); + } + + /** + * Show the form for editing the specified resource. + * + * @param PictoBrand $pictobrand + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function edit(PictoBrand $pictobrand) + { + return view('back.pictobrands.edit', compact('pictobrand')); + } + + /** + * Update the specified resource in storage. + * + * @param PictoBrand $pictobrand + * @param \Illuminate\Http\StorePictoBrandRequest $request + * @return \Illuminate\Http\Response + */ + public function update(PictoBrand $pictobrand, StorePictoBrandRequest $request) + { + $pictobrand->fill($request->validated()); + if (is_a($request->picture,"SplFileInfo")) { + $pictobrand->picture = Utils::storeImage($request->picture, $pictobrand->getTable()); + } + + if (!$pictobrand->saveOrFail()) { + return redirect()->route('bo.pictobrands.edit', $pictobrand->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.pictobrands.edit', $pictobrand->id) + ->with('success', trans('Modifications enregistrées !')); + } + + /** + * Remove the specified resource from storage. + * + * @param PictoBrand $pictobrand + * @return \Illuminate\Http\Response + */ + public function destroy(PictoBrand $pictobrand) + { + if (!$pictobrand->delete()) { + return redirect()->route('bo.pictobrands.index')->with('error', trans('La suppression a échoué')); + } + + return redirect()->route('bo.pictobrands.index')->with('success', trans('Suppression faite avec succès')); + } +} diff --git a/app/Http/Controllers/Bo/PictosController.php b/app/Http/Controllers/Bo/PictosController.php new file mode 100644 index 0000000..adec3f6 --- /dev/null +++ b/app/Http/Controllers/Bo/PictosController.php @@ -0,0 +1,108 @@ +get(); + + return view('back.pictos.index', compact('pictos')); + } + + /** + * Show the form for creating a new resource. + * + * @param Picto $picto + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function create(Picto $picto) + { + return view('back.pictos.create', compact('picto')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\StorePictoRequest $request + * @return \Illuminate\Http\Response + */ + public function store(StorePictoRequest $request) + { + $picto = new Picto($request->validated()); + if (is_a($request->picture, "SplFileInfo")) { + $picto->picture = Utils::storeImage($request->picture, $picto->getTable()); + } + //on ne peut pas arbitrairement créer tous les pictos à cet endroit + //j'ai du décommenter cette ligne pour la création picto fonctionne + $picto->page = Page::marqueBloc2(); + + if (!$picto->saveOrFail()) { + return redirect()->route('bo.pictos.edit', $picto->id)->with('error', 'Le pictogramme n\'a pas été crée'); + } + return redirect()->route('bo.pictos.edit', $picto->id)->with('success', 'Pictogramme créé !'); + } + + /** + * Show the form for editing the specified resource. + * + * @param Picto $picto + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function edit(Picto $picto) + { + return view('back.pictos.edit', compact('picto')); + } + + /** + * Update the specified resource in storage. + * + * @param Picto $picto + * @param \Illuminate\Http\StorePictoRequest $request + * @return \Illuminate\Http\Response + */ + public function update(Picto $picto, StorePictoRequest $request) + { + $picto->fill($request->validated()); + if (is_a($request->picture, "SplFileInfo")) { + $picto->picture = Utils::storeImage($request->picture, $picto->getTable()); + } + + if (!$picto->saveOrFail()) { + return redirect()->route('bo.pictos.edit', $picto->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.pictos.edit', $picto->id) + ->with('success', trans('Modifications enregistrées !')); + } + + /** + * Remove the specified resource from storage. + * + * @param Picto $picto + * @return \Illuminate\Http\Response + */ + public function destroy(Picto $picto) + { + if (!$picto->delete()) { + return redirect()->route('bo.pictos.content', $picto->page)->with('error', trans('La suppression a échoué')); + } + + return redirect()->route('bo.pictos.content', $picto->page)->with('success', trans('Suppression faite avec succès')); + } +} diff --git a/app/Http/Controllers/Bo/PostsController.php b/app/Http/Controllers/Bo/PostsController.php new file mode 100644 index 0000000..a9af0b0 --- /dev/null +++ b/app/Http/Controllers/Bo/PostsController.php @@ -0,0 +1,137 @@ +get(); + + return view('back.posts.index', compact('posts')); + } + + /** + * Show the form for creating a new resource. + * + * @param Post $post + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function create(Post $post) + { + return view('back.posts.create', compact('post')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\StorePostRequest $request + * @return \Illuminate\Http\Response + */ + public function store(StorePostRequest $request) + { + $post = new Post($request->validated()); + if (is_a($request->picture_home,"SplFileInfo")) { + $post->picture_home = Utils::storeImage($request->picture_home, $post->getTable()); + } + if (is_a($request->picture_news,"SplFileInfo")) { + $post->picture_news = Utils::storeImage($request->picture_news, $post->getTable()); + } + $response = $this->changeUniquePostOnTop($post->on_top); + + if ($response) { + $response = $post->saveOrFail(); + } + if (!$response) { + return redirect()->route('bo.posts.edit', $post->id)->with('error', 'L\'actualité n\'a pas été créee'); + } + return redirect()->route('bo.posts.edit', $post->id)->with('success', 'Actualité créée !'); + } + + /** + * Show the form for editing the specified resource. + * + * @param Post $post + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function edit(Post $post) + { + return view('back.posts.edit', compact('post')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\UpdatePostRequest $request + * @param Post $post + * @return \Illuminate\Http\Response + */ + public function update(Post $post, UpdatePostRequest $request) + { + $post->fill($request->validated()); + if (is_a($request->picture_home,"SplFileInfo")) { + $post->picture_home = Utils::storeImage($request->picture_home, $post->getTable()); + } + if (is_a($request->picture_news,"SplFileInfo")) { + $post->picture_news = Utils::storeImage($request->picture_news, $post->getTable()); + } + $response = $this->changeUniquePostOnTop($post->on_top); + + if ($response) { + $response = $post->saveOrFail(); + } + if (!$response) { + return redirect()->route('bo.posts.edit', $post->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.posts.edit', $post->id) + ->with('success', trans('Modifications enregistrées !')); + } + + /** + * Remove the specified resource from storage. + * + * @param Post $post + * @return \Illuminate\Http\Response + */ + public function destroy(Post $post) + { + if (!$post->delete()) { + return redirect()->route('bo.posts.index')->with('error', trans('La suppression a échoué')); + } + + return redirect()->route('bo.posts.index')->with('success', trans('Suppression faite avec succès')); + } + + /** + * Change on_top column to a post if necessary + * + * @param Boolean $isCurrentPostOnTop + * @return Boolean response + */ + private function changeUniquePostOnTop(bool $isCurrentPostOnTop): bool + { + if ($isCurrentPostOnTop) { + $postOnTop = Post::where('on_top', true)->first(); + if ($postOnTop) { + $postOnTop->on_top = false; + return $postOnTop->saveOrFail(); + } + } + return true; + } +} diff --git a/app/Http/Controllers/Bo/ProductsController.php b/app/Http/Controllers/Bo/ProductsController.php new file mode 100644 index 0000000..e280f86 --- /dev/null +++ b/app/Http/Controllers/Bo/ProductsController.php @@ -0,0 +1,231 @@ +sortBy('name'); + + return view('back.products.index', compact('products')); + } + + /** + * Show the form for creating a new resource. + * + * @param Product $product + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function create(Product $product) + { + $gammes = Gamme::all()->sortBy('title'); + //default structure + produits + $tabFour = array( + 'id' => 0, + 'name' => 'Four', + 'url' => '/assets/images/four.png', + 'time' => '', + 'temp' => '', + 'status' => false + ); + $tabFriteuse = array( + 'id' => 1, + 'name' => 'Friteuse', + 'url' => '/assets/images/friteuse.png', + 'time' => '', + 'temp' => '', + 'status' => false + ); + $tabPoele = array( + 'id' => 2, + 'name' => 'Poêle', + 'url' => '/assets/images/poele.png', + 'time' => '', + 'temp' => '', + 'status' => false + ); + $tabCocotte = array( + 'id' => 3, + 'name' => 'Cocotte', + 'url' => '/assets/images/cocotte.png', + 'time' => '', + 'temp' => '', + 'status' => false + ); + $tabPlancha = array( + 'id' => 4, + 'name' => 'Plancha', + 'url' => '/assets/images/plancha.png', + 'time' => '', + 'temp' => '', + 'status' => false + ); + $tabBainMarie = array( + 'id' => 5, + 'name' => 'Bain Marie', + 'url' => '/assets/images/bainmarie.png', + 'time' => '', + 'temp' => '', + 'status' => false + ); + $tabBarbecue = array( + 'id' => 6, + 'name' => 'Barbecue', + 'url' => '/assets/images/barbecue.png', + 'time' => '', + 'temp' => '', + 'status' => false + ); + $tabMicroOndes = array( + 'id' => 7, + 'name' => 'Micro Ondes', + 'url' => '/assets/images/microondes.png', + 'time' => '', + 'temp' => '', + 'status' => false + ); + $tabCasserole = array( + 'id' => 8, + 'name' => 'Casserole', + 'url' => '/assets/images/casserole.png', + 'time' => '', + 'temp' => '', + 'status' => false + ); + $tabPlusProduit1 = array( + 'id' => 0, + 'name' => '', + 'url' => '', + ); + $tabPlusProduit2 = array( + 'id' => 1, + 'name' => '', + 'url' => '', + ); + $tabPlusProduit3 = array( + 'id' => 2, + 'name' => '', + 'url' => '', + ); + $product->pictos = json_encode([$tabFour, $tabFriteuse, $tabPoele, $tabCocotte, $tabPlancha, $tabBainMarie, $tabBarbecue, $tabMicroOndes, $tabCasserole]); + $product->plusproduit = json_encode([$tabPlusProduit1, $tabPlusProduit2, $tabPlusProduit3]); + return view('back.products.create', compact('product', 'gammes')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\StoreProductRequest $request + * @return \Illuminate\Http\Response + */ + public function store(StoreProductRequest $request) + { + $plusproduit = json_decode($request->plusproduit); + $product = new Product($request->validated()); + if (is_a($request->picture, "SplFileInfo")) { + $product->picture = Utils::storeImage($request->picture, $product->getTable()); + } + + foreach ($plusproduit as $plus) { + $picto = 'pictogramme' . $plus->id; + $uploadfile = $request->$picto; + if ($uploadfile) { + $plus->url = Utils::storeImage($uploadfile, $product->getTable()); + } + } + $product->plusproduit = json_encode($plusproduit); + + if (!$product->saveOrFail()) { + return redirect()->route( + 'bo.products.edit', + $product->id + )->with('error', 'Le produit n\'a pas été crée'); + } + return redirect()->route('bo.products.edit', $product->id)->with('success', 'Produit créé !'); + } + + /** + * Show the form for editing the specified resource. + * + * @param Product $product + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function edit(Product $product) + { + $gammes = Gamme::all()->sortBy('title'); + return view('back.products.edit', compact('product', 'gammes')); + } + + /** + * Update the specified resource in storage. + * + * @param Product $product + * @param \Illuminate\Http\UpdateProductRequest $request + * @return \Illuminate\Http\Response + */ + public function update(Product $product, UpdateProductRequest $request) + { + //valeurs en base pour garder les anciennes images quand elles ne sont pas updatées + $dbplusproduit = json_decode($product->plusproduit); + //valeurs transmises dans le post + $plusproduit = json_decode($request->plusproduit); + $product->fill($request->validated()); + if (is_a($request->picture, "SplFileInfo")) { + $product->picture = Utils::storeImage($request->picture, $product->getTable()); + } + + foreach ($plusproduit as $plus) { + //boucle pour stockage des images uploadées + $picto = 'pictogramme' . $plus->id; + $uploadfile = $request->$picto; + //set de l'url + if ($uploadfile) { + $plus->url = Utils::storeImage($uploadfile, $product->getTable()); + } else { + if (isset($dbplusproduit[$plus->id])) { + //reprise de l'ancienne valeur + $plus->url = $dbplusproduit[$plus->id]->url; + } + } + } + //encodage avant save + $product->plusproduit = json_encode($plusproduit); + if (!$product->saveOrFail()) { + return redirect()->route('bo.products.edit', $product->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.products.edit', $product->id) + ->with('success', trans('Modifications enregistrées !')); + } + + /** + * Remove the specified resource from storage. + * + * @param Product $product + * @return \Illuminate\Http\Response + */ + public function destroy(Product $product) + { + if (!$product->delete()) { + return redirect()->route('bo.products.index')->with('error', trans('La suppression a échoué')); + } + + return redirect()->route('bo.products.index')->with('success', trans('Suppression faite avec succès')); + } +} diff --git a/app/Http/Controllers/Bo/SeoDataController.php b/app/Http/Controllers/Bo/SeoDataController.php new file mode 100644 index 0000000..b0b9b38 --- /dev/null +++ b/app/Http/Controllers/Bo/SeoDataController.php @@ -0,0 +1,91 @@ +fill($request->validated()); + $SeoDatum->save(); + + return redirect()->route('bo.seo_data.edit', $SeoDatum->page) + ->with('success', trans('Modifications enregistrées !')); + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\SeoDatum $SeoDatum + * @return \Illuminate\Http\Response + */ + public function destroy(SeoDatum $SeoDatum) + { + // + } +} diff --git a/app/Http/Controllers/Bo/SlidersController.php b/app/Http/Controllers/Bo/SlidersController.php new file mode 100644 index 0000000..da6a5ca --- /dev/null +++ b/app/Http/Controllers/Bo/SlidersController.php @@ -0,0 +1,111 @@ +validated()); + + if (!$slider->saveOrFail()) { + return redirect()->route('bo.sliders.edit', $slider->id)->with('error', 'Le slider n\'a pas été crée'); + } + return redirect()->route('bo.sliders.edit', $slider->id)->with('success', 'Slider créé !'); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param Slider $slider + * @return \Illuminate\Http\Response + */ + public function edit(Slider $slider) + { + return view('back.sliders.edit', compact('slider')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\UpdateSliderRequest $request + * @param Slider $slider + * @return \Illuminate\Http\Response + */ + public function update(UpdateSliderRequest $request, Slider $slider) + { + $slider->fill($request->validated()); + + if (!$slider->saveOrFail()) { + return redirect()->route('bo.sliders.edit', $slider->id)->with('error', 'La modification a échoué'); + } + + return redirect()->route('bo.sliders.edit', $slider->id)->with('success', 'Modifications enregistrées !'); + } + + /** + * Remove the specified resource from storage. + * + * @param Slider $slider + * @return \Illuminate\Http\Response + */ + public function destroy(Slider $slider) + { + $count = Slider::count(); + + if ($count === 1) { + return redirect()->back()->withErrors("Suppression impossible : Vous devez conserver au moins 1 Slider"); + } + // @todo : controller les slides liés + + if (!$slider->delete()) { + return redirect()->route('bo.sliders.index')->with('error', trans('La suppression a échoué')); + } + return redirect()->route('bo.sliders.index')->with('success', trans('Suppression faite avec succès')); + } +} diff --git a/app/Http/Controllers/Bo/SlidesController.php b/app/Http/Controllers/Bo/SlidesController.php new file mode 100644 index 0000000..d168b98 --- /dev/null +++ b/app/Http/Controllers/Bo/SlidesController.php @@ -0,0 +1,149 @@ +get(); + + return view('back.slides.index', compact('slides')); + } + + /** + * Show the form for creating a new resource. + * + * @param Slide $slide + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function create(Slide $slide) + { + $sliders = Slider::all(); + return view('back.slides.create', compact('sliders', 'slide')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\StoreSlideRequest $request + * @return \Illuminate\Http\Response + */ + public function store(StoreSlideRequest $request) + { + + $slide = new Slide($request->validated()); + $slide->order = $this->getLastOrder(); + if (is_a($request->picture,"SplFileInfo")) { + $slide->picture = Utils::storeImage($request->picture, $slide->getTable()); + } + + $slide->saveOrFail(); + + return redirect()->route('bo.slides.edit', $slide->id)->with('success', 'Slide créé !'); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param Slide $slide + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function edit(Slide $slide) + { + $sliders = Slider::all(); + + return view('back.slides.edit', compact('slide', 'sliders')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\StoreSlideRequest $request + * @param Slide $slide + * @return \Illuminate\Http\Response + */ + public function update(StoreSlideRequest $request, Slide $slide) + { + $slide->fill($request->validated()); + if (is_a($request->picture,"SplFileInfo")) { + $slide->picture = Utils::storeImage($request->picture, $slide->getTable()); + } + + if (!$slide->saveOrFail()) { + return redirect()->route('bo.slides.edit', $slide->id)->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.slides.edit', $slide->id)->with('success', trans('Modifications enregistrées !')); + } + + /** + * Remove the specified resource from storage. + * + * @param Slide $slide + * @return \Illuminate\Http\Response + */ + public function destroy(Slide $slide) + { + if (!$slide->delete()) { + return redirect()->route('bo.slides.index')->with('error', trans('La suppression a échoué')); + } + + return redirect()->route('bo.slides.index')->with('success', trans('Suppression faite avec succès')); + } + + public function changeOrder(Slide $slide, $action) + { + if ($action === 'up') { + $tmp = Slide::where('order', '<', $slide->order)->orderBy('order', 'DESC')->first(); + $newOrder = $tmp->order; + $tmp->order = $slide->order; + $slide->order = $newOrder; + } else { + $tmp = Slide::where('order', '>', $slide->order)->orderBy('order', 'ASC')->first(); + $newOrder = $tmp->order; + $tmp->order = $slide->order; + $slide->order = $newOrder; + } + $tmp->save(); + $slide->save(); + + return back(); + } + + /** + * retreive order position to put a new slide to + */ + private function getLastOrder() + { + $order = Slide::select('order')->orderBy('order', 'DESC')->first(); + if ($order === null) { + return 1; + } + return $order->order + 1; + } +} diff --git a/app/Http/Controllers/Bo/TextsController.php b/app/Http/Controllers/Bo/TextsController.php new file mode 100644 index 0000000..bb39dd2 --- /dev/null +++ b/app/Http/Controllers/Bo/TextsController.php @@ -0,0 +1,103 @@ +value)->get(); + + return view('back.texts.index', compact('texts')); + } + + /** + * Show the form for creating a new resource. + * + * @param Text $text + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function create(Text $text) + { + return view('back.texts.create', compact('text')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\StoreTextRequest $request + * @return \Illuminate\Http\Response + */ + public function store(StoreTextRequest $request) + { + $text = new Text($request->validated()); + $text->page = Page::newsQuestions(); + + if (!$text->saveOrFail()) { + return redirect() + ->route('bo.texts.edit', $text->id) + ->with('error', 'La question/réponse n\'a pas été créée'); + } + return redirect() + ->route('bo.texts.edit', $text->id) + ->with('success', 'Question/réponse créée !'); + } + + /** + * Show the form for editing the specified resource. + * + * @param Text $text + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function edit(Text $text) + { + return view('back.texts.edit', compact('text')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\StoreTextRequest $request + * @param Text $text + * @return \Illuminate\Http\Response + */ + public function update(Text $text, StoreTextRequest $request) + { + $text->fill($request->validated()); + + if (!$text->saveOrFail()) { + return redirect()->route('bo.texts.edit', $text->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.texts.edit', $text->id) + ->with('success', trans('Modifications enregistrées !')); + } + + /** + * Remove the specified resource from storage. + * + * @param Text $text + * @return \Illuminate\Http\Response + */ + public function destroy(Text $text) + { + if (!$text->delete()) { + return redirect()->route('bo.texts.content', $text->page)->with('error', trans('La suppression a échoué')); + } + + return redirect()->route('bo.texts.content', $text->page)->with('success', trans('Suppression faite avec succès')); + } +} diff --git a/app/Http/Controllers/Bo/TitlesController.php b/app/Http/Controllers/Bo/TitlesController.php new file mode 100644 index 0000000..ba6a161 --- /dev/null +++ b/app/Http/Controllers/Bo/TitlesController.php @@ -0,0 +1,42 @@ +fill($request->validated()); + + if (!$title->saveOrFail()) { + return redirect()->route('bo.titles.edit', $title->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.titles.edit', $title->id) + ->with('success', trans('Modifications enregistrées !')); + } +} diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php new file mode 100644 index 0000000..e3f68f1 --- /dev/null +++ b/app/Http/Controllers/ContactController.php @@ -0,0 +1,23 @@ +send(new SendContactMail($request->validated())); + + $lang = session()->get('lang', config('app.locale')); + return redirect()->route(session()->get('lang', config('app.locale')) === 'fr' ? 'contact' : $lang . ".contact")->with('status', true); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index a0a2a8a..8d6c82b 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -6,8 +6,16 @@ use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Routing\Controller as BaseController; +use App\Enums\Country; class Controller extends BaseController { - use AuthorizesRequests, DispatchesJobs, ValidatesRequests; + use AuthorizesRequests; + use DispatchesJobs; + use ValidatesRequests; + + public function __construct() + { + view()->share('availableCountries', Country::toArray()); + } } diff --git a/app/Http/Controllers/FoodServiceController.php b/app/Http/Controllers/FoodServiceController.php new file mode 100644 index 0000000..27b73ab --- /dev/null +++ b/app/Http/Controllers/FoodServiceController.php @@ -0,0 +1,28 @@ +first(); + + $encart_food = Encart::where('page', Page::foodHeader()->value)->first(); + $title_foodBloc2 = Title::where('page', Page::foodBloc2()->value)->first(); + $pictos_food = Picto::where('page', Page::foodBloc2()->value)->get(); + $products_food = Product::where('is_food_service', true)->get(); + + return view('front.food-service', compact('seoDatum' , 'encart_food', 'title_foodBloc2', + 'pictos_food', 'products_food')); + } +} diff --git a/app/Http/Controllers/GammesController.php b/app/Http/Controllers/GammesController.php new file mode 100644 index 0000000..ae6b750 --- /dev/null +++ b/app/Http/Controllers/GammesController.php @@ -0,0 +1,53 @@ +orderBy('title')->get(); + //remove Food Service from count + /** @var \Illuminate\Database\Eloquent\Collection $gammes */ + $gammes = $gammes->whereNotIn('slug','food-service'); + $nb_gammes = $gammes->count(); + + $page = Page::gammes(); + $seoDatum = SeoDatum::where('page',$page)->first(); + + return view('front.gammes.index', compact('gammes', 'nb_gammes', 'seoDatum')); + } + + public function show(Gamme $gamme) + { + $gammes = collect([]); + $dbGammes = Gamme::where('id', $gamme->id) + ->with('childGammes')->get(); + + /** @var \App\Models\Gamme $dbGamme */ + foreach ($dbGammes as $dbGamme) { + $gammes->push($dbGamme->id); + $dbGamme->childGammes->sortBy('title') + ->map(function (Gamme $childGamme) use (&$gammes) { + $gammes->push($childGamme->id); + }); + } + + $products = Product::whereIn('gamme_id', $gammes) + ->where('is_published', 1) + ->orderBy('name') + ->get(); + + //make ghost seoDatum from the gamme + $seoDatum = new SeoDatum(); + $seoDatum->title = $gamme->title; + $seoDatum->description = $gamme->text; + + return view('front.gammes.show', compact('gamme', 'products', 'seoDatum')); + } +} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index cd8a55b..671d030 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -2,12 +2,54 @@ namespace App\Http\Controllers; -use Illuminate\Http\Request; +use App\Enums\Page; +use App\Models\Encart; +use App\Models\Post; +use App\Models\Product; +use App\Models\SeoDatum; +use App\Models\Slide; +use App\Models\Slider; +use Exception; +use Illuminate\Support\Carbon; class HomeController extends Controller { public function index() { - return view('home'); + + $page = Page::home(); + $seoDatum = SeoDatum::where('page',$page)->first(); + + $slider = Slider::where('published', 1)->first(); + if ($slider) { + $slides = Slide::whereHas('slider', function ($q) use ($slider) { + $q->whereId($slider->id); + })->where(function ($q) { + $q->where( + function ($q) { + $q->where('date_start', '<=', Carbon::now()->format('Y-m-d H:i:s')) + ->where('date_end', '>', Carbon::now()->format('Y-m-d H:i:s')); + } + )->orWhere(function ($q) { + $q->whereNull('date_start') + ->whereNull('date_end'); + }); + })->orderBy('order', 'ASC') + ->get(); + } else { + $slides = null; + } + + $encart_home = Encart::where('page', Page::homeHeader()->value)->first(); + + $post_home = Post::where([ + ['date_start', '<=', Carbon::now()->format('Y-m-d H:i:s')], + ['date_end', '>', Carbon::now()->format('Y-m-d H:i:s')], + ['on_top', true] + ])->first(); + // Limitation à 3 produits affichés sur la homepage + $products_home = Product::where('is_on_top', true)->take(3)->get(); + + return view('front.home', compact('slider', 'slides', 'seoDatum', 'encart_home', 'post_home', 'products_home')); } } diff --git a/app/Http/Controllers/LegalsController.php b/app/Http/Controllers/LegalsController.php new file mode 100644 index 0000000..2449959 --- /dev/null +++ b/app/Http/Controllers/LegalsController.php @@ -0,0 +1,22 @@ +value)->first(); + + //make ghost seoDatum from the gamme + $seoDatum = new SeoDatum(); + $seoDatum->title = $mentions_legales->title; + + return view('front.legals', compact('seoDatum' ,'mentions_legales')); + } +} diff --git a/app/Http/Controllers/MarqueController.php b/app/Http/Controllers/MarqueController.php new file mode 100644 index 0000000..3cc030b --- /dev/null +++ b/app/Http/Controllers/MarqueController.php @@ -0,0 +1,36 @@ +first(); + + $encart_marqueHeader = Encart::where('page', Page::marqueHeader()->value)->first(); + $encart_marqueBloc4l = Encart::where('page', Page::marqueBloc4l()->value)->first(); + $encart_marqueBloc4r = Encart::where('page', Page::marqueBloc4r()->value)->first(); + $encart_marqueFooter = Encart::where('page', Page::marqueFooter()->value)->first(); + + $pictobrands_marque = PictoBrand::all(); + $pictos_marqueBloc2 = Picto::where('page', Page::marqueBloc2()->value)->get(); + $title_marqueBloc2 = Title::where('page', Page::marqueBloc2()->value)->first(); + $title_marqueBloc4 = Title::where('page', Page::marqueBloc4()->value)->first(); + $moments = Moment::where('page', Page::marqueHistory()->value)->get(); + + return view('front.a-propos', compact('seoDatum', 'encart_marqueHeader', 'encart_marqueBloc4l', + 'encart_marqueBloc4r', 'encart_marqueFooter', 'pictobrands_marque', 'title_marqueBloc2', + 'pictos_marqueBloc2', 'moments', 'title_marqueBloc4')); + } +} diff --git a/app/Http/Controllers/NewsController.php b/app/Http/Controllers/NewsController.php new file mode 100644 index 0000000..855574d --- /dev/null +++ b/app/Http/Controllers/NewsController.php @@ -0,0 +1,37 @@ +first(); + + $advice_news = Advice::all()->first(); + $texts_news = Text::where('page', Page::newsQuestions()->value)->get(); + $title_newsPosts = Title::where('page', Page::newsPosts()->value)->first(); + + $posts = Post::where([ + ['date_start', '<=', Carbon::now()->format('Y-m-d H:i:s')], + ['date_end', '>', Carbon::now()->format('Y-m-d H:i:s')], + ]) + ->orderBy('created_at', 'DESC') + ->get(); + + $products_news = Product::where('is_news', true)->get(); + + return view('front.news', compact('seoDatum', 'advice_news' , 'texts_news', 'title_newsPosts', 'posts', 'products_news')); + } +} diff --git a/app/Http/Controllers/PolicyController.php b/app/Http/Controllers/PolicyController.php new file mode 100644 index 0000000..41a908d --- /dev/null +++ b/app/Http/Controllers/PolicyController.php @@ -0,0 +1,22 @@ +value)->first(); + + //make ghost seoDatum from the gamme + $seoDatum = new SeoDatum(); + $seoDatum->title = $privacy_policy->title; + + return view('front.policy', compact('seoDatum', 'privacy_policy')); + } +} diff --git a/app/Http/Controllers/ProductsController.php b/app/Http/Controllers/ProductsController.php new file mode 100644 index 0000000..6f04d09 --- /dev/null +++ b/app/Http/Controllers/ProductsController.php @@ -0,0 +1,44 @@ +slug)->first(); + //dd($product); + + //make ghost seoDatum from the gamme + $seoDatum = new SeoDatum(); + $seoDatum->title = $product->name; + $seoDatum->description = $product->description; + + return view('front.product', compact('product', 'gamme', 'seoDatum')); + } + + public function search(Request $request) { + $filter = $request->query('filter'); + + if (!empty($filter)) { + $products = Product::where('is_published', 1) + ->where('name', 'like', '%' . $filter . '%') + ->get(); + //->paginate(12); + } else { + $products = Product::where('is_published', 1) + ->get(); + //->paginate(12); + } + + $search_title = 'Recherche : ' . $filter; + + return view('front.search', compact('products', 'search_title', 'filter')); + } +} diff --git a/app/Http/Controllers/TranslationController.php b/app/Http/Controllers/TranslationController.php new file mode 100644 index 0000000..b6da72a --- /dev/null +++ b/app/Http/Controllers/TranslationController.php @@ -0,0 +1,29 @@ +lang = $locale; + // $user->save(); + + Cookie::queue(Cookie::forever('language', $locale)); + + if (url()->full() !== url()->previous()) { + return redirect()->back(); + } + return redirect()->route('home'); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index a83a16b..ed8bdf1 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -2,10 +2,14 @@ namespace App\Http; +use App\Http\Middleware\BackEndGlobals; +use App\Http\Middleware\FrontEndGlobals; +use App\Http\Middleware\LangCheck; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { + /** * The application's global HTTP middleware stack. * @@ -14,7 +18,6 @@ class Kernel extends HttpKernel * @var array */ protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, \Fruitcake\Cors\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, @@ -33,14 +36,12 @@ class Kernel extends HttpKernel \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, 'throttle:api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], @@ -63,6 +64,8 @@ class Kernel extends HttpKernel 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - + 'lang-check' => LangCheck::class, + 'front-end-globals' => FrontEndGlobals::class, + 'back-end-globals' => BackEndGlobals::class, ]; } diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 704089a..9f0ec64 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -1,21 +1,42 @@ + * @license http://url.com MIT + * @link http://url.com + * phpcs:ignore PEAR.Commenting.FileComment.MissingVersion + */ + namespace App\Http\Middleware; use Illuminate\Auth\Middleware\Authenticate as Middleware; +/** + * Undocumented class + * + * @category Description + * @package Category + * @author Name + * @license http://url.com MIT + * @link http://url.com + */ class Authenticate extends Middleware { /** * Get the path the user should be redirected to when they are not authenticated. * - * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Request $request La requête + * * @return string|null */ protected function redirectTo($request) { - if (! $request->expectsJson()) { - return route('login'); + if (!$request->expectsJson()) { + return route('bo.login'); } } } diff --git a/app/Http/Middleware/BackEndGlobals.php b/app/Http/Middleware/BackEndGlobals.php new file mode 100644 index 0000000..6012e0d --- /dev/null +++ b/app/Http/Middleware/BackEndGlobals.php @@ -0,0 +1,70 @@ +value)->first(); + $encart_marqueHeader = Encart::where('page', Page::marqueHeader()->value)->first(); + $encart_marqueBloc4l = Encart::where('page', Page::marqueBloc4l()->value)->first(); + $encart_marqueBloc4r = Encart::where('page', Page::marqueBloc4r()->value)->first(); + $encart_marqueFooter = Encart::where('page', Page::marqueFooter()->value)->first(); + $encart_food = Encart::where('page', Page::foodHeader()->value)->first(); + $mentions_legales = Text::where('page', Page::mentions()->value)->first(); + $privacy_policy = Text::where('page', Page::charte()->value)->first(); + + $advice_news = Advice::all()->first(); + + $pictos_marqueBloc2 = Picto::where('page', Page::marqueBloc2()->value)->get(); + $pictos_food = Picto::where('page', Page::foodBloc2()->value)->get(); + + $texts_news = Text::where('page', Page::newsQuestions()->value)->get(); + + $title_marqueBloc2 = Title::where('page', Page::marqueBloc2()->value)->first(); + $title_marqueBloc4 = Title::where('page', Page::marqueBloc4()->value)->first(); + $title_foodBloc2 = Title::where('page', Page::foodBloc2()->value)->first(); + $title_newsPosts = Title::where('page', Page::newsPosts()->value)->first(); + + View::share('encart_home', $encart_home); + View::share('encart_marqueHeader', $encart_marqueHeader); + View::share('encart_marqueBloc4l', $encart_marqueBloc4l); + View::share('encart_marqueBloc4r', $encart_marqueBloc4r); + View::share('encart_marqueFooter', $encart_marqueFooter); + View::share('encart_food', $encart_food); + View::share('advice_news', $advice_news); + + View::share('pictos_marqueBloc2', $pictos_marqueBloc2); + View::share('pictos_food', $pictos_food); + + View::share('texts_news', $texts_news); + + View::share('title_marqueBloc2', $title_marqueBloc2); + View::share('title_marqueBloc4', $title_marqueBloc4); + View::share('title_foodBloc2', $title_foodBloc2); + View::share('title_newsPosts', $title_newsPosts); + + View::share('mentions_legales', $mentions_legales); + View::share('privacy_policy', $privacy_policy); + + return $next($request); + } +} diff --git a/app/Http/Middleware/FrontEndGlobals.php b/app/Http/Middleware/FrontEndGlobals.php new file mode 100644 index 0000000..f61f8bd --- /dev/null +++ b/app/Http/Middleware/FrontEndGlobals.php @@ -0,0 +1,54 @@ +getName(); + $routeParamsFR = Route::current()->parameters(); + $routeParamsEN = $routeParamsFR; + $routeParamsES = $routeParamsFR; + array_walk($routeParamsFR, array($this, 'unbind'),''); + array_walk($routeParamsEN, array($this, 'unbind'),'en'); + array_walk($routeParamsES, array($this, 'unbind'),'es'); + if (preg_match('/^(en|es)/', $currentRoute )) { + $currentRouteFR = preg_replace('/^(en|es)\./', '', $currentRoute,1); + $currentRouteEN = preg_replace('/^(en|es)/', 'en', $currentRoute,1); + $currentRouteES = preg_replace('/^(en|es)/', 'es', $currentRoute,1); + } else { + $currentRouteFR = $currentRoute; + $currentRouteEN = 'en.'.$currentRoute; + $currentRouteES = 'es.'.$currentRoute; + } + + View::share('currentRouteFR', $currentRouteFR); + View::share('currentRouteEN', $currentRouteEN); + View::share('currentRouteES', $currentRouteES); + View::share('routeParamsFR', $routeParamsFR); + View::share('routeParamsEN', $routeParamsEN); + View::share('routeParamsES', $routeParamsES); + + return $next($request); + } + + public function unbind(&$item,$k,$lang) { + if($k=='gammeSlug' || $k=='productSlug') { + $item = $item->getTranslation('slug', $lang); + } + } +} diff --git a/app/Http/Middleware/LangCheck.php b/app/Http/Middleware/LangCheck.php new file mode 100644 index 0000000..cfc56c8 --- /dev/null +++ b/app/Http/Middleware/LangCheck.php @@ -0,0 +1,111 @@ +route()->getName(); + if (preg_match('/^bo\./', $routName)) { + //Back office + if ($request->lang) { + //within bo we set lang with querystring param + $this->saveUserLocale($request->lang, $request); + //bonus remove lang parameter from query + return redirect()->to($request->fullUrlWithoutQuery('lang')); + } else { + $this->checkFirstAccess($request); + } + } else { + //FRONT + if (preg_match('/^(en|es)\./', $routName)) { + //from front use named routes + $langset = $request->segment(1); + + $this->saveUserLocale($langset, $request); + } else { + //not specified in route + if ($this->checkFirstAccess($request)) { + $routNameEN = 'en.' . $routName; + $routNameES = 'es.' . $routName; + $sess_lang = $request->session()->get('lang', config('app.locale')); + switch ($sess_lang) { + case 'en': + return redirect()->route($routNameEN); + case 'es': + return redirect()->route($routNameES); + } + } + + $langset = 'fr'; + $this->saveUserLocale($langset, $request); + } + } + + + + + $sess_lang = $request->session()->get('lang', config('app.locale')); + app()->setLocale($sess_lang); + $routePrefixer = ""; + if($sess_lang != 'fr') { + $routePrefixer = $sess_lang . '.'; + } + View::share('routeprefixer', $routePrefixer); + + return $next($request); + } + + + /** + * + */ + private function saveUserLocale($lang, Request $request) + { + //Set cookie + Cookie::queue(Cookie::forever('language', strtolower($lang))); + //set session + $request->session()->put('lang', strtolower($lang)); + } + + /** + * checks if we have saved locale info for current user + * if not find then save that locale + * @return boolean + */ + private function checkFirstAccess(Request $request) + { + //do we have session ? + if (!$request->session()->has('lang')) { + $fromC = Cookie::get('language'); + if (is_null($fromC) || empty($fromC)) { + //pas de cookie, recherche sur le navigateur + $fromC = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2); + if (!in_array($fromC, $this->langs)) { + //default other languages to en + $fromC = 'en'; + } + } + $this->saveUserLocale($fromC, $request); + return true; + } + //we have lang session + return false; + } +} diff --git a/app/Http/Middleware/TrustHosts.php b/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index b0550cf..0000000 --- a/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ -allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/app/Http/Requests/ContactFormRequest.php b/app/Http/Requests/ContactFormRequest.php new file mode 100644 index 0000000..452bdba --- /dev/null +++ b/app/Http/Requests/ContactFormRequest.php @@ -0,0 +1,62 @@ + 'required|in:monsieur,madame', + 'name' => 'required|min:2', + 'lastname' => 'required|min:2', + 'address' => 'required|max:255', + 'postcode' => 'required', + 'city' => 'required|string|max:255', + 'phone' => 'required|max:255', + 'email' => 'required|email:rfc,dns,spoof|max:255', + 'country' => 'required|string|max:255', + 'departement' => 'required_if:country,France|max:255', + 'topic' => 'required', + 'product_name' => 'required_if:topic,Réclamation|max:255', + 'barcode' => 'required_if:topic,Réclamation|max:128', + 'shop' => 'required_if:topic,Réclamation|max:255', + 'lot' => 'required_if:topic,Réclamation|max:255', + 'limit_date' => 'required_if:topic,Réclamation|date|nullable', + 'consumption_date' => 'required_if:topic,Réclamation|date|nullable', + 'message' => 'required|min:25', + 'file' => 'nullable|mimes:jpg,jpeg,png,pdf|max:5120', + ]; + } + + /** + * Get the error messages for the defined validation rules. + * + * @return array + */ + public function messages() + { + return [ + 'topic.required' => __('Veuille préciser la nature de votre demande.'), + 'file.max' => __('La taille du fichier ne peut pas dépasser :max kilo-octets.'), + 'file.mimes' => __('Le fichier doit être de type : :values.'), + ]; + } +} diff --git a/app/Http/Requests/StoreGammeRequest.php b/app/Http/Requests/StoreGammeRequest.php new file mode 100644 index 0000000..938871c --- /dev/null +++ b/app/Http/Requests/StoreGammeRequest.php @@ -0,0 +1,66 @@ +merge([ + 'slug' => Str::slug($this->title), + 'parent_gamme_id' => $this->parent_gamme_id === '0' ? null : $this->parent_gamme_id, + ]); + + return auth()->check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'parent_gamme_id' => 'sometimes|nullable|exists:gammes,id', + 'title' => 'required|string|max:255', + 'slug' => 'required|unique:gammes', + 'text' => 'required|string|max:255', + 'color' => 'sometimes', + 'picture' => 'required|image|mimes:jpeg,png,jpg|max:1024|dimensions:width=575,height=375', + 'alt_text_picture' => 'required|string|max:255', + 'banner' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=1920,height=568', + 'alt_text_banner' => 'required|string|max:255', + ]; + } + + /** + * Get custom messages for validator errors. + * + * @return array + */ + public function messages() + { + return []; + } + + /** + * Get custom attributes for validator errors. + * + * @return array + */ + public function attributes() + { + return [ + 'slug' => trans('Nom') + ]; + } +} diff --git a/app/Http/Requests/StorePictoBrandRequest.php b/app/Http/Requests/StorePictoBrandRequest.php new file mode 100644 index 0000000..e82bdd6 --- /dev/null +++ b/app/Http/Requests/StorePictoBrandRequest.php @@ -0,0 +1,33 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'title' => 'required|max:50', + 'picture' => 'sometimes|image|mimes:jpeg,png,jpg|max:512|dimensions:max_width=150,max_height=150', + 'alt_text_picture' => 'required|max:255', + 'text' => 'required|max:127', + ]; + } +} diff --git a/app/Http/Requests/StorePictoRequest.php b/app/Http/Requests/StorePictoRequest.php new file mode 100644 index 0000000..0f721a6 --- /dev/null +++ b/app/Http/Requests/StorePictoRequest.php @@ -0,0 +1,32 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'picture' => 'sometimes|image|mimes:png|max:512|dimensions:max_width=150,max_height=150', + 'alt_text_picture' => 'required|max:255', + 'text' => 'required|max:50', + ]; + } +} diff --git a/app/Http/Requests/StorePostRequest.php b/app/Http/Requests/StorePostRequest.php new file mode 100644 index 0000000..3da7dd9 --- /dev/null +++ b/app/Http/Requests/StorePostRequest.php @@ -0,0 +1,60 @@ +merge([ + 'date_start' => Carbon::parse("$this->date_start_date $this->date_start_time:00")->toDateTimeString(), + 'date_end' => Carbon::parse("$this->date_end_date $this->date_end_time:00")->toDateTimeString(), + 'on_top' => $this->on_top ? true : false, + ]); + // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch + } catch (InvalidFormatException $e) { + // On fait rien + } + + return auth()->check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'picture_news' => 'required|image|mimes:jpeg,png,jpg|max:1024|dimensions:max_width=380,max_height=298', + 'alt_text_picture_news' => 'required|max:255', + 'title' => 'required|max:255', + 'text' => 'required|min:20', + 'date_start' => [ + 'required', + 'date_format:Y-m-d H:i:s', + 'before:' . Carbon::now()->parse('2037-12-31') + ], + 'date_end' => [ + 'required', + 'date_format:Y-m-d H:i:s', + 'after:date_start', + 'before:' . Carbon::now()->parse('2037-12-31') + ], + 'picture_home' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:max_width=1030,max_height=239', + 'alt_text_picture_home' => 'required|max:255', + 'on_top' => 'nullable|boolean', + ]; + } +} diff --git a/app/Http/Requests/StoreProductRequest.php b/app/Http/Requests/StoreProductRequest.php new file mode 100644 index 0000000..76e5bb7 --- /dev/null +++ b/app/Http/Requests/StoreProductRequest.php @@ -0,0 +1,213 @@ +check(); + } + + /** + * Prepare the data for validation. + * + * @return void + */ + protected function prepareForValidation() + { + try { + $tabFour = array( + 'id' => 0, + 'name' => 'Four', + 'url' => '/assets/images/four.png', + 'time' => $this->time_cook0, + 'temp' => $this->temp_cook0, + 'status' => $this->is_activated0 ? true : false + ); + $tabFriteuse = array( + 'id' => 1, + 'name' => 'Friteuse', + 'url' => '/assets/images/friteuse.png', + 'time' => $this->time_cook1, + 'temp' => $this->temp_cook1, + 'status' => $this->is_activated1 ? true : false + ); + $tabPoele = array( + 'id' => 2, + 'name' => 'Poêle', + 'url' => '/assets/images/poele.png', + 'time' => $this->time_cook2, + 'temp' => $this->temp_cook2, + 'status' => $this->is_activated2 ? true : false + ); + $tabCocotte = array( + 'id' => 3, + 'name' => 'Cocotte', + 'url' => '/assets/images/cocotte.png', + 'time' => $this->time_cook3, + 'temp' => $this->temp_cook3, + 'status' => $this->is_activated3 ? true : false + ); + $tabPlancha = array( + 'id' => 4, + 'name' => 'Plancha', + 'url' => '/assets/images/plancha.png', + 'time' => $this->time_cook4, + 'temp' => $this->temp_cook4, + 'status' => $this->is_activated4 ? true : false + ); + $tabBainMarie = array( + 'id' => 5, + 'name' => 'Bain Marie', + 'url' => '/assets/images/bainmarie.png', + 'time' => $this->time_cook5, + 'temp' => $this->temp_cook5, + 'status' => $this->is_activated5 ? true : false + ); + $tabBarbecue = array( + 'id' => 6, + 'name' => 'Barbecue', + 'url' => '/assets/images/barbecue.png', + 'time' => $this->time_cook6, + 'temp' => $this->temp_cook6, + 'status' => $this->is_activated6 ? true : false + ); + $tabMicroOndes = array( + 'id' => 7, + 'name' => 'Micro Ondes', + 'url' => '/assets/images/micro-onde.png', + 'time' => $this->time_cook7, + 'temp' => $this->temp_cook7, + 'status' => $this->is_activated7 ? true : false + ); + $tabCasserole = array( + 'id' => 8, + 'name' => 'Casserole', + 'url' => '/assets/images/casserole.png', + 'time' => $this->time_cook8, + 'temp' => $this->temp_cook8, + 'status' => $this->is_activated8 ? true : false + ); + $tabCuisson = json_encode([ + 'four' => $tabFour, + 'friteuse' => $tabFriteuse, + 'poele' => $tabPoele, + 'cocotte' => $tabCocotte, + 'plancha' => $tabPlancha, + 'bainmarie' => $tabBainMarie, + 'barbecue' => $tabBarbecue, + 'microondes' => $tabMicroOndes, + 'casserole' => $tabCasserole + ]); + + $urlPlusProduit = ""; + if ($this->pictogramme0) { + $urlPlusProduit = "/assets/images/" . $this->pictogramme0->getClientOriginalName(); + } + $tabPlusProduit1 = array( + 'id' => 0, + 'name' => $this->content0, + 'url' => $urlPlusProduit, + ); + $urlPlusProduit = ""; + if ($this->pictogramme1) { + $urlPlusProduit = "/assets/images/" . $this->pictogramme1->getClientOriginalName(); + } + $tabPlusProduit2 = array( + 'id' => 1, + 'name' => $this->content1, + 'url' => $urlPlusProduit, + ); + $urlPlusProduit = ""; + if ($this->pictogramme2) { + $urlPlusProduit = "/assets/images/" . $this->pictogramme2->getClientOriginalName(); + } + $tabPlusProduit3 = array( + 'id' => 2, + 'name' => $this->content2, + 'url' => $urlPlusProduit, + ); + $tabPlusProduit = json_encode([$tabPlusProduit1, $tabPlusProduit2, $tabPlusProduit3]); + + $this->merge([ + 'slug' => Str::slug($this->name), + 'gamme_id' => + $this->is_food_service ? + Gamme::where("slug->fr", "food-service")->firstOrFail()->id : + $this->gamme_id, + 'pictos' => $tabCuisson, + 'plusproduit' => $tabPlusProduit, + 'is_published' => $this->is_published ? true : false, + 'is_on_top' => $this->is_on_top ? true : false, + 'is_news' => $this->is_news ? true : false, + 'is_food_service' => $this->is_food_service ? true : false, + 'is_halal' => $this->is_halal ? true : false, + ]); + // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch + } catch (InvalidFormatException $e) { + // On fait rien + } + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'gamme_id' => 'required|exists:gammes,id', + 'name' => 'required|max:255', + 'slug' => 'required|unique:products', + 'description' => 'required|min:20', + 'picture' => 'required|image|mimes:png|max:1024|dimensions:width=509,height=509', + 'alt_text_picture' => 'required|max:255', + 'pictos' => 'sometimes|nullable', + 'plusproduit' => 'sometimes|nullable', + 'pictogramme0' => 'nullable|image|mimes:png|max:1024|dimensions:width=141,height=100', + 'pictogramme1' => 'nullable|image|mimes:png|max:1024|dimensions:width=141,height=100', + 'pictogramme2' => 'nullable|image|mimes:png|max:1024|dimensions:width=141,height=100', + 'is_published' => 'nullable|boolean', + 'is_on_top' => 'nullable|boolean', + 'is_news' => 'nullable|boolean', + 'is_food_service' => 'nullable|boolean', + 'is_halal' => 'nullable|boolean', + // 'seo_title' => 'required|max:255', + // 'seo_description' => 'required|max:255', + ]; + } + + /** + * Get custom messages for validator errors. + * + * @return array + */ + public function messages() + { + return []; + } + + /** + * Get custom attributes for validator errors. + * + * @return array + */ + public function attributes() + { + return [ + 'slug' => trans('libellé') + ]; + } +} diff --git a/app/Http/Requests/StoreSeoDataRequest.php b/app/Http/Requests/StoreSeoDataRequest.php new file mode 100644 index 0000000..5f3601b --- /dev/null +++ b/app/Http/Requests/StoreSeoDataRequest.php @@ -0,0 +1,32 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'title' => 'required|max:255', + 'description' => 'sometimes|max:255', + 'keywords' => 'sometimes|max:255', + ]; + } +} diff --git a/app/Http/Requests/StoreSlideRequest.php b/app/Http/Requests/StoreSlideRequest.php new file mode 100644 index 0000000..07219c8 --- /dev/null +++ b/app/Http/Requests/StoreSlideRequest.php @@ -0,0 +1,73 @@ +check(); + } + + /** + * Prepare the data for validation. + * + * @return void + */ + protected function prepareForValidation() + { + try { + $this->merge([ + 'date_start' => Carbon::parse("$this->date_start_date $this->date_start_time:00")->toDateTimeString(), + 'date_end' => Carbon::parse("$this->date_end_date $this->date_end_time:00")->toDateTimeString(), + ]); + // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch + } catch (InvalidFormatException $e) { + // On fait rien + } + $this->merge([ + 'title' => 'lorem title ' . rand(), + 'text' => 'lorem text ' . rand(), + 'link_new_tab' => $this->link_new_tab ? true : false + ]); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'title' => 'required|max:255', + 'text' => 'sometimes|max:255', + 'picture' => 'sometimes|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=1920,height=812', + 'alt_text_picture' => 'sometimes|max:255', + 'link_label' => 'sometimes|max:255', + 'link' => 'sometimes|max:255', + 'link_new_tab' => 'required|boolean', + 'slider_id' => 'required|exists:sliders,id', + 'date_start' => [ + 'nullable', + 'date_format:Y-m-d H:i:s', + 'before:' . Carbon::now()->parse('2037-12-31') + ], + 'date_end' => [ + 'nullable', + 'date_format:Y-m-d H:i:s', + 'after:date_start', + 'before:' . Carbon::now()->parse('2037-12-31') + ], + ]; + } +} diff --git a/app/Http/Requests/StoreSliderRequest.php b/app/Http/Requests/StoreSliderRequest.php new file mode 100644 index 0000000..d5acf15 --- /dev/null +++ b/app/Http/Requests/StoreSliderRequest.php @@ -0,0 +1,61 @@ +merge([ + 'slug' => Str::slug($this->label), + 'published' => $this->published ? true : false + ]); + + return auth()->check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'label' => 'required|string|max:255', + 'slug' => 'required|unique:sliders', + 'commentaire' => 'sometimes|max:255', + 'published' => 'required|boolean', + ]; + } + + /** + * Get custom messages for validator errors. + * + * @return array + */ + public function messages() + { + return []; + } + + /** + * Get custom attributes for validator errors. + * + * @return array + */ + public function attributes() + { + return [ + 'slug' => trans('label') + ]; + } +} diff --git a/app/Http/Requests/StoreTextRequest.php b/app/Http/Requests/StoreTextRequest.php new file mode 100644 index 0000000..d42c773 --- /dev/null +++ b/app/Http/Requests/StoreTextRequest.php @@ -0,0 +1,31 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'title' => 'required|max:255', + 'text' => 'required', + ]; + } +} diff --git a/app/Http/Requests/UpdateAdviceRequest.php b/app/Http/Requests/UpdateAdviceRequest.php new file mode 100644 index 0000000..ee63d56 --- /dev/null +++ b/app/Http/Requests/UpdateAdviceRequest.php @@ -0,0 +1,39 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'title1' => 'required|max:50', + 'title2' => 'required|max:50', + 'picture1' => 'sometimes|image|mimes:jpeg,png,jpg|max:1024|dimensions:width=284,height=284', + 'alt_text_picture1' => 'required|max:255', + 'picture2' => 'sometimes|image|mimes:jpeg,png,jpg|max:1024|dimensions:width=284,height=284', + 'alt_text_picture2' => 'required|max:255', + 'picture3' => 'sometimes|image|mimes:jpeg,png,jpg|max:1024|dimensions:width=284,height=284', + 'alt_text_picture3' => 'required|max:255', + 'text1' => 'required|max:2047', + 'text2' => 'required|max:2047', + ]; + } +} diff --git a/app/Http/Requests/UpdateEncartRequest.php b/app/Http/Requests/UpdateEncartRequest.php new file mode 100644 index 0000000..851f93e --- /dev/null +++ b/app/Http/Requests/UpdateEncartRequest.php @@ -0,0 +1,38 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'title' => 'required|max:255', + 'subtitle' => 'sometimes|max:255', + // TODO 'subtitle' => [ + // Rule::requiredIf(), 'max:255' + // 'required|max:255' + // ], + 'text' => 'required|max:2047', + 'picture' => 'sometimes|image|mimes:jpeg,png,jpg|max:2048', + 'alt_text_picture' => 'sometimes|max:255', + ]; + } +} diff --git a/app/Http/Requests/UpdateGammeRequest.php b/app/Http/Requests/UpdateGammeRequest.php new file mode 100644 index 0000000..06363c0 --- /dev/null +++ b/app/Http/Requests/UpdateGammeRequest.php @@ -0,0 +1,35 @@ + 'required|unique:gammes,slug,' . $this->gamme->id, + 'picture' => [ + 'sometimes', + 'image', + 'mimes:jpeg,png,jpg', + 'max:1024', + 'dimensions:width=575,height=375' + ], + 'banner' => [ + 'sometimes', + 'image', + 'mimes:jpeg,png,jpg', + 'max:2048', + 'dimensions:width=1920,height=568' + ], + ] + ); + } +} diff --git a/app/Http/Requests/UpdateMomentRequest.php b/app/Http/Requests/UpdateMomentRequest.php new file mode 100644 index 0000000..195d3df --- /dev/null +++ b/app/Http/Requests/UpdateMomentRequest.php @@ -0,0 +1,34 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'title' => 'required|max:255', + 'subtitle' => 'sometimes|max:255', + 'text' => 'required|max:2047', + 'picture' => 'sometimes|image|mimes:jpeg,png,jpg|max:2048', + 'alt_text_picture' => 'sometimes|max:255', + ]; + } +} diff --git a/app/Http/Requests/UpdatePostRequest.php b/app/Http/Requests/UpdatePostRequest.php new file mode 100644 index 0000000..901c5b5 --- /dev/null +++ b/app/Http/Requests/UpdatePostRequest.php @@ -0,0 +1,34 @@ + [ + 'sometimes', + 'image', + 'mimes:jpeg,png,jpg', + 'max:1024', + 'dimensions:max_width=380,max_height=298' + ], + 'picture_home' => [ + 'sometimes', + 'image', + 'mimes:jpeg,png,jpg', + 'max:2048', + 'dimensions:max_width=1030,max_height=239' + ], + ] + ); + } +} diff --git a/app/Http/Requests/UpdateProductRequest.php b/app/Http/Requests/UpdateProductRequest.php new file mode 100644 index 0000000..8b551b8 --- /dev/null +++ b/app/Http/Requests/UpdateProductRequest.php @@ -0,0 +1,28 @@ + 'required|unique:products,slug,' . $this->product->id, + 'picture' => [ + 'sometimes', + 'image', + 'mimes:png', + 'max:1024', + 'dimensions:width=509,height=509' + ], + ] + ); + } +} diff --git a/app/Http/Requests/UpdateSliderRequest.php b/app/Http/Requests/UpdateSliderRequest.php new file mode 100644 index 0000000..bef83d9 --- /dev/null +++ b/app/Http/Requests/UpdateSliderRequest.php @@ -0,0 +1,21 @@ + 'required|unique:sliders,slug,' . $this->slider->id + ] + ); + } +} diff --git a/app/Http/Requests/UpdateTitleRequest.php b/app/Http/Requests/UpdateTitleRequest.php new file mode 100644 index 0000000..387fee7 --- /dev/null +++ b/app/Http/Requests/UpdateTitleRequest.php @@ -0,0 +1,31 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'title' => 'required|max:50', + 'text' => 'sometimes:|max:2047', + ]; + } +} diff --git a/app/Lib/Utils.php b/app/Lib/Utils.php new file mode 100644 index 0000000..bd71817 --- /dev/null +++ b/app/Lib/Utils.php @@ -0,0 +1,67 @@ + + */ +// phpcs:disable Generic.Files.LineLength.TooLong +class Utils +{ + /** + * Store an image for a model + * if a string is passed then the store action is ignored and the strieng is returned + * + * @param \Illuminate\Http\UploadedFile|\SplFileInfo|string $image + * @param string $folderName + * @return string The storage path + */ + public static function storeImage($image, string $folderName): string + { + if (\is_object($image) and get_class($image) === UploadedFile::class) { + /** @var UploadedFile */ + $image = $image; + $newPath = self::prepareMoveFile($image->getClientOriginalName(), $folderName); + $newPath = str_replace(storage_path('app'), '', $newPath); + $image->storePubliclyAs(pathinfo($newPath, \PATHINFO_DIRNAME), pathinfo($newPath, \PATHINFO_BASENAME)); + return '/storage' . str_replace('/public', '', $newPath); + } + if (\is_object($image) and get_class($image) === SplFileInfo::class) { + /** @var SplFileInfo */ + $image = $image; + $newPath = self::prepareMoveFile($image->getBaseName(), $folderName); + if (!File::copy($image->getRealPath(), $newPath)) { + throw new \Exception(sprintf( + 'Failed to copy file %s to %s', + $image->getRealPath(), + $newPath + )); + } + return str_replace(\storage_path('app/public'), '/storage', $newPath); + } + if (\is_string($image)) { + return $image; + } + throw new Exception(sprintf('Cannot handle image %s', \gettype($image))); + } + private static function prepareMoveFile(string $filename, string $folderName): string + { + $pathFolder = \storage_path("app/public/images/$folderName"); + if (!File::exists($pathFolder)) { + File::makeDirectory($pathFolder, 0755, true); + } + $filename = sprintf('%s-%s', Str::uuid(), $filename); + $fullPath = sprintf('%s/%s', $pathFolder, $filename); + if (File::exists($fullPath)) { + File::delete($fullPath); + } + return $fullPath; + } +} diff --git a/app/Mail/SendContactMail.php b/app/Mail/SendContactMail.php new file mode 100644 index 0000000..abfdc38 --- /dev/null +++ b/app/Mail/SendContactMail.php @@ -0,0 +1,101 @@ + + * @license http://url.com MIT + * @link http://url.com + * phpcs:ignore PEAR.Commenting.FileComment.MissingVersion + */ + +namespace App\Mail; + +use Illuminate\Bus\Queueable; +use Illuminate\Mail\Mailable; +use Illuminate\Queue\SerializesModels; + +/** + * Undocumented class + * + * @category Description + * @package Category + * @author Name + * @license http://url.com MIT + * @link http://url.com + */ +class SendContactMail extends Mailable +{ + use Queueable; + use SerializesModels; + + /** + * The form data. + */ + protected $data; + + /** + * The joined file name + * + * @var string + */ + protected $joinedFileName; + + + /** + * Create a new message instance. + * + * @return void + */ + public function __construct($data) + { + $this->data = $data; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + $data = $this->data; + $this->joinFileIfProvided(); + + return $this->subject( + "Contact - " . + config('app.name', 'Doux') . + " - " . + $data['topic'] + ) + ->from($data['email']) + ->view('emails.send-contact', compact('data')); + } + + + /** + * Attach a joined file if given in data + * + * @return void + */ + protected function joinFileIfProvided(): void + { + if (isset($this->data['file'])) { + $this->joinedFileName = sprintf( + 'Doux_MESSAGE-PJ-%s.%s', + date("YmdHis"), + $this->data['file']->extension() + ); + $this->attach( + $this->data['file'], + [ + 'as' => $this->joinedFileName, + 'mime' => $this->data['file']->getMimeType() + ] + ); + $this->data['file'] = $this->joinedFileName; + } + } +} diff --git a/app/Models/Advice.php b/app/Models/Advice.php new file mode 100644 index 0000000..82b6b24 --- /dev/null +++ b/app/Models/Advice.php @@ -0,0 +1,96 @@ +picture1,"SplFileInfo")) { + $advice->picture1 = Utils::storeImage($advice->picture1, $advice->getTable()); + } + if (is_a($advice->picture2,"SplFileInfo")) { + $advice->picture2 = Utils::storeImage($advice->picture2, $advice->getTable()); + } + if (is_a($advice->picture3,"SplFileInfo")) { + $advice->picture3 = Utils::storeImage($advice->picture3, $advice->getTable()); + } + }); + + static::updating(function (Advice $advice) { + if (is_a($advice->picture1,"SplFileInfo")) { + $advice->picture1 = Utils::storeImage($advice->picture1, $advice->getTable()); + } + if (is_a($advice->picture2,"SplFileInfo")) { + $advice->picture2 = Utils::storeImage($advice->picture2, $advice->getTable()); + } + if (is_a($advice->picture3,"SplFileInfo")) { + $advice->picture3 = Utils::storeImage($advice->picture3, $advice->getTable()); + } + }); + + static::deleted(function (Advice $advice) { + if ($advice->picture1) { + $urlPicture = public_path() . $advice->picture1; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + if ($advice->picture2) { + $urlPicture = public_path() . $advice->picture2; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + if ($advice->picture3) { + $urlPicture = public_path() . $advice->picture3; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + }); + parent::boot(); + } +} diff --git a/app/Models/Encart.php b/app/Models/Encart.php new file mode 100644 index 0000000..c997309 --- /dev/null +++ b/app/Models/Encart.php @@ -0,0 +1,63 @@ + Page::class + ]; + + protected $fillable = [ + 'title', + 'subtitle', + 'text', + 'picture', + 'alt_text_picture', + ]; + + public $translatable = [ + 'title', + 'subtitle', + 'text', + 'picture', + 'alt_text_picture', + ]; + + protected static function boot() + { + static::creating(function (Encart $encart) { + if (is_a($encart->picture,"SplFileInfo")) { + $encart->picture = Utils::storeImage($encart->picture, $encart->getTable()); + } + }); + + static::updating(function (Encart $encart) { + if (is_a($encart->picture,"SplFileInfo")) { + $encart->picture = Utils::storeImage($encart->picture, $encart->getTable()); + } + }); + + static::deleted(function (Encart $encart) { + if ($encart->picture) { + $urlPicture = public_path() . $encart->picture; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + }); + parent::boot(); + } +} diff --git a/app/Models/Gamme.php b/app/Models/Gamme.php new file mode 100644 index 0000000..07752f5 --- /dev/null +++ b/app/Models/Gamme.php @@ -0,0 +1,140 @@ +picture, "SplFileInfo")) { + $gamme->picture = Utils::storeImage($gamme->picture, $gamme->getTable()); + } + if (is_a($gamme->banner, "SplFileInfo")) { + $gamme->banner = Utils::storeImage($gamme->banner, $gamme->getTable()); + } + + if ($gamme->parent_gamme_id != null) { + // Si Creation gamme enfant sans enfant, alors il faut update sa couleur selon celle du parent + $gamme->color = Gamme::whereId($gamme->parent_gamme_id)->select(['color'])->first()->color; + } + }); + + static::updating(function (Gamme $gamme) { + if (is_a($gamme->picture, "SplFileInfo")) { + $gamme->picture = Utils::storeImage($gamme->picture, $gamme->getTable()); + } + if (is_a($gamme->banner, "SplFileInfo")) { + $gamme->banner = Utils::storeImage($gamme->banner, $gamme->getTable()); + } + if ($gamme->parent_gamme_id === null) { + // Si Update gamme parente, alors il faut update la couleur des enfants + Gamme::whereParentGammeId($gamme->id) + ->update(['color' => $gamme->color]); + } elseif ($gamme->childGammes()->exists()) { + /** + * Si Update gamme enfant qui a des enfants, + * alors il faut update sa couleur selon celle du parent + * et vider l'association parent/enfant des petits enfants + */ + $gamme->color = Gamme::whereId($gamme->parent_gamme_id)->select(['color'])->first()->color; + Gamme::whereParentGammeId($gamme->id) + ->update(['parent_gamme_id' => null]); + } else { + // Si Update gamme enfant sans enfant, alors il faut update sa couleur selon celle du parent + $gamme->color = Gamme::whereId($gamme->parent_gamme_id)->select(['color'])->first()->color; + } + }); + + static::deleting(function (Gamme $gamme) { + if ($gamme->childGammes()->exists()) { + Gamme::whereParentGammeId($gamme->id) + ->update(['parent_gamme_id' => null]); + } + }); + + static::deleted(function (Gamme $gamme) { + if ($gamme->picture) { + $urlPicture = public_path() . $gamme->picture; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + if ($gamme->banner) { + $urlPicture = public_path() . $gamme->banner; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + }); + parent::boot(); + } + + public function getRgbaColorAttribute() + { + $color = $this->color; + + if (!$color) { + return ''; + } + if ($color[0] == '#') { + $color = substr($color, 1); + } + list($r, $g, $b) = array_map("hexdec", str_split($color, (strlen($color) / 3))); + + return "rgba($r,$g,$b,1)"; + } + + public function childGammes() + { + return $this->hasMany(Gamme::class, 'parent_gamme_id'); + } + + public function parentGamme() + { + return $this->belongsTo(Gamme::class); + } + + /** + * Get Products for the Range. + */ + public function products() + { + return $this->hasMany(Product::class); + } +} diff --git a/app/Models/Moment.php b/app/Models/Moment.php new file mode 100644 index 0000000..c474cde --- /dev/null +++ b/app/Models/Moment.php @@ -0,0 +1,63 @@ + Page::class + ]; + + protected $fillable = [ + 'title', + 'subtitle', + 'text', + 'picture', + 'alt_text_picture', + ]; + + public $translatable = [ + 'title', + 'subtitle', + 'text', + 'picture', + 'alt_text_picture', + ]; + + protected static function boot() + { + static::creating(function (Moment $moment) { + if (is_a($moment->picture, "SplFileInfo")) { + $moment->picture = Utils::storeImage($moment->picture, $moment->getTable()); + } + }); + + static::updating(function (Moment $moment) { + if (is_a($moment->picture, "SplFileInfo")) { + $moment->picture = Utils::storeImage($moment->picture, $moment->getTable()); + } + }); + + static::deleted(function (Moment $moment) { + if ($moment->picture) { + $urlPicture = public_path() . $moment->picture; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + }); + parent::boot(); + } +} diff --git a/app/Models/Picto.php b/app/Models/Picto.php new file mode 100644 index 0000000..c30a342 --- /dev/null +++ b/app/Models/Picto.php @@ -0,0 +1,59 @@ + Page::class + ]; + + protected $fillable = [ + 'picture', + 'alt_text_picture', + 'text', + ]; + + public $translatable = [ + 'picture', + 'alt_text_picture', + 'text', + ]; + + protected static function boot() + { + static::creating(function (Picto $picto) { + if (is_a($picto->picture,"SplFileInfo")) { + $picto->picture = Utils::storeImage($picto->picture, $picto->getTable()); + } + }); + + static::updating(function (Picto $picto) { + if (is_a($picto->picture,"SplFileInfo")) { + $picto->picture = Utils::storeImage($picto->picture, $picto->getTable()); + } + }); + + static::deleted(function (Picto $picto) { + if ($picto->picture) { + $urlPicture = public_path() . $picto->picture; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + }); + parent::boot(); + } +} diff --git a/app/Models/PictoBrand.php b/app/Models/PictoBrand.php new file mode 100644 index 0000000..f5232e7 --- /dev/null +++ b/app/Models/PictoBrand.php @@ -0,0 +1,56 @@ +picture,"SplFileInfo")) { + $pictoBrand->picture = Utils::storeImage($pictoBrand->picture, $pictoBrand->getTable()); + } + }); + + static::updating(function (PictoBrand $pictoBrand) { + if (is_a($pictoBrand->picture,"SplFileInfo")) { + $pictoBrand->picture = Utils::storeImage($pictoBrand->picture, $pictoBrand->getTable()); + } + }); + + static::deleted(function (PictoBrand $pictoBrand) { + if ($pictoBrand->picture) { + $urlPicture = public_path() . $pictoBrand->picture; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + }); + parent::boot(); + } +} diff --git a/app/Models/Post.php b/app/Models/Post.php new file mode 100644 index 0000000..8e22b28 --- /dev/null +++ b/app/Models/Post.php @@ -0,0 +1,87 @@ + 'datetime', + 'date_end' => 'datetime', + ]; + + protected $fillable = [ + 'title', + 'text', + 'picture_home', + 'alt_text_picture_home', + 'picture_news', + 'alt_text_picture_news', + 'date_start', + 'date_end', + 'on_top' + ]; + + protected $translatable = [ + 'title', + 'text', + 'picture_home', + 'alt_text_picture_home', + 'picture_news', + 'alt_text_picture_news' + ]; + + protected static function boot() + { + static::creating(function (Post $post) { + if (is_a($post->picture_home,"SplFileInfo")) { + $post->picture_home = Utils::storeImage($post->picture_home, $post->getTable()); + } + if (is_a($post->picture_news,"SplFileInfo")) { + $post->picture_news = Utils::storeImage($post->picture_news, $post->getTable()); + } + }); + + static::updating(function (Post $post) { + if (is_a($post->picture_home,"SplFileInfo")) { + $post->picture_home = Utils::storeImage($post->picture_home, $post->getTable()); + } + if (is_a($post->picture_news,"SplFileInfo")) { + $post->picture_news = Utils::storeImage($post->picture_news, $post->getTable()); + } + }); + + static::deleted(function (Post $post) { + if ($post->picture_home) { + $urlPicture = public_path() . $post->picture_home; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + if ($post->picture_news) { + $urlPicture = public_path() . $post->picture_news; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + }); + parent::boot(); + } +} diff --git a/app/Models/Product.php b/app/Models/Product.php new file mode 100644 index 0000000..995915b --- /dev/null +++ b/app/Models/Product.php @@ -0,0 +1,90 @@ +picture, "SplFileInfo")) { + $product->picture = Utils::storeImage($product->picture, $product->getTable()); + } + }); + + static::updating(function (Product $product) { + if (is_a($product->picture, "SplFileInfo")) { + $product->picture = Utils::storeImage($product->picture, $product->getTable()); + } + }); + + static::deleted(function (Product $product) { + if ($product->picture) { + $urlPicture = public_path() . $product->picture; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + //delete des images de plus produit + $plusproduit = json_decode($product->plusproduit); + foreach ($plusproduit as $plus) { + $urlPicture = public_path() . $plus->url; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + }); + parent::boot(); + } + + /** + * Get the Range that owns the product. + */ + public function gamme() + { + return $this->belongsTo(Gamme::class); + } +} diff --git a/app/Models/SeoDatum.php b/app/Models/SeoDatum.php new file mode 100644 index 0000000..b6c48be --- /dev/null +++ b/app/Models/SeoDatum.php @@ -0,0 +1,50 @@ + Page::class + ]; + + /** + * Engagment fillable fields + * + * @var array + */ + protected $fillable = [ + 'title', + 'description', + 'keywords' + ]; + + /** + * Engagment translatable fields array + * + * @var array + */ + public $translatable = [ + 'title', + 'description', + 'keywords' + ]; + + /** + * Get the route key for the model. + * + * @return string + */ + public function getRouteKeyName() + { + return 'page'; + } +} diff --git a/app/Models/Slide.php b/app/Models/Slide.php new file mode 100644 index 0000000..87eebed --- /dev/null +++ b/app/Models/Slide.php @@ -0,0 +1,79 @@ + 'datetime', + 'date_end' => 'datetime', + ]; + + protected $fillable = [ + 'title', + 'text', + 'link_label', + 'link', + 'link_new_tab', + 'slider_id', + 'picture', + 'alt_text_picture', + 'date_start', + 'date_end' + ]; + + public $translatable = [ + 'title', + 'text', + 'picture', + 'link', + 'link_label', + 'alt_text_picture' + ]; + + protected static function boot() + { + static::creating(function (Slide $slide) { + if (is_a($slide->picture,"SplFileInfo")) { + $slide->picture = Utils::storeImage($slide->picture, $slide->getTable()); + } + }); + + static::updating(function (Slide $slide) { + if (is_a($slide->picture,"SplFileInfo")) { + $slide->picture = Utils::storeImage($slide->picture, $slide->getTable()); + } + }); + + static::deleted(function (Slide $slide) { + if ($slide->picture) { + $urlPicture = public_path() . $slide->picture; + if ($urlPicture) { + if (File::exists($urlPicture)) { + File::delete($urlPicture); + } + } + } + }); + parent::boot(); + } + + public function slider() + { + return $this->belongsTo(Slider::class); + } +} diff --git a/app/Models/Slider.php b/app/Models/Slider.php new file mode 100644 index 0000000..557d28d --- /dev/null +++ b/app/Models/Slider.php @@ -0,0 +1,45 @@ +hasMany(Slide::class, 'slider_id')->orderBy('order', 'ASC'); + } + + public function showableSlides() + { + $now = Carbon::now(); + return $this->hasMany(Slide::class, 'slider_id') + ->orderBy('order', 'ASC')->where(function ($q) use ($now) { + $q->whereDate('date_start', '<=', $now) + ->orWhereNull('date_start'); + })->where(function ($q) use ($now) { + $q->whereDate('date_end', '>=', $now) + ->orWhereNull('date_end'); + }); + } +} diff --git a/app/Models/Text.php b/app/Models/Text.php new file mode 100644 index 0000000..65cc06a --- /dev/null +++ b/app/Models/Text.php @@ -0,0 +1,28 @@ + Page::class + ]; + + protected $fillable = [ + 'title', + 'text', + ]; + + public $translatable = [ + 'title', + 'text', + ]; +} diff --git a/app/Models/Title.php b/app/Models/Title.php new file mode 100644 index 0000000..18ca140 --- /dev/null +++ b/app/Models/Title.php @@ -0,0 +1,28 @@ + Page::class + ]; + + protected $fillable = [ + 'title', + 'text', + ]; + + public $translatable = [ + 'title', + 'text', + ]; +} diff --git a/app/Models/User.php b/app/Models/User.php index e23e090..e239721 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,15 +2,22 @@ namespace App\Models; -use Illuminate\Contracts\Auth\MustVerifyEmail; +use App\Enums\Role; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; -use Laravel\Sanctum\HasApiTokens; +use Illuminate\Support\Facades\Hash; +use Kwaadpepper\Enum\Traits\CastsEnums; class User extends Authenticatable { - use HasApiTokens, HasFactory, Notifiable; + use HasFactory; + use Notifiable; + use CastsEnums; + + public $enumCasts = [ + 'role' => Role::class + ]; /** * The attributes that are mass assignable. @@ -41,4 +48,20 @@ class User extends Authenticatable protected $casts = [ 'email_verified_at' => 'datetime', ]; + + protected static function boot() + { + static::creating(function (User $user) { + if (Hash::needsRehash($user->password)) { + $user->password = Hash::make($user->password); + } + }); + + static::updating(function (User $user) { + if (Hash::needsRehash($user->password)) { + $user->password = Hash::make($user->password); + } + }); + parent::boot(); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ee8ca5b..54c51c7 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,7 @@ namespace App\Providers; +use Illuminate\Support\Facades\URL; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -23,6 +24,6 @@ class AppServiceProvider extends ServiceProvider */ public function boot() { - // + URL::forceScheme('https'); } } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 3bd3c81..d1e7073 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -2,6 +2,8 @@ namespace App\Providers; +use App\Models\Gamme; +use App\Models\Product; use Illuminate\Cache\RateLimiting\Limit; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Http\Request; @@ -47,6 +49,18 @@ class RouteServiceProvider extends ServiceProvider ->namespace($this->namespace) ->group(base_path('routes/web.php')); }); + + Route::bind('gammeSlug', function($value, $route) { + $gamme = Gamme::where('slug', 'LIKE', '%:"'.$value.'"%')->firstOrFail(); + return $gamme; + }); + + Route::bind('productSlug', function($value, $route) { + $gamme = $route->parameter('gammeSlug'); + $product = Product::where('slug', 'LIKE', '%:"'.$value.'"%')->where('gamme_id', $gamme->id)->firstOrFail(); + return $product; + }); + } /** diff --git a/app/Traits/CastsEnumsHasTranslations.php b/app/Traits/CastsEnumsHasTranslations.php new file mode 100644 index 0000000..bc934a7 --- /dev/null +++ b/app/Traits/CastsEnumsHasTranslations.php @@ -0,0 +1,42 @@ +hasEnumCast($key)) { + return $this->enumGetAttributeValue($key); + } + + return $this->transGetAttributeValue($key); + } + + /** + * Manually mix setAttribute from CastsEnums and HasTranslations + */ + public function setAttribute($key, $value) + { + if ($this->hasEnumCast($key)) { + return $this->enumSetAttribute($key, $value); + + } + + return $this->transSetAttribute($key,$value); + } +} diff --git a/composer.json b/composer.json index 61f4912..afe1f6a 100644 --- a/composer.json +++ b/composer.json @@ -2,15 +2,24 @@ "name": "laravel/laravel", "type": "project", "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], + "keywords": [ + "framework", + "laravel" + ], "license": "MIT", "require": { "php": "^7.3|^8.0", "fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^7.0.1", + "joedixon/laravel-translation": "^1.1", + "kwaadpepper/enum": "^2.1", + "kwaadpepper/exception-handler": "^0.0.8", "laravel/framework": "^8.65", "laravel/sanctum": "^2.11", - "laravel/tinker": "^2.5" + "laravel/tinker": "^2.5", + "laravel/ui": "^3.3", + "mews/purifier": "^3.3", + "spatie/laravel-translatable": "^4.6" }, "require-dev": { "facade/ignition": "^2.5", @@ -18,7 +27,8 @@ "laravel/sail": "^1.0.1", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^5.10", - "phpunit/phpunit": "^9.5.10" + "phpunit/phpunit": "^9.5.10", + "slevomat/coding-standard": "^7.0" }, "autoload": { "psr-4": { @@ -55,7 +65,10 @@ "config": { "optimize-autoloader": true, "preferred-install": "dist", - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } }, "minimum-stability": "dev", "prefer-stable": true diff --git a/composer.lock b/composer.lock index 144173e..375ed32 100644 --- a/composer.lock +++ b/composer.lock @@ -4,35 +4,35 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d4842c22e789d247c4b660e69490545f", + "content-hash": "6d3d19ee0637b85edde0f49067b24cae", "packages": [ { "name": "asm89/stack-cors", - "version": "v2.0.3", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/asm89/stack-cors.git", - "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714" + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/9cb795bf30988e8c96dd3c40623c48a877bc6714", - "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", "shasum": "" }, "require": { - "php": "^7.0|^8.0", - "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0", - "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0" + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" }, "require-dev": { - "phpunit/phpunit": "^6|^7|^8|^9", + "phpunit/phpunit": "^7|^9", "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -58,9 +58,9 @@ ], "support": { "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.0.3" + "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" }, - "time": "2021-03-11T06:42:03+00:00" + "time": "2022-01-18T09:12:03+00:00" }, { "name": "brick/math", @@ -215,32 +215,28 @@ }, { "name": "doctrine/lexer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" @@ -275,7 +271,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, "funding": [ { @@ -291,33 +287,33 @@ "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2022-02-28T11:07:21+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v3.1.0", + "version": "v3.3.1", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c" + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", - "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "webmozart/assert": "^1.7.0" + "webmozart/assert": "^1.0" }, "replace": { "mtdowling/cron-expression": "^1.0" }, "require-dev": { "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-webmozart-assert": "^0.12.7", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", @@ -344,7 +340,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.1.0" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" }, "funding": [ { @@ -352,7 +348,7 @@ "type": "github" } ], - "time": "2020-11-24T19:55:57+00:00" + "time": "2022-01-18T15:43:28+00:00" }, { "name": "egulias/email-validator", @@ -423,29 +419,81 @@ "time": "2020-12-29T14:50:06+00:00" }, { - "name": "fruitcake/laravel-cors", - "version": "v2.0.4", + "name": "ezyang/htmlpurifier", + "version": "v4.13.0", "source": { "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "a8ccedc7ca95189ead0e407c43b530dc17791d6a" + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/a8ccedc7ca95189ead0e407c43b530dc17791d6a", - "reference": "a8ccedc7ca95189ead0e407c43b530dc17791d6a", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/08e27c97e4c6ed02f37c5b2b20488046c8d90d75", + "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "require-dev": { + "simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/master" + }, + "time": "2020-06-29T00:56:53+00:00" + }, + { + "name": "fruitcake/laravel-cors", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", "shasum": "" }, "require": { "asm89/stack-cors": "^2.0.1", "illuminate/contracts": "^6|^7|^8|^9", "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5", - "symfony/http-kernel": "^4.3.4|^5" + "php": ">=7.2" }, "require-dev": { - "laravel/framework": "^6|^7|^8", + "laravel/framework": "^6|^7.24|^8", "orchestra/testbench-dusk": "^4|^5|^6|^7", "phpunit/phpunit": "^6|^7|^8|^9", "squizlabs/php_codesniffer": "^3.5" @@ -453,7 +501,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" }, "laravel": { "providers": [ @@ -489,28 +537,32 @@ ], "support": { "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.4" + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" }, "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, { "url": "https://github.com/barryvdh", "type": "github" } ], - "time": "2021-04-26T11:24:25+00:00" + "time": "2022-02-23T14:25:13+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.0.3", + "version": "v1.0.4", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "296c015dc30ec4322168c5ad3ee5cc11dae827ac" + "reference": "0690bde05318336c7221785f2a932467f98b64ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/296c015dc30ec4322168c5ad3ee5cc11dae827ac", - "reference": "296c015dc30ec4322168c5ad3ee5cc11dae827ac", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", + "reference": "0690bde05318336c7221785f2a932467f98b64ca", "shasum": "" }, "require": { @@ -533,7 +585,8 @@ "authors": [ { "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "An Implementation Of The Result Type", @@ -546,7 +599,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.3" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4" }, "funding": [ { @@ -558,20 +611,20 @@ "type": "tidelift" } ], - "time": "2021-10-17T19:48:54+00:00" + "time": "2021-11-21T21:41:47+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.4.0", + "version": "7.4.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "868b3571a039f0ebc11ac8f344f4080babe2cb94" + "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/868b3571a039f0ebc11ac8f344f4080babe2cb94", - "reference": "868b3571a039f0ebc11ac8f344f4080babe2cb94", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", + "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", "shasum": "" }, "require": { @@ -580,7 +633,7 @@ "guzzlehttp/psr7": "^1.8.3 || ^2.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2" + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "provide": { "psr/http-client-implementation": "1.0" @@ -604,12 +657,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -666,7 +719,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.0" + "source": "https://github.com/guzzle/guzzle/tree/7.4.1" }, "funding": [ { @@ -682,7 +735,7 @@ "type": "tidelift" } ], - "time": "2021-10-18T09:52:00+00:00" + "time": "2021-12-06T18:43:05+00:00" }, { "name": "guzzlehttp/promises", @@ -711,12 +764,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -884,17 +937,188 @@ "time": "2021-10-06T17:43:30+00:00" }, { - "name": "laravel/framework", - "version": "v8.69.0", + "name": "joedixon/laravel-translation", + "version": "v1.1.2", "source": { "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "545181da688db64fed6d8427e55f630a90ca0d32" + "url": "https://github.com/joedixon/laravel-translation.git", + "reference": "4a467398bae73cd16522d523b557e96f3455b9d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/545181da688db64fed6d8427e55f630a90ca0d32", - "reference": "545181da688db64fed6d8427e55f630a90ca0d32", + "url": "https://api.github.com/repos/joedixon/laravel-translation/zipball/4a467398bae73cd16522d523b557e96f3455b9d2", + "reference": "4a467398bae73cd16522d523b557e96f3455b9d2", + "shasum": "" + }, + "require-dev": { + "mockery/mockery": "^1.0.0", + "orchestra/testbench": "^4.0", + "phpunit/phpunit": "^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "JoeDixon\\Translation\\TranslationServiceProvider", + "JoeDixon\\Translation\\TranslationBindingsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "JoeDixon\\Translation\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joe Dixon", + "email": "hello@joedixon.co.uk" + } + ], + "description": "A tool for managing all of your Laravel translations", + "support": { + "issues": "https://github.com/joedixon/laravel-translation/issues", + "source": "https://github.com/joedixon/laravel-translation/tree/master" + }, + "time": "2020-04-13T20:06:24+00:00" + }, + { + "name": "kwaadpepper/enum", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/Kwaadpepper/enum.git", + "reference": "bbd08723895cad5a41bc0d57e565fe64fa13ca41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Kwaadpepper/enum/zipball/bbd08723895cad5a41bc0d57e565fe64fa13ca41", + "reference": "bbd08723895cad5a41bc0d57e565fe64fa13ca41", + "shasum": "" + }, + "require": { + "php": "^7.3" + }, + "require-dev": { + "orchestra/testbench": "^5", + "phpunit/php-code-coverage": "^9.2", + "phpunit/phpunit": "~9.0", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Kwaadpepper\\Enum\\EnumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Kwaadpepper\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jérémy Munsch", + "email": "github@jeremydev.ovh", + "homepage": "https://jeremydev.ovh" + } + ], + "description": "Enums to use for any project", + "homepage": "https://github.com/kwaadpepper/enum", + "keywords": [ + "enum", + "laravel" + ], + "support": { + "issues": "https://github.com/Kwaadpepper/enum/issues", + "source": "https://github.com/Kwaadpepper/enum/tree/2.1.2" + }, + "time": "2021-11-18T16:52:08+00:00" + }, + { + "name": "kwaadpepper/exception-handler", + "version": "0.0.8", + "source": { + "type": "git", + "url": "https://github.com/Kwaadpepper/exception-handler.git", + "reference": "e8ba0e31ca2bf5971e459c623f0f5322a4c7a630" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Kwaadpepper/exception-handler/zipball/e8ba0e31ca2bf5971e459c623f0f5322a4c7a630", + "reference": "e8ba0e31ca2bf5971e459c623f0f5322a4c7a630", + "shasum": "" + }, + "require": { + "illuminate/support": "~7|~8|~9", + "laravel/framework": "~7|~8|~9" + }, + "require-dev": { + "orchestra/testbench": "^6.13", + "phpunit/phpunit": "~9.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Kwaadpepper\\ExceptionHandler\\ExceptionHandlerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Kwaadpepper\\ExceptionHandler\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jérémy Munsch", + "email": "github@jeremydev.ovh", + "homepage": "https://jeremydev.ovh" + } + ], + "description": "Send emails when exceptions occurs", + "homepage": "https://github.com/kwaadpepper/exception-handler", + "keywords": [ + "email", + "exception", + "laravel", + "policies" + ], + "support": { + "issues": "https://github.com/Kwaadpepper/exception-handler/issues", + "source": "https://github.com/Kwaadpepper/exception-handler/tree/0.0.8" + }, + "time": "2022-02-03T15:23:22+00:00" + }, + { + "name": "laravel/framework", + "version": "v8.83.4", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "97a549f1a83cfb32dab1eecab4c4d40a984a72b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/97a549f1a83cfb32dab1eecab4c4d40a984a72b5", + "reference": "97a549f1a83cfb32dab1eecab4c4d40a984a72b5", "shasum": "" }, "require": { @@ -912,22 +1136,22 @@ "opis/closure": "^3.6", "php": "^7.3|^8.0", "psr/container": "^1.0", - "psr/log": "^1.0 || ^2.0", + "psr/log": "^1.0|^2.0", "psr/simple-cache": "^1.0", "ramsey/uuid": "^4.2.2", "swiftmailer/swiftmailer": "^6.3", - "symfony/console": "^5.1.4", - "symfony/error-handler": "^5.1.4", - "symfony/finder": "^5.1.4", - "symfony/http-foundation": "^5.1.4", - "symfony/http-kernel": "^5.1.4", - "symfony/mime": "^5.1.4", - "symfony/process": "^5.1.4", - "symfony/routing": "^5.1.4", - "symfony/var-dumper": "^5.1.4", + "symfony/console": "^5.4", + "symfony/error-handler": "^5.4", + "symfony/finder": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/mime": "^5.4", + "symfony/process": "^5.4", + "symfony/routing": "^5.4", + "symfony/var-dumper": "^5.4", "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.2", - "voku/portable-ascii": "^1.4.8" + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^1.6.1" }, "conflict": { "tightenco/collect": "<5.5.33" @@ -971,21 +1195,22 @@ }, "require-dev": { "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.2", + "doctrine/dbal": "^2.13.3|^3.1.4", "filp/whoops": "^2.14.3", "guzzlehttp/guzzle": "^6.5.5|^7.0.1", "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^6.23", + "orchestra/testbench-core": "^6.27", "pda/pheanstalk": "^4.0", "phpunit/phpunit": "^8.5.19|^9.5.8", "predis/predis": "^1.1.9", - "symfony/cache": "^5.1.4" + "symfony/cache": "^5.4" }, "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).", "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.2).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", "ext-bcmath": "Required to use the multiple_of validation rule.", "ext-ftp": "Required to use the Flysystem FTP driver.", "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", @@ -1006,9 +1231,9 @@ "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8).", "predis/predis": "Required to use the predis connector (^1.1.9).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^5.1.4).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1.4).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.4).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).", "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, @@ -1053,32 +1278,32 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-11-02T13:53:22+00:00" + "time": "2022-03-08T16:12:54+00:00" }, { "name": "laravel/sanctum", - "version": "v2.12.1", + "version": "v2.14.2", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "e610647b04583ace6b30c8eb74cee0a866040420" + "reference": "dc5d749ba9bfcfd68d8f5c272238f88bea223e66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/e610647b04583ace6b30c8eb74cee0a866040420", - "reference": "e610647b04583ace6b30c8eb74cee0a866040420", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/dc5d749ba9bfcfd68d8f5c272238f88bea223e66", + "reference": "dc5d749ba9bfcfd68d8f5c272238f88bea223e66", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/contracts": "^6.9|^7.0|^8.0", - "illuminate/database": "^6.9|^7.0|^8.0", - "illuminate/support": "^6.9|^7.0|^8.0", + "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", + "illuminate/database": "^6.9|^7.0|^8.0|^9.0", + "illuminate/support": "^6.9|^7.0|^8.0|^9.0", "php": "^7.2|^8.0" }, "require-dev": { "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", "phpunit/phpunit": "^8.0|^9.3" }, "type": "library", @@ -1117,20 +1342,20 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2021-10-26T18:23:26+00:00" + "time": "2022-02-16T14:40:23+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.0.3", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "6cfc678735f22ccedad761b8cae2bab14c3d8e5b" + "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/6cfc678735f22ccedad761b8cae2bab14c3d8e5b", - "reference": "6cfc678735f22ccedad761b8cae2bab14c3d8e5b", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/9e4b005daa20b0c161f3845040046dc9ddc1d74e", + "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e", "shasum": "" }, "require": { @@ -1176,36 +1401,36 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2021-10-07T14:00:57+00:00" + "time": "2022-02-11T19:23:53+00:00" }, { "name": "laravel/tinker", - "version": "v2.6.2", + "version": "v2.7.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "c808a7227f97ecfd9219fbf913bad842ea854ddc" + "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/c808a7227f97ecfd9219fbf913bad842ea854ddc", - "reference": "c808a7227f97ecfd9219fbf913bad842ea854ddc", + "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", + "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0", - "illuminate/contracts": "^6.0|^7.0|^8.0", - "illuminate/support": "^6.0|^7.0|^8.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0", "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4", - "symfony/var-dumper": "^4.3.4|^5.0" + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)." }, "type": "library", "extra": { @@ -1242,22 +1467,83 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.6.2" + "source": "https://github.com/laravel/tinker/tree/v2.7.0" }, - "time": "2021-09-28T15:47:34+00:00" + "time": "2022-01-10T08:52:49+00:00" }, { - "name": "league/commonmark", - "version": "1.6.6", + "name": "laravel/ui", + "version": "v3.4.5", "source": { "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "c4228d11e30d7493c6836d20872f9582d8ba6dcf" + "url": "https://github.com/laravel/ui.git", + "reference": "f11d295de1508c5bb56206a620b00b6616de414c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c4228d11e30d7493c6836d20872f9582d8ba6dcf", - "reference": "c4228d11e30d7493c6836d20872f9582d8ba6dcf", + "url": "https://api.github.com/repos/laravel/ui/zipball/f11d295de1508c5bb56206a620b00b6616de414c", + "reference": "f11d295de1508c5bb56206a620b00b6616de414c", + "shasum": "" + }, + "require": { + "illuminate/console": "^8.42|^9.0", + "illuminate/filesystem": "^8.42|^9.0", + "illuminate/support": "^8.82|^9.0", + "illuminate/validation": "^8.42|^9.0", + "php": "^7.3|^8.0" + }, + "require-dev": { + "orchestra/testbench": "^6.23|^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Ui\\UiServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Ui\\": "src/", + "Illuminate\\Foundation\\Auth\\": "auth-backend/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel UI utilities and presets.", + "keywords": [ + "laravel", + "ui" + ], + "support": { + "source": "https://github.com/laravel/ui/tree/v3.4.5" + }, + "time": "2022-02-21T14:59:16+00:00" + }, + { + "name": "league/commonmark", + "version": "1.6.7", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "2b8185c13bc9578367a5bf901881d1c1b5bbd09b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/2b8185c13bc9578367a5bf901881d1c1b5bbd09b", + "reference": "2b8185c13bc9578367a5bf901881d1c1b5bbd09b", "shasum": "" }, "require": { @@ -1320,10 +1606,6 @@ "source": "https://github.com/thephpleague/commonmark" }, "funding": [ - { - "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark", - "type": "custom" - }, { "url": "https://www.colinodell.com/sponsor", "type": "custom" @@ -1336,29 +1618,25 @@ "url": "https://github.com/colinodell", "type": "github" }, - { - "url": "https://www.patreon.com/colinodell", - "type": "patreon" - }, { "url": "https://tidelift.com/funding/github/packagist/league/commonmark", "type": "tidelift" } ], - "time": "2021-07-17T17:13:23+00:00" + "time": "2022-01-13T17:18:13+00:00" }, { "name": "league/flysystem", - "version": "1.1.5", + "version": "1.1.9", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "18634df356bfd4119fe3d6156bdb990c414c14ea" + "reference": "094defdb4a7001845300334e7c1ee2335925ef99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/18634df356bfd4119fe3d6156bdb990c414c14ea", - "reference": "18634df356bfd4119fe3d6156bdb990c414c14ea", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", + "reference": "094defdb4a7001845300334e7c1ee2335925ef99", "shasum": "" }, "require": { @@ -1431,7 +1709,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.5" + "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" }, "funding": [ { @@ -1439,20 +1717,20 @@ "type": "other" } ], - "time": "2021-08-17T13:49:42+00:00" + "time": "2021-12-09T09:40:50+00:00" }, { "name": "league/mime-type-detection", - "version": "1.8.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "b38b25d7b372e9fddb00335400467b223349fd7e" + "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b38b25d7b372e9fddb00335400467b223349fd7e", - "reference": "b38b25d7b372e9fddb00335400467b223349fd7e", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", + "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", "shasum": "" }, "require": { @@ -1460,7 +1738,7 @@ "php": "^7.2 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.18", + "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", "phpunit/phpunit": "^8.5.8 || ^9.3" }, @@ -1483,7 +1761,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.8.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.9.0" }, "funding": [ { @@ -1495,7 +1773,88 @@ "type": "tidelift" } ], - "time": "2021-09-25T08:23:19+00:00" + "time": "2021-11-21T11:48:40+00:00" + }, + { + "name": "mews/purifier", + "version": "3.3.7", + "source": { + "type": "git", + "url": "https://github.com/mewebstudio/Purifier.git", + "reference": "9844bc82886e4291b3116afbd9ab5f532856662a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mewebstudio/Purifier/zipball/9844bc82886e4291b3116afbd9ab5f532856662a", + "reference": "9844bc82886e4291b3116afbd9ab5f532856662a", + "shasum": "" + }, + "require": { + "ezyang/htmlpurifier": "4.13.*", + "illuminate/config": "^5.8|^6.0|^7.0|^8.0|^9.0", + "illuminate/filesystem": "^5.8|^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^5.8|^6.0|^7.0|^8.0|^9.0", + "php": "^7.2|^8.0" + }, + "require-dev": { + "graham-campbell/testbench": "^3.2|^5.5.1", + "mockery/mockery": "^1.3.3", + "phpunit/phpunit": "^8.0|^9.0" + }, + "suggest": { + "laravel/framework": "To test the Laravel bindings", + "laravel/lumen-framework": "To test the Lumen bindings" + }, + "type": "package", + "extra": { + "laravel": { + "providers": [ + "Mews\\Purifier\\PurifierServiceProvider" + ], + "aliases": { + "Purifier": "Mews\\Purifier\\Facades\\Purifier" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Mews\\Purifier\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Muharrem ERİN", + "email": "me@mewebstudio.com", + "homepage": "https://github.com/mewebstudio", + "role": "Developer" + } + ], + "description": "Laravel 5/6/7 HtmlPurifier Package", + "homepage": "https://github.com/mewebstudio/purifier", + "keywords": [ + "Purifier", + "htmlpurifier", + "laravel5 HtmlPurifier", + "laravel5 Purifier", + "laravel5 Security", + "laravel6 HtmlPurifier", + "laravel6 Purifier", + "laravel6 Security", + "security", + "xss" + ], + "support": { + "issues": "https://github.com/mewebstudio/Purifier/issues", + "source": "https://github.com/mewebstudio/Purifier/tree/3.3.7" + }, + "time": "2022-02-12T15:54:11+00:00" }, { "name": "monolog/monolog", @@ -1598,16 +1957,16 @@ }, { "name": "nesbot/carbon", - "version": "2.54.0", + "version": "2.57.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "eed83939f1aed3eee517d03a33f5ec587ac529b5" + "reference": "4a54375c21eea4811dbd1149fe6b246517554e78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/eed83939f1aed3eee517d03a33f5ec587ac529b5", - "reference": "eed83939f1aed3eee517d03a33f5ec587ac529b5", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4a54375c21eea4811dbd1149fe6b246517554e78", + "reference": "4a54375c21eea4811dbd1149fe6b246517554e78", "shasum": "" }, "require": { @@ -1615,7 +1974,7 @@ "php": "^7.1.8 || ^8.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0" + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, "require-dev": { "doctrine/dbal": "^2.0 || ^3.0", @@ -1624,7 +1983,7 @@ "kylekatarnls/multi-tester": "^2.0", "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54", + "phpstan/phpstan": "^0.12.54 || ^1.0", "phpunit/phpunit": "^7.5.20 || ^8.5.14", "squizlabs/php_codesniffer": "^3.4" }, @@ -1676,6 +2035,7 @@ "time" ], "support": { + "docs": "https://carbon.nesbot.com/docs", "issues": "https://github.com/briannesbitt/Carbon/issues", "source": "https://github.com/briannesbitt/Carbon" }, @@ -1689,20 +2049,20 @@ "type": "tidelift" } ], - "time": "2021-11-01T21:22:20+00:00" + "time": "2022-02-13T18:13:33+00:00" }, { "name": "nikic/php-parser", - "version": "v4.13.1", + "version": "v4.13.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd" + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/63a79e8daa781cac14e5195e63ed8ae231dd10fd", - "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", "shasum": "" }, "require": { @@ -1743,22 +2103,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" }, - "time": "2021-11-03T20:52:16+00:00" + "time": "2021-11-30T19:35:32+00:00" }, { "name": "opis/closure", - "version": "3.6.2", + "version": "3.6.3", "source": { "type": "git", "url": "https://github.com/opis/closure.git", - "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6" + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/06e2ebd25f2869e54a306dda991f7db58066f7f6", - "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6", + "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", "shasum": "" }, "require": { @@ -1775,12 +2135,12 @@ } }, "autoload": { - "psr-4": { - "Opis\\Closure\\": "src/" - }, "files": [ "functions.php" - ] + ], + "psr-4": { + "Opis\\Closure\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1808,22 +2168,22 @@ ], "support": { "issues": "https://github.com/opis/closure/issues", - "source": "https://github.com/opis/closure/tree/3.6.2" + "source": "https://github.com/opis/closure/tree/3.6.3" }, - "time": "2021-04-09T13:42:10+00:00" + "time": "2022-01-27T09:35:39+00:00" }, { "name": "phpoption/phpoption", - "version": "1.8.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28" + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/5455cb38aed4523f99977c4a12ef19da4bfe2a28", - "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", "shasum": "" }, "require": { @@ -1831,7 +2191,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.0.20 || ^8.5.19 || ^9.5.8" + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" }, "type": "library", "extra": { @@ -1851,11 +2211,13 @@ "authors": [ { "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" }, { "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "Option Type for PHP", @@ -1867,7 +2229,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.8.0" + "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" }, "funding": [ { @@ -1879,7 +2241,7 @@ "type": "tidelift" } ], - "time": "2021-08-28T21:27:29+00:00" + "time": "2021-12-04T23:24:31+00:00" }, { "name": "psr/container", @@ -2242,29 +2604,32 @@ }, { "name": "psy/psysh", - "version": "v0.10.9", + "version": "v0.11.2", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "01281336c4ae557fe4a994544f30d3a1bc204375" + "reference": "7f7da640d68b9c9fec819caae7c744a213df6514" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/01281336c4ae557fe4a994544f30d3a1bc204375", - "reference": "01281336c4ae557fe4a994544f30d3a1bc204375", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/7f7da640d68b9c9fec819caae7c744a213df6514", + "reference": "7f7da640d68b9c9fec819caae7c744a213df6514", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", - "php": "^8.0 || ^7.0 || ^5.5.9", - "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", - "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.*" + "hoa/console": "3.17.05.02" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -2279,7 +2644,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.10.x-dev" + "dev-main": "0.11.x-dev" } }, "autoload": { @@ -2311,9 +2676,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.10.9" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.2" }, - "time": "2021-10-10T13:37:39+00:00" + "time": "2022-02-28T15:28:54+00:00" }, { "name": "ralouphie/getallheaders", @@ -2503,12 +2868,12 @@ } }, "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, "files": [ "src/functions.php" - ] + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2536,6 +2901,88 @@ ], "time": "2021-09-25T23:10:38+00:00" }, + { + "name": "spatie/laravel-translatable", + "version": "4.6.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-translatable.git", + "reference": "5900d6002a5795712058a04c7ca7c2c44b3e0850" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-translatable/zipball/5900d6002a5795712058a04c7ca7c2c44b3e0850", + "reference": "5900d6002a5795712058a04c7ca7c2c44b3e0850", + "shasum": "" + }, + "require": { + "illuminate/database": "^6.0|^7.0|^8.0", + "illuminate/support": "^6.0|^7.0|^8.0", + "php": "^7.2|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.4", + "orchestra/testbench": "^4.0|^5.0|^6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Translatable\\TranslatableServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\Translatable\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + }, + { + "name": "Sebastian De Deyne", + "email": "sebastian@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + }, + { + "name": "Mohamed Said", + "email": "theMohamedSaid@gmail.com", + "role": "Original idea" + } + ], + "description": "A trait to make an Eloquent model hold translations", + "homepage": "https://github.com/spatie/laravel-translatable", + "keywords": [ + "eloquent", + "i8n", + "laravel-translatable", + "model", + "multilingual", + "spatie", + "translate" + ], + "support": { + "issues": "https://github.com/spatie/laravel-translatable/issues", + "source": "https://github.com/spatie/laravel-translatable/tree/4.6.0" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + } + ], + "time": "2020-11-19T14:19:29+00:00" + }, { "name": "swiftmailer/swiftmailer", "version": "v6.3.0", @@ -2609,30 +3056,31 @@ "type": "tidelift" } ], + "abandoned": "symfony/mailer", "time": "2021-10-18T15:26:12+00:00" }, { "name": "symfony/console", - "version": "v5.3.10", + "version": "v5.4.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3" + "reference": "d8111acc99876953f52fe16d4c50eb60940d49ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3", - "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3", + "url": "https://api.github.com/repos/symfony/console/zipball/d8111acc99876953f52fe16d4c50eb60940d49ad", + "reference": "d8111acc99876953f52fe16d4c50eb60940d49ad", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", @@ -2647,12 +3095,12 @@ }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -2692,7 +3140,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.10" + "source": "https://github.com/symfony/console/tree/v5.4.5" }, "funding": [ { @@ -2708,20 +3156,20 @@ "type": "tidelift" } ], - "time": "2021-10-26T09:30:15+00:00" + "time": "2022-02-24T12:45:35+00:00" }, { "name": "symfony/css-selector", - "version": "v5.3.4", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "7fb120adc7f600a59027775b224c13a33530dd90" + "reference": "b0a190285cd95cb019237851205b8140ef6e368e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90", - "reference": "7fb120adc7f600a59027775b224c13a33530dd90", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", + "reference": "b0a190285cd95cb019237851205b8140ef6e368e", "shasum": "" }, "require": { @@ -2758,7 +3206,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.3.4" + "source": "https://github.com/symfony/css-selector/tree/v5.4.3" }, "funding": [ { @@ -2774,20 +3222,20 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:38:00+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", + "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", "shasum": "" }, "require": { @@ -2796,7 +3244,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -2825,7 +3273,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" }, "funding": [ { @@ -2841,32 +3289,35 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2021-07-12T14:48:14+00:00" }, { "name": "symfony/error-handler", - "version": "v5.3.7", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321" + "reference": "c4ffc2cd919950d13c8c9ce32a70c70214c3ffc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321", - "reference": "3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c4ffc2cd919950d13c8c9ce32a70c70214c3ffc5", + "reference": "c4ffc2cd919950d13c8c9ce32a70c70214c3ffc5", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -2893,7 +3344,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.3.7" + "source": "https://github.com/symfony/error-handler/tree/v5.4.3" }, "funding": [ { @@ -2909,26 +3360,26 @@ "type": "tidelift" } ], - "time": "2021-08-28T15:07:08+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.3.7", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "ce7b20d69c66a20939d8952b617506a44d102130" + "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ce7b20d69c66a20939d8952b617506a44d102130", - "reference": "ce7b20d69c66a20939d8952b617506a44d102130", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dec8a9f58d20df252b9cd89f1c6c1530f747685d", + "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { @@ -2940,13 +3391,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -2978,7 +3429,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.7" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.3" }, "funding": [ { @@ -2994,20 +3445,20 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11" + "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/66bea3b09be61613cd3b4043a65a8ec48cfa6d2a", + "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a", "shasum": "" }, "require": { @@ -3020,7 +3471,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -3057,7 +3508,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.0" }, "funding": [ { @@ -3073,24 +3524,25 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2021-07-12T14:48:14+00:00" }, { "name": "symfony/finder", - "version": "v5.3.7", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93" + "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a10000ada1e600d109a6c7632e9ac42e8bf2fb93", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93", + "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", + "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -3119,7 +3571,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.7" + "source": "https://github.com/symfony/finder/tree/v5.4.3" }, "funding": [ { @@ -3135,111 +3587,33 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-04-11T23:07:08+00:00" + "time": "2022-01-26T16:34:36+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.3.10", + "version": "v5.4.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "9f34f02e8a5fdc7a56bafe011cea1ce97300e54c" + "reference": "34e89bc147633c0f9dd6caaaf56da3b806a21465" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9f34f02e8a5fdc7a56bafe011cea1ce97300e54c", - "reference": "9f34f02e8a5fdc7a56bafe011cea1ce97300e54c", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/34e89bc147633c0f9dd6caaaf56da3b806a21465", + "reference": "34e89bc147633c0f9dd6caaaf56da3b806a21465", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/mime": "To use the file extension guesser" @@ -3270,7 +3644,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.3.10" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.6" }, "funding": [ { @@ -3286,36 +3660,35 @@ "type": "tidelift" } ], - "time": "2021-10-11T15:41:55+00:00" + "time": "2022-03-05T21:03:43+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.3.10", + "version": "v5.4.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "703e4079920468e9522b72cf47fd76ce8d795e86" + "reference": "d41f29ae9af1b5f40c7ebcddf09082953229411d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/703e4079920468e9522b72cf47fd76ce8d795e86", - "reference": "703e4079920468e9522b72cf47fd76ce8d795e86", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d41f29ae9af1b5f40c7ebcddf09082953229411d", + "reference": "d41f29ae9af1b5f40c7ebcddf09082953229411d", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1", - "symfony/error-handler": "^4.4|^5.0", - "symfony/event-dispatcher": "^5.0", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^5.3.7", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.3.7|^6.0", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/browser-kit": "<4.4", + "symfony/browser-kit": "<5.4", "symfony/cache": "<5.0", "symfony/config": "<5.0", "symfony/console": "<4.4", @@ -3335,19 +3708,20 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/config": "^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -3382,7 +3756,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.3.10" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.6" }, "funding": [ { @@ -3398,25 +3772,25 @@ "type": "tidelift" } ], - "time": "2021-10-29T08:36:48+00:00" + "time": "2022-03-05T21:14:51+00:00" }, { "name": "symfony/mime", - "version": "v5.3.8", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "a756033d0a7e53db389618653ae991eba5a19a11" + "reference": "e1503cfb5c9a225350f549d3bb99296f4abfb80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/a756033d0a7e53db389618653ae991eba5a19a11", - "reference": "a756033d0a7e53db389618653ae991eba5a19a11", + "url": "https://api.github.com/repos/symfony/mime/zipball/e1503cfb5c9a225350f549d3bb99296f4abfb80f", + "reference": "e1503cfb5c9a225350f549d3bb99296f4abfb80f", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16" @@ -3430,10 +3804,10 @@ "require-dev": { "egulias/email-validator": "^2.1.10|^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.1", - "symfony/property-info": "^4.4|^5.1", - "symfony/serializer": "^5.2" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.2|^6.0" }, "type": "library", "autoload": { @@ -3465,7 +3839,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.8" + "source": "https://github.com/symfony/mime/tree/v5.4.3" }, "funding": [ { @@ -3481,25 +3855,28 @@ "type": "tidelift" } ], - "time": "2021-09-10T12:30:38+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "reference": "30885182c981ab175d4d034db0f6f469898070ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-ctype": "*" + }, "suggest": { "ext-ctype": "For best performance" }, @@ -3514,12 +3891,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3544,7 +3921,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" }, "funding": [ { @@ -3560,25 +3937,28 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-10-20T20:35:02+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933" + "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/63b5bb7db83e5673936d6e3b8b3e022ff6474933", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40", + "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-iconv": "*" + }, "suggest": { "ext-iconv": "For best performance" }, @@ -3593,12 +3973,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3624,7 +4004,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.25.0" }, "funding": [ { @@ -3640,20 +4020,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2022-01-04T09:04:05+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", "shasum": "" }, "require": { @@ -3673,12 +4053,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3705,7 +4085,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" }, "funding": [ { @@ -3721,20 +4101,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2021-11-23T21:10:46+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "reference": "749045c69efb97c70d25d7463abba812e91f3a44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44", "shasum": "" }, "require": { @@ -3756,12 +4136,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3792,7 +4172,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" }, "funding": [ { @@ -3808,11 +4188,11 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2021-09-14T14:02:44+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -3841,12 +4221,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -3876,7 +4256,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" }, "funding": [ { @@ -3896,21 +4276,24 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, "suggest": { "ext-mbstring": "For best performance" }, @@ -3925,12 +4308,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3956,7 +4339,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" }, "funding": [ { @@ -3972,11 +4355,11 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2021-11-30T18:21:41+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", @@ -4002,12 +4385,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4032,7 +4415,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" }, "funding": [ { @@ -4052,16 +4435,16 @@ }, { "name": "symfony/polyfill-php73", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", "shasum": "" }, "require": { @@ -4078,12 +4461,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -4111,7 +4494,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" }, "funding": [ { @@ -4127,20 +4510,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-06-05T21:20:04+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.23.1", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", "shasum": "" }, "require": { @@ -4157,12 +4540,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -4194,7 +4577,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" }, "funding": [ { @@ -4210,20 +4593,20 @@ "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2022-03-04T08:16:47+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", "shasum": "" }, "require": { @@ -4240,12 +4623,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -4273,7 +4656,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" }, "funding": [ { @@ -4289,20 +4672,20 @@ "type": "tidelift" } ], - "time": "2021-05-21T13:25:03+00:00" + "time": "2021-09-13T13:58:11+00:00" }, { "name": "symfony/process", - "version": "v5.3.7", + "version": "v5.4.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967" + "reference": "95440409896f90a5f85db07a32b517ecec17fa4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/38f26c7d6ed535217ea393e05634cb0b244a1967", - "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967", + "url": "https://api.github.com/repos/symfony/process/zipball/95440409896f90a5f85db07a32b517ecec17fa4c", + "reference": "95440409896f90a5f85db07a32b517ecec17fa4c", "shasum": "" }, "require": { @@ -4335,7 +4718,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.3.7" + "source": "https://github.com/symfony/process/tree/v5.4.5" }, "funding": [ { @@ -4351,25 +4734,25 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2022-01-30T18:16:22+00:00" }, { "name": "symfony/routing", - "version": "v5.3.7", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "be865017746fe869007d94220ad3f5297951811b" + "reference": "44b29c7a94e867ccde1da604792f11a469958981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/be865017746fe869007d94220ad3f5297951811b", - "reference": "be865017746fe869007d94220ad3f5297951811b", + "url": "https://api.github.com/repos/symfony/routing/zipball/44b29c7a94e867ccde1da604792f11a469958981", + "reference": "44b29c7a94e867ccde1da604792f11a469958981", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { @@ -4381,11 +4764,11 @@ "require-dev": { "doctrine/annotations": "^1.12", "psr/log": "^1|^2|^3", - "symfony/config": "^5.3", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/config": "For using the all-in-one router or any loader", @@ -4425,7 +4808,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.3.7" + "source": "https://github.com/symfony/routing/tree/v5.4.3" }, "funding": [ { @@ -4441,25 +4824,29 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:42:42+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/container": "^1.1" + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -4467,7 +4854,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4504,7 +4891,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" }, "funding": [ { @@ -4520,20 +4907,20 @@ "type": "tidelift" } ], - "time": "2021-04-01T10:43:52+00:00" + "time": "2021-11-04T16:48:04+00:00" }, { "name": "symfony/string", - "version": "v5.3.10", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c" + "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", + "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", + "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", "shasum": "" }, "require": { @@ -4544,20 +4931,23 @@ "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "~1.15" }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -4587,7 +4977,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.10" + "source": "https://github.com/symfony/string/tree/v5.4.3" }, "funding": [ { @@ -4603,31 +4993,32 @@ "type": "tidelift" } ], - "time": "2021-10-27T18:21:46+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/translation", - "version": "v5.3.10", + "version": "v5.4.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "6ef197aea2ac8b9cd63e0da7522b3771714035aa" + "reference": "a7ca9fdfffb0174209440c2ffa1dee228e15d95b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/6ef197aea2ac8b9cd63e0da7522b3771714035aa", - "reference": "6ef197aea2ac8b9cd63e0da7522b3771714035aa", + "url": "https://api.github.com/repos/symfony/translation/zipball/a7ca9fdfffb0174209440c2ffa1dee228e15d95b", + "reference": "a7ca9fdfffb0174209440c2ffa1dee228e15d95b", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation-contracts": "^2.3" }, "conflict": { "symfony/config": "<4.4", + "symfony/console": "<5.3", "symfony/dependency-injection": "<5.0", "symfony/http-kernel": "<5.0", "symfony/twig-bundle": "<5.0", @@ -4638,15 +5029,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/intl": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^4.4|^5.0" + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -4682,7 +5074,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.3.10" + "source": "https://github.com/symfony/translation/tree/v5.4.6" }, "funding": [ { @@ -4698,20 +5090,20 @@ "type": "tidelift" } ], - "time": "2021-10-10T06:43:24+00:00" + "time": "2022-03-02T12:56:28+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95" + "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e", + "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e", "shasum": "" }, "require": { @@ -4723,7 +5115,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4760,7 +5152,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0" }, "funding": [ { @@ -4776,20 +5168,20 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2021-08-17T14:20:01+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.3.10", + "version": "v5.4.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "875432adb5f5570fff21036fd22aee244636b7d1" + "reference": "294e9da6e2e0dd404e983daa5aa74253d92c05d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/875432adb5f5570fff21036fd22aee244636b7d1", - "reference": "875432adb5f5570fff21036fd22aee244636b7d1", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/294e9da6e2e0dd404e983daa5aa74253d92c05d0", + "reference": "294e9da6e2e0dd404e983daa5aa74253d92c05d0", "shasum": "" }, "require": { @@ -4803,8 +5195,9 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -4848,7 +5241,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.10" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.6" }, "funding": [ { @@ -4864,30 +5257,30 @@ "type": "tidelift" } ], - "time": "2021-10-26T09:30:15+00:00" + "time": "2022-03-02T12:42:23+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.3", + "version": "2.2.4", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5" + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/b43b05cf43c1b6d849478965062b6ef73e223bb5", - "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" }, "type": "library", "extra": { @@ -4915,22 +5308,22 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.3" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" }, - "time": "2020-07-13T06:12:54+00:00" + "time": "2021-12-08T09:12:39+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.3.1", + "version": "v5.4.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "accaddf133651d4b5cf81a119f25296736ffc850" + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/accaddf133651d4b5cf81a119f25296736ffc850", - "reference": "accaddf133651d4b5cf81a119f25296736ffc850", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", "shasum": "" }, "require": { @@ -4953,7 +5346,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.3-dev" + "dev-master": "5.4-dev" } }, "autoload": { @@ -4968,11 +5361,13 @@ "authors": [ { "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { "name": "Vance Lucas", - "email": "vance@vancelucas.com" + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -4983,7 +5378,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.3.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" }, "funding": [ { @@ -4995,20 +5390,20 @@ "type": "tidelift" } ], - "time": "2021-10-02T19:24:42+00:00" + "time": "2021-12-12T23:22:04+00:00" }, { "name": "voku/portable-ascii", - "version": "1.5.6", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/voku/portable-ascii.git", - "reference": "80953678b19901e5165c56752d087fc11526017c" + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/80953678b19901e5165c56752d087fc11526017c", - "reference": "80953678b19901e5165c56752d087fc11526017c", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", "shasum": "" }, "require": { @@ -5045,7 +5440,7 @@ ], "support": { "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/1.5.6" + "source": "https://github.com/voku/portable-ascii/tree/1.6.1" }, "funding": [ { @@ -5069,7 +5464,7 @@ "type": "tidelift" } ], - "time": "2020-11-12T00:07:28+00:00" + "time": "2022-01-24T18:55:24+00:00" }, { "name": "webmozart/assert", @@ -5132,30 +5527,106 @@ ], "packages-dev": [ { - "name": "doctrine/instantiator", - "version": "1.4.0", + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v0.7.2", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + }, + "time": "2022-02-04T12:51:07+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -5182,7 +5653,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -5198,7 +5669,7 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "facade/flare-client-php", @@ -5234,12 +5705,12 @@ } }, "autoload": { - "psr-4": { - "Facade\\FlareClient\\": "src" - }, "files": [ "src/helpers.php" - ] + ], + "psr-4": { + "Facade\\FlareClient\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5267,16 +5738,16 @@ }, { "name": "facade/ignition", - "version": "2.16.0", + "version": "2.17.5", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "23400e6cc565c9dcae2c53704b4de1c4870c0697" + "reference": "1d71996f83c9a5a7807331b8986ac890352b7a0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/23400e6cc565c9dcae2c53704b4de1c4870c0697", - "reference": "23400e6cc565c9dcae2c53704b4de1c4870c0697", + "url": "https://api.github.com/repos/facade/ignition/zipball/1d71996f83c9a5a7807331b8986ac890352b7a0c", + "reference": "1d71996f83c9a5a7807331b8986ac890352b7a0c", "shasum": "" }, "require": { @@ -5293,6 +5764,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.14", + "livewire/livewire": "^2.4", "mockery/mockery": "^1.3", "orchestra/testbench": "^5.0|^6.0", "psalm/plugin-laravel": "^1.2" @@ -5315,12 +5787,12 @@ } }, "autoload": { - "psr-4": { - "Facade\\Ignition\\": "src" - }, "files": [ "src/helpers.php" - ] + ], + "psr-4": { + "Facade\\Ignition\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5340,7 +5812,7 @@ "issues": "https://github.com/facade/ignition/issues", "source": "https://github.com/facade/ignition" }, - "time": "2021-10-28T11:47:23+00:00" + "time": "2022-02-23T18:31:24+00:00" }, { "name": "facade/ignition-contracts", @@ -5397,32 +5869,34 @@ }, { "name": "fakerphp/faker", - "version": "v1.16.0", + "version": "v1.19.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "271d384d216e5e5c468a6b28feedf95d49f83b35" + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/271d384d216e5e5c468a6b28feedf95d49f83b35", - "reference": "271d384d216e5e5c468a6b28feedf95d49f83b35", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", "shasum": "" }, "require": { "php": "^7.1 || ^8.0", "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2" + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "conflict": { "fzaninotto/faker": "*" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", "symfony/phpunit-bridge": "^4.4 || ^5.2" }, "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", "ext-curl": "Required by Faker\\Provider\\Image to download images.", "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", @@ -5431,7 +5905,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.16-dev" + "dev-main": "v1.19-dev" } }, "autoload": { @@ -5456,22 +5930,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.16.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" }, - "time": "2021-09-06T14:53:37+00:00" + "time": "2022-02-02T17:38:57+00:00" }, { "name": "filp/whoops", - "version": "2.14.4", + "version": "2.14.5", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "f056f1fe935d9ed86e698905a957334029899895" + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/f056f1fe935d9ed86e698905a957334029899895", - "reference": "f056f1fe935d9ed86e698905a957334029899895", + "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", "shasum": "" }, "require": { @@ -5521,7 +5995,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.4" + "source": "https://github.com/filp/whoops/tree/2.14.5" }, "funding": [ { @@ -5529,7 +6003,7 @@ "type": "github" } ], - "time": "2021-10-03T12:00:00+00:00" + "time": "2022-01-07T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -5584,16 +6058,16 @@ }, { "name": "laravel/sail", - "version": "v1.12.3", + "version": "v1.13.6", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "f335277677188b79d12f4caad88577cf76e54dfa" + "reference": "6205041336b09b965af1d6af29261584e787bf52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/f335277677188b79d12f4caad88577cf76e54dfa", - "reference": "f335277677188b79d12f4caad88577cf76e54dfa", + "url": "https://api.github.com/repos/laravel/sail/zipball/6205041336b09b965af1d6af29261584e787bf52", + "reference": "6205041336b09b965af1d6af29261584e787bf52", "shasum": "" }, "require": { @@ -5640,20 +6114,20 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2021-11-05T13:35:24+00:00" + "time": "2022-03-07T15:35:47+00:00" }, { "name": "mockery/mockery", - "version": "1.4.4", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346" + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/e01123a0e847d52d186c5eb4b9bf58b0c6d00346", - "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346", + "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", "shasum": "" }, "require": { @@ -5710,43 +6184,44 @@ ], "support": { "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.4.4" + "source": "https://github.com/mockery/mockery/tree/1.5.0" }, - "time": "2021-09-13T15:28:59+00:00" + "time": "2022-01-20T13:18:17+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5762,7 +6237,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -5770,20 +6245,20 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nunomaduro/collision", - "version": "v5.10.0", + "version": "v5.11.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00" + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/3004cfa49c022183395eabc6d0e5207dfe498d00", - "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", "shasum": "" }, "require": { @@ -5845,7 +6320,7 @@ }, "funding": [ { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "url": "https://www.paypal.com/paypalme/enunomaduro", "type": "custom" }, { @@ -5857,7 +6332,7 @@ "type": "patreon" } ], - "time": "2021-09-20T15:06:32+00:00" + "time": "2022-01-10T16:22:52+00:00" }, { "name": "phar-io/manifest", @@ -5921,16 +6396,16 @@ }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -5966,9 +6441,9 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -6082,16 +6557,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.5.1", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" + "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", + "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", "shasum": "" }, "require": { @@ -6126,22 +6601,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0" }, - "time": "2021-10-02T14:08:47+00:00" + "time": "2022-01-04T19:58:01+00:00" }, { "name": "phpspec/prophecy", - "version": "1.14.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { @@ -6193,22 +6668,71 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.14.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" }, - "time": "2021-09-10T09:02:12+00:00" + "time": "2021-12-08T12:19:24+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "9.2.8", + "name": "phpstan/phpdoc-parser", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "dbc093d7af60eff5cd575d2ed761b15ed40bd08e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/cf04e88a2e3c56fc1a65488afd493325b4c1bc3e", - "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/dbc093d7af60eff5cd575d2ed761b15ed40bd08e", + "reference": "dbc093d7af60eff5cd575d2ed761b15ed40bd08e", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.2.0" + }, + "time": "2021-09-16T20:46:02+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", "shasum": "" }, "require": { @@ -6264,7 +6788,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.8" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" }, "funding": [ { @@ -6272,20 +6796,20 @@ "type": "github" } ], - "time": "2021-10-30T08:01:38+00:00" + "time": "2022-03-07T09:28:20+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -6324,7 +6848,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -6332,7 +6856,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -6517,16 +7041,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.10", + "version": "9.5.18", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a" + "reference": "1b5856028273bfd855e60a887278857d872ec67a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a", - "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1b5856028273bfd855e60a887278857d872ec67a", + "reference": "1b5856028273bfd855e60a887278857d872ec67a", "shasum": "" }, "require": { @@ -6542,7 +7066,7 @@ "phar-io/version": "^3.0.2", "php": ">=7.3", "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -6577,11 +7101,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6604,11 +7128,11 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.18" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { @@ -6616,7 +7140,7 @@ "type": "github" } ], - "time": "2021-09-25T07:38:51+00:00" + "time": "2022-03-08T06:52:28+00:00" }, { "name": "sebastian/cli-parser", @@ -7047,16 +7571,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { @@ -7105,14 +7629,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { @@ -7120,20 +7644,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -7176,7 +7700,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -7184,7 +7708,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -7582,6 +8106,123 @@ ], "time": "2020-09-28T06:39:44+00:00" }, + { + "name": "slevomat/coding-standard", + "version": "7.0.19", + "source": { + "type": "git", + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "bef66a43815bbf9b5f49775e9ded3f7c6ba0cc37" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/bef66a43815bbf9b5f49775e9ded3f7c6ba0cc37", + "reference": "bef66a43815bbf9b5f49775e9ded3f7c6ba0cc37", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "php": "^7.1 || ^8.0", + "phpstan/phpdoc-parser": "^1.0.0", + "squizlabs/php_codesniffer": "^3.6.2" + }, + "require-dev": { + "phing/phing": "2.17.2", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.4.6", + "phpstan/phpstan-deprecation-rules": "1.0.0", + "phpstan/phpstan-phpunit": "1.0.0", + "phpstan/phpstan-strict-rules": "1.1.0", + "phpunit/phpunit": "7.5.20|8.5.21|9.5.16" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "support": { + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/7.0.19" + }, + "funding": [ + { + "url": "https://github.com/kukulich", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" + } + ], + "time": "2022-03-01T18:01:41+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.6.2", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2021-12-12T21:44:58+00:00" + }, { "name": "theseer/tokenizer", "version": "1.2.1", @@ -7642,5 +8283,5 @@ "php": "^7.3|^8.0" }, "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.3.0" } diff --git a/config/app.php b/config/app.php index c9b8f5a..e1f87fb 100644 --- a/config/app.php +++ b/config/app.php @@ -67,7 +67,7 @@ return [ | */ - 'timezone' => 'UTC', + 'timezone' => 'Europe/Paris', /* |-------------------------------------------------------------------------- @@ -80,7 +80,7 @@ return [ | */ - 'locale' => 'en', + 'locale' => 'fr', /* |-------------------------------------------------------------------------- @@ -93,7 +93,7 @@ return [ | */ - 'fallback_locale' => 'en', + 'fallback_locale' => 'fr', /* |-------------------------------------------------------------------------- @@ -106,7 +106,7 @@ return [ | */ - 'faker_locale' => 'en_US', + 'faker_locale' => 'fr_FR', /* |-------------------------------------------------------------------------- @@ -229,6 +229,9 @@ return [ 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, + // Enums + 'Page' => \App\Enums\Page::class, + ], ]; diff --git a/config/bo.php b/config/bo.php new file mode 100644 index 0000000..4d21217 --- /dev/null +++ b/config/bo.php @@ -0,0 +1,38 @@ + '1920', + 'slide_image_maxheight' => '812', + + 'encart_image_maxwidth' => '642', + 'encart_image_maxheight' => '556', + + 'picto_image_maxwidth' => '150', + 'picto_image_maxheight' => '150', + + 'advice_image_maxwidth' => '284', + 'advice_image_maxheight' => '284', + + 'post_home_image_maxwidth' => '1030', + 'post_home_image_maxheight' => '239', + 'post_news_image_maxwidth' => '380', + 'post_news_image_maxheight' => '298', + + 'gamme_image_maxwidth' => '575', + 'gamme_image_maxheight' => '375', + 'gamme_banner_maxwidth' => '1920', + 'gamme_banner_maxheight' => '568', + + 'product_image_maxwidth' => '509', + 'product_image_maxheight' => '509', + +]; diff --git a/config/exception-handler.php b/config/exception-handler.php new file mode 100644 index 0000000..367b948 --- /dev/null +++ b/config/exception-handler.php @@ -0,0 +1,15 @@ + !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')) +]; diff --git a/config/mail.php b/config/mail.php index e860749..2524386 100644 --- a/config/mail.php +++ b/config/mail.php @@ -96,6 +96,11 @@ return [ 'name' => env('MAIL_FROM_NAME', 'Example'), ], + // Contacts List + 'contactsList' => [ + 'contactform' => explode(",", env('MAIL_LIST_CONTACTFORM', 'equipe.web@ldc.fr')) + ], + /* |-------------------------------------------------------------------------- | Markdown Mail Settings diff --git a/config/purifier.php b/config/purifier.php new file mode 100644 index 0000000..0cf6303 --- /dev/null +++ b/config/purifier.php @@ -0,0 +1,114 @@ +set('Core.Encoding', $this->config->get('purifier.encoding')); + * $config->set('Cache.SerializerPath', $this->config->get('purifier.cachePath')); + * if ( ! $this->config->get('purifier.finalize')) { + * $config->autoFinalize = false; + * } + * $config->loadArray($this->getConfig()); + * + * You must NOT delete the default settings + * anything in settings should be compacted with params that needed to instance HTMLPurifier_Config. + * + * @link http://htmlpurifier.org/live/configdoc/plain.html + */ + +// phpcs:disable Generic.Files.LineLength.TooLong +return [ + 'encoding' => 'UTF-8', + 'finalize' => true, + 'cachePath' => storage_path('app/purifier'), + 'cacheFileMode' => 0755, + 'settings' => [ + 'default' => [ + 'HTML.SafeIframe' => true, // For iframes + 'URI.SafeIframeRegexp' => "%^(http://|https://|//)(vimeo.com)%", + 'HTML.Doctype' => 'HTML 4.01 Transitional', + 'HTML.Allowed' => 'h1[style],h2[style],h3[style],h4[style],h5[style],h6[style],figure[class],oembed[url],div,b,strong,i,em,u,a[href|title],ul[style],ol[style],dl[style],li,p[style],br,span[style|class],img[width|height|alt|src],iframe[src|width|height|class|frameborder],table,thead,tbody,th,tr,td,hr', + 'CSS.AllowedProperties' => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align,list-style-type', + 'AutoFormat.AutoParagraph' => false, + 'AutoFormat.RemoveEmpty' => false, + 'AutoFormat.RemoveEmpty.RemoveNbsp' => false, + ], + "youtube" => [ + "HTML.SafeIframe" => 'true', + "URI.SafeIframeRegexp" => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/|vimeo.com/)%", + ], + 'custom_definition' => [ + 'id' => 'html5-definitions', + 'rev' => 1, + 'debug' => true, + 'elements' => [ + // http://developers.whatwg.org/sections.html + ['section', 'Block', 'Flow', 'Common'], + ['nav', 'Block', 'Flow', 'Common'], + ['article', 'Block', 'Flow', 'Common'], + ['aside', 'Block', 'Flow', 'Common'], + ['header', 'Block', 'Flow', 'Common'], + ['footer', 'Block', 'Flow', 'Common'], + + // Content model actually excludes several tags, not modelled here + ['address', 'Block', 'Flow', 'Common'], + ['hgroup', 'Block', 'Required: h1 | h2 | h3 | h4 | h5 | h6', 'Common'], + + // http://developers.whatwg.org/grouping-content.html + ['figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common'], + ['figcaption', 'Inline', 'Flow', 'Common'], + ['oembed', 'Inline', 'Flow', 'Common'], + + // http://developers.whatwg.org/the-video-element.html#the-video-element + ['video', 'Block', 'Optional: (source, Flow) | (Flow, source) | Flow', 'Common', [ + 'src' => 'URI', + 'type' => 'Text', + 'width' => 'Length', + 'height' => 'Length', + 'poster' => 'URI', + 'preload' => 'Enum#auto,metadata,none', + 'controls' => 'Bool', + ]], + ['source', 'Block', 'Flow', 'Common', [ + 'src' => 'URI', + 'type' => 'Text', + ]], + + // http://developers.whatwg.org/text-level-semantics.html + ['s', 'Inline', 'Inline', 'Common'], + ['var', 'Inline', 'Inline', 'Common'], + ['sub', 'Inline', 'Inline', 'Common'], + ['sup', 'Inline', 'Inline', 'Common'], + ['mark', 'Inline', 'Inline', 'Common'], + ['wbr', 'Inline', 'Empty', 'Core'], + + // http://developers.whatwg.org/edits.html + ['ins', 'Block', 'Flow', 'Common', ['cite' => 'URI', 'datetime' => 'CDATA']], + ['del', 'Block', 'Flow', 'Common', ['cite' => 'URI', 'datetime' => 'CDATA']], + ], + 'attributes' => [ + ['iframe', 'allowfullscreen', 'Bool'], + ['table', 'height', 'Text'], + ['td', 'border', 'Text'], + ['th', 'border', 'Text'], + ['tr', 'width', 'Text'], + ['tr', 'height', 'Text'], + ['tr', 'border', 'Text'], + ['figure', 'class', 'Text'], + ['oembed', 'url', 'Text'], + ['span', 'style', 'Text'], + ], + ], + 'custom_attributes' => [ + ['a', 'target', 'Enum#_blank,_self,_target,_top'], + ['ol', 'style', 'Text'], + ['oembed', 'url', 'Text'], + ], + 'custom_elements' => [ + ['u', 'Inline', 'Inline', 'Common'], + ['oembed', 'Inline', 'Inline', 'Common'], + ], + ], + +]; diff --git a/config/translation.php b/config/translation.php new file mode 100644 index 0000000..ba0ac12 --- /dev/null +++ b/config/translation.php @@ -0,0 +1,85 @@ + 'file', + + /* + |-------------------------------------------------------------------------- + | Route group configuration + |-------------------------------------------------------------------------- + | + | The package ships with routes to handle language management. Update the + | configuration here to configure the routes with your preferred group options. + | + */ + 'route_group_config' => [ + 'middleware' => [ + 'web', + 'auth:web', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Translation methods + |-------------------------------------------------------------------------- + | + | Update this array to tell the package which methods it should look for + | when finding missing translations. + | + */ + 'translation_methods' => ['trans', '__'], + + /* + |-------------------------------------------------------------------------- + | Scan paths + |-------------------------------------------------------------------------- + | + | Update this array to tell the package which directories to scan when + | looking for missing translations. + | + */ + 'scan_paths' => [ + //app_path(), + //resource_path().'\views\back', + resource_path().'/views/front', + resource_path().'/views/layouts/frontend', + ], + + /* + |-------------------------------------------------------------------------- + | UI URL + |-------------------------------------------------------------------------- + | + | Define the URL used to access the language management too. + | + */ + 'ui_url' => 'bo/languages', + + /* + |-------------------------------------------------------------------------- + | Database settings + |-------------------------------------------------------------------------- + | + | Define the settings for the database driver here. + | + */ + 'database' => [ + + 'connection' => '', + + 'languages_table' => 'languages', + + 'translations_table' => 'translations', + ], +]; diff --git a/database/factories/AdviceFactory.php b/database/factories/AdviceFactory.php new file mode 100644 index 0000000..ec44bf1 --- /dev/null +++ b/database/factories/AdviceFactory.php @@ -0,0 +1,45 @@ +getTable()); + + return [ + 'title1' => $this->faker->text(40), + 'title2' => $this->faker->text(40), + 'picture1' => $imgpath, + 'alt_text_picture1' => $this->faker->sentence(10), + 'picture2' => $imgpath, + 'alt_text_picture2' => $this->faker->sentence(10), + 'picture3' => $imgpath, + 'alt_text_picture3' => $this->faker->sentence(10), + 'text1' => $this->faker->paragraph(10), + 'text2' => $this->faker->paragraph(10), + ]; + } +} diff --git a/database/factories/EncartFactory.php b/database/factories/EncartFactory.php new file mode 100644 index 0000000..6ba1d58 --- /dev/null +++ b/database/factories/EncartFactory.php @@ -0,0 +1,40 @@ +getTable()); + + return [ + 'title' => $this->faker->text(5), + 'subtitle' => $this->faker->sentence(7, false), + 'text' => $this->faker->paragraph(10, false), + 'picture' => $imgpath, + 'alt_text_picture' => $this->faker->sentence(10), + ]; + } +} diff --git a/database/factories/GammeFactory.php b/database/factories/GammeFactory.php new file mode 100644 index 0000000..2b9d439 --- /dev/null +++ b/database/factories/GammeFactory.php @@ -0,0 +1,40 @@ +faker->text(10) . rand(1, 100); + + $upload = new SplFileInfo(resource_path('assets/images/cookrange.jpg')); + $picture = new Gamme(); + $imgpath = Utils::storeImage($upload, $picture->getTable()); + $upload = new SplFileInfo(resource_path('assets/images/entete_sous_gammes.jpg')); + $bannerpath = Utils::storeImage($upload, $picture->getTable()); + + return [ + 'parent_gamme_id' => null, + 'title' => $title, + 'slug' => Str::slug($title), + 'text' => $this->faker->text(5), + 'color' => $this->faker->hexColor(), + 'picture' => $imgpath, + 'alt_text_picture' => $this->faker->sentence(10), + 'banner' => $bannerpath, + 'alt_text_banner' => $this->faker->sentence(10), + ]; + } +} diff --git a/database/factories/MomentFactory.php b/database/factories/MomentFactory.php new file mode 100644 index 0000000..18137a6 --- /dev/null +++ b/database/factories/MomentFactory.php @@ -0,0 +1,34 @@ + $this->faker->text(5), + 'subtitle' => $this->faker->sentence(7, false), + 'text' => $this->faker->paragraph(10, false), + 'picture' => new SplFileInfo(resource_path('assets/images/prez-img.jpg')), + 'alt_text_picture' => $this->faker->sentence(10), + ]; + } +} diff --git a/database/factories/PictoBrandFactory.php b/database/factories/PictoBrandFactory.php new file mode 100644 index 0000000..e1634a3 --- /dev/null +++ b/database/factories/PictoBrandFactory.php @@ -0,0 +1,39 @@ +getTable()); + + return [ + 'title' => $this->faker->randomNumber(3, false), + 'picture' => $imgpath, + 'alt_text_picture' => $this->faker->sentence(10), + 'text' => $this->faker->text(20), + ]; + } +} diff --git a/database/factories/PictoFactory.php b/database/factories/PictoFactory.php new file mode 100644 index 0000000..d35ebb4 --- /dev/null +++ b/database/factories/PictoFactory.php @@ -0,0 +1,37 @@ +getTable()); + + return [ + 'picture' => $imgpath, + 'alt_text_picture' => $this->faker->sentence(10), + 'text' => $this->faker->text(10), + ]; + } +} diff --git a/database/factories/PostFactory.php b/database/factories/PostFactory.php new file mode 100644 index 0000000..498773d --- /dev/null +++ b/database/factories/PostFactory.php @@ -0,0 +1,39 @@ +getTable()); + $upload = new SplFileInfo(resource_path('assets/images/burger.jpg')); + $imgnewspath = Utils::storeImage($upload, $picture->getTable()); + + return [ + 'title' => $this->faker->text(5), + 'text' => $this->faker->paragraph(10, false), + 'picture_home' => $imghomepath, + 'alt_text_picture_home' => $this->faker->sentence(10), + 'picture_news' => $imgnewspath, + 'alt_text_picture_news' => $this->faker->sentence(10), + 'date_start' => Carbon::now(), + 'date_end' => Carbon::now()->addDays(2), + 'on_top' => true + ]; + } +} diff --git a/database/factories/ProductFactory.php b/database/factories/ProductFactory.php new file mode 100644 index 0000000..ae4fecf --- /dev/null +++ b/database/factories/ProductFactory.php @@ -0,0 +1,140 @@ +faker->text(10) . rand(1, 100); + $tabFour = array( + 'id' => 0, + 'name' => 'Four', + 'url' => '/assets/images/four.png', + 'time' => '1h30mins.', + 'temp' => '200°C', + 'status' => true + ); + $tabFriteuse = array( + 'id' => 1, + 'name' => 'Friteuse', + 'url' => '/assets/images/friteuse.png', + 'time' => '15 minutes', + 'temp' => '100°C', + 'status' => true + ); + $tabPoele = array( + 'id' => 2, + 'name' => 'Poêle', + 'url' => '/assets/images/poele.png', + 'time' => '5 minutes sur chaque face', + 'temp' => '100°C', + 'status' => false + ); + $tabCocotte = array( + 'id' => 3, + 'name' => 'Cocotte', + 'url' => '/assets/images/cocotte.png', + 'time' => '3 h', + 'temp' => '80°C', + 'status' => true + ); + $tabPlancha = array( + 'id' => 4, + 'name' => 'Plancha', + 'url' => '/assets/images/plancha.png', + 'time' => '20mins', + 'temp' => '130°C', + 'status' => false + ); + $tabBainMarie = array( + 'id' => 5, + 'name' => 'Bain Marie', + 'url' => '/assets/images/bainmarie.png', + 'time' => '30 mins à 45 mins', + 'temp' => '80°C', + 'status' => false + ); + $tabBarbecue = array( + 'id' => 6, + 'name' => 'Barbecue', + 'url' => '/assets/images/barbecue.png', + 'time' => '30 minutes', + 'temp' => '200°C', + 'status' => false + ); + $tabMicroOndes = array( + 'id' => 7, + 'name' => 'Micro Ondes', + 'url' => '/assets/images/microondes.png', + 'time' => '3mins', + 'temp' => '900 Watts', + 'status' => false + ); + $tabCasserole = array( + 'id' => 8, + 'name' => 'Casserole', + 'url' => '/assets/images/casserole.png', + 'time' => '10mins', + 'temp' => '90°C', + 'status' => false + ); + $tabPlusProduit1 = array( + 'id' => 0, + 'name' => 'Lorem ipsum set doloris', + 'url' => '/assets/images/sans-label.jpg', + ); + $tabPlusProduit2 = array( + 'id' => 1, + 'name' => 'Lorem ipsum set doloris', + 'url' => '/assets/images/sans-label.jpg', + ); + $tabPlusProduit3 = array( + 'id' => 2, + 'name' => 'Lorem ipsum set doloris', + 'url' => '/assets/images/sans-label.jpg', + ); + + $upload = new SplFileInfo(resource_path('assets/images/product_sample_01.png')); + $picture = new Product(); + $imgpath = Utils::storeImage($upload, $picture->getTable()); + + return [ + 'name' => $name, + 'slug' => Str::slug($name), + 'description' => $this->faker->paragraph(), + 'picture' => $imgpath, + 'alt_text_picture' => $this->faker->sentence(10), + 'pictos' => json_encode([ + 'four' => $tabFour, + 'friteuse' => $tabFriteuse, + 'poele' => $tabPoele, + 'cocotte' => $tabCocotte, + 'plancha' => $tabPlancha, + 'bainmarie' => $tabBainMarie, + 'barbecue' => $tabBarbecue, + 'microondes' => $tabMicroOndes, + 'casserole' => $tabCasserole + ]), + 'plusproduit' => json_encode([$tabPlusProduit1, $tabPlusProduit2, $tabPlusProduit3]), + 'is_published' => true, + 'is_on_top' => rand(true, false), + 'is_news' => rand(true, false), + 'is_food_service' => rand(true, false), + 'is_halal' => rand(true, false), + 'seo_title' => $this->faker->text(5), + 'seo_description' => $this->faker->sentence(20), + ]; + } +} diff --git a/database/factories/SlideFactory.php b/database/factories/SlideFactory.php new file mode 100644 index 0000000..94f0ac7 --- /dev/null +++ b/database/factories/SlideFactory.php @@ -0,0 +1,45 @@ +getTable()); + + return [ + 'title' => $this->faker->unique()->word(), + 'text' => $this->faker->realText(25), + 'link_label' => $this->faker->text(128), + 'link' => route('wasup'), + 'link_new_tab' => rand(0, 1), + 'date_start' => Carbon::now(), + 'date_end' => Carbon::now()->addDays(2), + 'picture' => $imgpath, + 'alt_text_picture' => $this->faker->sentence(10), + ]; + } +} diff --git a/database/factories/SliderFactory.php b/database/factories/SliderFactory.php new file mode 100644 index 0000000..b00e373 --- /dev/null +++ b/database/factories/SliderFactory.php @@ -0,0 +1,35 @@ +faker->unique()->word(); + + return [ + 'label' => $label, + 'slug' => Str::slug($label), + 'commentaire' => $this->faker->realText(50), + 'published' => true + ]; + } +} diff --git a/database/factories/TextFactory.php b/database/factories/TextFactory.php new file mode 100644 index 0000000..4e205f1 --- /dev/null +++ b/database/factories/TextFactory.php @@ -0,0 +1,30 @@ + $this->faker->text(5), + 'text' => $this->faker->paragraph(10), + ]; + } +} diff --git a/database/factories/TitleFactory.php b/database/factories/TitleFactory.php new file mode 100644 index 0000000..d31086c --- /dev/null +++ b/database/factories/TitleFactory.php @@ -0,0 +1,30 @@ + $this->faker->text(5), + 'text' => $this->faker->sentence(20), + ]; + } +} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index a24ce53..f4d1116 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -8,6 +8,7 @@ use Illuminate\Support\Str; class UserFactory extends Factory { + /** * The name of the factory's corresponding model. * diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 621a24e..cffa33c 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -15,9 +15,9 @@ class CreateUsersTable extends Migration { Schema::create('users', function (Blueprint $table) { $table->id(); + $table->smallInteger('role'); $table->string('name'); $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); diff --git a/database/migrations/2021_04_14_115938_create_encarts_table.php b/database/migrations/2021_04_14_115938_create_encarts_table.php new file mode 100644 index 0000000..32db9c7 --- /dev/null +++ b/database/migrations/2021_04_14_115938_create_encarts_table.php @@ -0,0 +1,37 @@ +id(); + $table->smallInteger('page'); + $table->text('title'); + $table->text('subtitle'); + $table->text('text'); + $table->text('picture')->nullable(); + $table->text('alt_text_picture')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('encarts'); + } +} diff --git a/database/migrations/2021_04_14_115938_create_sliders_table.php b/database/migrations/2021_04_14_115938_create_sliders_table.php new file mode 100644 index 0000000..65132c5 --- /dev/null +++ b/database/migrations/2021_04_14_115938_create_sliders_table.php @@ -0,0 +1,35 @@ +id(); + $table->text('label'); + $table->string('slug')->unique(); + $table->text('commentaire')->nullable(); + $table->boolean('published')->default(false); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('sliders'); + } +} diff --git a/database/migrations/2021_04_14_115954_create_slides_table.php b/database/migrations/2021_04_14_115954_create_slides_table.php new file mode 100644 index 0000000..45fdf3d --- /dev/null +++ b/database/migrations/2021_04_14_115954_create_slides_table.php @@ -0,0 +1,45 @@ +id(); + $table->foreignId('slider_id')->default(1)->constrained('sliders'); + + $table->text('title'); + $table->text('text')->nullable(); + $table->text('picture')->nullable(); + $table->text('alt_text_picture')->nullable(); + $table->text('link_label')->nullable(); + $table->text('link')->nullable(); + $table->boolean('link_new_tab')->default(false); + $table->integer('order')->default(1); + + $table->timestamp('date_start')->nullable(); + $table->timestamp('date_end')->nullable(); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('slides'); + } +} diff --git a/database/migrations/2021_12_10_140929_create_pictos_table.php b/database/migrations/2021_12_10_140929_create_pictos_table.php new file mode 100644 index 0000000..c3525ed --- /dev/null +++ b/database/migrations/2021_12_10_140929_create_pictos_table.php @@ -0,0 +1,35 @@ +id(); + $table->smallInteger('page'); + $table->text('picture')->nullable(); + $table->text('alt_text_picture')->nullable(); + $table->text('text'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('pictos'); + } +} diff --git a/database/migrations/2021_12_10_143830_create_picto_brands_table.php b/database/migrations/2021_12_10_143830_create_picto_brands_table.php new file mode 100644 index 0000000..3b78e56 --- /dev/null +++ b/database/migrations/2021_12_10_143830_create_picto_brands_table.php @@ -0,0 +1,35 @@ +id(); + $table->text('title'); + $table->text('picture')->nullable(); + $table->text('alt_text_picture')->nullable(); + $table->text('text'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('picto_brands'); + } +} diff --git a/database/migrations/2021_12_10_150259_create_titles_table.php b/database/migrations/2021_12_10_150259_create_titles_table.php new file mode 100644 index 0000000..6e35a62 --- /dev/null +++ b/database/migrations/2021_12_10_150259_create_titles_table.php @@ -0,0 +1,34 @@ +id(); + $table->smallInteger('page')->unique(); + $table->text('title'); + $table->text('text')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('titles'); + } +} diff --git a/database/migrations/2021_12_14_161711_create_texts_table.php b/database/migrations/2021_12_14_161711_create_texts_table.php new file mode 100644 index 0000000..4e93db0 --- /dev/null +++ b/database/migrations/2021_12_14_161711_create_texts_table.php @@ -0,0 +1,34 @@ +id(); + $table->smallInteger('page'); + $table->text('title'); + $table->text('text'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('texts'); + } +} diff --git a/database/migrations/2021_12_16_093950_create_advice_table.php b/database/migrations/2021_12_16_093950_create_advice_table.php new file mode 100644 index 0000000..15bbbb2 --- /dev/null +++ b/database/migrations/2021_12_16_093950_create_advice_table.php @@ -0,0 +1,41 @@ +id(); + $table->text('title1'); + $table->text('title2'); + $table->text('picture1')->nullable(); + $table->text('alt_text_picture1')->nullable(); + $table->text('picture2')->nullable(); + $table->text('alt_text_picture2')->nullable(); + $table->text('picture3')->nullable(); + $table->text('alt_text_picture3')->nullable(); + $table->text('text1'); + $table->text('text2'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('advice'); + } +} diff --git a/database/migrations/2021_12_16_131639_create_posts_table.php b/database/migrations/2021_12_16_131639_create_posts_table.php new file mode 100644 index 0000000..2599d38 --- /dev/null +++ b/database/migrations/2021_12_16_131639_create_posts_table.php @@ -0,0 +1,40 @@ +id(); + $table->text('title'); + $table->mediumText('text'); + $table->text('picture_home')->nullable(); + $table->text('alt_text_picture_home')->nullable(); + $table->text('picture_news')->nullable(); + $table->text('alt_text_picture_news')->nullable(); + $table->timestamp('date_start')->nullable(); + $table->timestamp('date_end')->nullable(); + $table->boolean('on_top')->default(false); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('posts'); + } +} diff --git a/database/migrations/2021_12_20_145730_create_gammes_table.php b/database/migrations/2021_12_20_145730_create_gammes_table.php new file mode 100644 index 0000000..9983eca --- /dev/null +++ b/database/migrations/2021_12_20_145730_create_gammes_table.php @@ -0,0 +1,40 @@ +id(); + $table->foreignId('parent_gamme_id')->nullable(); + $table->text('title'); + $table->string('slug')->unique(); + $table->text('text'); + $table->string('color')->nullable(); + $table->text('picture')->nullable(); + $table->text('alt_text_picture')->nullable(); + $table->text('banner')->nullable(); + $table->text('alt_text_banner')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('gammes'); + } +} diff --git a/database/migrations/2021_12_22_100045_create_products_table.php b/database/migrations/2021_12_22_100045_create_products_table.php new file mode 100644 index 0000000..f6cfa27 --- /dev/null +++ b/database/migrations/2021_12_22_100045_create_products_table.php @@ -0,0 +1,45 @@ +id(); + $table->foreignId('gamme_id')->nullable(); + $table->text('name'); + $table->string('slug')->unique(); + $table->text('description'); + $table->text('picture')->nullable(); + $table->text('alt_text_picture')->nullable(); + $table->mediumText('pictos'); + $table->mediumText('plusproduit'); + $table->boolean('is_published'); + $table->boolean('is_on_top'); + $table->boolean('is_food_service'); + $table->boolean('is_halal'); + $table->text('seo_title')->nullable(); + $table->text('seo_description')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('products'); + } +} diff --git a/database/migrations/2022_01_27_112601_create_moments_table.php b/database/migrations/2022_01_27_112601_create_moments_table.php new file mode 100644 index 0000000..e130564 --- /dev/null +++ b/database/migrations/2022_01_27_112601_create_moments_table.php @@ -0,0 +1,37 @@ +id(); + $table->smallInteger('page'); + $table->text('title'); + $table->text('subtitle'); + $table->text('text'); + $table->text('picture')->nullable(); + $table->text('alt_text_picture')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('moments'); + } +} diff --git a/database/migrations/2022_03_11_160745_dropuniqueslug_on_products.php b/database/migrations/2022_03_11_160745_dropuniqueslug_on_products.php new file mode 100644 index 0000000..e1b871c --- /dev/null +++ b/database/migrations/2022_03_11_160745_dropuniqueslug_on_products.php @@ -0,0 +1,30 @@ +dropUnique('products_slug_unique'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/migrations/2022_05_12_101807_add_is_news_on_products.php b/database/migrations/2022_05_12_101807_add_is_news_on_products.php new file mode 100644 index 0000000..79a8bbe --- /dev/null +++ b/database/migrations/2022_05_12_101807_add_is_news_on_products.php @@ -0,0 +1,32 @@ +boolean('is_news')->after('is_on_top'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('products', function (Blueprint $table) { + $table->dropColumn('is_news'); + }); + } +} diff --git a/database/migrations/2022_05_12_110531_create_seo_data_table.php b/database/migrations/2022_05_12_110531_create_seo_data_table.php new file mode 100644 index 0000000..2353c1e --- /dev/null +++ b/database/migrations/2022_05_12_110531_create_seo_data_table.php @@ -0,0 +1,39 @@ +id(); + $table->smallInteger('page')->unique(); + $table->text('title')->nullable(); + $table->text('description')->nullable(); + $table->text('keywords')->nullable(); + $table->timestamps(); + }); + + $seeder = new SeoDataSeeder(); + $seeder->run(); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('seo_data'); + } +} diff --git a/database/seeders/AdviceSeeder.php b/database/seeders/AdviceSeeder.php new file mode 100644 index 0000000..835434c --- /dev/null +++ b/database/seeders/AdviceSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 57b73b5..ebda62d 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -13,6 +13,19 @@ class DatabaseSeeder extends Seeder */ public function run() { - // \App\Models\User::factory(10)->create(); + $this->call([ + + UserSeeder::class, + SlidersSeeder::class, + EncartsSeeder::class, + MomentsSeeder::class, + PictosSeeder::class, + PictoBrandsSeeder::class, + TitlesSeeder::class, + TextsSeeder::class, + AdviceSeeder::class, + PostsSeeder::class, + GammesSeeder::class, + ]); } } diff --git a/database/seeders/EncartsSeeder.php b/database/seeders/EncartsSeeder.php new file mode 100644 index 0000000..a881349 --- /dev/null +++ b/database/seeders/EncartsSeeder.php @@ -0,0 +1,34 @@ +make() + ->each(function (Encart $encart) use ($tabEncarts, &$i) { + $encart->page = $tabEncarts[$i++]->value; + $encart->save(); + }); + } +} diff --git a/database/seeders/GammesSeeder.php b/database/seeders/GammesSeeder.php new file mode 100644 index 0000000..6d16be5 --- /dev/null +++ b/database/seeders/GammesSeeder.php @@ -0,0 +1,380 @@ + 0, + 'name' => 'Four', + 'url' => '/assets/images/four.png', + 'time' => '1h30mins.', + 'temp' => '200°C', + 'status' => true + ); + $tabFriteuse = array( + 'id' => 1, + 'name' => 'Friteuse', + 'url' => '/assets/images/friteuse.png', + 'time' => '15 minutes', + 'temp' => '100°C', + 'status' => true + ); + $tabPoele = array( + 'id' => 2, + 'name' => 'Poêle', + 'url' => '/assets/images/poele.png', + 'time' => '5 minutes sur chaque face', + 'temp' => '101°C', + 'status' => true + ); + $tabCocotte = array( + 'id' => 3, + 'name' => 'Cocotte', + 'url' => '/assets/images/cocotte.png', + 'time' => '3 h', + 'temp' => '80°C', + 'status' => false + ); + $tabPlancha = array( + 'id' => 4, + 'name' => 'Plancha', + 'url' => '/assets/images/plancha.png', + 'time' => '20mins', + 'temp' => '130°C', + 'status' => false + ); + $tabBainMarie = array( + 'id' => 5, + 'name' => 'Bain Marie', + 'url' => '/assets/images/bainmarie.png', + 'time' => '30 mins à 45 mins', + 'temp' => '80°C', + 'status' => false + ); + $tabBarbecue = array( + 'id' => 6, + 'name' => 'Barbecue', + 'url' => '/assets/images/barbecue.png', + 'time' => '30 minutes', + 'temp' => '200°C', + 'status' => false + ); + $tabMicroOndes = array( + 'id' => 7, + 'name' => 'Micro Ondes', + 'url' => '/assets/images/microondes.png', + 'time' => '3mins', + 'temp' => '900 Watts', + 'status' => false + ); + $tabCasserole = array( + 'id' => 8, + 'name' => 'Casserole', + 'url' => '/assets/images/casserole.png', + 'time' => '10mins', + 'temp' => '90°C', + 'status' => false + ); + $tabPlusProduit1 = array( + 'id' => 0, + 'name' => 'Lorem ipsum set doloris', + 'url' => '/assets/images/sans-label.jpg', + ); + $tabPlusProduit2 = array( + 'id' => 1, + 'name' => 'Lorem ipsum set doloris', + 'url' => '/assets/images/sans-label.jpg', + ); + $tabPlusProduit3 = array( + 'id' => 2, + 'name' => 'Lorem ipsum set doloris', + 'url' => '/assets/images/sans-label.jpg', + ); + + $gamme = new Gamme(); + $gamme->parent_gamme_id = null; + $gamme->title = 'Chicken Franks'; + $gamme->slug = Str::slug($gamme->title); + $gamme->text = 'Classiques ou Mini, faites votre choix'; + $gamme->color = '#ffa589'; + $upload = new SplFileInfo(resource_path('seeds/gammes/chicken-franks.jpg')); + $imgpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->picture = $imgpath; + $gamme->alt_text_picture = $gamme->title; + $upload = new SplFileInfo(resource_path('seeds/gammes/entete_chicken-franks.jpg')); + $bannerpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->banner = $bannerpath; + $gamme->alt_text_banner = $gamme->title; + $gamme->save(); + + $gameParent = $gamme->id; + $gamme = new Gamme(); + $gamme->parent_gamme_id = $gameParent; + $gamme->title = 'Les classiques'; + $gamme->slug = Str::slug($gamme->title); + $gamme->text = 'Idéales pour toute la famille, les Chicken Franks classiques sont faciles et rapides à cuisiner. Faites votre choix parmi la multitude de saveurs disponibles.'; + $gamme->color = '#000000'; + $upload = new SplFileInfo(resource_path('seeds/gammes/88853_1.jpg')); + $imgpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->picture = $imgpath; + $gamme->alt_text_picture = $gamme->title; + $upload = new SplFileInfo(resource_path('seeds/gammes/entete_chicken-franks.jpg')); + $bannerpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->banner = $bannerpath; + $gamme->alt_text_banner = $gamme->title; + $gamme->save(); + + $tabPlusProduit1 = array( + 'id' => 0, + 'name' => 'Multiplier les recettes avec ce produit : plats mijotés, hot dog, salades...', + 'url' => '/assets/images/sans-label.jpg', + ); + $tabPlusProduit2 = array( + 'id' => 1, + 'name' => 'Une recette garantie sans colorant', + 'url' => '/assets/images/sans-label.jpg', + ); + $product = new Product(); + $product->gamme_id = $gamme->id; + $product->name = 'Chicken Franks Original'; + $product->slug = Str::slug($product->name); + $product->description = 'Les Franks de poulet original : un goût unique et qui s\'accordera facilement à tous vos plats. Elles sont congelées directement après leur production afin de garantir une qualité et un goût optimal.'; + $upload = new SplFileInfo(resource_path('seeds/products/88891_2.png')); + $imgpath = Utils::storeImage($upload, $product->getTable()); + $product->picture = $imgpath; + $product->alt_text_picture = $product->name; + $product->pictos = ''; + $product->plusproduit = json_encode([$tabPlusProduit1, $tabPlusProduit2]); + $product->is_published = true; + $product->is_on_top = rand(true, false); + $product->is_news = rand(true, false); + $product->is_food_service = rand(true, false); + $product->is_halal = rand(true, false); + $product->seo_title = 'Chicken franks, poulet, recettes, qualité'; + $product->seo_description = 'Doux vous propose des Chicken Franks Original préparées en France'; + $product->save(); + + $gamme = new Gamme(); + $gamme->parent_gamme_id = $gameParent; + $gamme->title = 'Les mini'; + $gamme->slug = Str::slug($gamme->title); + $gamme->text = 'Rapide et pratique à réchauffer, ce format est idéal pour les moments de partage et les repas sur le pouce.'; + $gamme->color = '#c0d8e0'; + $upload = new SplFileInfo(resource_path('seeds/gammes/132505_1.jpg')); + $imgpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->picture = $imgpath; + $gamme->alt_text_picture = $gamme->title; + $upload = new SplFileInfo(resource_path('seeds/gammes/entete-minis.jpg')); + $bannerpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->banner = $bannerpath; + $gamme->alt_text_banner = $gamme->title; + $gamme->save(); + + $tabMicroOndes = array( + 'id' => 0, + 'name' => 'Micro Ondes', + 'url' => '/assets/images/micro-onde.png', + 'time' => '3mins', + 'temp' => '900 Watts', + 'status' => true + ); + $tabCasserole = array( + 'id' => 1, + 'name' => 'Casserole', + 'url' => '/assets/images/casserole.png', + 'time' => '5mins', + 'temp' => 'Au bain marie', + 'status' => true + ); + $tabPlusProduit1 = array( + 'id' => 0, + 'name' => 'La gourmandise à emporter partout !', + 'url' => '/assets/images/sans-label.jpg', + ); + $tabPlusProduit2 = array( + 'id' => 1, + 'name' => 'Le goût fromage, le petit plus qui fait qu\'on l\'adore', + 'url' => '/assets/images/sans-label.jpg', + ); + $product = new Product(); + $product->gamme_id = $gamme->id; + $product->name = 'Mini Chicken Franks Cheese'; + $product->slug = Str::slug($product->name); + $product->description = 'Les Mini Chicken Franks cheese... avec elles, plus besoin de se priver pour se faire plaisir à tout moment de la journée'; + $upload = new SplFileInfo(resource_path('seeds/products/132505_2.png')); + $imgpath = Utils::storeImage($upload, $product->getTable()); + $product->picture = $imgpath; + $product->alt_text_picture = $product->name; + $product->pictos = json_encode([ + 'microondes' => $tabMicroOndes, + 'casserole' => $tabCasserole + ]); + $product->plusproduit = json_encode([$tabPlusProduit1, $tabPlusProduit2]); + $product->is_published = true; + $product->is_on_top = rand(true, false); + $product->is_news = rand(true, false); + $product->is_food_service = rand(true, false); + $product->is_halal = rand(true, false); + $product->seo_title = 'recette, qualité, Chicken franks, plaisir, gourmandise'; + $product->seo_description = 'Doux vous propose des Mini Chicken Franks Cheese préparées en France'; + $product->save(); + + $product = new Product(); + $product->gamme_id = $gamme->id; + $product->name = 'Mini Chicken Franks Original'; + $product->slug = Str::slug($product->name); + $product->description = 'Les Mini Chicken Franks original, c\'est votre recette de Franks préférée en plus petit ! De quoi vous faire craquer !'; + $upload = new SplFileInfo(resource_path('seeds/products/132504_2.png')); + $imgpath = Utils::storeImage($upload, $product->getTable()); + $product->picture = $imgpath; + $product->alt_text_picture = $product->name; + $product->pictos = json_encode([ + 'four' => $tabFour, + 'friteuse' => $tabFriteuse, + 'poele' => $tabPoele, + 'cocotte' => $tabCocotte, + 'plancha' => $tabPlancha, + 'bainmarie' => $tabBainMarie, + 'barbecue' => $tabBarbecue, + 'microondes' => $tabMicroOndes + ]); + $product->plusproduit = json_encode([$tabPlusProduit1, $tabPlusProduit2, $tabPlusProduit3]); + $product->is_published = true; + $product->is_on_top = rand(true, false); + $product->is_news = rand(true, false); + $product->is_food_service = rand(true, false); + $product->is_halal = rand(true, false); + $product->seo_title = 'recette, qualité, Chicken franks, plaisir, gourmandise'; + $product->seo_description = 'Doux vous propose des Mini Chicken Franks Cheese préparées en France'; + $product->save(); + + $gamme = new Gamme(); + $gamme->parent_gamme_id = null; + $gamme->title = 'Prêts à cuire'; + $gamme->slug = Str::slug($gamme->title); + $gamme->text = 'Steak haché de poulet façon bouchère, l\'innovation à marque Doux'; + $gamme->color = '#8fd5a6'; + $upload = new SplFileInfo(resource_path('seeds/gammes/131700_1.jpg')); + $imgpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->picture = $imgpath; + $gamme->alt_text_picture = $gamme->title; + $upload = new SplFileInfo(resource_path('seeds/gammes/entete-pret-a-cuire.jpg')); + $bannerpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->banner = $bannerpath; + $gamme->alt_text_banner = $gamme->title; + $gamme->save(); + + $tabPoele = array( + 'id' => 0, + 'name' => 'Poêle', + 'url' => '/assets/images/poele.png', + 'time' => '10mins', + 'temp' => '', + 'status' => true + ); + $tabPlusProduit1 = array( + 'id' => 0, + 'name' => 'Un hachage façon bouchère pour un goût et une texture exceptionnelle !', + 'url' => '/assets/images/sans-label.jpg', + ); + $tabPlusProduit2 = array( + 'id' => 1, + 'name' => '100% cuisse, 100% qualité', + 'url' => '/assets/images/sans-label.jpg', + ); + $tabPlusProduit3 = array( + 'id' => 2, + 'name' => 'Une recette sans colorant, sans exhausteur de goût et sans conservateur', + 'url' => '/assets/images/sans-label.jpg', + ); + $product = new Product(); + $product->gamme_id = $gamme->id; + $product->name = 'Steak haché de poulet'; + $product->slug = Str::slug($product->name); + $product->description = 'Un steak haché de poulet façon bouchère avec un large grain. De la viande de qualité issue de la cuisse. Rien de plus, rien de moins.'; + $upload = new SplFileInfo(resource_path('seeds/products/131700_1.png')); + $imgpath = Utils::storeImage($upload, $product->getTable()); + $product->picture = $imgpath; + $product->alt_text_picture = 'Un produit incontournable du rayon surgelé maintenant disponible au rayon poulet.'; + $product->pictos = json_encode(['poele' => $tabPoele]); + $product->plusproduit = json_encode([$tabPlusProduit1, $tabPlusProduit2, $tabPlusProduit3]); + $product->is_published = true; + $product->is_on_top = rand(true, false); + $product->is_news = rand(true, false); + $product->is_food_service = rand(true, false); + $product->is_halal = rand(true, false); + $product->seo_title = 'recette, qualité, viande, cuisse, steak haché, poulet'; + $product->seo_description = 'Doux vous propose un Steak haché de poulet préparé en France'; + $product->save(); + + $gamme = new Gamme(); + $gamme->title = 'Volailles entières'; + $gamme->slug = Str::slug($gamme->title); + $gamme->text = 'Découvrez la gamme historique de Doux. Des volailles entières, nées, élevées et préparées en France, nourries exclusivement avec des végétaux, des minéraux et des vitamines.'; + $gamme->color = '#d4eac8'; + $upload = new SplFileInfo(resource_path('seeds/gammes/gamme_volaille.jpg')); + $imgpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->picture = $imgpath; + $gamme->alt_text_picture = $gamme->title; + $upload = new SplFileInfo(resource_path('seeds/gammes/entete-volaille.jpg')); + $bannerpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->banner = $bannerpath; + $gamme->alt_text_banner = $gamme->title; + $gamme->save(); + + $tabPlusProduit1 = array( + 'id' => 0, + 'name' => 'Volailles nourries exclusivement avec des végétaux, des minéraux et des vitamines', + 'url' => '/assets/images/sans-label.jpg', + ); + $product = new Product(); + $product->gamme_id = $gamme->id; + $product->name = 'Poulet sans abats'; + $product->slug = Str::slug($product->name); + $product->description = 'Le poulet Doux est congelé dans les 24h après l\'abattage pour garantir ses qualités nutritionnelles et gustatives. Un produit historique qui a fait la réputation de la marque et qui vous satisfait depuis près de 90 ans !'; + $upload = new SplFileInfo(resource_path('seeds/products/89779_1.png')); + $imgpath = Utils::storeImage($upload, $product->getTable()); + $product->picture = $imgpath; + $product->alt_text_picture = $product->name; + $product->pictos = ''; + $product->plusproduit = json_encode([$tabPlusProduit1]); + $product->is_published = true; + $product->is_on_top = rand(true, false); + $product->is_news = rand(true, false); + $product->is_food_service = rand(true, false); + $product->is_halal = rand(true, false); + $product->seo_title = 'volaille, poulet, Doux, qualités'; + $product->seo_description = 'Doux vous propose des Poulets entiers congelés, nés, élevés et préparés en France'; + $product->save(); + + $gamme = new Gamme(); + $gamme->title = 'Food Service'; + $gamme->slug = Str::slug($gamme->title); + $gamme->text = 'Food Service'; + $gamme->color = '#d4eac8'; + $upload = new SplFileInfo(resource_path('seeds/gammes/gamme_volaille.jpg')); + $imgpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->picture = $imgpath; + $gamme->alt_text_picture = $gamme->title; + $upload = new SplFileInfo(resource_path('seeds/gammes/entete-volaille.jpg')); + $bannerpath = Utils::storeImage($upload, $gamme->getTable()); + $gamme->banner = $bannerpath; + $gamme->alt_text_banner = $gamme->title; + $gamme->save(); + } +} diff --git a/database/seeders/MomentsSeeder.php b/database/seeders/MomentsSeeder.php new file mode 100644 index 0000000..21c31cb --- /dev/null +++ b/database/seeders/MomentsSeeder.php @@ -0,0 +1,119 @@ +page = Page::marqueHistory(); + $moment->title = "1933"; + $moment->subtitle = "Le début d'une longue histoire"; + $moment->text = "

Pierre Doux démarre une activité de négoce de poulet dans le Grand Ouest français.

"; + $upload = new SplFileInfo(resource_path('seeds/moments/1933.jpg')); + $imgpath = Utils::storeImage($upload, $moment->getTable()); + $moment->picture = $imgpath; + $moment->alt_text_picture = $moment->subtitle; + $moment->save(); + + $moment = new Moment(); + $moment->page = Page::marqueHistory(); + $moment->title = "1955"; + $moment->subtitle = "Doux, naissance d'une marque."; + $moment->text = "

Pierre Doux décide de fonder l’entreprise qui portera son nom.

"; + $upload = new SplFileInfo(resource_path('seeds/moments/1955.jpg')); + $imgpath = Utils::storeImage($upload, $moment->getTable()); + $moment->picture = $imgpath; + $moment->alt_text_picture = $moment->subtitle; + $moment->save(); + + $moment = new Moment(); + $moment->page = Page::marqueHistory(); + $moment->title = "1961"; + $moment->subtitle = "Le poulet prend son envol."; + $moment->text = "

Il s'exporte d’abord vers l’Allemagne et la Suisse, puis, dans les années 70 vers d’autres pays comme la Russie ou le Liban.

"; + $upload = new SplFileInfo(resource_path('seeds/moments/1961.jpg')); + $imgpath = Utils::storeImage($upload, $moment->getTable()); + $moment->picture = $imgpath; + $moment->alt_text_picture = $moment->subtitle; + $moment->save(); + + $moment = new Moment(); + $moment->page = Page::marqueHistory(); + $moment->title = "1980"; + $moment->subtitle = "L'expansion internationale se poursuit."; + $moment->text = "

Le développement de la marque à l'export continue tout au long de la décennie, principalement vers le Moyen-Orient mais aussi en Afrique.

"; + $upload = new SplFileInfo(resource_path('seeds/moments/1980.jpg')); + $imgpath = Utils::storeImage($upload, $moment->getTable()); + $moment->picture = $imgpath; + $moment->alt_text_picture = $moment->subtitle; + $moment->save(); + + $moment = new Moment(); + $moment->page = Page::marqueHistory(); + $moment->title = "1992"; + $moment->subtitle = "La naissance d'un produit iconique !"; + $moment->text = "

Le spécialiste de la volaille lance sa Chicken Franks Doux, un produit emblématique. Et vous l'adorez depuis !

"; + $upload = new SplFileInfo(resource_path('seeds/moments/1992.jpg')); + $imgpath = Utils::storeImage($upload, $moment->getTable()); + $moment->picture = $imgpath; + $moment->alt_text_picture = $moment->subtitle; + $moment->save(); + + $moment = new Moment(); + $moment->page = Page::marqueHistory(); + $moment->title = "1992"; + $moment->subtitle = "Un nouveau défi."; + $moment->text = "

Toujours désireuse d'apporter plus de variété dans vos assiettes, la marque Doux se lance dans la production de produits élaborés destinés à l’export, tels que les nuggets, les burgers ou les escalopes panées.

"; + $upload = new SplFileInfo(resource_path('seeds/moments/1992_bis.jpg')); + $imgpath = Utils::storeImage($upload, $moment->getTable()); + $moment->picture = $imgpath; + $moment->alt_text_picture = $moment->subtitle; + $moment->save(); + + $moment = new Moment(); + $moment->page = Page::marqueHistory(); + $moment->title = "2018"; + $moment->subtitle = "L'année du renouveau."; + $moment->text = "

La marque Doux intègre LDC, leader français de la volaille.

"; + $upload = new SplFileInfo(resource_path('seeds/moments/2018.jpg')); + $imgpath = Utils::storeImage($upload, $moment->getTable()); + $moment->picture = $imgpath; + $moment->alt_text_picture = $moment->subtitle; + $moment->save(); + + $moment = new Moment(); + $moment->page = Page::marqueHistory(); + $moment->title = "2019"; + $moment->subtitle = "Un vent de fraicheur."; + $moment->text = "

La marque Doux s'offre un nouveau look plus moderne, sans rien changer au goût tant apprécié de ses produits.

"; + $upload = new SplFileInfo(resource_path('seeds/moments/88832_2.png')); + $imgpath = Utils::storeImage($upload, $moment->getTable()); + $moment->picture = $imgpath; + $moment->alt_text_picture = $moment->subtitle; + $moment->save(); + + $moment = new Moment(); + $moment->page = Page::marqueHistory(); + $moment->title = "2021"; + $moment->subtitle = "Doux Innove..."; + $moment->text = "

...et lance le Steak haché de poulet façon bouchère et les Mini Chicken Franks : Découvrez ces nouveaux produits inédits !

"; + $upload = new SplFileInfo(resource_path('seeds/moments/2021.jpg')); + $imgpath = Utils::storeImage($upload, $moment->getTable()); + $moment->picture = $imgpath; + $moment->alt_text_picture = $moment->subtitle; + $moment->save(); + } +} diff --git a/database/seeders/PictoBrandsSeeder.php b/database/seeders/PictoBrandsSeeder.php new file mode 100644 index 0000000..2e84e8e --- /dev/null +++ b/database/seeders/PictoBrandsSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/PictosSeeder.php b/database/seeders/PictosSeeder.php new file mode 100644 index 0000000..80c89d5 --- /dev/null +++ b/database/seeders/PictosSeeder.php @@ -0,0 +1,40 @@ +getTable()); + + foreach ($tabEncarts as $key => $value) { + for ($i = 0; $i < 5; $i++) { + $picto = new Picto(); + $picto->page = $value; + $picto->picture = $imgpath; + $picto->alt_text_picture = 'lorem ipsum set doloris at em gorbicus'; + $picto->text = 'lorem ipsum set doloris'; + $picto->save(); + } + } + } +} diff --git a/database/seeders/PostsSeeder.php b/database/seeders/PostsSeeder.php new file mode 100644 index 0000000..5ca0340 --- /dev/null +++ b/database/seeders/PostsSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/ProductsSeeder.php b/database/seeders/ProductsSeeder.php new file mode 100644 index 0000000..640a254 --- /dev/null +++ b/database/seeders/ProductsSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/SeoDataSeeder.php b/database/seeders/SeoDataSeeder.php new file mode 100644 index 0000000..9598e09 --- /dev/null +++ b/database/seeders/SeoDataSeeder.php @@ -0,0 +1,53 @@ +title = "Page d'accueil"; + $seo_data->description = ""; + $seo_data->keywords = ""; + $seo_data->page = Page::home(); + $seo_data->save(); + + $seo_data = new SeoDatum(); + $seo_data->title = "Marque"; + $seo_data->description = ""; + $seo_data->keywords = ""; + $seo_data->page = Page::marque(); + $seo_data->save(); + + $seo_data = new SeoDatum(); + $seo_data->title = "Actualités"; + $seo_data->description = ""; + $seo_data->keywords = ""; + $seo_data->page = Page::news(); + $seo_data->save(); + + $seo_data = new SeoDatum(); + $seo_data->title = "Food Service"; + $seo_data->description = ""; + $seo_data->keywords = ""; + $seo_data->page = Page::foodservice(); + $seo_data->save(); + + $seo_data = new SeoDatum(); + $seo_data->title = "Les Gammes"; + $seo_data->description = ""; + $seo_data->keywords = ""; + $seo_data->page = Page::gammes(); + $seo_data->save(); + } +} diff --git a/database/seeders/SlidersSeeder.php b/database/seeders/SlidersSeeder.php new file mode 100644 index 0000000..eaa1442 --- /dev/null +++ b/database/seeders/SlidersSeeder.php @@ -0,0 +1,31 @@ +create(['page' => Page::home(),]) + Slider::factory(1)->create() + ->each(function (Slider $slider) { + + $i = 0; + Slide::factory(3)->make() + ->each(function (Slide $slide) use ($slider, &$i) { + $slide->order = $i++; + $slide->slider()->associate($slider); + $slide->save(); + }); + }); + } +} diff --git a/database/seeders/TextsSeeder.php b/database/seeders/TextsSeeder.php new file mode 100644 index 0000000..9b5830d --- /dev/null +++ b/database/seeders/TextsSeeder.php @@ -0,0 +1,117 @@ +make() + ->each(function (Text $encart) use ($tabEncarts, &$i) { + $encart->page = $tabEncarts[$i]->value; + $encart->save(); + }); + + $mentions = new Text(); + $mentions->page = Page::mentions(); + $mentions->title = "Mentions Légales & CGU"; + $mentions->text = '

Mentions légales et conditions générales d\'utilisation du site Doux

+

Introduction

 

Nous vous remercions de lire ces conditions générales d\'utilisation qui régissent les conditions d’accès et d’utilisation du site https://www.doux.fr/ 

Nous vous invitons à consulter régulièrement cette rubrique car la société SOCIETE BRETONNE DE VOLAILLE peut être amenée à la modifier à tout moment.

Tout utilisateur déclare avoir lu et accepté les mentions légales et les conditions générales d’utilisation et s’engage à s’y conformer.

Mise à jour le 14/10/21.

 

Mentions légales

Société Bretonne de Volaille (ci-après SBV), ZI du Lay 56660 Saint-Jean-Brévelay

Tél : 02 97 60 33 88, Société par Actions simplifiées au capital social de 83 470 000 euros – RCS de Vannes sous le numéro 808 448 757  
Editeur du Site : société LDC- Zi St Laurent – 72300Sablé sur Sarthe, SA au capital de 6 785 055,60 euros, RCS Le Mans n° 576 850 697. Tel : 02 43 62 70 00 

Directeur de la publication : Roland Tonarelli

Conception du site et réalisation :  Graphisweet marque de la Société Graphimedia

SAS au capital de 10000€.

SIRET : 879 404 895 00010

Siège social : Bâtiment MV Group - Espace Performance III - Centre Affaires Alphasis - 35760 Saint Grégoire 

Tél. : 02.99.65.43.69

Illustrations : Agence WHY 2 bis, place Saint-Melaine, 35000 Rennes, RCS Rennes numéro 926 950 312, Tel : 02 99 65 42 84

Le site est hébergé par : OVH, via LDC, SAS au capital de 10 069 020 euros, RCS Lille Métropole 537 407 926, 2 rue Kellermann – 59100 Roubaix, Tel : 09 72 10 10 07, Mail : hosting@ml.ovh.net

 

Droit d’auteur - Droit des marques – Protection des bases de données

La présentation et le contenu du site constituent, ensemble, une œuvre protégée par les lois en vigueur des droits d’auteur, de la propriété intellectuelle et industrielle.

Les créations apparaissant sur le site (dessins, photographies, images, textes, séquences animées sonores ou non et autres documentations représentées), sont objets de droits d’auteur, de propriété industrielle et/ou intellectuelle et sont, selon les cas, propriété de la société SOCIETE BRETONNE DE VOLAILLE ou de tiers ayant autorisé la société SOCIETE BRETONNE DE VOLAILLE à les utiliser. 

Aucune exploitation commerciale, reproduction, représentation, utilisation, adaptation, modification, incorporation, traduction, commercialisation, partielle ou intégrale de ces éléments (y compris ceux téléchargeables ou copiables) ne pourra en être faite sans l\'accord préalable et écrit de la société SOCIETE BRETONNE DE VOLAILLE, à l\'exception de l\'utilisation pour un usage privé sous réserve des dispositions différentes voire plus restrictives du Code de la propriété intellectuelle.

Toute utilisation non expressément autorisée peut engager la responsabilité civile et/ou pénale de son auteur. SOCIETE BRETONNE DE VOLAILLE se réserve le droit d\'engager des poursuites judiciaires à l\'encontre de toute personne qui n\'aurait pas respecté cette interdiction.

 

Vie privée – Données personnelles – Cookies

Nous vous invitons à vous reporter à notre Charte de confidentialité en cliquant ici.  


Mentions Sanitaires :

Pour votre santé :  

-mangez au moins cinq fruits et légumes par jour

-pratiquez une activité physique régulière

-évitez de manger trop gras, trop sucré, trop salé

-évitez de grignoter entre les repas

Pour toute information complémentaire, consultez le site : www.mangerbouger.fr

Responsabilité

La SOCIÉTÉ BRETONNE DE VOLAILLE a déployé ses meilleurs efforts pour s’assurer de l’exactitude des informations présentes sur son site internet (ci-après le Site). Cependant, la SOCIÉTÉ BRETONNE DE VOLAILLE n’est responsable ni de l’exactitude, ni des erreurs, ni des omissions contenues sur le Site. L’utilisateur est seul responsable de l’utilisation de telles informations.

La SOCIÉTÉ BRETONNE DE VOLAILLE ne donne aucune garantie, explicite ou implicite, et n’assume aucune responsabilité qui pourrait résulter de l’accès ou de l’utilisation de ce Site incluant toutes détériorations ou virus qui pourraient infecter l’équipement informatique ou tout autre bien de l’utilisateur. 

Par ailleurs. 

La SOCIÉTÉ BRETONNE DE VOLAILLE pourra unilatéralement et à tout moment interrompre temporairement ou définitivement l’accès à tout ou partie du Site, y compris notamment le contenu, les fonctionnalités ou les heures de disponibilité, sans que sa responsabilité ne puisse être recherchée et sans que cela ne puisse donner lieu à l’allocation de dommages et intérêts de quelque nature que ce soit.

Les pages du Site peuvent contenir des liens hypertextes renvoyant vers d\'autres sites internet gérés par des sociétés distinctes de SOCIÉTÉ BRETONNE DE VOLAILLE, et sur lesquels la SOCIÉTÉ BRETONNE DE VOLAILLE n\'exerce aucune sorte de contrôle. SOCIÉTÉ BRETONNE DE VOLAILLE n\'est pas responsable du contenu de tout autre site auquel vous pourriez avoir accès via le Site ou les autres sites internet du groupe LDC. Tout utilisateur ou visiteur du Site ne peut mettre en place un lien hypertexte en direction de ce Site sans l’autorisation expresse préalable de la SOCIÉTÉ BRETONNE DE VOLAILLE.

'; + $mentions->save(); + + $charte = new Text(); + $charte->page = Page::charte(); + $charte->title = "Charte de confidentialité"; + $charte->text = "

INTRODUCTION

+

Le nouveau Règlement Général de l’Union Européenne sur la Protection des Données (RGPD), entré en vigueur le 25 mai 2018, vise à mieux encadrer la collecte, le traitement et l’utilisation de vos données personnelles. La société Bretonne de Volaille, en sa qualité de responsable du traitement, renforce ses engagements pour garantir la protection et la sécurité des données à caractère personnel que vous lui confiez.

+

A ce titre, la présente Charte de confidentialité vous informe sur le type de données que nous collectons, comment nous les traitons, dans quelles finalités, de manière à rendre leur utilisation la plus adaptée à vos besoins.

+

Le responsable de traitement, qui collecte et gère vos données, est la société Société Bretonne de Volaille, Société par actions simplifiées au capital social de 83 470 000 euros immatriculée au registre du commerce et des sociétés de Vannes sous le numéro 808 448 757, dont le siège social est ZI du Lay, 56660 Saint-Jean-Brévelay représentée par Roland Tonarelli. 

+

Pour toute question relative à notre Charte de confidentialité, merci de nous contacter via le formulaire de contact suivant : 

+

https://www.ldc.fr/rgpd/professionnels/

+

https://www.ldc.fr/rgpd/consommateurs/

+

Nous vous invitons à consulter régulièrement cette rubrique car la Société Bretonne de Volaille peut être amenée à la modifier à tout moment.

+

La présente Charte de confidentialité a été mise à jour le 14/10/2021.

+

 

+

NOS ENGAGEMENTS

+

Conformément à la réglementation relative à la protection des données personnelles et à la vie privée, notamment la loi n°78-17 du 6 janvier 1978 relative à l’informatique, aux fichiers et aux libertés dite loi « Informatique et Libertés » et au Règlement (UE) 2016/679 du 25 mai 2018 relatif à la protection des personnes physiques à l'égard du traitement des données à caractère personnel et à la libre circulation de ces données, (ci-après le « Règlement RGPD»), la Société Bretonne de Volaille s’engage à respecter les principes suivants :

  • Consentement : vous devez avoir consenti à la collecte et au traitement de vos données. Si tel n’était pas le cas ou si vous avez changé d’avis, merci de vous reporter à l’article ci-dessous relatif à vos droits.
  • Limitation des données collectées : nous ne collectons que les données qui sont strictement nécessaires au traitement et à l’utilisation envisagée. Nous vous rappelons qu’il n’y a aucune obligation à nous transmettre ces données. Toutefois certains services ou opérations promotionnelles nécessitent certaines données, faute de quoi vous ne pourriez y accéder.
  • Limitation des finalités : les données que nous collectons sont traitées uniquement dans les finalités décrites ci-dessous.
  • Limitation des durées de conservation : vos données sont conservées uniquement le temps nécessaire aux finalités de traitement pour lequel elles ont été collectées. Au-delà de cette durée si aucune obligation légale impose leur conservation, nous veillerons à ce que vos données soient supprimées, détruites ou anonymisées.
  • Protection des données : en vue de sécuriser vos données et leur traitement, nous avons mis en place des mesures techniques et organisationnelles détaillées ci-dessous.
  • Transparence et loyauté : lorsque la Société Bretonne de Volaille collecte une donnée vous concernant, nous vous informons de l’utilisation qui en sera faite. C’est pourquoi nous vous conseillons de lire attentivement les informations qui vous sont transmises à travers notre site internet.

 

+

QUELLES DONNÉES PERSONNELLES SONT COLLECTEES ?

+

Au sens du Règlement RGPD, une donnée à caractère personnel désigne toute information relative à une personne physique identifiée ou identifiable.

+

Les données personnelles collectées varient en fonction du but de la collecte et du service dont vous souhaitez bénéficier.

+

La société Société Bretonne de Volaille est amenée à collecter les catégories de données personnelles suivantes:

  • coordonnées personnelles (civilité, nom, prénom, adresse e-mail, adresse postale, ville, code postal,  date de naissance, téléphone, ) ;
  • coordonnées personnelles non obligatoires (comment avez-vous connu la coupe de France de la Volaille) ;
  • identifiants utilisés pour accéder à votre compte en ligne (adresse IP, adresse e-mail et mot de passe) ;
  • coordonnées professionnelles (le statut : en activité ou étudiant, le type de restauration, le nom de l’établissement, le code postal de l’établissement, la fonction exercée,
  • coordonnée professionnelles non obligatoires (site internet ou facebook de l’établissement, canal d’approvisionnement)
  • information au sujet du plat (intitulé du plat, liste d’ingrédients, le travail apporté à la canette entière, légitimité de la recette par rapport au thème, photo tapas 1, photo tapas 2, photo tapas 3, photo de l’ensemble des tapas).
  • historiques de navigation, telles que les pages visitées et actions sur le site.

Vous vous engagez à fournir des données personnelles actualisées et valides et garantissez ne faire aucune fausse déclaration et ne donner aucune information erronée. 

+

 

+

POURQUOI VOS DONNEES PERSONNELLES SONT COLLECTEES ?

+

. Vos données peuvent être collectées dans la mesure où vous avez consenti de manière spécifique, libre et éclairée. Elles peuvent également être collectées pour satisfaire à l’exécution d’une obligation légale ou dans le cadre de la relation contractuelle construite avec vous (notamment conditions générales d’utilisation, conditions générales de vente) ou encore dans l’intérêt légitime de la Société Bretonne de Volaille (par exemple pour assurer la sécurité des transactions).

+

Nous collectons vos données personnelles afin de vous fournir la meilleure expérience utilisateur à travers notre site internet. 

+

Ces données sont collectées aux fins suivantes : 

  • Gestion des fonctionnalités et de la qualité du site internet
  • Gestion de votre inscription à notre Newsletter et de votre Compte utilisateur
  • Accès à votre Compte utilisateur
  • Traitement de vos demandes de renseignements
  • Communication des informations (promotions, nouveaux produits, activité de la marque)
  • Gestion de votre participation à nos jeux, tirages au sort, activités promotionnelles
  • Développement et amélioration des produits iD halal
  • Statistiques
  • Partages sur les réseaux sociaux

 

+

QUELS SONT VOS DROITS ?

+

Vous disposez d’un certain nombre de droits concernant vos données personnelles listés ci-dessous.

  • Droit d’accès

Vous pouvez demander la communication de vos données sous une forme accessible, la confirmation que vos données font ou ne font plus l’objet d’un traitement ainsi que la communication des informations relatives à vos données. Afin que vos données personnelles soient exactes, complètes, pertinentes et à jour, vous avez le droit d’accéder, de corriger ou de mettre à jour vos données personnelles à tout moment.

  • Droit de rectification

 Vous êtes en droit de demander à ce que vos données soient rectifiées, complétées ou mises à jour lorsqu’elles sont inexactes, incomplètes, équivoques ou périmées. 

  • Droit à l’effacement

Vous avez le droit de demander la suppression de vos données personnelles notamment lorsqu’elles ne sont plus nécessaires aux finalités pour lesquelles elles ont été collectées. Si les données personnelles collectées ne sont plus nécessaires à aucune finalité et qu’aucune obligation légale nous impose de les conserver, nous mettrons tout en œuvre pour supprimer, détruire ou anonymiser ces données. 

  • Droit à la limitation du traitement

Vous avez le droit de demander la limitation du traitement de vos données personnelles si :

  • vous contestez l’exactitude des données ;
  • vous souhaitez limiter le traitement des données qui n’avaient pas été traitées de manière licite plutôt que leur suppression ;
  • nous n’avons plus besoin de vos données personnelles mais celles-ci sont nécessaires pour la constatation, l’exercice ou la défense de vos droits en justice ;
  • vous vous êtes opposés au traitement de vos données personnelles et attendez de savoir si vos intérêts liés à cette objection l’emportent sur les motifs légitimes que nous poursuivons.

 

  • Droit à la portabilité de vos données 

Lorsque le traitement est effectué à partir de procédés automatisés et que vous avez librement consenti au traitement de vos données personnelles pour une finalité que nous vous avions communiqué au préalable ; ou lorsque nous traitons vos données dans le cadre d’une opération commerciale (ex : vous fournir un produit)  vous avez le droit de demander :

  • à recevoir vos données personnelles dans un format structuré, couramment utilisé et lisible par une machine ;
  • à ce que vos données personnelles soient transmises directement à une autre responsable de traitement, lorsque que cela est techniquement possible.

 

  • Droit d’opposition

Lorsque vos données sont traitées à des fins de prospection commerciale, vous avez le droit, à tout moment, de vous opposer au traitement de vos données personnelles et ce sans motif. 

+

 

+

Droit de porter réclamation auprès de la CNIL

+

Si vous estimez que le traitement de vos données personnelles constitue une violation de la réglementation, vous pouvez introduire une réclamation auprès d’une autorité de contrôle, telle que la CNIL.

+

Vous pouvez exercer ces droits à tout moment en nous contactant via le formulaire suivant :

+

https://www.ldc.fr/rgpd/professionnels/

+

https://www.ldc.fr/rgpd/consommateurs/

+

Vous recevrez une réponse de notre part dans un délai d’un mois à compter de la réception de la demande. En cas de demande complexe ou du nombre important de demandes, le délai peut être prolongé de deux mois.

+

L’exercice des droits se fait à titre gratuit. Si toutefois la demande était manifestement infondée ou excessive, la Société Bretonne de Volaille se réserve la possibilité d’appliquer des frais administratifs ou de refuser de donner suite à la demande.

+

 

+

COMMENT VOS DONNEES PERSONNELLES SONT PROTEGEES ?

+

Afin d’assurer la sécurité de vos données personnelles nous avons mis en place des mesures de sécurité, notamment des contrôles d’accès, des pare-feux, des serveurs sécurisés. 

+

Ces mesures visent à protéger vos données personnelles contre toute perte, détournement, mauvaise utilisation, divulgation, modification, interférence, dommage, accès non autorisé des données. 

+

En cas de violation de vos données personnelles susceptible d’engendrer un risque pour vos droits et libertés, la Société Bretonne de Volaille en notifie la violation à la CNIL dans les meilleurs délais et, si possible, 72 heures au plus tard après en avoir pris connaissance. La Société Bretonne de Volaille vous en informera dans les meilleurs délais.

+

 

+

ACCES A VOS DONNEES PERSONNELLES :

+

Vos données personnelles sont destinées au personnel de la Société Bretonne de Volaille habilité à les traiter, notamment le service marketing, développement durable, informatique, commercial, qualité et administratif.

+

 

+

PARTAGE DE VOS DONNÉES PERSONNELLES :

+

Conformément à la règlementation, quand nous sommes amenés à partager vos données personnelles avec des sous-traitants pour certaines finalités décrites dans la présente Charte, nous nous assurons que leur dispositif en matière de sécurité des données et de leur stockage est au moins aussi important que celui de notre organisation. Nous veillons également à ce qu’ils respectent les lois relatives à la protection des données personnelles dans des conditions au moins équivalentes à celles que nous respectons.

+

Par ailleurs, les sous-traitants étant amenés à traiter de vos données personnelles pour notre compte et sur nos instructions, nous nous engageons à ce que vos données personnelles ne soient pas partagées ou divulguées pour des finalités autres que celles décrites dans la présente Charte. Nous pouvons cependant être amenés à transmettre vos données, pour des finalités autres que celles prévues dans la Charte, dans les cas où leur communication est requise par la loi et les autorités gouvernementales.

+

 

+

TRANSFERT DE VOS DONNÉES EN DEHORS DE L’ESPACE ECONOMIQUE EUROPEEN :

+

Nous nous informons que vos données personnelles ne sont pas traitées en dehors de l’Espace Economique Européen (EEE). En cas de changement, nous vous en avertirons et mettrons tout en œuvre pour que ce transfert international de données dispose d’un niveau et de garanties de sécurité adéquats. 

+

 

+

UTILISATION DES COOKIES :

+

Les cookies sont des petits fichiers textes contenant des informations propres vous concernant stockés sur le disque dur de l’équipement informatique avec lequel vous vous êtes connectés sur le site internet et pouvant être lus seulement par le serveur qui l’a fourni. Les cookies sont gérés par votre navigateur internet.

+

Les cookies indiquent la fréquentation des pages que vous visitez, ce qui nous aide à connaître les informations qui vous intéressent. Cela permet de vous offrir plus de contenu qui vous intéresse et moins de contenu qui ne vous intéresse pas.

+

Les cookies vous permettent de stocker des préférences et les noms des utilisateurs, enregistrer des produits et des services, personnaliser des pages ou faire de la publicité ciblée.

+

A travers ces cookies, vos données personnelles peuvent être recueilles telles que :

  • des informations concernant le navigateur de votre appareil et le système d'exploitation que vous utilisez ;
  • l’adresse IP de l'appareil que vous utilisez ;
  • les pages Web que vous consultez ;
  • les liens sur lesquelles vous cliquez pendant que vous êtes en interaction avec nos services.

Le site internet de la Société Bretonne de Volaille https://www.idhalal.fr/ utilise deux types de cookies qui ont des finalités différentes. Tous les cookies de type non techniques doivent recueillir votre consentement avant d’être installés. Vous pouvez donner votre consentement sur la page d’accueil du site internet, en cliquant sur « accepter ».

  • Les cookies strictement nécessaires et fonctionnels

Ces cookies sont nécessaires au bon fonctionnement du site internet. Ils vous permettent d’utiliser les principales fonctionnalités. Sans ces cookies, vous ne pourrez pas utiliser normalement le site internet.

  • Les cookies analytiques

Ces cookies nous permettent de connaître l’utilisation et les performances du site internet et d’en améliorer son fonctionnement.

+

 

+

Vous avez le choix : 

  • d’accepter ces cookies en cliquant sur le bouton « Accepter » présent sur le bandeau Cookies, apparaissant au bas de votre page internet. Tant que vous n’avez pas accepté, les cookies ne pourront être stockés sur votre appareil ; ou
  • de refuser ces cookies via le bouton « Refuser » et/ou « Paramétrer » présent sur le bandeau Cookies.

 

+

Lorsque vous cliquez sur le bouton « Paramétrer » du bandeau Cookies, une liste s’affiche présentant les différents types de cookies par finalité. Si vous consentez au dépôt des cookies, il vous suffit de les activer puis de cliquer sur le bouton « Enregistrer » en bas de la fenêtre. Si vous refusez le dépôt des cookies, il vous suffit de cliquer sur le bouton « Enregistrer », le dépôt des cookies étant par défaut désactivé.  

+

Pour en savoir plus sur la désactivation des cookies via votre navigateur internet :

+

Internet Explorer: http://windows.microsoft.com/fr-FR/windows-vista/Block-or-allow-cookies 

+

Chrome: http://support.google.com/chrome/bin/answer.py?hl=fr&hlrm=en&answer=95647 

+

Firefox: http://support.mozilla.org/fr/kb/Activer%20et%20d%C3%A9sactiver%20les%20cookies 

+

Safari: https://support.apple.com/fr-fr/guide/safari/sfri11471/mac 

+

La durée de conservation de ces informations dans votre appareil est d’une durée maximale de 13 mois. A l’expiration de ce délai, nous recueillerons de nouveau votre consentement.

+

Pour plus d’informations sur le paramétrage de vos cookies, vous pouvez consulter :

+

http://www.youronlinechoices.com/fr/ 

+

https://www.allaboutcookies.org/

+

 

+

SITES INTERNET DE TIERS

+

Le site internet de la société Bretonne de Volaille peut être associé à des sites internet tiers. Les sites hébergés par des tiers sont hors de notre contrôle. Lorsque vous renseignez des données personnelles sur un site internet tiers, le traitement de ces données n'est pas effectué sur notre site internet, mais sur le site internet tiers concerné. Toute donnée personnelle que vous fournissez sera collectée et traitée conformément à la politique relative à la confidentialité des données du tiers concerné. 

+

Par conséquent, nous n'assumons aucune responsabilité concernant les pratiques exercées par lesdits tiers en matière de protection des données.

+

 

+

DROIT APPLICABLE

+

La présente Charte de confidentialité est régie et sera interprétée conformément au droit français.

+

 

+

NOUS CONTACTER

+

Si vous avez des questions, remarques ou réclamations relatives à la présente Charte de confidentialité, ou le traitement de vos données personnelles, veuillez-nous contacter à l’adresse e-mail suivante :

+

https://www.ldc.fr/rgpd/professionnels/

+

https://www.ldc.fr/rgpd/consommateurs/

"; + $charte->save(); + } +} diff --git a/database/seeders/TitlesSeeder.php b/database/seeders/TitlesSeeder.php new file mode 100644 index 0000000..ad18afe --- /dev/null +++ b/database/seeders/TitlesSeeder.php @@ -0,0 +1,45 @@ +page = Page::marqueBloc2(); + $title->title = 'Nos valeurs'; + $title->text = 'Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr'; + + $title->save(); + + $title = new Title(); + $title->page = Page::marqueBloc4(); + $title->title = 'Nos engagements'; + + $title->save(); + + $title = new Title(); + $title->page = Page::newsPosts(); + $title->title = 'Actualités'; + $title->text = 'lorem ipsum'; + + $title->save(); + + $title = new Title(); + $title->page = Page::foodBloc2(); + $title->title = 'Les avantges de Food Service'; + $title->text = 'Doux lance sa marque consacrée aux professionnels de la restauration. Une sélection de produits pensée pour facilitrer la vie grâce à une offre évolutive en fonction des besoins.'; + + $title->save(); + } +} diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php new file mode 100644 index 0000000..c78f07f --- /dev/null +++ b/database/seeders/UserSeeder.php @@ -0,0 +1,34 @@ +role = Role::admin(); + $user->name = 'Seb'; + $user->email = 'seb.hattry@gmail.com'; + $user->password = 'pwd00895'; + + $user->save(); + + $user = new User(); + $user->role = Role::admin(); + $user->name = 'OL'; + $user->email = 'admin@toto.com'; + $user->password = 'password'; + + $user->save(); + } +} diff --git a/package-lock.json b/package-lock.json index a644a66..65349ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,17 +11,22 @@ }, "devDependencies": { "axios": "^0.21", + "bootstrap": "^5.1.3", "clean-webpack-plugin": "^3.0.0", + "jquery": "^3.6", "laravel-mix": "^6.0.6", "laravel-mix-polyfill": "^3.0.1", "lodash": "^4.17.19", + "popper.js": "^1.16.1", "postcss": "^8.1.14", "resolve-url-loader": "^4.0.0", - "sass": "^1.43.4", - "sass-loader": "^12.1.0", + "sass": "^1.32.11", + "sass-loader": "^11.0.1", + "ui": "^0.2.4", "vue-loader": "^15.9.8", + "vue-select": "^3.16.0", "vue-template-compiler": "^2.6.14", - "webpack": "^5.61.0" + "webpack": "^5.64.4" } }, "node_modules/@babel/code-frame": { @@ -1752,6 +1757,17 @@ "node": ">= 8" } }, + "node_modules/@popperjs/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz", + "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==", + "dev": true, + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -2696,6 +2712,20 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "node_modules/bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "@popperjs/core": "^2.10.2" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -5581,6 +5611,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", + "dev": true + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6824,6 +6860,17 @@ "node": ">=8" } }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -7967,16 +8014,16 @@ } }, "node_modules/sass-loader": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.3.0.tgz", - "integrity": "sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-11.1.1.tgz", + "integrity": "sha512-fOCp/zLmj1V1WHDZbUbPgrZhA7HKXHEqkslzB+05U5K9SbSbcmH91C7QLW31AsXikxUMaxXRhhcqWZAxUMLDyA==", "dev": true, "dependencies": { "klona": "^2.0.4", "neo-async": "^2.6.2" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -8356,6 +8403,15 @@ "node": ">= 0.6" } }, + "node_modules/std": { + "version": "0.1.40", + "resolved": "https://registry.npmjs.org/std/-/std-0.1.40.tgz", + "integrity": "sha1-Nnil9lCU2eG2teJu2/wCErg0K3E=", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/std-env": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.0.1.tgz", @@ -8737,6 +8793,18 @@ "node": ">= 0.6" } }, + "node_modules/ui": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/ui/-/ui-0.2.4.tgz", + "integrity": "sha1-ObfICGsrG2SnLGQ3w43cfE5Og20=", + "dev": true, + "dependencies": { + "std": "0.1.x" + }, + "engines": { + "node": "*" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -8934,6 +9002,15 @@ } } }, + "node_modules/vue-select": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-3.16.0.tgz", + "integrity": "sha512-F0x7HXTUc5eq7YSjR0uX77RGA+Yk2+I8aMW+NePyPqRX9OPSiDtKpezFIFhnhxqrOvMh4uVR0jHkXIDmzs6nYQ==", + "dev": true, + "peerDependencies": { + "vue": "2.x" + } + }, "node_modules/vue-style-loader": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", @@ -8961,9 +9038,9 @@ "dev": true }, "node_modules/watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.0.tgz", + "integrity": "sha512-MnN0Q1OsvB/GGHETrFeZPQaOelWh/7O+EiFlj8sM9GPjtQkis7k01aAxrg/18kTfoIVcLL+haEVFlXDaSRwKRw==", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -8982,9 +9059,9 @@ } }, "node_modules/webpack": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.62.0.tgz", - "integrity": "sha512-4SyIaLQxm0JjUrQQ4UTHUU19rgl6hzidd8tYOBB3y78DKLBAVI777SYnl3f8e1XkHLYuILcyC7oUVs4mUZYKRg==", + "version": "5.64.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.64.4.tgz", + "integrity": "sha512-LWhqfKjCLoYJLKJY8wk2C3h77i8VyHowG3qYNZiIqD6D0ZS40439S/KVuc/PY48jp2yQmy0mhMknq8cys4jFMw==", "dependencies": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.50", @@ -9008,8 +9085,8 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.0" + "watchpack": "^2.3.0", + "webpack-sources": "^3.2.2" }, "bin": { "webpack": "bin/webpack.js" @@ -9351,9 +9428,9 @@ } }, "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", + "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", "engines": { "node": ">=10.13.0" } @@ -10756,6 +10833,13 @@ "fastq": "^1.6.0" } }, + "@popperjs/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz", + "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==", + "dev": true, + "peer": true + }, "@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -11578,6 +11662,13 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "dev": true, + "requires": {} + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -13807,6 +13898,12 @@ } } }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -14760,6 +14857,12 @@ "find-up": "^4.0.0" } }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "dev": true + }, "portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -15553,9 +15656,9 @@ } }, "sass-loader": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.3.0.tgz", - "integrity": "sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-11.1.1.tgz", + "integrity": "sha512-fOCp/zLmj1V1WHDZbUbPgrZhA7HKXHEqkslzB+05U5K9SbSbcmH91C7QLW31AsXikxUMaxXRhhcqWZAxUMLDyA==", "dev": true, "requires": { "klona": "^2.0.4", @@ -15871,6 +15974,12 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, + "std": { + "version": "0.1.40", + "resolved": "https://registry.npmjs.org/std/-/std-0.1.40.tgz", + "integrity": "sha1-Nnil9lCU2eG2teJu2/wCErg0K3E=", + "dev": true + }, "std-env": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.0.1.tgz", @@ -16141,6 +16250,15 @@ "mime-types": "~2.1.24" } }, + "ui": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/ui/-/ui-0.2.4.tgz", + "integrity": "sha1-ObfICGsrG2SnLGQ3w43cfE5Og20=", + "dev": true, + "requires": { + "std": "0.1.x" + } + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -16297,6 +16415,13 @@ "vue-style-loader": "^4.1.0" } }, + "vue-select": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-3.16.0.tgz", + "integrity": "sha512-F0x7HXTUc5eq7YSjR0uX77RGA+Yk2+I8aMW+NePyPqRX9OPSiDtKpezFIFhnhxqrOvMh4uVR0jHkXIDmzs6nYQ==", + "dev": true, + "requires": {} + }, "vue-style-loader": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", @@ -16324,9 +16449,9 @@ "dev": true }, "watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.0.tgz", + "integrity": "sha512-MnN0Q1OsvB/GGHETrFeZPQaOelWh/7O+EiFlj8sM9GPjtQkis7k01aAxrg/18kTfoIVcLL+haEVFlXDaSRwKRw==", "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -16342,9 +16467,9 @@ } }, "webpack": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.62.0.tgz", - "integrity": "sha512-4SyIaLQxm0JjUrQQ4UTHUU19rgl6hzidd8tYOBB3y78DKLBAVI777SYnl3f8e1XkHLYuILcyC7oUVs4mUZYKRg==", + "version": "5.64.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.64.4.tgz", + "integrity": "sha512-LWhqfKjCLoYJLKJY8wk2C3h77i8VyHowG3qYNZiIqD6D0ZS40439S/KVuc/PY48jp2yQmy0mhMknq8cys4jFMw==", "requires": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.50", @@ -16368,8 +16493,8 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.0" + "watchpack": "^2.3.0", + "webpack-sources": "^3.2.2" }, "dependencies": { "schema-utils": { @@ -16383,9 +16508,9 @@ } }, "webpack-sources": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", + "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==" } } }, diff --git a/package.json b/package.json index 2c4f040..065ed4f 100644 --- a/package.json +++ b/package.json @@ -11,17 +11,22 @@ }, "devDependencies": { "axios": "^0.21", + "bootstrap": "^5.1.3", "clean-webpack-plugin": "^3.0.0", + "jquery": "^3.6", "laravel-mix": "^6.0.6", "laravel-mix-polyfill": "^3.0.1", "lodash": "^4.17.19", + "popper.js": "^1.16.1", "postcss": "^8.1.14", "resolve-url-loader": "^4.0.0", - "sass": "^1.43.4", - "sass-loader": "^12.1.0", + "sass": "^1.32.11", + "sass-loader": "^11.0.1", + "ui": "^0.2.4", "vue-loader": "^15.9.8", + "vue-select": "^3.16.0", "vue-template-compiler": "^2.6.14", - "webpack": "^5.61.0" + "webpack": "^5.64.4" }, "dependencies": { "animate.css": "^4.1.1", diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..960dda0 --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,91 @@ + + + + + app/ + config/ + database/factories + database/seeders + routes/ + tests/ + + + + + Created with the PHP Coding Standard Generator. http://edorian.github.com/php-coding-standard-generator/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + */database/migrations/* + + diff --git a/public/assets/fonts/Barlow-Bold.woff b/public/assets/fonts/Barlow-Bold.woff deleted file mode 100644 index 326535d..0000000 Binary files a/public/assets/fonts/Barlow-Bold.woff and /dev/null differ diff --git a/public/assets/fonts/Barlow-Bold.woff2 b/public/assets/fonts/Barlow-Bold.woff2 deleted file mode 100644 index 808709c..0000000 Binary files a/public/assets/fonts/Barlow-Bold.woff2 and /dev/null differ diff --git a/public/assets/fonts/Barlow-Regular.woff b/public/assets/fonts/Barlow-Regular.woff deleted file mode 100644 index a505a72..0000000 Binary files a/public/assets/fonts/Barlow-Regular.woff and /dev/null differ diff --git a/public/assets/fonts/Barlow-Regular.woff2 b/public/assets/fonts/Barlow-Regular.woff2 deleted file mode 100644 index b5bafe9..0000000 Binary files a/public/assets/fonts/Barlow-Regular.woff2 and /dev/null differ diff --git a/public/assets/fonts/barlow/.DS_Store b/public/assets/fonts/barlow/.DS_Store deleted file mode 100644 index d08e22f..0000000 Binary files a/public/assets/fonts/barlow/.DS_Store and /dev/null differ diff --git a/public/assets/fonts/barlow/Barlow-Bold.woff b/public/assets/fonts/barlow/Barlow-Bold.woff deleted file mode 100644 index 326535d..0000000 Binary files a/public/assets/fonts/barlow/Barlow-Bold.woff and /dev/null differ diff --git a/public/assets/fonts/barlow/Barlow-Bold.woff2 b/public/assets/fonts/barlow/Barlow-Bold.woff2 deleted file mode 100644 index 808709c..0000000 Binary files a/public/assets/fonts/barlow/Barlow-Bold.woff2 and /dev/null differ diff --git a/public/assets/fonts/barlow/Barlow-Regular.woff b/public/assets/fonts/barlow/Barlow-Regular.woff deleted file mode 100644 index a505a72..0000000 Binary files a/public/assets/fonts/barlow/Barlow-Regular.woff and /dev/null differ diff --git a/public/assets/fonts/barlow/Barlow-Regular.woff2 b/public/assets/fonts/barlow/Barlow-Regular.woff2 deleted file mode 100644 index b5bafe9..0000000 Binary files a/public/assets/fonts/barlow/Barlow-Regular.woff2 and /dev/null differ diff --git a/public/assets/fonts/barlow/demo.html b/public/assets/fonts/barlow/demo.html deleted file mode 100644 index fe795bb..0000000 --- a/public/assets/fonts/barlow/demo.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - - Transfonter demo - - - - -
-
-

Barlow Bold

-
.your-style {
-    font-family: 'Barlow';
-    font-weight: bold;
-    font-style: normal;
-}
-
-<link rel="preload" href="Barlow-Bold.woff2" as="font" type="font/woff2" crossorigin>
-
-

- abcdefghijklmnopqrstuvwxyz
-ABCDEFGHIJKLMNOPQRSTUVWXYZ
- 0123456789.:,;()*!?'@#<>$%&^+-=~ -

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-
-
- -
-

Barlow Regular

-
.your-style {
-    font-family: 'Barlow';
-    font-weight: normal;
-    font-style: normal;
-}
-
-<link rel="preload" href="Barlow-Regular.woff2" as="font" type="font/woff2" crossorigin>
-
-

- abcdefghijklmnopqrstuvwxyz
-ABCDEFGHIJKLMNOPQRSTUVWXYZ
- 0123456789.:,;()*!?'@#<>$%&^+-=~ -

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-

The quick brown fox jumps over the lazy dog.

-
-
- -
- - diff --git a/public/assets/fonts/barlow/stylesheet.css b/public/assets/fonts/barlow/stylesheet.css deleted file mode 100644 index 18e803b..0000000 --- a/public/assets/fonts/barlow/stylesheet.css +++ /dev/null @@ -1,18 +0,0 @@ -@font-face { - font-family: 'Barlow'; - src: url('Barlow-Bold.woff2') format('woff2'), - url('Barlow-Bold.woff') format('woff'); - font-weight: bold; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Barlow'; - src: url('Barlow-Regular.woff2') format('woff2'), - url('Barlow-Regular.woff') format('woff'); - font-weight: normal; - font-style: normal; - font-display: swap; -} - diff --git a/public/assets/images/.DS_Store b/public/assets/images/.DS_Store deleted file mode 100644 index 382177f..0000000 Binary files a/public/assets/images/.DS_Store and /dev/null differ diff --git a/public/assets/images/Logo_MadeInFrance.jpg b/public/assets/images/Logo_MadeInFrance.jpg deleted file mode 100644 index b32540d..0000000 Binary files a/public/assets/images/Logo_MadeInFrance.jpg and /dev/null differ diff --git a/public/assets/images/Logo_MadeInFrance_mobile.jpg b/public/assets/images/Logo_MadeInFrance_mobile.jpg deleted file mode 100644 index e5980ab..0000000 Binary files a/public/assets/images/Logo_MadeInFrance_mobile.jpg and /dev/null differ diff --git a/public/assets/images/a-propos.jpg b/public/assets/images/a-propos.jpg deleted file mode 100644 index 2d0696c..0000000 Binary files a/public/assets/images/a-propos.jpg and /dev/null differ diff --git a/public/assets/images/arrow-back.jpg b/public/assets/images/arrow-back.jpg deleted file mode 100644 index ad4c2bd..0000000 Binary files a/public/assets/images/arrow-back.jpg and /dev/null differ diff --git a/public/assets/images/big-doux.jpg b/public/assets/images/big-doux.jpg deleted file mode 100644 index 15d9187..0000000 Binary files a/public/assets/images/big-doux.jpg and /dev/null differ diff --git a/public/assets/images/blog.jpg b/public/assets/images/blog.jpg deleted file mode 100644 index 28b8543..0000000 Binary files a/public/assets/images/blog.jpg and /dev/null differ diff --git a/public/assets/images/burger-fond.jpg b/public/assets/images/burger-fond.jpg deleted file mode 100644 index 3b7b53d..0000000 Binary files a/public/assets/images/burger-fond.jpg and /dev/null differ diff --git a/public/assets/images/burger.jpg b/public/assets/images/burger.jpg deleted file mode 100644 index 98d9e20..0000000 Binary files a/public/assets/images/burger.jpg and /dev/null differ diff --git a/public/assets/images/caroussel_arrow-left.png b/public/assets/images/caroussel_arrow-left.png deleted file mode 100644 index 9da3273..0000000 Binary files a/public/assets/images/caroussel_arrow-left.png and /dev/null differ diff --git a/public/assets/images/caroussel_arrow-right.png b/public/assets/images/caroussel_arrow-right.png deleted file mode 100644 index 0da6eab..0000000 Binary files a/public/assets/images/caroussel_arrow-right.png and /dev/null differ diff --git a/public/assets/images/cat_bckg.jpg b/public/assets/images/cat_bckg.jpg deleted file mode 100644 index c64c535..0000000 Binary files a/public/assets/images/cat_bckg.jpg and /dev/null differ diff --git a/public/assets/images/collaborateurs.jpg b/public/assets/images/collaborateurs.jpg deleted file mode 100644 index 2ec7765..0000000 Binary files a/public/assets/images/collaborateurs.jpg and /dev/null differ diff --git a/public/assets/images/confiance.png b/public/assets/images/confiance.png deleted file mode 100644 index 4043fec..0000000 Binary files a/public/assets/images/confiance.png and /dev/null differ diff --git a/public/assets/images/cookrange.jpg b/public/assets/images/cookrange.jpg deleted file mode 100644 index c552d3b..0000000 Binary files a/public/assets/images/cookrange.jpg and /dev/null differ diff --git a/public/assets/images/coq.png b/public/assets/images/coq.png deleted file mode 100644 index de637be..0000000 Binary files a/public/assets/images/coq.png and /dev/null differ diff --git a/public/assets/images/cuisine.jpg b/public/assets/images/cuisine.jpg deleted file mode 100644 index 49e3677..0000000 Binary files a/public/assets/images/cuisine.jpg and /dev/null differ diff --git a/public/assets/images/cuisinier.jpg b/public/assets/images/cuisinier.jpg deleted file mode 100644 index 01baa9e..0000000 Binary files a/public/assets/images/cuisinier.jpg and /dev/null differ diff --git a/public/assets/images/cuisto.jpg b/public/assets/images/cuisto.jpg deleted file mode 100644 index fe0565c..0000000 Binary files a/public/assets/images/cuisto.jpg and /dev/null differ diff --git a/public/assets/images/cuit.jpg b/public/assets/images/cuit.jpg deleted file mode 100644 index b85cfc1..0000000 Binary files a/public/assets/images/cuit.jpg and /dev/null differ diff --git a/public/assets/images/decoupe.jpg b/public/assets/images/decoupe.jpg deleted file mode 100644 index 91237a5..0000000 Binary files a/public/assets/images/decoupe.jpg and /dev/null differ diff --git a/public/assets/images/doux-halal.jpg b/public/assets/images/doux-halal.jpg deleted file mode 100644 index 32c3eca..0000000 Binary files a/public/assets/images/doux-halal.jpg and /dev/null differ diff --git a/public/assets/images/doux-nuggets.jpg b/public/assets/images/doux-nuggets.jpg deleted file mode 100644 index 2ae680f..0000000 Binary files a/public/assets/images/doux-nuggets.jpg and /dev/null differ diff --git a/public/assets/images/doux-selection.jpg b/public/assets/images/doux-selection.jpg deleted file mode 100644 index ad48519..0000000 Binary files a/public/assets/images/doux-selection.jpg and /dev/null differ diff --git a/public/assets/images/empreintes.png b/public/assets/images/empreintes.png deleted file mode 100644 index 9cd1d7b..0000000 Binary files a/public/assets/images/empreintes.png and /dev/null differ diff --git a/public/assets/images/expertise.jpg b/public/assets/images/expertise.jpg deleted file mode 100644 index 79f8c3a..0000000 Binary files a/public/assets/images/expertise.jpg and /dev/null differ diff --git a/public/assets/images/food-service.png b/public/assets/images/food-service.png deleted file mode 100644 index 38d2324..0000000 Binary files a/public/assets/images/food-service.png and /dev/null differ diff --git a/public/assets/images/footer.jpg b/public/assets/images/footer.jpg deleted file mode 100644 index c39cced..0000000 Binary files a/public/assets/images/footer.jpg and /dev/null differ diff --git a/public/assets/images/four.png b/public/assets/images/four.png deleted file mode 100644 index bc0f960..0000000 Binary files a/public/assets/images/four.png and /dev/null differ diff --git a/public/assets/images/frise-blue.jpg b/public/assets/images/frise-blue.jpg deleted file mode 100644 index 0d2e6dc..0000000 Binary files a/public/assets/images/frise-blue.jpg and /dev/null differ diff --git a/public/assets/images/frise.jpg b/public/assets/images/frise.jpg deleted file mode 100644 index 8c72771..0000000 Binary files a/public/assets/images/frise.jpg and /dev/null differ diff --git a/public/assets/images/friteuse.png b/public/assets/images/friteuse.png deleted file mode 100644 index c3ea0da..0000000 Binary files a/public/assets/images/friteuse.png and /dev/null differ diff --git a/public/assets/images/gout.png b/public/assets/images/gout.png deleted file mode 100644 index 37f7a97..0000000 Binary files a/public/assets/images/gout.png and /dev/null differ diff --git a/public/assets/images/image-sample.jpg b/public/assets/images/image-sample.jpg deleted file mode 100644 index 8c5512c..0000000 Binary files a/public/assets/images/image-sample.jpg and /dev/null differ diff --git a/public/assets/images/image1.png b/public/assets/images/image1.png deleted file mode 100644 index 473507a..0000000 Binary files a/public/assets/images/image1.png and /dev/null differ diff --git a/public/assets/images/image2.png b/public/assets/images/image2.png deleted file mode 100644 index b5a5d0c..0000000 Binary files a/public/assets/images/image2.png and /dev/null differ diff --git a/public/assets/images/image3.png b/public/assets/images/image3.png deleted file mode 100644 index 2dbfb42..0000000 Binary files a/public/assets/images/image3.png and /dev/null differ diff --git a/public/assets/images/innovation.png b/public/assets/images/innovation.png deleted file mode 100644 index ce01abd..0000000 Binary files a/public/assets/images/innovation.png and /dev/null differ diff --git a/public/assets/images/label.jpg b/public/assets/images/label.jpg deleted file mode 100644 index 768680d..0000000 Binary files a/public/assets/images/label.jpg and /dev/null differ diff --git a/public/assets/images/logo-doux.png b/public/assets/images/logo-doux.png deleted file mode 100644 index ea3ff18..0000000 Binary files a/public/assets/images/logo-doux.png and /dev/null differ diff --git a/public/assets/images/panes-frais.jpg b/public/assets/images/panes-frais.jpg deleted file mode 100644 index b25a261..0000000 Binary files a/public/assets/images/panes-frais.jpg and /dev/null differ diff --git a/public/assets/images/panes.jpg b/public/assets/images/panes.jpg deleted file mode 100644 index 13182f9..0000000 Binary files a/public/assets/images/panes.jpg and /dev/null differ diff --git a/public/assets/images/partage.png b/public/assets/images/partage.png deleted file mode 100644 index 8da5ab9..0000000 Binary files a/public/assets/images/partage.png and /dev/null differ diff --git a/public/assets/images/personnage.png b/public/assets/images/personnage.png deleted file mode 100644 index cb15f5a..0000000 Binary files a/public/assets/images/personnage.png and /dev/null differ diff --git a/public/assets/images/picto-localisation.png b/public/assets/images/picto-localisation.png deleted file mode 100644 index b3895d2..0000000 Binary files a/public/assets/images/picto-localisation.png and /dev/null differ diff --git a/public/assets/images/plaisir.png b/public/assets/images/plaisir.png deleted file mode 100644 index f84efb4..0000000 Binary files a/public/assets/images/plaisir.png and /dev/null differ diff --git a/public/assets/images/planete.jpg b/public/assets/images/planete.jpg deleted file mode 100644 index 6b23ad1..0000000 Binary files a/public/assets/images/planete.jpg and /dev/null differ diff --git a/public/assets/images/poele.png b/public/assets/images/poele.png deleted file mode 100644 index ccbc85e..0000000 Binary files a/public/assets/images/poele.png and /dev/null differ diff --git a/public/assets/images/pranks.jpg b/public/assets/images/pranks.jpg deleted file mode 100644 index d6a8cfe..0000000 Binary files a/public/assets/images/pranks.jpg and /dev/null differ diff --git a/public/assets/images/prez-img.jpg b/public/assets/images/prez-img.jpg deleted file mode 100644 index 48e86c4..0000000 Binary files a/public/assets/images/prez-img.jpg and /dev/null differ diff --git a/public/assets/images/produit-samplebis.jpg b/public/assets/images/produit-samplebis.jpg deleted file mode 100644 index b24ec2d..0000000 Binary files a/public/assets/images/produit-samplebis.jpg and /dev/null differ diff --git a/public/assets/images/produit.jpg b/public/assets/images/produit.jpg deleted file mode 100644 index b7d8e06..0000000 Binary files a/public/assets/images/produit.jpg and /dev/null differ diff --git a/public/assets/images/produits.jpg b/public/assets/images/produits.jpg deleted file mode 100644 index b0f45a4..0000000 Binary files a/public/assets/images/produits.jpg and /dev/null differ diff --git a/public/assets/images/qualite.png b/public/assets/images/qualite.png deleted file mode 100644 index 1d4677f..0000000 Binary files a/public/assets/images/qualite.png and /dev/null differ diff --git a/public/assets/images/recettes.png b/public/assets/images/recettes.png deleted file mode 100644 index fd501b9..0000000 Binary files a/public/assets/images/recettes.png and /dev/null differ diff --git a/public/assets/images/references.jpg b/public/assets/images/references.jpg deleted file mode 100644 index ba16ece..0000000 Binary files a/public/assets/images/references.jpg and /dev/null differ diff --git a/public/assets/images/reparation.png b/public/assets/images/reparation.png deleted file mode 100644 index 3e3a94e..0000000 Binary files a/public/assets/images/reparation.png and /dev/null differ diff --git a/public/assets/images/repas.jpg b/public/assets/images/repas.jpg deleted file mode 100644 index e55e6ee..0000000 Binary files a/public/assets/images/repas.jpg and /dev/null differ diff --git a/public/assets/images/restauration.jpg b/public/assets/images/restauration.jpg deleted file mode 100644 index 49c871c..0000000 Binary files a/public/assets/images/restauration.jpg and /dev/null differ diff --git a/public/assets/images/restauration.png b/public/assets/images/restauration.png deleted file mode 100644 index 1ceb327..0000000 Binary files a/public/assets/images/restauration.png and /dev/null differ diff --git a/public/assets/images/sans-label.jpg b/public/assets/images/sans-label.jpg deleted file mode 100644 index e4052f1..0000000 Binary files a/public/assets/images/sans-label.jpg and /dev/null differ diff --git a/public/assets/images/saucisses.jpg b/public/assets/images/saucisses.jpg deleted file mode 100644 index 97067d2..0000000 Binary files a/public/assets/images/saucisses.jpg and /dev/null differ diff --git a/public/assets/images/savoir-faire.png b/public/assets/images/savoir-faire.png deleted file mode 100644 index c9038f3..0000000 Binary files a/public/assets/images/savoir-faire.png and /dev/null differ diff --git a/public/assets/images/search.png b/public/assets/images/search.png deleted file mode 100644 index 296d77c..0000000 Binary files a/public/assets/images/search.png and /dev/null differ diff --git a/public/assets/images/site-production.jpg b/public/assets/images/site-production.jpg deleted file mode 100644 index 0abf2b7..0000000 Binary files a/public/assets/images/site-production.jpg and /dev/null differ diff --git a/public/assets/images/storyline.jpg b/public/assets/images/storyline.jpg deleted file mode 100644 index b533e8d..0000000 Binary files a/public/assets/images/storyline.jpg and /dev/null differ diff --git a/public/assets/images/title-icon.png b/public/assets/images/title-icon.png deleted file mode 100644 index 378bec3..0000000 Binary files a/public/assets/images/title-icon.png and /dev/null differ diff --git a/public/assets/images/video.jpg b/public/assets/images/video.jpg deleted file mode 100644 index 2bf8d18..0000000 Binary files a/public/assets/images/video.jpg and /dev/null differ diff --git a/public/assets/images/volaille-francaise.jpg b/public/assets/images/volaille-francaise.jpg deleted file mode 100644 index 0aaaf2d..0000000 Binary files a/public/assets/images/volaille-francaise.jpg and /dev/null differ diff --git a/public/assets/images/volaille.jpg b/public/assets/images/volaille.jpg deleted file mode 100644 index bb525c5..0000000 Binary files a/public/assets/images/volaille.jpg and /dev/null differ diff --git a/public/assets/images/volailles.jpg b/public/assets/images/volailles.jpg deleted file mode 100644 index e7b6cef..0000000 Binary files a/public/assets/images/volailles.jpg and /dev/null differ diff --git a/public/assets/images/zoom.jpg b/public/assets/images/zoom.jpg deleted file mode 100644 index 37e6f61..0000000 Binary files a/public/assets/images/zoom.jpg and /dev/null differ diff --git a/public/css/app.css b/public/css/app.css deleted file mode 100644 index 13c8cc3..0000000 --- a/public/css/app.css +++ /dev/null @@ -1,2051 +0,0 @@ -blockquote, body, dd, dl, dt, fieldset, figure, h1, h2, h3, h4, h5, h6, hr, html, iframe, legend, li, ol, p, pre, textarea, ul{ - margin:0; - padding:0; -} - -h1, h2, h3, h4, h5, h6{ - font-size:100%; - font-weight:normal; -} - -ul{ - list-style:none; -} - -button, input, select, textarea{ - margin:0; -} - -html{ - box-sizing:border-box; - font-family:sans-serif; -} - -*, *::after, *::before{ - box-sizing:inherit; -} - -img, video{ - height:auto; - max-width:100%; -} - -iframe{ - border:0; -} - -table{ - border-collapse:collapse; - border-spacing:0; -} - -td, th{ - padding:0; - text-align:left; -} - -@font-face{ - font-family:"barlow-regular"; - font-weight:normal; - src:url(/assets/fonts/Barlow-Regular.woff2?18f2f5707779b4ab7d75be55f63b75e9) format("woff2"), url(/assets/fonts/Barlow-Regular.woff?b01be197bee9b9a37cae8069396bf69c) format("woff"); -} -@font-face{ - font-family:"barlow-bold"; - font-weight:100; - src:url(/assets/fonts/Barlow-Bold.woff2?8bb7d2508e1369c8e08b3da2c21bf55f) format("woff2"), url(/assets/fonts/Barlow-Bold.woff?a8de7b19e6b093ca3c454afe8fcb2019) format("woff"); -} -html{ - font-size:100%; -} - -body{ - font-size:18px; - font-family:"barlow-regular", arial, sans-serif; - line-height:1.4; -} - -button{ - border:0 none; - background-color:transparent; - cursor:pointer; -} - -img{ - width:100%; -} - -#backtotop{ - display:none; - align-items:center; - justify-content:center; - position:fixed; - bottom:20px; - right:20px; - width:40px; - height:40px; - border-radius:40px; - background-color:#fccf1d; - z-index:99; -} -#backtotop .arrow{ - border:solid #fff; - border-width:0 3px 3px 0; - display:inline-block; - padding:3px; -} -#backtotop .arrow.up{ - transform:rotate(-135deg); -} - -#search{ - background-image:url(/assets/images/search.png?90bbe543d5d60da59e33cc8ad9986e8a); - background-size:contain; - background-repeat:no-repeat; - width:25px; - height:25px; - margin-left:25px; -} - -ul.more{ - margin-top:50px; -} -ul.more li{ - align-items:center; - position:relative; - padding-left:25px; - margin-bottom:30px; -} -ul.more li:last-of-type{ - margin-bottom:0; -} -ul.more li p:first-of-type{ - position:relative; -} -ul.more li:before{ - content:""; - position:absolute; - left:0; - top:15px; - width:13px; - height:13px; - background-color:#222f5c; - border-radius:50%; -} -ul.more li .label img{ - width:100px; -} - -ul.infos{ - display:flex; - justify-content:center; -} -ul.infos li{ - justify-content:center; - text-align:center; - color:#222f5c; - font-family:"barlow-bold", arial, sans-serif; -} -ul.infos span{ - display:flex; - justify-content:center; - align-items:center; - width:85px; - height:85px; - padding:20px; - margin:20px auto; - background-color:#fccf1d; - border-radius:50%; -} - -@media screen and (min-width: 800px){ - main{ - padding-top:100px; - } - - ul.more li p:first-of-type{ - font-size:30px; - } - - ul.infos li{ - flex-basis:20%; - } -} -@media screen and (max-width: 799px){ - main{ - padding-top:50px; - } - - ul.more li p:first-of-type{ - font-size:22px; - } -} -@media screen and (min-width: 1200px){ - .container{ - padding-top:60px; - padding-bottom:60px; - } - - .wrapper, -.wrapper-m{ - margin-left:auto; - margin-right:auto; - } - - .wrapper{ - width:1170px; - max-width:1170px; - } - - .wrapper-m{ - width:900px; - max-width:900px; - } -} -@media (max-width: 1199px){ - .wrapper, -.wrapper-m{ - width:100%; - max-width:100%; - padding-left:25px; - padding-right:25px; - } -} -@media screen and (max-width: 768px){ - .container{ - padding-top:60px; - padding-bottom:60px; - } -} -.align-center{ - text-align:center; -} - -.align-left{ - text-align:left; -} - -.bold{ - font-weight:bold; -} - -.ttu{ - text-transform:uppercase; -} - -.has-bckg--grey{ - background-color:#f5f5f5; -} - -.is-flex{ - display:flex; -} -.is-flex.vertical-center{ - align-items:center; -} -.is-flex.start{ - align-items:flex-start; -} -.is-flex.wrap{ - flex-wrap:wrap; -} -.is-flex.space-between{ - justify-content:space-between; -} - -.is-small{ - margin-top:35px; - margin-bottom:35px; - font-size:12px; -} - -.p-rel{ - position:relative; -} - -.p-abs{ - position:absolute; -} - -.color-red{ - color:#ff0400; -} - -.color-blue{ - color:#222f5c; -} - -.color-yellow{ - color:#fccf1d; -} - -.font-size-medium{ - font-size:45px; -} - -@media screen and (min-width: 800px){ - .is-flex .w50{ - flex-basis:50%; - } - .is-flex .w50:nth-child(2){ - margin-left:35px; - } - - .is-flex .w100{ - flex-basis:100%; - } - .is-flex .w100:nth-child(1){ - padding-right:185px; - } - .is-flex .w100:nth-child(2){ - margin-left:35px; - } -} -@media screen and (max-width: 799px){ - .is-flex{ - flex-direction:column; - } - - .smrt-align-center{ - text-align:center; - } -} -p{ - margin-bottom:10px; -} - -h1{ - margin-bottom:25px; -} - -h1, -.sectiontitle{ - position:relative; - padding-bottom:20px; -} - -.sectiontitle{ - font-size:38px; -} - -h1:not(.maintitle):after, -.sectiontitle:after{ - content:""; - position:absolute; - bottom:0; - left:0; - right:0; - width:20px; - height:2px; - margin-left:auto; - margin-right:auto; - background-color:#fccf1d; -} - -h1:not(.maintitle){ - display:inline-block; - position:relative; -} - -.maintitle{ - font-family:"barlow-bold", arial, sans-serif; -} - -.mascotte:before{ - content:url(/assets/images/coq.png?2c2ffbd44b298f35a5b6247e137d2593); - position:absolute; - left:-450px; - bottom:0; -} - -.cuisto:before{ - content:url(/assets/images/cuisto.jpg?4f579fbbef75bdf50eba45e8bdca1f38); - position:absolute; - left:-350px; - top:-50px; -} - -.h2{ - margin-bottom:0; - font-family:"barlow-regular", arial, sans-serif; -} - -h2:not(.punchline-module__title), -h3:not(.product-card__title){ - margin-bottom:25px; -} - -h3:not(.product-card__title):not(:first-child){ - margin-top:25px; -} - -h3{ - font-family:"barlow-bold", arial, sans-serif; -} - -@media screen and (min-width: 800px){ - h1, -h2{ - font-size:48px; - } - - h2, -.h2, -h3:not(.item__title, .product-card__title){ - font-size:30px; - } -} -@media screen and (max-width: 799px){ - h1{ - font-size:32px; - } - - h2{ - font-size:18px; - } - - h2, -.h2, -h3:not(.item__title, .product-card__title){ - font-size:24px; - } -} -.cta{ - display:inline-block; - min-width:180px; - margin-top:25px; - padding:15px; - font-size:15px; - font-family:"barlow-bold", arial, sans-serif; - text-align:center; - text-transform:uppercase; - border:1px solid #fccf1d; - background-color:#fff; - border-radius:30px; -} -.cta:hover{ - color:#fff; - background-color:#fccf1d; -} - -.link, -.cta{ - color:#fccf1d; - text-decoration:none; -} - -.breadcrumb{ - position:absolute; - top:20px; - align-items:center; - color:#8b4437; - font-size:calc(18px * 0.85); - z-index:2; -} -.breadcrumb a:first-of-type{ - margin-right:5px; -} -.breadcrumb a:nth-of-type(2){ - margin-right:5px; - margin-left:5px; -} -.breadcrumb:before{ - content:url(/assets/images/arrow-back.jpg?b995a9d20eaaee831944babd9df5bbc4); - margin-right:25px; -} - -@media screen and (max-width: 799px){ - .product-template .breadcrumb{ - display:none; - } -} -.site-header{ - position:fixed; - left:0; - right:0; - font-family:"barlow-bold", arial, sans-serif; - background-color:#fccf1d; - box-shadow:0 2px 8px rgba(12, 20, 23, 0.15); - z-index:99; -} -.site-header .wrapper{ - display:flex; - align-items:center; -} -.site-header .logotype{ - top:0; - left:1em; - width:25%; - z-index:1; -} -.site-header .logotype img{ - width:200px; -} -.site-header > span{ - width:25%; - text-align:right; -} -.site-header nav li{ - display:inline-block; -} -.site-header nav a{ - color:#222f5c; - text-decoration:none; -} -.site-header nav a:hover{ - color:#ff0400; -} -.site-header .traduction{ - display:flex; -} -.site-header .traduction li{ - margin-right:15px; -} -.site-header .traduction li a{ - color:#222f5c; - text-transform:uppercase; - text-decoration:none; -} -.site-header .traduction li.current a{ - color:#ff0400; -} -.site-header .traduction li:last-of-type{ - margin-right:0; -} - -@media screen and (min-width: 800px){ - .site-header .wrapper{ - justify-content:space-between; - height:100px; - } -} -@media screen and (max-width: 799px){ - .site-header .wrapper{ - justify-content:flex-end; - height:50px; - } -} -.menu-overlay__checkbox{ - display:none; -} - -@media screen and (min-width: 800px){ - .menu{ - width:40%; - margin-left:300px; - text-transform:uppercase; - } - .menu-overlay__btn{ - display:none; - } - .menu .menu__list{ - display:flex; - justify-content:space-between; - } - .menu a{ - display:inline-block; - color:#222f5c; - text-decoration:none; - } - .menu a:hover{ - color:#ff0400; - } - .menu a.active{ - position:relative; - color:#ff0400; - } - .menu a.active:before{ - content:""; - position:absolute; - top:-60px; - left:0; - right:0; - width:75px; - height:4px; - margin-left:auto; - margin-right:auto; - background-color:#fccf1d; - } - .menu .only-smrt{ - display:none; - } -} -@media screen and (max-width: 799px){ - .menu{ - order:2; - } - .menu .only-smrt a{ - color:#ff0400; - } - .menu label{ - display:flex; - align-items:flex-start; - justify-content:center; - position:fixed; - width:2.8em; - height:2.8em; - z-index:9999; - } - .menu__list{ - display:none; - } - .menu__item{ - padding:1em; - border-bottom:solid 1px #0c1417; - } - .menu__item:last-child{ - border-bottom-width:0; - } - .menu .menu-overlay{ - position:fixed; - display:flex; - right:0; - z-index:100; - } - .menu .menu-overlay__icon{ - display:block; - position:relative; - width:1.5em; - height:0.1em; - background:#fff; - transition:0.4s; - } - .menu .menu-overlay__icon:after, .menu .menu-overlay__icon:before{ - content:""; - display:block; - position:absolute; - width:100%; - height:0.1em; - background:#fff; - border-radius:2em; - transition:0.4s; - } - .menu .menu-overlay__icon:before{ - top:-10px; - } - .menu .menu-overlay__icon:after{ - top:10px; - } - .menu .menu-overlay__btn{ - display:flex; - justify-content:center; - align-items:center; - top:0; - right:20px; - justify-content:center; - cursor:pointer; - } - .menu .menu-overlay__checkbox:checked ~ .menu-overlay__btn .menu-overlay__icon{ - background:0 0; - } - .menu .menu-overlay__checkbox:checked ~ .menu-overlay__btn .menu-overlay__icon::before{ - transform:rotate(45deg); - } - .menu .menu-overlay__checkbox:checked ~ .menu-overlay__btn .menu-overlay__icon::after{ - transform:rotate(-45deg); - } - .menu .menu-overlay__checkbox:checked ~ .menu-overlay__btn .menu-overlay__icon::after, .menu .menu-overlay__checkbox:checked ~ .menu-overlay__btn .menu-overlay__icon::before{ - top:0; - } - .menu .menu-overlay__checkbox:checked ~ .menu__list{ - display:flex; - flex-direction:column; - position:fixed; - top:50px; - left:0; - width:100%; - padding-top:1em; - padding-left:1em; - padding-right:1em; - text-transform:uppercase; - background-color:#fff; - transition-delay:0s; - box-shadow:0 2px 8px rgba(12, 20, 23, 0.2); - } -} -.secondmenu{ - display:flex; - justify-content:flex-end; -} - -@media screen and (max-width: 799px){ - .secondmenu{ - margin-right:3em; - } -} -.footer-widgets{ - align-items:center; -} -.footer-widgets .footer-widgets__content{ - left:0; - right:0; -} -.footer-widgets .footer-widgets__content:before{ - content:url(/assets/images/picto-localisation.png?1ed74fd342d22cce12e6d3f1c232a901); - margin-right:10px; -} - -.footer-content{ - color:#fff; - font-size:15px; - background-color:#fccf1d; -} -.footer-content ul{ - margin-bottom:25px; -} -.footer-content a{ - color:#fff; - text-decoration:none; -} - -@media screen and (min-width: 800px){ - .footer-content ul li{ - display:inline-block; - margin-left:10px; - margin-right:10px; - } - .footer-content ul li:first-child{ - margin-left:0; - } - .footer-content ul li:last-child{ - margin-right:0; - } -} -@media screen and (max-width: 799px){ - .footer-widgets{ - height:200px; - } - .footer-widgets img{ - height:100%; - -o-object-fit:cover; - object-fit:cover; - opacity:0.2; - } - .footer-widgets .footer-widgets__content{ - text-align:center; - margin-top:50px; - } - - .footer-content ul li{ - margin-bottom:10px; - } -} -form{ - font-size:16px; -} - -input[type=text]{ - border:0 none; -} - -input[type=submit]{ - min-width:180px; - padding:15px; - color:#fccf1d; - background-color:transparent; - font-weight:bold; - text-align:center; - text-transform:uppercase; - border:1px solid #fccf1d; -} - -.newsletter input[type=text], -input[type=submit]{ - border-radius:30px; -} - -input[type=submit]{ - cursor:pointer; -} -input[type=submit]:hover{ - color:#fff; - background-color:#fccf1d; -} - -input[type=text], -input[type=number], -input[type=mail]{ - padding:15px; - font-size:15px; - border:0 none; - outline-color:#efefef; -} - -textarea{ - width:100%; - max-width:100%; - margin-top:30px; - margin-bottom:30px; -} - -.form-row{ - display:flex; - padding-top:30px; - padding-bottom:30px; -} - -.form-group{ - display:flex; - padding-bottom:2px; - width:100%; - max-width:100%; - border-bottom:solid 1px #0c1417; -} -.form-group input[type=text], -.form-group input[type=number], -.form-group input[type=mail]{ - flex-grow:2; -} -.form-group:first-of-type{ - margin-left:0; -} -.form-group:last-of-type{ - margin-right:0; -} - -fieldset{ - margin-top:45px; - border:0 none; -} -fieldset legend{ - margin-bottom:30px; - font-weight:bold; -} -.radio-label{ - position:relative; - padding-left:20px; - margin-right:25px; - color:#999999; - cursor:pointer; -} -.radio-label input{ - -webkit-appearance:none; - -moz-appearance:none; - appearance:none; -} -.checkmark{ - position:absolute; - top:3px; - left:0; - right:10px; - height:12px; - width:12px; - background-color:#fff; - border:solid 1px #fccf1d; - border-radius:50%; -} -.radio-label:hover input ~ .checkmark{ - background-color:#fccf1d; -} -.radio-label input:checked ~ .checkmark{ - background-color:#fff; -} -.checkmark:after{ - content:""; - position:absolute; - display:none; -} -.radio-label input:checked ~ .checkmark:after{ - display:block; -} -.radio-label .checkmark:after{ - top:2px; - left:2px; - width:6px; - height:6px; - border-radius:50%; - background-color:#fccf1d; -} -.ck-button{ - margin-bottom:45px; -} - -.ck-button label{ - margin-right:10px; -} -.ck-button label:last-child{ - margin-right:0; -} - -.ck-button label span{ - padding:10px; - margin-right:10px; - border:1px solid #0c1417; - border-radius:40px; - cursor:pointer; -} -.ck-button label span:last-child{ - margin-right:0; -} -.ck-button label span:hover{ - color:#fff; - border-color:#fccf1d; - background-color:#fccf1d; -} - -.ck-button label input{ - position:absolute; - top:-20px; -} - -.ck-button input:checked + span{ - background-color:#fccf1d; - color:#fff; - border-color:#fff; -} -.swap{ - visibility:hidden; -} - -.swap:after{ - cursor:pointer; - visibility:visible; - content:""; - font-size:calc(var(--swap-size) - 2.5rem); - display:inline-block; - width:var(--swap-size); - height:var(--swap-size); - padding:0.5rem; - border:1px solid #fccf1d; - border-radius:0.4em; - background-color:#fff; - display:flex; - justify-content:center; - align-items:center; -} - -.swap:checked:after{ - content:""; - background-color:#fccf1d; -} - -@media screen and (min-width: 800px){ - .newsletter input[type=text]{ - width:430px; - } - - .form-group{ - align-items:center; - margin-left:15px; - margin-right:15px; - } -} -@media screen and (max-width: 799px){ - input[type=text], -input[type=submit]{ - display:block; - margin-left:auto; - margin-right:auto; - } - - form, -input[type=text]{ - width:100%; - max-width:100%; - } - - input[type=submit]{ - margin-top:25px; - } - - .form-row, -.form-group{ - flex-direction:column; - } - - .form-group{ - margin-bottom:25px; - } - .form-group:last-child{ - margin-bottom:0; - } - - .ck-button label span{ - display:inline-block; - margin-bottom:5px; - } -} -.product-card, -.gamme-card{ - display:flex; - position:relative; - height:375px; - margin-bottom:20px; - overflow:hidden; -} -.product-card > img, -.gamme-card > img{ - display:block; - width:100%; - height:100%; - -o-object-fit:cover; - object-fit:cover; -} -.product-card a, -.gamme-card a{ - top:0; - z-index:9; -} -.product-card .overlay, -.gamme-card .overlay{ - display:flex; - align-items:center; - justify-content:center; - position:absolute; - width:100%; - height:50%; - font-weight:bold; - transition:bottom 0.4s; -} - -.product-card .product-card__title, -.product-card a{ - position:absolute; - right:0; - bottom:0; - left:0; -} -.product-card .product-card__title{ - padding:1em 0.2em; - background-color:rgba(255, 255, 255, 0.5); -} -.product-card .overlay{ - bottom:-200px; -} -.product-card .overlay span{ - width:50%; - padding-top:1em; - padding-bottom:1em; - background-color:#fff; - border-radius:2em; -} -.product-card:hover .overlay{ - bottom:0; -} - -.gamme-card .gamme-card__title, -.gamme-card a{ - position:absolute; - right:0; - bottom:0; - left:0; -} -.gamme-card .gamme-card__title{ - padding:1em 0.2em; - background-color:rgba(255, 255, 255, 0.5); -} -.gamme-card .overlay{ - bottom:-50px; -} -.gamme-card .overlay span{ - color:#fff; - font-size:30px; - font-family:"barlow-bold", arial, sans-serif; -} -.gamme-card:hover .overlay{ - bottom:50px; -} - -#list .title{ - color:#fff; - font-size:calc(18px * 3.25); -} -#list .is-flex{ - justify-content:space-between; - flex-wrap:wrap; -} -#list .section-header{ - margin-bottom:50px; - color:#fff; -} -#list .section-header .title{ - margin-bottom:5px; -} -#list .section-header .content{ - top:30px; - padding-left:30px; - padding-right:30px; -} - -.overlay{ - background-color:rgba(139, 68, 55, 0.8); -} -.overlay span{ - color:#8b4437; -} - -.is-brown header .content{ - background-color:rgba(139, 68, 55, 0.8); -} -.is-brown .overlay{ - background-color:rgba(139, 68, 55, 0.8); -} -.is-brown .product-card .overlay span{ - color:#8b4437; -} - -.is-orange header .content{ - background-color:rgba(211, 101, 0, 0.8); -} -.is-orange .overlay{ - background-color:rgba(211, 101, 0, 0.8); -} -.is-orange .product-card .overlay span{ - color:#d36500; -} - -.is-grey header .content{ - background-color:rgba(203, 165, 131, 0.8); -} -.is-grey .overlay{ - background-color:rgba(203, 165, 131, 0.8); -} -.is-grey .product-card .overlay span{ - color:#cba583; -} - -.is-yellow header .content{ - background-color:rgba(252, 207, 29, 0.8); -} -.is-yellow .overlay{ - background-color:rgba(252, 207, 29, 0.8); -} -.is-yellow .product-card .overlay span{ - color:#fccf1d; -} -.is-yellow .gamme-card .overlay span{ - color:#fff; -} - -.is-blue header .content{ - background-color:rgba(152, 193, 232, 0.8); -} -.is-blue .overlay{ - background-color:rgba(152, 193, 232, 0.8); -} -.is-blue .product-card .overlay span{ - color:#98c1e8; -} - -.is-green header .content{ - background-color:rgba(133, 184, 63, 0.8); -} -.is-green .overlay{ - background-color:rgba(133, 184, 63, 0.8); -} -.is-green .product-card .overlay span{ - color:#85b83f; -} - -.is-pink header .content{ - background-color:rgba(190, 54, 108, 0.8); -} -.is-pink .overlay{ - background-color:rgba(190, 54, 108, 0.8); -} -.is-pink .product-card .overlay span{ - color:#be366c; -} - -#posts{ - position:relative; -} -#posts .sectiontitle:after{ - content:""; - background-color:#0c1417; -} - -@media (min-width: 769px){ - .product-card{ - width:32%; - max-width:32%; - } - - .gamme-card{ - width:32%; - max-width:32%; - } - .gamme-card:nth-child(4), .gamme-card:nth-child(5){ - width:49%; - max-width:49%; - } - - .post-card{ - flex:1; - margin-right:30px; - } - .post-card:last-child{ - margin-right:0; - } - - #list .section-header .content{ - position:absolute; - } - - #posts > img{ - position:absolute; - top:0; - left:0; - height:50%; - z-index:-1; - -o-object-fit:cover; - object-fit:cover; - } -} -@media (max-width: 768px){ - #list .section-header .content{ - position:relative; - } - - #posts > img{ - position:absolute; - top:0; - left:0; - height:14%; - z-index:-1; - -o-object-fit:cover; - object-fit:cover; - } - - .posts-list .post-card{ - margin-bottom:50px; - } -} -.punchline-module{ - color:#fccf1d; -} - -@media screen and (min-width: 800px){ - .punchline-module h2{ - font-size:42px; - } -} -@media screen and (max-width: 799px){ - .punchline-module h2{ - font-size:24px; - } -} -.newsletter .wrapper{ - justify-content:space-between; - align-items:center; -} - -#carrousel1{ - font-family:"barlow-bold", arial, sans-serif; -} -#carrousel1 .carrousel{ - padding-bottom:1.5em; - overflow:hidden; - outline-color:transparent; -} -#carrousel1 .carrousel .carrousel__container{ - transition:transform 0.3s; - transform:translateZ(0); -} -#carrousel1 .carrousel .carrousel__container:after{ - content:""; - clear:both; - display:table; -} -#carrousel1 .carrousel .carrousel__item{ - float:left; -} -#carrousel1 .carrousel .item{ - display:flex; - align-items:center; - justify-content:center; - position:relative; -} -#carrousel1 .carrousel .item img{ - display:block; - width:100%; - height:auto; -} -#carrousel1 .carrousel .item > a{ - position:absolute; - top:0; - right:0; - bottom:0; - left:0; -} -#carrousel1 .carrousel .item:hover .item__link{ - background-color:#fccf1d; -} -#carrousel1 .carrousel .item__image{ - width:100%; -} -#carrousel1 .carrousel .item__body{ - position:absolute; - text-shadow:0 2px 8px rgba(12, 20, 23, 0.6); -} -#carrousel1 .carrousel .item__title{ - position:relative; - display:flex; - align-items:center; - justify-content:center; - color:#fff; -} -#carrousel1 .carrousel .item__title:before, #carrousel1 .carrousel .item__title:after{ - content:""; - position:absolute; - height:60%; - background-color:#fff; - box-shadow:0 2px 8px rgba(12, 20, 23, 0.6); -} -#carrousel1 .carrousel .item__title:before{ - left:0; -} -#carrousel1 .carrousel .item__title:after{ - right:0; -} -#carrousel1 .carrousel .item__link{ - display:inline-flex; - align-items:center; - justify-content:center; - position:absolute; - right:0; - top:0; - bottom:0; - padding:1em; - color:#fff; - background-color:#fccf1d; - font-size:calc(18px * 0.65); - font-weight:700; - text-transform:uppercase; - transition:background-color 0.3s; -} -#carrousel1 .carrousel .item__link p{ - margin-bottom:0; -} - -.carrousel, -.items{ - position:relative; -} - -.carrousel__next, -.carrousel__prev{ - position:absolute; - width:2.3em; - height:2.3em; - background:url(/assets/images/caroussel_arrow-right.png?2cdf04a1096a17958e8415beae962d71) 50% no-repeat; - background-size:contain; - border-radius:50%; - top:50%; - margin-top:-1.2em; - right:1.2em; - cursor:pointer; - transition:transform 0.3s, opacity 0.3s; -} - -.carrousel__prev{ - background-image:url(/assets/images/caroussel_arrow-left.png?a70304ae9c1add15f69f786c16cf5c1c); - right:auto; - left:1.2em; -} - -.carrousel__next--hidden, -.carrousel__prev--hidden{ - opacity:0; -} - -.carrousel__next:hover, -.carrousel__prev:hover{ - transform:scale(1.2); -} - -.carrousel__pagination{ - display:block; - position:absolute; - bottom:100px; - left:0; - right:0; - text-align:center; - display:none; -} - -.carrousel__pagination__button{ - width:18px; - height:18px; - border-radius:50%; - display:inline-block; - margin:0 20px; - border:solid 2px #222f5c; - cursor:pointer; -} - -.carrousel__pagination__button--active, -.carrousel__pagination__button:hover{ - background-color:#222f5c; -} - -@media screen and (min-width: 800px){ - #carrousel1 .carrousel .item__title{ - width:770px; - font-size:60px; - } - #carrousel1 .carrousel .item__title:before, #carrousel1 .carrousel .item__title:after{ - content:""; - width:7px; - } - #carrousel1 .carrousel__pagination{ - display:block; - } -} -@media screen and (max-width: 799px){ - #carrousel1 .carrousel .item__title{ - padding-left:1em; - padding-right:1em; - font-size:26px; - } - #carrousel1 .carrousel .item__title:before, #carrousel1 .carrousel .item__title:after{ - content:""; - width:4px; - } -} -#carrousel2 .carrousel{ - padding-bottom:1.5em; - overflow:hidden; - outline-color:transparent; -} -#carrousel2 .carrousel .carrousel__container{ - transition:transform 0.3s; - transform:translateZ(0); -} -#carrousel2 .carrousel .carrousel__container:after{ - content:""; - clear:both; - display:table; -} -#carrousel2 .carrousel .carrousel__item{ - float:left; -} -#carrousel2 .carrousel .item{ - display:flex; - align-items:center; - justify-content:center; - position:relative; -} -#carrousel2 .carrousel .item img{ - display:block; - width:100%; - height:auto; -} -#carrousel2 .carrousel .item > a{ - position:absolute; - top:0; - right:0; - bottom:0; - left:0; -} -#carrousel2 .carrousel .item:hover .item__link{ - background-color:#fccf1d; -} -#carrousel2 .carrousel .item__body{ - flex-basis:60%; - padding:90px; - color:#fff; - background-color:#0c1417; -} -#carrousel2 .carrousel .item__title{ - position:relative; - padding-bottom:20px; - color:#fccf1d; - font-size:16px; -} -#carrousel2 .carrousel .item__title:after{ - content:""; - position:absolute; - bottom:0; - left:0; - right:0; - width:20px; - height:2px; - margin-left:auto; - margin-right:auto; - background-color:#fccf1d; -} -#carrousel2 .carrousel .item__link{ - display:inline-flex; - align-items:center; - justify-content:center; - position:absolute; - right:0; - top:0; - bottom:0; - padding:1em; - color:#fff; - background-color:#fccf1d; - font-size:calc(18px * 0.65); - font-weight:700; - text-transform:uppercase; - transition:background-color 0.3s; -} -#carrousel2 .carrousel .item__link p{ - margin-bottom:0; -} - -.carrousel, -.items{ - position:relative; -} - -.carrousel__next, -.carrousel__prev{ - position:absolute; - width:2.3em; - height:2.3em; - background:url(/assets/images/caroussel_arrow-right.png?2cdf04a1096a17958e8415beae962d71) 50% no-repeat; - background-size:contain; - border-radius:50%; - top:50%; - margin-top:-1.2em; - right:0; - cursor:pointer; - transition:transform 0.3s, opacity 0.3s; -} - -.carrousel__prev{ - background-image:url(/assets/images/caroussel_arrow-left.png?a70304ae9c1add15f69f786c16cf5c1c); - right:auto; - left:0; -} - -.carrousel__next--hidden, -.carrousel__prev--hidden{ - opacity:0; -} - -.carrousel__next:hover, -.carrousel__prev:hover{ - transform:scale(1.2); -} - -#carrousel2 .carrousel__pagination{ - position:absolute; - bottom:30px; - right:0; - text-align:center; - display:none; -} - -#carrousel2 .carrousel__pagination__button{ - background-color:rgba(252, 207, 29, 0.5); - width:14px; - height:14px; - border-radius:50%; - display:inline-block; - margin:0 3px; - cursor:pointer; -} -#carrousel2 .carrousel__pagination__button--active, -#carrousel2 .carrousel__pagination__button:hover{ - background-color:#fccf1d; -} - -@media screen and (min-width: 800px){ - #carrousel2 .carrousel__pagination{ - display:block; - } -} -@media screen and (max-width: 799px){ - #carrousel2 .carrousel .item__body{ - padding:2em; - text-align:center; - } - #carrousel2 .carrousel .item__title .secondtitle{ - padding-right:5em; - font-size:calc(18px * 0.9); - } - #carrousel2 .carrousel .item img{ - width:70%; - margin-left:auto; - margin-right:auto; - } -} -.timeline{ - position:relative; - max-width:1200px; - margin:0 auto; -} -.timeline .year{ - display:inline-block; - padding:15px 30px; - margin-bottom:10px; - font-size:43px; - color:#fff; - border-radius:50px; -} -.timeline .step > img{ - width:50%; -} -.timeline .step.is-flex{ - width:520px; -} -.timeline .step.is-flex .year{ - margin-right:20px; -} -.timeline .step:last-child{ - padding-bottom:150px; -} -.timeline .step.special > img{ - display:block; - width:60%; - margin-bottom:20px; - margin-left:30%; -} -.timeline .step .step_title{ - margin-bottom:10px; -} -.timeline .step .step_title:nth-child(odd){ - color:#ff0400; -} -.timeline .step .step_title:nth-child(even){ - color:#222f5c; -} -.timeline .step:nth-child(odd) .step_title{ - color:#ff0400; -} -.timeline .step:nth-child(even) .step_title{ - color:#222f5c; -} -.timeline .step:nth-child(odd) .year{ - background-color:#ff0400; -} -.timeline .step:nth-child(even) .year{ - background-color:#222f5c; -} - -@media screen and (min-width: 800px){ - .timeline{ - background-image:url(/assets/images/storyline.jpg?625eaf560e2bb3f4424e9b5e3b5b924b); - background-repeat:no-repeat; - background-position:top 50px center; - z-index:0; - } - .timeline .step{ - width:400px; - } - .timeline .step.is-flex{ - width:520px; - } - .timeline .left{ - left:0; - } - .timeline .right{ - left:50%; - } -} -@media screen and (max-width: 799px){ - .timeline .step{ - width:100%; - } - .timeline .step.is-flex{ - width:100%; - } -} -.jumbotron{ - display:flex; - align-items:center; - justify-content:center; -} -.jumbotron .maintitle{ - position:absolute; - color:#fff; - text-align:center; - text-shadow:0 2px 8px rgba(12, 20, 23, 0.6); - z-index:1; -} -.jumbotron .maintitle .title-icon{ - display:flex; - align-items:center; - justify-content:center; - background-color:#fccf1d; - width:120px; - height:120px; - margin-left:auto; - margin-right:auto; - padding:20px; - border-radius:50%; -} - -#products, -#values{ - display:flex; - align-items:center; - justify-content:center; - position:relative; -} -#products > img, -#values > img{ - position:absolute; - top:0; - left:0; - z-index:-1; - -o-object-fit:cover; - object-fit:cover; -} - -#products .sectiontitle:after{ - content:""; - background-color:#0c1417; -} -#products > img{ - height:80%; -} -#products .product-item{ - display:flex; - align-items:center; - flex:1; - margin-right:60px; - transition:transform 0.2s; -} -#products .product-item:last-child{ - margin-right:0; -} -#products .product-item:hover{ - transform:scale(1.1); -} -#products .products-list{ - margin-top:20px; -} - -#values .sectiontitle:after{ - content:""; - background-color:#0c1417; -} -#values > img{ - height:110%; -} -#values ul{ - display:flex; - justify-content:space-between; -} -#values .values-content{ - width:1000px; - margin-bottom:50px; -} -#values .values-list{ - margin-top:100px; -} -#values .values-list .item{ - display:inline-flex; - flex-direction:column; - justify-content:center; - align-items:center; - flex:1; - font-family:"barlow-bold", arial, sans-serif; -} -#values .values-list .item img{ - width:70px; - height:70px; - margin-bottom:20px; - -o-object-fit:contain; - object-fit:contain; -} - -#reassurances ul{ - display:flex; - flex-wrap:wrap; -} -#reassurances ul li{ - display:inline-flex; - flex-direction:column; - align-items:center; - color:#222f5c; - font-family:"barlow-bold", arial, sans-serif; -} -#reassurances img{ - max-width:70px; - height:auto; - margin-right:10px; -} -#reassurances .number{ - color:#ff0400; - font-size:calc(18px * 4); -} -#reassurances .reassurance-item{ - margin-top:30px; - margin-bottom:30px; -} - -.plan, -.phone{ - padding-left:80px; -} -.plan p:first-of-type, -.phone p:first-of-type{ - font-size:calc(18px * 1.1); -} -.plan p:nth-of-type(2), -.phone p:nth-of-type(2){ - color:#999999; - font-size:calc(18px * 0.85); - line-height:1.5; -} - -.blue header{ - background-color:#222f5c; -} -.blue .cta, -.blue .link{ - color:#222f5c; -} -.blue .cta{ - border-color:#222f5c; -} -.blue .cta:hover{ - color:#fff; - background-color:#222f5c; -} -.blue #values{ - color:#fff; -} -.blue #values .item:nth-of-type(even){ - color:#ff0400; -} -.blue .product-card .overlay{ - background-color:rgba(34, 47, 92, 0.8); -} -.blue .product-card .overlay span{ - color:#222f5c; -} - -.blue .traduction li a{ - color:#fff; -} -.blue .traduction li.current a{ - color:#ff0400; -} - -.blue .featured-link{ - color:#ff0400; -} - -.best{ - display:flex; - align-items:center; - font-family:"barlow-bold", arial, sans-serif; -} - -.mt50{ - margin-top:50px; -} - -.mb50{ - margin-bottom:50px; -} - -@media screen and (min-width: 800px){ - .jumbotron .maintitle{ - font-size:calc(18px * 3.25); - } - - .blue .menu .menu__item a{ - color:#fff; - } - - .has-label{ - position:relative; - } - .has-label:before{ - content:url(/assets/images/Logo_MadeInFrance.jpg?caa24dd8d843129d80d8cdfc7ccfb1b6); - position:absolute; - right:-150px; - top:50px; - } - - .has-label-bis{ - position:relative; - } - .has-label-bis:before{ - content:url(/assets/images/Logo_MadeInFrance.jpg?caa24dd8d843129d80d8cdfc7ccfb1b6); - position:absolute; - right:0px; - top:-50px; - } - - .has-chicken-path{ - position:relative; - } - .has-chicken-path:before{ - content:url(/assets/images/empreintes.png?a2c7cc1a99b8e4e1302c7b327fdafed7); - position:absolute; - left:20px; - top:-20px; - } - - .bckg-illustration:after{ - content:url(/assets/images/cuisinier.jpg?baaefbda5b45a25efacd1962934e1ccd); - position:absolute; - top:-110px; - right:60px; - width:300px; - height:300px; - z-index:-1; - } - - .featured-link{ - bottom:-63px; - right:-190px; - width:145px; - padding-top:25px; - padding-bottom:35px; - line-height:1; - color:#222f5c; - background-image:url(/assets/images/food-service.png?0516f121d7754c28b2cb3055ce991861); - background-repeat:no-repeat; - } - - .featured-link span{ - display:block; - font-size:12px; - } - - #reassurances ul{ - justify-content:space-between; - } - #reassurances ul li{ - width:30%; - } - - #values .values-list{ - margin-top:100px; - } - - .desk-mt180{ - margin-top:180px; - } - - .desk-mr18{ - margin-right:80px; - } - - .desk-mt-n80{ - margin-top:-80px; - } - - .desk-ml-150{ - margin-left:150px; - } - - .desk-mt-120{ - margin-top:120px; - } - - .desk-mt50{ - margin-top:50px; - } - - .desk-mb-80{ - margin-bottom:80px !important; - } - - .best{ - padding-top:100px; - padding-left:145px; - } - .best:before{ - content:url(/assets/images/personnage.png?afab50b1fecf5fd0149a8216117dd5a8); - position:absolute; - left:0; - z-index:-1; - } - .best span:first-of-type{ - margin-right:10px; - color:#ff0400; - font-size:90px; - } - .best span:nth-of-type(2){ - color:#222f5c; - font-size:55px; - } - - .reduice-img img{ - width:65%; - max-width:65%; - margin-top:-100px; - } -} -@media screen and (max-width: 799px){ - .jumbotron .maintitle{ - font-size:calc(18px * 1.8); - } - - .blue > .menu .menu__item a{ - color:#fff; - } - - #values ul{ - flex-direction:column; - align-items:center; - } - - .has-label{ - position:relative; - } - .has-label:before{ - content:url(/assets/images/Logo_MadeInFrance_mobile.jpg?2ebc3dfbc3801da608a04a620f806f8e); - position:absolute; - right:0; - left:0; - top:300px; - } - - .has-label-bis{ - position:relative; - } - .has-label-bis:before{ - content:url(/assets/images/Logo_MadeInFrance_mobile.jpg?2ebc3dfbc3801da608a04a620f806f8e); - position:absolute; - right:0; - left:0; - top:100px; - } - - .featured-link{ - display:none; - } - - #reassurances ul{ - flex-direction:column; - } - - #values .values-list{ - margin-top:50px; - flex-wrap:wrap; - } - #values .values-list .item{ - width:50%; - margin-bottom:3em; - } - - .best span:first-of-type{ - margin-right:10px; - color:#ff0400; - font-size:45px; - } - .best span:nth-of-type(2){ - color:#222f5c; - font-size:32px; - } - - .smrt-mb-100{ - margin-bottom:100px !important; - } - - .smrt-mb-200{ - margin-bottom:200px !important; - } - - .smrt-order{ - display:flex; - flex-direction:column; - align-items:flex-start; - } - .smrt-order img{ - order:3; - } - .smrt-order span{ - order:0; - } -} diff --git a/public/favicon.ico b/public/favicon.ico index e69de29..e4884a5 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000..4045660 Binary files /dev/null and b/public/favicon.png differ diff --git a/public/js/app.js b/public/js/app.js deleted file mode 100644 index 1a11564..0000000 --- a/public/js/app.js +++ /dev/null @@ -1,193 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./resources/js/app.js": -/*!*****************************!*\ - !*** ./resources/js/app.js ***! - \*****************************/ -/***/ (() => { - -var app = { - init: function init() { - window.onscroll = function () { - app.scrollFunction(); - }; - - app.scroll(); - }, - scroll: function scroll() { - document.getElementById("backtotop").addEventListener("click", function () { - window.scrollTo({ - top: 0, - behavior: "smooth" - }); - }); - }, - scrollFunction: function scrollFunction() { - if (document.body.scrollTop > 100 || document.documentElement.scrollTop > 100) { - document.getElementById("backtotop").style.display = "flex"; - } else { - document.getElementById("backtotop").style.display = "none"; - } - } -}; -document.addEventListener("DOMContentLoaded", app.init); - -/***/ }), - -/***/ "./resources/sass/app.scss": -/*!*********************************!*\ - !*** ./resources/sass/app.scss ***! - \*********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = __webpack_modules__; -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/chunk loaded */ -/******/ (() => { -/******/ var deferred = []; -/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { -/******/ if(chunkIds) { -/******/ priority = priority || 0; -/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; -/******/ deferred[i] = [chunkIds, fn, priority]; -/******/ return; -/******/ } -/******/ var notFulfilled = Infinity; -/******/ for (var i = 0; i < deferred.length; i++) { -/******/ var [chunkIds, fn, priority] = deferred[i]; -/******/ var fulfilled = true; -/******/ for (var j = 0; j < chunkIds.length; j++) { -/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { -/******/ chunkIds.splice(j--, 1); -/******/ } else { -/******/ fulfilled = false; -/******/ if(priority < notFulfilled) notFulfilled = priority; -/******/ } -/******/ } -/******/ if(fulfilled) { -/******/ deferred.splice(i--, 1) -/******/ var r = fn(); -/******/ if (r !== undefined) result = r; -/******/ } -/******/ } -/******/ return result; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/jsonp chunk loading */ -/******/ (() => { -/******/ // no baseURI -/******/ -/******/ // object to store loaded and loading chunks -/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched -/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded -/******/ var installedChunks = { -/******/ "/js/app": 0, -/******/ "css/app": 0 -/******/ }; -/******/ -/******/ // no chunk on demand loading -/******/ -/******/ // no prefetching -/******/ -/******/ // no preloaded -/******/ -/******/ // no HMR -/******/ -/******/ // no HMR manifest -/******/ -/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0); -/******/ -/******/ // install a JSONP callback for chunk loading -/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { -/******/ var [chunkIds, moreModules, runtime] = data; -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0; -/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { -/******/ for(moduleId in moreModules) { -/******/ if(__webpack_require__.o(moreModules, moduleId)) { -/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(runtime) var result = runtime(__webpack_require__); -/******/ } -/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { -/******/ installedChunks[chunkId][0](); -/******/ } -/******/ installedChunks[chunkIds[i]] = 0; -/******/ } -/******/ return __webpack_require__.O(result); -/******/ } -/******/ -/******/ var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || []; -/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); -/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module depends on other loaded chunks and execution need to be delayed -/******/ __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/js/app.js"))) -/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/sass/app.scss"))) -/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); -/******/ -/******/ })() -; \ No newline at end of file diff --git a/public/js/caroussel.js b/public/js/caroussel.js deleted file mode 100644 index ec5997d..0000000 --- a/public/js/caroussel.js +++ /dev/null @@ -1,2539 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./node_modules/core-js/internals/a-callable.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/internals/a-callable.js ***! - \******************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); -var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); - -var TypeError = global.TypeError; - -// `Assert: IsCallable(argument) is true` -module.exports = function (argument) { - if (isCallable(argument)) return argument; - throw TypeError(tryToString(argument) + ' is not a function'); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/an-object.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/an-object.js ***! - \*****************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); - -var String = global.String; -var TypeError = global.TypeError; - -// `Assert: Type(argument) is Object` -module.exports = function (argument) { - if (isObject(argument)) return argument; - throw TypeError(String(argument) + ' is not an object'); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/array-for-each.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/array-for-each.js ***! - \**********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var $forEach = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach); -var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js"); - -var STRICT_METHOD = arrayMethodIsStrict('forEach'); - -// `Array.prototype.forEach` method implementation -// https://tc39.es/ecma262/#sec-array.prototype.foreach -module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { - return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); -// eslint-disable-next-line es/no-array-prototype-foreach -- safe -} : [].forEach; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/array-includes.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/array-includes.js ***! - \**********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); -var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); -var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); - -// `Array.prototype.{ indexOf, includes }` methods implementation -var createMethod = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = lengthOfArrayLike(O); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - -module.exports = { - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - includes: createMethod(true), - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - indexOf: createMethod(false) -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/array-iteration.js": -/*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/array-iteration.js ***! - \***********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); -var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); -var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); -var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); - -var push = uncurryThis([].push); - -// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation -var createMethod = function (TYPE) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var IS_FILTER_REJECT = TYPE == 7; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject($this); - var self = IndexedObject(O); - var boundFunction = bind(callbackfn, that); - var length = lengthOfArrayLike(self); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push(target, value); // filter - } else switch (TYPE) { - case 4: return false; // every - case 7: push(target, value); // filterReject - } - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; -}; - -module.exports = { - // `Array.prototype.forEach` method - // https://tc39.es/ecma262/#sec-array.prototype.foreach - forEach: createMethod(0), - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - map: createMethod(1), - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - filter: createMethod(2), - // `Array.prototype.some` method - // https://tc39.es/ecma262/#sec-array.prototype.some - some: createMethod(3), - // `Array.prototype.every` method - // https://tc39.es/ecma262/#sec-array.prototype.every - every: createMethod(4), - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - find: createMethod(5), - // `Array.prototype.findIndex` method - // https://tc39.es/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod(6), - // `Array.prototype.filterReject` method - // https://github.com/tc39/proposal-array-filtering - filterReject: createMethod(7) -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/array-method-has-species-support.js": -/*!****************************************************************************!*\ - !*** ./node_modules/core-js/internals/array-method-has-species-support.js ***! - \****************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); -var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js/internals/engine-v8-version.js"); - -var SPECIES = wellKnownSymbol('species'); - -module.exports = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION >= 51 || !fails(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/array-method-is-strict.js": -/*!******************************************************************!*\ - !*** ./node_modules/core-js/internals/array-method-is-strict.js ***! - \******************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); - -module.exports = function (METHOD_NAME, argument) { - var method = [][METHOD_NAME]; - return !!method && fails(function () { - // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing - method.call(null, argument || function () { throw 1; }, 1); - }); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/array-slice.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/array-slice.js ***! - \*******************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); - -module.exports = uncurryThis([].slice); - - -/***/ }), - -/***/ "./node_modules/core-js/internals/array-species-constructor.js": -/*!*********************************************************************!*\ - !*** ./node_modules/core-js/internals/array-species-constructor.js ***! - \*********************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); -var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); - -var SPECIES = wellKnownSymbol('species'); -var Array = global.Array; - -// a part of `ArraySpeciesCreate` abstract operation -// https://tc39.es/ecma262/#sec-arrayspeciescreate -module.exports = function (originalArray) { - var C; - if (isArray(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined; - else if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } return C === undefined ? Array : C; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/array-species-create.js": -/*!****************************************************************!*\ - !*** ./node_modules/core-js/internals/array-species-create.js ***! - \****************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ "./node_modules/core-js/internals/array-species-constructor.js"); - -// `ArraySpeciesCreate` abstract operation -// https://tc39.es/ecma262/#sec-arrayspeciescreate -module.exports = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/classof-raw.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/classof-raw.js ***! - \*******************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); - -var toString = uncurryThis({}.toString); -var stringSlice = uncurryThis(''.slice); - -module.exports = function (it) { - return stringSlice(toString(it), 8, -1); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/classof.js": -/*!***************************************************!*\ - !*** ./node_modules/core-js/internals/classof.js ***! - \***************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); -var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -var Object = global.Object; - -// ES3 wrong here -var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; - -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } -}; - -// getting tag from ES6+ `Object.prototype.toString` -module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw(O) - // ES3 arguments fallback - : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/copy-constructor-properties.js": -/*!***********************************************************************!*\ - !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! - \***********************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); -var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); -var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); - -module.exports = function (target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/create-non-enumerable-property.js": -/*!**************************************************************************!*\ - !*** ./node_modules/core-js/internals/create-non-enumerable-property.js ***! - \**************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); - -module.exports = DESCRIPTORS ? function (object, key, value) { - return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/create-property-descriptor.js": -/*!**********************************************************************!*\ - !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! - \**********************************************************************/ -/***/ ((module) => { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/create-property.js": -/*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/create-property.js ***! - \***********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); - -module.exports = function (object, key, value) { - var propertyKey = toPropertyKey(key); - if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); - else object[propertyKey] = value; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/descriptors.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/descriptors.js ***! - \*******************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); - -// Detect IE8's incomplete defineProperty implementation -module.exports = !fails(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; -}); - - -/***/ }), - -/***/ "./node_modules/core-js/internals/document-create-element.js": -/*!*******************************************************************!*\ - !*** ./node_modules/core-js/internals/document-create-element.js ***! - \*******************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); - -var document = global.document; -// typeof document.createElement is 'object' in old IE -var EXISTS = isObject(document) && isObject(document.createElement); - -module.exports = function (it) { - return EXISTS ? document.createElement(it) : {}; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/dom-iterables.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/dom-iterables.js ***! - \*********************************************************/ -/***/ ((module) => { - -// iterable DOM collections -// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods -module.exports = { - CSSRuleList: 0, - CSSStyleDeclaration: 0, - CSSValueList: 0, - ClientRectList: 0, - DOMRectList: 0, - DOMStringList: 0, - DOMTokenList: 1, - DataTransferItemList: 0, - FileList: 0, - HTMLAllCollection: 0, - HTMLCollection: 0, - HTMLFormElement: 0, - HTMLSelectElement: 0, - MediaList: 0, - MimeTypeArray: 0, - NamedNodeMap: 0, - NodeList: 1, - PaintRequestList: 0, - Plugin: 0, - PluginArray: 0, - SVGLengthList: 0, - SVGNumberList: 0, - SVGPathSegList: 0, - SVGPointList: 0, - SVGStringList: 0, - SVGTransformList: 0, - SourceBufferList: 0, - StyleSheetList: 0, - TextTrackCueList: 0, - TextTrackList: 0, - TouchList: 0 -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/dom-token-list-prototype.js": -/*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/dom-token-list-prototype.js ***! - \********************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` -var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); - -var classList = documentCreateElement('span').classList; -var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype; - -module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/engine-user-agent.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/engine-user-agent.js ***! - \*************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); - -module.exports = getBuiltIn('navigator', 'userAgent') || ''; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/engine-v8-version.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/engine-v8-version.js ***! - \*************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ "./node_modules/core-js/internals/engine-user-agent.js"); - -var process = global.process; -var Deno = global.Deno; -var versions = process && process.versions || Deno && Deno.version; -var v8 = versions && versions.v8; -var match, version; - -if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); -} - -// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` -// so check `userAgent` even if `.v8` exists, but 0 -if (!version && userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } -} - -module.exports = version; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/enum-bug-keys.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! - \*********************************************************/ -/***/ ((module) => { - -// IE8- don't enum bug keys -module.exports = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' -]; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/export.js": -/*!**************************************************!*\ - !*** ./node_modules/core-js/internals/export.js ***! - \**************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); -var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); -var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); - -/* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.noTargetGet - prevent calling a getter on target - options.name - the .name of the function if it does not match the key -*/ -module.exports = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global; - } else if (STATIC) { - target = global[TARGET] || setGlobal(TARGET, {}); - } else { - target = (global[TARGET] || {}).prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty(sourceProperty, 'sham', true); - } - // extend global - redefine(target, key, sourceProperty, options); - } -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/fails.js": -/*!*************************************************!*\ - !*** ./node_modules/core-js/internals/fails.js ***! - \*************************************************/ -/***/ ((module) => { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/function-bind-context.js": -/*!*****************************************************************!*\ - !*** ./node_modules/core-js/internals/function-bind-context.js ***! - \*****************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); - -var bind = uncurryThis(uncurryThis.bind); - -// optional / simple context binding -module.exports = function (fn, that) { - aCallable(fn); - return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/function-call.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/function-call.js ***! - \*********************************************************/ -/***/ ((module) => { - -var call = Function.prototype.call; - -module.exports = call.bind ? call.bind(call) : function () { - return call.apply(call, arguments); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/function-name.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/function-name.js ***! - \*********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); - -var FunctionPrototype = Function.prototype; -// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe -var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; - -var EXISTS = hasOwn(FunctionPrototype, 'name'); -// additional protection from minified / mangled / dropped function names -var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; -var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); - -module.exports = { - EXISTS: EXISTS, - PROPER: PROPER, - CONFIGURABLE: CONFIGURABLE -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/function-uncurry-this.js": -/*!*****************************************************************!*\ - !*** ./node_modules/core-js/internals/function-uncurry-this.js ***! - \*****************************************************************/ -/***/ ((module) => { - -var FunctionPrototype = Function.prototype; -var bind = FunctionPrototype.bind; -var call = FunctionPrototype.call; -var callBind = bind && bind.bind(call); - -module.exports = bind ? function (fn) { - return fn && callBind(call, fn); -} : function (fn) { - return fn && function () { - return call.apply(fn, arguments); - }; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/get-built-in.js": -/*!********************************************************!*\ - !*** ./node_modules/core-js/internals/get-built-in.js ***! - \********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); - -var aFunction = function (argument) { - return isCallable(argument) ? argument : undefined; -}; - -module.exports = function (namespace, method) { - return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method]; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/get-method.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/internals/get-method.js ***! - \******************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); - -// `GetMethod` abstract operation -// https://tc39.es/ecma262/#sec-getmethod -module.exports = function (V, P) { - var func = V[P]; - return func == null ? undefined : aCallable(func); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/global.js": -/*!**************************************************!*\ - !*** ./node_modules/core-js/internals/global.js ***! - \**************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var check = function (it) { - return it && it.Math == Math && it; -}; - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -module.exports = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) || - // eslint-disable-next-line no-new-func -- fallback - (function () { return this; })() || Function('return this')(); - - -/***/ }), - -/***/ "./node_modules/core-js/internals/has-own-property.js": -/*!************************************************************!*\ - !*** ./node_modules/core-js/internals/has-own-property.js ***! - \************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); - -var hasOwnProperty = uncurryThis({}.hasOwnProperty); - -// `HasOwnProperty` abstract operation -// https://tc39.es/ecma262/#sec-hasownproperty -module.exports = Object.hasOwn || function hasOwn(it, key) { - return hasOwnProperty(toObject(it), key); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/hidden-keys.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/hidden-keys.js ***! - \*******************************************************/ -/***/ ((module) => { - -module.exports = {}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/ie8-dom-define.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! - \**********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); -var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); - -// Thank's IE8 for his funny defineProperty -module.exports = !DESCRIPTORS && !fails(function () { - // eslint-disable-next-line es/no-object-defineproperty -- requied for testing - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a != 7; -}); - - -/***/ }), - -/***/ "./node_modules/core-js/internals/indexed-object.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/indexed-object.js ***! - \**********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); -var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); - -var Object = global.Object; -var split = uncurryThis(''.split); - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -module.exports = fails(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe - return !Object('z').propertyIsEnumerable(0); -}) ? function (it) { - return classof(it) == 'String' ? split(it, '') : Object(it); -} : Object; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/inspect-source.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/inspect-source.js ***! - \**********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); -var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); - -var functionToString = uncurryThis(Function.toString); - -// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper -if (!isCallable(store.inspectSource)) { - store.inspectSource = function (it) { - return functionToString(it); - }; -} - -module.exports = store.inspectSource; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/internal-state.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/internal-state.js ***! - \**********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js"); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); -var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); -var shared = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); -var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); - -var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; -var TypeError = global.TypeError; -var WeakMap = global.WeakMap; -var set, get, has; - -var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); -}; - -var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; -}; - -if (NATIVE_WEAK_MAP || shared.state) { - var store = shared.state || (shared.state = new WeakMap()); - var wmget = uncurryThis(store.get); - var wmhas = uncurryThis(store.has); - var wmset = uncurryThis(store.set); - set = function (it, metadata) { - if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - wmset(store, it, metadata); - return metadata; - }; - get = function (it) { - return wmget(store, it) || {}; - }; - has = function (it) { - return wmhas(store, it); - }; -} else { - var STATE = sharedKey('state'); - hiddenKeys[STATE] = true; - set = function (it, metadata) { - if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return hasOwn(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return hasOwn(it, STATE); - }; -} - -module.exports = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/is-array.js": -/*!****************************************************!*\ - !*** ./node_modules/core-js/internals/is-array.js ***! - \****************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); - -// `IsArray` abstract operation -// https://tc39.es/ecma262/#sec-isarray -// eslint-disable-next-line es/no-array-isarray -- safe -module.exports = Array.isArray || function isArray(argument) { - return classof(argument) == 'Array'; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/is-callable.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/is-callable.js ***! - \*******************************************************/ -/***/ ((module) => { - -// `IsCallable` abstract operation -// https://tc39.es/ecma262/#sec-iscallable -module.exports = function (argument) { - return typeof argument == 'function'; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/is-constructor.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/is-constructor.js ***! - \**********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); -var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); -var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); -var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); - -var noop = function () { /* empty */ }; -var empty = []; -var construct = getBuiltIn('Reflect', 'construct'); -var constructorRegExp = /^\s*(?:class|function)\b/; -var exec = uncurryThis(constructorRegExp.exec); -var INCORRECT_TO_STRING = !constructorRegExp.exec(noop); - -var isConstructorModern = function (argument) { - if (!isCallable(argument)) return false; - try { - construct(noop, empty, argument); - return true; - } catch (error) { - return false; - } -}; - -var isConstructorLegacy = function (argument) { - if (!isCallable(argument)) return false; - switch (classof(argument)) { - case 'AsyncFunction': - case 'GeneratorFunction': - case 'AsyncGeneratorFunction': return false; - // we can't check .prototype since constructors produced by .bind haven't it - } return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); -}; - -// `IsConstructor` abstract operation -// https://tc39.es/ecma262/#sec-isconstructor -module.exports = !construct || fails(function () { - var called; - return isConstructorModern(isConstructorModern.call) - || !isConstructorModern(Object) - || !isConstructorModern(function () { called = true; }) - || called; -}) ? isConstructorLegacy : isConstructorModern; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/is-forced.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/is-forced.js ***! - \*****************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); - -var replacement = /#|\.prototype\./; - -var isForced = function (feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true - : value == NATIVE ? false - : isCallable(detection) ? fails(detection) - : !!detection; -}; - -var normalize = isForced.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); -}; - -var data = isForced.data = {}; -var NATIVE = isForced.NATIVE = 'N'; -var POLYFILL = isForced.POLYFILL = 'P'; - -module.exports = isForced; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/is-object.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/is-object.js ***! - \*****************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); - -module.exports = function (it) { - return typeof it == 'object' ? it !== null : isCallable(it); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/is-pure.js": -/*!***************************************************!*\ - !*** ./node_modules/core-js/internals/is-pure.js ***! - \***************************************************/ -/***/ ((module) => { - -module.exports = false; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/is-symbol.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/is-symbol.js ***! - \*****************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); -var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); -var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js"); - -var Object = global.Object; - -module.exports = USE_SYMBOL_AS_UID ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - var $Symbol = getBuiltIn('Symbol'); - return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it)); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/length-of-array-like.js": -/*!****************************************************************!*\ - !*** ./node_modules/core-js/internals/length-of-array-like.js ***! - \****************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); - -// `LengthOfArrayLike` abstract operation -// https://tc39.es/ecma262/#sec-lengthofarraylike -module.exports = function (obj) { - return toLength(obj.length); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/native-symbol.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/native-symbol.js ***! - \*********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* eslint-disable es/no-symbol -- required for testing */ -var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js/internals/engine-v8-version.js"); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); - -// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing -module.exports = !!Object.getOwnPropertySymbols && !fails(function () { - var symbol = Symbol(); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - return !String(symbol) || !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - !Symbol.sham && V8_VERSION && V8_VERSION < 41; -}); - - -/***/ }), - -/***/ "./node_modules/core-js/internals/native-weak-map.js": -/*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/native-weak-map.js ***! - \***********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); -var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); - -var WeakMap = global.WeakMap; - -module.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap)); - - -/***/ }), - -/***/ "./node_modules/core-js/internals/object-assign.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/object-assign.js ***! - \*********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); -var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); -var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); -var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); -var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); -var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); - -// eslint-disable-next-line es/no-object-assign -- safe -var $assign = Object.assign; -// eslint-disable-next-line es/no-object-defineproperty -- required for testing -var defineProperty = Object.defineProperty; -var concat = uncurryThis([].concat); - -// `Object.assign` method -// https://tc39.es/ecma262/#sec-object.assign -module.exports = !$assign || fails(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { - enumerable: true, - get: function () { - defineProperty(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { b: 2 })).b !== 1) return true; - // should work with symbols and should have deterministic property order (V8 bug) - var A = {}; - var B = {}; - // eslint-disable-next-line es/no-symbol -- safe - var symbol = Symbol(); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { B[chr] = chr; }); - return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet; -}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` - var T = toObject(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - while (argumentsLength > index) { - var S = IndexedObject(arguments[index++]); - var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key]; - } - } return T; -} : $assign; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/object-define-property.js": -/*!******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-define-property.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); -var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); - -var TypeError = global.TypeError; -// eslint-disable-next-line es/no-object-defineproperty -- safe -var $defineProperty = Object.defineProperty; - -// `Object.defineProperty` method -// https://tc39.es/ecma262/#sec-object.defineproperty -exports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPropertyKey(P); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return $defineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js": -/*!******************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! - \******************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); -var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); -var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); -var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); -var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); - -// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe -var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - -// `Object.getOwnPropertyDescriptor` method -// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor -exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPropertyKey(P); - if (IE8_DOM_DEFINE) try { - return $getOwnPropertyDescriptor(O, P); - } catch (error) { /* empty */ } - if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/object-get-own-property-names.js": -/*!*************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); - -var hiddenKeys = enumBugKeys.concat('length', 'prototype'); - -// `Object.getOwnPropertyNames` method -// https://tc39.es/ecma262/#sec-object.getownpropertynames -// eslint-disable-next-line es/no-object-getownpropertynames -- safe -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js": -/*!***************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! - \***************************************************************************/ -/***/ ((__unused_webpack_module, exports) => { - -// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/object-is-prototype-of.js": -/*!******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-is-prototype-of.js ***! - \******************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); - -module.exports = uncurryThis({}.isPrototypeOf); - - -/***/ }), - -/***/ "./node_modules/core-js/internals/object-keys-internal.js": -/*!****************************************************************!*\ - !*** ./node_modules/core-js/internals/object-keys-internal.js ***! - \****************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); -var indexOf = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf); -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); - -var push = uncurryThis([].push); - -module.exports = function (object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); - // Don't enum bug & hidden keys - while (names.length > i) if (hasOwn(O, key = names[i++])) { - ~indexOf(result, key) || push(result, key); - } - return result; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/object-keys.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/object-keys.js ***! - \*******************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); - -// `Object.keys` method -// https://tc39.es/ecma262/#sec-object.keys -// eslint-disable-next-line es/no-object-keys -- safe -module.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js": -/*!*************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -var $propertyIsEnumerable = {}.propertyIsEnumerable; -// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe -var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - -// Nashorn ~ JDK8 bug -var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); - -// `Object.prototype.propertyIsEnumerable` method implementation -// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable -exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; -} : $propertyIsEnumerable; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/object-to-string.js": -/*!************************************************************!*\ - !*** ./node_modules/core-js/internals/object-to-string.js ***! - \************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); -var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); - -// `Object.prototype.toString` method implementation -// https://tc39.es/ecma262/#sec-object.prototype.tostring -module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { - return '[object ' + classof(this) + ']'; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/ordinary-to-primitive.js": -/*!*****************************************************************!*\ - !*** ./node_modules/core-js/internals/ordinary-to-primitive.js ***! - \*****************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); - -var TypeError = global.TypeError; - -// `OrdinaryToPrimitive` abstract operation -// https://tc39.es/ecma262/#sec-ordinarytoprimitive -module.exports = function (input, pref) { - var fn, val; - if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; - if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; - if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/own-keys.js": -/*!****************************************************!*\ - !*** ./node_modules/core-js/internals/own-keys.js ***! - \****************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); -var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); - -var concat = uncurryThis([].concat); - -// all object keys, includes non-enumerable and symbols -module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/redefine.js": -/*!****************************************************!*\ - !*** ./node_modules/core-js/internals/redefine.js ***! - \****************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); -var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); -var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); -var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); -var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").CONFIGURABLE); - -var getInternalState = InternalStateModule.get; -var enforceInternalState = InternalStateModule.enforce; -var TEMPLATE = String(String).split('String'); - -(module.exports = function (O, key, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - var name = options && options.name !== undefined ? options.name : key; - var state; - if (isCallable(value)) { - if (String(name).slice(0, 7) === 'Symbol(') { - name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']'; - } - if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { - createNonEnumerableProperty(value, 'name', name); - } - state = enforceInternalState(value); - if (!state.source) { - state.source = TEMPLATE.join(typeof name == 'string' ? name : ''); - } - } - if (O === global) { - if (simple) O[key] = value; - else setGlobal(key, value); - return; - } else if (!unsafe) { - delete O[key]; - } else if (!noTargetGet && O[key]) { - simple = true; - } - if (simple) O[key] = value; - else createNonEnumerableProperty(O, key, value); -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -})(Function.prototype, 'toString', function toString() { - return isCallable(this) && getInternalState(this).source || inspectSource(this); -}); - - -/***/ }), - -/***/ "./node_modules/core-js/internals/require-object-coercible.js": -/*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/require-object-coercible.js ***! - \********************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); - -var TypeError = global.TypeError; - -// `RequireObjectCoercible` abstract operation -// https://tc39.es/ecma262/#sec-requireobjectcoercible -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/set-global.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/internals/set-global.js ***! - \******************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); - -// eslint-disable-next-line es/no-object-defineproperty -- safe -var defineProperty = Object.defineProperty; - -module.exports = function (key, value) { - try { - defineProperty(global, key, { value: value, configurable: true, writable: true }); - } catch (error) { - global[key] = value; - } return value; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/shared-key.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/internals/shared-key.js ***! - \******************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); -var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); - -var keys = shared('keys'); - -module.exports = function (key) { - return keys[key] || (keys[key] = uid(key)); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/shared-store.js": -/*!********************************************************!*\ - !*** ./node_modules/core-js/internals/shared-store.js ***! - \********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); - -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || setGlobal(SHARED, {}); - -module.exports = store; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/shared.js": -/*!**************************************************!*\ - !*** ./node_modules/core-js/internals/shared.js ***! - \**************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); -var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: '3.19.1', - mode: IS_PURE ? 'pure' : 'global', - copyright: '© 2021 Denis Pushkarev (zloirock.ru)' -}); - - -/***/ }), - -/***/ "./node_modules/core-js/internals/to-absolute-index.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/to-absolute-index.js ***! - \*************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); - -var max = Math.max; -var min = Math.min; - -// Helper for a popular repeating case of the spec: -// Let integer be ? ToInteger(index). -// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). -module.exports = function (index, length) { - var integer = toIntegerOrInfinity(index); - return integer < 0 ? max(integer + length, 0) : min(integer, length); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/to-indexed-object.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/to-indexed-object.js ***! - \*************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// toObject with fallback for non-array-like ES3 strings -var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); -var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); - -module.exports = function (it) { - return IndexedObject(requireObjectCoercible(it)); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/to-integer-or-infinity.js": -/*!******************************************************************!*\ - !*** ./node_modules/core-js/internals/to-integer-or-infinity.js ***! - \******************************************************************/ -/***/ ((module) => { - -var ceil = Math.ceil; -var floor = Math.floor; - -// `ToIntegerOrInfinity` abstract operation -// https://tc39.es/ecma262/#sec-tointegerorinfinity -module.exports = function (argument) { - var number = +argument; - // eslint-disable-next-line no-self-compare -- safe - return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/to-length.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/to-length.js ***! - \*****************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); - -var min = Math.min; - -// `ToLength` abstract operation -// https://tc39.es/ecma262/#sec-tolength -module.exports = function (argument) { - return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/to-object.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/to-object.js ***! - \*****************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); - -var Object = global.Object; - -// `ToObject` abstract operation -// https://tc39.es/ecma262/#sec-toobject -module.exports = function (argument) { - return Object(requireObjectCoercible(argument)); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/to-primitive.js": -/*!********************************************************!*\ - !*** ./node_modules/core-js/internals/to-primitive.js ***! - \********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); -var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); -var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); -var ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ "./node_modules/core-js/internals/ordinary-to-primitive.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); - -var TypeError = global.TypeError; -var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); - -// `ToPrimitive` abstract operation -// https://tc39.es/ecma262/#sec-toprimitive -module.exports = function (input, pref) { - if (!isObject(input) || isSymbol(input)) return input; - var exoticToPrim = getMethod(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === undefined) pref = 'default'; - result = call(exoticToPrim, input, pref); - if (!isObject(result) || isSymbol(result)) return result; - throw TypeError("Can't convert object to primitive value"); - } - if (pref === undefined) pref = 'number'; - return ordinaryToPrimitive(input, pref); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/to-property-key.js": -/*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/to-property-key.js ***! - \***********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); -var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); - -// `ToPropertyKey` abstract operation -// https://tc39.es/ecma262/#sec-topropertykey -module.exports = function (argument) { - var key = toPrimitive(argument, 'string'); - return isSymbol(key) ? key : key + ''; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/to-string-tag-support.js": -/*!*****************************************************************!*\ - !*** ./node_modules/core-js/internals/to-string-tag-support.js ***! - \*****************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -var test = {}; - -test[TO_STRING_TAG] = 'z'; - -module.exports = String(test) === '[object z]'; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/try-to-string.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/try-to-string.js ***! - \*********************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); - -var String = global.String; - -module.exports = function (argument) { - try { - return String(argument); - } catch (error) { - return 'Object'; - } -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/uid.js": -/*!***********************************************!*\ - !*** ./node_modules/core-js/internals/uid.js ***! - \***********************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); - -var id = 0; -var postfix = Math.random(); -var toString = uncurryThis(1.0.toString); - -module.exports = function (key) { - return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/use-symbol-as-uid.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/use-symbol-as-uid.js ***! - \*************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* eslint-disable es/no-symbol -- required for testing */ -var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js"); - -module.exports = NATIVE_SYMBOL - && !Symbol.sham - && typeof Symbol.iterator == 'symbol'; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/well-known-symbol.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/well-known-symbol.js ***! - \*************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); -var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); -var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); -var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js"); -var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js"); - -var WellKnownSymbolsStore = shared('wks'); -var Symbol = global.Symbol; -var symbolFor = Symbol && Symbol['for']; -var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; - -module.exports = function (name) { - if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) { - var description = 'Symbol.' + name; - if (NATIVE_SYMBOL && hasOwn(Symbol, name)) { - WellKnownSymbolsStore[name] = Symbol[name]; - } else if (USE_SYMBOL_AS_UID && symbolFor) { - WellKnownSymbolsStore[name] = symbolFor(description); - } else { - WellKnownSymbolsStore[name] = createWellKnownSymbol(description); - } - } return WellKnownSymbolsStore[name]; -}; - - -/***/ }), - -/***/ "./node_modules/core-js/modules/es.array.map.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/modules/es.array.map.js ***! - \******************************************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); -var $map = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").map); -var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); - -var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); - -// `Array.prototype.map` method -// https://tc39.es/ecma262/#sec-array.prototype.map -// with adding support of @@species -$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { - map: function map(callbackfn /* , thisArg */) { - return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } -}); - - -/***/ }), - -/***/ "./node_modules/core-js/modules/es.array.slice.js": -/*!********************************************************!*\ - !*** ./node_modules/core-js/modules/es.array.slice.js ***! - \********************************************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); -var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); -var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); -var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); -var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); -var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); -var un$Slice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); - -var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); - -var SPECIES = wellKnownSymbol('species'); -var Array = global.Array; -var max = Math.max; - -// `Array.prototype.slice` method -// https://tc39.es/ecma262/#sec-array.prototype.slice -// fallback for not array-like ES3 strings and DOM objects -$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { - slice: function slice(start, end) { - var O = toIndexedObject(this); - var length = lengthOfArrayLike(O); - var k = toAbsoluteIndex(start, length); - var fin = toAbsoluteIndex(end === undefined ? length : end, length); - // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible - var Constructor, result, n; - if (isArray(O)) { - Constructor = O.constructor; - // cross-realm fallback - if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) { - Constructor = undefined; - } else if (isObject(Constructor)) { - Constructor = Constructor[SPECIES]; - if (Constructor === null) Constructor = undefined; - } - if (Constructor === Array || Constructor === undefined) { - return un$Slice(O, k, fin); - } - } - result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0)); - for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); - result.length = n; - return result; - } -}); - - -/***/ }), - -/***/ "./node_modules/core-js/modules/es.object.assign.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/modules/es.object.assign.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); -var assign = __webpack_require__(/*! ../internals/object-assign */ "./node_modules/core-js/internals/object-assign.js"); - -// `Object.assign` method -// https://tc39.es/ecma262/#sec-object.assign -// eslint-disable-next-line es/no-object-assign -- required for testing -$({ target: 'Object', stat: true, forced: Object.assign !== assign }, { - assign: assign -}); - - -/***/ }), - -/***/ "./node_modules/core-js/modules/es.object.to-string.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/modules/es.object.to-string.js ***! - \*************************************************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); -var toString = __webpack_require__(/*! ../internals/object-to-string */ "./node_modules/core-js/internals/object-to-string.js"); - -// `Object.prototype.toString` method -// https://tc39.es/ecma262/#sec-object.prototype.tostring -if (!TO_STRING_TAG_SUPPORT) { - redefine(Object.prototype, 'toString', toString, { unsafe: true }); -} - - -/***/ }), - -/***/ "./node_modules/core-js/modules/web.dom-collections.for-each.js": -/*!**********************************************************************!*\ - !*** ./node_modules/core-js/modules/web.dom-collections.for-each.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ "./node_modules/core-js/internals/dom-iterables.js"); -var DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ "./node_modules/core-js/internals/dom-token-list-prototype.js"); -var forEach = __webpack_require__(/*! ../internals/array-for-each */ "./node_modules/core-js/internals/array-for-each.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); - -var handlePrototype = function (CollectionPrototype) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { - createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); - } catch (error) { - CollectionPrototype.forEach = forEach; - } -}; - -for (var COLLECTION_NAME in DOMIterables) { - if (DOMIterables[COLLECTION_NAME]) { - handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype); - } -} - -handlePrototype(DOMTokenListPrototype); - - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/global */ -/******/ (() => { -/******/ __webpack_require__.g = (function() { -/******/ if (typeof globalThis === 'object') return globalThis; -/******/ try { -/******/ return this || new Function('return this')(); -/******/ } catch (e) { -/******/ if (typeof window === 'object') return window; -/******/ } -/******/ })(); -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be in strict mode. -(() => { -"use strict"; -/*!***********************************!*\ - !*** ./resources/js/caroussel.js ***! - \***********************************/ -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.assign.js */ "./node_modules/core-js/modules/es.object.assign.js"); -/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js"); -/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); -/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); -/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); -/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__); - - - - - - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -/*js doc*/ -var Carrousel = /*#__PURE__*/function () { - /** - * - * This callback type is called 'requestCallback' and is displayed as a global symbol - * - * @callback moveCallback - * @param {number} index - */ - - /** - * - * - * @param {HTMLElement} element - * @param {Object} options - * @param {Object} [options.slidesToScroll=1] Nombre d'éléments à faire défiler - * @param {Object} [options.slidesVisible=1] Nombre d'éléments visible dans un slide - * @param {boolean} [options.loop=false] Doit-on boucler en fin de carrousel - * @param {boolean} [options.pagination=false] - * @param {boolean} [options.navigation=true] - */ - function Carrousel(element) { - var _this = this; - - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - _classCallCheck(this, Carrousel); - - this.element = element; - this.options = Object.assign({}, { - slidesToScroll: 1, - slidesVisible: 1, - loop: false, - pagination: false, - navigation: true - }, options); - var children = [].slice.call(element.children); - this.isMobile = false; - this.currentItem = 0; - this.moveCallbacks = []; //Modification du DOM - - this.root = this.createDivWithClass('carrousel'); - this.container = this.createDivWithClass('carrousel__container'); - this.root.setAttribute('tabindex', '0'); - this.root.appendChild(this.container); - this.element.appendChild(this.root); - this.items = children.map(function (child) { - var item = _this.createDivWithClass('carrousel__item'); - - item.appendChild(child); - - _this.container.appendChild(item); - - return item; - }); - this.setStyle(); - - if (this.options.navigation) { - this.createNavigation(); - } - - if (this.options.pagination) { - this.createPagination(); - } //Evenements - - - this.moveCallbacks.forEach(function (cb) { - return cb(0); - }); - this.onWindowResize(); - window.addEventListener('resize', this.onWindowResize.bind(this)); - this.root.addEventListener('keyup', function (e) { - if (e.key === 'ArrowRight' || e.key === 'Right') { - _this.next(); - } else if (e.key === 'ArrowLeft' || e.key === 'Left') { - _this.prev(); - } - }); - } - /** - * Applique les bonnes dimensions aux éléments du carrousel - */ - - - _createClass(Carrousel, [{ - key: "setStyle", - value: function setStyle() { - var _this2 = this; - - var ratio = this.items.length / this.slidesVisible; - this.container.style.width = ratio * 100 + "%"; - this.items.forEach(function (item) { - return item.style.width = 100 / _this2.slidesVisible / ratio + "%"; - }); - } - /** - * Créer les flêches de navigation dans le DOM - */ - - }, { - key: "createNavigation", - value: function createNavigation() { - var _this3 = this; - - var nextButton = this.createDivWithClass('carrousel__next'); - var prevButton = this.createDivWithClass('carrousel__prev'); - this.root.appendChild(nextButton); - this.root.appendChild(prevButton); - nextButton.addEventListener('click', this.next.bind(this)); - prevButton.addEventListener('click', this.prev.bind(this)); - - if (this.options.loop === true) { - return; - } - - this.onMove(function (index) { - if (index === 0) { - prevButton.classList.add('carrousel__prev--hidden'); - } else { - prevButton.classList.remove('carrousel__prev--hidden'); - } - - if (_this3.items[_this3.currentItem + _this3.slidesVisible] === undefined) { - nextButton.classList.add('carrousel__next--hidden'); - } else { - nextButton.classList.remove('carrousel__next--hidden'); - } - }); - } - /** - * Créer la pagination dans le DOM - */ - - }, { - key: "createPagination", - value: function createPagination() { - var _this4 = this; - - var pagination = this.createDivWithClass('carrousel__pagination'); - var buttons = []; - this.root.appendChild(pagination); - - var _loop = function _loop(i) { - var button = _this4.createDivWithClass('carrousel__pagination__button'); - - button.addEventListener('click', function () { - return _this4.gotoItem(i); - }); - pagination.appendChild(button); - buttons.push(button); - }; - - for (var i = 0; i < this.items.length; i = i + this.options.slidesToScroll) { - _loop(i); - } - - this.onMove(function (index) { - var activeButton = buttons[Math.floor(index / _this4.options.slidesToScroll)]; - - if (activeButton) { - buttons.forEach(function (button) { - return button.classList.remove('carrousel__pagination__button--active'); - }); - activeButton.classList.add('carrousel__pagination__button--active'); - } - }); - } - }, { - key: "next", - value: function next() { - this.gotoItem(this.currentItem + this.slidesToScroll); - } - }, { - key: "prev", - value: function prev() { - this.gotoItem(this.currentItem - this.slidesToScroll); - } - /** - * Déplace le carrousel vers l'élément ciblé - * @param {number} index - */ - - }, { - key: "gotoItem", - value: function gotoItem(index) { - if (index < 0) { - if (this.options.loop) { - index = this.items.length - this.slidesVisible; - } else { - return; - } - } else if (index >= this.items.length || this.items[this.currentItem + this.slidesVisible] === undefined && index > this.currentItem) { - if (this.options.loop) { - index = 0; - } else { - return; - } - } - - var translateX = index * -100 / this.items.length; - this.container.style.transform = 'translate3d(' + translateX + '%, 0, 0)'; - this.currentItem = index; - this.moveCallbacks.forEach(function (cb) { - return cb(index); - }); - } - /** - * - * @param {moveCallback} cb - */ - - }, { - key: "onMove", - value: function onMove(cb) { - this.moveCallbacks.push(cb); - } - }, { - key: "onWindowResize", - value: function onWindowResize() { - var _this5 = this; - - var mobile = window.innerWidth < 800; - - if (mobile !== this.isMobile) { - this.isMobile = mobile; - this.setStyle(); - this.moveCallbacks.forEach(function (cb) { - return cb(_this5.currentItem); - }); - } - } - /** - * - * @param {string} className - * @returns {HTMLElement} - */ - - }, { - key: "createDivWithClass", - value: function createDivWithClass(className) { - var div = document.createElement('div'); - div.setAttribute('class', className); - return div; - } - /** - * @returns {number} - */ - - }, { - key: "slidesToScroll", - get: function get() { - return this.isMobile ? 1 : this.options.slidesToScroll; - } - /** - * @returns {number} - */ - - }, { - key: "slidesVisible", - get: function get() { - return this.isMobile ? 1 : this.options.slidesVisible; - } - }]); - - return Carrousel; -}(); - -document.addEventListener('DOMContentLoaded', function () { - if (document.querySelector('#carrousel1')) { - new Carrousel(document.querySelector('#carrousel1'), { - pagination: true, - navigation: false - }); - } - - if (document.querySelector('#carrousel2')) { - new Carrousel(document.querySelector('#carrousel2'), {}); - } -}); -})(); - -/******/ })() -; \ No newline at end of file diff --git a/public/js/ldcweb-cn.min.js b/public/js/ldcweb-cn.min.js deleted file mode 100644 index acf2818..0000000 --- a/public/js/ldcweb-cn.min.js +++ /dev/null @@ -1 +0,0 @@ -class LdcwebCn{constructor(e){this.config=e,this.cookieContainer=document.getElementById("ldcweb-cn"),this.bannerContainer=document.getElementById("ldcweb-banner"),this.modalContainer=document.getElementById("ldcweb-cn-modal"),this.modalCloseBtn=document.getElementById("close-link"),this.acceptAllBtnBanner=document.getElementById("ldcweb-cn-accept-banner"),this.denyAllBtnBanner=document.getElementById("ldcweb-cn-deny-banner"),this.acceptAllBtn=document.getElementById("ldcweb-cn-accept"),this.denyAllBtn=document.getElementById("ldcweb-cn-deny"),this.personalizeBtn=document.getElementsByClassName("ldcweb-cn-personalize"),this.changeBtn=document.getElementsByClassName("ldcweb-cn-change"),this.cookiesList=document.getElementById("ldcweb-cn-list"),this.cookieLink=document.getElementsByClassName("ldcweb-cn-cookie-link"),this.template=document.getElementById("template").cloneNode(!0),document.getElementById("template").remove();let t=this.getLDCWebCookie("ldcwebcn-init");if(void 0===t){let e=[];for(const[t,i]of Object.entries(this.config))e.push(t+"=wait");this.saveLDCWebCookie(e),this.cookieContainer.classList.add("open-banner")}else{t.split(",").forEach(e=>{"wait"===e.split("=")[1]&&this.cookieContainer.classList.add("open-banner")})}this.modalCloseBtn.addEventListener("click",function(e){e.preventDefault();let t=this.getLDCWebCookie("ldcwebcn-init").split(","),i=!0;for(let e of t)if(-1!==e.indexOf("=wait")){i=!1;break}i?(this.cookieContainer.classList.remove("open-modal"),this.cookieContainer.classList.remove("open-banner")):alert("Vous devez renseigner votre choix pour tous les cookies, svp.")}.bind(this));let i=function(e){e.preventDefault();for(const[e,t]of Object.entries(this.config))this.addCookie(e,t);for(let e of this.cookieContainer.querySelectorAll(".accept > label"))e.classList.add("active");for(let e of this.cookieContainer.querySelectorAll(".deny > label"))e.classList.remove("active");this.updateAllCookiesButtonsActiveStatus(),this.cookieContainer.classList.remove("open-modal"),this.cookieContainer.classList.remove("open-banner")}.bind(this);this.acceptAllBtnBanner.addEventListener("click",i),this.acceptAllBtn.addEventListener("click",i);let n=function(e){e.preventDefault();for(const[e,t]of Object.entries(this.config))this.removeCookie(e,t);for(let e of this.cookieContainer.querySelectorAll(".accept > label"))e.classList.remove("active");for(let e of this.cookieContainer.querySelectorAll(".deny > label"))e.classList.add("active");this.updateAllCookiesButtonsActiveStatus(),this.cookieContainer.classList.remove("open-modal"),this.cookieContainer.classList.remove("open-banner")}.bind(this);this.denyAllBtnBanner.addEventListener("click",n),this.denyAllBtn.addEventListener("click",n);for(let e of this.cookieLink)this.addEvent(e,"click",function(e){e.preventDefault(),this.openModal()}.bind(this));for(let e of this.personalizeBtn)this.addEvent(e,"click",function(e){e.preventDefault(),this.setCookieList()}.bind(this));this.setListenerOnChange(),this.getLDCWebCookie("ldcwebcn-init").split(",").forEach(e=>{let t=e.split("=");"true"===t[1]?this.config[t[0]].script():void 0!==this.config[t[0]].fallback&&this.config[t[0]].fallback()}),this.updateAllCookiesButtonsActiveStatus()}setCookieList(){this.cookiesList.innerHTML="";let e=this.getLDCWebCookie("ldcwebcn-init"),t=function(e,t,i,n){return function(o){e.classList.add("active"),t.classList.remove("active"),this.updateAllCookiesButtonsActiveStatus(),this.addCookie(i,n)}.bind(this,[e,t,i,n])},i=function(e,t,i,n){return function(o){e.classList.remove("active"),t.classList.add("active"),this.updateAllCookiesButtonsActiveStatus(),this.removeCookie(i,n)}.bind(this,[e,t,i,n])};for(const[n,o]of Object.entries(this.config)){let s=document.createElement("li");s.append(this.template.children.item(0).cloneNode(!0));let c=s.querySelector("span.ldcweb-cn-name"),l=s.querySelector("span.ldcweb-cn-description"),a=s.querySelector("a.ldcweb-cn-link"),d=s.querySelector(".accept > input"),r=s.querySelector(".deny > input"),h=s.querySelector(".accept > label"),u=s.querySelector(".deny > label");c.textContent=o.name,l.textContent=o.description,a.textContent=o.labelLink,a.setAttribute("href",o.link),d.id=n+"1",d.name=n,d.dataset.name=n,h.htmlFor=n+"1",r.id=n+"2",r.name=n,r.dataset.name=n,u.htmlFor=n+"2",d.addEventListener("click",t.apply(this,[h,u,n,o])),r.addEventListener("click",i.apply(this,[h,u,n,o])),this.cookiesList.append(s);let m=e.split(",");for(const e of m){let t=e.slice(0,e.indexOf("=")),i=e.slice(e.indexOf("=")+1);if(t===n)switch(h.classList.remove("active"),u.classList.remove("active"),i){case"true":h.classList.add("active");break;case"false":u.classList.add("active")}"wait"===i&&this.cookieContainer.classList.add("open-banner")}}this.cookieContainer.classList.add("open-modal"),this.setListenerOnChange()}updateAllCookiesButtonsActiveStatus(){let e=this.cookieContainer.querySelectorAll("div.accept > label"),t=this.cookieContainer.querySelectorAll("div.deny > label"),i=this.cookieContainer.querySelectorAll("div.accept > label.active"),n=this.cookieContainer.querySelectorAll("div.deny > label.active");this.acceptAllBtn.classList.remove("active"),this.denyAllBtn.classList.remove("active"),e.length&&e.length===i.length&&this.acceptAllBtn.classList.add("active"),t.length&&t.length===n.length&&this.denyAllBtn.classList.add("active")}addCookie(e,t){t.script&&t.script(),this.changeStatus(e,"true")}removeCookie(e,t){for(let e of t.cookies)this.deleteBrowserCookie(e,"/","."+location.host);document.getElementById(e)&&document.getElementById(e).remove(),this.changeStatus(e,"false")}setListenerOnChange(){this.changeBtn=document.getElementsByClassName("ldcweb-cn-change");let e=function(e){return function(){this.changeStatus(e.getAttribute("data-name"),e.getAttribute("data-status"))}.bind(this)};for(let t of this.changeBtn)this.addEvent(t,"click",e.bind(this,[t]))}changeStatus(e,t){let i=[];this.getLDCWebCookie("ldcwebcn-init").split(",").forEach(n=>{let o=n.split("=");o[0]===e?(i.push(e+"="+t),"false"===t&&this.config[o[0]].cookies.forEach(e=>{void 0!==this.getLDCWebCookie(e)&&(document.cookie=e+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain="+document.domain+"; path=/",document.cookie=e+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=."+document.domain+"; path=/")})):i.push(n)}),this.saveLDCWebCookie(i)}deleteBrowserCookie(e,t,i){this.getLDCWebCookie(e)&&(document.cookie=e+"="+(t?";path="+t:"")+(i?";domain="+i:"")+";expires=Thu, 01 Jan 1970 00:00:01 GMT")}getLDCWebCookie(e){let t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):void 0}addEvent(e,t,i){return e.attachEvent?e.attachEvent("on"+t,i):e.addEventListener(t,i,!1)}saveLDCWebCookie(e){let t=new Date,i=new Date(t.setMonth(t.getMonth()+13));document.cookie="ldcwebcn-init="+e+"; expires="+i.toUTCString()+"; path=/;"}openModal(){this.setCookieList(),this.updateAllCookiesButtonsActiveStatus()}} \ No newline at end of file diff --git a/public/mix-manifest.json b/public/mix-manifest.json deleted file mode 100644 index ede9e27..0000000 --- a/public/mix-manifest.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "/js/app.js": "/js/app.js", - "/js/caroussel.js": "/js/caroussel.js", - "/css/app.css": "/css/app.css" -} diff --git a/resources/assets/back.js b/resources/assets/back.js new file mode 100644 index 0000000..a2cf959 --- /dev/null +++ b/resources/assets/back.js @@ -0,0 +1,2 @@ +require('./bootstrap'); +require('./vuejs'); diff --git a/resources/assets/bootstrap.js b/resources/assets/bootstrap.js new file mode 100644 index 0000000..f61bbe7 --- /dev/null +++ b/resources/assets/bootstrap.js @@ -0,0 +1,28 @@ +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +window.axios = require('axios'); + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// window.Pusher = require('pusher-js'); + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: process.env.MIX_PUSHER_APP_KEY, +// cluster: process.env.MIX_PUSHER_APP_CLUSTER, +// forceTLS: true +// }); + +window._ = require('lodash'); diff --git a/resources/assets/components/backend/ProductsPictos.vue b/resources/assets/components/backend/ProductsPictos.vue new file mode 100644 index 0000000..2b24c51 --- /dev/null +++ b/resources/assets/components/backend/ProductsPictos.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/resources/assets/components/backend/RangesSubRanges.vue b/resources/assets/components/backend/RangesSubRanges.vue new file mode 100644 index 0000000..1d416db --- /dev/null +++ b/resources/assets/components/backend/RangesSubRanges.vue @@ -0,0 +1,82 @@ + + + diff --git a/resources/assets/fonts/cocon/cocon-regular-demo.html b/resources/assets/fonts/cocon/cocon-regular-demo.html new file mode 100644 index 0000000..92df5b0 --- /dev/null +++ b/resources/assets/fonts/cocon/cocon-regular-demo.html @@ -0,0 +1,618 @@ + + + + + + + + + + + + + Cocon Regular Specimen + + + + + + +
+ + + +
+ + +
+ +
+
+
AaBb
+
+
+ +
+
A​B​C​D​E​F​G​H​I​J​K​L​M​N​O​P​Q​R​S​T​U​V​W​X​Y​Z​a​b​c​d​e​f​g​h​i​j​k​l​m​n​o​p​q​r​s​t​u​v​w​x​y​z​1​2​3​4​5​6​7​8​9​0​&​.​,​?​!​@​(​)​#​$​%​*​+​-​=​:​;
+
+
+
+ + + + + + + + + + + + + + + + +
10abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
11abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
12abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
13abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
14abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
16abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
18abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
20abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
24abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
30abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
36abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
48abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
60abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
72abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
90abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
+ +
+ +
+ + + +
+ + +
+
◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼body
body
body
body
+
+ bodyCocon Regular +
+
+ bodyArial +
+
+ bodyVerdana +
+
+ bodyGeorgia +
+ + + +
+ + +
+ +
+

10.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+

11.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+

12.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+

13.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+ +
+
+
+

14.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+

16.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+

18.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+ +
+ +
+ +
+
+

20.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+
+
+

24.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+
+ +
+ +
+ +
+
+

30.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+
+
+ +
+ + + +
+
+

10.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+

11.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+

12.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+

13.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+ +
+ +
+
+

14.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+

16.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+

18.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+ +
+
+ +
+ +
+
+

20.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+
+
+

24.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+
+ +
+ +
+ +
+
+

30.Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.

+
+
+ +
+ + + + +
+ +
+ +
+ +
+

Lorem Ipsum Dolor

+

Etiam porta sem malesuada magna mollis euismod

+ + +
+
+
+
+

Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

+ + +

Pellentesque ornare sem

+ +

Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit.

+ +

Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

+ +

Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur.

+ +

Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla.

+ +

Cras mattis consectetur

+ +

Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum.

+ +

Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.

+
+ + +
+ +
+ + + + + + +
+
+
+ +

Language Support

+

The subset of Cocon Regular in this kit supports the following languages:
+ + Albanian, Basque, Breton, Chamorro, Danish, Dutch, English, Faroese, Finnish, French, Frisian, Galician, German, Icelandic, Italian, Malagasy, Norwegian, Portuguese, Spanish, Alsatian, Aragonese, Arapaho, Arrernte, Asturian, Aymara, Bislama, Cebuano, Corsican, Fijian, French_creole, Genoese, Gilbertese, Greenlandic, Haitian_creole, Hiligaynon, Hmong, Hopi, Ibanag, Iloko_ilokano, Indonesian, Interglossa_glosa, Interlingua, Irish_gaelic, Jerriais, Lojban, Lombard, Luxembourgeois, Manx, Mohawk, Norfolk_pitcairnese, Occitan, Oromo, Pangasinan, Papiamento, Piedmontese, Potawatomi, Rhaeto-romance, Romansh, Rotokas, Sami_lule, Samoan, Sardinian, Scots_gaelic, Seychelles_creole, Shona, Sicilian, Somali, Southern_ndebele, Swahili, Swati_swazi, Tagalog_filipino_pilipino, Tetum, Tok_pisin, Uyghur_latinized, Volapuk, Walloon, Warlpiri, Xhosa, Yapese, Zulu, Latinbasic, Ubasic, Demo

+

Glyph Chart

+

The subset of Cocon Regular in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.

+
+ +

&#32;

+

&#33;

!
+

&#34;

"
+

&#35;

#
+

&#36;

$
+

&#37;

%
+

&#38;

&
+

&#39;

'
+

&#40;

(
+

&#41;

)
+

&#42;

*
+

&#43;

+
+

&#44;

,
+

&#45;

-
+

&#46;

.
+

&#47;

/
+

&#48;

0
+

&#49;

1
+

&#50;

2
+

&#51;

3
+

&#52;

4
+

&#53;

5
+

&#54;

6
+

&#55;

7
+

&#56;

8
+

&#57;

9
+

&#58;

:
+

&#59;

;
+

&#60;

<
+

&#61;

=
+

&#62;

>
+

&#63;

?
+

&#64;

@
+

&#65;

A
+

&#66;

B
+

&#67;

C
+

&#68;

D
+

&#69;

E
+

&#70;

F
+

&#71;

G
+

&#72;

H
+

&#73;

I
+

&#74;

J
+

&#75;

K
+

&#76;

L
+

&#77;

M
+

&#78;

N
+

&#79;

O
+

&#80;

P
+

&#81;

Q
+

&#82;

R
+

&#83;

S
+

&#84;

T
+

&#85;

U
+

&#86;

V
+

&#87;

W
+

&#88;

X
+

&#89;

Y
+

&#90;

Z
+

&#91;

[
+

&#92;

\
+

&#93;

]
+

&#94;

^
+

&#95;

_
+

&#96;

`
+

&#97;

a
+

&#98;

b
+

&#99;

c
+

&#100;

d
+

&#101;

e
+

&#102;

f
+

&#103;

g
+

&#104;

h
+

&#105;

i
+

&#106;

j
+

&#107;

k
+

&#108;

l
+

&#109;

m
+

&#110;

n
+

&#111;

o
+

&#112;

p
+

&#113;

q
+

&#114;

r
+

&#115;

s
+

&#116;

t
+

&#117;

u
+

&#118;

v
+

&#119;

w
+

&#120;

x
+

&#121;

y
+

&#122;

z
+

&#123;

{
+

&#124;

|
+

&#125;

}
+

&#126;

~
+

&#160;

 
+

&#161;

¡
+

&#162;

¢
+

&#163;

£
+

&#164;

¤
+

&#165;

¥
+

&#166;

¦
+

&#167;

§
+

&#168;

¨
+

&#169;

©
+

&#170;

ª
+

&#171;

«
+

&#172;

¬
+

&#173;

­
+

&#174;

®
+

&#175;

¯
+

&#176;

°
+

&#177;

±
+

&#178;

²
+

&#179;

³
+

&#180;

´
+

&#181;

µ
+

&#182;

+

&#183;

·
+

&#184;

¸
+

&#185;

¹
+

&#186;

º
+

&#187;

»
+

&#188;

¼
+

&#189;

½
+

&#190;

¾
+

&#191;

¿
+

&#192;

À
+

&#193;

Á
+

&#194;

Â
+

&#195;

Ã
+

&#196;

Ä
+

&#197;

Å
+

&#198;

Æ
+

&#199;

Ç
+

&#200;

È
+

&#201;

É
+

&#202;

Ê
+

&#203;

Ë
+

&#204;

Ì
+

&#205;

Í
+

&#206;

Î
+

&#207;

Ï
+

&#208;

Ð
+

&#209;

Ñ
+

&#210;

Ò
+

&#211;

Ó
+

&#212;

Ô
+

&#213;

Õ
+

&#214;

Ö
+

&#215;

×
+

&#216;

Ø
+

&#217;

Ù
+

&#218;

Ú
+

&#219;

Û
+

&#220;

Ü
+

&#221;

Ý
+

&#222;

Þ
+

&#223;

ß
+

&#224;

à
+

&#225;

á
+

&#226;

â
+

&#227;

ã
+

&#228;

ä
+

&#229;

å
+

&#230;

æ
+

&#231;

ç
+

&#232;

è
+

&#233;

é
+

&#234;

ê
+

&#235;

ë
+

&#236;

ì
+

&#237;

í
+

&#238;

î
+

&#239;

ï
+

&#240;

ð
+

&#241;

ñ
+

&#242;

ò
+

&#243;

ó
+

&#244;

ô
+

&#245;

õ
+

&#246;

ö
+

&#247;

÷
+

&#248;

ø
+

&#249;

ù
+

&#250;

ú
+

&#251;

û
+

&#252;

ü
+

&#253;

ý
+

&#254;

þ
+

&#255;

ÿ
+

&#338;

Œ
+

&#339;

œ
+

&#376;

Ÿ
+

&#710;

ˆ
+

&#732;

˜
+

&#8192;

 
+

&#8193;

 
+

&#8194;

 
+

&#8195;

 
+

&#8196;

 
+

&#8197;

 
+

&#8198;

 
+

&#8199;

 
+

&#8200;

 
+

&#8201;

 
+

&#8202;

 
+

&#8208;

‐
+

&#8209;

‑
+

&#8210;

‒
+

&#8211;

–
+

&#8212;

—
+

&#8216;

‘
+

&#8217;

’
+

&#8218;

‚
+

&#8220;

“
+

&#8221;

”
+

&#8222;

„
+

&#8226;

•
+

&#8230;

…
+

&#8239;

 
+

&#8249;

‹
+

&#8250;

›
+

&#8287;

 
+

&#8482;

™
+

&#9724;

◼
+

&#64257;

fi
+

&#64258;

fl
+
+
+ + +
+
+ + +
+ +
+ +
+
+
+

Installing Webfonts

+ +

Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.

+ +

1. Upload your webfonts

+

You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.

+ +

2. Include the webfont stylesheet

+

A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the Fontspring blog post about it. The code for it is as follows:

+ + + +@font-face{ + font-family: 'MyWebFont'; + src: url('WebFont.eot'); + src: url('WebFont.eot?#iefix') format('embedded-opentype'), + url('WebFont.woff') format('woff'), + url('WebFont.ttf') format('truetype'), + url('WebFont.svg#webfont') format('svg'); +} + + +

We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:

+ <link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8" /> + +

3. Modify your own stylesheet

+

To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:

+p { font-family: 'WebFont', Arial, sans-serif; } + +

4. Test

+

Getting webfonts to work cross-browser can be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.

+
+ + +
+ +
+ +
+ +
+ + \ No newline at end of file diff --git a/resources/assets/fonts/cocon/cocon-regular-webfont.woff b/resources/assets/fonts/cocon/cocon-regular-webfont.woff new file mode 100644 index 0000000..ba4bd15 Binary files /dev/null and b/resources/assets/fonts/cocon/cocon-regular-webfont.woff differ diff --git a/resources/assets/fonts/cocon/cocon-regular-webfont.woff2 b/resources/assets/fonts/cocon/cocon-regular-webfont.woff2 new file mode 100644 index 0000000..f84b00c Binary files /dev/null and b/resources/assets/fonts/cocon/cocon-regular-webfont.woff2 differ diff --git a/resources/assets/fonts/cocon/generator_config.txt b/resources/assets/fonts/cocon/generator_config.txt new file mode 100644 index 0000000..81e64f6 --- /dev/null +++ b/resources/assets/fonts/cocon/generator_config.txt @@ -0,0 +1,5 @@ +# Font Squirrel Font-face Generator Configuration File +# Upload this file to the generator to recreate the settings +# you used to create these fonts. + +{"mode":"optimal","formats":["woff","woff2"],"tt_instructor":"default","fix_gasp":"xy","fix_vertical_metrics":"Y","metrics_ascent":"","metrics_descent":"","metrics_linegap":"","add_spaces":"Y","add_hyphens":"Y","fallback":"none","fallback_custom":"100","options_subset":"basic","subset_custom":"","subset_custom_range":"","subset_ot_features_list":"","css_stylesheet":"stylesheet.css","filename_suffix":"-webfont","emsquare":"2048","spacing_adjustment":"0"} \ No newline at end of file diff --git a/resources/assets/fonts/cocon/specimen_files/grid_12-825-55-15.css b/resources/assets/fonts/cocon/specimen_files/grid_12-825-55-15.css new file mode 100644 index 0000000..3d6aef7 --- /dev/null +++ b/resources/assets/fonts/cocon/specimen_files/grid_12-825-55-15.css @@ -0,0 +1,129 @@ +/*Notes about grid: +Columns: 12 +Grid Width: 825px +Column Width: 55px +Gutter Width: 15px +-------------------------------*/ + + + +.section {margin-bottom: 18px; +} +.section:after {content: ".";display: block;height: 0;clear: both;visibility: hidden;} +.section {*zoom: 1;} + +.section .firstcolumn, +.section .firstcol {margin-left: 0;} + + +/* Border on left hand side of a column. */ +.border { + padding-left: 7px; + margin-left: 7px; + border-left: 1px solid #eee; +} + +/* Border with more whitespace, spans one column. */ +.colborder { + padding-left: 42px; + margin-left: 42px; + border-left: 1px solid #eee; +} + + + +/* The Grid Classes */ +.grid1, .grid1_2cols, .grid1_3cols, .grid1_4cols, .grid2, .grid2_3cols, .grid2_4cols, .grid3, .grid3_2cols, .grid3_4cols, .grid4, .grid4_3cols, .grid5, .grid5_2cols, .grid5_3cols, .grid5_4cols, .grid6, .grid6_4cols, .grid7, .grid7_2cols, .grid7_3cols, .grid7_4cols, .grid8, .grid8_3cols, .grid9, .grid9_2cols, .grid9_4cols, .grid10, .grid10_3cols, .grid10_4cols, .grid11, .grid11_2cols, .grid11_3cols, .grid11_4cols, .grid12 +{margin-left: 15px;float: left;display: inline; overflow: hidden;} + + +.width1, .grid1, .span-1 {width: 55px;} +.width1_2cols,.grid1_2cols {width: 20px;} +.width1_3cols,.grid1_3cols {width: 8px;} +.width1_4cols,.grid1_4cols {width: 2px;} +.input_width1 {width: 49px;} + +.width2, .grid2, .span-2 {width: 125px;} +.width2_3cols,.grid2_3cols {width: 31px;} +.width2_4cols,.grid2_4cols {width: 20px;} +.input_width2 {width: 119px;} + +.width3, .grid3, .span-3 {width: 195px;} +.width3_2cols,.grid3_2cols {width: 90px;} +.width3_4cols,.grid3_4cols {width: 37px;} +.input_width3 {width: 189px;} + +.width4, .grid4, .span-4 {width: 265px;} +.width4_3cols,.grid4_3cols {width: 78px;} +.input_width4 {width: 259px;} + +.width5, .grid5, .span-5 {width: 335px;} +.width5_2cols,.grid5_2cols {width: 160px;} +.width5_3cols,.grid5_3cols {width: 101px;} +.width5_4cols,.grid5_4cols {width: 72px;} +.input_width5 {width: 329px;} + +.width6, .grid6, .span-6 {width: 405px;} +.width6_4cols,.grid6_4cols {width: 90px;} +.input_width6 {width: 399px;} + +.width7, .grid7, .span-7 {width: 475px;} +.width7_2cols,.grid7_2cols {width: 230px;} +.width7_3cols,.grid7_3cols {width: 148px;} +.width7_4cols,.grid7_4cols {width: 107px;} +.input_width7 {width: 469px;} + +.width8, .grid8, .span-8 {width: 545px;} +.width8_3cols,.grid8_3cols {width: 171px;} +.input_width8 {width: 539px;} + +.width9, .grid9, .span-9 {width: 615px;} +.width9_2cols,.grid9_2cols {width: 300px;} +.width9_4cols,.grid9_4cols {width: 142px;} +.input_width9 {width: 609px;} + +.width10, .grid10, .span-10 {width: 685px;} +.width10_3cols,.grid10_3cols {width: 218px;} +.width10_4cols,.grid10_4cols {width: 160px;} +.input_width10 {width: 679px;} + +.width11, .grid11, .span-11 {width: 755px;} +.width11_2cols,.grid11_2cols {width: 370px;} +.width11_3cols,.grid11_3cols {width: 241px;} +.width11_4cols,.grid11_4cols {width: 177px;} +.input_width11 {width: 749px;} + +.width12, .grid12, .span-12 {width: 825px;} +.input_width12 {width: 819px;} + +/* Subdivided grid spaces */ +.emptycols_left1, .prepend-1 {padding-left: 70px;} +.emptycols_right1, .append-1 {padding-right: 70px;} +.emptycols_left2, .prepend-2 {padding-left: 140px;} +.emptycols_right2, .append-2 {padding-right: 140px;} +.emptycols_left3, .prepend-3 {padding-left: 210px;} +.emptycols_right3, .append-3 {padding-right: 210px;} +.emptycols_left4, .prepend-4 {padding-left: 280px;} +.emptycols_right4, .append-4 {padding-right: 280px;} +.emptycols_left5, .prepend-5 {padding-left: 350px;} +.emptycols_right5, .append-5 {padding-right: 350px;} +.emptycols_left6, .prepend-6 {padding-left: 420px;} +.emptycols_right6, .append-6 {padding-right: 420px;} +.emptycols_left7, .prepend-7 {padding-left: 490px;} +.emptycols_right7, .append-7 {padding-right: 490px;} +.emptycols_left8, .prepend-8 {padding-left: 560px;} +.emptycols_right8, .append-8 {padding-right: 560px;} +.emptycols_left9, .prepend-9 {padding-left: 630px;} +.emptycols_right9, .append-9 {padding-right: 630px;} +.emptycols_left10, .prepend-10 {padding-left: 700px;} +.emptycols_right10, .append-10 {padding-right: 700px;} +.emptycols_left11, .prepend-11 {padding-left: 770px;} +.emptycols_right11, .append-11 {padding-right: 770px;} +.pull-1 {margin-left: -70px;} +.push-1 {margin-right: -70px;margin-left: 18px;float: right;} +.pull-2 {margin-left: -140px;} +.push-2 {margin-right: -140px;margin-left: 18px;float: right;} +.pull-3 {margin-left: -210px;} +.push-3 {margin-right: -210px;margin-left: 18px;float: right;} +.pull-4 {margin-left: -280px;} +.push-4 {margin-right: -280px;margin-left: 18px;float: right;} \ No newline at end of file diff --git a/resources/assets/fonts/cocon/specimen_files/specimen_stylesheet.css b/resources/assets/fonts/cocon/specimen_files/specimen_stylesheet.css new file mode 100644 index 0000000..aecc43c --- /dev/null +++ b/resources/assets/fonts/cocon/specimen_files/specimen_stylesheet.css @@ -0,0 +1,396 @@ +@import url('grid_12-825-55-15.css'); + +/* + CSS Reset by Eric Meyer - Released under Public Domain + http://meyerweb.com/eric/tools/css/reset/ +*/ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, table, +caption, tbody, tfoot, thead, tr, th, td + {margin: 0;padding: 0;border: 0;outline: 0; + font-size: 100%;vertical-align: baseline; + background: transparent;} +body {line-height: 1;} +ol, ul {list-style: none;} +blockquote, q {quotes: none;} +blockquote:before, blockquote:after, +q:before, q:after {content: ''; content: none;} +:focus {outline: 0;} +ins {text-decoration: none;} +del {text-decoration: line-through;} +table {border-collapse: collapse;border-spacing: 0;} + + + + +body { + color: #000; + background-color: #dcdcdc; +} + +a { + text-decoration: none; + color: #1883ba; +} + +h1{ + font-size: 32px; + font-weight: normal; + font-style: normal; + margin-bottom: 18px; +} + +h2{ + font-size: 18px; +} + +#container { + width: 865px; + margin: 0px auto; +} + + +#header { + padding: 20px; + font-size: 36px; + background-color: #000; + color: #fff; +} + +#header span { + color: #666; +} +#main_content { + background-color: #fff; + padding: 60px 20px 20px; +} + + +#footer p { + margin: 0; + padding-top: 10px; + padding-bottom: 50px; + color: #333; + font: 10px Arial, sans-serif; +} + +.tabs { + width: 100%; + height: 31px; + background-color: #444; +} +.tabs li { + float: left; + margin: 0; + overflow: hidden; + background-color: #444; +} +.tabs li a { + display: block; + color: #fff; + text-decoration: none; + font: bold 11px/11px 'Arial'; + text-transform: uppercase; + padding: 10px 15px; + border-right: 1px solid #fff; +} + +.tabs li a:hover { + background-color: #00b3ff; + +} + +.tabs li.active a { + color: #000; + background-color: #fff; +} + + + +div.huge { + + font-size: 300px; + line-height: 1em; + padding: 0; + letter-spacing: -.02em; + overflow: hidden; +} +div.glyph_range { + font-size: 72px; + line-height: 1.1em; +} + +.size10{ font-size: 10px; } +.size11{ font-size: 11px; } +.size12{ font-size: 12px; } +.size13{ font-size: 13px; } +.size14{ font-size: 14px; } +.size16{ font-size: 16px; } +.size18{ font-size: 18px; } +.size20{ font-size: 20px; } +.size24{ font-size: 24px; } +.size30{ font-size: 30px; } +.size36{ font-size: 36px; } +.size48{ font-size: 48px; } +.size60{ font-size: 60px; } +.size72{ font-size: 72px; } +.size90{ font-size: 90px; } + + +.psample_row1 { height: 120px;} +.psample_row1 { height: 120px;} +.psample_row2 { height: 160px;} +.psample_row3 { height: 160px;} +.psample_row4 { height: 160px;} + +.psample { + overflow: hidden; + position: relative; +} +.psample p { + line-height: 1.3em; + display: block; + overflow: hidden; + margin: 0; +} + +.psample span { + margin-right: .5em; +} + +.white_blend { + width: 100%; + height: 61px; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1JREFUeNrs3TsKgFAMRUE/eer+NxztxMYuEWQG3ECKwwUF58ycAKixOAGAyAKILAAiCyCyACILgMgCiCyAyAIgsgAiCyCyAIgsgMgCiCwAIgsgsgAiC4DIAogsACIL0CWuZ3UGgLrIhjMA1EV2OAOAJQtgyQLwjOzmDAAiCyCyAIgsQFtkd2cAEFkAkQVAZAHaIns4A4AlC2DJAiCyACILILIAiCzAV5H1dQGAJQsgsgCILIDIAvwisl58AViyAJYsACILILIAIgvAe2T9EhxAZAFEFgCRBeiL7HAGgLrIhjMAWLIAliwAt1OAAQDwygTBulLIlQAAAABJRU5ErkJggg==); + position: absolute; + bottom: 0; +} +.black_blend { + width: 100%; + height: 61px; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPJJREFUeNrs3TEKhTAQRVGjibr/9QoxhY2N3Ywo50A28IrLwP9g6b1PAMSYTQAgsgAiC4DIAogsgMgCILIAIgsgsgCILIDIAogsACILILIAIguAyAKILIDIAiCyACILgMgCZCnjLWYAiFGvB0BQZJsZAFyyAC5ZAO6RXc0AILIAIguAyAKkRXYzA4DIAogsACILkBbZ3QwALlkAlywAIgsgsgAiC4DIArwVWf8uAHDJAogsACILILIAv4isH74AXLIALlkARBZAZAFEFoDnyPokOIDIAogsACILkBfZZgaAuMhWMwC4ZAE+p4x3mAEgxinAAJ+XBbPWGkwAAAAAAElFTkSuQmCC); + position: absolute; + bottom: 0; +} +.fullreverse { + background: #000 !important; + color: #fff !important; + margin-left: -20px; + padding-left: 20px; + margin-right: -20px; + padding-right: 20px; + padding: 20px; + margin-bottom:0; +} + + +.sample_table td { + padding-top: 3px; + padding-bottom:5px; + padding-left: 5px; + vertical-align: middle; + line-height: 1.2em; +} + +.sample_table td:first-child { + background-color: #eee; + text-align: right; + padding-right: 5px; + padding-left: 0; + padding: 5px; + font: 11px/12px "Courier New", Courier, mono; +} + +code { + white-space: pre; + background-color: #eee; + display: block; + padding: 10px; + margin-bottom: 18px; + overflow: auto; +} + + +.bottom,.last {margin-bottom:0 !important; padding-bottom:0 !important;} + +.box { + padding: 18px; + margin-bottom: 18px; + background: #eee; +} + +.reverse,.reversed { background: #000 !important;color: #fff !important; border: none !important;} + +#bodycomparison { + position: relative; + overflow: hidden; + font-size: 72px; + height: 90px; + white-space: nowrap; +} + +#bodycomparison div{ + font-size: 72px; + line-height: 90px; + display: inline; + margin: 0 15px 0 0; + padding: 0; +} + +#bodycomparison div span{ + font: 10px Arial; + position: absolute; + left: 0; +} +#xheight { + float: none; + position: absolute; + color: #d9f3ff; + font-size: 72px; + line-height: 90px; +} + +.fontbody { + position: relative; +} +.arialbody{ + font-family: Arial; + position: relative; +} +.verdanabody{ + font-family: Verdana; + position: relative; +} +.georgiabody{ + font-family: Georgia; + position: relative; +} + +/* @group Layout page + */ + +#layout h1 { + font-size: 36px; + line-height: 42px; + font-weight: normal; + font-style: normal; +} + +#layout h2 { + font-size: 24px; + line-height: 23px; + font-weight: normal; + font-style: normal; +} + +#layout h3 { + font-size: 22px; + line-height: 1.4em; + margin-top: 1em; + font-weight: normal; + font-style: normal; +} + + +#layout p.byline { + font-size: 12px; + margin-top: 18px; + line-height: 12px; + margin-bottom: 0; +} +#layout p { + font-size: 14px; + line-height: 21px; + margin-bottom: .5em; +} + +#layout p.large{ + font-size: 18px; + line-height: 26px; +} + +#layout .sidebar p{ + font-size: 12px; + line-height: 1.4em; +} + +#layout p.caption { + font-size: 10px; + margin-top: -16px; + margin-bottom: 18px; +} + +/* @end */ + +/* @group Glyphs */ + +#glyph_chart div{ + background-color: #d9f3ff; + color: black; + float: left; + font-size: 36px; + height: 1.2em; + line-height: 1.2em; + margin-bottom: 1px; + margin-right: 1px; + text-align: center; + width: 1.2em; + position: relative; + padding: .6em .2em .2em; +} + +#glyph_chart div p { + position: absolute; + left: 0; + top: 0; + display: block; + text-align: center; + font: bold 9px Arial, sans-serif; + background-color: #3a768f; + width: 100%; + color: #fff; + padding: 2px 0; +} + + +#glyphs h1 { + font-family: Arial, sans-serif; +} +/* @end */ + +/* @group Installing */ + +#installing { + font: 13px Arial, sans-serif; +} + +#installing p, +#glyphs p{ + line-height: 1.2em; + margin-bottom: 18px; + font: 13px Arial, sans-serif; +} + + + +#installing h3{ + font-size: 15px; + margin-top: 18px; +} + +/* @end */ + +#rendering h1 { + font-family: Arial, sans-serif; +} +.render_table td { + font: 11px "Courier New", Courier, mono; + vertical-align: middle; +} + + diff --git a/resources/assets/fonts/cocon/stylesheet.css b/resources/assets/fonts/cocon/stylesheet.css new file mode 100644 index 0000000..e86489d --- /dev/null +++ b/resources/assets/fonts/cocon/stylesheet.css @@ -0,0 +1,12 @@ +/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on June 3, 2021 */ + + + +@font-face { + font-family: 'coconregular'; + src: url('cocon-regular-webfont.woff2') format('woff2'), + url('cocon-regular-webfont.woff') format('woff'); + font-weight: normal; + font-style: normal; + +} \ No newline at end of file diff --git a/resources/assets/images/a-propos.jpg b/resources/assets/images/a-propos.jpg index 2d0696c..992beec 100644 Binary files a/resources/assets/images/a-propos.jpg and b/resources/assets/images/a-propos.jpg differ diff --git a/resources/assets/images/arrow-burger.png b/resources/assets/images/arrow-burger.png new file mode 100644 index 0000000..59839a9 Binary files /dev/null and b/resources/assets/images/arrow-burger.png differ diff --git a/resources/assets/images/banner.svg b/resources/assets/images/banner.svg new file mode 100644 index 0000000..9c6e44c --- /dev/null +++ b/resources/assets/images/banner.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/resources/assets/images/banner_gamme.jpg b/resources/assets/images/banner_gamme.jpg new file mode 100644 index 0000000..a9610f4 Binary files /dev/null and b/resources/assets/images/banner_gamme.jpg differ diff --git a/resources/assets/images/casserole.png b/resources/assets/images/casserole.png new file mode 100644 index 0000000..821185e Binary files /dev/null and b/resources/assets/images/casserole.png differ diff --git a/resources/assets/images/contact.jpg b/resources/assets/images/contact.jpg new file mode 100644 index 0000000..5f96dfd Binary files /dev/null and b/resources/assets/images/contact.jpg differ diff --git a/resources/assets/images/cookrange.jpg b/resources/assets/images/cookrange.jpg index c552d3b..a8d412a 100644 Binary files a/resources/assets/images/cookrange.jpg and b/resources/assets/images/cookrange.jpg differ diff --git a/resources/assets/images/cuit.jpg b/resources/assets/images/cuit.jpg deleted file mode 100644 index b85cfc1..0000000 Binary files a/resources/assets/images/cuit.jpg and /dev/null differ diff --git a/resources/assets/images/entete_food.jpg b/resources/assets/images/entete_food.jpg new file mode 100644 index 0000000..650629e Binary files /dev/null and b/resources/assets/images/entete_food.jpg differ diff --git a/resources/assets/images/entete_gammes.jpg b/resources/assets/images/entete_gammes.jpg new file mode 100644 index 0000000..97d6bac Binary files /dev/null and b/resources/assets/images/entete_gammes.jpg differ diff --git a/resources/assets/images/entete_sous_gammes.jpg b/resources/assets/images/entete_sous_gammes.jpg new file mode 100644 index 0000000..edcbcaa Binary files /dev/null and b/resources/assets/images/entete_sous_gammes.jpg differ diff --git a/resources/assets/images/food-service-active.png b/resources/assets/images/food-service-active.png new file mode 100644 index 0000000..cea9aff Binary files /dev/null and b/resources/assets/images/food-service-active.png differ diff --git a/resources/assets/images/footer.jpg b/resources/assets/images/footer.jpg deleted file mode 100644 index c39cced..0000000 Binary files a/resources/assets/images/footer.jpg and /dev/null differ diff --git a/resources/assets/images/footer_food.jpg b/resources/assets/images/footer_food.jpg new file mode 100644 index 0000000..750c808 Binary files /dev/null and b/resources/assets/images/footer_food.jpg differ diff --git a/resources/assets/images/footer_gammes.jpg b/resources/assets/images/footer_gammes.jpg new file mode 100644 index 0000000..8c6304c Binary files /dev/null and b/resources/assets/images/footer_gammes.jpg differ diff --git a/resources/assets/images/footer_home.jpg b/resources/assets/images/footer_home.jpg new file mode 100644 index 0000000..627bc7a Binary files /dev/null and b/resources/assets/images/footer_home.jpg differ diff --git a/resources/assets/images/footer_marque.jpg b/resources/assets/images/footer_marque.jpg new file mode 100644 index 0000000..46cae22 Binary files /dev/null and b/resources/assets/images/footer_marque.jpg differ diff --git a/resources/assets/images/footer_news.jpg b/resources/assets/images/footer_news.jpg new file mode 100644 index 0000000..b123403 Binary files /dev/null and b/resources/assets/images/footer_news.jpg differ diff --git a/resources/assets/images/footer_product.jpg b/resources/assets/images/footer_product.jpg new file mode 100644 index 0000000..d2900ee Binary files /dev/null and b/resources/assets/images/footer_product.jpg differ diff --git a/resources/assets/images/footer_products.jpg b/resources/assets/images/footer_products.jpg new file mode 100644 index 0000000..a3eba82 Binary files /dev/null and b/resources/assets/images/footer_products.jpg differ diff --git a/resources/assets/images/image-sample.jpg b/resources/assets/images/image-sample.jpg index 8c5512c..1612ea9 100644 Binary files a/resources/assets/images/image-sample.jpg and b/resources/assets/images/image-sample.jpg differ diff --git a/resources/assets/images/loupe.png b/resources/assets/images/loupe.png new file mode 100644 index 0000000..c1f654b Binary files /dev/null and b/resources/assets/images/loupe.png differ diff --git a/resources/assets/images/micro-onde.png b/resources/assets/images/micro-onde.png new file mode 100644 index 0000000..708afe1 Binary files /dev/null and b/resources/assets/images/micro-onde.png differ diff --git a/resources/assets/images/news.jpg b/resources/assets/images/news.jpg new file mode 100644 index 0000000..a602b8d Binary files /dev/null and b/resources/assets/images/news.jpg differ diff --git a/resources/assets/images/picto-localisation.png b/resources/assets/images/picto-localisation.png deleted file mode 100644 index b3895d2..0000000 Binary files a/resources/assets/images/picto-localisation.png and /dev/null differ diff --git a/resources/assets/images/picto_halal.png b/resources/assets/images/picto_halal.png new file mode 100644 index 0000000..267ccc5 Binary files /dev/null and b/resources/assets/images/picto_halal.png differ diff --git a/resources/assets/images/pranks.jpg b/resources/assets/images/pranks.jpg index d6a8cfe..9f65622 100644 Binary files a/resources/assets/images/pranks.jpg and b/resources/assets/images/pranks.jpg differ diff --git a/resources/assets/images/product_sample_01.png b/resources/assets/images/product_sample_01.png new file mode 100644 index 0000000..cae3742 Binary files /dev/null and b/resources/assets/images/product_sample_01.png differ diff --git a/resources/assets/images/slide_home_1.jpg b/resources/assets/images/slide_home_1.jpg new file mode 100644 index 0000000..a31f29a Binary files /dev/null and b/resources/assets/images/slide_home_1.jpg differ diff --git a/resources/assets/images/slide_home_2.jpg b/resources/assets/images/slide_home_2.jpg new file mode 100644 index 0000000..55a1c60 Binary files /dev/null and b/resources/assets/images/slide_home_2.jpg differ diff --git a/resources/assets/images/slide_home_3.jpg b/resources/assets/images/slide_home_3.jpg new file mode 100644 index 0000000..dc752c8 Binary files /dev/null and b/resources/assets/images/slide_home_3.jpg differ diff --git a/resources/assets/images/story-line.png b/resources/assets/images/story-line.png new file mode 100644 index 0000000..7a40af6 Binary files /dev/null and b/resources/assets/images/story-line.png differ diff --git a/resources/assets/images/story-line.svg b/resources/assets/images/story-line.svg new file mode 100644 index 0000000..53c7d02 --- /dev/null +++ b/resources/assets/images/story-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/assets/images/volailles.jpg b/resources/assets/images/volailles.jpg index e7b6cef..be2c0a9 100644 Binary files a/resources/assets/images/volailles.jpg and b/resources/assets/images/volailles.jpg differ diff --git a/resources/assets/vuejs.js b/resources/assets/vuejs.js new file mode 100644 index 0000000..f07e539 --- /dev/null +++ b/resources/assets/vuejs.js @@ -0,0 +1,31 @@ +window.__IDHALALVue = require('vue').default; +import vSelect from 'vue-select' +__IDHALALVue.component('v-select', vSelect); + +// register modules +const modules = require.context("./modules", true, /\.js$/i); +modules.keys().map(key => __IDHALALVue.mixin(modules(key).default)); + +// Register components +const vues = require.context("./components/backend", true, /\.vue$/i); +vues.keys().map(key => + __IDHALALVue.component( + key + .split("/") + .pop() + .split(".")[0] + .replace(/\.?([A-Z])/g, function (x, y) { + return "-" + y.toLowerCase(); + }) + .replace(/^-/, "") + .replace("-component", ""), + vues(key).default + ) +); +const vuejsModules = []; + +document.getElementsByClassName('idhalal-vuejs').forEach(element => { + vuejsModules.push(new __IDHALALVue({ + el: element + })); +}); diff --git a/resources/js/app.js b/resources/js/app.js deleted file mode 100644 index 092165d..0000000 --- a/resources/js/app.js +++ /dev/null @@ -1,33 +0,0 @@ -var app = { - init: () => { - window.onscroll = function () { - app.scrollFunction(); - }; - - app.scroll(); - }, - - scroll: () => { - document - .getElementById("backtotop") - .addEventListener("click", function () { - window.scrollTo({ - top: 0, - behavior: "smooth", - }); - }); - }, - - scrollFunction: () => { - if ( - document.body.scrollTop > 100 || - document.documentElement.scrollTop > 100 - ) { - document.getElementById("backtotop").style.display = "flex"; - } else { - document.getElementById("backtotop").style.display = "none"; - } - }, -}; - -document.addEventListener("DOMContentLoaded", app.init); diff --git a/resources/js/back.js b/resources/js/back.js new file mode 100644 index 0000000..da2b6bd --- /dev/null +++ b/resources/js/back.js @@ -0,0 +1,14 @@ +// require('./bootstrap'); +// require('./vuejs'); + +const selectElement = document.getElementById('gamme_id'); + +if (selectElement != null) { + selectElement.addEventListener('change', (event) => { + let selectSubRange = document.getElementById('sous_gamme_id'); + let length = selectSubRange.options.length; + for (i = length - 1; i > 0; i--) { + selectSubRange.options[i] = null; + } + }); +} diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js new file mode 100644 index 0000000..63605fa --- /dev/null +++ b/resources/js/bootstrap.js @@ -0,0 +1,41 @@ +window._ = require('lodash'); + +/** + * We'll load jQuery and the Bootstrap jQuery plugin which provides support + * for JavaScript based Bootstrap features such as modals and tabs. This + * code may be modified to fit the specific needs of your application. + */ + +try { + window.Popper = require('popper.js').default; + window.$ = window.jQuery = require('jquery'); + + require('bootstrap'); +} catch (e) {} + +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +window.axios = require('axios'); + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// window.Pusher = require('pusher-js'); + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: process.env.MIX_PUSHER_APP_KEY, +// cluster: process.env.MIX_PUSHER_APP_CLUSTER, +// forceTLS: true +// }); diff --git a/resources/js/caroussel.js b/resources/js/frontend/caroussel.js similarity index 87% rename from resources/js/caroussel.js rename to resources/js/frontend/caroussel.js index 53c333f..e1f2b19 100644 --- a/resources/js/caroussel.js +++ b/resources/js/frontend/caroussel.js @@ -1,6 +1,6 @@ /*js doc*/ -class Carrousel { +export class Carrousel { /** * * This callback type is called 'requestCallback' and is displayed as a global symbol @@ -21,12 +21,14 @@ class Carrousel { * @param {boolean} [options.navigation=true] */ - constructor (element, options = {}) { + constructor(element, options = {}) { this.element = element this.options = Object.assign({}, { slidesToScroll: 1, slidesVisible: 1, - loop: false, + loop: true, + play: true, + interval: 3000, pagination: false, navigation: true }, options) @@ -34,7 +36,7 @@ class Carrousel { this.isMobile = false this.currentItem = 0 this.moveCallbacks = [] - + //Modification du DOM this.root = this.createDivWithClass('carrousel') this.container = this.createDivWithClass('carrousel__container') @@ -43,7 +45,7 @@ class Carrousel { this.element.appendChild(this.root) this.items = children.map((child) => { let item = this.createDivWithClass('carrousel__item') - + item.appendChild(child) this.container.appendChild(item) return item @@ -61,33 +63,39 @@ class Carrousel { this.onWindowResize() window.addEventListener('resize', this.onWindowResize.bind(this)) this.root.addEventListener('keyup', e => { - if(e.key === 'ArrowRight' || e.key === 'Right') { + if (e.key === 'ArrowRight' || e.key === 'Right') { this.next() } else if (e.key === 'ArrowLeft' || e.key === 'Left') { this.prev() } }) + + // Interval + if (this.options.play) { + let playpause = setInterval(() => this.next(), this.options.interval); + } } /** * Applique les bonnes dimensions aux éléments du carrousel */ - setStyle () { + setStyle() { let ratio = this.items.length / this.slidesVisible this.container.style.width = (ratio * 100) + "%" this.items.forEach(item => item.style.width = ((100 / this.slidesVisible) / ratio) + "%") } - /** - * Créer les flêches de navigation dans le DOM - */ - createNavigation () { + /** + * Créer les flêches de navigation dans le DOM + */ + createNavigation() { let nextButton = this.createDivWithClass('carrousel__next') let prevButton = this.createDivWithClass('carrousel__prev') this.root.appendChild(nextButton) this.root.appendChild(prevButton) nextButton.addEventListener('click', this.next.bind(this)) prevButton.addEventListener('click', this.prev.bind(this)) + if (this.options.loop === true) { return } @@ -97,7 +105,7 @@ class Carrousel { } else { prevButton.classList.remove('carrousel__prev--hidden') } - if (this.items[this.currentItem + this.slidesVisible] === undefined){ + if (this.items[this.currentItem + this.slidesVisible] === undefined) { nextButton.classList.add('carrousel__next--hidden') } else { nextButton.classList.remove('carrousel__next--hidden') @@ -108,7 +116,7 @@ class Carrousel { /** * Créer la pagination dans le DOM */ - createPagination () { + createPagination() { let pagination = this.createDivWithClass('carrousel__pagination') let buttons = [] this.root.appendChild(pagination) @@ -127,11 +135,11 @@ class Carrousel { }) } - next () { + next() { this.gotoItem(this.currentItem + this.slidesToScroll) } - prev () { + prev() { this.gotoItem(this.currentItem - this.slidesToScroll) } @@ -139,7 +147,7 @@ class Carrousel { * Déplace le carrousel vers l'élément ciblé * @param {number} index */ - gotoItem (index) { + gotoItem(index) { if (index < 0) { if (this.options.loop) { index = this.items.length - this.slidesVisible @@ -163,11 +171,11 @@ class Carrousel { * * @param {moveCallback} cb */ - onMove (cb) { + onMove(cb) { this.moveCallbacks.push(cb) } - onWindowResize () { + onWindowResize() { let mobile = window.innerWidth < 800 if (mobile !== this.isMobile) { this.isMobile = mobile @@ -181,7 +189,7 @@ class Carrousel { * @param {string} className * @returns {HTMLElement} */ - createDivWithClass (className) { + createDivWithClass(className) { let div = document.createElement('div') div.setAttribute('class', className) return div @@ -190,14 +198,14 @@ class Carrousel { /** * @returns {number} */ - get slidesToScroll () { + get slidesToScroll() { return this.isMobile ? 1 : this.options.slidesToScroll } /** * @returns {number} */ - get slidesVisible () { + get slidesVisible() { return this.isMobile ? 1 : this.options.slidesVisible } @@ -205,15 +213,15 @@ class Carrousel { document.addEventListener('DOMContentLoaded', function () { - if (document.querySelector('#carrousel1')){ + if (document.querySelector('#carrousel1')) { new Carrousel(document.querySelector('#carrousel1'), { pagination: true, - navigation:false, + navigation: false, }) } - if (document.querySelector('#carrousel2')){ - new Carrousel(document.querySelector('#carrousel2'), { }) + if (document.querySelector('#carrousel2')) { + new Carrousel(document.querySelector('#carrousel2'), {}) } -}) \ No newline at end of file +}) \ No newline at end of file diff --git a/resources/js/frontend/custom.js b/resources/js/frontend/custom.js new file mode 100644 index 0000000..a955afa --- /dev/null +++ b/resources/js/frontend/custom.js @@ -0,0 +1,178 @@ +function docReady(fn) { + // see if DOM is already available + if (document.readyState === "complete" || document.readyState === "interactive") { + // call on next available tick + setTimeout(fn, 1); + } else { + document.addEventListener("DOMContentLoaded", fn); + } +} + +docReady(function () { + // DOM is loaded and ready for manipulation here + + window.onscroll = function () { + let imgZoom = document.querySelectorAll('.img-zoom'); + let index = 0; + if ( + document.body.scrollTop > 50 || + document.documentElement.scrollTop > 50 + ) { + document.getElementById("backtotop").style.display = "flex"; + for (index = 0; index < imgZoom.length; index++) { + imgZoom[index].classList.add('zoomed'); + } + } else { + document.getElementById("backtotop").style.display = "none"; + for (index = 0; index < imgZoom.length; index++) { + imgZoom[index].classList.remove('zoomed'); + } + } + }; + + document + .getElementById("backtotop") + .addEventListener("click", function () { + window.scrollTo({ + top: 0, + behavior: "smooth", + }); + }); + + let eltsTitle = document.getElementsByClassName("menu__link"); + for (let ii = 0; ii < eltsTitle.length; ii++) { + // eltsTitle[ii].classList.remove('red-color'); + eltsTitle[ii].addEventListener("click", function () { + this.classList.add('red-color'); + }); + } + + // FONCTION PERMETTANT DE FAIRE UN EFFET ANIMATION AU DEFILEMENT + const ratio = 0.1; // 10% du div revelé pour rendre visible + const options = { + root: null, // Zone d'affichage : null = le viewport + rootMargin: "0px", + threshold: ratio, + }; + var animArray = [ + "bounce", + "flash", + "pulse", + "rubberBand", + "shakeX", + "shakeY", + "headShake", + "swing", + "tada", + "wobble", + "jello", + "heartBeat", + "backInDown", + "backInLeft", + "backInRight", + "backInUp", + "backOutDown", + "backOutLeft", + "backOutRight", + "backOutUp", + "bounceIn", + "bounceInDown", + "bounceInLeft", + "bounceInRight", + "bounceInUp", + "bounceOut", + "bounceOutDown", + "bounceOutLeft", + "bounceOutRight", + "bounceOutUp", + "fadeIn", + "fadeInDown", + "fadeInDownBig", + "fadeInLeft", + "fadeInLeftBig", + "fadeInRight", + "fadeInRightBig", + "fadeInUp", + "fadeInUpBig", + "fadeInTopLeft", + "fadeInTopRight", + "fadeInBottomLeft", + "fadeInBottomRight", + "fadeOut", + "fadeOutDown", + "fadeOutDownBig", + "fadeOutLeft", + "fadeOutLeftBig", + "fadeOutRight", + "fadeOutRightBig", + "fadeOutUp", + "fadeOutUpBig", + "fadeOutTopLeft", + "fadeOutTopRight", + "fadeOutBottomRight", + "fadeOutBottomLeft", + "flip", + "flipInX", + "flipInY", + "flipOutX", + "flipOutY", + "lightSpeedInRight", + "lightSpeedInLeft", + "lightSpeedOutRight", + "lightSpeedOutLeft", + "rotateIn", + "rotateInDownLeft", + "rotateInDownRight", + "rotateInUpLeft", + "rotateInUpRight", + "rotateOut", + "rotateOutDownLeft", + "rotateOutDownRight", + "rotateOutUpLeft", + "rotateOutUpRight", + "hinge", + "jackInTheBox", + "rollIn", + "rollOut", + "zoomIn", + "zoomInDown", + "zoomInLeft", + "zoomInRight", + "zoomInUp", + "zoomOut", + "zoomOutDown", + "zoomOutLeft", + "zoomOutRight", + "zoomOutUp", + "slideInDown", + "slideInLeft", + "slideInRight", + "slideInUp", + "slideOutDown", + "slideOutLeft", + "slideOutRight", + "slideOutUp", + ]; + /** + * + * @param {IntersectionObserverEntry[]} entries + * @param {IntersectionObserver} observer + */ + const handleIntersect = function (entries, observer) { + entries.forEach(function (entry) { + if (entry.intersectionRatio > ratio) { + for (var i = 0; i < animArray.length; i++) { + if (entry.target.classList.contains(animArray[i])) { + entry.target.classList.add("animate__" + animArray[i]); + entry.target.classList.add("reveal-visible"); + observer.unobserve(entry.target); + } + } + } + }); + }; + const observer = new IntersectionObserver(handleIntersect, options); + document.querySelectorAll(".animate__animated").forEach(function (r) { + observer.observe(r); + }); +}); diff --git a/resources/js/frontend/front.js b/resources/js/frontend/front.js new file mode 100644 index 0000000..04fb7ab --- /dev/null +++ b/resources/js/frontend/front.js @@ -0,0 +1,8 @@ +// cookie notice +import { LdcwebCn } from "./ldcweb-cn.js"; +window.LdcwebCn = LdcwebCn; + +import { Carrousel } from "./caroussel.js" +window.Carrousel = Carrousel; + +require('./custom'); diff --git a/resources/js/frontend/ldcweb-cn.js b/resources/js/frontend/ldcweb-cn.js new file mode 100644 index 0000000..155fc84 --- /dev/null +++ b/resources/js/frontend/ldcweb-cn.js @@ -0,0 +1,370 @@ +/** + * LDC Service Web + * Version 1.3 + */ + +export class LdcwebCn { + constructor(config) { + this.config = config; + this.cookieContainer = document.getElementById("ldcweb-cn"); + this.bannerContainer = document.getElementById("ldcweb-banner"); + this.modalContainer = document.getElementById("ldcweb-cn-modal"); + this.modalCloseBtn = document.getElementById("close-link"); + this.acceptAllBtnBanner = document.getElementById( + "ldcweb-cn-accept-banner" + ); + this.denyAllBtnBanner = document.getElementById("ldcweb-cn-deny-banner"); + this.acceptAllBtn = document.getElementById("ldcweb-cn-accept"); + this.denyAllBtn = document.getElementById("ldcweb-cn-deny"); + this.personalizeBtn = document.getElementsByClassName( + "ldcweb-cn-personalize" + ); + this.changeBtn = document.getElementsByClassName("ldcweb-cn-change"); + this.cookiesList = document.getElementById("ldcweb-cn-list"); + this.cookieLink = document.getElementsByClassName("ldcweb-cn-cookie-link"); + this.template = document.getElementById("template").cloneNode(true); + document.getElementById("template").remove(); + + let cookies = this.getLDCWebCookie("ldcwebcn-init"); + if (cookies === undefined) { + let newCookie = []; + + for (const [key, value] of Object.entries(this.config)) { + newCookie.push(key + "=wait"); + } + + this.saveLDCWebCookie(newCookie); + this.cookieContainer.classList.add("open-banner"); + } else { + let test = cookies.split(","); + test.forEach((elm) => { + let test = elm.split("="); + if (test[1] === "wait") { + this.cookieContainer.classList.add("open-banner"); + } + }); + } + this.modalCloseBtn.addEventListener( + "click", + function (e) { + e.preventDefault(); + let cookies = this.getLDCWebCookie("ldcwebcn-init"); + let test = cookies.split(","); + let bIsCompleted = true; + for (let item of test) { + if (item.indexOf("=wait") !== -1) { + bIsCompleted = false; + break; + } + } + if (bIsCompleted) { + this.cookieContainer.classList.remove("open-modal"); + this.cookieContainer.classList.remove("open-banner"); + } else { + alert( + "Vous devez renseigner votre choix pour tous les cookies, svp." + ); + } + }.bind(this) + ); + let accept = function (e) { + e.preventDefault(); + for (const [key, value] of Object.entries(this.config)) { + this.addCookie(key, value); + } + for (let acceptLabel of this.cookieContainer.querySelectorAll( + ".accept > label" + )) { + acceptLabel.classList.add("active"); + } + for (let denyLabel of this.cookieContainer.querySelectorAll( + ".deny > label" + )) { + denyLabel.classList.remove("active"); + } + this.updateAllCookiesButtonsActiveStatus(); + this.cookieContainer.classList.remove("open-modal"); + this.cookieContainer.classList.remove("open-banner"); + }.bind(this); + this.acceptAllBtnBanner.addEventListener("click", accept); + this.acceptAllBtn.addEventListener("click", accept); + + let deny = function (e) { + e.preventDefault(); + for (const [key, value] of Object.entries(this.config)) { + this.removeCookie(key, value); + } + for (let acceptLabel of this.cookieContainer.querySelectorAll( + ".accept > label" + )) { + acceptLabel.classList.remove("active"); + } + for (let denyLabel of this.cookieContainer.querySelectorAll( + ".deny > label" + )) { + denyLabel.classList.add("active"); + } + this.updateAllCookiesButtonsActiveStatus(); + this.cookieContainer.classList.remove("open-modal"); + this.cookieContainer.classList.remove("open-banner"); + }.bind(this); + this.denyAllBtnBanner.addEventListener("click", deny); + this.denyAllBtn.addEventListener("click", deny); + + for (let item of this.cookieLink) { + this.addEvent( + item, + "click", + function (e) { + e.preventDefault(); + this.openModal(); + }.bind(this) + ); + } + + for (let item of this.personalizeBtn) { + this.addEvent( + item, + "click", + function (e) { + e.preventDefault(); + this.setCookieList(); + }.bind(this) + ); + } + + this.setListenerOnChange(); + + let cookie = this.getLDCWebCookie("ldcwebcn-init"); + let test = cookie.split(","); + test.forEach((elm) => { + let test = elm.split("="); + if (test[1] === "true") { + this.config[test[0]].script(); + } else { + if (this.config[test[0]].fallback !== undefined) { + this.config[test[0]].fallback(); + } + } + }); + + this.updateAllCookiesButtonsActiveStatus(); + } + + setCookieList() { + this.cookiesList.innerHTML = ""; + let cookiesSite = this.getLDCWebCookie("ldcwebcn-init"); + let acceptInputEvent = function (acceptLabel, denyLabel, key, value) { + return function (e) { + acceptLabel.classList.add("active"); + denyLabel.classList.remove("active"); + this.updateAllCookiesButtonsActiveStatus(); + this.addCookie(key, value); + }.bind(this, [acceptLabel, denyLabel, key, value]); + }; + let denyInputEvent = function (acceptLabel, denyLabel, key, value) { + return function (e) { + acceptLabel.classList.remove("active"); + denyLabel.classList.add("active"); + this.updateAllCookiesButtonsActiveStatus(); + this.removeCookie(key, value); + }.bind(this, [acceptLabel, denyLabel, key, value]); + }; + + for (const [key, value] of Object.entries(this.config)) { + let cookie = document.createElement("li"); + cookie.append(this.template.children.item(0).cloneNode(true)); + let name = cookie.querySelector("span.ldcweb-cn-name"); + let description = cookie.querySelector("span.ldcweb-cn-description"); + let link = cookie.querySelector("a.ldcweb-cn-link"); + let acceptInput = cookie.querySelector(".accept > input"); + let denyInput = cookie.querySelector(".deny > input"); + let acceptLabel = cookie.querySelector(".accept > label"); + let denyLabel = cookie.querySelector(".deny > label"); + + name.textContent = value.name; + description.textContent = value.description; + link.textContent = value.labelLink; + link.setAttribute("href", value.link); + acceptInput.id = key + "1"; + acceptInput.name = key; + acceptInput.dataset.name = key; + acceptLabel.htmlFor = key + "1"; + denyInput.id = key + "2"; + denyInput.name = key; + denyInput.dataset.name = key; + denyLabel.htmlFor = key + "2"; + + acceptInput.addEventListener( + "click", + acceptInputEvent.apply(this, [acceptLabel, denyLabel, key, value]) + ); + denyInput.addEventListener( + "click", + denyInputEvent.apply(this, [acceptLabel, denyLabel, key, value]) + ); + + this.cookiesList.append(cookie); + + let cookiesArray = cookiesSite.split(","); + for (const cookieEl of cookiesArray) { + let name = cookieEl.slice(0, cookieEl.indexOf("=")); + let status = cookieEl.slice(cookieEl.indexOf("=") + 1); + if (name === key) { + acceptLabel.classList.remove("active"); + denyLabel.classList.remove("active"); + switch (status) { + case "true": + acceptLabel.classList.add("active"); + break; + case "false": + denyLabel.classList.add("active"); + break; + } + } + if (status === "wait") { + this.cookieContainer.classList.add("open-banner"); + } + } + } + + this.cookieContainer.classList.add("open-modal"); + this.setListenerOnChange(); + } + + updateAllCookiesButtonsActiveStatus() { + let acceptsButtons = + this.cookieContainer.querySelectorAll("div.accept > label"); + let deniesButtons = + this.cookieContainer.querySelectorAll("div.deny > label"); + let activeAcceptsButtons = this.cookieContainer.querySelectorAll( + "div.accept > label.active" + ); + let activeDeniesButtons = this.cookieContainer.querySelectorAll( + "div.deny > label.active" + ); + + this.acceptAllBtn.classList.remove("active"); + this.denyAllBtn.classList.remove("active"); + if ( + acceptsButtons.length && + acceptsButtons.length === activeAcceptsButtons.length + ) { + this.acceptAllBtn.classList.add("active"); + } + if ( + deniesButtons.length && + deniesButtons.length === activeDeniesButtons.length + ) { + this.denyAllBtn.classList.add("active"); + } + } + + addCookie(key, value) { + if (value.script) { + value.script(); + } + this.changeStatus(key, "true"); + } + + removeCookie(key, value) { + for (let cookieName of value.cookies) { + this.deleteBrowserCookie(cookieName, "/", "." + location.host); + } + if (document.getElementById(key)) { + document.getElementById(key).remove(); + } + this.changeStatus(key, "false"); + } + setListenerOnChange() { + this.changeBtn = document.getElementsByClassName("ldcweb-cn-change"); + let itemClick = function (item) { + return function () { + this.changeStatus( + item.getAttribute("data-name"), + item.getAttribute("data-status") + ); + }.bind(this); + }; + for (let item of this.changeBtn) { + this.addEvent(item, "click", itemClick.bind(this, [item])); + } + } + + changeStatus(name, status) { + let newCookie = []; + + let cookie = this.getLDCWebCookie("ldcwebcn-init"); + let test = cookie.split(","); + test.forEach((elm) => { + let test = elm.split("="); + if (test[0] === name) { + newCookie.push(name + "=" + status); + if (status === "false") { + this.config[test[0]].cookies.forEach((elm) => { + let cookies = this.getLDCWebCookie(elm); + if (cookies !== undefined) { + document.cookie = + elm + + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=" + + document.domain + + "; path=/"; + document.cookie = + elm + + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=." + + document.domain + + "; path=/"; + } + }); + } + } else { + newCookie.push(elm); + } + }); + + this.saveLDCWebCookie(newCookie); + } + + deleteBrowserCookie(name, path, domain) { + if (this.getLDCWebCookie(name)) { + document.cookie = + name + + "=" + + (path ? ";path=" + path : "") + + (domain ? ";domain=" + domain : "") + + ";expires=Thu, 01 Jan 1970 00:00:01 GMT"; + } + } + + getLDCWebCookie(name) { + let matches = document.cookie.match( + new RegExp( + "(?:^|; )" + + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, "\\$1") + + "=([^;]*)" + ) + ); + return matches ? decodeURIComponent(matches[1]) : undefined; + } + + addEvent(element, evnt, funct) { + if (element.attachEvent) return element.attachEvent("on" + evnt, funct); + else return element.addEventListener(evnt, funct, false); + } + + saveLDCWebCookie(content) { + let date = new Date(); + let newDate = new Date(date.setMonth(date.getMonth() + 13)); + document.cookie = + "ldcwebcn-init=" + + content + + "; expires=" + + newDate.toUTCString() + + "; path=/;"; + } + + openModal() { + this.setCookieList(); + this.updateAllCookiesButtonsActiveStatus(); + } +} diff --git a/resources/js/vuejs.js b/resources/js/vuejs.js new file mode 100644 index 0000000..f07e539 --- /dev/null +++ b/resources/js/vuejs.js @@ -0,0 +1,31 @@ +window.__IDHALALVue = require('vue').default; +import vSelect from 'vue-select' +__IDHALALVue.component('v-select', vSelect); + +// register modules +const modules = require.context("./modules", true, /\.js$/i); +modules.keys().map(key => __IDHALALVue.mixin(modules(key).default)); + +// Register components +const vues = require.context("./components/backend", true, /\.vue$/i); +vues.keys().map(key => + __IDHALALVue.component( + key + .split("/") + .pop() + .split(".")[0] + .replace(/\.?([A-Z])/g, function (x, y) { + return "-" + y.toLowerCase(); + }) + .replace(/^-/, "") + .replace("-component", ""), + vues(key).default + ) +); +const vuejsModules = []; + +document.getElementsByClassName('idhalal-vuejs').forEach(element => { + vuejsModules.push(new __IDHALALVue({ + el: element + })); +}); diff --git a/resources/lang/en.json b/resources/lang/en.json new file mode 100644 index 0000000..c120df9 --- /dev/null +++ b/resources/lang/en.json @@ -0,0 +1,88 @@ +{ + "Marque": "Brand", + "Produits": "Products", + "Actualités": "News", + "Accueil": "Home", + "Qui sommes-nous": "About us", + "Les produits": "products", + "Doux": "Doux", + "Résultats": "Results", + "Découvrez DOUX, des produits de volailles françaises.": "", + "Notre Histoire": "", + "Nous contacter": "", + "Adresse": "", + "Votre message a bien été envoyé !": "", + "Nos services mettent tout en oeuvre pour y répondre au plus vite.": "", + "Oups ! Une erreur s’est produite...": "", + "Votre message n’a pas pu être envoyé.
Nous en sommes désolés et vous prions
de bien vouloir réessayer plus tard.": "", + "Vos coordonnées": "", + "Monsieur": "", + "Madame": "", + "Nom": "", + "Prénom": "", + "Code postal": "", + "Ville": "", + "Téléphone": "", + "Email": "", + "Préciser votre demande": "", + "Réclamation produit": "", + "La marque": "", + "Contact commercial": "", + "Autre demande": "", + "Nom du produit": "", + "Code barre": "", + "Lieu d'achat": "", + "Numéro de lot": "", + "Date Limite de Consommation": "", + "Date de consommation": "", + "Message": "", + "Photo de l'emballage": "", + "Insérer une pièce jointe": "", + "Food service": "", + "En savoir plus": "", + "Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleur qualité": "", + "Découvrir": "", + "Nos gammes produits": "", + "Toutes nos gammes": "", + "Des produits incontournables, Authentiques et Innovants !": "", + "Gammes": "", + "Poulet, Cordon bleu ou Wing's ?": "", + "Découvrez tous nos produits à base de volaille.": "", + "les +<\/span>Produit<\/span>": "Product<\/span>benefits<\/span>", + "Cuisiner en famille": "", + "Poulet rôti": "", + "Grignottes de poulet": "", + "Cuisine de chef": "", + "Suggestion de poulet frit": "", + "Mentions légales": "", + "Charte de confidentialité": "", + "Plan du site": "", + "Contact": "", + "Gestion des cookies": "", + "Recherchez un produit": "", + "Une question ? Une idée ? Un conseil ?
Des informations sur nos produits ?": "", + "N’hésitez-pas à nous contacter en renseignant le formulaire ci-dessous.
Nous traiterons votre demande avec la plus grande attention dans les meilleurs délais.": "N’hésitez-pas à nous contacter en renseignant le formulaire ci-dessous.
Nous traiterons votre demande avec la plus grande attention dans les meilleurs délais.", + "Doux, La référence française de la volaille": "", + "Sélectionnez un pays": "", + "Sélectionnez un département": "", + "Guadeloupe": "", + "Martinique": "", + "Guyane": "", + "La Réunion": "", + "Mayotte": "", + "Saint-Pierre-et-Miquelon": "", + "Saint-Barthélémy": "", + "Saint-Martin": "", + "Polynésie française": "", + "Île de Clipperton": "", + "Wallis-et-Futuna": "", + "Nouvelle-Calédonie": "", + "Terres australes et antarctiques françaises": "", + "Doux Food Services": "", + "Tous les produits Doux": "", + "Les actualités Doux": "", + "Nos conseils ...": "Advice ...", + "les questions<\/span>
utiles<\/span>": "Usefull<\/span>
questions<\/span>", + "Nos nouveautés": "", + "Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleure qualité": "" +} diff --git a/resources/lang/en/enums.php b/resources/lang/en/enums.php new file mode 100644 index 0000000..bbd4145 --- /dev/null +++ b/resources/lang/en/enums.php @@ -0,0 +1,21 @@ + + array ( + 'kid' => 'kid', + 'man' => 'man', + 'senior' => 'senior', + 'teenager' => 'teenager', + 'withPrefix' => + array ( + 'kid' => 'a kid', + 'man' => 'a man', + 'senior' => 'a senior', + 'teenager' => 'a teenager', + 'woman' => 'a woman', + ), + 'woman' => 'woman', + ), + 'kid' => 'kid', +); diff --git a/resources/lang/en/home.php b/resources/lang/en/home.php new file mode 100644 index 0000000..2cbf216 --- /dev/null +++ b/resources/lang/en/home.php @@ -0,0 +1,8 @@ + + array ( + 'text' => '', + ), +); diff --git a/resources/lang/en/rgpd.php b/resources/lang/en/rgpd.php new file mode 100644 index 0000000..1b3d53b --- /dev/null +++ b/resources/lang/en/rgpd.php @@ -0,0 +1,37 @@ + + array ( + 'desc' => '', + 'title' => 'Google Analytics', + ), + 'banner' => + array ( + 'desc' => '', + 'title' => '', + ), + 'contact' => + array ( + 'acceptcgu' => '', + 'disclaimer' => '', + ), + 'cookie' => + array ( + 'allow' => '', + 'deny' => '', + ), + 'cookies' => + array ( + 'acceptall' => '', + 'allowall' => '', + 'denyall' => '', + 'personalize' => '', + 'settignsall' => '', + ), + 'manage' => + array ( + 'explain' => '', + 'title' => '', + ), +); diff --git a/resources/lang/en/urls.php b/resources/lang/en/urls.php new file mode 100644 index 0000000..896ad13 --- /dev/null +++ b/resources/lang/en/urls.php @@ -0,0 +1,14 @@ + 'contact', + 'food-service' => 'food-service', + 'gamme' => 'category', + 'gammes' => 'products', + 'legals' => 'terms-and-conditions', + 'marque' => 'brand', + 'news' => 'news', + 'policy' => 'privacy-policy', + 'produit' => 'product', + 'search' => 'search', +); diff --git a/resources/lang/es.json b/resources/lang/es.json new file mode 100644 index 0000000..59c5083 --- /dev/null +++ b/resources/lang/es.json @@ -0,0 +1,88 @@ +{ + "Marque": "Marca", + "Produits": "productos", + "Actualités": "Noticias", + "Accueil": "", + "Découvrez DOUX, des produits de volailles françaises.": "", + "Qui sommes-nous": "", + "Notre Histoire": "", + "Nous contacter": "", + "Adresse": "", + "Votre message a bien été envoyé !": "", + "Nos services mettent tout en oeuvre pour y répondre au plus vite.": "", + "Oups ! Une erreur s’est produite...": "", + "Votre message n’a pas pu être envoyé.
Nous en sommes désolés et vous prions
de bien vouloir réessayer plus tard.": "", + "Vos coordonnées": "", + "Monsieur": "", + "Madame": "", + "Nom": "", + "Prénom": "", + "Code postal": "", + "Ville": "", + "Téléphone": "", + "Email": "", + "Préciser votre demande": "", + "Réclamation produit": "", + "La marque": "", + "Contact commercial": "", + "Autre demande": "", + "Nom du produit": "", + "Code barre": "", + "Lieu d'achat": "", + "Numéro de lot": "", + "Date Limite de Consommation": "", + "Date de consommation": "", + "Message": "", + "Photo de l'emballage": "", + "Insérer une pièce jointe": "", + "Food service": "", + "En savoir plus": "", + "Les produits": "", + "Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleur qualité": "", + "Découvrir": "", + "Nos gammes produits": "", + "Toutes nos gammes": "", + "Des produits incontournables, Authentiques et Innovants !": "", + "Gammes": "", + "Poulet, Cordon bleu ou Wing's ?": "", + "Découvrez tous nos produits à base de volaille.": "", + "les +<\/span>Produit<\/span>": "Las ventajas<\/span>del producto<\/span>", + "Résultats": "", + "Cuisiner en famille": "", + "Poulet rôti": "", + "Grignottes de poulet": "", + "Cuisine de chef": "", + "Suggestion de poulet frit": "", + "Mentions légales": "", + "Charte de confidentialité": "", + "Plan du site": "", + "Contact": "", + "Gestion des cookies": "", + "Recherchez un produit": "", + "Doux": "", + "Une question ? Une idée ? Un conseil ?
Des informations sur nos produits ?": "", + "N’hésitez-pas à nous contacter en renseignant le formulaire ci-dessous.
Nous traiterons votre demande avec la plus grande attention dans les meilleurs délais.": "", + "Doux, La référence française de la volaille": "", + "Sélectionnez un pays": "", + "Sélectionnez un département": "", + "Guadeloupe": "", + "Martinique": "", + "Guyane": "", + "La Réunion": "", + "Mayotte": "", + "Saint-Pierre-et-Miquelon": "", + "Saint-Barthélémy": "", + "Saint-Martin": "", + "Polynésie française": "", + "Île de Clipperton": "", + "Wallis-et-Futuna": "", + "Nouvelle-Calédonie": "", + "Terres australes et antarctiques françaises": "", + "Doux Food Services": "", + "Tous les produits Doux": "", + "Les actualités Doux": "", + "Nos conseils ...": "", + "les questions<\/span>
utiles<\/span>": "", + "Nos nouveautés": "", + "Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleure qualité": "" +} diff --git a/resources/lang/es/auth.php b/resources/lang/es/auth.php new file mode 100644 index 0000000..bf72ee2 --- /dev/null +++ b/resources/lang/es/auth.php @@ -0,0 +1,18 @@ + 'Ces identifiants ne correspondent pas à nos enregistrements', + 'password' => 'Le mot de passe fourni est incorrect.', + 'throttle' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.', +]; diff --git a/resources/lang/es/enums.php b/resources/lang/es/enums.php new file mode 100644 index 0000000..8b6e5d2 --- /dev/null +++ b/resources/lang/es/enums.php @@ -0,0 +1,19 @@ + 'enfant', + 'balanced_menu_type' => [ + 'kid' => 'enfant', + 'teenager' => 'adolescent', + 'woman' => 'femme', + 'man' => 'homme', + 'senior' => 'senior', + 'withPrefix' => [ + 'kid' => 'un enfant', + 'teenager' => 'un adolescent', + 'woman' => 'une femme', + 'man' => 'un homme', + 'senior' => 'un senior' + ] + ] +]; diff --git a/resources/lang/es/home.php b/resources/lang/es/home.php new file mode 100644 index 0000000..2cbf216 --- /dev/null +++ b/resources/lang/es/home.php @@ -0,0 +1,8 @@ + + array ( + 'text' => '', + ), +); diff --git a/resources/lang/es/pagination.php b/resources/lang/es/pagination.php new file mode 100644 index 0000000..8c1080e --- /dev/null +++ b/resources/lang/es/pagination.php @@ -0,0 +1,17 @@ + '« Précédent', + 'next' => 'Suivant »', +]; diff --git a/resources/lang/es/passwords.php b/resources/lang/es/passwords.php new file mode 100644 index 0000000..2f898d3 --- /dev/null +++ b/resources/lang/es/passwords.php @@ -0,0 +1,20 @@ + 'Votre mot de passe a été réinitialisé !', + 'sent' => 'Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !', + 'throttled' => 'Veuillez patienter avant de réessayer.', + 'token' => "Ce jeton de réinitialisation du mot de passe n'est pas valide.", + 'user' => "Aucun utilisateur n'a été trouvé avec cette adresse email.", +]; diff --git a/resources/lang/es/rgpd.php b/resources/lang/es/rgpd.php new file mode 100644 index 0000000..9529253 --- /dev/null +++ b/resources/lang/es/rgpd.php @@ -0,0 +1,37 @@ + + array ( + 'desc' => '', + 'title' => '', + ), + 'banner' => + array ( + 'desc' => '', + 'title' => '', + ), + 'contact' => + array ( + 'acceptcgu' => '', + 'disclaimer' => '', + ), + 'cookie' => + array ( + 'allow' => '', + 'deny' => '', + ), + 'cookies' => + array ( + 'acceptall' => '', + 'allowall' => '', + 'denyall' => '', + 'personalize' => '', + 'settignsall' => '', + ), + 'manage' => + array ( + 'explain' => '', + 'title' => '', + ), +); diff --git a/resources/lang/es/urls.php b/resources/lang/es/urls.php new file mode 100644 index 0000000..95312e1 --- /dev/null +++ b/resources/lang/es/urls.php @@ -0,0 +1,14 @@ + 'contacto', + 'food-service' => 'food-service', + 'gamme' => 'gama', + 'gammes' => 'productos', + 'legals' => 'terminos-y-condiciones-de-uso', + 'marque' => 'marca', + 'news' => 'noticias', + 'policy' => 'política-de-privacidad', + 'produit' => 'producto', + 'search' => 'buscar', +); diff --git a/resources/lang/es/validation.php b/resources/lang/es/validation.php new file mode 100644 index 0000000..2e86fef --- /dev/null +++ b/resources/lang/es/validation.php @@ -0,0 +1,187 @@ + 'Le champ :attribute doit être accepté.', + 'active_url' => "Le champ :attribute n'est pas une URL valide.", + 'after' => 'Le champ :attribute doit être une date postérieure au :date.', + 'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.', + 'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.', + 'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.', + 'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.', + 'array' => 'Le champ :attribute doit être un tableau.', + 'before' => 'Le champ :attribute doit être une date antérieure au :date.', + 'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.', + 'between' => [ + 'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.', + 'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.', + 'string' => 'Le texte :attribute doit contenir entre :min et :max caractères.', + 'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.', + ], + 'boolean' => 'Le champ :attribute doit être vrai ou faux.', + 'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.', + 'date' => "Le champ :attribute n'est pas une date valide.", + 'date_equals' => 'Le champ :attribute doit être une date égale à :date.', + 'date_format' => 'Le champ :attribute ne correspond pas au format :format.', + 'different' => 'Les champs :attribute et :other doivent être différents.', + 'digits' => 'Le champ :attribute doit contenir :digits chiffres.', + 'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.', + 'dimensions' => "La taille de l'image :attribute n'est pas conforme.", + 'distinct' => 'Le champ :attribute a une valeur en double.', + 'email' => 'Le champ :attribute doit être une adresse email valide.', + 'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values', + 'exists' => 'Le champ :attribute sélectionné est invalide.', + 'file' => 'Le champ :attribute doit être un fichier.', + 'filled' => 'Le champ :attribute doit avoir une valeur.', + 'gt' => [ + 'numeric' => 'La valeur de :attribute doit être supérieure à :value.', + 'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.', + 'string' => 'Le texte :attribute doit contenir plus de :value caractères.', + 'array' => 'Le tableau :attribute doit contenir plus de :value éléments.', + ], + 'gte' => [ + 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.', + 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.', + 'string' => 'Le texte :attribute doit contenir au moins :value caractères.', + 'array' => 'Le tableau :attribute doit contenir au moins :value éléments.', + ], + 'image' => 'Le champ :attribute doit être une image.', + 'in' => 'Le champ :attribute est invalide.', + 'in_array' => "Le champ :attribute n'existe pas dans :other.", + 'integer' => 'Le champ :attribute doit être un entier.', + 'ip' => 'Le champ :attribute doit être une adresse IP valide.', + 'ipv4' => 'Le champ :attribute doit être une adresse IPv4 valide.', + 'ipv6' => 'Le champ :attribute doit être une adresse IPv6 valide.', + 'json' => 'Le champ :attribute doit être un document JSON valide.', + 'lt' => [ + 'numeric' => 'La valeur de :attribute doit être inférieure à :value.', + 'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.', + 'string' => 'Le texte :attribute doit contenir moins de :value caractères.', + 'array' => 'Le tableau :attribute doit contenir moins de :value éléments.', + ], + 'lte' => [ + 'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.', + 'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.', + 'string' => 'Le texte :attribute doit contenir au plus :value caractères.', + 'array' => 'Le tableau :attribute doit contenir au plus :value éléments.', + ], + 'max' => [ + 'numeric' => 'La valeur de :attribute ne peut être supérieure à :max.', + 'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.', + 'string' => 'Le texte de :attribute ne peut contenir plus de :max caractères.', + 'array' => 'Le tableau :attribute ne peut contenir plus de :max éléments.', + ], + 'mimes' => 'Le champ :attribute doit être un fichier de type : :values.', + 'mimetypes' => 'Le champ :attribute doit être un fichier de type : :values.', + 'min' => [ + 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.', + 'file' => 'La taille du fichier de :attribute doit être supérieure à :min kilo-octets.', + 'string' => 'Le texte :attribute doit contenir au moins :min caractères.', + 'array' => 'Le tableau :attribute doit contenir au moins :min éléments.', + ], + 'multiple_of' => 'La valeur de :attribute doit être un multiple de :value', + 'not_in' => "Le champ :attribute sélectionné n'est pas valide.", + 'not_regex' => "Le format du champ :attribute n'est pas valide.", + 'numeric' => 'Le champ :attribute doit contenir un nombre.', + 'password' => 'Le mot de passe est incorrect', + 'present' => 'Le champ :attribute doit être présent.', + 'regex' => 'Le format du champ :attribute est invalide.', + 'required' => 'Le champ :attribute est obligatoire.', + 'required_if' => 'Le champ :attribute est obligatoire quand la valeur de :other est :value.', + 'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.', + 'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.', + 'required_with_all' => 'Le champ :attribute est obligatoire quand :values sont présents.', + 'required_without' => "Le champ :attribute est obligatoire quand :values n'est pas présent.", + 'required_without_all' => "Le champ :attribute est requis quand aucun de :values n'est présent.", + 'same' => 'Les champs :attribute et :other doivent être identiques.', + 'size' => [ + 'numeric' => 'La valeur de :attribute doit être :size.', + 'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.', + 'string' => 'Le texte de :attribute doit contenir :size caractères.', + 'array' => 'Le tableau :attribute doit contenir :size éléments.', + ], + 'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values', + 'string' => 'Le champ :attribute doit être une chaîne de caractères.', + 'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.', + 'unique' => 'La valeur du champ :attribute est déjà utilisée.', + 'uploaded' => "Le fichier du champ :attribute n'a pu être téléversé.", + 'url' => "Le format de l'URL de :attribute n'est pas valide.", + 'uuid' => 'Le champ :attribute doit être un UUID valide', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'phone' => 'Le champ :attribute n\'est pas un numéro de téléphone valide.', + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [ + 'name' => 'nom', + 'username' => "nom d'utilisateur", + 'email' => 'adresse email', + 'first_name' => 'prénom', + 'last_name' => 'nom', + 'password' => 'mot de passe', + 'password_confirmation' => 'confirmation du mot de passe', + 'city' => 'ville', + 'country' => 'pays', + 'address' => 'adresse', + 'phone' => 'téléphone', + 'mobile' => 'portable', + 'age' => 'âge', + 'sex' => 'sexe', + 'gender' => 'genre', + 'day' => 'jour', + 'month' => 'mois', + 'year' => 'année', + 'hour' => 'heure', + 'minute' => 'minute', + 'second' => 'seconde', + 'title' => 'titre', + 'content' => 'contenu', + 'description' => 'description', + 'excerpt' => 'extrait', + 'date' => 'date', + 'time' => 'heure', + 'available' => 'disponible', + 'size' => 'taille', + 'answers' => 'réponses', + 'answers.*' => 'réponse', + 'postal_code' => 'code postal', + 'picture' => 'image', + 'breeder_code' => 'code éleveur' + ], +]; diff --git a/resources/lang/fr.json b/resources/lang/fr.json new file mode 100644 index 0000000..860073e --- /dev/null +++ b/resources/lang/fr.json @@ -0,0 +1,88 @@ +{ + "Marque": "Marque", + "Produits": "Produits", + "Actualités": "Actualités", + "Accueil": "Accueil", + "Découvrez DOUX, des produits de volailles françaises.": "Découvrez DOUX, des produits de volailles françaises", + "Qui sommes-nous": "Qui sommes-nous", + "Les produits": "Les produits", + "Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleur qualité": "Ne ratez aucune de nos nouveautés", + "Découvrir": "Découvrir", + "Nos gammes produits": "Nos gammes produits", + "Toutes nos gammes": "Les gammes disponibles", + "Des produits incontournables, Authentiques et Innovants !": "Parcourez nos gammes et trouvez les produits qui vous feront plaisir.", + "Doux": "Doux", + "Résultats": "Résultats", + "Mentions légales": "Mentions légales", + "Notre Histoire": "Depuis 1933 à vos côtés", + "Nous contacter": "", + "Adresse": "", + "Votre message a bien été envoyé !": "", + "Nos services mettent tout en oeuvre pour y répondre au plus vite.": "", + "Oups ! Une erreur s’est produite...": "", + "Votre message n’a pas pu être envoyé.
Nous en sommes désolés et vous prions
de bien vouloir réessayer plus tard.": "", + "Vos coordonnées": "", + "Monsieur": "", + "Madame": "", + "Nom": "", + "Prénom": "", + "Code postal": "", + "Ville": "", + "Téléphone": "", + "Email": "", + "Préciser votre demande": "", + "Réclamation produit": "", + "La marque": "", + "Contact commercial": "", + "Autre demande": "", + "Nom du produit": "", + "Code barre": "", + "Lieu d'achat": "", + "Numéro de lot": "", + "Date Limite de Consommation": "", + "Date de consommation": "", + "Message": "", + "Photo de l'emballage": "Photo de l'emballage", + "Insérer une pièce jointe": "", + "Food service": "", + "En savoir plus": "", + "Gammes": "", + "Poulet, Cordon bleu ou Wing's ?": "", + "Découvrez tous nos produits à base de volaille.": "", + "les +<\/span>Produit<\/span>": "les +<\/span>Produit<\/span>", + "Cuisiner en famille": "", + "Poulet rôti": "", + "Grignottes de poulet": "", + "Cuisine de chef": "", + "Suggestion de poulet frit": "", + "Charte de confidentialité": "", + "Plan du site": "", + "Contact": "", + "Gestion des cookies": "", + "Recherchez un produit": "", + "Une question ? Une idée ? Un conseil ?
Des informations sur nos produits ?": "", + "N’hésitez-pas à nous contacter en renseignant le formulaire ci-dessous.
Nous traiterons votre demande avec la plus grande attention dans les meilleurs délais.": "", + "Doux, La référence française de la volaille": "Doux, La référence française de la volaille", + "Sélectionnez un pays": "", + "Sélectionnez un département": "", + "Guadeloupe": "", + "Martinique": "", + "Guyane": "", + "La Réunion": "", + "Mayotte": "", + "Saint-Pierre-et-Miquelon": "", + "Saint-Barthélémy": "", + "Saint-Martin": "", + "Polynésie française": "", + "Île de Clipperton": "", + "Wallis-et-Futuna": "", + "Nouvelle-Calédonie": "", + "Terres australes et antarctiques françaises": "", + "Doux Food Services": "", + "Tous les produits Doux": "", + "Les actualités Doux": "", + "Nos conseils ...": "Nos conseils ...", + "les questions<\/span>
utiles<\/span>": "les questions<\/span>
utiles<\/span>", + "Nos nouveautés": "Produits à la une", + "Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleure qualité": "Ne ratez aucune de nos nouveautés" +} \ No newline at end of file diff --git a/resources/lang/fr/auth.php b/resources/lang/fr/auth.php new file mode 100644 index 0000000..bf72ee2 --- /dev/null +++ b/resources/lang/fr/auth.php @@ -0,0 +1,18 @@ + 'Ces identifiants ne correspondent pas à nos enregistrements', + 'password' => 'Le mot de passe fourni est incorrect.', + 'throttle' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.', +]; diff --git a/resources/lang/fr/enums.php b/resources/lang/fr/enums.php new file mode 100644 index 0000000..8b6e5d2 --- /dev/null +++ b/resources/lang/fr/enums.php @@ -0,0 +1,19 @@ + 'enfant', + 'balanced_menu_type' => [ + 'kid' => 'enfant', + 'teenager' => 'adolescent', + 'woman' => 'femme', + 'man' => 'homme', + 'senior' => 'senior', + 'withPrefix' => [ + 'kid' => 'un enfant', + 'teenager' => 'un adolescent', + 'woman' => 'une femme', + 'man' => 'un homme', + 'senior' => 'un senior' + ] + ] +]; diff --git a/resources/lang/fr/home.php b/resources/lang/fr/home.php new file mode 100644 index 0000000..2cbf216 --- /dev/null +++ b/resources/lang/fr/home.php @@ -0,0 +1,8 @@ + + array ( + 'text' => '', + ), +); diff --git a/resources/lang/fr/pagination.php b/resources/lang/fr/pagination.php new file mode 100644 index 0000000..8c1080e --- /dev/null +++ b/resources/lang/fr/pagination.php @@ -0,0 +1,17 @@ + '« Précédent', + 'next' => 'Suivant »', +]; diff --git a/resources/lang/fr/passwords.php b/resources/lang/fr/passwords.php new file mode 100644 index 0000000..2f898d3 --- /dev/null +++ b/resources/lang/fr/passwords.php @@ -0,0 +1,20 @@ + 'Votre mot de passe a été réinitialisé !', + 'sent' => 'Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !', + 'throttled' => 'Veuillez patienter avant de réessayer.', + 'token' => "Ce jeton de réinitialisation du mot de passe n'est pas valide.", + 'user' => "Aucun utilisateur n'a été trouvé avec cette adresse email.", +]; diff --git a/resources/lang/fr/rgpd.php b/resources/lang/fr/rgpd.php new file mode 100644 index 0000000..1537d66 --- /dev/null +++ b/resources/lang/fr/rgpd.php @@ -0,0 +1,44 @@ + + array ( + 'desc' => 'Les services de mesure d\'audience permettent de générer des statistiques de fréquentation utiles à l\'amélioration du site.', + 'title' => 'MESURES D\'AUDIENCE - Google Analytics', + ), + 'banner' => + array ( + 'desc' => 'Ce site web stocke les cookies sur votre ordinateur. LDC 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. +
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. +
Pour en savoir plus sur les cookies que nous utilisons, consultez notre politique de confidentialité.', + 'title' => 'Le respect de votre vie privée est notre priorité', + ), + 'contact' => + array ( + 'acceptcgu' => 'J’accepte les conditions générales d’utilisation du site et autorise la Société Bretonne de Volaille à traiter mes données personnelles conformément à la Charte de confidentialité.', + 'disclaimer' => 'Les informations que vous nous communiquez sont collectées et traitées par la Société Bretonne de Volaille, responsable de traitement selon les finalités définies dans notre Charte de confidentialité. Ces informations sont destinées au personnel de la Société Bretonne de Volaille et peuvent être partagées avec ses sous-traitants.
+ A tout moment, vous pouvez retirer votre consentement. Pour toute information complémentaire concernant vos données personnelles et vos droits, merci de consulter notre Charte de confidentialité.', + ), + 'cookie' => + array ( + 'allow' => 'Autoriser', + 'deny' => 'Interdire', + ), + 'cookies' => + array ( + 'acceptall' => 'OK, TOUT ACCEPTER', + 'allowall' => 'Autoriser tous les cookies', + 'denyall' => 'Interdire tous les cookies', + 'personalize' => 'Personnaliser', + 'settignsall' => 'Préférence pour tous les services', + ), + 'manage' => + array ( + 'explain' => '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.', + 'title' => 'Panneau de gestion des cookies', + ), +); diff --git a/resources/lang/fr/urls.php b/resources/lang/fr/urls.php new file mode 100644 index 0000000..380afa5 --- /dev/null +++ b/resources/lang/fr/urls.php @@ -0,0 +1,14 @@ + 'contact', + 'food-service' => 'food-service', + 'gamme' => 'gamme', + 'gammes' => 'gammes', + 'legals' => 'mentions-legales', + 'marque' => 'marque', + 'news' => 'actualites', + 'policy' => 'charte-confidentialite', + 'produit' => 'produit', + 'search' => 'recherche', +); diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php new file mode 100644 index 0000000..2e86fef --- /dev/null +++ b/resources/lang/fr/validation.php @@ -0,0 +1,187 @@ + 'Le champ :attribute doit être accepté.', + 'active_url' => "Le champ :attribute n'est pas une URL valide.", + 'after' => 'Le champ :attribute doit être une date postérieure au :date.', + 'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.', + 'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.', + 'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.', + 'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.', + 'array' => 'Le champ :attribute doit être un tableau.', + 'before' => 'Le champ :attribute doit être une date antérieure au :date.', + 'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.', + 'between' => [ + 'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.', + 'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.', + 'string' => 'Le texte :attribute doit contenir entre :min et :max caractères.', + 'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.', + ], + 'boolean' => 'Le champ :attribute doit être vrai ou faux.', + 'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.', + 'date' => "Le champ :attribute n'est pas une date valide.", + 'date_equals' => 'Le champ :attribute doit être une date égale à :date.', + 'date_format' => 'Le champ :attribute ne correspond pas au format :format.', + 'different' => 'Les champs :attribute et :other doivent être différents.', + 'digits' => 'Le champ :attribute doit contenir :digits chiffres.', + 'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.', + 'dimensions' => "La taille de l'image :attribute n'est pas conforme.", + 'distinct' => 'Le champ :attribute a une valeur en double.', + 'email' => 'Le champ :attribute doit être une adresse email valide.', + 'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values', + 'exists' => 'Le champ :attribute sélectionné est invalide.', + 'file' => 'Le champ :attribute doit être un fichier.', + 'filled' => 'Le champ :attribute doit avoir une valeur.', + 'gt' => [ + 'numeric' => 'La valeur de :attribute doit être supérieure à :value.', + 'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.', + 'string' => 'Le texte :attribute doit contenir plus de :value caractères.', + 'array' => 'Le tableau :attribute doit contenir plus de :value éléments.', + ], + 'gte' => [ + 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.', + 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.', + 'string' => 'Le texte :attribute doit contenir au moins :value caractères.', + 'array' => 'Le tableau :attribute doit contenir au moins :value éléments.', + ], + 'image' => 'Le champ :attribute doit être une image.', + 'in' => 'Le champ :attribute est invalide.', + 'in_array' => "Le champ :attribute n'existe pas dans :other.", + 'integer' => 'Le champ :attribute doit être un entier.', + 'ip' => 'Le champ :attribute doit être une adresse IP valide.', + 'ipv4' => 'Le champ :attribute doit être une adresse IPv4 valide.', + 'ipv6' => 'Le champ :attribute doit être une adresse IPv6 valide.', + 'json' => 'Le champ :attribute doit être un document JSON valide.', + 'lt' => [ + 'numeric' => 'La valeur de :attribute doit être inférieure à :value.', + 'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.', + 'string' => 'Le texte :attribute doit contenir moins de :value caractères.', + 'array' => 'Le tableau :attribute doit contenir moins de :value éléments.', + ], + 'lte' => [ + 'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.', + 'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.', + 'string' => 'Le texte :attribute doit contenir au plus :value caractères.', + 'array' => 'Le tableau :attribute doit contenir au plus :value éléments.', + ], + 'max' => [ + 'numeric' => 'La valeur de :attribute ne peut être supérieure à :max.', + 'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.', + 'string' => 'Le texte de :attribute ne peut contenir plus de :max caractères.', + 'array' => 'Le tableau :attribute ne peut contenir plus de :max éléments.', + ], + 'mimes' => 'Le champ :attribute doit être un fichier de type : :values.', + 'mimetypes' => 'Le champ :attribute doit être un fichier de type : :values.', + 'min' => [ + 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.', + 'file' => 'La taille du fichier de :attribute doit être supérieure à :min kilo-octets.', + 'string' => 'Le texte :attribute doit contenir au moins :min caractères.', + 'array' => 'Le tableau :attribute doit contenir au moins :min éléments.', + ], + 'multiple_of' => 'La valeur de :attribute doit être un multiple de :value', + 'not_in' => "Le champ :attribute sélectionné n'est pas valide.", + 'not_regex' => "Le format du champ :attribute n'est pas valide.", + 'numeric' => 'Le champ :attribute doit contenir un nombre.', + 'password' => 'Le mot de passe est incorrect', + 'present' => 'Le champ :attribute doit être présent.', + 'regex' => 'Le format du champ :attribute est invalide.', + 'required' => 'Le champ :attribute est obligatoire.', + 'required_if' => 'Le champ :attribute est obligatoire quand la valeur de :other est :value.', + 'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.', + 'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.', + 'required_with_all' => 'Le champ :attribute est obligatoire quand :values sont présents.', + 'required_without' => "Le champ :attribute est obligatoire quand :values n'est pas présent.", + 'required_without_all' => "Le champ :attribute est requis quand aucun de :values n'est présent.", + 'same' => 'Les champs :attribute et :other doivent être identiques.', + 'size' => [ + 'numeric' => 'La valeur de :attribute doit être :size.', + 'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.', + 'string' => 'Le texte de :attribute doit contenir :size caractères.', + 'array' => 'Le tableau :attribute doit contenir :size éléments.', + ], + 'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values', + 'string' => 'Le champ :attribute doit être une chaîne de caractères.', + 'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.', + 'unique' => 'La valeur du champ :attribute est déjà utilisée.', + 'uploaded' => "Le fichier du champ :attribute n'a pu être téléversé.", + 'url' => "Le format de l'URL de :attribute n'est pas valide.", + 'uuid' => 'Le champ :attribute doit être un UUID valide', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'phone' => 'Le champ :attribute n\'est pas un numéro de téléphone valide.', + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [ + 'name' => 'nom', + 'username' => "nom d'utilisateur", + 'email' => 'adresse email', + 'first_name' => 'prénom', + 'last_name' => 'nom', + 'password' => 'mot de passe', + 'password_confirmation' => 'confirmation du mot de passe', + 'city' => 'ville', + 'country' => 'pays', + 'address' => 'adresse', + 'phone' => 'téléphone', + 'mobile' => 'portable', + 'age' => 'âge', + 'sex' => 'sexe', + 'gender' => 'genre', + 'day' => 'jour', + 'month' => 'mois', + 'year' => 'année', + 'hour' => 'heure', + 'minute' => 'minute', + 'second' => 'seconde', + 'title' => 'titre', + 'content' => 'contenu', + 'description' => 'description', + 'excerpt' => 'extrait', + 'date' => 'date', + 'time' => 'heure', + 'available' => 'disponible', + 'size' => 'taille', + 'answers' => 'réponses', + 'answers.*' => 'réponse', + 'postal_code' => 'code postal', + 'picture' => 'image', + 'breeder_code' => 'code éleveur' + ], +]; diff --git a/resources/lang/vendor/translation/de/errors.php b/resources/lang/vendor/translation/de/errors.php new file mode 100644 index 0000000..88b55e3 --- /dev/null +++ b/resources/lang/vendor/translation/de/errors.php @@ -0,0 +1,6 @@ + 'Die Sprache { :language } ist bereits vorhanden', + 'key_exists' => 'Der Übersetzungsschlüssel { :key } ist bereits vorhanden', +]; diff --git a/resources/lang/vendor/translation/de/translation.php b/resources/lang/vendor/translation/de/translation.php new file mode 100644 index 0000000..9fe7a8a --- /dev/null +++ b/resources/lang/vendor/translation/de/translation.php @@ -0,0 +1,52 @@ + 'Sprachen', + 'language' => 'Sprache', + 'type' => 'Typ', + 'file' => 'Datei', + 'key' => 'Schlüssel', + 'prompt_language' => 'Geben Sie den Sprachcode ein, den Sie hinzufügen möchten (z.B. en).', + 'language_added' => 'Neue Sprache wurde erfolgreich hinzugefügt 🙌', + 'prompt_language_for_key' => 'Geben Sie die Sprache für den Schlüssel ein (z.B. en)', + 'prompt_type' => 'Ist das ein Json- oder Array-Schlüssel?', + 'prompt_file' => 'In welcher Datei wird das gespeichert?', + 'prompt_key' => 'Was ist der Schlüssel für diese Übersetzung?', + 'prompt_value' => 'Was ist der Wert für diese Übersetzung', + 'type_error' => 'Übersetzungstyp muss json oder ein Array sein', + 'language_key_added' => 'Neuer Sprachenschlüssel wurde erfolgreich hinzugefügt 👏', + 'no_missing_keys' => 'Es fehlen keine Übersetzungsschlüssel in der App 🎉', + 'keys_synced' => 'Fehlende Schlüssel erfolgreich synchronisiert 🎊', + 'search' => 'Alle Übersetzungen suchen', + 'translations' => 'Übersetzung', + 'language_name' => 'Name', + 'locale' => 'locale', + 'add' => '+ Hinzufügen', + 'add_language' => 'Neue Sprache hinzufügen', + 'save' => 'save', + 'language_exists' => 'Das :attribute ist bereits vorhanden.', + 'uh_oh' => 'Etwas ist nicht ganz richtig', + 'group_single' => 'Gruppe / Single', + 'Gruppe' => 'Gruppe', + 'single' => 'single', + 'value' => 'Wert', + 'namespace' => 'Namespace', + 'prompt_from_driver' => 'Von welchem Treiber möchten Sie Übersetzungen übernehmen?', + 'prompt_to_driver' => 'Zu welchem Treiber möchten Sie die Übersetzungen hinzufügen?', + 'prompt_language_if_any' => 'Welche Sprache? (leer lassen für alle) ', + 'synchronisieren' => 'Übersetzungen synchronisieren ⏳', + 'synced' => 'Übersetzungen wurden synchronisiert 😎', + 'invalid_driver' => 'Ungültiger Treiber', + 'invalid_language' => 'Ungültige Sprache', + 'add_translation' => 'Übersetzung hinzufügen', + 'translation_added' => 'Neue Übersetzung erfolgreich hinzugefügt 🙌', + 'namespace_label' => 'Namespace (optional)', + 'group_label' => 'Gruppe (optional)', + 'key_label' => 'Schlüssel', + 'value_label' => 'Wert', + 'namespace_placeholder' => 'z.B. my_package', + 'group_placeholder' => 'z.B. validation', + 'key_placeholder' => 'z.B. invalid_key', + 'value_placeholder' => 'z.B. Schlüssel müssen eine einzige Zeichenfolge sein', + 'advanced_options' => 'Erweiterte Optionen umschalten', +]; diff --git a/resources/lang/vendor/translation/en/errors.php b/resources/lang/vendor/translation/en/errors.php new file mode 100644 index 0000000..abd5036 --- /dev/null +++ b/resources/lang/vendor/translation/en/errors.php @@ -0,0 +1,6 @@ + 'The language { :language } already exists', + 'key_exists' => 'The translation key { :key } already exists', +]; diff --git a/resources/lang/vendor/translation/en/translation.php b/resources/lang/vendor/translation/en/translation.php new file mode 100644 index 0000000..f37eff9 --- /dev/null +++ b/resources/lang/vendor/translation/en/translation.php @@ -0,0 +1,52 @@ + 'Languages', + 'language' => 'Language', + 'type' => 'Type', + 'file' => 'File', + 'key' => 'Key', + 'prompt_language' => 'Enter the language code you would like to add (e.g. en)', + 'language_added' => 'New language added successfully 🙌', + 'prompt_language_for_key' => 'Enter the language for the key (e.g. en)', + 'prompt_type' => 'Is this a json or array key?', + 'prompt_file' => 'Which file will this be stored in?', + 'prompt_key' => 'What is the key for this translation?', + 'prompt_value' => 'What is the value for this translation', + 'type_error' => 'Translation type must be json or array', + 'language_key_added' => 'New language key added successfully 👏', + 'no_missing_keys' => 'There are no missing translation keys in the app 🎉', + 'keys_synced' => 'Missing keys synchronised successfully 🎊', + 'search' => 'Search all translations', + 'translations' => 'Translation', + 'language_name' => 'Name', + 'locale' => 'Locale', + 'add' => '+ Add', + 'add_language' => 'Add a new language', + 'save' => 'Save', + 'language_exists' => 'The :attribute already exists.', + 'uh_oh' => 'Something\'s not quite right', + 'group_single' => 'Group / Single', + 'group' => 'Group', + 'single' => 'Single', + 'value' => 'Value', + 'namespace' => 'Namespace', + 'prompt_from_driver' => 'Which driver would you like to take translations from?', + 'prompt_to_driver' => 'Which driver would you like to add the translations to?', + 'prompt_language_if_any' => 'Which language? (leave blank for all)', + 'syncing' => 'Syncing translations ⏳', + 'synced' => 'Translations have been synced 😎', + 'invalid_driver' => 'Invalid driver', + 'invalid_language' => 'Invalid language', + 'add_translation' => 'Add a translation', + 'translation_added' => 'New translation added successfull 🙌', + 'namespace_label' => 'Namespace (Optional)', + 'group_label' => 'Group (Optional)', + 'key_label' => 'Key', + 'value_label' => 'Value', + 'namespace_placeholder' => 'e.g. my_package', + 'group_placeholder' => 'e.g. validation', + 'key_placeholder' => 'e.g. invalid_key', + 'value_placeholder' => 'e.g. Keys must be a single string', + 'advanced_options' => 'Toggle advanced options', +]; diff --git a/resources/lang/vendor/translation/fr/errors.php b/resources/lang/vendor/translation/fr/errors.php new file mode 100644 index 0000000..f4de475 --- /dev/null +++ b/resources/lang/vendor/translation/fr/errors.php @@ -0,0 +1,6 @@ + 'La clé de traduction { :key } existe déjà', + 'language_exists' => 'La langue { :language } existe déjà', +]; diff --git a/resources/lang/vendor/translation/fr/translation.php b/resources/lang/vendor/translation/fr/translation.php new file mode 100644 index 0000000..462a1de --- /dev/null +++ b/resources/lang/vendor/translation/fr/translation.php @@ -0,0 +1,52 @@ + '+ Ajouter', + 'add_language' => 'Ajouter une nouvelle langue', + 'add_translation' => 'Ajouter une traduction', + 'advanced_options' => 'Afficher les options avancées', + 'file' => 'Fichier', + 'group' => 'Groupe', + 'group_label' => 'Groupe (Optionnel)', + 'group_placeholder' => 'Ex: validation', + 'group_single' => 'Groupe / Unique', + 'invalid_driver' => 'Driver invalide', + 'invalid_language' => 'Langue invalide', + 'key' => 'Clé', + 'key_label' => 'Clé', + 'key_placeholder' => 'Par exemple : invalid_key', + 'keys_synced' => 'Clés manquantes synchronisées avec succès 🎊', + 'language' => 'Langue', + 'language_added' => 'Nouvelle langue ajoutée avec succés 🙌', + 'language_exists' => 'Le :attribute existe déjà.', + 'language_key_added' => 'Nouvelle clé dans la langue ajoutée avec succès 👏', + 'language_name' => 'Nom', + 'languages' => 'Langues', + 'locale' => 'Locale', + 'namespace' => 'Namespace', + 'namespace_label' => 'Namespace (Optionnel)', + 'namespace_placeholder' => 'Par exemple : my_package', + 'no_missing_keys' => 'Il ne manque aucune clé de traduction dans l\'application 🎉', + 'prompt_file' => 'Dans quel fichier sera t\'elle stockée ?', + 'prompt_from_driver' => 'De quel driver voudriez-vous prendre les traductions ?', + 'prompt_key' => 'Quelle est la clé de cette traduction ?', + 'prompt_language' => 'Entrez le code langue que vous aimeriez ajouter (Ex: fr)', + 'prompt_language_for_key' => 'Entrez la langue pour la clé (Ex: fr)', + 'prompt_language_if_any' => 'Quelle langue ? (Laissez vide pour tous)', + 'prompt_to_driver' => 'À quel driver désirez-vous ajouter les traductions ?', + 'prompt_type' => 'Est-ce une clé Json ou Array ?', + 'prompt_value' => 'Quelle est la valeur de la traduction', + 'save' => 'Sauvegarder', + 'search' => 'Rechercher toutes les traductions', + 'single' => 'Unique', + 'synced' => 'Les traductions sont synchronisées 😎', + 'syncing' => 'Synchronisation des traductions ⏳', + 'translation_added' => 'Nouvelle traduction ajoutée avec succès 🙌', + 'translations' => 'Traduction', + 'type' => 'Type', + 'type_error' => 'Le type de traduction doit être en json ou en array', + 'uh_oh' => 'Quelque chose ne fonctionne pas', + 'value' => 'Valeur', + 'value_label' => 'Valeur', + 'value_placeholder' => 'Par exemple : Les clés doivent être une seule chaîne', +]; diff --git a/resources/lang/vendor/translation/nl/errors.php b/resources/lang/vendor/translation/nl/errors.php new file mode 100644 index 0000000..5205c2e --- /dev/null +++ b/resources/lang/vendor/translation/nl/errors.php @@ -0,0 +1,6 @@ + 'De taal { :language } bestaat al', + 'key_exists' => 'De vertaalsleutel { :key } bestaat al', +]; diff --git a/resources/lang/vendor/translation/nl/translation.php b/resources/lang/vendor/translation/nl/translation.php new file mode 100644 index 0000000..d839b04 --- /dev/null +++ b/resources/lang/vendor/translation/nl/translation.php @@ -0,0 +1,52 @@ + 'Talen', + 'language' => 'Taal', + 'type' => 'Type', + 'file' => 'Bestand', + 'key' => 'Sleutel', + 'prompt_language' => 'Voer de taalcode in die u wilt toevoegen (bijvoorbeeld: en)', + 'language_added' => 'Nieuwe taal met succes toegevoegd 🙌', + 'prompt_language_for_key' => 'Voer de taal voor de sleutel in (bijvoorbeeld: en)', + 'prompt_type' => 'Is dit een json- of arraysleutel?', + 'prompt_file' => 'In welk bestand wordt dit opgeslagen?', + 'prompt_key' => 'Wat is de sleutel voor deze vertaling?', + 'prompt_value' => 'Wat is de text voor deze vertaling', + 'type_error' => 'Het vertaaltype moet json of array zijn', + 'language_key_added' => 'Nieuwe taalcode toegevoegd 👏', + 'no_missing_keys' => 'Er zijn geen ontbrekende vertaalsleutels in de app 🎉', + 'keys_synced' => 'Ontbrekende toetsen gesynchroniseerd met succes 🎊', + 'search' => 'Doorzoek alle vertalingen', + 'translations' => 'Vertaling', + 'language_name' => 'Naam', + 'locale' => 'locale', + 'add' => '+ Toevoegen', + 'add_language' => 'Voeg een nieuwe taal toe', + 'save' => 'Opslaan', + 'language_exists' => 'Het kenmerk :attribute bestaat al.', + 'uh_oh' => 'Er klopt iets niet helemaal', + 'group_single' => 'Groep / Enkelvoudig', + 'group' => 'Groep', + 'single' => 'Enkelvoudig', + 'value' => 'Waarde', + 'namespace' => 'Namespace', + 'prompt_from_driver' => 'Van welke driver wilt u vertalingen meenemen?', + 'prompt_to_driver' => 'Aan welke driver wilt u de vertalingen toevoegen?', + 'prompt_language_if_any' => 'Welke taal? (laat leeg voor alle)', + 'syncing' => 'Vertaling synchroniseren ⏳', + 'synced' => 'Vertalingen zijn gesynchroniseerd 😎', + 'invalid_driver' => 'Ongeldige driver', + 'invalid_language' => 'Ongeldige taal', + 'add_translation' => 'Voeg een vertaling toe', + 'translation_added' => 'Nieuwe vertaling succesvol toegevoegd 🙌', + 'namespace_label' => 'Namespace (optioneel)', + 'group_label' => 'Groep (optioneel)', + 'key_label' => 'Sleutel', + 'value_label' => 'Waarde', + 'namespace_placeholder' => 'bijv. Mijn_pakket', + 'group_placeholder' => 'bijv. bevestiging', + 'key_placeholder' => 'bijv. ongeldige sleutel', + 'value_placeholder' => 'bijv. Sleutels mogen geen spaties bevatten', + 'advanced_options' => 'Schakel geavanceerde opties in', +]; diff --git a/resources/sass/__import.scss b/resources/sass/__import.scss new file mode 100644 index 0000000..b5e6fcf --- /dev/null +++ b/resources/sass/__import.scss @@ -0,0 +1,2 @@ +@import "variables"; +@import "classes"; \ No newline at end of file diff --git a/resources/sass/_classes.scss b/resources/sass/_classes.scss new file mode 100644 index 0000000..a9d37e5 --- /dev/null +++ b/resources/sass/_classes.scss @@ -0,0 +1,30 @@ +.min-height-100vh { + min-height: calc(100vh - #{$topNavHeight}); +} + +.site { + border: solid white 1px; +} + +#siteid { + color: white; + margin-right: 100px; +} + +.white-png { + background-color: #eeeeee !important; + text-align: center; +} + +.wdt11 { + width: 11%; +} +.wdt25 { + width: 25%; +} +.wdt50 { + width: 50%; +} +.wdt75 { + width: 75%; +} diff --git a/resources/sass/_footer.scss b/resources/sass/_footer.scss deleted file mode 100644 index 62975c9..0000000 --- a/resources/sass/_footer.scss +++ /dev/null @@ -1,66 +0,0 @@ -.footer-widgets { - align-items: center; - .footer-widgets__content { - left: 0; - right: 0; - &:before { - content: url(~@/images/picto-localisation.png); - margin-right: 10px; - } - } -} - -.footer-content { - color: $color-light; - font-size: 15px; - background-color: $color-main; - - ul { - margin-bottom: 25px; - } - - a { - color: $color-light; - text-decoration: none; - } -} - -@media screen and (min-width: 800px) { - .footer-content { - ul { - li { - display: inline-block; - margin-left: 10px; - margin-right: 10px; - &:first-child { - margin-left: 0; - } - &:last-child { - margin-right: 0; - } - } - } - } -} - -@media screen and (max-width: 799px) { - .footer-widgets { - height: 200px; - img { - height: 100%; - object-fit: cover; - opacity: 0.2; - } - .footer-widgets__content { - text-align: center; - margin-top: 50px; - } - } - .footer-content { - ul { - li { - margin-bottom: 10px; - } - } - } -} diff --git a/resources/sass/_form.scss b/resources/sass/_form.scss deleted file mode 100644 index 89c5e7f..0000000 --- a/resources/sass/_form.scss +++ /dev/null @@ -1,252 +0,0 @@ -form{ - font-size:16px; -} - -input[type=text]{ - border:0 none; -} - -input[type=submit]{ - min-width:180px; - padding:15px; - color:$color-main; - background-color:transparent; - font-weight:bold; - text-align:center; - text-transform:uppercase; - border:1px solid $color-main; -} - -.newsletter input[type=text], -input[type=submit]{ - border-radius: 30px; -} - -input[type=submit]{ - cursor: pointer; - &:hover{ - color:$color-light; - background-color:$color-main; - } -} - -input[type=text], -input[type=number], -input[type=mail]{ - padding:15px; - font-size:15px; - border:0 none; - outline-color:#efefef; -} - -textarea{ - width:100%; - max-width:100%; - margin-top:30px; - margin-bottom:30px; -} - -.form-row{ - display:flex; - padding-top:30px; - padding-bottom:30px; -} - -.form-group{ - display:flex; - padding-bottom:2px; - width:100%; - max-width:100%; - border-bottom:solid 1px $color-dark; - input[type=text], - input[type=number], - input[type=mail]{ - flex-grow:2; - } - &:first-of-type{ - margin-left:0; - } - &:last-of-type{ - margin-right:0; - } -} - -fieldset{ - margin-top:45px; - border:0 none; - legend{ - margin-bottom:30px; - font-weight:bold; - } -} - -/*CUSTOM RADIO*/ -.radio-label { - position: relative; - padding-left: 20px; - margin-right:25px; - color:#999999; - cursor: pointer; -} - -/* Hide the browser's default radio button */ -.radio-label input { - appearance: none; -} - -/* Create a custom radio button */ -.checkmark { - position: absolute; - top: 3px; - left: 0; - right:10px; - height: 12px; - width: 12px; - background-color: $color-light; - border:solid 1px $color-main; - border-radius: 50%; -} - -/* On mouse-over, add a grey background color */ -.radio-label:hover input ~ .checkmark { - background-color: $color-main; -} - -/* When the radio button is checked, add a blue background */ -.radio-label input:checked ~ .checkmark { - background-color: $color-light; -} - -/* Create the indicator (the dot/circle - hidden when not checked) */ -.checkmark:after { - content: ""; - position: absolute; - display: none; -} - -/* Show the indicator (dot/circle) when checked */ -.radio-label input:checked ~ .checkmark:after { - display: block; -} - -/* Style the indicator (dot/circle) */ -.radio-label .checkmark:after { - top: 2px; - left: 2px; - width: 6px; - height: 6px; - border-radius: 50%; - background-color: $color-main; -} - -/*CUSTOM CHECKBOX*/ -.ck-button{ - margin-bottom:45px; -} -.ck-button label{ - margin-right:10px; - &:last-child{ - margin-right:0; - } -} - -.ck-button label span { - padding:10px; - margin-right:10px; - border:1px solid $color-dark; - border-radius:40px; - cursor: pointer; - &:last-child{ - margin-right:0; - } - &:hover{ - color:$color-light; - border-color:$color-main; - background-color:$color-main; - } -} - -.ck-button label input { - position:absolute; - top:-20px; -} - -.ck-button input:checked + span { - background-color:$color-main; - color:$color-light; - border-color:$color-light; -} - -/*CUSTOM FORM*/ -.swap { - visibility: hidden; -} - -.swap:after { - cursor: pointer; - visibility: visible; - content: ''; - font-size: calc(var(--swap-size) - 2.5rem); - display: inline-block; - width: var(--swap-size); - height: var(--swap-size); - padding: .5rem; - border: 1px solid $color-main; - border-radius: .4em; - background-color: $color-light; - display: flex; - justify-content: center; - align-items: center; -} - -.swap:checked:after { - content:""; - background-color: $color-main; -} - -@media screen and (min-width: 800px){ - .newsletter input[type=text]{ - width:430px; - } - .form-group{ - align-items:center; - margin-left:15px; - margin-right:15px; - } -} - -@media screen and (max-width: 799px){ - input[type=text], - input[type=submit]{ - display: block; - margin-left:auto; - margin-right:auto; - } - - form, - input[type=text]{ - width:100%; - max-width:100%; - } - - input[type=submit]{ - margin-top:25px; - } - - .form-row, - .form-group{ - flex-direction:column; - } - - .form-group{ - margin-bottom:25px; - &:last-child{ - margin-bottom:0; - } - } - - .ck-button label span { - display:inline-block; - margin-bottom:5px; - } -} \ No newline at end of file diff --git a/resources/sass/_globals.scss b/resources/sass/_globals.scss deleted file mode 100644 index dd1caad..0000000 --- a/resources/sass/_globals.scss +++ /dev/null @@ -1,137 +0,0 @@ -html { - font-size: 100%; -} - -body { - font-size: $globalfont; - font-family: $fontbarlow-regular; - line-height: 1.4; -} - -button { - border: 0 none; - background-color: transparent; - cursor: pointer; -} - -img { - width: 100%; -} - -#backtotop { - display: none; - align-items: center; - justify-content: center; - position: fixed; - bottom: 20px; - right: 20px; - width: 40px; - height: 40px; - border-radius: 40px; - background-color: $color-main; - z-index: 99; - - .arrow { - border: solid $color-light; - border-width: 0 3px 3px 0; - display: inline-block; - padding: 3px; - &.up { - transform: rotate(-135deg); - } - } -} - -#search { - background-image: url("~@/images/search.png"); - background-size: contain; - background-repeat: no-repeat; - width: 25px; - height: 25px; - margin-left: 25px; -} - -ul.more { - margin-top: 50px; - li { - align-items: center; - position: relative; - padding-left: 25px; - margin-bottom: 30px; - &:last-of-type { - margin-bottom: 0; - } - p:first-of-type { - position: relative; - } - &:before { - content: ""; - position: absolute; - left: 0; - top: 15px; - width: 13px; - height: 13px; - background-color: $color-blue; - border-radius: 50%; - } - .label img { - width: 100px; - } - } -} - -ul.infos { - display: flex; - justify-content: center; - li { - justify-content: center; - text-align: center; - color: $color-blue; - font-family: $fontbarlow-bold; - } - span { - display: flex; - justify-content: center; - align-items: center; - width: 85px; - height: 85px; - padding: 20px; - margin: 20px auto; - background-color: $color-main; - border-radius: 50%; - } -} - -@media screen and (min-width: 800px) { - main { - padding-top: 100px; - } - - ul.more { - li { - p:first-of-type { - font-size: 30px; - } - } - } - - ul.infos { - li { - flex-basis: 20%; - } - } -} - -@media screen and (max-width: 799px) { - main { - padding-top: 50px; - } - - ul.more { - li { - p:first-of-type { - font-size: 22px; - } - } - } -} diff --git a/resources/sass/_header.scss b/resources/sass/_header.scss deleted file mode 100644 index eca0fd1..0000000 --- a/resources/sass/_header.scss +++ /dev/null @@ -1,77 +0,0 @@ -.site-header{ - position:fixed; - left:0; - right:0; - font-family: $fontbarlow-bold; - background-color:$color-main; - box-shadow: 0 2px 8px rgba($color-dark, .15); - z-index:99; - - .wrapper{ - display:flex; - align-items:center; - } - - .logotype{ - top:0; - left:1em; - width: 25%; - z-index:1; - img{ - width:200px; - } - } - - > span{ - width:25%; - text-align:right; - } - - nav li{ - display:inline-block; - } - - nav a{ - color:$color-blue; - text-decoration:none; - &:hover{ - color:$color-second; - } - } - - .traduction{ - display:flex; - li{ - margin-right:15px; - a{ - color:$color-blue; - text-transform:uppercase; - text-decoration:none; - } - &.current a{ - color:$color-second; - } - &:last-of-type{ - margin-right:0; - } - } - } -} - -@media screen and (min-width: 800px){ - .site-header{ - .wrapper{ - justify-content: space-between; - height:100px; - } - } -} - -@media screen and (max-width: 799px){ - .site-header{ - .wrapper{ - justify-content: flex-end; - height:50px; - } - } -} \ No newline at end of file diff --git a/resources/sass/_layout.scss b/resources/sass/_layout.scss deleted file mode 100644 index d81e358..0000000 --- a/resources/sass/_layout.scss +++ /dev/null @@ -1,36 +0,0 @@ -@media screen and (min-width:1200px){ - .container{ - padding-top:60px; - padding-bottom:60px; - } - .wrapper, - .wrapper-m{ - margin-left:auto; - margin-right:auto; - } - .wrapper{ - width:1170px; - max-width:1170px; - } - .wrapper-m{ - width:900px; - max-width:900px; - } -} - -@media (max-width:1199px){ - .wrapper, - .wrapper-m{ - width:100%; - max-width:100%; - padding-left:25px; - padding-right:25px; - } -} - -@media screen and (max-width:768px){ - .container{ - padding-top:60px; - padding-bottom:60px; - } -} \ No newline at end of file diff --git a/resources/sass/_list.scss b/resources/sass/_list.scss deleted file mode 100644 index ba97e1f..0000000 --- a/resources/sass/_list.scss +++ /dev/null @@ -1,305 +0,0 @@ -.product-card, -.gamme-card{ - display:flex; - position:relative; - height:375px; - margin-bottom:20px; - overflow: hidden; - > img{ - display:block; - width:100%; - height: 100%; - object-fit: cover; - } - a{ - top:0; - z-index:9; - } - .overlay{ - display: flex; - align-items:center; - justify-content:center; - position:absolute; - width:100%; - height:50%; - font-weight:bold; - transition: bottom 0.4s; - } -} - -.product-card{ - .product-card__title, - a{ - position:absolute; - right:0; - bottom:0; - left:0; - } - .product-card__title{ - padding:1em .2em; - background-color:rgba($color-light, .5); - } - .overlay{ - bottom:-200px; - span{ - width:50%; - padding-top:1em; - padding-bottom:1em; - background-color:$color-light; - border-radius:2em; - } - } - &:hover .overlay{ - bottom:0; - } -} - -.gamme-card{ - .gamme-card__title, - a{ - position:absolute; - right:0; - bottom:0; - left:0; - } - .gamme-card__title{ - padding:1em .2em; - background-color:rgba($color-light, .5); - } - .overlay{ - bottom:-50px; - span{ - color:$color-light; - font-size:30px; - font-family:$fontbarlow-bold; - } - } - &:hover .overlay{ - bottom:50px; - } -} - -#list { - .title{ - color:$color-light; - font-size: calc(#{$globalfont} * 3.25); - } - .is-flex{ - justify-content: space-between; - flex-wrap: wrap; - } - .section-header{ - margin-bottom:50px; - color:$color-light; - .title{ - margin-bottom:5px; - } - .content{ - top:30px; - padding-left:30px; - padding-right:30px; - } - } -} - -.overlay{ - background-color: rgba($color-brown, .8); - span{ - color:$color-brown; - } -} - -.is-brown{ - header .content{ - background-color: rgba($color-brown, .8); - } - .overlay{ - background-color: rgba($color-brown, .8); - } - .product-card{ - .overlay{ - span{ - color:$color-brown; - } - } - } -} - -.is-orange{ - header .content{ - background-color: rgba($color-orange, .8); - } - .overlay{ - background-color: rgba($color-orange, .8); - } - .product-card{ - .overlay{ - span{ - color:$color-orange; - } - } - } -} - -.is-grey{ - header .content{ - background-color: rgba($color-newgrey, .8); - } - .overlay{ - background-color: rgba($color-newgrey, .8); - } - .product-card{ - .overlay{ - span{ - color:$color-newgrey; - } - } - } -} - -.is-yellow{ - header .content{ - background-color: rgba($color-main, .8); - } - .overlay{ - background-color: rgba($color-main, .8); - } - .product-card{ - .overlay{ - span{ - color:$color-main; - } - } - } - .gamme-card{ - .overlay{ - span{ - color:$color-light; - } - } - } -} - -.is-blue{ - header .content{ - background-color: rgba($color-newblue, .8); - } - .overlay{ - background-color: rgba($color-newblue, .8); - } - .product-card{ - .overlay{ - span{ - color:$color-newblue; - } - } - } -} - -.is-green{ - header .content{ - background-color: rgba($color-green, .8); - } - .overlay{ - background-color: rgba($color-green, .8); - } - .product-card{ - .overlay{ - span{ - color:$color-green; - } - } - } -} - -.is-pink{ - header .content{ - background-color: rgba($color-pink, .8); - } - .overlay{ - background-color: rgba($color-pink, .8); - } - .product-card{ - .overlay{ - span{ - color:$color-pink; - } - } - } -} - -#posts{ - position:relative; - - .sectiontitle:after { - content: ""; - background-color: $color-dark; - } -} - -@media (min-width:769px){ - .product-card{ - width:32%; - max-width:32%; - } - - .gamme-card{ - width:32%; - max-width:32%; - &:nth-child(4), - &:nth-child(5){ - width:49%; - max-width:49%; - } - } - - .post-card{ - flex:1; - margin-right:30px; - - &:last-child{ - margin-right:0; - } - } - - #list { - .section-header{ - .content{ - position:absolute; - } - } - } - #posts{ - > img{ - position:absolute; - top:0; - left:0; - height:50%; - z-index:-1; - object-fit: cover; - } - } -} - -@media (max-width:768px){ - #list { - .section-header{ - .content{ - position:relative; - } - } - } - #posts{ - > img{ - position:absolute; - top:0; - left:0; - height:14%; - z-index:-1; - object-fit: cover; - } - } - .posts-list .post-card{ - margin-bottom:50px; - } -} \ No newline at end of file diff --git a/resources/sass/_menu.scss b/resources/sass/_menu.scss deleted file mode 100644 index 9fc9e7c..0000000 --- a/resources/sass/_menu.scss +++ /dev/null @@ -1,173 +0,0 @@ -.menu-overlay__checkbox { - display: none; -} - -@media screen and (min-width: 800px){ - .menu{ - width:40%; - margin-left:300px; - text-transform:uppercase; - - &-overlay__btn{ - display: none; - } - - .menu__list{ - display:flex; - justify-content:space-between; - } - - a{ - display:inline-block; - color:$color-blue; - text-decoration:none; - &:hover{ - color:$color-second; - } - &.active{ - position:relative; - color:$color-second; - } - &.active:before{ - content:""; - position:absolute; - top:-60px; - left:0; - right:0; - width:75px; - height:4px; - margin-left:auto; - margin-right:auto; - background-color: $color-main; - } - } - - .only-smrt{ - display:none; - } - } -} - -@media screen and (max-width: 799px){ - .menu{ - order:2; - - .only-smrt a{ - color:$color-second; - } - - label { - display: flex; - align-items:flex-start; - justify-content: center; - position: fixed; - width: 2.8em; - height: 2.8em; - z-index: 9999; - } - - &__list{ - display: none; - } - - &__item{ - padding:1em; - border-bottom:solid 1px $color-dark; - &:last-child{ - border-bottom-width:0; - } - } - - .menu-overlay{ - position:fixed; - display:flex; - right:0; - z-index:100; - - &__icon { - display: block; - position: relative; - width: 1.5em; - height: .1em; - background: $color-light; - transition: .4s; - - &:after, - &:before { - content: ""; - display: block; - position: absolute; - width: 100%; - height: .1em; - background: $color-light; - border-radius:2em; - transition: .4s; - } - - &:before { - top: -10px; - } - - &:after { - top: 10px; - } - } - - &__btn{ - display: flex; - justify-content:center; - align-items:center; - top:0; - right:20px; - justify-content: center; - cursor: pointer; - } - - &__checkbox { - &:checked~.menu-overlay__btn .menu-overlay__icon { - background: 0 0; - } - - &:checked~.menu-overlay__btn .menu-overlay__icon::before { - transform: rotate(45deg); - } - - &:checked~.menu-overlay__btn .menu-overlay__icon::after { - transform: rotate(-45deg); - } - - &:checked~.menu-overlay__btn .menu-overlay__icon::after, - &:checked~.menu-overlay__btn .menu-overlay__icon::before { - top: 0; - } - - &:checked~.menu__list { - display:flex; - flex-direction: column; - position:fixed; - top:50px; - left:0; - width:100%; - padding-top:1em; - padding-left:1em; - padding-right:1em; - text-transform: uppercase; - background-color:$color-light; - transition-delay: 0s; - box-shadow: 0 2px 8px rgba($color-dark, .20); - } - } - } - } -} - -.secondmenu{ - display:flex; - justify-content:flex-end; -} - -@media screen and (max-width: 799px) { - .secondmenu{ - margin-right: 3em; - } -} \ No newline at end of file diff --git a/resources/sass/_utils.scss b/resources/sass/_utils.scss deleted file mode 100644 index 55453c6..0000000 --- a/resources/sass/_utils.scss +++ /dev/null @@ -1,93 +0,0 @@ -.align-center{ - text-align:center; -} - -.align-left{ - text-align:left; -} - -.bold{ - font-weight:bold; -} - -.ttu{ - text-transform:uppercase; -} - -.has-bckg--grey{ - background-color:#f5f5f5; -} - -.is-flex{ - display:flex; - &.vertical-center{ - align-items:center; - } - &.start{ - align-items:flex-start; - } - &.wrap{ - flex-wrap:wrap; - } - &.space-between{ - justify-content:space-between; - } -} - -.is-small{ - margin-top:35px; - margin-bottom:35px; - font-size:12px; -} - -.p-rel{ - position:relative; -} - -.p-abs{ - position:absolute; -} - -.color-red{ - color:$color-second; -} - -.color-blue{ - color:$color-blue; -} - -.color-yellow{ - color:$color-main; -} - -.font-size-medium { - font-size:45px; -} - -@media screen and (min-width: 800px){ - .is-flex .w50{ - flex-basis:50%; - &:nth-child(2){ - margin-left:35px; - } - } - - .is-flex .w100{ - flex-basis:100%; - &:nth-child(1){ - padding-right:185px; - } - &:nth-child(2){ - margin-left:35px; - } - } -} - -@media screen and (max-width: 799px){ - .is-flex{ - flex-direction: column; - } - .smrt-align-center{ - text-align:center; - } -} \ No newline at end of file diff --git a/resources/sass/_variables.scss b/resources/sass/_variables.scss index 7123479..014452d 100644 --- a/resources/sass/_variables.scss +++ b/resources/sass/_variables.scss @@ -1,18 +1,22 @@ -$color-light: #fff !default; -$color-dark: #0c1417 !default; -$color-main: #fccf1d !default; -$color-second: #ff0400 !default; +// NAVBAR +$topNavHeight: 3rem; -$color-grey: #888 !default; -$color-blue: #222f5c !default; -$color-brown: #8b4437 !default; -$color-green: #85b83f !default; -$color-pink: #be366c !default; -$color-orange: #d36500 !default; -$color-newgrey: #cba583 !default; -$color-newblue: #98c1e8 !default; +// Body +$body-bg: #f8fafc; -$globalfont: 18px; +// Typography +$font-family-sans-serif: "Nunito", sans-serif; +$font-size-base: 0.9rem; +$line-height-base: 1.6; -$fontbarlow-regular: "barlow-regular", arial, sans-serif; -$fontbarlow-bold: "barlow-bold", arial, sans-serif; +// Colors +$blue: #3490dc; +$indigo: #6574cd; +$purple: #9561e2; +$pink: #f66d9b; +$red: #e3342f; +$orange: #f6993f; +$yellow: #ffed4a; +$green: #38c172; +$teal: #4dc0b5; +$cyan: #6cb2eb; diff --git a/resources/sass/back.scss b/resources/sass/back.scss new file mode 100644 index 0000000..1d62007 --- /dev/null +++ b/resources/sass/back.scss @@ -0,0 +1,5 @@ +@import "_import"; + +@import "layouts/backend/top_nav"; + +@import "vue-select/src/scss/vue-select.scss"; diff --git a/resources/sass/frontend/_animate.scss b/resources/sass/frontend/_animate.scss new file mode 100644 index 0000000..037e3aa --- /dev/null +++ b/resources/sass/frontend/_animate.scss @@ -0,0 +1,6 @@ +.animate__animated { + opacity: 0; +} +.animate__animated.reveal-visible { + opacity: 1; +} diff --git a/resources/sass/_carrousel.scss b/resources/sass/frontend/_carrousel.scss similarity index 55% rename from resources/sass/_carrousel.scss rename to resources/sass/frontend/_carrousel.scss index 71a0038..9349994 100644 --- a/resources/sass/_carrousel.scss +++ b/resources/sass/frontend/_carrousel.scss @@ -1,9 +1,49 @@ -#carrousel1 { +.jumbotron { font-family: $fontbarlow-bold; + position: relative; + z-index: 1; + overflow: hidden; + + img { + transition: transform 0.3s ease-in-out; + + &.zoomed { + transform: scale(1.05); + } + } + .item__title { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + width: max-content; + display: flex; + align-items: center; + justify-content: center; + color: $color-light; + &:before, + &:after { + content: ""; + position: absolute; + height: 60%; + background-color: $color-light; + box-shadow: 0 2px 8px rgba($color-dark, 0.6); + } + &:before { + left: 0; + } + &:after { + right: 0; + } + } +} + +#carrousel1 { .carrousel { - padding-bottom: 1.5em; + // padding-bottom: 1.5em; overflow: hidden; outline-color: transparent; + .carrousel__container { transition: transform 0.3s; transform: translateZ(0); @@ -23,6 +63,7 @@ align-items: center; justify-content: center; position: relative; + img { display: block; width: 100%; @@ -42,34 +83,35 @@ .item__image { width: 100%; + overflow: hidden; } - .item__body { - position: absolute; - text-shadow: 0 2px 8px rgba($color-dark, 0.6); - } + // .item__body { + // position: absolute; + // text-shadow: 0 2px 8px rgba($color-dark, 0.6); + // } - .item__title { - position: relative; - display: flex; - align-items: center; - justify-content: center; - color: $color-light; - &:before, - &:after { - content: ""; - position: absolute; - height: 60%; - background-color: $color-light; - box-shadow: 0 2px 8px rgba($color-dark, 0.6); - } - &:before { - left: 0; - } - &:after { - right: 0; - } - } + // .item__title { + // position: relative; + // display: flex; + // align-items: center; + // justify-content: center; + // color: $color-light; + // &:before, + // &:after { + // content: ""; + // position: absolute; + // height: 60%; + // background-color: $color-light; + // box-shadow: 0 2px 8px rgba($color-dark, 0.6); + // } + // &:before { + // left: 0; + // } + // &:after { + // right: 0; + // } + // } .item__link { display: inline-flex; @@ -158,36 +200,59 @@ @media screen and (min-width: 800px) { #carrousel1 { - .carrousel { - .item__title { - width: 770px; - font-size: 60px; - &:before, - &:after { - content: ""; - width: 7px; - } - } - } + // .carrousel { + // .item__title { + // width: 770px; + // font-size: 60px; + // &:before, + // &:after { + // content: ""; + // width: 7px; + // } + // } + // } .carrousel__pagination { display: block; } } -} - -@media screen and (max-width: 799px) { - #carrousel1 { - .carrousel { - .item__title { - padding-left: 1em; - padding-right: 1em; - font-size: 26px; - &:before, - &:after { - content: ""; - width: 4px; - } + .jumbotron { + .item__title { + width: 770px; + font-size: 60px; + &:before, + &:after { + content: ""; + width: 7px; + } + } + } +} + +@media screen and (max-width: 799px) { + // #carrousel1 { + // .carrousel { + // .item__title { + // padding-left: 1em; + // padding-right: 1em; + // font-size: 26px; + // &:before, + // &:after { + // content: ""; + // width: 4px; + // } + // } + // } + // } + .jumbotron { + .item__title { + padding-left: 1em; + padding-right: 1em; + font-size: 26px; + &:before, + &:after { + content: ""; + width: 4px; } } } diff --git a/resources/sass/_carrousel2.scss b/resources/sass/frontend/_carrousel2.scss similarity index 99% rename from resources/sass/_carrousel2.scss rename to resources/sass/frontend/_carrousel2.scss index 834fff8..524d681 100644 --- a/resources/sass/_carrousel2.scss +++ b/resources/sass/frontend/_carrousel2.scss @@ -1,5 +1,7 @@ /*POSTS*/ #carrousel2 { + margin-top: 2rem; + .carrousel { padding-bottom: 1.5em; overflow: hidden; diff --git a/resources/sass/_custom.scss b/resources/sass/frontend/_custom.scss similarity index 71% rename from resources/sass/_custom.scss rename to resources/sass/frontend/_custom.scss index a7c0f3c..e3ea71b 100644 --- a/resources/sass/_custom.scss +++ b/resources/sass/frontend/_custom.scss @@ -1,9 +1,11 @@ .jumbotron { + position: relative; display: flex; align-items: center; justify-content: center; .maintitle { position: absolute; + max-width: 100%; color: $color-light; text-align: center; text-shadow: 0 2px 8px rgba($color-dark, 0.6); @@ -21,6 +23,9 @@ border-radius: 50%; } } + img { + max-width: 100%; + } } #products, @@ -39,38 +44,55 @@ } #products { + .sectiontitle h2 { + margin-bottom: 0; + } .sectiontitle:after { content: ""; background-color: $color-dark; } > img { - height: 80%; + max-height: 80%; } .product-item { display: flex; align-items: center; flex: 1; margin-right: 60px; - transition: transform 0.2s; /* Animation */ + transition: transform 0.7s; /* Animation */ + &:last-child { margin-right: 0; } &:hover { transform: scale(1.1); } + & img { + width: 265px; + } } .products-list { margin-top: 20px; } } - +#product-food { + .sectiontitle:after { + content: ""; + background-color: $color-dark; + } +} #values { .sectiontitle:after { content: ""; background-color: $color-dark; } + .sectiontitle.white-line:after, + .header-title.white-line:after { + background-color: white; + } > img { height: 110%; + max-width: 100%; } ul { display: flex; @@ -88,7 +110,9 @@ justify-content: center; align-items: center; flex: 1; + padding: 10px; font-family: $fontbarlow-bold; + img { width: 70px; height: 70px; @@ -100,6 +124,8 @@ } #reassurances { + margin-bottom: 60px; + ul { display: flex; flex-wrap: wrap; @@ -120,11 +146,17 @@ color: $color-second; font-size: calc(#{$globalfont} * 4); } +} - .reassurance-item { - margin-top: 30px; - margin-bottom: 30px; - } +.video-wrapper { + display: none; +} + +.cuisto { + display: none; + position: absolute; + left: 0; + top: 0; } .plan, @@ -139,7 +171,9 @@ line-height: 1.5; } } - +.advice-img { + min-width: 270px; +} // .plan:before { // content: url("~@/images/icon-plan.png"); // position: absolute; @@ -198,6 +232,10 @@ .blue .featured-link { color: $color-second; } +.blue-bg .featured-link { + background-image: url(~@/images/food-service-active.png); + background-position: center top; +} .best { display: flex; @@ -213,6 +251,23 @@ margin-bottom: 50px; } +.has-label { + position: relative; + &:before { + content: ""; + position: absolute; + right: 20px; + top: unset; + bottom: -280px; + width: 11vw; + height: 15vw; + max-width: 130px; + background-image: url(~@/images/Logo_MadeInFrance.jpg); + background-repeat: no-repeat; + background-size: contain; + } +} + @media screen and (min-width: 800px) { .jumbotron .maintitle { font-size: calc(#{$globalfont} * 3.25); @@ -223,23 +278,20 @@ } } .has-label { - position: relative; &:before { - content: url(~@/images/Logo_MadeInFrance.jpg); - position: absolute; - right: -150px; - top: 50px; - } - } - .has-label-bis { - position: relative; - &:before { - content: url(~@/images/Logo_MadeInFrance.jpg); - position: absolute; - right: 0px; - top: -50px; + top: 25px; + bottom: unset; } } + // .has-label-bis { + // position: relative; + // &:before { + // content: url(~@/images/Logo_MadeInFrance.jpg); + // position: absolute; + // right: 0px; + // top: -50px; + // } + // } // .has-labels { // padding-top: 30px; // &:after { @@ -271,14 +323,21 @@ } .featured-link { bottom: -63px; - right: -190px; - width: 145px; - padding-top: 25px; + right: -250px; + width: 280px; + padding-top: 37px; padding-bottom: 35px; line-height: 1; color: $color-blue; background-image: url(~@/images/food-service.png); background-repeat: no-repeat; + background-position: center 12px; + // transition: background-position 0.3s ease-in-out; + + &:hover { + background-image: url(~@/images/food-service-active.png); + background-position: center top; + } } .featured-link span { display: block; @@ -299,12 +358,21 @@ .desk-mt180 { margin-top: 180px; } + .desk-mr10 { + margin-right: 10px; + } .desk-mr18 { margin-right: 80px; } + .desk-mt-n15 { + margin-top: -15px; + } .desk-mt-n80 { margin-top: -80px; } + .desk-mt-n95 { + margin-top: -95px; + } .desk-ml-150 { margin-left: 150px; } @@ -314,6 +382,9 @@ .desk-mt50 { margin-top: 50px; } + .desk-mb-50 { + margin-bottom: 50px !important; + } .desk-mb-80 { margin-bottom: 80px !important; } @@ -329,11 +400,12 @@ span:first-of-type { margin-right: 10px; color: $color-second; - font-size: 90px; + font-size: 6vw; } span:nth-of-type(2) { + margin-top: 1rem; color: $color-blue; - font-size: 55px; + font-size: 4vw; } } .reduice-img img { @@ -343,39 +415,67 @@ } } +@media screen and (min-width: 1024px) { + .cuisto { + display: block; + } +} + +@media screen and (min-width: 1200px) { + .best { + span:first-of-type { + font-size: 90px; + } + span:nth-of-type(2) { + font-size: 55px; + } + } +} + @media screen and (max-width: 799px) { .jumbotron .maintitle { - font-size: calc(#{$globalfont} * 1.8); + font-size: calc(#{$globalfont} * 1.6); } .blue { > .menu .menu__item a { color: $color-light; } } + #products .product-item { + margin-right: 0; + + img { + margin: 1rem auto; + } + } #values ul { flex-direction: column; align-items: center; } .has-label { - position: relative; + // position: relative; &:before { - content: url(~@/images/Logo_MadeInFrance_mobile.jpg); - position: absolute; - right: 0; - left: 0; - top: 300px; - } - } - .has-label-bis { - position: relative; - &:before { - content: url(~@/images/Logo_MadeInFrance_mobile.jpg); - position: absolute; - right: 0; - left: 0; - top: 100px; + // content: url(~@/images/Logo_MadeInFrance_mobile.jpg); + // position: absolute; + width: 130px; + height: 190px; + right: unset; + left: 50%; + transform: translateX(-50%); + top: unset; + bottom: -285px; } } + // .has-label-bis { + // position: relative; + // &:before { + // content: url(~@/images/Logo_MadeInFrance_mobile.jpg); + // position: absolute; + // right: 0; + // left: 0; + // top: 100px; + // } + // } // .has-labels { // padding-bottom: 80px; // &:after { @@ -398,6 +498,9 @@ flex-direction: column; } } + .reassurance-item:not(:first-child) { + margin-top: 30px; + } #values .values-list { margin-top: 50px; flex-wrap: wrap; diff --git a/resources/sass/_fonts.scss b/resources/sass/frontend/_fonts.scss similarity index 66% rename from resources/sass/_fonts.scss rename to resources/sass/frontend/_fonts.scss index bd80077..22d28cb 100644 --- a/resources/sass/_fonts.scss +++ b/resources/sass/frontend/_fonts.scss @@ -13,3 +13,10 @@ $font-path: "~@/fonts"; src: url("#{$font-path}/barlow/Barlow-Bold.woff2") format("woff2"), url("#{$font-path}/barlow/Barlow-Bold.woff") format("woff"); } + +@font-face { + font-family: "cocon-regular"; + font-weight: normal; + src: url("#{$font-path}/cocon/cocon-regular-webfont.woff2") format("woff2"), + url("#{$font-path}/cocon/cocon-regular-webfont.woff") format("woff"); +} diff --git a/resources/sass/frontend/_footer.scss b/resources/sass/frontend/_footer.scss new file mode 100644 index 0000000..fe89165 --- /dev/null +++ b/resources/sass/frontend/_footer.scss @@ -0,0 +1,119 @@ +#picto-localisation { + left: -40px; + width: 25px; + height: 34px; + margin-right: 30px; + + .cls-1 { + fill: #131414; + } + .cls-2 { + fill: transparent; + } +} +.footer-widgets { + align-items: center; + .footer-widgets__content { + left: 20%; + right: 0; + top: 50%; + transform: translateY(-50%); + + &.white-color { + p { + color: white; + } + #picto-localisation { + .cls-1 { + fill: white; + } + } + } + } + img { + max-width: 100%; + } +} + +.footer-content { + color: $color-light; + font-size: 15px; + background-color: $color-main; + + &.blue-bg { + background-color: $color-blue; + } + + ul { + margin-bottom: 25px; + } + + a { + color: $color-light; + text-decoration: none; + } +} + +.banner.footer { + top: -1px; + transform: rotate(180deg); +} + +@media screen and (min-width: 800px) { + .footer-content { + ul { + li { + display: inline-block; + margin-left: 10px; + margin-right: 10px; + &:first-child { + margin-left: 0; + } + &:last-child { + margin-right: 0; + } + } + } + } +} + +@media screen and (max-width: 799px) { + .footer-widgets { + height: 200px; + img { + height: 100%; + object-fit: cover; + opacity: 0.2; + } + .footer-widgets__content { + text-align: center; + left: 50%; + top: unset; + transform: translateX(-50%); + bottom: 20px; + + #picto-localisation { + top: -40px; + left: 50%; + transform: translateX(-50%); + } + &.white-color { + p { + color: black; + } + #picto-localisation { + .cls-1 { + fill: black; + } + } + } + } + } + .footer-content { + ul { + li { + margin-bottom: 10px; + } + } + } +} diff --git a/resources/sass/frontend/_form.scss b/resources/sass/frontend/_form.scss new file mode 100644 index 0000000..c1c367d --- /dev/null +++ b/resources/sass/frontend/_form.scss @@ -0,0 +1,268 @@ +form { + font-size: 16px; +} + +input[type="text"] { + border: 0 none; +} + +input[type="submit"] { + min-width: 180px; + padding: 15px; + color: $color-main; + background-color: transparent; + font-weight: bold; + text-align: center; + text-transform: uppercase; + border: 1px solid $color-main; +} + +.newsletter input[type="text"], +input[type="submit"] { + border-radius: 30px; +} + +input[type="submit"] { + cursor: pointer; + &:hover { + color: $color-light; + background-color: $color-main; + } +} + +input[type="text"], +input[type="number"], +input[type="mail"] { + padding: 15px; + font-size: 15px; + border: 0 none; + outline-color: #efefef; +} + +textarea { + width: 100%; + max-width: 100%; + margin-top: 30px; + margin-bottom: 30px; +} + +.form-row { + display: flex; + padding-top: 30px; + padding-bottom: 30px; +} + +.form-group { + display: flex; + padding-bottom: 2px; + width: 100%; + max-width: 100%; + border-bottom: solid 1px $color-dark; + input[type="text"], + input[type="number"], + input[type="mail"] { + flex-grow: 2; + } + &:first-of-type { + margin-left: 0; + } + &:last-of-type { + margin-right: 0; + } +} +.country, +.drom { + width: 50%; + + select { + width: 100%; + border: none; + border-bottom-color: currentcolor; + border-bottom-style: none; + border-bottom-width: medium; + border-bottom: 1px solid black; + padding-bottom: 1rem; + } +} +.country { + margin-right: 15px; +} +fieldset { + margin-top: 45px; + border: 0 none; + legend { + margin-bottom: 30px; + font-weight: bold; + } +} + +/*CUSTOM RADIO*/ +.radio-label { + position: relative; + padding-left: 20px; + margin-right: 25px; + // color:#999999; + cursor: pointer; +} + +/* Hide the browser's default radio button */ +.radio-label input { + appearance: none; +} + +/* Create a custom radio button */ +.checkmark { + position: absolute; + top: 3px; + left: 0; + right: 10px; + height: 12px; + width: 12px; + background-color: $color-light; + border: solid 1px $color-main; + border-radius: 50%; +} + +/* On mouse-over, add a grey background color */ +.radio-label:hover input ~ .checkmark { + background-color: $color-main; +} + +/* When the radio button is checked, add a blue background */ +.radio-label input:checked ~ .checkmark { + background-color: $color-light; +} + +/* Create the indicator (the dot/circle - hidden when not checked) */ +.checkmark:after { + content: ""; + position: absolute; + display: none; +} + +/* Show the indicator (dot/circle) when checked */ +.radio-label input:checked ~ .checkmark:after { + display: block; +} + +/* Style the indicator (dot/circle) */ +.radio-label .checkmark:after { + top: 2px; + left: 2px; + width: 6px; + height: 6px; + border-radius: 50%; + background-color: $color-main; +} + +/*CUSTOM CHECKBOX*/ +.ck-button { + margin-bottom: 45px; +} +.ck-button label { + margin-right: 10px; + &:last-child { + margin-right: 0; + } +} + +.ck-button label span { + padding: 10px; + margin-right: 10px; + border: 1px solid $color-dark; + border-radius: 40px; + cursor: pointer; + &:last-child { + margin-right: 0; + } + &:hover { + color: $color-light; + border-color: $color-main; + background-color: $color-main; + } +} + +.ck-button label input { + position: absolute; + left: -20px; +} + +.ck-button input:checked + span { + background-color: $color-main; + color: $color-light; + border-color: $color-light; +} + +/*CUSTOM FORM*/ +.swap { + visibility: hidden; +} + +.swap:after { + cursor: pointer; + visibility: visible; + content: ""; + font-size: calc(var(--swap-size) - 2.5rem); + display: inline-block; + width: var(--swap-size); + height: var(--swap-size); + padding: 0.5rem; + border: 1px solid $color-main; + border-radius: 0.4em; + background-color: $color-light; + display: flex; + justify-content: center; + align-items: center; +} + +.swap:checked:after { + content: ""; + background-color: $color-main; +} + +@media screen and (min-width: 800px) { + .newsletter input[type="text"] { + width: 430px; + } + .form-group { + align-items: center; + margin-left: 15px; + margin-right: 15px; + } +} + +@media screen and (max-width: 799px) { + input[type="text"], + input[type="submit"] { + display: block; + margin-left: auto; + margin-right: auto; + } + + form, + input[type="text"] { + width: 100%; + max-width: 100%; + } + + input[type="submit"] { + margin-top: 25px; + } + + .form-row, + .form-group { + flex-direction: column; + } + + .form-group { + margin-bottom: 25px; + &:last-child { + margin-bottom: 0; + } + } + + .ck-button label span { + display: inline-block; + margin-bottom: 5px; + } +} diff --git a/resources/sass/frontend/_globals.scss b/resources/sass/frontend/_globals.scss new file mode 100644 index 0000000..7b2f0af --- /dev/null +++ b/resources/sass/frontend/_globals.scss @@ -0,0 +1,260 @@ +html { + font-size: 100%; +} + +body { + font-size: $globalfont; + font-family: $fontbarlow-regular; + line-height: 1.4; +} + +button { + border: 0 none; + background-color: transparent; + cursor: pointer; +} + +img { + width: 100%; + max-width: max-content; +} + +#frise-autoscroll { + position: absolute; + width: 100%; + height: 100%; + + .img-frise { + position: relative; + width: max-content; + margin: 0 auto; + display: flex; + flex-direction: column; + + svg { + width: 272px; + height: 1280px; + position: relative; + } + + & svg:first-child { + top: -40px; + } + & svg:nth-child(2) { + top: -100px; + } + & svg:nth-child(3) { + top: -160px; + } + + .svg-mask { + position: sticky; + width: 100%; + height: 100px; + bottom: 0; + background-image: linear-gradient( + to top, + #ffffff, + #ffffff, + #ffffff, + transparent + ); + } + } +} + +#backtotop { + display: none; + align-items: center; + justify-content: center; + position: fixed; + bottom: 20px; + right: 20px; + width: 40px; + height: 40px; + border-radius: 40px; + background-color: $color-main; + z-index: 99; + + .arrow { + border: solid $color-light; + border-width: 0 3px 3px 0; + display: inline-block; + padding: 3px; + &.up { + transform: rotate(-135deg); + } + } +} + +#search { + width: 24px; + height: 24px; + margin-left: 15px; + cursor: pointer; +} + +.product ul.more li { + width: max-content; + max-width: 100%; + + p:first-of-type { + font-size: 18px; + + &::before { + top: 50%; + transform: translateY(-50%); + } + } +} +.product .img-bloc { + position: relative; + + &::after { + content: ""; + display: none; + background-image: url(~@/images/picto_halal.png); + background-size: contain; + background-repeat: no-repeat; + position: absolute; + right: 0; + bottom: 0; + width: 25%; + height: 25%; + } + &.view-halal::after { + display: block; + } +} +ul.more { + margin-top: 50px; + + li { + align-items: center; + position: relative; + padding-left: 25px; + // margin-bottom: 30px; + width: 100%; + + &:last-of-type { + margin-bottom: 0; + } + p:first-of-type { + position: relative; + font-size: 26px; + + &::before { + content: ""; + position: absolute; + left: -2rem; + top: 20px; + width: 10px; + height: 10px; + background-color: $color-blue; + border-radius: 50%; + } + } + .label img { + width: 100px; + } + } +} + +ul.infos { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + li { + width: 110px; + padding: 10px; + text-align: center; + color: $color-blue; + font-family: $fontbarlow-bold; + } + span { + display: flex; + justify-content: center; + align-items: center; + width: 85px; + height: 85px; + padding: 20px; + margin: 20px auto; + background-color: $color-main; + border-radius: 50%; + } +} +.offset-anchor { + position: relative; + top: -100px; +} +.banner { + position: absolute; + bottom: -1px; + height: 50px; + width: 100%; + + svg { + position: absolute; + bottom: 0; + } +} +.contact-page { + position: relative; + align-items: center; + + #picto-localisation { + left: 50%; + transform: translateX(-50%); + top: 0; + margin-right: 0; + } + & > p { + width: 100%; + text-align: center; + } + @media screen and (min-width: 768px) { + #picto-localisation { + top: 5%; + } + } + @media screen and (min-width: 1024px) { + & > p { + width: unset; + // text-align: initial; + } + // #picto-localisation { + // margin-right: 30px; + // } + } +} + +@media screen and (min-width: 480px) { + ul.infos { + flex-direction: row; + align-items: initial; + } +} + +@media screen and (min-width: 800px) { + #search { + width: 28px; + height: 28px; + margin-left: 25px; + } + main { + padding-top: 100px; + } + ul.infos { + li { + flex-basis: 20%; + } + } +} + +@media screen and (max-width: 799px) { + main { + padding-top: 50px; + } +} diff --git a/resources/sass/frontend/_header.scss b/resources/sass/frontend/_header.scss new file mode 100644 index 0000000..2129ede --- /dev/null +++ b/resources/sass/frontend/_header.scss @@ -0,0 +1,120 @@ +.site-header { + position: fixed; + left: 0; + right: 0; + font-family: $fontbarlow-bold; + background-color: $color-main; + box-shadow: 0 2px 8px rgba($color-dark, 0.15); + z-index: 99; + + svg { + .cls-1 { + fill: #000; + } + .cls-2 { + fill: transparent; + } + } + + &.blue-bg { + background-color: $color-blue; + + svg { + .cls-1 { + fill: #fff; + } + } + } + .wrapper { + display: flex; + align-items: center; + } + + .logotype { + top: 0; + left: 1em; + width: 25%; + z-index: 1; + img { + width: 200px; + } + } + + > span { + width: 25%; + text-align: right; + } + + nav li { + display: inline-block; + } + + nav a { + color: $color-blue; + text-decoration: none; + &:hover { + color: $color-second; + } + &.menu__item--current { + color: $color-second; + } + } + + .traduction { + display: flex; + li { + margin-right: 15px; + a { + font-size: 14px; + color: $color-blue; + text-transform: uppercase; + text-decoration: none; + } + &.current a { + color: $color-second; + } + &:last-of-type { + margin-right: 0; + } + } + } + &.blue-bg .traduction li a { + color: white; + } + &.blue-bg .traduction li.current a { + color: $color-second; + } +} + +@media screen and (min-width: 800px) { + .site-header { + .traduction li a { + font-size: 18px; + } + .wrapper { + justify-content: space-between; + height: 100px; + } + &.blue-bg { + nav a:not(.featured-link), + .traduction li a { + color: white; + &:hover { + color: $color-second; + } + } + } + } +} + +@media screen and (max-width: 799px) { + .site-header { + .wrapper { + justify-content: flex-end; + height: 50px; + } + .logotype img { + width: 100px; + } + } +} diff --git a/resources/sass/frontend/_layout.scss b/resources/sass/frontend/_layout.scss new file mode 100644 index 0000000..32a1f46 --- /dev/null +++ b/resources/sass/frontend/_layout.scss @@ -0,0 +1,57 @@ +.container.news { + .sectiontitle { + margin-bottom: 25px; + + h2 { + margin-bottom: 0; + } + } +} +.container { + padding-top: 30px; + padding-bottom: 30px; +} + +@media screen and (min-width: 768px) { + .container { + padding-top: 60px; + padding-bottom: 60px; + } +} + +@media screen and (min-width: 1200px) { + // .container { + // padding-top: 60px; + // padding-bottom: 60px; + // } + .wrapper, + .wrapper-m { + margin-left: auto; + margin-right: auto; + } + .wrapper { + width: 1170px; + max-width: 1170px; + } + .wrapper-m { + width: 900px; + max-width: 900px; + } +} + +@media (max-width: 1199px) { + .wrapper, + .wrapper-m { + width: 100%; + max-width: 100%; + padding-left: 25px; + padding-right: 25px; + } +} + +// @media screen and (max-width: 768px) { +// .container { +// padding-top: 60px; +// padding-bottom: 60px; +// } +// } diff --git a/resources/sass/_links.scss b/resources/sass/frontend/_links.scss similarity index 67% rename from resources/sass/_links.scss rename to resources/sass/frontend/_links.scss index d36d6d4..d8fe30b 100644 --- a/resources/sass/_links.scss +++ b/resources/sass/frontend/_links.scss @@ -23,12 +23,19 @@ } .breadcrumb { - position: absolute; - top: 20px; + --margin-breadcrumb: 50px; + position: relative; + flex-wrap: wrap; + margin-left: var(--margin-breadcrumb); + top: -84px; + //left: 32px; align-items: center; + max-width: 25%; + text-align: initial; color: $color-brown; font-size: calc(#{$globalfont} * 0.85); z-index: 2; + a:first-of-type { margin-right: 5px; } @@ -37,12 +44,20 @@ margin-left: 5px; } &:before { + position: absolute; + left: calc(var(--margin-breadcrumb) * -1); content: url("~@/images/arrow-back.jpg"); - margin-right: 25px; } } @media screen and (max-width: 799px) { + .breadcrumb { + //max-width: 70%; + top: -20px; + right: 0; + justify-content: flex-end; + flex-direction: initial; + } .product-template .breadcrumb { display: none; } diff --git a/resources/sass/frontend/_list.scss b/resources/sass/frontend/_list.scss new file mode 100644 index 0000000..c3882e4 --- /dev/null +++ b/resources/sass/frontend/_list.scss @@ -0,0 +1,429 @@ +.product-card, +.gamme-card { + display: flex; + position: relative; + height: 300px; + margin-bottom: 20px; + overflow: hidden; + > img { + display: block; + width: 100%; + height: 100%; + object-fit: cover; + max-width: none; + } + a { + top: 0; + z-index: 9; + } + .overlay { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + width: 100%; + height: 50%; + font-weight: bold; + transition: bottom 0.4s; + } +} +.product-card > img { + object-fit: contain; +} +.product-card { + .product-card__title, + a { + position: absolute; + right: 0; + bottom: 0; + left: 0; + } + .product-card__title { + padding: 1em 0.2em; + background-color: rgba($color-light, 0.5); + } + .overlay { + bottom: -200px; + span { + width: 50%; + padding-top: 1em; + padding-bottom: 1em; + background-color: $color-light; + border-radius: 2em; + } + } + &:hover .overlay { + bottom: 0; + } +} + +.gamme-card { + .gamme-card__title, + a { + position: absolute; + right: 0; + bottom: 0; + left: 0; + } + .gamme-card__title { + padding: 1em 0.2em; + background-color: rgba($color-light, 0.5); + } + .overlay { + bottom: -50px; + span { + color: $color-light; + font-size: 30px; + font-family: $fontbarlow-bold; + padding-bottom: 50px; + } + } + &:hover .overlay { + bottom: 50px; + } +} + +#list { + .wrapper > div:first-child { + padding-top: 0; + } + .title { + color: $color-light; + font-size: calc(#{$globalfont} * 2); + } + .is-flex { + margin-bottom: 60px; + column-gap: 20px; + flex-wrap: wrap; + flex-direction: initial; + } + .section-header { + // margin-bottom: 30px; + color: $color-light; + + .title { + margin-bottom: 5px; + } + // .content { + // top: 30px; + // padding-left: 30px; + // padding-right: 30px; + // } + & > img { + object-fit: cover; + max-height: 243px; + } + } +} + +.overlay { + span { + color: $color-brown; + // text-shadow: 0px 0px 2px #000; + } +} + +// .is-brown { +// header .content { +// background-color: rgba($color-brown, 0.8); +// } +// .overlay { +// background-color: rgba($color-brown, 0.8); +// } +// .product-card { +// .overlay { +// span { +// color: $color-brown; +// } +// } +// } +// } + +// .is-orange { +// header .content { +// background-color: rgba($color-orange, 0.8); +// } +// .overlay { +// background-color: rgba($color-orange, 0.8); +// } +// .product-card { +// .overlay { +// span { +// color: $color-orange; +// } +// } +// } +// } + +// .is-grey { +// header .content { +// background-color: rgba($color-newgrey, 0.8); +// } +// .overlay { +// background-color: rgba($color-newgrey, 0.8); +// } +// .product-card { +// .overlay { +// span { +// color: $color-newgrey; +// } +// } +// } +// } + +// .is-yellow { +// header .content { +// background-color: rgba($color-main, 0.8); +// } +// .overlay { +// background-color: rgba($color-main, 0.8); +// } +// .product-card { +// .overlay { +// span { +// color: $color-main; +// } +// } +// } +// .gamme-card { +// .overlay { +// span { +// color: $color-light; +// } +// } +// } +// } + +// .is-blue { +// header .content { +// background-color: rgba($color-newblue, 0.8); +// } +// .overlay { +// background-color: rgba($color-newblue, 0.8); +// } +// .product-card { +// .overlay { +// span { +// color: $color-newblue; +// } +// } +// } +// } + +// .is-green { +// header .content { +// background-color: rgba($color-green, 0.8); +// } +// .overlay { +// background-color: rgba($color-green, 0.8); +// } +// .product-card { +// .overlay { +// span { +// color: $color-green; +// } +// } +// } +// } + +// .is-pink { +// header .content { +// background-color: rgba($color-pink, 0.8); +// } +// .overlay { +// background-color: rgba($color-pink, 0.8); +// } +// .product-card { +// .overlay { +// span { +// color: $color-pink; +// } +// } +// } +// } + +#posts { + position: relative; + + .sectiontitle:after { + content: ""; + background-color: $color-dark; + } +} + +.posts-list { + width: 1120px; + margin: 0 auto; + justify-content: center; + align-items: center; + flex-wrap: wrap; + column-gap: 20px; +} +.post-card { + width: 360px; + margin-bottom: 50px; +} + +@media (min-width: 769px) { + #list .title { + font-size: calc(#{$globalfont} * 3.25); + } + .product-card { + width: 32%; + max-width: 32%; + } + .posts-list { + align-items: initial; + } + .gamme-card { + &:nth-child(n) { + width: 32%; + max-width: 32%; + } + } + // .gamme-card { + // &:nth-child(4), + // &:nth-child(5), + // &:nth-child(9), + // &:nth-child(10) { + // width: 49%; + // max-width: 49%; + // } + // } + // .gammes-6 .gamme-card { + // &:nth-child(n) { + // width: 32%; + // max-width: 32%; + // } + // } + .gammes-3 .gamme-card, + .gammes-6 .gamme-card, + .gammes-9 .gamme-card { + &:nth-child(1), + &:nth-child(2), + &:nth-child(3), + &:nth-child(4), + &:nth-child(5), + &:nth-child(6), + &:nth-child(7), + &:nth-child(8), + &:nth-child(9) { + width: 32%; + max-width: 32%; + } + } + .gammes-1 .gamme-card, + .gammes-2 .gamme-card, + .gammes-4 .gamme-card { + &:nth-child(1), + &:nth-child(2), + &:nth-child(3), + &:nth-child(4) { + width: 49%; + max-width: 49%; + } + } + .gammes-5 .gamme-card, + .gammes-8 .gamme-card { + &:nth-child(4), + &:nth-child(5) { + width: 49%; + max-width: 49%; + } + } + .gammes-7 .gamme-card { + &:nth-child(1), + &:nth-child(2), + &:nth-child(6), + &:nth-child(7) { + width: 49%; + max-width: 49%; + } + } + + // .post-card { + // flex: 1; + // margin-right: 30px; + + // &:last-child { + // margin-right: 0; + // } + // } + + #list { + .section-header { + margin-bottom: 80px; + + .content { + position: absolute; + width: 100%; + padding-top: 1rem; + padding-bottom: 1rem; + } + } + } + #posts { + > img { + position: absolute; + top: 0; + left: 0; + // height: 50%; + z-index: -1; + object-fit: cover; + } + } +} + +@media (max-width: 1024px) { + #list { + // .section-header { + // margin-bottom: 80px; + // } + .is-flex { + justify-content: center; + } + } +} + +@media (max-width: 1200px) { + .posts-list { + width: 100%; + } + // .post-card { + // width: 360px; + // margin-bottom: 50px; + // } +} + +@media (max-width: 768px) { + // #list { + // .wrapper > div:not(:last-child) { + // margin-bottom: 2rem; + // } + // .section-header { + // .content { + // position: relative; + // } + // } + // } + #posts { + > img { + position: absolute; + top: 0; + left: 0; + height: 14%; + z-index: -1; + object-fit: cover; + } + } + .post-card { + width: 100%; + max-width: 360px; + } +} + +@media (max-width: 480px) { + #posts > img { + height: 8%; + } +} diff --git a/resources/sass/frontend/_menu.scss b/resources/sass/frontend/_menu.scss new file mode 100644 index 0000000..02cd61f --- /dev/null +++ b/resources/sass/frontend/_menu.scss @@ -0,0 +1,213 @@ +.menu-overlay__checkbox { + display: none; +} +#menu_arrow { + display: none; +} + +@media screen and (min-width: 800px) { + .menu { + width: 40%; + margin-left: 300px; + text-transform: uppercase; + + &-overlay__btn { + display: none; + } + + .menu__list { + display: flex; + justify-content: space-between; + } + + a { + display: inline-block; + color: $color-blue; + text-decoration: none; + &:hover { + color: $color-second; + } + &.active { + position: relative; + color: $color-second; + } + &.active:before { + content: ""; + position: absolute; + top: -60px; + left: 0; + right: 0; + width: 75px; + height: 4px; + margin-left: auto; + margin-right: auto; + background-color: $color-main; + } + } + + .only-smrt { + display: none; + } + } +} + +@media screen and (max-width: 799px) { + .menu { + order: 2; + + .only-smrt a { + color: $color-second; + } + + label { + display: flex; + align-items: flex-start; + justify-content: center; + position: fixed; + width: 2.8em; + height: 2.8em; + z-index: 9999; + } + + &__list { + display: none; + } + + &__link { + display: flex; + justify-content: space-between; + padding: 1em; + border-bottom: solid 1px $color-dark; + &:last-child { + border-bottom-width: 0; + } + #menu_arrow { + display: block; + width: 50px; + height: 19px; + transition: width 0.3s ease-in-out; + } + &:hover #menu_arrow { + width: 12px; + .cnt { + fill: $color-second; + } + } + } + + .menu-overlay { + position: fixed; + display: flex; + right: 0; + z-index: 100; + + &__icon { + display: block; + position: relative; + width: 1.5em; + height: 0.1em; + background: $color-light; + transition: 0.4s; + + &:after, + &:before { + content: ""; + display: block; + position: absolute; + width: 100%; + height: 0.1em; + background: $color-light; + border-radius: 2em; + transition: 0.4s; + } + + &:before { + top: -10px; + } + + &:after { + top: 10px; + } + } + + &__btn { + display: flex; + justify-content: center; + align-items: center; + top: 0; + right: 20px; + justify-content: center; + cursor: pointer; + } + + &__checkbox { + &:checked ~ .menu-overlay__btn .menu-overlay__icon { + background: 0 0; + } + + &:checked ~ .menu-overlay__btn .menu-overlay__icon::before { + transform: rotate(45deg); + } + + &:checked ~ .menu-overlay__btn .menu-overlay__icon::after { + transform: rotate(-45deg); + } + + &:checked ~ .menu-overlay__btn .menu-overlay__icon::after, + &:checked ~ .menu-overlay__btn .menu-overlay__icon::before { + top: 0; + } + + &:checked ~ .menu__list { + display: flex; + flex-direction: column; + position: fixed; + top: 50px; + left: 0; + width: 100%; + padding-top: 1em; + padding-left: 1em; + padding-right: 1em; + text-transform: uppercase; + background-color: $color-light; + transition-delay: 0s; + box-shadow: 0 2px 8px rgba($color-dark, 0.2); + } + } + } + } +} + +.secondmenu { + display: flex; + justify-content: flex-end; + position: relative; + + .search-form { + display: none; + position: absolute; + width: 240px; + right: 0; + top: 40px; + padding: 15px 10px 10px; + border: none; + border-radius: 5px; + box-shadow: 1px 1px 5px 2px #333; + background-color: #fff; + + &.is-visible { + display: initial; + } + .search-form__input { + width: 100%; + border: none; + border-bottom: 1px solid #000; + } + } +} + +@media screen and (max-width: 799px) { + .secondmenu { + margin-right: 3em; + } +} diff --git a/resources/sass/_newsletter.scss b/resources/sass/frontend/_newsletter.scss similarity index 100% rename from resources/sass/_newsletter.scss rename to resources/sass/frontend/_newsletter.scss diff --git a/resources/sass/_punchline.scss b/resources/sass/frontend/_punchline.scss similarity index 100% rename from resources/sass/_punchline.scss rename to resources/sass/frontend/_punchline.scss diff --git a/resources/sass/_resets.scss b/resources/sass/frontend/_resets.scss similarity index 100% rename from resources/sass/_resets.scss rename to resources/sass/frontend/_resets.scss diff --git a/resources/sass/_texts.scss b/resources/sass/frontend/_texts.scss similarity index 56% rename from resources/sass/_texts.scss rename to resources/sass/frontend/_texts.scss index 63517a7..26aa686 100644 --- a/resources/sass/_texts.scss +++ b/resources/sass/frontend/_texts.scss @@ -2,22 +2,30 @@ p { margin-bottom: 10px; } -h1 { +h1, +.page-subtitle, +.header-title { margin-bottom: 25px; + display: flex; + justify-content: center; } h1, -.sectiontitle { +.sectiontitle, +.page-subtitle { position: relative; padding-bottom: 20px; } -.sectiontitle { +.sectiontitle, +.sectiontitle h2 { font-size: 38px; } -h1:not(.maintitle):after, -.sectiontitle:after { +// h1:not(.maintitle):after, +.header-title:after, +.sectiontitle:after, +.page-subtitle:after { content: ""; position: absolute; bottom: 0; @@ -29,30 +37,44 @@ h1:not(.maintitle):after, margin-right: auto; background-color: $color-main; } +.header-title h1 { + margin-bottom: 0; +} +h1.blue-line:not(.maintitle):after, +.sectiontitle.blue-line:after, +.page-subtitle.blue-line:after { + background-color: $color-blue; +} +h1.white-line:not(.maintitle):after, +.sectiontitle.white-line:after, +.page-subtitle.white-line:after { + background-color: white; +} h1:not(.maintitle) { display: inline-block; position: relative; } +.page-subtitle { + //display: block; + position: relative; + margin-left: auto; + margin-right: auto; +} + .maintitle { font-family: $fontbarlow-bold; } .mascotte:before { content: url(~@/images/coq.png); + display: none; position: absolute; left: -450px; bottom: 0; } -.cuisto:before { - content: url(~@/images/cuisto.jpg); - position: absolute; - left: -350px; - top: -50px; -} - .h2 { margin-bottom: 0; font-family: $fontbarlow-regular; @@ -72,9 +94,18 @@ h3:not(.product-card__title) { h3 { font-family: $fontbarlow-bold; } - +h3.product-card__title { + font-family: $fontcocon-regular; +} +@media screen and (min-width: 1024px) { + .mascotte:before { + display: block; + font-size: 48px; + } +} @media screen and (min-width: 800px) { - h1, + h1:not(.title_page), + .page-subtitle, h2 { font-size: 48px; } @@ -87,7 +118,8 @@ h3 { } @media screen and (max-width: 799px) { - h1 { + h1:not(.title_page), + .page-subtitle { font-size: 32px; } h2 { diff --git a/resources/sass/_timeline.scss b/resources/sass/frontend/_timeline.scss similarity index 75% rename from resources/sass/_timeline.scss rename to resources/sass/frontend/_timeline.scss index 2a161f4..861f80b 100644 --- a/resources/sass/_timeline.scss +++ b/resources/sass/frontend/_timeline.scss @@ -1,7 +1,7 @@ .timeline { position: relative; max-width: 1200px; - margin: 0 auto; + margin: 4rem auto 0; .year { display: inline-block; padding: 15px 30px; @@ -21,9 +21,9 @@ margin-right: 20px; } - &:last-child { - padding-bottom: 150px; - } + // &:last-child { + // padding-bottom: 150px; + // } &.special > img { display: block; @@ -31,7 +31,9 @@ margin-bottom: 20px; margin-left: 30%; } - + .step_content { + background-color: #fff; + } .step_title { margin-bottom: 10px; &:nth-child(odd) { @@ -41,7 +43,9 @@ color: $color-blue; } } - + &:not(:last-child) { + margin-bottom: 2rem; + } &:nth-child(odd) .step_title { color: $color-second; } @@ -60,10 +64,14 @@ @media screen and (min-width: 800px) { .timeline { - background-image: url(~@/images/storyline.jpg); - background-repeat: no-repeat; - background-position: top 50px center; + // background-image: url(~@/images/storyline.jpg); + // background-repeat: no-repeat; + // background-position: top 50px center; z-index: 0; + #frise-autoscroll { + // text-align: center; + top: 3rem; + } .step { width: 400px; &.is-flex { @@ -82,6 +90,9 @@ @media screen and (max-width: 799px) { .timeline { + #frise-autoscroll { + display: none; + } .step { width: 100%; &.is-flex { diff --git a/resources/sass/frontend/_utils.scss b/resources/sass/frontend/_utils.scss new file mode 100644 index 0000000..43896f0 --- /dev/null +++ b/resources/sass/frontend/_utils.scss @@ -0,0 +1,133 @@ +.align-center { + text-align: center; +} + +.align-left { + text-align: left; +} +.align-justify { + text-align: justify; +} +.bold { + font-weight: bold; +} +.on-bottom { + z-index: -1; +} +.ttu { + text-transform: uppercase; +} + +.has-bckg--grey { + background-color: #f5f5f5; +} + +.is-flex { + display: flex; + &.vertical-center { + align-items: center; + } + &.horizontal-center { + justify-content: center; + } + &.start { + align-items: flex-start; + } + &.wrap { + flex-wrap: wrap; + } + &.space-between { + justify-content: space-between; + } + &.flex-center { + justify-content: center; + } + &.flex-col { + flex-direction: column; + } +} +.mt-5 { + margin-top: 3rem; +} +.is-small { + margin-top: 35px; + margin-bottom: 35px; + font-size: 12px; +} + +.p-rel { + position: relative; +} + +.p-abs { + position: absolute; +} +#list .p-abs { + position: static; +} +.p-abs.dual-center { + padding-left: 0 !important; + padding-right: 0 !important; + // left: 50% !important; + // top: 50% !important; + // transform: translate(-50%, -50%) !important; +} + +.color-red { + color: $color-second; +} + +.color-blue { + color: $color-blue; +} + +.color-yellow { + color: $color-main; +} + +.font-size-medium { + font-size: 45px; +} + +@media screen and (min-width: 800px) { + #list .p-abs { + position: absolute; + } + .p-abs.dual-center { + left: 50% !important; + top: 50% !important; + transform: translate(-50%, -50%) !important; + } + .is-flex .w25 { + flex-basis: 25%; + } + .is-flex .w50 { + flex-basis: 50%; + &:nth-child(2) { + margin-left: 35px; + } + } + + .is-flex .w100 { + flex-basis: 100%; + &:nth-child(1) { + padding-right: 185px; + } + &:nth-child(2) { + margin-left: 35px; + } + } +} + +@media screen and (max-width: 1024px) { + .is-flex { + flex-direction: column; + } + .blue-products.is-flex { + flex-direction: initial; + justify-content: center; + } + .smrt-align-center { + text-align: center; + } +} diff --git a/resources/sass/frontend/_variables.scss b/resources/sass/frontend/_variables.scss new file mode 100644 index 0000000..53a0368 --- /dev/null +++ b/resources/sass/frontend/_variables.scss @@ -0,0 +1,23 @@ +$color-light: #fff !default; +$color-dark: #0c1417 !default; +$color-main: #fccf1d !default; +$color-second: #ff0400 !default; + +$color-grey: #888 !default; +$color-blue: #222f5c !default; +$color-brown: #8b4437 !default; +$color-green: #85b83f !default; +$color-pink: #be366c !default; +$color-orange: #d36500 !default; +$color-newgrey: #cba583 !default; +$color-newblue: #98c1e8 !default; + +$globalfont: 18px; + +// $fontrubik-normal: "rubik-variable", arial, sans-serif; +// $fontrubik-light: "rubik-light", arial, sans-serif; +// $fontrubik-italic: "rubik-italic", arial, sans-serif; +$fontcocon-regular: "cocon-regular", arial, sans-serif; + +$fontbarlow-regular: "barlow-regular", arial, sans-serif; +$fontbarlow-bold: "barlow-bold", arial, sans-serif; diff --git a/resources/sass/app.scss b/resources/sass/frontend/compile.scss similarity index 64% rename from resources/sass/app.scss rename to resources/sass/frontend/compile.scss index afb229d..692ef79 100644 --- a/resources/sass/app.scss +++ b/resources/sass/frontend/compile.scss @@ -1,4 +1,8 @@ @import "resets"; +// Fonts +// @import url("https://fonts.googleapis.com/css?family=Nunito"); +// // Bootstrap +// @import "~bootstrap/scss/bootstrap"; @import "variables"; @import "fonts"; @@ -16,8 +20,11 @@ @import "list"; @import "punchline"; @import "newsletter"; +@import "animate.css"; +@import "animate"; @import "carrousel"; @import "carrousel2"; @import "timeline"; @import "custom"; +@import "cookies-ldc"; diff --git a/public/css/cookies-ldc.css b/resources/sass/frontend/cookies-ldc.scss similarity index 100% rename from public/css/cookies-ldc.css rename to resources/sass/frontend/cookies-ldc.scss diff --git a/resources/sass/layouts/backend/top_nav.scss b/resources/sass/layouts/backend/top_nav.scss new file mode 100644 index 0000000..86a4c62 --- /dev/null +++ b/resources/sass/layouts/backend/top_nav.scss @@ -0,0 +1,3 @@ +#sidebarTop { + height: $topNavHeight; +} diff --git a/resources/seeds/gammes/131700_1.jpg b/resources/seeds/gammes/131700_1.jpg new file mode 100644 index 0000000..f1e329b Binary files /dev/null and b/resources/seeds/gammes/131700_1.jpg differ diff --git a/resources/seeds/gammes/132505_1.jpg b/resources/seeds/gammes/132505_1.jpg new file mode 100644 index 0000000..9fa7b08 Binary files /dev/null and b/resources/seeds/gammes/132505_1.jpg differ diff --git a/resources/seeds/gammes/88853_1.jpg b/resources/seeds/gammes/88853_1.jpg new file mode 100644 index 0000000..13a6650 Binary files /dev/null and b/resources/seeds/gammes/88853_1.jpg differ diff --git a/resources/seeds/gammes/chicken-franks.jpg b/resources/seeds/gammes/chicken-franks.jpg new file mode 100644 index 0000000..a7b0d8c Binary files /dev/null and b/resources/seeds/gammes/chicken-franks.jpg differ diff --git a/resources/seeds/gammes/entete-minis.jpg b/resources/seeds/gammes/entete-minis.jpg new file mode 100644 index 0000000..62e996f Binary files /dev/null and b/resources/seeds/gammes/entete-minis.jpg differ diff --git a/resources/seeds/gammes/entete-pret-a-cuire.jpg b/resources/seeds/gammes/entete-pret-a-cuire.jpg new file mode 100644 index 0000000..356b632 Binary files /dev/null and b/resources/seeds/gammes/entete-pret-a-cuire.jpg differ diff --git a/resources/seeds/gammes/entete-volaille.jpg b/resources/seeds/gammes/entete-volaille.jpg new file mode 100644 index 0000000..1fe88b7 Binary files /dev/null and b/resources/seeds/gammes/entete-volaille.jpg differ diff --git a/resources/seeds/gammes/entete_chicken-franks.jpg b/resources/seeds/gammes/entete_chicken-franks.jpg new file mode 100644 index 0000000..8a13711 Binary files /dev/null and b/resources/seeds/gammes/entete_chicken-franks.jpg differ diff --git a/resources/seeds/gammes/gamme_volaille.jpg b/resources/seeds/gammes/gamme_volaille.jpg new file mode 100644 index 0000000..2a629a3 Binary files /dev/null and b/resources/seeds/gammes/gamme_volaille.jpg differ diff --git a/resources/seeds/moments/1933.jpg b/resources/seeds/moments/1933.jpg new file mode 100644 index 0000000..2237ce8 Binary files /dev/null and b/resources/seeds/moments/1933.jpg differ diff --git a/resources/seeds/moments/1955.jpg b/resources/seeds/moments/1955.jpg new file mode 100644 index 0000000..2bd68a3 Binary files /dev/null and b/resources/seeds/moments/1955.jpg differ diff --git a/resources/seeds/moments/1961.jpg b/resources/seeds/moments/1961.jpg new file mode 100644 index 0000000..4e91552 Binary files /dev/null and b/resources/seeds/moments/1961.jpg differ diff --git a/resources/seeds/moments/1980.jpg b/resources/seeds/moments/1980.jpg new file mode 100644 index 0000000..6dee9be Binary files /dev/null and b/resources/seeds/moments/1980.jpg differ diff --git a/resources/seeds/moments/1992.jpg b/resources/seeds/moments/1992.jpg new file mode 100644 index 0000000..bf65f8a Binary files /dev/null and b/resources/seeds/moments/1992.jpg differ diff --git a/resources/seeds/moments/1992_bis.jpg b/resources/seeds/moments/1992_bis.jpg new file mode 100644 index 0000000..0d1fee9 Binary files /dev/null and b/resources/seeds/moments/1992_bis.jpg differ diff --git a/resources/seeds/moments/2018.jpg b/resources/seeds/moments/2018.jpg new file mode 100644 index 0000000..67b9b9e Binary files /dev/null and b/resources/seeds/moments/2018.jpg differ diff --git a/resources/seeds/moments/2021.jpg b/resources/seeds/moments/2021.jpg new file mode 100644 index 0000000..8d12df5 Binary files /dev/null and b/resources/seeds/moments/2021.jpg differ diff --git a/resources/seeds/moments/88832_2.png b/resources/seeds/moments/88832_2.png new file mode 100644 index 0000000..da30f69 Binary files /dev/null and b/resources/seeds/moments/88832_2.png differ diff --git a/resources/seeds/products/131700_1.png b/resources/seeds/products/131700_1.png new file mode 100644 index 0000000..68e9728 Binary files /dev/null and b/resources/seeds/products/131700_1.png differ diff --git a/resources/seeds/products/132504_2.png b/resources/seeds/products/132504_2.png new file mode 100644 index 0000000..d202a76 Binary files /dev/null and b/resources/seeds/products/132504_2.png differ diff --git a/resources/seeds/products/132505_2.png b/resources/seeds/products/132505_2.png new file mode 100644 index 0000000..5925c51 Binary files /dev/null and b/resources/seeds/products/132505_2.png differ diff --git a/resources/seeds/products/88891_2.png b/resources/seeds/products/88891_2.png new file mode 100644 index 0000000..565946a Binary files /dev/null and b/resources/seeds/products/88891_2.png differ diff --git a/resources/seeds/products/89779_1.jpg b/resources/seeds/products/89779_1.jpg new file mode 100644 index 0000000..f61ea18 Binary files /dev/null and b/resources/seeds/products/89779_1.jpg differ diff --git a/resources/seeds/products/89779_1.png b/resources/seeds/products/89779_1.png new file mode 100644 index 0000000..b3b3e45 Binary files /dev/null and b/resources/seeds/products/89779_1.png differ diff --git a/resources/views/a-propos.blade.php b/resources/views/a-propos.blade.php deleted file mode 100644 index 36bbd0d..0000000 --- a/resources/views/a-propos.blade.php +++ /dev/null @@ -1,186 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') - -
-
-

Qui sommes-nous ?

- A propos de nous -
- -
-
-
-

Le groupe , l'entreprise

-
-

Sous-titre

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt.

-
-
- -
-
-
    -
  • -

    - Site de production - 1 -

    -

    site de production
    à Quimper

    -
  • -
  • -

    - Collaborateurs - 224 -

    -

    Collaborateurs

    -
  • -
  • -

    - Pays livrés - 100 -

    -

    Pays livrés

    -
  • -
  • -

    - Références vendues - 500 -

    -

    Références vendues

    -
  • -
  • -

    - Plans d'expertise - 88 -

    -

    Plans d'expertise

    -
  • -
  • -

    - Franks Doux - 12 -

    -

    Franks Doux consommées
    chaque seconde dans le monde

    -
  • -
-
-
- -
-
-

Nos valeurs

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr

-
    -
  • - Plaisir - Plaisir -
  • -
  • - Partage - Partage -
  • -
  • - Confiance - Confiance -
  • -
  • - Qualité - Qualité -
  • -
  • - Innovation - Innovation -
  • -
-
- Frise -
- -
-
-

Notre histoire

- -
- -
- - 1920 -
-

Lorem Ipsum dolor sit amet.

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr

- photo -
- -
- -
- - photo - 2021 -
-

Lorem Ipsum dolor sit amet.

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr

-
- -
- -
- - photo - 2020 -
-

Lorem Ipsum dolor sit amet.

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr

-
- -
-
-
-
- -
-
-

Nos engagements

-
-
- photo -

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit - in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt

-
-
- photo -

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit - in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt

-
-
-
- photo -
-
-
- -
-
-

Le label

-
-
-

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr - ud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr - ud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

-
-
- photo -
-
-
-
-
- -@endsection \ No newline at end of file diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php new file mode 100644 index 0000000..ac5b30f --- /dev/null +++ b/resources/views/auth/login.blade.php @@ -0,0 +1,73 @@ +@extends('layouts.backend') + +@section('content') +
+
+
+
+
{{ __('Connexion') }}
+ +
+
+ @csrf + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+
+
+ + + +
+
+
+ +
+
+ + + @if (Route::has('bo.password.request')) + + {{ __('Mot de passe oublié ?') }} + + @endif +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/confirm.blade.php.disabled b/resources/views/auth/passwords/confirm.blade.php.disabled new file mode 100644 index 0000000..d531ac3 --- /dev/null +++ b/resources/views/auth/passwords/confirm.blade.php.disabled @@ -0,0 +1,49 @@ +@extends('layouts.backend') + +@section('content') +
+
+
+
+
{{ __('Confirmez votre mot de passe') }}
+ +
+ {{ __('Veuillez confirmer votre mot de passe pour continuer') }} + +
+ @csrf + +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+
+ + + @if (Route::has('password.request')) + + {{ __('Mot de passe oublié ?') }} + + @endif +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/email.blade.php.disabled b/resources/views/auth/passwords/email.blade.php.disabled new file mode 100644 index 0000000..92e7139 --- /dev/null +++ b/resources/views/auth/passwords/email.blade.php.disabled @@ -0,0 +1,47 @@ +@extends('layouts.backend') + +@section('content') +
+
+
+
+
{{ __('Réinitialisation de mot de passe') }}
+ +
+ @if (session('status')) + + @endif + +
+ @csrf + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/reset.blade.php.disabled b/resources/views/auth/passwords/reset.blade.php.disabled new file mode 100644 index 0000000..c18af94 --- /dev/null +++ b/resources/views/auth/passwords/reset.blade.php.disabled @@ -0,0 +1,65 @@ +@extends('layouts.backend') + +@section('content') +
+
+
+
+
{{ __('Réinitialisation de mot de passe') }}
+ +
+
+ @csrf + + + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/register.blade.php.disabled b/resources/views/auth/register.blade.php.disabled new file mode 100644 index 0000000..0fa8213 --- /dev/null +++ b/resources/views/auth/register.blade.php.disabled @@ -0,0 +1,77 @@ +@extends('layouts.backend') + +@section('content') +
+
+
+
+
{{ __('Register') }}
+ +
+
+ @csrf + +
+ + +
+ + + @error('name') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/verify.blade.php.disabled b/resources/views/auth/verify.blade.php.disabled new file mode 100644 index 0000000..62683ec --- /dev/null +++ b/resources/views/auth/verify.blade.php.disabled @@ -0,0 +1,28 @@ +@extends('layouts.backend') + +@section('content') +
+
+
+
+
{{ __('Verify Your Email Address') }}
+ +
+ @if (session('resent')) + + @endif + + {{ __('Before proceeding, please check your email for a verification link.') }} + {{ __('If you did not receive the email') }}, +
+ @csrf + . +
+
+
+
+
+
+@endsection diff --git a/resources/views/back/advice/edit.blade.php b/resources/views/back/advice/edit.blade.php new file mode 100644 index 0000000..4304c78 --- /dev/null +++ b/resources/views/back/advice/edit.blade.php @@ -0,0 +1,138 @@ +@extends('layouts.backend') + +@section('content') +
+ @method('PUT') + @csrf +
+

+ < {{ __('Présentation') }} {{ __('Edition') }}

+
+
+
+page->equals(\App\Enums\Page::marqueHeader()), \App\Enums\Page::toArray()); exit; +// dd($advice->page->equals(\App\Enums\Page::marqueHeader()), \App\Enums\Page::toValues()); exit; +?> +
+
+ + @if (!empty($advice->picture1)) +
+
+ {{$advice->title1}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture1']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture1']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'title1']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text1']) +
+
+
+ + @if (!empty($advice->picture2)) +
+
+ {{$advice->title2}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture2']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture2']) +
+
+
+ + @if (!empty($advice->picture3)) +
+
+ {{$advice->title3}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture3']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture3']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'title2']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text2']) +
+
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/back/encarts/edit.blade.php b/resources/views/back/encarts/edit.blade.php new file mode 100644 index 0000000..071b73f --- /dev/null +++ b/resources/views/back/encarts/edit.blade.php @@ -0,0 +1,102 @@ +@extends('layouts.backend') + +@section('content') +
+ @method('PUT') + @csrf +
+

+ < {{ __('Présentation') }} {{ __('Edition') }}

+
+
+
+page->equals(\App\Enums\Page::marqueHeader()), \App\Enums\Page::toArray()); exit; +// dd($encart->page->equals(\App\Enums\Page::marqueHeader()), \App\Enums\Page::toValues()); exit; +?> +
+ + + @include('back.modules.input-error', ['inputName'=>'title']) +
+ page->equals(Page::marqueBloc3()) && !$encart->page->equals(Page::marqueBloc4())) { ?> +
+ + + @include('back.modules.input-error', ['inputName'=>'subtitle']) +
+ +
+ + + @include('back.modules.input-error', ['inputName'=>'text']) +
+ page->equals(Page::marqueHeader())) { ?> +
+
+ + @if (!empty($encart->picture)) +
+
+ {{$encart->title}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture']) +
+ +
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/back/gammes/create.blade.php b/resources/views/back/gammes/create.blade.php new file mode 100644 index 0000000..3c62236 --- /dev/null +++ b/resources/views/back/gammes/create.blade.php @@ -0,0 +1,66 @@ +@extends('layouts.backend') + +@section('content') +
+ @csrf +
+

+ < {{ __('Gamme') }} {{ __('Création') }}

+
+
+
+ + @include('back.gammes.form-inputs') + +
+@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/back/gammes/edit.blade.php b/resources/views/back/gammes/edit.blade.php new file mode 100644 index 0000000..0d6f7ab --- /dev/null +++ b/resources/views/back/gammes/edit.blade.php @@ -0,0 +1,67 @@ +@extends('layouts.backend') + +@section('content') +
+ @method('PUT') + @csrf +
+

+ < {{ __('Gamme') }} {{ __('Edition') }}

+
+
+
+ + @include('back.gammes.form-inputs') + +
+@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/back/gammes/form-inputs.blade.php b/resources/views/back/gammes/form-inputs.blade.php new file mode 100644 index 0000000..aa758d7 --- /dev/null +++ b/resources/views/back/gammes/form-inputs.blade.php @@ -0,0 +1,61 @@ +
+ + + @include('back.modules.input-error', ['inputName'=>'title']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text']) +
+
+
+ + @if (!empty($gamme->picture)) +
+
+ {{$gamme->alt_text_picture}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture']) +
+
+
+ + @if (!empty($gamme->banner)) +
+
+ {{$gamme->alt_text_banner}} + @endif + @include('back.modules.input-error', ['inputName'=>'banner']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_banner']) +
+ +
+
+ + +
+
+
+
+ @include('back.modules.input-error', ['inputName'=>'parent_gamme_id']) +
+
+ + parent_gamme_id != null) disabled @endif title="Choisissez la couleur"> + @include('back.modules.input-error', ['inputName'=>'color']) +
diff --git a/resources/views/back/gammes/index.blade.php b/resources/views/back/gammes/index.blade.php new file mode 100644 index 0000000..5a1dd0b --- /dev/null +++ b/resources/views/back/gammes/index.blade.php @@ -0,0 +1,53 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Gammes') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{ __('Créer une gamme') }} +
+ + + + + + + + + + + + + @foreach($gammes as $gamme) + + @if ($gamme->parent_gamme_id) + + @else + + @endif + + + + + + + @endforeach + +
{{ __('Nom') }}{{ __('Texte') }}{{ __('Vignette') }}{{ __('Couleur') }}{{ __('Gamme parente') }}
- {{$gamme->title}}{{$gamme->title}}{{$gamme->text}}@if (!empty($gamme->picture))@endif + @if (isset($gamme->parentGamme)) + {{$gamme->parentGamme->title}} + @endif + + {{ __('Éditer') }} +
+ @method('DELETE') + @csrf + +
+
+@endsection diff --git a/resources/views/back/home.blade.php b/resources/views/back/home.blade.php new file mode 100644 index 0000000..7527906 --- /dev/null +++ b/resources/views/back/home.blade.php @@ -0,0 +1,16 @@ +@extends('layouts.backend') +{{-- @extends('layouts.backend', ['encarts_home' => $encarts_home]) --}} + +@section('title', 'Back office') +@section('description', 'Page d\'accueil du Back office') +@section('metaIndex', 'noindex,nofollow') + +@section('content') +
+ {{-- @include('crud-policies::crud.modules.flashMessage') --}} +
{{ __('Back office') }}
+
+

Application

+
+
+@endsection \ No newline at end of file diff --git a/resources/views/back/modules/input-error.blade.php b/resources/views/back/modules/input-error.blade.php new file mode 100644 index 0000000..86d984b --- /dev/null +++ b/resources/views/back/modules/input-error.blade.php @@ -0,0 +1,5 @@ +@if($errors->has($inputName)) +
+ {{ implode(',', $errors->get($inputName)) }} +
+@endif \ No newline at end of file diff --git a/resources/views/back/modules/message.blade.php b/resources/views/back/modules/message.blade.php new file mode 100644 index 0000000..295c2d8 --- /dev/null +++ b/resources/views/back/modules/message.blade.php @@ -0,0 +1,36 @@ +@if ($message = Session::get('success')) + +@endif +@if ($message = Session::get('error')) + +@endif +@if ($message = Session::get('warning')) + +@endif +@if ($message = Session::get('info')) + +@endif +@if ($errors->any()) + +@endif \ No newline at end of file diff --git a/resources/views/back/moments/edit.blade.php b/resources/views/back/moments/edit.blade.php new file mode 100644 index 0000000..30d0248 --- /dev/null +++ b/resources/views/back/moments/edit.blade.php @@ -0,0 +1,98 @@ +@extends('layouts.backend') + +@section('content') +
+ @method('PUT') + @csrf +
+

+ < {{ __('Moments') }} {{ __('Edition') }}

+
+
+
+page->equals(\App\Enums\Page::marqueHeader()), \App\Enums\Page::toArray()); exit; +// dd($moment->page->equals(\App\Enums\Page::marqueHeader()), \App\Enums\Page::toValues()); exit; +?> +
+ + + @include('back.modules.input-error', ['inputName'=>'title']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'subtitle']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text']) +
+
+
+ + @if (!empty($moment->picture)) +
+
+ {{$moment->title}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture']) +
+
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/back/moments/index.blade.php b/resources/views/back/moments/index.blade.php new file mode 100644 index 0000000..8d55feb --- /dev/null +++ b/resources/views/back/moments/index.blade.php @@ -0,0 +1,44 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Actualités') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{-- {{ __('Créer un moment') }} --}} +
+ + + + + + + + + + @foreach ($moments as $moment) + + + + + + + @endforeach + +
{{ __('Année') }}{{ __('Titre') }}{{ __('Image') }}
{{$moment->title}}{{$moment->subtitle}} + @if (!empty($moment->picture)) + {{$moment->title}} + @endif + + {{ __('Éditer') }} + {{--
+ @method('DELETE') + @csrf + +
--}} +
+@endsection diff --git a/resources/views/back/pictobrands/create.blade.php b/resources/views/back/pictobrands/create.blade.php new file mode 100644 index 0000000..6b92061 --- /dev/null +++ b/resources/views/back/pictobrands/create.blade.php @@ -0,0 +1,66 @@ +@extends('layouts.backend') + +@section('content') +
+ @csrf +
+

+ < {{ __('Pictogrammes') }} {{ __('Création') }}

+
+
+
+ + @include('back.pictobrands.form-inputs') + +
+@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/back/pictobrands/edit.blade.php b/resources/views/back/pictobrands/edit.blade.php new file mode 100644 index 0000000..fe57d1b --- /dev/null +++ b/resources/views/back/pictobrands/edit.blade.php @@ -0,0 +1,17 @@ +@extends('layouts.backend') + +@section('content') + +
+ @method('PUT') + @csrf +
+

+ < {{ __('Pictogramme') }} {{ __('Edition') }}

+
+
+
+ @include('back.pictobrands.form-inputs') +
+@endsection diff --git a/resources/views/back/pictobrands/form-inputs.blade.php b/resources/views/back/pictobrands/form-inputs.blade.php new file mode 100644 index 0000000..1a469a1 --- /dev/null +++ b/resources/views/back/pictobrands/form-inputs.blade.php @@ -0,0 +1,29 @@ +
+
+
+
+ + @if (!empty($pictobrand->picture)) +
+
+ {{$pictobrand->text}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'title']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text']) +
+
+
diff --git a/resources/views/back/pictobrands/index.blade.php b/resources/views/back/pictobrands/index.blade.php new file mode 100644 index 0000000..0a9205a --- /dev/null +++ b/resources/views/back/pictobrands/index.blade.php @@ -0,0 +1,43 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Pictogrammes') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{ __('Créer un pictogramme') }} +
+ + + + + + + + + @foreach ($pictobrands as $picto) + + + + + + + @endforeach + +
{{ __('Image') }}{{ __('Quantité') }}{{ __('Texte') }}
+ @if (!empty($picto->picture)) + {{$picto->text}} + @endif + {{$picto->title}}{{$picto->text}} + {{ __('Éditer') }} +
+ @method('DELETE') + @csrf + +
+
+@endsection diff --git a/resources/views/back/pictos/create.blade.php b/resources/views/back/pictos/create.blade.php new file mode 100644 index 0000000..06cc0e7 --- /dev/null +++ b/resources/views/back/pictos/create.blade.php @@ -0,0 +1,68 @@ +@extends('layouts.backend') + +@section('content') +
+ @csrf +
+

+ < + {{ __('Pictogrammes') }} {{ __('Création') }} +

+
+
+
+ + @include('back.pictos.form-inputs') + +
+@endsection + +@section('scripts') + +@endsection diff --git a/resources/views/back/pictos/edit.blade.php b/resources/views/back/pictos/edit.blade.php new file mode 100644 index 0000000..ef85a83 --- /dev/null +++ b/resources/views/back/pictos/edit.blade.php @@ -0,0 +1,18 @@ +@extends('layouts.backend') + +@section('content') + +
+ @method('PUT') + @csrf +
+

+ < + {{ __('Pictogramme') }} {{ __('Edition') }}

+
+
+
+ @include('back.pictos.form-inputs') +
+@endsection diff --git a/resources/views/back/pictos/form-inputs.blade.php b/resources/views/back/pictos/form-inputs.blade.php new file mode 100644 index 0000000..b8040ab --- /dev/null +++ b/resources/views/back/pictos/form-inputs.blade.php @@ -0,0 +1,24 @@ +
+
+
+
+ + @if (!empty($picto->picture)) +
+
+ {{$picto->text}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text']) +
+
+
diff --git a/resources/views/back/pictos/index.blade.php b/resources/views/back/pictos/index.blade.php new file mode 100644 index 0000000..2eead7d --- /dev/null +++ b/resources/views/back/pictos/index.blade.php @@ -0,0 +1,44 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Pictogrammes') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{ __('Créer un pictogramme') }} +
+ + + + + + + + + @foreach ($pictos as $picto) + + + + + + + + @endforeach + +
{{ __('Image') }}{{ __('Chemin') }}{{ __('Texte') }}
+ @if (!empty($picto->picture)) + {{$picto->text}} + @endif + {{$picto->picture}}{{$picto->text}} + {{ __('Éditer') }} +
+ @method('DELETE') + @csrf + +
+
+@endsection diff --git a/resources/views/back/posts/create.blade.php b/resources/views/back/posts/create.blade.php new file mode 100644 index 0000000..024c99b --- /dev/null +++ b/resources/views/back/posts/create.blade.php @@ -0,0 +1,66 @@ +@extends('layouts.backend') + +@section('content') +
+ @csrf +
+

+ < {{ __('Actualité') }} {{ __('Création') }}

+
+
+
+ + @include('back.posts.form-inputs') + +
+@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/back/posts/edit.blade.php b/resources/views/back/posts/edit.blade.php new file mode 100644 index 0000000..884eea0 --- /dev/null +++ b/resources/views/back/posts/edit.blade.php @@ -0,0 +1,17 @@ +@extends('layouts.backend') + +@section('content') + +
+ @method('PUT') + @csrf +
+

+ < {{ __('Actualité') }} {{ __('Edition') }}

+
+
+
+ @include('back.posts.form-inputs') +
+@endsection diff --git a/resources/views/back/posts/form-inputs.blade.php b/resources/views/back/posts/form-inputs.blade.php new file mode 100644 index 0000000..0df622c --- /dev/null +++ b/resources/views/back/posts/form-inputs.blade.php @@ -0,0 +1,89 @@ +
+

{{ __('Contenu du post') }}

+
+
+
+
+ @if (!empty($post->picture_news)) + +
+
+ {{$post->title}} + @else + + @endif + @include('back.modules.input-error', ['inputName'=>'picture_news']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture_news']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'title']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text']) +
+
+ +
+

{{ __('Période de publication') }}

+
+
+
+ + @if($post->date_start !== null) + + + @else + + + @endif + {{-- {{ __('Laisser vide pour un affichage immédiat') }} --}} + @include('back.modules.input-error', ['inputName'=>'date_start']) +
+
+ + @if($post->date_end !== null) + + + @else + + + @endif + @include('back.modules.input-error', ['inputName'=>'date_end']) +
+
+ +
+

{{ __('Affichage sur la Homepage') }}

+
+
+
+
+ @if (!empty($post->picture_home)) + +
+
+ {{$post->title}} + @else + + @endif + @include('back.modules.input-error', ['inputName'=>'picture_home']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture_home']) +
+
+ on_top) === 1 || old('on_top', $post->on_top) === 'on')checked="checked" @endif> + + @include('back.modules.input-error', ['inputName'=>'on_top']) +
+
diff --git a/resources/views/back/posts/index.blade.php b/resources/views/back/posts/index.blade.php new file mode 100644 index 0000000..4828638 --- /dev/null +++ b/resources/views/back/posts/index.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Actualités') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{ __('Créer une actualité') }} +
+ + + + + + + + + + + @foreach ($posts as $post) + + @if (!empty($post->picture_news)) + + @else + + @endif + + + + + + + @endforeach + +
{{ __('Image') }}{{ __('Titre') }}{{ __('A la une') }}{{ __('Date de publication') }}{{ __('Date d\'archivage') }}
+ {{$post->title}} + {{$post->title}}{{$post->on_top ? 'Oui' : 'Non'}}{{date_format($post->date_start, "d/m/Y H:i")}}{{date_format($post->date_end, "d/m/Y H:i")}} + {{ __('Éditer') }} +
+ @method('DELETE') + @csrf + +
+
+@endsection diff --git a/resources/views/back/products/create.blade.php b/resources/views/back/products/create.blade.php new file mode 100644 index 0000000..92fe505 --- /dev/null +++ b/resources/views/back/products/create.blade.php @@ -0,0 +1,66 @@ +@extends('layouts.backend') + +@section('content') +
+ @csrf +
+

+ < {{ __('Produit') }} {{ __('Création') }}

+
+
+
+ + @include('back.products.form-inputs') + +
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/back/products/edit.blade.php b/resources/views/back/products/edit.blade.php new file mode 100644 index 0000000..ef3c16c --- /dev/null +++ b/resources/views/back/products/edit.blade.php @@ -0,0 +1,67 @@ +@extends('layouts.backend') + +@section('content') +
+ @method('PUT') + @csrf +
+

+ < {{ __('Produit') }} {{ __('Edition') }}

+
+
+
+ + @include('back.products.form-inputs') + +
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/back/products/form-inputs.blade.php b/resources/views/back/products/form-inputs.blade.php new file mode 100644 index 0000000..50fca22 --- /dev/null +++ b/resources/views/back/products/form-inputs.blade.php @@ -0,0 +1,148 @@ +{{-- LES GAMMES --}} +

Les gammes

+
+
+ + +
+ @include('back.modules.input-error', ['inputName'=>'gamme_id']) +
+{{-- LE CONTENU --}} +

Le contenu

+
+ + + @include('back.modules.input-error', ['inputName'=>'name']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'description']) +
+{{-- L'IMAGE --}} +

L'image

+
+
+ + @if (!empty($product->picture)) +
+
+ {{$product->alt_text_picture}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture']) +
+{{-- LA CUISSON --}} +@php +$pictos = json_decode($product->pictos); +@endphp +@if (isset($pictos)) +
+

La cuisson

+
+ + + + + + + + + + + + @foreach ($pictos as $picto) + + + + + @include('back.modules.input-error', ['inputName'=>'is_activated{{$picto->id}}']) + {{-- --}} + + @include('back.modules.input-error', ['inputName'=>'time_cook{{$picto->id}}']) + + @include('back.modules.input-error', ['inputName'=>'temp_cook{{$picto->id}}']) + + @endforeach + +
{{ __('Nom') }}{{ __('Image') }}{{ __('Actif') }}{{ __('Temps de cuisson') }}{{ __('Température de cuisson') }}
{{$picto->name}}{{$picto->name}} +
+ id}}` ?? '', $picto->status) === true) checked="checked" @endif> +
+
+
+
+@endif +{{-- LES + PRODUIT --}} +@php +$plusproduit = json_decode($product->plusproduit); +@endphp +@if (isset($plusproduit)) +
+

Les + produit

+
+ + + + + + + + + @foreach ($plusproduit as $plus) + + + @include('back.modules.input-error', ['inputName'=>'content{{$plus->id}}']) + + + @endforeach + +
{{ __('Libellé') }}{{ __('Pictogramme') }}
+
+
+ + @if (!empty($plus->url)) +
+
+ {{$plus->name}} + @endif + @include('back.modules.input-error', ['inputName'=>'pictogramme{{$plus->id}}']) +
+
+
+
+@endif +{{-- LES MARQUEURS --}} +

Les marqueurs

+
+ is_published) === 1 || old('is_published', $product->is_published) === 'on')checked="checked" @endif> + + @include('back.modules.input-error', ['inputName'=>'is_published']) +
+
+ is_on_top) === 1 || old('is_on_top', $product->is_on_top) === 'on')checked="checked" @endif> + + @include('back.modules.input-error', ['inputName'=>'is_on_top']) +
+
+ is_news) === 1 || old('is_news', $product->is_news) === 'on')checked="checked" @endif> + + @include('back.modules.input-error', ['inputName'=>'is_news']) +
+
+ is_food_service) === 1 || old('is_food_service', $product->is_food_service) === 'on')checked="checked" @endif> + + @include('back.modules.input-error', ['inputName'=>'is_food_service']) +
+ is_halal) === 1 || old('is_halal', $product->is_halal) === 'on')checked="checked" @endif> + + @include('back.modules.input-error', ['inputName'=>'is_halal']) +
diff --git a/resources/views/back/products/index.blade.php b/resources/views/back/products/index.blade.php new file mode 100644 index 0000000..a1604ae --- /dev/null +++ b/resources/views/back/products/index.blade.php @@ -0,0 +1,61 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Produits') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{ __('Créer un produit') }} +
+ + + + + + + + + + + + + + + + @foreach($products as $product) + + + + @endif + + @if (isset($product->gamme)) + + @else + + @endif + + + + + + + + @endforeach + +
{{ __('Libellé') }}{{ __('Image') }}{{ __('Gamme') }}{{ __('Publié') }}{{ __('A la une') }}{{ __('Actualités') }}{{ __('Food Service') }}{{ __('Halal') }}
{{$product->name}} + @if (!empty($product->picture)) + + {{$product->gamme->title}} + -{{$product->is_published ? 'Oui' : 'Non'}}{{$product->is_on_top ? 'Oui' : 'Non'}}{{$product->is_news ? 'Oui' : 'Non'}}{{$product->is_food_service ? 'Oui' : 'Non'}}{{$product->is_halal ? 'Oui' : 'Non'}} + {{ __('Éditer') }} +
+ @method('DELETE') + @csrf + +
+
+@endsection diff --git a/resources/views/back/seo_data/edit.blade.php b/resources/views/back/seo_data/edit.blade.php new file mode 100644 index 0000000..4e3aa84 --- /dev/null +++ b/resources/views/back/seo_data/edit.blade.php @@ -0,0 +1,79 @@ +@extends('layouts.backend') + +@section('content') +
+ @method('PUT') + @csrf +
+

+ < {{ __('Paramètres SEO')."-".$SeoDatum->page->label}} {{ __('Edition') }}

+
+
+
+
+ + + @include('back.modules.input-error', ['inputName'=>'title']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'description']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'keywords']) +
+
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/back/sliders/create.blade.php b/resources/views/back/sliders/create.blade.php new file mode 100644 index 0000000..f86cdfa --- /dev/null +++ b/resources/views/back/sliders/create.blade.php @@ -0,0 +1,15 @@ +@extends('layouts.backend') + +@section('content') +
+ @csrf +
+

+ < {{ __('Slider') }} {{ __('Création') }}

+
+
+
+ @include('back.sliders.form-inputs') +
+@endsection \ No newline at end of file diff --git a/resources/views/back/sliders/edit.blade.php b/resources/views/back/sliders/edit.blade.php new file mode 100644 index 0000000..342aa29 --- /dev/null +++ b/resources/views/back/sliders/edit.blade.php @@ -0,0 +1,65 @@ +@extends('layouts.backend') + +@section('content') +
+ @method('PUT') + @csrf +
+

+ < {{ __('Slider') }} {{ __('Édition') }}

+ @if (session('success')) + {{ session('success') }} + @endif +
+
+
+ @include('back.sliders.form-inputs') +
+
+

{{ __('Slides') }}

+
+ + + + + + + + + + + + + + @foreach($slider->slides as $slide) + + + + + + + + + + @endforeach + +
{{ __('Image') }}{{ __('Lien') }}{{ __('Début') }}{{ __('Fin') }}{{ __('Slider de regroupement') }}{{ __('Ordre') }}
@if (!empty($slide->picture))@endif{{ $slide->link_label }}{{date_format($slide->date_start, "d/m/Y H:i")}}{{date_format($slide->date_end, "d/m/Y H:i")}}{{$slide->slider->label}} + @if ($loop->first) + + > + + @elseif($loop->last) + + < + + @else + + < + + + > + + @endif + {{ __('Éditer') }}
+@endsection diff --git a/resources/views/back/sliders/form-inputs.blade.php b/resources/views/back/sliders/form-inputs.blade.php new file mode 100644 index 0000000..ccb147e --- /dev/null +++ b/resources/views/back/sliders/form-inputs.blade.php @@ -0,0 +1,15 @@ +
+ + + @include('back.modules.input-error', ['inputName'=>'label']) + @include('back.modules.input-error', ['inputName'=>'slug']) +
+
+ + +
+
+ published) === 1 || old('published', $slider->published) === 'on')checked="checked" @endif> + + @include('back.modules.input-error', ['inputName'=>'published']) +
diff --git a/resources/views/back/sliders/index.blade.php b/resources/views/back/sliders/index.blade.php new file mode 100644 index 0000000..0ef57fb --- /dev/null +++ b/resources/views/back/sliders/index.blade.php @@ -0,0 +1,39 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Sliders') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{ __('Créer un slider') }} +
+ + + + + + + + + @foreach ($sliders as $slider) + + + + + + + @endforeach + +
{{ __('Label') }}{{ __('Titre de la page') }}{{ __('Publié') }}
{{$slider->label}}{{$slider->commentaire}}{{$slider->published ? 'Oui' : 'Non'}} + {{ __('Éditer') }} +
+ @method('DELETE') + @csrf + +
+
+@endsection \ No newline at end of file diff --git a/resources/views/back/slides/create.blade.php b/resources/views/back/slides/create.blade.php new file mode 100644 index 0000000..5ab8e93 --- /dev/null +++ b/resources/views/back/slides/create.blade.php @@ -0,0 +1,66 @@ +@extends('layouts.backend') + +@section('content') +
+ @csrf +
+

+ < {{ __('Slides') }} {{ __('Création') }}

+
+
+
+ + @include('back.slides.form-inputs') + +
+@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/back/slides/edit.blade.php b/resources/views/back/slides/edit.blade.php new file mode 100644 index 0000000..da8ee95 --- /dev/null +++ b/resources/views/back/slides/edit.blade.php @@ -0,0 +1,67 @@ +@extends('layouts.backend') + +@section('content') +
+ @method('PUT') + @csrf +
+

+ < {{ __('Slide') }} {{ __('Edition') }}

+
+
+
+ + @include('back.slides.form-inputs') + +
+@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/back/slides/form-inputs.blade.php b/resources/views/back/slides/form-inputs.blade.php new file mode 100644 index 0000000..77d0360 --- /dev/null +++ b/resources/views/back/slides/form-inputs.blade.php @@ -0,0 +1,79 @@ +
+
+ + @if (!empty($slide->picture)) +
+
+ {{$slide->title}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture']) +
+ +
+
+ + +
+
+
+
+ @include('back.modules.input-error', ['inputName'=>'slider_id']) +
+ +
+

{{ __('Période de parution') }}

+
+
+
+ + @if($slide->date_start !== null) + + + @else + + + @endif + {{ __('Laisser vide pour un affichage immédiat') }} + @include('back.modules.input-error', ['inputName'=>'date_start']) +
+
+ + @if($slide->date_end !== null) + + + @else + + + @endif + {{ __('Laisser vide pour un affichage permanent') }} + @include('back.modules.input-error', ['inputName'=>'date_end']) +
+
+ +{{--
+

{{ __('Options de lien') }}

+
+
+ + + @include('back.modules.input-error', ['inputName'=>'link_label']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'link']) +
+
+ link_new_tab) !== 0)checked @endif> + + @include('back.modules.input-error', ['inputName'=>'link_new_tab']) +
--}} diff --git a/resources/views/back/slides/index.blade.php b/resources/views/back/slides/index.blade.php new file mode 100644 index 0000000..5a68566 --- /dev/null +++ b/resources/views/back/slides/index.blade.php @@ -0,0 +1,64 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Slides') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{ __('Créer un slide') }} +
+ + + + + + + + + + + + + + @foreach($slides as $slide) + + + + + + + + + + @endforeach + +
{{ __('Image') }}{{ __('Lien') }}{{ __('Début') }}{{ __('Fin') }}{{ __('Slider de regroupement') }}{{ __('Ordre') }}
@if (!empty($slide->picture))@endif{{ $slide->link_label }}{{$slide->date_start}}{{$slide->date_end}}{{$slide->slider->label}} + @if ($loop->first) + + > + + @elseif($loop->last) + + < + + @else + + < + + + > + + @endif + + {{ __('Éditer') }} +
+ @method('DELETE') + @csrf + +
+
+@endsection diff --git a/resources/views/back/texts/create.blade.php b/resources/views/back/texts/create.blade.php new file mode 100644 index 0000000..f113b92 --- /dev/null +++ b/resources/views/back/texts/create.blade.php @@ -0,0 +1,68 @@ +@extends('layouts.backend') + +@section('content') +
+ @csrf +
+

+ < + {{ __('Questions / Réponses') }} {{ __('Création') }} +

+
+
+
+ + @include('back.texts.form-inputs') + +
+@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/back/texts/edit.blade.php b/resources/views/back/texts/edit.blade.php new file mode 100644 index 0000000..392a97f --- /dev/null +++ b/resources/views/back/texts/edit.blade.php @@ -0,0 +1,23 @@ +@extends('layouts.backend') + +@section('content') + +
+ @method('PUT') + @csrf +
+

+ @if($text->page == Page::newsQuestions()) + < + {{ __('Questions / Réponses') }} + @else + {{ ucfirst($text->page->label) }} + @endif + {{ __('Edition') }}

+
+
+
+ @include('back.texts.form-inputs') +
+@endsection diff --git a/resources/views/back/texts/form-inputs.blade.php b/resources/views/back/texts/form-inputs.blade.php new file mode 100644 index 0000000..63bc676 --- /dev/null +++ b/resources/views/back/texts/form-inputs.blade.php @@ -0,0 +1,61 @@ +
+
+ + + @include('back.modules.input-error', ['inputName'=>'title']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text']) +
+
+ + @push('scripts') + +@endpush diff --git a/resources/views/back/texts/index.blade.php b/resources/views/back/texts/index.blade.php new file mode 100644 index 0000000..f56fc73 --- /dev/null +++ b/resources/views/back/texts/index.blade.php @@ -0,0 +1,37 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Questions / Réponses') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{ __('Créer une Question / Réponse') }} +
+ + + + + + + + @foreach ($texts as $text) + + + + + + @endforeach + +
{{ __('Question') }}{{ __('Réponse') }}
{{$text->title}}{{$text->text}} + {{ __('Éditer') }} +
+ @method('DELETE') + @csrf + +
+
+@endsection \ No newline at end of file diff --git a/resources/views/back/titles/edit.blade.php b/resources/views/back/titles/edit.blade.php new file mode 100644 index 0000000..3746b54 --- /dev/null +++ b/resources/views/back/titles/edit.blade.php @@ -0,0 +1,29 @@ +@extends('layouts.backend') + +@section('content') +
+ @method('PUT') + @csrf +
+

+ < {{ __('Entête') }} {{ __('Edition') }}

+
+
+
+ +
+ + + @include('back.modules.input-error', ['inputName'=>'title']) +
+ page->equals(Page::marqueBloc4())) { ?> +
+ + + @include('back.modules.input-error', ['inputName'=>'text']) +
+ +
+@endsection diff --git a/resources/views/categorie.blade.php b/resources/views/categorie.blade.php deleted file mode 100644 index ad1a954..0000000 --- a/resources/views/categorie.blade.php +++ /dev/null @@ -1,121 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') - -
-
-

Elaboré cuits - -

- -
- -
-
-
- - - -

Nos produits de la gammes

-
- -

Des produits incontournables, Authentiques et Innovants !

-
-
- -
-
-
-
-
-

Gamme family

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

-
- -
-
-
- - -

Produit 1

- - - Découvrir - -
-
- - -

Bouchées de Volaille

- - - Découvrir - -
-
-
-
-
-
-

Gamme Little Treats

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

-
- -
-
-
- - -

Cordon bleu de Volaille

- - - Découvrir - -
-
- - -

Nuggets de volaille

- - - Découvrir - -
-
- - -

Milanèse de Volaille

- - - Découvrir - -
-
- - -

Escalope Viennoise de Volaille

- - - Découvrir - -
-
- - -

Croc de Volaille façon Bolognaise

- - - Découvrir - -
-
-
-
-
-
- -@endsection \ No newline at end of file diff --git a/resources/views/emails/send-contact.blade.php b/resources/views/emails/send-contact.blade.php new file mode 100644 index 0000000..2ed1a32 --- /dev/null +++ b/resources/views/emails/send-contact.blade.php @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + + + + +
+ + + + + + +
+ +
+
+
Message Contact
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + +
+
Bonjour,

Voici un message envoyé depuis {{ config('app.name', 'Doux') }}

+
+

+

+ +
+
Expediteur : {{ $data['civilite'] }} {{ $data['name'] }} {{ $data['lastname'] }}

Adresse : {{ $data['address'] }} {{ $data['postcode'] }} {{ $data['city'] }}

Téléphone : {{ $data['phone'] }}

Email : {{ $data['email'] }}

Pays : {{ $data['country'] }}

Département : {{ $data['departement'] }}

Sujet : {{ $data['topic'] }}

Produit : {{ $data['product_name'] }}

Code Barre : {{ $data['barcode'] }}

Lot : {{ $data['lot'] }}

Date limite de consommation : {{ $data['limit_date'] }}

Lieu d'achat : {{ $data['shop'] }}

Date de consommation : {{ $data['consumption_date'] }}

Message :

+ {{ $data['message'] }} +
+
+

L'équipe {{ config('app.name') }}
+
+
+ +
+
+ +
+ + + diff --git a/resources/views/food-service.blade.php b/resources/views/food-service.blade.php deleted file mode 100644 index 98c761e..0000000 --- a/resources/views/food-service.blade.php +++ /dev/null @@ -1,107 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') - -
-
-

Food service

- -
- -
-
-
-

Doux Food Service

-
-

La marque française des professionnels

-
-
- photo -
-
-

Entièrement dédiée aux professionnels ; boucheries, restaurations traditionnelles et points chauds, ID HALAL est un acteur majeur sur le marché du halal. La marque bénéficie d’une expertise et d’un savoir-faire uniques qui sont aujourd’hui reconnus sur le marché. Depuis plus de 20 ans, elle a su construire une relation de confiance et de transparence avec ses clients.

-

Id Halal met à profit quotidiennement ses compétences et son historique dans le domaine du halal, afin de proposer une offre complète de produits savoureux et incontournables adaptés aux professionnels des métiers de bouche pour varier les plaisirs et répondre aux attentes des consommateurs

- En savoir plus -
-
-
-
- -
-
-

Les avantages de Food Service

-

Doux lance sa marque consacrée aux professionnels de la restauration. Une sélection de produits pensée pour faciliter la vie grâce à une offre évolutive en fonction des besoins.

-
    -
  • - - Le savoir-faire
    et l'expérience
    -
  • -
  • - - Des recettes
    et un conditionnement
    adaptés
    -
  • -
  • - - Remise en oeuvre
    facile et rapide
    -
  • -
  • - - La qualité et le goût
    des produits
    -
  • -
  • - - Des exclusivités produits
    pour la restauration
    -
  • -
-
- -
- - -
-
-

Les produits

-

Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleur qualité

- -
-
- -

Produit 1

- - - Découvrir - -
-
- -

Produit 2

- - - Découvrir - -
-
- -

Produit 3

- - - Découvrir - -
-
- -

Produit 4

- - - Découvrir - -
-
-
-
- -
- -@endsection \ No newline at end of file diff --git a/resources/views/front/a-propos.blade.php b/resources/views/front/a-propos.blade.php new file mode 100644 index 0000000..063afa4 --- /dev/null +++ b/resources/views/front/a-propos.blade.php @@ -0,0 +1,176 @@ +@extends('layouts.frontend') +@section('title', $seoDatum->title) +@section('description', $seoDatum->description) +@section('keywords', $seoDatum->keywords) + +@section('content') + +
+

{{ __('Doux, La référence française de la volaille')}}

+ Une famille avec deux enfants sont dans leur cuisine en train de préparer le repas avec des produits Doux + +
+ +{{-- BLOC 1 - ENCART DE PRESENTATION --}} +
+
+
+
+

{{ $encart_marqueHeader->title}}

+
+

{{ $encart_marqueHeader->subtitle}}

+ {!! $encart_marqueHeader->text !!} +
+
+
+
+
    + @foreach ($pictobrands_marque as $picto) +
  • +

    + {{ $picto->alt_text_picture }} + {{ $picto->title }} +

    +

    {!! clean(nl2br($picto->text)) !!}

    +
  • + @endforeach +
+
+
+ +{{-- BLOC 2 - NOS VALEURS --}} +
+
+
+

{{ $title_marqueBloc2->title}}

+
+

{{ $title_marqueBloc2->text}}

+
    + @foreach ($pictos_marqueBloc2 as $picto) +
  • + {{ $picto->alt_text_picture }} + {!! clean(nl2br($picto->text)) !!} +
  • + @endforeach +
+
+ Frise +
+ +{{-- BLOC 3 - NOTRE HISTOIRE --}} +
+ +
+
+

{{ __('Notre Histoire') }}

+
+
+
+
+ {{-- + + --}} + Fil de l'histoire + Fil de l'histoire + Fil de l'histoire +
+
+
+ @foreach ($moments as $moment) + @if ($loop->first) +
+ {{$moment->title}} +
+

{{$moment->subtitle}}

+

{!! $moment->text !!}

+ {{$moment->alt_text_picture}} +
+
+ @else + @if ($loop->iteration % 2 == 0) +
+ + {{$moment->alt_text_picture}} + {{$moment->title}} +
+

{{$moment->subtitle}}

+

{!! $moment->text !!}

+
+
+ @else +
+ + {{$moment->alt_text_picture}} + {{$moment->title}} +
+

{{$moment->subtitle}}

+

{!! $moment->text !!}

+
+ +
+ @endif + @endif + @endforeach +
+
+
+ +{{-- BLOC 4 - NOS ENGAGEMENTS --}} +
+
+
+

{{ $title_marqueBloc4->title}}

+
+
+
+ {{ $encart_marqueBloc4l->alt_text_picture}} +

{{ $encart_marqueBloc4l->title}}

+

{!! $encart_marqueBloc4l->text !!}

+
+
+ {{ $encart_marqueBloc4r->alt_text_picture}} +

{{ $encart_marqueBloc4r->title}}

+

{!! $encart_marqueBloc4r->text !!}

+
+
+
+ photo +
+
+
+ +{{-- BLOC 5 - BAS DE PAGE --}} +
+
+
+

{{ $encart_marqueFooter->title}}

+
+
+
+

{{ $encart_marqueFooter->subtitle}}

+

{!! $encart_marqueFooter->text !!}

+
+
+ {{ $encart_marqueFooter->alt_text_picture}} +
+
+
+
+ +@endsection diff --git a/resources/views/front/contact.blade.php b/resources/views/front/contact.blade.php new file mode 100644 index 0000000..a3a78e7 --- /dev/null +++ b/resources/views/front/contact.blade.php @@ -0,0 +1,259 @@ +@extends('layouts.frontend') +@section('title', __('Nous contacter')) +@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) + +@section('content') + +
+

{{ __('Nous contacter') }}

+ Nous contacter + +
+ +
+ + + + +

+ {{ __('Adresse') }}

+ DOUX FARMOR
+ 450 Route de Rosporden
+ Le Grand Guelen
+ 28000 QUIMPER, France +

+
+ +
+
+ +
+

{!! __('Une question ? Une idée ? Un conseil ?
Des informations sur nos produits ?') !!}

+
+

{!! __('N’hésitez-pas à nous contacter en renseignant le formulaire ci-dessous.
Nous traiterons votre demande avec la plus grande attention dans les meilleurs délais.') !!}

+ @if(session()->has('status')) +
+
{{ __('Votre message a bien été envoyé !') }}
+
{{ __('Nos services mettent tout en oeuvre pour y répondre au plus vite.') }}
+
+ @endif +
+ @csrf + @if ($errors->any()) + @foreach ($errors->all() as $error) +
{{ $error }}
+ @endforeach + @endif +
+ {{ __('Vos coordonnées') }} : + + + + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
+
+ +
+
+
+
+ {{ __('Préciser votre demande') }} : +
+ + + + +
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+

{!! __('rgpd.contact.disclaimer', ['PRIVROUTE' => route($routeprefixer . 'policy')]) !!}

+
+ + +
+
+ +
+
+
+
+ +@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/front/food-service.blade.php b/resources/views/front/food-service.blade.php new file mode 100644 index 0000000..e0a4d43 --- /dev/null +++ b/resources/views/front/food-service.blade.php @@ -0,0 +1,97 @@ +@extends('layouts.frontend') +@section('title', $seoDatum->title) +@section('description', $seoDatum->description) +@section('keywords', $seoDatum->keywords) + +@section('content') + +
+
+

{{ __('Doux Food Services') }}

+ Chef en cuisine qui est en train de montrer à son commis comment cuisiner les légumes + +
+ +
+
+
+
+

{{ $encart_food->title}}

+ +
+

{{ $encart_food->subtitle}}

+
+
+ {{ $encart_food->alt_text_picture }} +
+
+
+ {!! $encart_food->text !!} +
+ {{--{{ __('En savoir plus') }}--}} +
+
+
+
+ +
+
+
+

{{ $title_foodBloc2->title}}

+
+

{{ $title_foodBloc2->text}}

+
    + @foreach ($pictos_food as $picto) +
  • + {{ $picto->alt_text_picture }} + {!! clean(nl2br($picto->text)) !!} +
  • + @endforeach +
+
+ Frise +
+ +
+ @if($products_food->count() > 0) +
+
+

{{ __('Les produits') }}

+
+

{{ __('Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleur qualité') }}

+ +
+ @foreach ($products_food as $product) +
+ {{ $product->alt_text_picture}} +

{{ $product->name}}

+ + + {{ __('Découvrir') }} + +
+ @endforeach +
+
+ @endif +
+ +
+ +@endsection diff --git a/resources/views/front/gammes/index.blade.php b/resources/views/front/gammes/index.blade.php new file mode 100644 index 0000000..95805fe --- /dev/null +++ b/resources/views/front/gammes/index.blade.php @@ -0,0 +1,62 @@ +@extends('layouts.frontend') +@section('title', $seoDatum->title) +@section('description', $seoDatum->description) +@section('keywords', $seoDatum->keywords) + +@section('content') + +
+

{{ __('Tous les produits Doux') }}

+ Montage avec des Fingers Doux sur un plateau en bois et des drumsticks goût poivre sur une planche apéro en bois. + +
+ +
+
+
+

{{ __('Toutes nos gammes') }}

+
+ Cuisinier avec un coq +
+
+

{{ __('Des produits incontournables, Authentiques et Innovants !') }}

+
+
+ +
+
+
+
+ @foreach ($gammes as $gamme) + @if ($gamme->slug != 'food-service') +
+ {{ $gamme->alt_text_picture}} + + + {{ $gamme->title}} + +
+ @endif + @endforeach +
+
+
+
+ +@endsection diff --git a/resources/views/front/gammes/product.blade.php b/resources/views/front/gammes/product.blade.php new file mode 100644 index 0000000..a61bd29 --- /dev/null +++ b/resources/views/front/gammes/product.blade.php @@ -0,0 +1,8 @@ +
+ {{ $product->alt_text_picture }} +

{{ $product->name }}

+ + + {{ __('Découvrir') }} + +
diff --git a/resources/views/front/gammes/products-list.blade.php b/resources/views/front/gammes/products-list.blade.php new file mode 100644 index 0000000..19d744d --- /dev/null +++ b/resources/views/front/gammes/products-list.blade.php @@ -0,0 +1,11 @@ +
+@foreach ($products as $product) + @if (isset($childGamme)) + @if ($product->gamme_id === $childGamme->id) + @include('front.gammes.product') + @endif + @elseif ($product->gamme_id === $gamme->id) + @include('front.gammes.product') + @endif +@endforeach +
\ No newline at end of file diff --git a/resources/views/front/gammes/show.blade.php b/resources/views/front/gammes/show.blade.php new file mode 100644 index 0000000..38fe70f --- /dev/null +++ b/resources/views/front/gammes/show.blade.php @@ -0,0 +1,60 @@ +@extends('layouts.frontend') +@section('title', $seoDatum->title) +@section('description', $seoDatum->description) +@section('keywords', $seoDatum->keywords) + +@section('content') + +
+

{{ $gamme->title }}

+ {{ $gamme->alt_text_banner }} + +
+ +
+
+ +
+ +

{{ $gamme->title }}

+
+

{{ $gamme->text }}

+
+
+
+
+ @include('front.gammes.products-list') + @if ( $gamme->childGammes->count() > 0 ) + @foreach ($gamme->childGammes as $childGamme) +
+
+

{{ $childGamme->title }}

+

{{ $childGamme->text }}

+
+ {{ $childGamme->alt_text_banner }} +
+ @include('front.gammes.products-list') + @endforeach + @endif +
+
+ +@endsection diff --git a/resources/views/front/home.blade.php b/resources/views/front/home.blade.php new file mode 100644 index 0000000..d8de938 --- /dev/null +++ b/resources/views/front/home.blade.php @@ -0,0 +1,111 @@ +@extends('layouts.frontend') +@section('title', $seoDatum->title) +@section('description', $seoDatum->description) +@section('keywords', $seoDatum->keywords) + +@section('content') +
+ @if (isset($slider)) +
+ @foreach ($slides as $slide) +
+
+ {{ $slide->alt_text_picture}} +
+
+ @endforeach +
+

{!! clean(nl2br($slider->commentaire)) !!}

+ @endif + +
+ +
+
+
+ +
+ {{ $encart_home->title}} +
+
+

+ {{ $encart_home->subtitle}} +

+
+
+ {{ $encart_home->alt_text_picture}} +
+
+

{{ __('Notre Histoire') }}

+
+ {!! clean(nl2br($encart_home->text)) !!} +
+

+ {{ __('En savoir plus') }} +

+
+
+
+
+ +
+
+
+

{{ __("Poulet, Cordon bleu ou Wing's ?") }}

+
+

+ {{ __('Découvrez tous nos produits à base de volaille.') }} +

+

{{ __('home.products.text')}}

+ {{ __('Découvrir')}} + @if (isset($products_home)) +
+ @foreach ($products_home as $product) +
+ + {{ $product->alt_text_picture}} + +
+ @endforeach +
+ @endif +
+ Poulet frit +
+ +@if (isset($post_home)) +
+
+
+

+ L'actualité de la marque Doux +

+
+
+ {{ $post_home->alt_text_picture_home}} +
+

{{ $post_home->title}}

+

{!! clean(nl2br($post_home->text)) !!}

+

+ {{ __('En savoir plus')}} +

+
+
+@endif +@endsection diff --git a/resources/views/front/legals.blade.php b/resources/views/front/legals.blade.php new file mode 100644 index 0000000..87cf87f --- /dev/null +++ b/resources/views/front/legals.blade.php @@ -0,0 +1,43 @@ +@extends('layouts.frontend') +@section('title', $seoDatum->title) +@section('description', $seoDatum->description) +@section('keywords', $seoDatum->keywords) + +@section('content') + +
+

{{ $mentions_legales->title }}

+ {{ $mentions_legales->title }} + +
+ +
+
+ +
+ +

{{ $mentions_legales->title }}

+
+ {!! $mentions_legales->text !!} +
+
+ +@endsection diff --git a/resources/views/front/news.blade.php b/resources/views/front/news.blade.php new file mode 100644 index 0000000..6951be2 --- /dev/null +++ b/resources/views/front/news.blade.php @@ -0,0 +1,123 @@ +@extends('layouts.frontend') +@section('title', $seoDatum->title) +@section('description', $seoDatum->description) +@section('keywords', $seoDatum->keywords) + +@section('content') + +
+

{{ __('Les actualités Doux')}}

+ Aiguillettes de poulet enrobées d'une chapelure cornflakes Doux sur une planche apéro en bois + +
+ +
+
+
+ +

{{ __('Nos conseils ...')}}

+
+
+
+ {{ $advice_news->alt_text_picture1 }} +
+
+

{{ $advice_news->title1 }}

+

{!! clean(nl2br($advice_news->text1)) !!}

+
+
+
+
+ {{ $advice_news->alt_text_picture2 }} +
+
+ {{ $advice_news->alt_text_picture3 }} +
+
+

{{ $advice_news->title2 }}

+

{!! clean(nl2br($advice_news->text2)) !!}

+
+
+
+
+ +
+
+
+
+

+ {!! __('les questions
utiles') !!} +

+
+
+ Four, friteuse, poelle +
+
+
    + @foreach ($texts_news as $text) +
  • +

    {{ $text->title}}

    +

    {!! clean(nl2br($text->text)) !!}

    +
  • + @endforeach +
+
+
+ +
+
+
+

{{ $title_newsPosts->title}}

+
+

{{ $title_newsPosts->text}}

+
+ @foreach ($posts as $post) +
+ {{ $post->alt_text_picture_news }} +

{{ $post->title }}

+

{!! clean(nl2br($post->text)) !!}

+
+ @endforeach +
+
+ Frise +
+ +
+
+

{{ __('Nos nouveautés')}}

+
+

{{ __('Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleure qualité')}}

+ + @if (isset($products_news)) +
+ @foreach ($products_news as $product) +
+
+ + {{ $product->alt_text_picture}} + +
+
+ @endforeach +
+ @endif +
+ +@endsection diff --git a/resources/views/front/policy.blade.php b/resources/views/front/policy.blade.php new file mode 100644 index 0000000..d75fc8d --- /dev/null +++ b/resources/views/front/policy.blade.php @@ -0,0 +1,43 @@ +@extends('layouts.frontend') +@section('title', $seoDatum->title) +@section('description', $seoDatum->description) +@section('keywords', $seoDatum->keywords) + +@section('content') + +
+

{{ $privacy_policy->title }}

+ {{ $privacy_policy->title }} + +
+ +
+
+ +
+ +

{{ $privacy_policy->title }}

+
+ {!! $privacy_policy->text !!} +
+
+ +@endsection diff --git a/resources/views/front/product.blade.php b/resources/views/front/product.blade.php new file mode 100644 index 0000000..ed2306a --- /dev/null +++ b/resources/views/front/product.blade.php @@ -0,0 +1,87 @@ +@extends('layouts.frontend') +@section('title', $seoDatum->title) +@section('description', strip_tags($seoDatum->description)) +@section('keywords', $seoDatum->keywords) + +@section('content') + +
+

{{ $gamme->title}}

+ {{ $gamme->alt_text_banner }} + {{-- --}} + +
+ +
+
+ +
+ +

{{ $product->name}}

+
+
+
+ @php + $pictos = json_decode($product->pictos); + @endphp +
+ {{ $product->alt_text_picture }} +
+ @if (isset($pictos)) +
    + @foreach ($pictos as $picto) + @if ($picto->status) +
  • {{$picto->name}}{{ $picto->time }}
    {{ $picto->temp }}
  • + @endif + @endforeach +
+ @endif +
+
+

{!! clean(nl2br($product->description)) !!}

+ @php + $plusproduit = json_decode($product->plusproduit); + @endphp + @if (isset($plusproduit)) + + {!! __('les +Produit') !!} + +
    + @foreach ($plusproduit as $plus) + @if (isset($plus->name)) +
  • +

    {{ $plus->name }}

    + @if ($plus->url != '') + + {{$plus->name}} + + @endif +
  • + @endif + @endforeach +
+ @endif +
+
+
+
+ +@endsection diff --git a/resources/views/front/products-list.blade.php b/resources/views/front/products-list.blade.php new file mode 100644 index 0000000..49c9272 --- /dev/null +++ b/resources/views/front/products-list.blade.php @@ -0,0 +1,5 @@ +
+@foreach ($products as $product) + @include('front.gammes.product') +@endforeach +
diff --git a/resources/views/front/search.blade.php b/resources/views/front/search.blade.php new file mode 100644 index 0000000..bf94658 --- /dev/null +++ b/resources/views/front/search.blade.php @@ -0,0 +1,41 @@ +@extends('layouts.frontend') + +@section('title', 'Recherche produits') +@section('description', 'Résultats de recherche') + +@section('content') +
+

{{ $search_title }}

+ {{ $search_title }} + +
+
+
+ +

{{ __('Résultats') }}

+
+
+
+
+ @include('front.products-list') +
+
+@endsection diff --git a/resources/views/front/site-map.blade.php b/resources/views/front/site-map.blade.php new file mode 100644 index 0000000..bbbfc01 --- /dev/null +++ b/resources/views/front/site-map.blade.php @@ -0,0 +1,102 @@ +@extends('layouts.frontend') +@section('title', __('Accueil')) +@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) + +@section('content') + +
+
+
+
+
+
p- CoconPro-regular
+
+ +
+
+
+
+
p- CoconPro-regular
+
+ +
+
+
+
+
p- CoconPro-regular
+
+ +
+
+
+ +
+
+

Plan du site

+

H2 - Rubik - Regular

+
+
+ photo +
+
+

H3 - CoconPro Regular

+

iD HALAL est la marque spécialiste du halal dédiée aux professionnels ; boucheries, restaurations traditionnelles et points chauds. , la marque est un acteur incontournable sur le marché de la restauration. >> Rubik - Light

+

H3

+

ID Halal s’engage quotidiennement à vous proposer des produits halal vous garantissant origine, traçabilité et certification.

+

+ label + label +

+

boutons

+
+
+
+
+ +
+

H2 - Phrase d’accroche

+
+ +
+
+

H2

+

iD HALAL vous propose un large éventail de produits de volaille et de charcuterie Halal en frais et en surgelé. Une gamme complète de produits incontournables et authentiques pour varier les plaisirs et répondre aux attentes des consommateurs d’aujourd’hui.

+ Bouton +
+ +
+ +
+
+

H2

+ +
+
+
+
+

h3

+
+

Des recettes qualitatives élaborées avec du filet de poulet anatomique + et des ingrédients nobles. Une offre gourmande et généreuse pour toute la famille!

+
+
+ +
+
+
+
+

+ Découvrez la gamme "L'Authentique" ! +

+
+

Des recettes qualitatives élaborées avec du filet de poulet anatomique + et des ingrédients nobles. Une offre gourmande et généreuse pour toute la famille!

+
+
+ +
+
+
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/gammes.blade.php b/resources/views/gammes.blade.php deleted file mode 100644 index 28b80c2..0000000 --- a/resources/views/gammes.blade.php +++ /dev/null @@ -1,89 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') - -
-
-

Nos gammes produits - -

- -
- -
-
-
- - -

Toutes nos gammes

-
- -

Des produits incontournables, Authentiques et Innovants !

-
-
- -
-
-
- -
-
- - - - - - Vollailes entières - -
-
- - - - - - Franks - -
-
- - - - - - Découpe - -
-
- - - - - - Découpe - -
-
- - - - - - Découpe - -
-
-
-
-
-
- -@endsection \ No newline at end of file diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php deleted file mode 100644 index ecb2155..0000000 --- a/resources/views/home.blade.php +++ /dev/null @@ -1,137 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') -
-
-
-
-
- -
-
-
- Doux,
Plaisir et qualité
à la française -
-
- -
-
-
- -
-
-
- Doux,
Plaisir et qualité
à la française -
-
- -
-
-
- -
-
-
- Doux,
Plaisir et qualité
à la française -
-
- -
-
-
- -
-
-
-

- La référence française de la volaille -

-
-

- 90 ans d'expérience au service de la gourmandise -

-
-
- photo -
-
-

Notre Histoire

-

- Tout commence lorsque Pierre Doux se lance dans une activité de - négoce de poulet en 1933, avant de créer une entreprise à son - nom en 1955. Durant près de 90 ans, l'activité n'a cessé de se - développer toujours dans le but de répondre aux besoins nouveaux - de la société ; offrant en plus des volailles entières, des - produits panés ou des Chicken Franks rapides et faciles à - préparer. -

-

- Aujourd'hui, la marque Doux est présente dans plus de 100 pays - avec des gammes de produits variés : volailles entières, - découpes ou produits élaborés halal pour satisfaire les - exigences culturelles et religieuses des familles aux 4 coins du - monde. En 2021, elle continue d'innover pour satisfaire vos - envies avec son Steak Haché de poulet et ses Mini Chicken - Franks. -

-

- En savoir plus -

-
-
-
-
- -
-
-

Poulet, Cordon bleu ou Wing's ?

-

- Découvrez tous nos produits à base de volaille. -

-

bloc texte, lorem ipsum...

- Découvrir -
-
- -
-
- -
-
- -
-
-
- -
- -
-
-

- L'actualité de la marque Doux -

- - - -

- Doux innove et propose sa référence iconique en format mini ! -

- -

- Découvrez nos nouveautés : les Mini Chicken Franks Doux. Original ou - Cheese, retrouvez vos deux recettes préférées en version mini. Ce - format est idéal pour les moments de partage et les repas sur le - pouce. Réchauffez les au micro-ondes, elles seront prêtes en - quelques minutes seulement. Très pratique et pensées pour vous - faciliter la vie ! N'hésitez plus et laissez vous tenter ! -

- -

- En savoir plus -

-
-
-
-@endsection \ No newline at end of file diff --git a/resources/views/layouts/app-footer.blade.php b/resources/views/layouts/app-footer.blade.php deleted file mode 100644 index 09da38c..0000000 --- a/resources/views/layouts/app-footer.blade.php +++ /dev/null @@ -1,100 +0,0 @@ -
- - - - -
-
- -
- - -
- -
-
- -
-
- -
\ No newline at end of file diff --git a/resources/views/layouts/app-head.blade.php b/resources/views/layouts/app-head.blade.php deleted file mode 100644 index a72608e..0000000 --- a/resources/views/layouts/app-head.blade.php +++ /dev/null @@ -1,11 +0,0 @@ - - - -DOUX - @yield('title') - - - - - - -@stack('styles') \ No newline at end of file diff --git a/resources/views/layouts/app-header.blade.php b/resources/views/layouts/app-header.blade.php deleted file mode 100644 index 50ad905..0000000 --- a/resources/views/layouts/app-header.blade.php +++ /dev/null @@ -1,39 +0,0 @@ - - \ No newline at end of file diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php deleted file mode 100644 index 00876f2..0000000 --- a/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,52 +0,0 @@ - - - - - @include('layouts.app-head') - - - -
- @include('layouts.app-header') - @yield('content') - @include('layouts.app-footer') -
- - - - - - @stack('scripts') - - - - - - \ No newline at end of file diff --git a/resources/views/layouts/backend.blade.php b/resources/views/layouts/backend.blade.php new file mode 100644 index 0000000..6377ec7 --- /dev/null +++ b/resources/views/layouts/backend.blade.php @@ -0,0 +1,49 @@ + + + + + @include('layouts.backend.head') + @stack('styles') + {{-- @crudPoliciesCSS() --}} + + + +
+ id); + // exit; + ?> + @include('layouts.backend.navbar') +
+
+ @include('back.modules.message') +
+
+ {{-- @if(isset($modelsClasses)) --}} + @auth + @include('layouts.backend.sidenav') +
+ {{-- @else --}} + @else +
+ {{-- @endif --}} + @endauth + @yield('content') +
+
+
+ @include('layouts.backend.footer') +
+
+
+ @stack('scriptsConstants') + {{-- @include('crud-policies::crud.modules.scriptConstants') --}} + + + + + {{-- @crudPoliciesJS() --}} + @stack('scripts') + + + \ No newline at end of file diff --git a/resources/views/layouts/backend/footer.blade.php b/resources/views/layouts/backend/footer.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/layouts/backend/head.blade.php b/resources/views/layouts/backend/head.blade.php new file mode 100644 index 0000000..c70fdf5 --- /dev/null +++ b/resources/views/layouts/backend/head.blade.php @@ -0,0 +1,30 @@ + + + +{{ config('app.name') }}@hasSection('title') - @yield('title')@endif + + + +@hasSection('canonical') + +@else + +@endif + + +@hasSection('metaIndex') + +@else + +@endif + + + + +{{--@preload('mix-manifest.json')--}} + + + + + + diff --git a/resources/views/layouts/backend/navbar.blade.php b/resources/views/layouts/backend/navbar.blade.php new file mode 100644 index 0000000..639e9fe --- /dev/null +++ b/resources/views/layouts/backend/navbar.blade.php @@ -0,0 +1,27 @@ + diff --git a/resources/views/layouts/backend/sidenav.blade.php b/resources/views/layouts/backend/sidenav.blade.php new file mode 100644 index 0000000..e3c9c82 --- /dev/null +++ b/resources/views/layouts/backend/sidenav.blade.php @@ -0,0 +1,195 @@ + diff --git a/resources/views/layouts/frontend.blade.php b/resources/views/layouts/frontend.blade.php new file mode 100644 index 0000000..44ccc93 --- /dev/null +++ b/resources/views/layouts/frontend.blade.php @@ -0,0 +1,25 @@ + + + + + @include('layouts.frontend.app-head') + @stack('styles') + + + +
+ @include('layouts.frontend.app-header') +
+ @yield('content') +
+ @include('layouts.frontend.cookie') + @include('layouts.frontend.app-footer') +
+ + + + @stack('scripts') + + + + \ No newline at end of file diff --git a/resources/views/layouts/frontend/app-footer.blade.php b/resources/views/layouts/frontend/app-footer.blade.php new file mode 100644 index 0000000..bd881fb --- /dev/null +++ b/resources/views/layouts/frontend/app-footer.blade.php @@ -0,0 +1,68 @@ + diff --git a/resources/views/layouts/frontend/app-head.blade.php b/resources/views/layouts/frontend/app-head.blade.php new file mode 100644 index 0000000..69f14cc --- /dev/null +++ b/resources/views/layouts/frontend/app-head.blade.php @@ -0,0 +1,23 @@ + + + + + + + +{{ config('app.name') }}@hasSection('title') - @yield('title')@endif + + + +@hasSection('canonical') + +@else + +@endif + + +@hasSection('metaIndex') + +@else + +@endif diff --git a/resources/views/layouts/frontend/app-header.blade.php b/resources/views/layouts/frontend/app-header.blade.php new file mode 100644 index 0000000..6039ea0 --- /dev/null +++ b/resources/views/layouts/frontend/app-header.blade.php @@ -0,0 +1,136 @@ + + +@push('scripts') + +@endpush diff --git a/resources/views/layouts/frontend/cookie.blade.php b/resources/views/layouts/frontend/cookie.blade.php new file mode 100644 index 0000000..02d0e1a --- /dev/null +++ b/resources/views/layouts/frontend/cookie.blade.php @@ -0,0 +1,99 @@ +
+
+ +
+ + +
+ +
+
+ +
+
+ +@push('scripts') + +@endpush diff --git a/resources/views/legals.blade.php b/resources/views/legals.blade.php deleted file mode 100644 index 7679cdc..0000000 --- a/resources/views/legals.blade.php +++ /dev/null @@ -1,104 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') - -
-
-
-
-
-
-
p- CoconPro-regular
-
- -
-
-
-
-
p- CoconPro-regular
-
- -
-
-
-
-
p- CoconPro-regular
-
- -
-
-
- -
-
-

Mentions légales

-

H2 - Rubik - Regular

-
-
- photo -
-
-

H3 - CoconPro Regular

-

iD HALAL est la marque spécialiste du halal dédiée aux professionnels ; boucheries, restaurations traditionnelles et points chauds. , la marque est un acteur incontournable sur le marché de la restauration. >> Rubik - Light

-

H3

-

ID Halal s’engage quotidiennement à vous proposer des produits halal vous garantissant origine, traçabilité et certification.

-

- label - label -

-

boutons

-
-
-
-
- -
-

H2 - Phrase d’accroche

-
- -
-
-

H2

-

iD HALAL vous propose un large éventail de produits de volaille et de charcuterie Halal en frais et en surgelé. Une gamme complète de produits incontournables et authentiques pour varier les plaisirs et répondre aux attentes des consommateurs d’aujourd’hui.

- Bouton -
- -
- -
-
-

H2

- -
-
-
-
-

h3

-
-

Des recettes qualitatives élaborées avec du filet de poulet anatomique - et des ingrédients nobles. Une offre gourmande et généreuse pour toute la famille!

-
-
- -
-
-
-
-

- Découvrez la gamme "L'Authentique" ! -

-
-

Des recettes qualitatives élaborées avec du filet de poulet anatomique - et des ingrédients nobles. Une offre gourmande et généreuse pour toute la famille!

-
-
- -
-
-
-
-
- -@endsection \ No newline at end of file diff --git a/resources/views/news.blade.php b/resources/views/news.blade.php deleted file mode 100644 index 31c4995..0000000 --- a/resources/views/news.blade.php +++ /dev/null @@ -1,123 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') - -
-
-

+ d'info ?

- -
- -
-
-
-

Nos conseils ...

-
-
-
- photo -
-
-

...Nutritionnels

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

-
-
-
-
- photo -
-
-

...Cuisines

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

-
-
-
-
- -
-
-
-
-

- les questions -
utiles -

-
-
- photo -
-
-
    -
  • -

    Peut-on recongeler après décongélation ?

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

    -
  • -
  • -

    Qu'est-ce qu'un repas équilibré ?

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

    -
  • -
  • -

    Comment la volaille participe à mon équilibre ?

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

    -
  • -
-
-
- -
-
-

Actualité

-

Lorem Ipsum

-
-
- -

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr - ud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq - ua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

-
-
- -

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr - ud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq - ua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

-
-
- -

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr - ud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq - ua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

-
-
-
- -
- -
-
-

Nos nouveautés

-

Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleure qualité

- -
-
-
photo
-
-
-
photo
-
-
-
photo
-
-
- - -
-
- -
- -@endsection \ No newline at end of file diff --git a/resources/views/policy.blade.php b/resources/views/policy.blade.php deleted file mode 100644 index 23f8203..0000000 --- a/resources/views/policy.blade.php +++ /dev/null @@ -1,104 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') - -
-
-
-
-
-
-
p- CoconPro-regular
-
- -
-
-
-
-
p- CoconPro-regular
-
- -
-
-
-
-
p- CoconPro-regular
-
- -
-
-
- -
-
-

Charte de confidentialité

-

H2 - Rubik - Regular

-
-
- photo -
-
-

H3 - CoconPro Regular

-

iD HALAL est la marque spécialiste du halal dédiée aux professionnels ; boucheries, restaurations traditionnelles et points chauds. , la marque est un acteur incontournable sur le marché de la restauration. >> Rubik - Light

-

H3

-

ID Halal s’engage quotidiennement à vous proposer des produits halal vous garantissant origine, traçabilité et certification.

-

- label - label -

-

boutons

-
-
-
-
- -
-

H2 - Phrase d’accroche

-
- -
-
-

H2

-

iD HALAL vous propose un large éventail de produits de volaille et de charcuterie Halal en frais et en surgelé. Une gamme complète de produits incontournables et authentiques pour varier les plaisirs et répondre aux attentes des consommateurs d’aujourd’hui.

- Bouton -
- -
- -
-
-

H2

- -
-
-
-
-

h3

-
-

Des recettes qualitatives élaborées avec du filet de poulet anatomique - et des ingrédients nobles. Une offre gourmande et généreuse pour toute la famille!

-
-
- -
-
-
-
-

- Découvrez la gamme "L'Authentique" ! -

-
-

Des recettes qualitatives élaborées avec du filet de poulet anatomique - et des ingrédients nobles. Une offre gourmande et généreuse pour toute la famille!

-
-
- -
-
-
-
-
- -@endsection \ No newline at end of file diff --git a/resources/views/product.blade.php b/resources/views/product.blade.php deleted file mode 100644 index db10fed..0000000 --- a/resources/views/product.blade.php +++ /dev/null @@ -1,66 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') - -
-
-

Volailles entières -

- -
- -
-
-
- - -

Le produit 1

-
-
-
- photo -
    -
  • 15-20 min 180°C
  • -
  • 15-20 min 180°C
  • -
  • 10 min à la poêle
  • -
-
-
-

Lorem ipsum

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt.

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullam

- - Les + - Produit - -
    -
  • -

    Lorem ipsum dolor sit amet consectetur

    - - photo - -
  • -
  • -

    Lorem ipsum dolor sit amet consectetur

    - - photo - -
  • -
  • -

    Lorem ipsum dolor sit amet consectetur

    - - photo - -
  • -
-
-
-
-
-
- -@endsection \ No newline at end of file diff --git a/resources/views/products-list.blade.php b/resources/views/products-list.blade.php deleted file mode 100644 index efc4954..0000000 --- a/resources/views/products-list.blade.php +++ /dev/null @@ -1,74 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') - -
-
-

Nos produits

- Volailles -
- -
-
-
- - - - -

Nos produits de la gamme

-
- -

Des produits Incontournables, Authentiques et Innovants !

-
-
- -
-
-
- - Produit -

Produit 1

- - - Découvrir - -
-
- - -

Produit 2

- - - Découvrir - -
-
- - -

Produit 3

- - - Découvrir - -
-
- - -

Produit 4

- - - Découvrir - -
-
-
-
- -@endsection \ No newline at end of file diff --git a/resources/views/site-map.blade.php b/resources/views/site-map.blade.php deleted file mode 100644 index d6f6cf4..0000000 --- a/resources/views/site-map.blade.php +++ /dev/null @@ -1,104 +0,0 @@ -@extends('layouts.app') -@section('title', __('Accueil')) -@section('description', __("Découvrez DOUX, des produits de volailles françaises.")) - -@section('content') - -
-
-
-
-
-
-
p- CoconPro-regular
-
- -
-
-
-
-
p- CoconPro-regular
-
- -
-
-
-
-
p- CoconPro-regular
-
- -
-
-
- -
-
-

Plan du site

-

H2 - Rubik - Regular

-
-
- photo -
-
-

H3 - CoconPro Regular

-

iD HALAL est la marque spécialiste du halal dédiée aux professionnels ; boucheries, restaurations traditionnelles et points chauds. , la marque est un acteur incontournable sur le marché de la restauration. >> Rubik - Light

-

H3

-

ID Halal s’engage quotidiennement à vous proposer des produits halal vous garantissant origine, traçabilité et certification.

-

- label - label -

-

boutons

-
-
-
-
- -
-

H2 - Phrase d’accroche

-
- -
-
-

H2

-

iD HALAL vous propose un large éventail de produits de volaille et de charcuterie Halal en frais et en surgelé. Une gamme complète de produits incontournables et authentiques pour varier les plaisirs et répondre aux attentes des consommateurs d’aujourd’hui.

- Bouton -
- -
- -
-
-

H2

- -
-
-
-
-

h3

-
-

Des recettes qualitatives élaborées avec du filet de poulet anatomique - et des ingrédients nobles. Une offre gourmande et généreuse pour toute la famille!

-
-
- -
-
-
-
-

- Découvrez la gamme "L'Authentique" ! -

-
-

Des recettes qualitatives élaborées avec du filet de poulet anatomique - et des ingrédients nobles. Une offre gourmande et généreuse pour toute la famille!

-
-
- -
-
-
-
-
- -@endsection \ No newline at end of file diff --git a/resources/views/vendor/translation/forms/search.blade.php b/resources/views/vendor/translation/forms/search.blade.php new file mode 100644 index 0000000..7d3a822 --- /dev/null +++ b/resources/views/vendor/translation/forms/search.blade.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/resources/views/vendor/translation/forms/select.blade.php b/resources/views/vendor/translation/forms/select.blade.php new file mode 100644 index 0000000..7d0c0f0 --- /dev/null +++ b/resources/views/vendor/translation/forms/select.blade.php @@ -0,0 +1,20 @@ +
+ + + +
+ +
+ +
diff --git a/resources/views/vendor/translation/forms/text.blade.php b/resources/views/vendor/translation/forms/text.blade.php new file mode 100644 index 0000000..6d04ab3 --- /dev/null +++ b/resources/views/vendor/translation/forms/text.blade.php @@ -0,0 +1,18 @@ +
+ + + @if($errors->has($field)) + @foreach($errors->get($field) as $error) +

{!! $error !!}

+ @endforeach + @endif +
\ No newline at end of file diff --git a/resources/views/vendor/translation/icons/globe.blade.php b/resources/views/vendor/translation/icons/globe.blade.php new file mode 100644 index 0000000..902dabf --- /dev/null +++ b/resources/views/vendor/translation/icons/globe.blade.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/views/vendor/translation/icons/translate.blade.php b/resources/views/vendor/translation/icons/translate.blade.php new file mode 100644 index 0000000..e9e438a --- /dev/null +++ b/resources/views/vendor/translation/icons/translate.blade.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/views/vendor/translation/languages/create.blade.php b/resources/views/vendor/translation/languages/create.blade.php new file mode 100644 index 0000000..e356b59 --- /dev/null +++ b/resources/views/vendor/translation/languages/create.blade.php @@ -0,0 +1,41 @@ +@extends('translation::layout') + +@section('body') + +
+ +
+ + {{ __('translation::translation.add_language') }} + +
+ +
+ +
+ + + +
+ + @include('translation::forms.text', ['field' => 'name', 'label' => __('translation::translation.language_name'), ]) + + @include('translation::forms.text', ['field' => 'locale', 'label' => __('translation::translation.locale'), ]) + +
+ +
+ + + +
+ +
+ +@endsection \ No newline at end of file diff --git a/resources/views/vendor/translation/languages/index.blade.php b/resources/views/vendor/translation/languages/index.blade.php new file mode 100644 index 0000000..80ec635 --- /dev/null +++ b/resources/views/vendor/translation/languages/index.blade.php @@ -0,0 +1,56 @@ +@extends('translation::layout') + +@section('body') + + @if(count($languages)) + +
+ +
+ + {{ __('translation::translation.languages') }} + + + +
+ +
+ + + + + + + + + + + + @foreach($languages as $language => $name) + + + + + @endforeach + +
{{ __('translation::translation.language_name') }}{{ __('translation::translation.locale') }}
+ {{ $name }} + + + {{ $language }} + +
+ +
+ +
+ + @endif + +@endsection diff --git a/resources/views/vendor/translation/languages/translations/create.blade.php b/resources/views/vendor/translation/languages/translations/create.blade.php new file mode 100644 index 0000000..c69deac --- /dev/null +++ b/resources/views/vendor/translation/languages/translations/create.blade.php @@ -0,0 +1,56 @@ +@extends('translation::layout') + +@section('body') + +
+ +
+ + {{ __('translation::translation.add_translation') }} + +
+ +
+ +
+ + + +
+ + @include('translation::forms.text', ['field' => 'group', 'label' => __('translation::translation.group_label'), 'placeholder' => __('translation::translation.group_placeholder')]) + + @include('translation::forms.text', ['field' => 'key', 'label' => __('translation::translation.key_label'), 'placeholder' => __('translation::translation.key_placeholder')]) + + @include('translation::forms.text', ['field' => 'value', 'label' => __('translation::translation.value_label'), 'placeholder' => __('translation::translation.value_placeholder')]) + +
+ + + +
+ +
+ + @include('translation::forms.text', ['field' => 'namespace', 'label' => __('translation::translation.namespace_label'), 'placeholder' => __('translation::translation.namespace_placeholder')]) + +
+ + +
+ +
+ + + +
+ +
+ +@endsection \ No newline at end of file diff --git a/resources/views/vendor/translation/languages/translations/index.blade.php b/resources/views/vendor/translation/languages/translations/index.blade.php new file mode 100644 index 0000000..ae4a1ed --- /dev/null +++ b/resources/views/vendor/translation/languages/translations/index.blade.php @@ -0,0 +1,89 @@ +@extends('translation::layout') + +@section('body') + +
+ +
+ +
+ + {{ __('translation::translation.translations') }} + +
+ + @include('translation::forms.search', ['name' => 'filter', 'value' => Request::get('filter')]) + + @include('translation::forms.select', ['name' => 'language', 'items' => $languages, 'submit' => true, 'selected' => $language]) + +
+ + @include('translation::forms.select', ['name' => 'group', 'items' => $groups, 'submit' => true, 'selected' => Request::get('group'), 'optional' => false]) + + {{-- + {{ __('translation::translation.add') }} + --}} + +
+ +
+ +
+ +
+ + @if(count($translations)) + + + + + + + + + + + + + + @foreach($translations as $type => $items) + + @foreach($items as $group => $translations) + + @foreach($translations as $key => $value) + + @if(!is_array($value[config('app.locale')])) + + + + + + + @endif + + @endforeach + + @endforeach + + @endforeach + + +
{{ __('translation::translation.group_single') }}{{ __('translation::translation.key') }}{{ config('app.locale') }}{{ $language }}
{{ $group }}{{ $key }}{{ $value[config('app.locale')] }} + + +
+ + @endif + +
+ +
+ +
+ +@endsection diff --git a/resources/views/vendor/translation/layout.blade.php b/resources/views/vendor/translation/layout.blade.php new file mode 100644 index 0000000..2719fb1 --- /dev/null +++ b/resources/views/vendor/translation/layout.blade.php @@ -0,0 +1,24 @@ + + + + + + + + {{ config('app.name') }} + + + + +
+ + @include('translation::nav') + @include('translation::notifications') + + @yield('body') + +
+ + + + diff --git a/resources/views/vendor/translation/nav.blade.php b/resources/views/vendor/translation/nav.blade.php new file mode 100644 index 0000000..a2bd799 --- /dev/null +++ b/resources/views/vendor/translation/nav.blade.php @@ -0,0 +1,23 @@ + diff --git a/resources/views/vendor/translation/notifications.blade.php b/resources/views/vendor/translation/notifications.blade.php new file mode 100644 index 0000000..9da2484 --- /dev/null +++ b/resources/views/vendor/translation/notifications.blade.php @@ -0,0 +1,15 @@ +@if(Session::has('success')) + +@endif + +@if(Session::has('error')) + +@endif \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 1022553..9b0fa4e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,16 +2,42 @@ /** * Routes file - * + * * @category Description * @package Category * @author Name * @license www.url.com MIT * @link Tag + * phpcs:ignore PEAR.Commenting.FileComment.MissingVersion */ +use App\Http\Controllers\Bo\AdviceController; +use App\Http\Controllers\Bo\EncartsController; +use App\Http\Controllers\Bo\GammesController; +use App\Http\Controllers\Bo\HomeController; +use App\Http\Controllers\Bo\MomentsController; +use App\Http\Controllers\Bo\PictoBrandsController; +use App\Http\Controllers\Bo\PictosController; +use App\Http\Controllers\Bo\PostsController; +use App\Http\Controllers\Bo\ProductsController; +use App\Http\Controllers\Bo\SeoDataController; +use App\Http\Controllers\Bo\SlidersController; +use App\Http\Controllers\Bo\SlidesController; +use App\Http\Controllers\Bo\TextsController; +use App\Http\Controllers\Bo\TitlesController; +use App\Http\Controllers\HomeController as ControllersHomeController; +use App\Http\Controllers\MarqueController as ControllersMarqueController; +use App\Http\Controllers\GammesController as ControllersGammesController; +use App\Http\Controllers\NewsController as ControllersNewsController; +use App\Http\Controllers\ProductsController as ControllersProductsController; +use App\Http\Controllers\ContactController as ControllersContactController; +use App\Http\Controllers\FoodServiceController as ControllersFoodServiceController; +use App\Http\Controllers\LegalsController as ControllersLegalsController; +use App\Http\Controllers\PolicyController as ControllersPolicyController; use Illuminate\Support\Facades\Route; -use App\Http\Controllers\HomeController; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Lang; +use Illuminate\Support\Str; /* |-------------------------------------------------------------------------- @@ -24,14 +50,97 @@ use App\Http\Controllers\HomeController; | */ -Route::get('/', [HomeController::class, 'index'])->name('home'); -Route::view('/la-marque', 'a-propos')->name('wasup'); -Route::view('/les-produits', 'products-list')->name('products'); -Route::view('/le-produit', 'product')->name('product'); -Route::view('/les-gammes', 'gammes')->name('gammes'); -Route::view('/les-categories', 'categorie')->name('categories'); -Route::view('/les-actualites', 'news')->name('news'); -Route::view('/food-service', 'food-service')->name('food'); -Route::view('/mentions-legales', 'legals')->name('cgu'); -Route::view('/charte-confidentialite', 'policy')->name('policy'); -Route::view('/plan-site', 'site-map')->name('site-map'); +Route::prefix('bo') + ->name('bo.') + ->group( + function () { + Route::middleware([]) + ->group( + function () { + // guest:web middleware specified in AuthController + Auth::routes( + [ + 'login' => true, + 'logout' => true, + 'register' => false, + 'reset' => false, // for resetting passwords + 'confirm' => false, // for additional password confirmations + 'verify' => false, // for email verification + ] + ); + } + ); + Route::middleware(['auth:web', 'back-end-globals', 'lang-check']) + ->group( + function () { + Route::get( + '/', + [ + HomeController::class, + 'home' + ] + )->name('home'); + Route::resources( + [ + 'sliders' => SlidersController::class, + 'slides' => SlidesController::class, + ] + ); + Route::resource('seo_data', SeoDataController::class) + ->except(['index', 'create', 'store', 'destroy', 'show']); + Route::resource('moments', MomentsController::class) + ->except(['create', 'store', 'destroy', 'show']); + Route::resource('encarts', EncartsController::class) + ->except(['index', 'create', 'store', 'destroy', 'show']); + Route::resource('pictos', PictosController::class)->except(['show']); + Route::resource('posts', PostsController::class)->except(['show']); + Route::resource('pictobrands', PictoBrandsController::class)->except(['show']); + Route::resource('gammes', GammesController::class)->except(['show']); + Route::resource('products', ProductsController::class)->except(['show']); + Route::resource('advice', AdviceController::class) + ->except(['index', 'create', 'store', 'destroy', 'show']); + Route::resource('texts', TextsController::class)->except(['show']); + Route::resource('titles', TitlesController::class) + ->except(['index', 'create', 'store', 'destroy', 'show']); + Route::get( + '/slide/change-order/{slide}/{action}', + [ + SlidesController::class, + 'changeOrder' + ] + )->name('slides.change-order'); + Route::get('/pictos/{page}', [PictosController::class, 'index'])->name('pictos.content'); + Route::get('/texts/{page}', [TextsController::class, 'index'])->name('texts.content'); + } + ); + } + ); + +$langs = ['en', 'es', '']; + +foreach ($langs as $lang) { + Route::middleware(['front-end-globals', 'lang-check']) + ->prefix($lang) + ->name($lang == '' ? '' : $lang . '.') + ->group( + function () use ($lang) { + Route::get('/', [ControllersHomeController::class, 'index'])->name('home'); + Route::get('/'.Str::slug(Lang::get('urls.marque',[], $lang)), [ControllersMarqueController::class, 'index'])->name('wasup'); + Route::get('/'.Str::slug(Lang::get('urls.gammes',[], $lang)), [ControllersGammesController::class, 'index'])->name('gammes.index'); + Route::get('/'.Str::slug(Lang::get('urls.gamme',[], $lang)).'/{gammeSlug}', [ControllersGammesController::class, 'show'])->name('gammes.show'); + Route::get( + '/'.Str::slug(Lang::get('urls.produit',[], $lang)).'/{gammeSlug}/{productSlug}', + [ControllersProductsController::class, 'show'] + )->name('product.show'); + Route::get('/'.Str::slug(Lang::get('urls.news',[], $lang)), [ControllersNewsController::class, 'index'])->name('news'); + Route::get('/'.Str::slug(Lang::get('urls.food-service',[], $lang)), [ControllersFoodServiceController::class, 'index'])->name('food'); + Route::get('/'.Str::slug(Lang::get('urls.legals',[], $lang)), [ControllersLegalsController::class, 'index'])->name('cgu'); + Route::get('/'.Str::slug(Lang::get('urls.policy',[], $lang)), [ControllersPolicyController::class, 'index'])->name('policy'); + //Route::view('/plan-site', 'front.site-map')->name('site-map'); + Route::get('/'.Str::slug(Lang::get('urls.search',[], $lang)), [ControllersProductsController::class, 'search'])->name('search'); + //Classic + Route::get('/'.Str::slug(Lang::get('urls.contact',[], $lang)), [ControllersContactController::class, 'contact'])->name('contact'); + Route::post('/contact', [ControllersContactController::class, 'contactSubmit'])->name('contact.submit'); + } + ); +} diff --git a/webpack.mix.js b/webpack.mix.js index 9502826..dbc3564 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -1,77 +1,52 @@ -// const mix = require('laravel-mix'); +const path = require('path'); +const mix = require('laravel-mix'); +const { CleanWebpackPlugin } = require('clean-webpack-plugin'); +require('laravel-mix-polyfill'); -// /* -// |-------------------------------------------------------------------------- -// | Mix Asset Management -// |-------------------------------------------------------------------------- -// | -// | Mix provides a clean, fluent API for defining some Webpack build steps -// | for your Laravel applications. By default, we are compiling the CSS -// | file for the application as well as bundling up all the JS files. -// | -// */ - -// mix.js('resources/js/app.js', 'public/js') -// .postCss('resources/css/app.css', 'public/css', [ -// // -// ]); - -const path = require("path"); -const mix = require("laravel-mix"); -const { CleanWebpackPlugin } = require("clean-webpack-plugin"); -require("laravel-mix-polyfill"); mix.webpackConfig({ resolve: { alias: { - "@": path.resolve("resources/assets"), - }, + '@': path.resolve('resources/assets') + } }, plugins: [ new CleanWebpackPlugin({ cleanOnceBeforeBuildPatterns: [ - "css/*", - "!css/cookies-ldc.css", - "js/*", - "!js/ldcweb-cn.min.js", - "images/*", - "fonts/*", - "assets/*", - ], - }), + 'css/*', + 'js/*', + 'images/*', + 'fonts/*', + '~/assets/*' + ] + }) ], }); -let assetDir = "assets"; +let assetDir = 'assets'; mix.options({ fileLoaderDirs: { images: `${assetDir}/images`, - fonts: `${assetDir}/fonts`, + fonts: `${assetDir}/fonts` }, postCss: [ - require("postcss-discard-comments")({ - removeAll: true, - }), - ], + require('postcss-discard-comments')({ + removeAll: true + }) + ] }); // mix Backend -mix.js("resources/js/app.js", "public/js") - .sass("resources/sass/app.scss", "public/css") +mix.js("resources/js/back.js", "public/js/preload-back.js") + .sass("resources/sass/back.scss", "public/css/preload-back.css") // mix Frontend - .js("resources/js/caroussel.js", "public/js/") - // .sass("resources/sass/main.scss", "public/css/preload-main.css") - // onepages (flammand et notre histoire) - // .js("resources/js/onepage.js", "public/js") - // .sass("resources/sass/app-onepage.scss", "public/css") - // .sass("resources/sass/onepage-extensions.scss", "public/css") + .js("resources/js/frontend/front.js", "public/js/preload-front.js") + .sass("resources/sass/frontend/compile.scss", "public/css/preload-front.css") .vue() .polyfill({ enabled: true, useBuiltIns: "usage", - targets: { firefox: "50", ie: 11 }, + targets: { "firefox": "50", "ie": 11 } }); -// mix.js("resources/js/vendor/oms.js", "public/js/oms-min.js"); - // Copy Blade Images Assets -mix.copyDirectory("resources/assets", "public/assets"); +mix.copyDirectory('resources/assets', 'public/assets');