From: Louis Jeckel Date: Thu, 13 Aug 2020 14:23:35 +0000 (+0200) Subject: blocks, detail com campaigns X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=f05e2f676c5257339115d94b1a37a35587e92d05;p=psq.git blocks, detail com campaigns --- diff --git a/app/Helpers/Fields.php b/app/Helpers/Fields.php index 65dffb2..5589562 100644 --- a/app/Helpers/Fields.php +++ b/app/Helpers/Fields.php @@ -10,7 +10,7 @@ class Fields public static function fullToolbar(): array { return [ - [ 'header' => [2, 3, false] ], + [ 'header' => [3, 4, false] ], 'link', 'bold', 'italic', diff --git a/app/Helpers/StreamingPlatforms.php b/app/Helpers/StreamingPlatforms.php new file mode 100644 index 0000000..c78e48b --- /dev/null +++ b/app/Helpers/StreamingPlatforms.php @@ -0,0 +1,23 @@ +forSlug($slug); - \View::share('actu', $actu); return view('actu-labos.show'); } diff --git a/app/Http/Controllers/AdCampaignController.php b/app/Http/Controllers/AdCampaignController.php index 0267fd4..44fc8a1 100644 --- a/app/Http/Controllers/AdCampaignController.php +++ b/app/Http/Controllers/AdCampaignController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\AdCampaign; +use App\Repositories\AdCampaignRepository; use Illuminate\Http\Request; class AdCampaignController extends Controller @@ -15,7 +16,6 @@ class AdCampaignController extends Controller /** * @return \Illuminate\View\View - * @todo : Always last 3 ? * */ public function index() @@ -24,11 +24,22 @@ class AdCampaignController extends Controller ->orderByDesc('id') ->take(3) ->published() + ->visible() ->get(); \View::share('campaigns', $campaigns); return view('com-campaigns.index'); } + public function show($slug, AdCampaignRepository $repository) + { + $campaign = $repository->forSlug($slug); + \View::share('campaign', $campaign); + + return view('com-campaigns.show'); + + } + + } diff --git a/app/Http/Controllers/Admin/AdCampaignController.php b/app/Http/Controllers/Admin/AdCampaignController.php index 7ccac6e..b1d192f 100644 --- a/app/Http/Controllers/Admin/AdCampaignController.php +++ b/app/Http/Controllers/Admin/AdCampaignController.php @@ -7,4 +7,10 @@ use A17\Twill\Http\Controllers\Admin\ModuleController; class AdCampaignController extends ModuleController { protected $moduleName = 'adCampaigns'; + + protected $indexOptions = [ +// 'reorder' => true + ]; } + + diff --git a/app/Http/Controllers/PodcastController.php b/app/Http/Controllers/PodcastController.php index eb20ad5..7291ce1 100644 --- a/app/Http/Controllers/PodcastController.php +++ b/app/Http/Controllers/PodcastController.php @@ -11,7 +11,7 @@ class PodcastController extends Controller public function index() { - \View::share('podcast', Podcast::published()->orderByDesc('id')->first()); + \View::share('podcast', Podcast::published()->visible()->orderByDesc('id')->first()); return view('podcasts.index'); } } diff --git a/app/Models/AdCampaign.php b/app/Models/AdCampaign.php index f357f5a..b1c12d3 100644 --- a/app/Models/AdCampaign.php +++ b/app/Models/AdCampaign.php @@ -2,6 +2,7 @@ namespace App\Models; +use A17\Twill\Models\Behaviors\HasBlocks; use A17\Twill\Models\Behaviors\HasSlug; use A17\Twill\Models\Behaviors\HasMedias; use A17\Twill\Models\Behaviors\HasPosition; @@ -9,9 +10,14 @@ use A17\Twill\Models\Behaviors\Sortable; use A17\Twill\Models\Model; use Laravel\Scout\Searchable; +/** + * Class AdCampaign + * @package App\Models + * @property string $url + */ class AdCampaign extends Model implements Sortable { - use HasSlug, HasMedias, HasPosition; + use HasSlug, HasMedias, HasPosition, HasBlocks; use Searchable; protected $fillable = [ @@ -19,14 +25,14 @@ class AdCampaign extends Model implements Sortable 'title', 'description', 'position', - 'url', 'publish_start_date', 'publish_end_date', 'organization' ]; public $appends = [ - 'image' + 'image', + 'url' ]; public $slugAttributes = [ @@ -68,4 +74,13 @@ class AdCampaign extends Model implements Sortable { return $this->image('image', 'preview'); } + + + /** + * @return string + */ + public function getUrlAttribute(): string + { + return route('com-campaign.show', ['slug' => $this->slug]) ?? '#'; + } } diff --git a/app/Models/LaboArticle.php b/app/Models/LaboArticle.php index 210aa76..42063e7 100644 --- a/app/Models/LaboArticle.php +++ b/app/Models/LaboArticle.php @@ -12,7 +12,7 @@ use A17\Twill\Models\Model; * Class LaboArticle * @package App\Models * @property string $content - * @property string $link + * @property string $url * @property string $preview */ class LaboArticle extends Model implements Sortable @@ -59,7 +59,7 @@ class LaboArticle extends Model implements Sortable /** * @return string */ - public function getLinkAttribute(): string + public function getUrlAttribute(): string { return route('actus-labos.show', ['slug' => $this->slug]); } diff --git a/app/Models/Podcast.php b/app/Models/Podcast.php index 4d52972..7f67dc2 100644 --- a/app/Models/Podcast.php +++ b/app/Models/Podcast.php @@ -12,7 +12,7 @@ use Illuminate\Support\Facades\Storage; class Podcast extends Model { - use HasSlug, HasMedias, HasFiles, HasBlocks; + use HasSlug, HasMedias, HasFiles; protected $fillable = [ 'published', diff --git a/app/Repositories/AdCampaignRepository.php b/app/Repositories/AdCampaignRepository.php index 65c9c1d..48f93f4 100644 --- a/app/Repositories/AdCampaignRepository.php +++ b/app/Repositories/AdCampaignRepository.php @@ -2,6 +2,7 @@ namespace App\Repositories; +use A17\Twill\Repositories\Behaviors\HandleBlocks; use A17\Twill\Repositories\Behaviors\HandleSlugs; use A17\Twill\Repositories\Behaviors\HandleMedias; use A17\Twill\Repositories\ModuleRepository; @@ -9,7 +10,7 @@ use App\Models\AdCampaign; class AdCampaignRepository extends ModuleRepository { - use HandleSlugs, HandleMedias; + use HandleSlugs, HandleMedias, HandleBlocks; public function __construct(AdCampaign $model) { diff --git a/app/Repositories/PodcastRepository.php b/app/Repositories/PodcastRepository.php index ea97011..f028ace 100644 --- a/app/Repositories/PodcastRepository.php +++ b/app/Repositories/PodcastRepository.php @@ -12,7 +12,7 @@ use App\Models\Podcast; class PodcastRepository extends ModuleRepository { - use HandleSlugs, HandleMedias, HandleFiles, HandleBlocks, HandleRepeaters; + use HandleSlugs, HandleMedias, HandleFiles, HandleBlocks; public function __construct(Podcast $model) diff --git a/config/twill.php b/config/twill.php index 086909f..47e9883 100644 --- a/config/twill.php +++ b/config/twill.php @@ -286,6 +286,11 @@ return [ 'title' => 'Invité', 'icon' => 'image', 'component' => 'a17-block-guest' + ], + 'youtube' => [ + 'title' => 'Vidéo YouTube', + 'icon' => 'video', + 'component' => 'a17-block-youtube' ] ], 'crops' => [ @@ -298,6 +303,16 @@ return [ ], ], + 'content' => [ + 'default' => [ + [ + 'name' => 'default', + 'ratio' => 0 + ] + + ] + ], + 'image' => [ 'desktop' => [ [ diff --git a/database/migrations/2020_08_13_124520_drop_url_col_from_ad_campaigns.php b/database/migrations/2020_08_13_124520_drop_url_col_from_ad_campaigns.php new file mode 100644 index 0000000..226150a --- /dev/null +++ b/database/migrations/2020_08_13_124520_drop_url_col_from_ad_campaigns.php @@ -0,0 +1,32 @@ +dropColumn('url'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('ad_campaigns', function (Blueprint $table) { + $table->string('url')->nullable(); + }); + } +} diff --git a/public/admin/js/admin.js b/public/admin/js/admin.js index bbcb562..0b9da0d 100644 --- a/public/admin/js/admin.js +++ b/public/admin/js/admin.js @@ -2173,6 +2173,8 @@ __webpack_require__.r(__webpack_exports__); // // // +// +// /* harmony default export */ __webpack_exports__["default"] = ({ name: "CampaignHit", props: ['hit', 'flip'] @@ -49667,48 +49669,52 @@ var render = function() { return _vm.hit ? _c("div", { staticClass: "box p-1" }, [ _c("div", [ - _c( - "h3", - [ - _vm.hit._highlightResult === undefined - ? _c("span", { domProps: { innerHTML: _vm._s(_vm.hit.title) } }) - : _vm._e(), - _vm._v(" "), - _c("ais-highlight", { - attrs: { attribute: "title", hit: _vm.hit } - }) - ], - 1 - ) + _c("a", { attrs: { href: _vm.hit.url } }, [ + _c( + "h3", + [ + _vm.hit._highlightResult === undefined + ? _c("span", { + domProps: { innerHTML: _vm._s(_vm.hit.title) } + }) + : _vm._e(), + _vm._v(" "), + _c("ais-highlight", { + attrs: { attribute: "title", hit: _vm.hit } + }) + ], + 1 + ) + ]) ]), _vm._v(" "), - _c("div", { staticClass: "row" }, [ - _c("div", { class: { "col-sm-6": true, "order-2": _vm.flip } }, [ - _c("img", { - staticClass: "w-100", - attrs: { src: _vm.hit.image, alt: "" } - }) - ]), + _c("div", [ + _c("img", { + class: { + "mw-40 mx-1": true, + "float-left": !_vm.flip, + "float-right": _vm.flip + }, + attrs: { src: _vm.hit.image, alt: "" } + }), _vm._v(" "), - _c("div", { class: { "col-sm-6": true, "order-1": _vm.flip } }, [ - _c("div", { - staticClass: "pb-2", - domProps: { innerHTML: _vm._s(_vm.hit.description) } - }), - _vm._v(" "), - _c( - "a", - { - class: { - "click-here": true, - "bottom-right": !_vm.flip, - "bottom-left": _vm.flip - }, - attrs: { href: _vm.hit.url, target: "_blank" } + _c("div", { + staticClass: "pb-2", + domProps: { innerHTML: _vm._s(_vm.hit.description) } + }), + _vm._v(" "), + _c( + "a", + { + class: { + "click-here": true, + "bottom-right": !_vm.flip, + "bottom-left": _vm.flip }, - [_vm._v("Lire ici")] - ) - ]) + attrs: { href: _vm.hit.url } + }, + [_vm._v("Lire ici")] + ) ]) ]) : _vm._e() diff --git a/public/css/app.css b/public/css/app.css index 3322380..9b1186a 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -11482,6 +11482,12 @@ ul.leaders span + span { font-family: "Avenir Next Demi", sans-serif; } +div.youtube-block iframe { + display: block; + margin: 1rem auto; + max-width: 100%; +} + body { margin-bottom: 4rem; } @@ -11490,6 +11496,8 @@ body { div.pill-box div { box-shadow: 0 2px 0 rgba(90, 97, 105, 0.11), 0 4px 8px rgba(90, 97, 105, 0.12), 0 10px 10px rgba(90, 97, 105, 0.06), 0 7px 70px rgba(90, 97, 105, 0.1); background-color: white; + overflow: hidden; + position: relative; } .header-logo { @@ -11514,14 +11522,14 @@ div.pill-box div > a { .click-here.bottom-left, div.pill-box div > a.bottom-left { - left: 25px; + left: 10px; position: absolute; bottom: 0; } .click-here.bottom-right, div.pill-box div > a.bottom-right { - right: 25px; + right: 10px; position: absolute; bottom: 0; } @@ -11556,7 +11564,12 @@ div.pill-box div > a.bottom-right { color: white !important; } -article > .content { +article h2 { + font-size: 22px; + text-align: center; +} + +article .content { max-width: 800px; font-size: larger; margin: auto; @@ -11578,3 +11591,14 @@ article img.top-img { color: inherit !important; } +.block-img { + max-width: 100%; + max-height: 350px; + display: block; + margin: auto; +} + +.mw-40 { + max-width: 40%; +} + diff --git a/public/js/app.js b/public/js/app.js index cf83dd6..27a4e1c 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -7368,6 +7368,8 @@ __webpack_require__.r(__webpack_exports__); // // // +// +// /* harmony default export */ __webpack_exports__["default"] = ({ name: "CampaignHit", props: ['hit', 'flip'] @@ -79147,48 +79149,52 @@ var render = function() { return _vm.hit ? _c("div", { staticClass: "box p-1" }, [ _c("div", [ - _c( - "h3", - [ - _vm.hit._highlightResult === undefined - ? _c("span", { domProps: { innerHTML: _vm._s(_vm.hit.title) } }) - : _vm._e(), - _vm._v(" "), - _c("ais-highlight", { - attrs: { attribute: "title", hit: _vm.hit } - }) - ], - 1 - ) + _c("a", { attrs: { href: _vm.hit.url } }, [ + _c( + "h3", + [ + _vm.hit._highlightResult === undefined + ? _c("span", { + domProps: { innerHTML: _vm._s(_vm.hit.title) } + }) + : _vm._e(), + _vm._v(" "), + _c("ais-highlight", { + attrs: { attribute: "title", hit: _vm.hit } + }) + ], + 1 + ) + ]) ]), _vm._v(" "), - _c("div", { staticClass: "row" }, [ - _c("div", { class: { "col-sm-6": true, "order-2": _vm.flip } }, [ - _c("img", { - staticClass: "w-100", - attrs: { src: _vm.hit.image, alt: "" } - }) - ]), + _c("div", [ + _c("img", { + class: { + "mw-40 mx-1": true, + "float-left": !_vm.flip, + "float-right": _vm.flip + }, + attrs: { src: _vm.hit.image, alt: "" } + }), _vm._v(" "), - _c("div", { class: { "col-sm-6": true, "order-1": _vm.flip } }, [ - _c("div", { - staticClass: "pb-2", - domProps: { innerHTML: _vm._s(_vm.hit.description) } - }), - _vm._v(" "), - _c( - "a", - { - class: { - "click-here": true, - "bottom-right": !_vm.flip, - "bottom-left": _vm.flip - }, - attrs: { href: _vm.hit.url, target: "_blank" } + _c("div", { + staticClass: "pb-2", + domProps: { innerHTML: _vm._s(_vm.hit.description) } + }), + _vm._v(" "), + _c( + "a", + { + class: { + "click-here": true, + "bottom-right": !_vm.flip, + "bottom-left": _vm.flip }, - [_vm._v("Lire ici")] - ) - ]) + attrs: { href: _vm.hit.url } + }, + [_vm._v("Lire ici")] + ) ]) ]) : _vm._e() diff --git a/resources/js/components/AdCampaign/CampaignHit.vue b/resources/js/components/AdCampaign/CampaignHit.vue index a3401dd..c0d3f49 100644 --- a/resources/js/components/AdCampaign/CampaignHit.vue +++ b/resources/js/components/AdCampaign/CampaignHit.vue @@ -2,20 +2,22 @@
+

+
-
-
- -
-
-
- Lire ici -
+
+ + + +
+ Lire ici + +
diff --git a/resources/sass/_blocks.scss b/resources/sass/_blocks.scss new file mode 100644 index 0000000..8e253a6 --- /dev/null +++ b/resources/sass/_blocks.scss @@ -0,0 +1,10 @@ +//YOUTUBE + +div.youtube-block { + iframe { + display: block; + margin: 1rem auto; + max-width: 100%; + } + +} diff --git a/resources/sass/app.scss b/resources/sass/app.scss index df5d069..a2e1806 100644 --- a/resources/sass/app.scss +++ b/resources/sass/app.scss @@ -10,6 +10,7 @@ @import "covers"; @import "pill_boxes"; @import "title_dots"; +@import "blocks"; body { margin-bottom: 4rem; @@ -21,6 +22,8 @@ body { 0 10px 10px rgba(90, 97, 105, 0.06), 0 7px 70px rgba(90, 97, 105, 0.1); background-color: white; + overflow: hidden; + position: relative; } .header-logo { @@ -45,13 +48,13 @@ a { &.bottom { &-left { - left:25px; + left:10px; position: absolute; bottom: 0; } &-right { - right:25px; + right:10px; position: absolute; bottom: 0; } @@ -102,7 +105,12 @@ a { } article { - > .content { + h2 { + font-size: 22px; + text-align: center; + + } + .content { max-width: 800px; font-size: larger; margin: auto; @@ -125,3 +133,14 @@ article { } } + +.block-img { + max-width: 100%; + max-height: 350px; + display: block; + margin: auto; +} + +.mw-40{ + max-width: 40%; +} diff --git a/resources/views/actu-labos/index.blade.php b/resources/views/actu-labos/index.blade.php index 664c916..bf2fa58 100644 --- a/resources/views/actu-labos/index.blade.php +++ b/resources/views/actu-labos/index.blade.php @@ -24,7 +24,7 @@
@component('components.simple-preview', ['actu' => $actus->shift()]) @endcomponent - +
diff --git a/resources/views/actu-labos/show.blade.php b/resources/views/actu-labos/show.blade.php index 1479099..12f4142 100644 --- a/resources/views/actu-labos/show.blade.php +++ b/resources/views/actu-labos/show.blade.php @@ -3,14 +3,23 @@ @section('content')
-

{{$actu->title}}

+

L'actu des labos

-
- -

{{$actu->chapo}}

-
- {!! $actu->content !!} +
+
+ +
+ +
+

{{$actu->title}}

+
{{$actu->chapo}}
+
+ {!! $actu->content !!} +
+ +
+
diff --git a/resources/views/admin/adCampaigns/form.blade.php b/resources/views/admin/adCampaigns/form.blade.php index d182db9..6c545ad 100644 --- a/resources/views/admin/adCampaigns/form.blade.php +++ b/resources/views/admin/adCampaigns/form.blade.php @@ -11,14 +11,11 @@ 'label' => 'Description', 'maxlength' => 400 ]) - @formField('input', [ - 'name' => 'url', - 'label' => 'Lien', - 'maxlength' => 255 - ]) + @formField('medias', [ 'name' => 'image', 'label' => 'Image', ]) + @formField('block_editor', ['blocks' => ['image', 'text', 'youtube']]) @stop diff --git a/resources/views/admin/blocks/image.blade.php b/resources/views/admin/blocks/image.blade.php new file mode 100644 index 0000000..f5d5336 --- /dev/null +++ b/resources/views/admin/blocks/image.blade.php @@ -0,0 +1,8 @@ + +@formField('medias', [ + 'name' => 'content', // role + 'label' => 'Image', + 'withVideoUrl' => false, + 'translated' => false, +]) + diff --git a/resources/views/admin/blocks/youtube.blade.php b/resources/views/admin/blocks/youtube.blade.php new file mode 100644 index 0000000..50b4be0 --- /dev/null +++ b/resources/views/admin/blocks/youtube.blade.php @@ -0,0 +1,6 @@ +@formField('input', [ + 'name' => 'url', + 'label' => 'URL', + 'maxlength' => 250, + 'translated' => false, +]) diff --git a/resources/views/com-campaigns/index.blade.php b/resources/views/com-campaigns/index.blade.php index bfd698b..5f9a484 100644 --- a/resources/views/com-campaigns/index.blade.php +++ b/resources/views/com-campaigns/index.blade.php @@ -7,7 +7,7 @@
- +
@@ -21,12 +21,12 @@
- +
- +
diff --git a/resources/views/com-campaigns/show.blade.php b/resources/views/com-campaigns/show.blade.php new file mode 100644 index 0000000..0772012 --- /dev/null +++ b/resources/views/com-campaigns/show.blade.php @@ -0,0 +1,20 @@ +@extends('layouts.app') + +@section('content') + +
+ + +

MARKETING & COM : LES CAMPAGNES DE LA SEMAINE

+ +
+

{{$campaign->title}}

+
+ {!! $campaign->description !!} +
+ {!! $campaign->renderBlocks() !!} +
+ +
+ +@endsection diff --git a/resources/views/components/simple-preview.blade.php b/resources/views/components/simple-preview.blade.php index f51c839..64a9587 100644 --- a/resources/views/components/simple-preview.blade.php +++ b/resources/views/components/simple-preview.blade.php @@ -2,17 +2,19 @@ @if($actu)
+
- -

{{$actu->title}}

-

{{$actu->chapo}}

{{ $actu->preview }} - Lire la suite + Lire la suite
diff --git a/resources/views/site/blocks/image.blade.php b/resources/views/site/blocks/image.blade.php new file mode 100644 index 0000000..2fab201 --- /dev/null +++ b/resources/views/site/blocks/image.blade.php @@ -0,0 +1 @@ + diff --git a/resources/views/site/blocks/youtube.blade.php b/resources/views/site/blocks/youtube.blade.php new file mode 100644 index 0000000..f195428 --- /dev/null +++ b/resources/views/site/blocks/youtube.blade.php @@ -0,0 +1,11 @@ +@php +$url = \App\Helpers\StreamingPlatforms::youtubeEmbed($block->input('url')); +@endphp +
+ @if($url === null) +

URL Invalide !

+ @else + + @endif +
+ diff --git a/routes/web.php b/routes/web.php index cc9c3eb..01b1b03 100644 --- a/routes/web.php +++ b/routes/web.php @@ -53,8 +53,11 @@ Route::domain(env('CLIENT_DOMAIN_NAME'))->group(function() { Route::get('search', 'FileController@search')->name('archives'); - Route::get('campagnes-et-communication', 'AdCampaignController@index'); - Route::get('campagnes-et-communication/archives', 'AdCampaignController@search'); + Route::prefix('campagnes-et-communication')->group(function() { + Route::get('/', 'AdCampaignController@index')->name('com-campaign.index'); + Route::get('archives', 'AdCampaignController@search')->name('com-campaign.search'); + Route::get('{slug}', 'AdCampaignController@show')->name('com-campaign.show'); + }); Route::get('podcasts', 'PodcastController@index');