From ce8b9f589cf265a9ec6d69801e153b58bfcc9612 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Wed, 20 Oct 2021 10:25:45 +0200 Subject: [PATCH] wip #4805 @1 --- app/Jobs/SearchIndex.php | 69 +++++++++++++++++++++++++++++++++++++--- app/Models/Tour.php | 3 +- 2 files changed, 66 insertions(+), 6 deletions(-) diff --git a/app/Jobs/SearchIndex.php b/app/Jobs/SearchIndex.php index 8c1d342..517612d 100644 --- a/app/Jobs/SearchIndex.php +++ b/app/Jobs/SearchIndex.php @@ -2,8 +2,11 @@ namespace App\Jobs; +use App\Models\Asset; use App\Models\Resource; +use App\Models\Tour; use Cubist\Backpack\Magic\PageData; +use Cubist\Minisearch\Document; use Cubist\Minisearch\Document\PDF; use Cubist\Minisearch\Index; @@ -31,14 +34,53 @@ class SearchIndex extends Index public function indexLibrary() { + $indexableTypes = ['audio', 'video']; + $assets = Asset::all(); + foreach ($assets as $asset) { + $data = $asset->getPageData(); + if (!in_array($data->get('type'), $indexableTypes)) { + continue; + } + if (!$data->get('theme')) { + continue; + } + $doc = new Document(); + $doc->setType($data->get('type')); + $doc->setId('media_' . $data->get('type') . '_' . $data->get('id')); + $doc->setUrl($doc->getId()); + $doc->setTitle($data->get('title')); + $doc->setText(implode(' ', $data->get('keywords'))); + + $this->addDocument($doc); + } } + /** + * @throws \Exception + */ public function indexResources() { /** @var PageData $data */ $data = Resource::find('1')->getPageData(); + $documents = $data->get('documents'); + foreach ($documents as $i => $document) { + if (!$document['document_pdf']) { + continue; + } + foreach ($data->getMediaPathsByCollection($document['document_pdf']) as $pdf) { + $document = new PDF($pdf); + $document->setId('resources_documents_' . $i); + $document->setUrl($document->getId()); + $document->setTitle($document['document_title']); + $document->setThumb($data->getImageURLbyCollection($document['document_image'])); + $document->setType('pdf'); + $this->addDocument($document); + break; + } + } + $chapters = $data->get('chapters'); foreach ($chapters as $i => $chapter) { foreach ($chapter['subchapters'] as $j => $subchapter) { @@ -48,24 +90,41 @@ class SearchIndex extends Index } foreach ($data->getMediaPathsByCollection($memo['memo_pdf']) as $pdf) { $document = new PDF($pdf); - $document->setId('resources_' . $i . '_' . $j . '_' . $k); - $document->setUrl('resources_' . $i . '_' . $j . '_' . $k); + $document->setId('resources_memos_' . $i . '_' . $j . '_' . $k); + $document->setUrl($document->getId()); $document->setTitle($memo['memo_title']); $document->setThumb($data->getImageURLbyCollection($memo['memo_image'])); $document->setType('pdf'); $this->addDocument($document); break; } - } } } - } public function indexTour() { + /** @var PageData $data */ + $data = Tour::find('1')->getPageData(); + $themes = $data->get('tour_themes'); + foreach ($themes as $i => $theme) { + foreach ($theme['theme_documents'] as $j => $doc) { + if (!$doc['memo_pdf']) { + continue; + } + foreach ($data->getMediaPathsByCollection($doc['memo_pdf']) as $pdf) { + $document = new PDF($pdf); + $document->setId('tour_documents_' . $i . '_' . $j); + $document->setUrl($document->getId()); + $document->setTitle($doc['memo_title']); + $document->setThumb($data->getImageURLbyCollection($doc['memo_image'])); + $document->setType('pdf'); + $this->addDocument($document); + break; + } + } + } } - } diff --git a/app/Models/Tour.php b/app/Models/Tour.php index 58eaa34..1224bdc 100644 --- a/app/Models/Tour.php +++ b/app/Models/Tour.php @@ -1,6 +1,7 @@ addField('title', Text::class, 'Titre', ['tab' => 'Intro']); $this->addField('subtitle', Textarea::class, 'Instructions', ['tab' => 'Intro']); - $this->addField('tour_themes', BunchOfFieldsMultiple::class, 'Chapitres', ['tab' => 'Mémos', 'bunch' => TourTheme::class, 'add_label' => 'Ajouter un thème']); + $this->addField('tour_themes', BunchOfFieldsMultiple::class, '', ['tab' => 'Thèmes', 'bunch' => TourTheme::class, 'add_label' => 'Ajouter un thème']); } } -- 2.39.5