diff --git a/app/Enums/Page.php b/app/Enums/Page.php new file mode 100644 index 0000000..a7c4129 --- /dev/null +++ b/app/Enums/Page.php @@ -0,0 +1,21 @@ + 0, + 'marque' => 1, + 'food-service' => 2, + ]; + } +} diff --git a/app/Http/Controllers/Bo/SlidersController.php b/app/Http/Controllers/Bo/SlidersController.php index 83d8233..123d9a2 100644 --- a/app/Http/Controllers/Bo/SlidersController.php +++ b/app/Http/Controllers/Bo/SlidersController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Bo; +use App\Enums\Page; use App\Http\Controllers\Controller; use App\Http\Requests\StoreSliderRequest; use App\Http\Requests\UpdateSliderRequest; @@ -25,9 +26,9 @@ class SlidersController extends Controller * * @return \Illuminate\Http\Response */ - public function create() + public function create(Slider $slider) { - return view('back.sliders.create'); + return view('back.sliders.create', compact('slider')); } /** @@ -39,6 +40,7 @@ class SlidersController extends Controller public function store(StoreSliderRequest $request) { $slider = new Slider($request->validated()); + // $slider->page = Page::home(); if (!$slider->saveOrFail()) { return redirect()->route('bo.sliders.edit', $slider->id)->with('error', 'Le slider n\'a pas été crée'); diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index aa05666..07f83c4 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -2,12 +2,15 @@ namespace App\Http\Controllers; +use App\Models\Slider; use Illuminate\Http\Request; class HomeController extends Controller { public function index() { - return view('front.home'); + $slider = Slider::where('published', 1)->first(); + + return view('front.home', compact('slider')); } } diff --git a/app/Http/Requests/StoreSliderRequest.php b/app/Http/Requests/StoreSliderRequest.php index d5acf15..809287f 100644 --- a/app/Http/Requests/StoreSliderRequest.php +++ b/app/Http/Requests/StoreSliderRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests; +use App\Enums\Page; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Str; diff --git a/app/Http/Requests/UpdateSliderRequest.php b/app/Http/Requests/UpdateSliderRequest.php index d69911b..bef83d9 100644 --- a/app/Http/Requests/UpdateSliderRequest.php +++ b/app/Http/Requests/UpdateSliderRequest.php @@ -14,7 +14,7 @@ class UpdateSliderRequest extends StoreSliderRequest return array_merge( parent::rules(), [ - 'slug' => 'required', + 'slug' => 'required|unique:sliders,slug,' . $this->slider->id ] ); } diff --git a/app/Models/Slider.php b/app/Models/Slider.php index f9c2f75..3fffbb0 100644 --- a/app/Models/Slider.php +++ b/app/Models/Slider.php @@ -2,6 +2,7 @@ namespace App\Models; +// use App\Enums\Page; use Carbon\Carbon; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -10,6 +11,10 @@ class Slider extends Model { use HasFactory; + // public $castEnums = [ + // 'page' => Page::class + // ]; + protected $fillable = [ 'label', 'slug', diff --git a/composer.json b/composer.json index b13e9dd..c4c9e10 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,8 @@ "laravel/framework": "^8.65", "laravel/sanctum": "^2.11", "laravel/tinker": "^2.5", - "laravel/ui": "^3.3" + "laravel/ui": "^3.3", + "mews/purifier": "^3.3" }, "require-dev": { "facade/ignition": "^2.5", diff --git a/composer.lock b/composer.lock index af6e7c5..46b18e6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8f7837eb85b0725169b90fb56c8b1646", + "content-hash": "13cf508d573ec94972a8af8466df849d", "packages": [ { "name": "asm89/stack-cors", @@ -422,6 +422,60 @@ ], "time": "2020-12-29T14:50:06+00:00" }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.13.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75" + }, + "dist": { + "type": "zip", + "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": { + "psr-0": { + "HTMLPurifier": "library/" + }, + "files": [ + "library/HTMLPurifier.composer.php" + ], + "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.0.4", @@ -1615,6 +1669,87 @@ ], "time": "2021-09-25T08:23:19+00:00" }, + { + "name": "mews/purifier", + "version": "3.3.6", + "source": { + "type": "git", + "url": "https://github.com/mewebstudio/Purifier.git", + "reference": "1d033fc32b98036226002c38747d4a45424d5f28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mewebstudio/Purifier/zipball/1d033fc32b98036226002c38747d4a45424d5f28", + "reference": "1d033fc32b98036226002c38747d4a45424d5f28", + "shasum": "" + }, + "require": { + "ezyang/htmlpurifier": "4.13.*", + "illuminate/config": "^5.8|^6.0|^7.0|^8.0", + "illuminate/filesystem": "^5.8|^6.0|^7.0|^8.0", + "illuminate/support": "^5.8|^6.0|^7.0|^8.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": { + "psr-4": { + "Mews\\Purifier\\": "src/" + }, + "files": [ + "src/helpers.php" + ] + }, + "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.6" + }, + "time": "2021-10-14T15:27:18+00:00" + }, { "name": "monolog/monolog", "version": "2.3.5", 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/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/2021_04_14_115938_create_sliders_table.php b/database/migrations/2021_04_14_115938_create_sliders_table.php index 19b9560..fb91eec 100644 --- a/database/migrations/2021_04_14_115938_create_sliders_table.php +++ b/database/migrations/2021_04_14_115938_create_sliders_table.php @@ -15,6 +15,7 @@ class CreateSlidersTable extends Migration { Schema::create('sliders', function (Blueprint $table) { $table->id(); + $table->smallInteger('page'); $table->string('label'); $table->string('slug')->unique(); $table->string('commentaire')->nullable(); diff --git a/database/seeders/SlidersSeeder.php b/database/seeders/SlidersSeeder.php index afeb811..00d0b9c 100644 --- a/database/seeders/SlidersSeeder.php +++ b/database/seeders/SlidersSeeder.php @@ -2,9 +2,9 @@ namespace Database\Seeders; +// use App\Enums\Page; use App\Models\Slide; use App\Models\Slider; -use Illuminate\Support\Str; use Illuminate\Database\Seeder; class SlidersSeeder extends Seeder @@ -16,8 +16,8 @@ class SlidersSeeder extends Seeder */ public function run() { + // Slider::factory(2)->create(['page' => Page::home(),]) Slider::factory(2)->create() - ->each(function (Slider $slider) { $i = 0; diff --git a/public/assets/images/slide_home_1.jpg b/public/assets/images/slide_home_1.jpg new file mode 100644 index 0000000..a31f29a Binary files /dev/null and b/public/assets/images/slide_home_1.jpg differ diff --git a/public/images/slides/11_T8q4W.jpg b/public/assets/images/slide_home_2.jpg similarity index 100% rename from public/images/slides/11_T8q4W.jpg rename to public/assets/images/slide_home_2.jpg diff --git a/public/images/slides/10_Y3Ijf.jpg b/public/assets/images/slide_home_3.jpg similarity index 100% rename from public/images/slides/10_Y3Ijf.jpg rename to public/assets/images/slide_home_3.jpg diff --git a/public/images/slides/11_29Ws2.jpg b/public/images/slides/11_29Ws2.jpg deleted file mode 100644 index 5f96dfd..0000000 Binary files a/public/images/slides/11_29Ws2.jpg and /dev/null differ diff --git a/public/images/slides/11_6pgXO.jpg b/public/images/slides/11_6pgXO.jpg deleted file mode 100644 index 5f96dfd..0000000 Binary files a/public/images/slides/11_6pgXO.jpg and /dev/null differ diff --git a/public/images/slides/1_jkK3x.jpg b/public/images/slides/1_jkK3x.jpg deleted file mode 100644 index 35324b7..0000000 Binary files a/public/images/slides/1_jkK3x.jpg and /dev/null differ diff --git a/public/images/slides/2_VtWKC.jpg b/public/images/slides/2_VtWKC.jpg deleted file mode 100644 index 35324b7..0000000 Binary files a/public/images/slides/2_VtWKC.jpg and /dev/null differ diff --git a/public/images/slides/3_Y6G9f.jpg b/public/images/slides/3_Y6G9f.jpg deleted file mode 100644 index 22ca08e..0000000 Binary files a/public/images/slides/3_Y6G9f.jpg and /dev/null differ diff --git a/public/images/slides/5_M4C25.jpg b/public/images/slides/5_M4C25.jpg deleted file mode 100644 index 5f96dfd..0000000 Binary files a/public/images/slides/5_M4C25.jpg and /dev/null differ diff --git a/public/images/slides/5_pA1MY.jpg b/public/images/slides/5_pA1MY.jpg deleted file mode 100644 index bae0133..0000000 Binary files a/public/images/slides/5_pA1MY.jpg and /dev/null differ diff --git a/public/images/slides/7_Sm9N8.jpg b/public/images/slides/7_Sm9N8.jpg deleted file mode 100644 index 03b0d4c..0000000 Binary files a/public/images/slides/7_Sm9N8.jpg and /dev/null differ diff --git a/public/images/slides/8_FkEDw.jpg b/public/images/slides/8_FkEDw.jpg deleted file mode 100644 index 55a1c60..0000000 Binary files a/public/images/slides/8_FkEDw.jpg and /dev/null differ diff --git a/public/images/slides/8_eL1ET.jpg b/public/images/slides/8_eL1ET.jpg deleted file mode 100644 index 1612ea9..0000000 Binary files a/public/images/slides/8_eL1ET.jpg and /dev/null differ diff --git a/public/images/slides/8_rmcT8.jpg b/public/images/slides/8_rmcT8.jpg deleted file mode 100644 index dc752c8..0000000 Binary files a/public/images/slides/8_rmcT8.jpg and /dev/null differ diff --git a/public/images/slides/9_l5r05.jpg b/public/images/slides/9_l5r05.jpg deleted file mode 100644 index 1612ea9..0000000 Binary files a/public/images/slides/9_l5r05.jpg and /dev/null differ diff --git a/resources/views/back/sliders/form-inputs.blade.php b/resources/views/back/sliders/form-inputs.blade.php index 6026dec..1955b7d 100644 --- a/resources/views/back/sliders/form-inputs.blade.php +++ b/resources/views/back/sliders/form-inputs.blade.php @@ -5,9 +5,8 @@ @include('back.modules.input-error', ['inputName'=>'slug'])
- - - @include('back.modules.input-error', ['inputName'=>'commentaire']) + +
published) !== 0)checked @endif> diff --git a/resources/views/back/sliders/index.blade.php b/resources/views/back/sliders/index.blade.php index 476a80e..903426f 100644 --- a/resources/views/back/sliders/index.blade.php +++ b/resources/views/back/sliders/index.blade.php @@ -14,7 +14,7 @@ - + diff --git a/resources/views/back/slides/form-inputs.blade.php b/resources/views/back/slides/form-inputs.blade.php index 2f1eec0..9e282ad 100644 --- a/resources/views/back/slides/form-inputs.blade.php +++ b/resources/views/back/slides/form-inputs.blade.php @@ -64,7 +64,7 @@ -
+{{--

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

@@ -81,4 +81,4 @@ link_new_tab) !== 0)checked @endif> @include('back.modules.input-error', ['inputName'=>'link_new_tab']) -
\ No newline at end of file +
--}} \ No newline at end of file diff --git a/resources/views/front/home.blade.php b/resources/views/front/home.blade.php index ad70467..fc5aa28 100644 --- a/resources/views/front/home.blade.php +++ b/resources/views/front/home.blade.php @@ -5,26 +5,15 @@ @section('content')
-
-
- + @foreach ($slider->slides as $slide) +
+
+ +
- -
-
-
- -
- -
-
-
- -
- -
+ @endforeach
-

Doux,
Plaisir et qualité
à la française

+

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

{{ __('Label') }}{{ __('Commentaire') }}{{ __('Titre de la page') }} {{ __('Publié') }}