From: Vincent Vanwaelscappel Date: Tue, 17 Oct 2023 10:10:35 +0000 (+0200) Subject: wait #6169 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=086502d3cc9debb36179b5cc3d09d1e56abf7a09;p=fluidbook-toolbox.git wait #6169 @1 --- diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php index 6fb12a25c..fdd95b809 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php @@ -17,14 +17,13 @@ use Illuminate\Support\Facades\Session; trait CompositionOperation { - - protected function setupCompositionRoutes($segment, $routeName, $controller) { Route::match(['get'], $segment . '/docs/{doc_id}/thumb_{doc_page}.jpg', $controller . '@getThumb'); Route::match(['post'], $segment . '/uploaddocument', $controller . '@upload'); Route::match(['get'], $segment . '/uploadProgress/{uploadID}', $controller . '@uploadProgress'); Route::match(['get'], $segment . '/docInfos/{doc_id}', $controller . '@docInfos'); + Route::match(['get'], $segment . '/{fluidbook_id}/pdfarchive/{time}', $controller . '@pdfArchive'); Route::match(['get'], $segment . '/{fluidbook_id}/{type}/{page}.{ext}', $controller . '@getPageAsset') ->whereIn('type', ['originalpdf', 'texts', 'index', 'layout']); } @@ -58,6 +57,21 @@ trait CompositionOperation return response(Gzip::file_get_contents($path), 200, ['content-type' => $contentType]); } + protected function pdfArchive($fluidbook_id, $time = 'now') + { + if (!FluidbookPublication::hasPermission($fluidbook_id)) { + abort(401); + } + /** @var FluidbookPublication $fb */ + $fb = FluidbookPublication::withoutGlobalScopes()->find($fluidbook_id); + $path = $fb->getPDFArchivesPath(); + if ($time === 'now') { + $path .= 'original.pdf'; + } else { + $path .= 'original.' . $time . '.pdf'; + } + return XSendFileController::sendfile($path); + } protected function getThumb($doc_id, $doc_page) { diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index 4d596993a..0cf8773ac 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -1050,4 +1050,27 @@ class FluidbookPublication extends ToolboxSettingsModel } return false; } + + public function getPDFArchivesPath() + { + return Files::mkdir(protected_path('fluidbookpublication/pdf/' . $this->id)); + } + + public function getPDFArchivesList() + { + $dir = $this->getPDFArchivesPath(); + $r = Files::getDirectoryIterator($dir); + $list = []; + foreach ($r as $item) { + if ($item->isLink() || $item->isDir() || $item->getFilename() === 'original.pdf') { + continue; + } + if (!preg_match('/original\.(\d+)\.pdf/', $item->getFilename(), $matches)) { + continue; + } + $list[] = $matches[1]; + } + rsort($list); + return $list; + } } diff --git a/resources/views/fields/fluidbook_composition.blade.php b/resources/views/fields/fluidbook_composition.blade.php index 88015880b..c7b2648a5 100644 --- a/resources/views/fields/fluidbook_composition.blade.php +++ b/resources/views/fields/fluidbook_composition.blade.php @@ -834,6 +834,17 @@ top: 0; left: 0; } + + #composition_history { + padding-left: 11px; + } + + #composition_history ul { + list-style: none; + padding: 0; + } + + @endpush @@ -843,22 +854,36 @@ if(!is_string($v)){ $v=json_encode($v); } + $pdfArchives=$entry->getPDFArchivesList(); @endphp @include('crud::fields.inc.wrapper_start')
{{__('Charger un PDF')}} + class="la la-upload"> {{__('Charger un PDF')}}
+
+

{{__('Versions antérieures du PDF source')}}

+ +
@include('crud::fields.inc.wrapper_end')