]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6606 @6:40
authorsoufiane <soufiane@cubedesigners.com>
Thu, 29 Jun 2023 15:46:31 +0000 (17:46 +0200)
committersoufiane <soufiane@cubedesigners.com>
Thu, 29 Jun 2023 15:46:31 +0000 (17:46 +0200)
13 files changed:
app/Console/Commands/DebugDeliveryJob.php [deleted file]
app/Console/Commands/FluidbookGeneratePreview.php [new file with mode: 0644]
app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php
app/Jobs/GenerateDeliveryThumbnailsPreview.php [new file with mode: 0644]
app/Jobs/GenerateSecondPagePreview.php [deleted file]
app/Models/FluidbookPublication.php
public/packages/fluidbook/toolbox/css/delivery.css
public/packages/fluidbook/toolbox/css/delivery.css.map
public/packages/fluidbook/toolbox/css/delivery.less
resources/fluidbooktheme/theme_preview/secondpage_preview.js
resources/views/fluidbook_publication/delivery.blade.php
scripts/restartworkers-dev.bat
storage/delivery/30116.jpg [deleted file]

diff --git a/app/Console/Commands/DebugDeliveryJob.php b/app/Console/Commands/DebugDeliveryJob.php
deleted file mode 100644 (file)
index 305822c..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace App\Console\Commands;
-
-use App\Jobs\GenerateSecondPagePreview;
-use Illuminate\Console\Command;
-use App\Models\FluidbookPublication;
-
-class DebugDeliveryJob extends Command
-{
-    /**
-     * The name and signature of the console command.
-     *
-     * @var string
-     */
-    protected $signature = 'app:debug-delivery-job';
-
-    /**
-     * The console command description.
-     *
-     * @var string
-     */
-    protected $description = 'Command description';
-
-    /**
-     * Execute the console command.
-     */
-    public function handle()
-    {
-        //
-        $f = FluidbookPublication::find(30116);
-        GenerateSecondPagePreview::dispatchSync($f);
-    }
-}
diff --git a/app/Console/Commands/FluidbookGeneratePreview.php b/app/Console/Commands/FluidbookGeneratePreview.php
new file mode 100644 (file)
index 0000000..73a595e
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Jobs\GenerateDeliveryThumbnailsPreview;
+use Illuminate\Console\Command;
+use App\Models\FluidbookPublication;
+use Illuminate\Support\Facades\Bus;
+
+class FluidbookGeneratePreview extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'fluidbook:preview-generate {id} {sync?}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Generate preview of Fluidbook to desktop, mobile and mobile-first';
+
+    /**
+     * Execute the console command.
+     */
+    public function handle()
+    {
+        //
+        $f = FluidbookPublication::find($this->argument('id'));
+        $mobilefirstFluidbookId = $f->mobilefirstFluidbookId;
+        $fm = null;
+
+        $fn = 'dispatch';
+        if($this->argument('sync'))
+            $fn = 'dispatchSync';
+
+        if($mobilefirstFluidbookId) {
+            $fm = FluidbookPublication::find($mobilefirstFluidbookId);
+        }
+
+        if($fm) {
+            GenerateDeliveryThumbnailsPreview::$fn($fm,320, 600, 'mobile');
+        }
+
+        GenerateDeliveryThumbnailsPreview::$fn($f,1920, 1080);
+        GenerateDeliveryThumbnailsPreview::$fn($f,320, 600, 'mobile');
+    }
+}
index 4f3574c78e90fc2eaa0bd3d4b34671068ced42b2..813128b44401c6d7d135487423539baddbdfbbac 100644 (file)
@@ -15,6 +15,7 @@ trait DownloadOperation
     protected function setupDownloadRoutes($segment, $routeName, $controller)
     {
         Route::match(['get'], $segment . '/{id}/delivery', $controller . '@delivery');
+        Route::match(['get'], $segment . '/{id}/delivery/{type}', $controller . '@deliveryThumb')->name('deliveryThumb');
         Route::match(['get'], $segment . '/{id}/package/{action}/{version}', $controller . '@package');
         Route::match(['get'], $segment . '/{id}/package/{action}/scorm/{scormversion}', $controller . '@packageScorm');
         Route::match(['get'], $segment . '/{id}_{hash}/download/{file}', $controller . '@download')->withoutMiddleware([CheckIfAdmin::class]);;
@@ -33,6 +34,24 @@ trait DownloadOperation
         return view('fluidbook_publication.delivery', ['fluidbook' => FluidbookPublication::where('id', $id)->first()]);
     }
 
