From cfde0bbedd0af48aefb16d2d073277265c535f19 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Thu, 9 Oct 2025 17:58:28 +0200 Subject: [PATCH] wip #7784 @2 --- .../FluidbookPublication/LinksOperation.php | 38 +++++++++++++++++++ app/Models/Traits/PublicationSettings.php | 2 +- .../link_editor.blade.php | 12 ++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php index 867ac489f..d22bc05b0 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php @@ -9,6 +9,7 @@ use App\Http\Middleware\VerifyCsrfToken; use App\Models\FluidbookPublication; use App\Models\User; use Cubist\Backpack\Http\Controllers\Base\XSendFileController; +use Cubist\Excel\ExcelToArray; use Cubist\Util\Files\Files; use Fluidbook\Tools\FluidbookFontToWoff; use Illuminate\Http\UploadedFile; @@ -32,6 +33,7 @@ trait LinksOperation Route::match(['get'], $segment . '/{id}/edit/links/versions', $controller . '@getLinkVersions'); Route::match(['get'], $segment . '/{id}/edit/links/versions/export/{version}', $controller . '@exportLinks'); Route::match(['post'], $segment . '/{id}/edit/links/import/merge', $controller . '@importLinksMerge'); + Route::match(['post'], $segment . '/{id}/edit/links/import/automatic', $controller . '@automaticLinks'); Route::match(['post'], $segment . '/{id}/edit/links/import/replace', $controller . '@importLinks'); Route::match(['get'], $segment . '/{id}/edit/links/import/pdf', $controller . '@importLinksFromPDF'); Route::match(['post'], $segment . '/{id}/edit/links/move', $controller . '@moveLinks'); @@ -271,6 +273,42 @@ trait LinksOperation return response()->json(['success' => 'ok']); } + protected function automaticLinks($fluidbook_id) + { + if (!FluidbookPublication::hasPermission($fluidbook_id)) { + abort(401); + } + + /** @var UploadedFile $uploadedFile */ + $uploadedFile = request()->file('file'); + LinksData::getLinksAndRulers($fluidbook_id, $links, $rulers); + + $rules = FluidbookPublication::withoutGlobalScopes()->find($fluidbook_id)->autolinkRule; + + $type = $type = \Fluidbook\Tools\Links\Link::WEB; + $target = '_blank'; + $toPrefix = ''; + $toSuffix = ''; + switch ($rules) { + case 'cart': + $type = \Fluidbook\Tools\Links\Link::CART; + $target = ''; + case 'steelite': + $toSuffix = '?embed'; + $target = '_popupiframe'; + case 'web': + default: + break; + } + + ExcelToArray::setCache(Files::mkdir('/tmp/exceltoarray')); + $excel = ExcelToArray::excelToAssoc($uploadedFile->getPathname()); + dd($type, $target, $toSuffix, $excel); + + LinksData::saveLinksInFile($fluidbook_id, backpack_user()->id, __("Ajouter des liens automatiques à partir du fichier :file", ['file' => $uploadedFile->getClientOriginalName()]) . ' ', $links, $rulers, [], []); + return response()->json(['success' => 'ok']); + } + protected function importLinksMerge($fluidbook_id) { if (!FluidbookPublication::hasPermission($fluidbook_id)) { diff --git a/app/Models/Traits/PublicationSettings.php b/app/Models/Traits/PublicationSettings.php index b899eeeb5..ef550eaa5 100644 --- a/app/Models/Traits/PublicationSettings.php +++ b/app/Models/Traits/PublicationSettings.php @@ -1088,7 +1088,7 @@ trait PublicationSettings $this->_addSettingField('', FormSeparator::class); $this->_addSettingField('linkFilePrefix', LongText::class, $this->__('Préfixer les liens de téléchargement')); $this->_addSettingField('', FormSeparator::class); - $this->_addSettingField('autolinkRule', SelectFromArray::class, $this->__('Règle pour l\'ajout des liens via excel'), ['options' => ['web' => 'Lien web', 'cart' => __('Lien panier'), 'steelite' => 'Steelite']]); + $this->_addSettingField('autolinkRule', SelectFromArray::class, $this->__('Règle pour l\'ajout des liens via excel'), ["default" => "web", 'options' => ['web' => 'Lien web', 'cart' => __('Lien panier'), 'steelite' => 'Steelite']]); } protected function _multimedia() diff --git a/resources/views/fluidbook_publication/link_editor.blade.php b/resources/views/fluidbook_publication/link_editor.blade.php index 3588bd199..d1e08186d 100644 --- a/resources/views/fluidbook_publication/link_editor.blade.php +++ b/resources/views/fluidbook_publication/link_editor.blade.php @@ -81,6 +81,7 @@ 'upload_save_message'=>__("Après l'upload d'un fichier"), 'restore_version_tooltip'=>__('Restaurer cette version'), 'export_version_tooltip'=>__('Exporter les liens au format xlsx'), + 'automatic_links_from_excel'=>__('Détecter des liens à partir d\'un excel'), 'delete_link'=>__('Supprimer le lien'), 'edit_image_link'=>__('Editer les liens de l\'image'), 'delete_selection'=>__('Supprimer la sélection'), @@ -290,6 +291,17 @@ +
+
+ +
+
-- 2.39.5