From bba0aa6562bce0f1216aa8dc7d8d02d857ae7454 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 30 Jan 2026 17:56:08 +0100 Subject: [PATCH] wip #7868 @0.5 --- app/Fluidbook/Compiler/Links.php | 3 ++- .../FluidbookPublication/LinksOperation.php | 2 +- app/Models/FluidbookPublication.php | 22 ++++++++++++++++--- .../linkeditor-stable/js/linkeditor.form.js | 6 +++++ .../linkeditor-stable/js/linkeditor.save.js | 1 + .../link_editor.blade.php | 6 ++++- 6 files changed, 34 insertions(+), 6 deletions(-) diff --git a/app/Fluidbook/Compiler/Links.php b/app/Fluidbook/Compiler/Links.php index 4ee4a8750..704ef3444 100644 --- a/app/Fluidbook/Compiler/Links.php +++ b/app/Fluidbook/Compiler/Links.php @@ -530,7 +530,8 @@ trait Links public function shortenURL($url) { - if ($this->config->linkShortener === 'none' || !Url::isDistant($url)) { + + if (!$this->config->linkShortener || !Url::isDistant($url)) { return $url; } return LinkShortener::shorturl($url, $this->config->linkShortener); diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php index 405a1c208..0f54f45b3 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php @@ -81,7 +81,7 @@ trait LinksOperation ); $fb = FluidbookPublication::withoutGlobalScopes()->find($fluidbook_id); - return response()->json(['assets' => $fb->getLinksAssetsDimensions(), 'versions' => LinksData::getLinksVersions($fluidbook_id)]); + return response()->json(['assets' => $fb->getLinksAssetsDimensions(), 'versions' => LinksData::getLinksVersions($fluidbook_id), 'shortenedLinks' => $fb->getShortenedLinks()]); } protected function generateFont(Request $request, $id) diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index d9ae9160f..f26235469 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -70,6 +70,7 @@ use Cubist\Util\Gzip; use Cubist\Util\Json; use Cubist\Util\Markdown; use Cubist\Util\Str; +use Cubist\Util\Url; use Datetime; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; @@ -950,7 +951,7 @@ class FluidbookPublication extends ToolboxStatusModel return true; } - protected function _baseReplicate(?array $except=null) + protected function _baseReplicate(?array $except = null) { $current = $this; if ($this->syncFromWorkshop()) { @@ -970,7 +971,7 @@ class FluidbookPublication extends ToolboxStatusModel return $new; } - public function replicateFull(?array $except=null) + public function replicateFull(?array $except = null) { $new = $this->_baseReplicate($except); if (!$this->composition_fluidbook && $this->version >= 3) { @@ -987,7 +988,7 @@ class FluidbookPublication extends ToolboxStatusModel return $new; } - public function replicateSettings(?array $except=null) + public function replicateSettings(?array $except = null) { $new = $this->_baseReplicate(array_merge($except ?? [], ['composition'])); $new->composition = []; @@ -1406,4 +1407,19 @@ class FluidbookPublication extends ToolboxStatusModel ->orderBy('created_at', 'desc') ->pluck('id'); } + + public function getShortenedLinks() + { + if (!$this->linkShortener) { + return []; + } + $res = []; + LinksData::getLinksAndRulers($this->id, $links, $rulers); + foreach ($links as $link) { + if (Url::isDistant($link['to'])) { + $res[$link['to']] = LinkShortener::shorturl($link['to'], $this->linkShortener); + } + } + return $res; + } } diff --git a/resources/linkeditor-stable/js/linkeditor.form.js b/resources/linkeditor-stable/js/linkeditor.form.js index 8a6bdeb9e..bf6b258c5 100644 --- a/resources/linkeditor-stable/js/linkeditor.form.js +++ b/resources/linkeditor-stable/js/linkeditor.form.js @@ -273,10 +273,16 @@ LinkeditorForm.prototype = { var type = $(link).attr('fb-type'); var form = $("#linkeditor-form-template-" + type).clone(false); + + $(form).attr('id', null); $(form).data('link', link); $(form).find('.init-tooltip').removeClass('init-tooltip'); this.updateFormData(form); + if (SHORTENED_LINKS[$(form).find('[name="to"]').val()] !== undefined) { + $(form).find('[name="to"]').after('

' + TRANSLATIONS['short_link'] + ': ' + SHORTENED_LINKS[$(form).find('[name="to"]').val()] + '

'); + } + container.append(form); this.linkeditor.initTooltips(); diff --git a/resources/linkeditor-stable/js/linkeditor.save.js b/resources/linkeditor-stable/js/linkeditor.save.js index 6f9dbc96e..11b0278c6 100644 --- a/resources/linkeditor-stable/js/linkeditor.save.js +++ b/resources/linkeditor-stable/js/linkeditor.save.js @@ -72,6 +72,7 @@ LinkeditorSave.prototype = { $this.runningAutomaticSaveTimeout = false; window.ASSETS = data.assets; + window.SHORTENED_LINKS = data.shortenedLinks; $this.linkeditor.versions.setVersions(data.versions); callback(); }, diff --git a/resources/views/fluidbook_publication/link_editor.blade.php b/resources/views/fluidbook_publication/link_editor.blade.php index a041ff62b..c08a15d58 100644 --- a/resources/views/fluidbook_publication/link_editor.blade.php +++ b/resources/views/fluidbook_publication/link_editor.blade.php @@ -129,6 +129,7 @@ 'fix_offset'=>__('Corriger décalage de page'), 'interactive_links'=>__('Liens interactifs'), 'noninteractive_links'=>__('Liens non-interactifs'), + 'short_link'=>__('Lien raccourci'), ]; $rulers=!count($rulers)?'{}':json_encode($rulers); @@ -147,6 +148,7 @@ $settings[$k]=$user->getToolboxSetting('linkeditor_'.$k,$v); } $assets=$fluidbook->getLinksAssetsDimensions(); + $shortenedLinks=$fluidbook->getShortenedLinks(); $alignments=[ 'left'=>__('Aligner la sélection à gauche'), @@ -295,7 +297,8 @@ data-tooltip="{{__('Ajout automatique de liens à partir d\'un excel')}}">
-- 2.39.5