]> _ Git - psq.git/commitdiff
add social articles
authorLouis Jeckel <louis.jeckel@outlook.cm>
Thu, 13 Aug 2020 15:47:02 +0000 (17:47 +0200)
committerLouis Jeckel <louis.jeckel@outlook.cm>
Thu, 13 Aug 2020 15:47:02 +0000 (17:47 +0200)
21 files changed:
app/Http/Controllers/Admin/PdfFileController.php
app/Http/Controllers/Admin/SocialArticleController.php [new file with mode: 0644]
app/Http/Controllers/SocialArticleController.php [new file with mode: 0644]
app/Http/Requests/Admin/SocialArticleRequest.php [new file with mode: 0644]
app/Models/Article.php
app/Models/Revisions/GuestRevision.php [deleted file]
app/Models/Revisions/SocialArticleRevision.php [new file with mode: 0644]
app/Models/Slugs/SocialArticleSlug.php [new file with mode: 0644]
app/Models/SocialArticle.php [new file with mode: 0644]
app/Models/Translations/GuestTranslation.php [deleted file]
app/PdfFile.php
app/Repositories/SocialArticleRepository.php [new file with mode: 0644]
config/twill-navigation.php
database/migrations/2020_08_13_145002_create_social_articles_tables.php [new file with mode: 0644]
resources/views/admin/pdfFiles/form.blade.php
resources/views/admin/socialArticles/form.blade.php [new file with mode: 0644]
resources/views/errors/404.blade.php
resources/views/site/layouts/block.blade.php
resources/views/social-articles/show.blade.php [new file with mode: 0644]
routes/admin.php
routes/web.php

index 8f564b6fedcc971bbd4fec7a6ff07bfb6b1897b8..b278ed53c64d87876ceafcad918969b3b2f94d71 100644 (file)
@@ -9,5 +9,9 @@ class PdfFileController extends ModuleController
     protected $moduleName = 'pdfFiles';
 
 
+
+
+
+
 }
 
diff --git a/app/Http/Controllers/Admin/SocialArticleController.php b/app/Http/Controllers/Admin/SocialArticleController.php
new file mode 100644 (file)
index 0000000..14558d5
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Http\Controllers\Admin;
+
+use A17\Twill\Http\Controllers\Admin\ModuleController;
+
+class SocialArticleController extends ModuleController
+{
+    protected $moduleName = 'socialArticles';
+
+    protected $indexColumns = [
+        'title' => [
+            'title' => 'Titre',
+            'field' => 'title',
+            'sort' => true,
+        ],
+        'count' => [
+            'title' => "Nombre d'impressions",
+            'field' => 'count',
+        ],
+    ];
+
+    protected $permalinkBase = 'article';
+}
diff --git a/app/Http/Controllers/SocialArticleController.php b/app/Http/Controllers/SocialArticleController.php
new file mode 100644 (file)
index 0000000..3827455
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\SocialArticle;
+use App\Repositories\SocialArticleRepository;
+use Illuminate\Http\Request;
+use Symfony\Component\HttpKernel\Exception\HttpException;
+
+class SocialArticleController extends Controller
+{
+    public function show($slug, SocialArticleRepository $repository)
+    {
+        /** @var SocialArticle $article */
+        $article = $repository->forSlug($slug);
+
+        if($article === null) {
+            abort(404, "Cet article n'existe pas !");
+        }
+
+        $article->addView();
+
+        \View::share('article', $article);
+
+        return view('social-articles.show');
+    }
+}
diff --git a/app/Http/Requests/Admin/SocialArticleRequest.php b/app/Http/Requests/Admin/SocialArticleRequest.php
new file mode 100644 (file)
index 0000000..eb0d880
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Http\Requests\Admin;
+
+use A17\Twill\Http\Requests\Admin\Request;
+
+class SocialArticleRequest extends Request
+{
+    public function rulesForCreate()
+    {
+        return [];
+    }
+
+    public function rulesForUpdate()
+    {
+        return [];
+    }
+}
index ca3b4d6ee0c166b9a25d622227497d87d99f7ad8..b7bdbad2512dbf1844e621dbe00381475d8e1b7e 100644 (file)
@@ -20,11 +20,11 @@ class Article extends Model implements Sortable
         'description',
         'position',
     ];
-    
+
     public $slugAttributes = [
         'title',
     ];
-    
+
     public $mediasParams = [
         'cover' => [
             'desktop' => [
@@ -55,4 +55,7 @@ class Article extends Model implements Sortable
             ],
         ],
     ];
+
+
+
 }