+    protected function deliveryThumb($id,$type)
+    {
+        $typeAvailable = ['desktop', 'mobile'];
+        if (!FluidbookPublication::hasPermission($id, 'read')) {
+            abort(401);
+        }
+        if (!$type || !in_array($type, $typeAvailable)) {
+            abort(404);
+        }
+
+        $relayPath = '/fluidbookpublication/delivery/';
+        $relayPath = protected_path($relayPath);
+        $relayPath .= $id;
+        $relayPath .= $type === "desktop" ? '' : '-mobile';
+        $relayPath .= '.jpg';
+        return XSendFileController::sendfile($relayPath);
+    }
+
     protected function download($id, $hash, $file)
     {
         $e = explode('-', $file);
diff --git a/app/Jobs/GenerateDeliveryThumbnailsPreview.php b/app/Jobs/GenerateDeliveryThumbnailsPreview.php
new file mode 100644 (file)
index 0000000..fa28218
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Models\FluidbookPublication;
+use Cubist\Util\CommandLine;
+use Cubist\Util\Files\Files;
+
+class GenerateDeliveryThumbnailsPreview extends Base
+{
+    public $publication;
+    public $width;
+    public $height;
+    public $v;
+
+    public function __construct(FluidbookPublication $publication, $width, $height, $v = '')
+    {
+        $this->publication = $publication;
+        $this->width = $width;
+        $this->height = $height;
+        $this->v = $v;
+    }
+
+    /**
+     * Execute the job.
+     */
+    public function handle()
+    {
+        $cl = new CommandLine('node');
+        $cl->setArg(null, resource_path('fluidbooktheme/theme_preview/secondpage_preview.js'));
+        $cl->setArg('width', $this->width);
+        $cl->setArg('height', $this->height);
+        $cl->setArg('delay', 2);
+        $cl->setArg('scale', 1);
+        $cl->setArg('dest', self::getPreviewPath($this->publication->id, $this->v));
+        $cl->setArg('page', 2);
+        $url = $this->publication->getPreviewURL();
+        $cl->setArg('url', $url);
+        $cl->execute();
+    }
+
+    public static function getPreviewPath($fluidbookId, $variant = '')
+    {
+        $res = Files::mkdir(protected_path('fluidbookpublication/delivery')) . '/' . $fluidbookId;
+        if ($variant) {
+            $res .= '-' . $variant;
+        }
+        $res .= '.jpg';
+        return $res;
+    }
+}
diff --git a/app/Jobs/GenerateSecondPagePreview.php b/app/Jobs/GenerateSecondPagePreview.php
deleted file mode 100644 (file)
index af5df6a..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace App\Jobs;
-
-use App\Models\FluidbookPublication;
-use Cubist\Util\CommandLine;
-
-class GenerateSecondPagePreview extends Base
-{
-    public $publication;
-
-    public function __construct(FluidbookPublication $publication)
-    {
-        $this->publication = $publication;
-    }
-
-    /**
-     * Execute the job.
-     */
-    public function handle()
-    {
-        $cl = new CommandLine('node');
-        $cl->setArg(null, resource_path('fluidbooktheme/theme_preview/secondpage_preview.js'));
-        $cl->setArg('width', 1920);
-        $cl->setArg('height', 1080);
-        $cl->setArg('delay', 2);
-        $cl->setArg('scale', 1);
-        $cl->setArg('dest', self::getPreviewPath($this->publication->id));
-        $cl->setArg('page', 2);
-        $url = $this->publication->getPreviewURL();
-        $cl->setArg('url', $url);
-
-        $cl2 = new CommandLine('node');
-        $cl2->setArg(null, resource_path('fluidbooktheme/theme_preview/secondpage_preview.js'));
-        $cl2->setArg('width', 320);
-        $cl2->setArg('height', 600);
-        $cl2->setArg('delay', 2);
-        $cl2->setArg('scale', 1);
-        $cl2->setArg('dest', self::getPreviewPath($this->publication->id), "mobile");
-        $cl2->setArg('page', 2);
-        $url = $this->publication->getPreviewURL();
-        $cl2->setArg('url', $url);
-
-
-        $cl->execute();
-        $cl2->execute();
-
-
-        $cl->dd();
-    }
-
-    public static function getPreviewPath($fluidbookId, $variant = '')
-    {
-        $res = storage_path('delivery') . '/' . $fluidbookId;
-        if ($variant) {
-            $res .= '-' . $variant;
-        }
-        $res .= '.jpg';
-        return $res;
-    }
-}
index b7442f71750fb7c1ae1edca1f23981ee783064a1..0630596345a6a2a6401b9ada222e6d40ce7dd1d2 100644 (file)
@@ -26,6 +26,7 @@ use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\ExportPd
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\SocialImageOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\StatsOperation;
 use App\Jobs\FluidbookImagesPreprocess;
+use App\Jobs\GenerateDeliveryThumbnailsPreview;
 use App\Jobs\GenerateSecondPagePreview;
 use App\Models\Base\ToolboxSettingsModel;
 use App\Models\Traits\CheckHash;
@@ -266,7 +267,7 @@ class FluidbookPublication extends ToolboxSettingsModel
         $this->setComposedAttributes();
         $this->checkHash();
 
-        dispatch(new GenerateSecondPagePreview($this))->onQueue('theme');
+        $this->generateThumbnailsPreview(true);
         if ($this->_compositionUpdated) {
             FluidbookImagesPreprocess::dispatch($this->id);
         }
@@ -846,9 +847,9 @@ class FluidbookPublication extends ToolboxSettingsModel
 
     }
 
