]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6775 @0.75
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 12 Mar 2024 07:40:08 +0000 (08:40 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 12 Mar 2024 07:40:08 +0000 (08:40 +0100)
app/Http/Controllers/Admin/Operations/Tools/WebflowOperation.php
app/Jobs/WebflowPublish.php
app/Models/ToolWebflow.php

index 5c7ea0391210f688b55a9cc3f4a6bb60cf6f9c2d..13bd222639a698f2f5cc300185cfcdf02e09b3f3 100644 (file)
@@ -4,9 +4,7 @@ namespace App\Http\Controllers\Admin\Operations\Tools;
 
 use App\Http\Middleware\CheckIfAdmin;
 use App\Http\Middleware\VerifyCsrfToken;
-use App\Jobs\WebflowMirror;
 use App\Models\ToolWebflow;
-use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Facades\Route;
 
 trait WebflowOperation
@@ -14,7 +12,7 @@ trait WebflowOperation
     protected function setupWebflowRoutes($segment, $routeName, $controller)
     {
         Route::match(['get', 'post'], 'webhook/webflow/{id}', function ($id) {
-            ToolWebflow::withoutGlobalScopes()->find($id)->onPublish();
+            ToolWebflow::withoutGlobalScopes()->find($id)->onPublish('webflow');
         })->withoutMiddleware([VerifyCsrfToken::class, CheckIfAdmin::class]);
     }
 
index ffd3f03ca94b4f06c8e7956c47259b762bb2e519..16e51156af3f56cfb2ae538b8c7ed8a4af420e3b 100644 (file)
@@ -4,18 +4,52 @@ namespace App\Jobs;
 
 use App\Http\Controllers\Admin\Operations\Tools\StaticSiteUploader;
 use App\Models\ToolWebflow;
+use App\Models\User;
+use App\Notifications\ToolboxNotification;
 use App\Slack\Slack;
 
 class WebflowPublish extends Base
 {
-    public function __construct($id)
+    /** @var int */
+    protected $id;
+    /**
+     * @var string
+     */
+    protected $mode;
+    /** @var User */
+    protected $user;
+
+    public function __construct($id, $mode = 'manual', $user = null)
     {
-        /** @var ToolWebflow $wf */
-        $wf = ToolWebflow::withoutGlobalScopes()->find($id);
-        $wf->mirror(false, true)->debug();
+        $this->id = $id;
+        $this->mode = $mode;
+        $this->user = $user ?? backpack_user();
+    }
 
-        StaticSiteUploader::rsync(protected_path('webflow/' . $id), $wf->upload);
+    public function handle()
+    {
+        /** @var ToolWebflow $wf */
+        $wf = ToolWebflow::withoutGlobalScopes()->find($this->id);
+        $subject = __('Site :name publié', ['name' => $wf->name]);
+        if ($this->mode === 'webflow') {
+            $wf->mirror(false, true)->debug();
+            $text = __('Le site vient d\'être républié suite à une mise à jour de webflow');
+        } else if ($this->mode === 'auto') {
+            $text = __('Le site vient d\'être républié suite à une mise à jour des contenus');
+        } else {
+            $text = __('Le site vient d\'être républié suite à une déclenchement manuel');
+        }
 
-        Slack::send($wf->slack, __('Site publié'), __('Le site vient d\'être républié suite à une mise à jour de webflow ou manuellement'), ['Visiter' => $wf->getLocales()[0]['url']]);
+        StaticSiteUploader::rsync(protected_path('webflow/' . $this->id), $wf->upload);
+        $actions = [];
+        foreach ($wf->getLocales() as $locale) {
+            $actions[__('Visiter [:locale]', ['locale' => $locale['locale']])] = 'https://' . $locale['url'];
+        }
+        if ($this->user === null) {
+            Slack::send($wf->slack, $subject, $text, $actions, false);
+        } else {
+            $this->user->notify(new ToolboxNotification($subject, $text, $actions, true));
+        }
     }
+
 }
index f9c1ef601558fa6e467ee9ad4a291ce8ee0231f7..2b66c8c4ac75d01e35b4b5c4f545e29e278dceb3 100644 (file)
@@ -55,9 +55,15 @@ class ToolWebflow extends ToolboxModel
     }
 
 
-    public function onPublish()
+    public function onPublish($mode = 'manual')
     {
-        WebflowPublish::dispatch($this->id);
+        WebflowPublish::dispatch($this->id, $mode);
+    }
+
+    public function onSaved(): bool
+    {
+        $this->onPublish('auto');
+        return parent::onSaved();
     }
 
     /**
@@ -117,6 +123,7 @@ class ToolWebflow extends ToolboxModel
             $locales = json_decode($locales, true);
         }
         Cache::put('webflow_' . $this->id . '_locales', $locales);
+        dddd($this->getLocales());
         return parent::onRetrieved();
     }