From 2170cb031e3e1adefda90c463605294f05ebc5ba Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Mon, 13 Oct 2025 12:21:20 +0200 Subject: [PATCH] wait #7782 @3 --- app/Fluidbook/SearchIndex.php | 6 +++--- .../FluidbookPublication/LinksOperation.php | 17 +++++++++-------- app/Models/FluidbookPublication.php | 8 ++++---- .../fluidbook_publication/link_editor.blade.php | 2 +- .../link_editor_icons.blade.php | 4 +++- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/app/Fluidbook/SearchIndex.php b/app/Fluidbook/SearchIndex.php index 819c1ba2e..25008be4e 100644 --- a/app/Fluidbook/SearchIndex.php +++ b/app/Fluidbook/SearchIndex.php @@ -71,7 +71,7 @@ class SearchIndex * @param $compiler Compiler|FluidbookPublication * @return array */ - public static function makeHighlightIndex($compiler): array + public static function makeHighlightIndex($compiler, $ignoreSeparators = ''): array { if ($compiler instanceof Compiler) { @@ -80,13 +80,13 @@ class SearchIndex } else if ($compiler instanceof FluidbookPublication) { $fluidbook = $compiler; $pages = $fluidbook->getComposition(); - }else{ + } else { return []; } $res = []; foreach ($pages as $page => $infos) { - $fby = $fluidbook->getHightlightFile($page); + $fby = $fluidbook->getHightlightFile($page, $ignoreSeparators); $words = json_decode(Gzip::file_get_contents($fby), true); if (is_array($words)) { diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php index 90a5af34c..ea9a0a522 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php @@ -291,8 +291,10 @@ trait LinksOperation $toPrefix = ''; $toSuffix = ''; $skipFirst = true; - $vPadding = 0; - $hPadding = 0; + $vPadding = 2; + $hPadding = 2; + $tooltip = ''; + $ignoreSeparators = ''; switch ($rules) { case 'cart': $type = \Fluidbook\Tools\Links\Link::CART; @@ -300,8 +302,7 @@ trait LinksOperation case 'steelite': $toSuffix = '?embed'; $target = '_popupiframe'; - $hPadding = 2; - $vPadding = 4; + $ignoreSeparators = '-'; case 'web': default: break; @@ -311,8 +312,7 @@ trait LinksOperation $excel = ExcelToArray::excelToArrayKeyVal($uploadedFile->getPathname()); /** @var FluidbookPublication $fluidbook */ $fluidbook = FluidbookPublication::withoutGlobalScopes()->find($fluidbook_id); - $highlights = $fluidbook->getHightlightData(); - $links = []; + $highlights = $fluidbook->getHightlightData($ignoreSeparators); foreach ($excel as $search => $url) { if ($skipFirst) { @@ -324,7 +324,7 @@ trait LinksOperation if (isset($highlights[$search])) { foreach ($highlights[$search] as $o) { - $uid = LinksData::generateUID(); + $uid = 'a_' . substr(sha1($type . '//' . json_encode($o)), 0, 10); $links[$uid] = [ 'uid' => $uid, 'page' => $o['page'], @@ -335,12 +335,13 @@ trait LinksOperation 'type' => $type, 'target' => $target, 'to' => $toPrefix . $url . $toSuffix, + 'tooltip' => $tooltip, ]; } } } - LinksData::saveLinksInFile($fluidbook_id, backpack_user()->id, __("Ajouter des liens automatiques à partir du fichier :file (règles :rule)", ['file' => $uploadedFile->getClientOriginalName(),'rule'=>$rules]) . ' ', $links, $rulers, [], []); + LinksData::saveLinksInFile($fluidbook_id, backpack_user()->id, __("Ajouter des liens automatiques à partir du fichier :file (règles :rule)", ['file' => $uploadedFile->getClientOriginalName(), 'rule' => $rules]) . ' ', $links, $rulers, [], []); return response()->json(['success' => 'ok']); } diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index 89b73061f..3bf058f7e 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -457,15 +457,15 @@ class FluidbookPublication extends ToolboxStatusModel return self::_getDocument($compo[0])->getTextFile($compo[1], $type, $mode ?? $this->search_mode ?: 'standard', $this->textExtraction, $this->ignoreSearchSeparators); } - public function getHightlightData(): array + public function getHightlightData($ignoreSeparators = null): array { - return SearchIndex::makeHighlightIndex($this); + return SearchIndex::makeHighlightIndex($this,$ignoreSeparators); } - public function getHightlightFile($page) + public function getHightlightFile($page, $ignoreSeparators = null) { $compo = $this->getComposition()[$page]; - return self::_getDocument($compo[0])->getHightlightFile($compo[1], $this->search_mode ?: 'standard', $this->ignoreSearchSeparators); + return self::_getDocument($compo[0])->getHightlightFile($compo[1], $this->search_mode ?: 'standard', $ignoreSeparators ?? $this->ignoreSearchSeparators); } public function getAccessibleFile($page, $format = 'md') diff --git a/resources/views/fluidbook_publication/link_editor.blade.php b/resources/views/fluidbook_publication/link_editor.blade.php index d1e08186d..b4538d798 100644 --- a/resources/views/fluidbook_publication/link_editor.blade.php +++ b/resources/views/fluidbook_publication/link_editor.blade.php @@ -291,7 +291,7 @@ -
-
+ + +