-    public function getPreviewURL()
+    public function getPreviewURL($params = [])
     {
-        return route('fluidbook_preview', ['version' => 'online', 'id' => $this->id, 'hash' => $this->hash]);
+        return route('fluidbook_preview', ['version' => 'online', 'id' => $this->id, 'hash' => $this->hash, ...$params]);
     }
 
     public function getTranslations()
@@ -857,4 +858,24 @@ class FluidbookPublication extends ToolboxSettingsModel
         $l10n['default'] = $this->getDefaultTranslations($l10n);
         return $l10n;
     }
+
+    public function generateThumbnailsPreview($sync = false) {
+        $mobilefirstFluidbookId = $this->mobilefirstFluidbookId;
+        $fm = null;
+
+        $fn = 'dispatch';
+        if($sync)
+            $fn = 'dispatchSync';
+
+        if($mobilefirstFluidbookId) {
+            $fm = self::find($mobilefirstFluidbookId);
+        }
+
+        if($fm) {
+            GenerateDeliveryThumbnailsPreview::$fn($fm,320, 683, 'mobile');
+        }
+
+        GenerateDeliveryThumbnailsPreview::$fn($this,1920, 1201);
+        GenerateDeliveryThumbnailsPreview::$fn($this,320, 683, 'mobile');
+    }
 }
index 68740d23984ec4e98e65fd73b1b10a2fa3e84df3..80a52d1f405196ae7b38b8054e58c04ba1d92125 100644 (file)
@@ -44,6 +44,14 @@ body {
   align-items: center;
   flex-direction: column;
 }
+.delivery-glimpses .preview-desktop {
+  width: 100%;
+  max-width: 454px;
+}
+.delivery-glimpses .preview-mobile {
+  width: 100%;
+  max-width: 133px;
+}
 .delivery-glimpses .btn {
   margin-top: 8px;
 }
