From: Vincent Vanwaelscappel Date: Fri, 10 Oct 2025 17:24:15 +0000 (+0200) Subject: wip #7782 @5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=97ed3176a72506166043735fb48d5c76684b2a14;p=fluidbook-toolbox.git wip #7782 @5 --- diff --git a/app/Fluidbook/SearchIndex.php b/app/Fluidbook/SearchIndex.php index d5c3e67f9..819c1ba2e 100644 --- a/app/Fluidbook/SearchIndex.php +++ b/app/Fluidbook/SearchIndex.php @@ -4,6 +4,7 @@ namespace App\Fluidbook; use App\Fluidbook\Compiler\Compiler; use App\Models\FluidbookDocument; +use App\Models\FluidbookPublication; use Cubist\Util\Gzip; use Cubist\Util\PHP; @@ -67,14 +68,25 @@ class SearchIndex } /** - * @param $compiler Compiler + * @param $compiler Compiler|FluidbookPublication * @return array */ public static function makeHighlightIndex($compiler): array { + + if ($compiler instanceof Compiler) { + $pages = $compiler->pages; + $fluidbook = $compiler->getFluidbook(); + } else if ($compiler instanceof FluidbookPublication) { + $fluidbook = $compiler; + $pages = $fluidbook->getComposition(); + }else{ + return []; + } + $res = []; - foreach ($compiler->pages as $page => $infos) { - $fby = $compiler->getFluidbook()->getHightlightFile($page); + foreach ($pages as $page => $infos) { + $fby = $fluidbook->getHightlightFile($page); $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 d22bc05b0..90a5af34c 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin\Operations\FluidbookPublication; // __('!!Paramètres des fluidbooks') +use App\Fluidbook\Compiler\Compiler; use App\Fluidbook\Link\LinksData; use App\Http\Middleware\VerifyCsrfToken; use App\Models\FluidbookPublication; @@ -289,6 +290,9 @@ trait LinksOperation $target = '_blank'; $toPrefix = ''; $toSuffix = ''; + $skipFirst = true; + $vPadding = 0; + $hPadding = 0; switch ($rules) { case 'cart': $type = \Fluidbook\Tools\Links\Link::CART; @@ -296,16 +300,47 @@ trait LinksOperation case 'steelite': $toSuffix = '?embed'; $target = '_popupiframe'; + $hPadding = 2; + $vPadding = 4; case 'web': default: break; } ExcelToArray::setCache(Files::mkdir('/tmp/exceltoarray')); - $excel = ExcelToArray::excelToAssoc($uploadedFile->getPathname()); - dd($type, $target, $toSuffix, $excel); + $excel = ExcelToArray::excelToArrayKeyVal($uploadedFile->getPathname()); + /** @var FluidbookPublication $fluidbook */ + $fluidbook = FluidbookPublication::withoutGlobalScopes()->find($fluidbook_id); + $highlights = $fluidbook->getHightlightData(); + $links = []; + + foreach ($excel as $search => $url) { + if ($skipFirst) { + $skipFirst = false; + continue; + } + + $search = mb_strtolower($search); + + if (isset($highlights[$search])) { + foreach ($highlights[$search] as $o) { + $uid = LinksData::generateUID(); + $links[$uid] = [ + 'uid' => $uid, + 'page' => $o['page'], + 'left' => $o['x'] - $hPadding, + 'top' => $o['y'] - $o['height'] - $vPadding, + 'width' => $o['width'] + $hPadding * 2, + 'height' => $o['height'] + $vPadding * 2, + 'type' => $type, + 'target' => $target, + 'to' => $toPrefix . $url . $toSuffix, + ]; + } + } + } - LinksData::saveLinksInFile($fluidbook_id, backpack_user()->id, __("Ajouter des liens automatiques à partir du fichier :file", ['file' => $uploadedFile->getClientOriginalName()]) . ' ', $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 ea43c581b..89b73061f 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -16,6 +16,7 @@ use App\Fluidbook\Farm; use App\Fluidbook\Link\Link; use App\Fluidbook\Link\LinksData; use App\Fluidbook\Region; +use App\Fluidbook\SearchIndex; use App\Http\Controllers\Admin\Operations\ChangeownerOperation; use App\Http\Controllers\Admin\Operations\ChangestatusOperation; use App\Http\Controllers\Admin\Operations\FluidbookPublication\AuditOperation; @@ -456,6 +457,11 @@ 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 + { + return SearchIndex::makeHighlightIndex($this); + } + public function getHightlightFile($page) { $compo = $this->getComposition()[$page];