]> _ Git - odl.git/commitdiff
wip #4666 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 14 Sep 2021 15:18:48 +0000 (17:18 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 14 Sep 2021 15:18:48 +0000 (17:18 +0200)
app/Http/Controllers/Admin/ToolsController.php
app/Http/Controllers/Tools/FluidbookPreview.php [new file with mode: 0644]
app/Jobs/ProcessFluidbook.php
resources/views/tools/fluidbookconvert.blade.php

index 9aa6a685ec6ee8c47bf3e8a9cc264c61510a4c4f..6863ee4d517312a7c50d28717816f314e9698cb7 100644 (file)
@@ -4,10 +4,12 @@ namespace App\Http\Controllers\Admin;
 
 use App\Http\Controllers\Controller;
 use App\Http\Controllers\Tools\FluidbookConvert;
+use App\Http\Controllers\Tools\FluidbookPreview;
 
 class ToolsController extends Controller
 {
     use FluidbookConvert;
+    use FluidbookPreview;
 
     protected function index($tool, $args = '')
     {
diff --git a/app/Http/Controllers/Tools/FluidbookPreview.php b/app/Http/Controllers/Tools/FluidbookPreview.php
new file mode 100644 (file)
index 0000000..319b59d
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Controllers\Tools;
+
+use App\Jobs\ProcessFluidbook;
+use Cubist\Util\Files\Files;
+
+trait FluidbookPreview
+{
+    protected function fluidbookpreview($args)
+    {
+        if (count($args) > 0) {
+            $path = implode('/', $args);
+        }
+        $path = storage_path('fluidbook/out') . '/' . $path;
+        if(file_exists($path)){
+            return response(null)->header('Content-Type', Files::_getMimeType($path))->header('X-Sendfile', $path);
+        }else{
+            return response(null)->setStatusCode(404);
+        }
+    }
+}
index a870bc491510515c04b6ceeccbb6069d27b81607..742b5147f134308294e51e9b77cfb4dd567a7b83 100644 (file)
@@ -17,6 +17,7 @@ use Illuminate\Foundation\Bus\Dispatchable;
 use Illuminate\Queue\InteractsWithQueue;
 use Illuminate\Queue\Jobs\SyncJob;
 use Illuminate\Queue\SerializesModels;
+use JsonException;
 
 class ProcessFluidbook implements ShouldQueue, ShouldBeUnique
 {
@@ -27,6 +28,7 @@ class ProcessFluidbook implements ShouldQueue, ShouldBeUnique
      */
     protected $in;
     protected $out;
+    protected $stub;
 
     /** @var VirtualDirectory */
     protected $vdir;
@@ -40,6 +42,8 @@ class ProcessFluidbook implements ShouldQueue, ShouldBeUnique
     {
         $this->in = new Document(storage_path('fluidbook/in/in.pdf'));
         $this->out = storage_path('fluidbook/out/');
+
+        $this->stub = resource_path('fluidbook/');
     }
 
     /**
@@ -98,10 +102,9 @@ class ProcessFluidbook implements ShouldQueue, ShouldBeUnique
         start_measure('Compile fluidbook');
 
         $this->vdir = new VirtualDirectory($this->out);
-        $this->vdir->copyDirectory(resource_path('fluidbook/'), '/');
+        $this->vdir->copyDirectory($this->stub, '/');
 
         $this->compileContents();
-        $this->compileLinks();
         $this->compileSearch();
         $this->compileConfig();
 
@@ -114,7 +117,7 @@ class ProcessFluidbook implements ShouldQueue, ShouldBeUnique
     {
         $cp = $this->getConvertPath();
         for ($i = 1; $i <= $this->in->getPages(); $i++) {
-            $this->vdir->copy($cp . 'html/t' . $i . '-150.jpg', 'data/background/150/t' . $i . '.jpg');
+            $this->vdir->copy($cp . 'html/t' . $i . '-150.jpg', 'data/background/150/p' . $i . '.jpg');
             $this->vdir->copy($cp . 'html/to' . $i . '.svg', 'data/contents/p' . $i . '.svg');
             $this->vdir->copy($cp . 'html/p' . $i . '.jpg', 'data/thumbnails/p' . $i . '.jpg');
         }
@@ -122,7 +125,7 @@ class ProcessFluidbook implements ShouldQueue, ShouldBeUnique
 
     public function compileLinks()
     {
-
+        return [];
     }
 
     public function compileSearch()
@@ -136,9 +139,26 @@ class ProcessFluidbook implements ShouldQueue, ShouldBeUnique
         $this->vdir->file_put_contents('data/search.index.js', 'var INDEX=' . json_encode($index->compileIndex()) . ';');
     }
 
+    /**
+     * @throws JsonException
+     */
     public function compileConfig()
     {
+        $settings = mb_substr(file_get_contents($this->stub . '/data/datas.js'), 13, -2);
+        $config = json_decode($settings, false, 512, JSON_THROW_ON_ERROR);
 
+        $w = $this->in->getWidth();
+        $h = $this->in->getHeight();
+
+        $config->pages = $this->in->getPages();
+        $config->width = $w;
+        $config->height = $h;
+        $config->pagesDimensions = [];
+        for ($i = 1; $i <= $this->in->getPages(); $i++) {
+            $config->pagesDimensions[$i] = [$w, $h];
+        }
+        $config->links = $this->compileLinks();
+        $this->vdir->file_put_contents('data/datas.js', 'var SETTINGS=' . json_encode($config, JSON_THROW_ON_ERROR) . ';');
     }
 
 
index c62a2be9f4ddce2da6996e4d4050c751959de2fe..294f8e8c1e9cd92d7f9f1b4b170b3b2bae8ef3af 100644 (file)
@@ -1,4 +1,5 @@
 @extends(backpack_view('blank'))
 
 @section('content')
+    <iframe src="/tools/fluidbookpreview/index.html#/page/0" width="1024" height="768" allowfullscreen frameborder="0"></iframe>
 @endsection