]> _ Git - fluidbook-toolbox.git/commitdiff
wip #7634 @0:20
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 22 Jul 2025 14:21:36 +0000 (16:21 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 22 Jul 2025 14:21:36 +0000 (16:21 +0200)
app/Http/Controllers/Admin/Operations/FluidbookPublication/MarkdownOperation.php
app/Models/FluidbookPublication.php
resources/views/fluidbook_publication/markdown_editor.blade.php

index 11af21df2d0c776232e53cc4533c06a653915ac3..5eaf70624b4b4feedd57a5363198c69820af175c 100644 (file)
@@ -23,20 +23,9 @@ trait MarkdownOperation
         }
 
         $token = Str::random(10);
-        $files = $this->getFilesById($id);
+        $fluidbook=FluidbookPublication::find($id);
+        $contents=$fluidbook->getAccessibleContents();
 
-        return view('fluidbook_publication.markdown_editor', ['files' => $files, 'version' => 'stable', 'id' => $id, 'fluidbook' => FluidbookPublication::find($id), 'access' => "", 'token' => $token]);
-    }
-
-    public function getFilesById($id)
-    {
-        //$p = $request->page;;
-        $files = Files::getRecursiveDirectoryIterator(public_path("/markdown_files/$id"), true);
-
-        return $files;
-
-        //if(!file_exists($path)) return false;
-
-        //return file_get_contents(public_path("/markdown_files/$id/p$p.md"));
+        return view('fluidbook_publication.markdown_editor', ['contents' => $contents, 'version' => 'stable', 'id' => $id, 'fluidbook' => $fluidbook, 'access' => "", 'token' => $token]);
     }
 }
index 37cf7896a83b4a0813ad4189cdfa6ee9e9cc4484..37c603a9184e9f292944e523d574126f976552f8 100644 (file)
@@ -461,11 +461,30 @@ class FluidbookPublication extends ToolboxStatusModel
         return self::_getDocument($compo[0])->getHightlightFile($compo[1], $this->search_mode ?: 'standard', $this->ignoreSearchSeparators);
     }
 
-    public function getAccessibleFile($page,$format='md'){
+    public function getAccessibleFile($page, $format = 'md')
+    {
         $compo = $this->getComposition()[$page];
         return self::_getDocument($compo[0])->getMarkdown($compo[1]);
     }
 
+    public function getAccessibleContents($revision = 'latest')
+    {
+        $file = Files::mkdir($this->protected_path('fluidbookpublication/accessible/' . $this->id . '/')) . $revision . '.accessible.gz';
+        if (!file_exists($file)) {
+            if ($revision === 'latest') {
+                $json = ['pages' => []];
+                foreach ($this->getComposition() as $page => $d) {
+                    $json['pages'][$page] = file_get_contents($this->getAccessibleFile($page));
+                }
+
+                file_put_contents($file, gzencode(json_encode($json)));
+                return $json;
+            }
+        } else {
+            return json_decode(gzdecode(file_get_contents($file)),true);
+        }
+    }
+
     public function getPDFSplitSource($page)
     {
         if ($page > $this->getPagesNumber()) {
index 05dc732af1a8e3839c12ba05facfeea410a7a789..0b482657ccc41db93eaac4da928e53ee1f223e3a 100644 (file)
@@ -3,13 +3,6 @@
     $fbdata['settings']['pages']=$fbdata['pages']=$fluidbook->getPagesNumber();
     $fbdata['settings']['imageFormat']=$fluidbook->getImageFormat();
     $fbdata['page_dimensions']=[];
-
-    $collection = collect($files);
-    $filesdata = $collection->flatMap(function($item) {
-        $filename = $item->getFilename();
-        return [$filename => file_get_contents($item)];
-    } );
-    $sorted = $filesdata->sortKeys();
 @endphp
 
 @extends('layouts.markdowneditor')
 @push('markdown_scripts')
     <script>
         var FLUIDBOOK_DATA = @json($fbdata);
-        var MARKDOWN_DATA = {}
-        @foreach($filesdata as $key => $data)
-            @if(strstr($key,".md"))
-                MARKDOWN_DATA["{{explode('.',$key)[0]}}"] = `{!! $data !!}`;
-            @endif
-        @endforeach
+        var MARKDOWN_DATA = @json($contents['pages']);
     </script>
     <script
         src="/packages/markdowneditor/js/markdowneditor.js?v={{filemtime(public_path('packages/markdowneditor/js/markdowneditor.js'))}}"></script>