From fda4f4669787b7e76f8cc3343b8d29224240e66f Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 13 Feb 2026 12:24:53 +0100 Subject: [PATCH] wip #8000 @0.5 --- app/Fluidbook/Compiler/Compiler.php | 2 ++ app/Fluidbook/Compiler/Links.php | 11 +++++++--- .../Services/ShortLinksOperation.php | 20 ++++++++++--------- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/app/Fluidbook/Compiler/Compiler.php b/app/Fluidbook/Compiler/Compiler.php index 53b7f30c5..b9ce8f1c3 100644 --- a/app/Fluidbook/Compiler/Compiler.php +++ b/app/Fluidbook/Compiler/Compiler.php @@ -559,6 +559,8 @@ class Compiler extends Base implements CompilerInterface, IVirtualDirectoryError $this->config->triggersLinks = []; $this->config->hasContentLock = false; + + $this->config->specialShortLinks=[]; } public function addMask($layer, $page, $area) diff --git a/app/Fluidbook/Compiler/Links.php b/app/Fluidbook/Compiler/Links.php index fe7925d79..d19e3fc02 100644 --- a/app/Fluidbook/Compiler/Links.php +++ b/app/Fluidbook/Compiler/Links.php @@ -130,7 +130,7 @@ trait Links $linksCopy = $links; foreach ($linksCopy as $k => $linkData) { - if(!$linkData['to']) { + if (!$linkData['to']) { continue; } if (stristr($linkData['to'], 'javascript:canvasToPDF(')) { @@ -531,13 +531,18 @@ trait Links $this->config->push('triggersLinks', ['page' => $page, 'link' => $link, 'delay' => $delay]); } - public function shortenURL($url) + public function shortenURL($url, $special = false) { if (!$this->config->linkShortener || $this->config->linkShortener === 'none' || !Url::isDistant($url)) { return $url; } - return LinkShortener::shorturl($url, $this->config->linkShortener); + + $res = LinkShortener::shorturl($url, $this->config->linkShortener); + if ($special) { + $this->config->push('specialShortLinks', $res); + } + return $res; } } diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ShortLinksOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ShortLinksOperation.php index e547c9f54..3f314f11d 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ShortLinksOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ShortLinksOperation.php @@ -3,8 +3,12 @@ namespace App\Http\Controllers\Admin\Operations\FluidbookPublication\Services; use App\Fluidbook\Link\LinksData; +use App\Http\Middleware\Authenticate; use App\Http\Middleware\CheckIfAdmin; +use App\Http\Middleware\VerifyCsrfToken; use App\Models\FluidbookPublication; +use App\Models\LinkShortener; +use Cubist\Backpack\Middleware\CORSMiddleware; use Fluidbook\Tools\Links\Link; use Illuminate\Support\Facades\Route; @@ -15,13 +19,13 @@ trait ShortLinksOperation protected function setupShortlinkRoutes($segment, $routeName, $controller) { foreach (['services', 's'] as $segment) { - Route::match(['get'], $segment . '/shortlinks/{cid?}', $controller . '@listShortLinks')->withoutMiddleware([CheckIfAdmin::class]); + Route::match(['post'], $segment . '/shortlinks', $controller . '@listShortLinks')->withoutMiddleware([CORSMiddleware::class])->withoutMiddleware([Authenticate::class, VerifyCsrfToken::class, CheckIfAdmin::class]); } } - public function listShortLinks($cid) + public function listShortLinks() { - $publication = FluidbookPublication::where('cid', $cid)->first(); + $publication = FluidbookPublication::where('cid', request('cid'))->first(); if (null === $publication) { abort(404); } @@ -29,13 +33,11 @@ trait ShortLinksOperation abort(404); } - LinksData::getLinksAndRulers($publication->id, $links, $rulers); - $res = ['youtube' => []]; - foreach ($links as $link) { - if ($link['type'] == Link::WEBVIDEO && $link['video_service'] == 'youtube') { - - } + $res = []; + foreach (request('links') as $url) { + $res[$url] = LinkShortener::expand($url, $publication->linkShortener); } + return $res; } } -- 2.39.5