index 2bd4f01ba01f053262dd7c1230c82fce34017d35..4df6b063e0fa8a5deb278fae557cfa9fde18fde5 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["delivery.less"],"names":[],"mappings":"AAAA;AAAK;EACD,uBAAA;;AAGJ;EACI,qBAAA;;AAGJ,OAAQ;EACJ,iBAAA;;AAGJ;EACI,aAAA;;AACA,OAAC;EACG,4BAA4B,uBAA5B;;AAIR;EACI,QAAA;;AAGJ;EACI,gBAAA;;AAIA,SAAC;EACG,mBAAA;;AADJ,SAAC,OAEG,GAAE,IAAI;EACF,cAAc,kBAAd;;AAHR,SAAC,OAKG,GAAE;EACE,YAAA;EACA,oBAAA;;AAPR,SAAC,OASG;EACI,OAAO,WAAP;;AAGR,SAAC;EACG,mBAAA;;AADJ,SAAC,SAEG;EACI,yCAAA;EACA,aAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,sBAAA;;AARR,SAAC,SAUG;EACI,eAAA;;AAXR,SAAC,SAaG;EACI,kBAAA;;AAGR,SAAC;EACG,gBAAA;EACA,WAAA;EACA,iBAAA;EACA,gBAAA;EACA,SAAA;EACA,wBAAA;EACA,aAAA;;AACA,SARH,aAQI;EACG,cAAA;;AATR,SAAC,aAWG;EACI,aAAA;EACA,kBAAkB,WAAlB;EACA,kBAAA;EACA,mBAAA;EACA,kBAAA;;AAGR,SAAC;EACG,yCAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;;AACA,SALH,QAKI;EACG,yBAAA;;AADJ,SALH,QAKI,iBAEG;EACI,2BAAA;;AAHR,SALH,QAKI,iBAKG;EACI,4BAAA;;AAXZ,SAAC,QAcG;EACI,WAAA;EACA,WAAA;EACA,aAAA;EACA,kBAAA;EACA,QAAA;;AAnBR,SAAC,QAqBG;EACI,kBAAA;EACA,eAAA;EACA,cAAA;;AAIR,SAAC;EACG,aAAA;EACA,gBAAA;EACA,kBAAA;;AAHJ,SAAC,aAIG;EACI,WAAA;EACA,YAAA;EACA,kBAAA;EACA,mBAAA;EACA,SAAA;EACA,QAAA;EACA,WAAW,qBAAX;;AAIR,SAAC,aACG;EACI,WAAA;EACA,SAAA;;AAKZ;EACI,SAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,qBAAA;EACA,kBAAA;;AAGJ;EACI,aAAa,eAAe,6BAA5B;EACA,aAAa,cAAe,2BAA5B;EACA,YAAY,eAAe,6BAA3B;EACA,WAAW,YAAe,uBAA1B;EACA,WAAW,cAAe,2BAA1B;EACA,WAAW,YAAe,uBAA1B;EACA,YAAY,YAAe,uBAA3B;EACA,aAAa,YAAe,uBAA5B;EACA,aAAa,YAAe,uBAA5B;EACA,aAAa,eAAe,6BAA5B;;EAGA,iBAAiB,eAAe,8BAAhC;EACA,gBAAgB,cAAe,gCAA/B;EACA,cAAc,eAAe,4BAA7B;EACA,aAAa,YAAe,6BAA5B;EACA,aAAa,cAAe,2BAA5B;EACA,cAAc,YAAe,yBAA7B;EACA,gBAAgB,YAAe,yBAA/B;EACA,iBAAiB,YAAe,yBAAhC;;EAGA,eAAe,YAAe,gCAA9B","file":"delivery.css"}
\ No newline at end of file
+{"version":3,"sources":["delivery.less"],"names":[],"mappings":"AAAA;AAAK;EACD,uBAAA;;AAGJ;EACI,qBAAA;;AAGJ,OAAQ;EACJ,iBAAA;;AAGJ;EACI,aAAA;;AACA,OAAC;EACG,4BAA4B,uBAA5B;;AAIR;EACI,QAAA;;AAGJ;EACI,gBAAA;;AAIA,SAAC;EACG,mBAAA;;AADJ,SAAC,OAEG,GAAE,IAAI;EACF,cAAc,kBAAd;;AAHR,SAAC,OAKG,GAAE;EACE,YAAA;EACA,oBAAA;;AAPR,SAAC,OASG;EACI,OAAO,WAAP;;AAGR,SAAC;EACG,mBAAA;;AADJ,SAAC,SAEG;EACI,yCAAA;EACA,aAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,sBAAA;;AARR,SAAC,SAUG;EACI,WAAA;EACA,gBAAA;;AAZR,SAAC,SAcG;EACI,WAAA;EACA,gBAAA;;AAhBR,SAAC,SAkBG;EACI,eAAA;;AAnBR,SAAC,SAqBG;EACI,kBAAA;;AAGR,SAAC;EACG,gBAAA;EACA,WAAA;EACA,iBAAA;EACA,gBAAA;EACA,SAAA;EACA,wBAAA;EACA,aAAA;;AACA,SARH,aAQI;EACG,cAAA;;AATR,SAAC,aAWG;EACI,aAAA;EACA,kBAAkB,WAAlB;EACA,kBAAA;EACA,mBAAA;EACA,kBAAA;;AAGR,SAAC;EACG,yCAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;;AACA,SALH,QAKI;EACG,yBAAA;;AADJ,SALH,QAKI,iBAEG;EACI,2BAAA;;AAHR,SALH,QAKI,iBAKG;EACI,4BAAA;;AAXZ,SAAC,QAcG;EACI,WAAA;EACA,WAAA;EACA,aAAA;EACA,kBAAA;EACA,QAAA;;AAnBR,SAAC,QAqBG;EACI,kBAAA;EACA,eAAA;EACA,cAAA;;AAIR,SAAC;EACG,aAAA;EACA,gBAAA;EACA,kBAAA;;AAHJ,SAAC,aAIG;EACI,WAAA;EACA,YAAA;EACA,kBAAA;EACA,mBAAA;EACA,SAAA;EACA,QAAA;EACA,WAAW,qBAAX;;AAIR,SAAC,aACG;EACI,WAAA;EACA,SAAA;;AAKZ;EACI,SAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,qBAAA;EACA,kBAAA;;AAGJ;EACI,aAAa,eAAe,6BAA5B;EACA,aAAa,cAAe,2BAA5B;EACA,YAAY,eAAe,6BAA3B;EACA,WAAW,YAAe,uBAA1B;EACA,WAAW,cAAe,2BAA1B;EACA,WAAW,YAAe,uBAA1B;EACA,YAAY,YAAe,uBAA3B;EACA,aAAa,YAAe,uBAA5B;EACA,aAAa,YAAe,uBAA5B;EACA,aAAa,eAAe,6BAA5B;;EAGA,iBAAiB,eAAe,8BAAhC;EACA,gBAAgB,cAAe,gCAA/B;EACA,cAAc,eAAe,4BAA7B;EACA,aAAa,YAAe,6BAA5B;EACA,aAAa,cAAe,2BAA5B;EACA,cAAc,YAAe,yBAA7B;EACA,gBAAgB,YAAe,yBAA/B;EACA,iBAAiB,YAAe,yBAAhC;;EAGA,eAAe,YAAe,gCAA9B","file":"delivery.css"}
\ No newline at end of file
index 95dfa995ecf2fd5477c238a16b9faf3a0f136fdf..1526e853bdb2e2753506e50119c5bf39db1d59df 100644 (file)
@@ -49,6 +49,14 @@ html,body {
             align-items: center;
             flex-direction: column;
         }