diff --git a/app/Models/Revisions/GuestRevision.php b/app/Models/Revisions/GuestRevision.php
deleted file mode 100644 (file)
index 2323f1b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace App\Models\Revisions;
-
-use A17\Twill\Models\Revision;
-
-class GuestRevision extends Revision
-{
-    protected $table = "guest_revisions";
-}
diff --git a/app/Models/Revisions/SocialArticleRevision.php b/app/Models/Revisions/SocialArticleRevision.php
new file mode 100644 (file)
index 0000000..f96e224
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Models\Revisions;
+
+use A17\Twill\Models\Revision;
+
+class SocialArticleRevision extends Revision
+{
+    protected $table = "social_article_revisions";
+}
diff --git a/app/Models/Slugs/SocialArticleSlug.php b/app/Models/Slugs/SocialArticleSlug.php
new file mode 100644 (file)
index 0000000..5cf3b14
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Models\Slugs;
+
+use A17\Twill\Models\Model;
+
+class SocialArticleSlug extends Model
+{
+    protected $table = "social_article_slugs";
+}
diff --git a/app/Models/SocialArticle.php b/app/Models/SocialArticle.php
new file mode 100644 (file)
index 0000000..acbc509
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Models;
+
+use A17\Twill\Models\Behaviors\HasBlocks;
+use A17\Twill\Models\Behaviors\HasTranslation;
+use A17\Twill\Models\Behaviors\HasSlug;
+use A17\Twill\Models\Behaviors\HasMedias;
+use A17\Twill\Models\Behaviors\HasFiles;
+use A17\Twill\Models\Behaviors\HasRevisions;
+use A17\Twill\Models\Behaviors\HasPosition;
+use A17\Twill\Models\Behaviors\Sortable;
+use A17\Twill\Models\Model;
+
+class SocialArticle extends Model
+{
+    use HasBlocks, HasSlug, HasMedias;
+
+    protected $fillable = [
+        'published',
+        'title',
+    ];
+
+
+    public $slugAttributes = [
+        'title',
+    ];
+
+
+    /**
+     * Increments view count
+     */
+    public function addView(): void
+    {
+        $this->count ++;
+        $this->save();
+    }
+
+
+}
diff --git a/app/Models/Translations/GuestTranslation.php b/app/Models/Translations/GuestTranslation.php
deleted file mode 100644 (file)
index d74eae6..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace App\Models\Translations;
-
-use A17\Twill\Models\Model;
-use App\Models\Guest;
-
-class GuestTranslation extends Model
-{
-    protected $baseModuleModel = Guest::class;
-}
index 667e8f2131214c7df1d3192a6f3dc6346a259f9c..0cce63566fae61e6d7e68537c9ae7ee4da934414 100644 (file)
@@ -3,6 +3,7 @@
 namespace App;
 
 use A17\Twill\Models\Behaviors\HasPosition;
+use A17\Twill\Models\Behaviors\HasSlug;
 use A17\Twill\Models\Behaviors\Sortable;
 use A17\Twill\Models\Model as TwillModel;
 use App\Flowpaper\Pdf2Json;
@@ -51,12 +52,13 @@ class PdfFile extends TwillModel implements Sortable
 {
     use HasPosition;
 
+
     protected $appends = [
         'coverUrl',
     ];
 
     protected $fillable = [
-        'public',
+        'free',
         'position',
         'title',
         'file_name',
@@ -64,6 +66,7 @@ class PdfFile extends TwillModel implements Sortable
         'collection_id',
         'ref',
         'headlines',
+        'published',
     ];
 
     protected $casts = [
diff --git a/app/Repositories/SocialArticleRepository.php b/app/Repositories/SocialArticleRepository.php
new file mode 100644 (file)
index 0000000..e439c88
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Repositories;
+
+use A17\Twill\Repositories\Behaviors\HandleBlocks;
+use A17\Twill\Repositories\Behaviors\HandleTranslations;
+use A17\Twill\Repositories\Behaviors\HandleSlugs;
+use A17\Twill\Repositories\Behaviors\HandleMedias;
+use A17\Twill\Repositories\Behaviors\HandleFiles;
+use A17\Twill\Repositories\Behaviors\HandleRevisions;
+use A17\Twill\Repositories\ModuleRepository;
+use App\Models\SocialArticle;
+
+class SocialArticleRepository extends ModuleRepository
+{
+    use HandleBlocks, HandleSlugs, HandleMedias;
+
+    public function __construct(SocialArticle $model)
+    {
+        $this->model = $model;
+    }
+}
index 29e71d6f3b4320af3e2f6893a566ee69a80eae4a..5e954f262df3c4ab9d6692ee2055a6faab7a9039 100644 (file)
@@ -12,13 +12,18 @@ return [
         'route' => 'admin.publish',
     ],
     'content' => [
-        'title' => 'Gestion du Contenu',
+        'title' => 'Contenu du site',
         'route' => 'admin.content.homepage',
         'primary_navigation' => [
                 'homepage' => [
                    'title' => "Page d'accueil",
                    'route' => 'admin.content.homepage',
                ],
+//                'pdfFiles' => [
+//                    'title' => 'Lettres',
+//                    'module' => true
+//                ],
+
                 'adCampaigns' => [
                     'title' => 'Campagnes publicitaires',
                     'module' => true
@@ -65,6 +70,17 @@ return [
              ]
         ]
     ],
+    'other_content' => [
+        'title' => 'Autre contenu',
+        'route' => 'admin.other-content.socialArticles.index',
+        'primary_navigation' => [
+            'socialArticles' => [
+                'title' => 'Articles réseaux sociaux',
+                'module' => true
+            ]
+
+        ]
+    ]
 
 
 
diff --git a/database/migrations/2020_08_13_145002_create_social_articles_tables.php b/database/migrations/2020_08_13_145002_create_social_articles_tables.php
new file mode 100644 (file)
index 0000000..d60ef3e
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+
+class CreateSocialArticlesTables extends Migration
+{
+    public function up()
+    {
+        Schema::create('social_articles', function (Blueprint $table) {
+            // this will create an id, a "published" column, and soft delete and timestamps columns
+            createDefaultTableFields($table);
+
+            $table->string('title');
+            $table->unsignedInteger('count')->default(0);
+
+
+            // add those 2 columns to enable publication timeframe fields (you can use publish_start_date only if you don't need to provide the ability to specify an end date)
+            // $table->timestamp('publish_start_date')->nullable();
+            // $table->timestamp('publish_end_date')->nullable();
+        });
+
+
+        Schema::create('social_article_slugs', function (Blueprint $table) {
+            createDefaultSlugsTableFields($table, 'social_article');
+        });
+
+    }
+
+    public function down()
+    {
+        Schema::dropIfExists('social_article_slugs');
+        Schema::dropIfExists('social_articles');
+    }
+}
index 2a22637c029db1d44025e06d69d1560a8b162105..7ae7e6ccba9cef65529bf23a623600ed3803103e 100644 (file)
@@ -2,7 +2,7 @@
 
 @section('contentFields')
     @formField('input', [
-        'name' => 'description',
+        'name' => 'slug',
         'label' => 'Description',
         'maxlength' => 100
     ])
diff --git a/resources/views/admin/socialArticles/form.blade.php b/resources/views/admin/socialArticles/form.blade.php
new file mode 100644 (file)
index 0000000..7dacf56
--- /dev/null
@@ -0,0 +1,5 @@
+@extends('twill::layouts.form')
+
+@section('contentFields')
+    @formField('block_editor', ['blocks' => ['image', 'text', 'youtube']])
+@stop
index 7549540d8d918aad57cae2c48568a214bbd035f7..fc64aaaee273bd397a33249b1c50e45f76ed2eca 100644 (file)
@@ -1,5 +1,15 @@
-@extends('errors::minimal')
-
+@extends('layouts.app')
 @section('title', __('Not Found'))
-@section('code', '404')
-@section('message', __('Not Found'))
+
+@section('content')
+
+    <div class="container error-404">
+
+
+        <h1>{{($m = $exception->getMessage()) === '' ? __('Not Found') : $m }}</h1>
+
+        <p>Cette page est introuvable... <a href="/">cliquez ici pour retourner sur la page d'accueil</a></p>
+
+
+    </div>
+@endsection
index 7653476e0e67ea9bc55439a94e290e1695a27e9e..43f1dce2beba830d37ae0c6b10432d71412665a6 100644 (file)
@@ -1,6 +1,12 @@
 @extends('layouts.app', ['hideNav' => true])
 
 @section('content')
-    @yield('content')
+    <article class="container">
+        <div class="content">
+            @yield('content')
+
+        </div>
+
+    </article>
 @endsection
 
diff --git a/resources/views/social-articles/show.blade.php b/resources/views/social-articles/show.blade.php
new file mode 100644 (file)
index 0000000..b4738a5
--- /dev/null
@@ -0,0 +1,23 @@
+@extends('layouts.app')
+
+@section('content')
+
+    <article class="container">
+        <div class="row">
+
+            <div class="col-sm-4">
+                <x-pill-box slug="article-reseaux-sociaux" class="mb-4"></x-pill-box>
+            </div>
+            <div class="col-sm-8">
+                <h2>{{$article->title}}</h2>
+                <div class="content">
+                    {!! $article->renderBlocks() !!}
+                </div>
+
+            </div>
+
+        </div>
+
+    </article>
+
+@endsection
index 7abe2c0c005f7b309d541dc3776e094b80b67847..afdd22d0f02658c91a541ce5e113cb768f135fb0 100644 (file)
@@ -5,6 +5,7 @@ Route::module('pdfFiles');
 
 /** Dynamic content */
 Route::prefix('content')->group(function() {
+    Route::module('pdfFiles');
     Route::module('articles');
     Route::module('adCampaigns');
     Route::module('events');
@@ -17,6 +18,10 @@ Route::prefix('settings')->group(function() {
     Route::module('pillBoxSpaces');
 });
 
+Route::prefix('other-content')->group(function () {
+     Route::module('socialArticles');
+});
+
 
 /** Publishing and mass sending process */
 Route::prefix('publish')->group(function() {
index 01b1b0319e69e47229932795ab673209fff19a4d..6ca9a52dbece16522cad2da7a49a4362fba8e2f7 100644 (file)
@@ -68,6 +68,8 @@ Route::domain(env('CLIENT_DOMAIN_NAME'))->group(function() {
         Route::get('{slug}', 'ActuLabosController@show')->name('actus-labos.show');
     });
 
+    Route::get('article/{slug}', 'SocialArticleController@show')->name('social-article.show');
+
     /** Metadata */
     Route::prefix('/files/{file:slug}')->group(function () {
         Route::get('/cover', 'FileController@cover');