+        .preview-desktop {
+            width: 100%;
+            max-width: 454px;
+        }
+        .preview-mobile {
+            width: 100%;
+            max-width: 133px;
+        }
         .btn {
             margin-top: 8px;
         }
index a0c3e23d3489f699eb14c4ae98035742f8ad65fa..f2ec9b2c665f04fb2a946b5a63e6f1862fcee8c8 100644 (file)
@@ -22,6 +22,7 @@ const optionDefinitions = [
     });
 
     const page = await browser.newPage();
+    await page.setDefaultNavigationTimeout(0);
     await page.setViewport({
         width: options.width / options.scale, height: options.height / options.scale, deviceScaleFactor: options.scale,
     });
index 9643712ee74c5d9180cb4a220be4c8e0d8834d27..42ba9e014b237d88899daaf800b7b6348f339ecf 100644 (file)
@@ -1,7 +1,6 @@
 @extends(backpack_view('blank'))
 
 @php
-dd(storage_path('delivery') . '/');
     $breadcrumbs = [
         trans('backpack::crud.admin') => url(config('backpack.base.route_prefix'), 'dashboard'),
         trans('backpack::base.my_account') => false,
@@ -9,10 +8,15 @@ dd(storage_path('delivery') . '/');
     $statusText = $fluidbook->status ? 'prĂȘt' : 'en cours de production';
     $qrCodeMobile = QrCode::size(311)->color(27, 42, 78)->generate($fluidbook->getPreviewURL());
 
+
+    $fluidbookDesktopPreview = route('deliveryThumb', ['id' => $fluidbook->id, 'type' => 'desktop']);
+    $fluidbookMobilePreview = route('deliveryThumb', ['id' => $fluidbook->id, 'type' => 'mobile']);
+
     $fluidbookMobileFirstId = $fluidbook->mobilefirstFluidbookId;
     if($fluidbookMobileFirstId){
         $previewMobileFirstUrl = App\Models\FluidbookPublication::find($fluidbookMobileFirstId)->getPreviewURL();
         $qrCodeMobileFirst = QrCode::size(311)->color(27, 42, 78)->generate($previewMobileFirstUrl);
+        $fluidbookMobileFirstPreview = route('deliveryThumb', ['id' => $fluidbookMobileFirstId, 'type' => 'mobile']);
     }
 
     $totalPages = $fluidbook->getPagesNumber();
@@ -108,12 +112,14 @@ dd(storage_path('delivery') . '/');
                             <div class="preview col-md-6">
                                 <p>Version Desktop</p>
                                 <div class="block">
+                                    <img class="preview-desktop" src="{{ $fluidbookDesktopPreview }}" />
                                     <a href="{{ $fluidbook->getPreviewURL() }}" target="_blank" class="btn btn-primary">Voir</a>
                                 </div>
                             </div>
                             <div class="preview col-md-3">
                                 <p>Version Mobile</p>
                                 <div class="block">
+                                    <img class="preview-mobile" src="{{ $fluidbookMobilePreview }}" />
                                     <a href="#" data-featherlight="#scanBoxMobile" class="btn btn-primary">Voir</a>
                                 </div>
                                 @include('fluidbook_publication.qrcode_popup', ['id' => 'scanBoxMobile', 'text' => 'Mobile', 'qrcode' => $qrCodeMobile])
@@ -122,6 +128,7 @@ dd(storage_path('delivery') . '/');
                                 <div class="preview col-md-3">
                                     <p>Version Mobile-first</p>
                                     <div class="block">
+                                        <img class="preview-mobile" src="{{ $fluidbookMobileFirstPreview }}" />
                                         <a href="#" data-featherlight="#scanBoxMobileFirst" class="btn btn-primary">Voir</a>
                                     </div>
                                     @include('fluidbook_publication.qrcode_popup', ['id' => 'scanBoxMobileFirst', 'text' => 'Mobile-first', 'qrcode' => $qrCodeMobileFirst])
index 45ee64e4fa1751cc3bae8e122e7dbae8827385ad..8b63cbf4801563b3db2653648945966d935665a9 100644 (file)
@@ -1,6 +1,6 @@
 @echo off
 cls
-C:\tools\cygwin\bin\ssh.exe -t root@dev.toolbox.fluidbook.com 'docker exec -it -u toolbox fluidbook-toolbox-dev /application/scripts/restartworkers.sh'
+ssh -t root@dev.toolbox.fluidbook.com 'docker exec -it -u toolbox fluidbook-toolbox-dev /application/scripts/restartworkers.sh'
 exit
 exit
 exit
diff --git a/storage/delivery/30116.jpg b/storage/delivery/30116.jpg
deleted file mode 100644 (file)
index 172d364..0000000
Binary files a/storage/delivery/30116.jpg and /dev/null differ