]> _ Git - odl.git/commitdiff
wip #4805 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 20 Oct 2021 08:25:45 +0000 (10:25 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 20 Oct 2021 08:25:45 +0000 (10:25 +0200)
app/Jobs/SearchIndex.php
app/Models/Tour.php

index 8c1d34279b6d7970531c338f7241acb9ebc26bc4..517612dd3edd04a41f7c4be2c5e248be329021f9 100644 (file)
@@ -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;
+                }
+            }
+        }
     }
-
 }
index 58eaa34894b9fcbe551d37071c3c2dde1f47541b..1224bdc59295fd1b810ec735fbc6181183175a41 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 namespace App\Models;
+
 use App\SubForms\TourTheme;
 use Cubist\Backpack\Magic\Fields\BunchOfFieldsMultiple;
 use Cubist\Backpack\Magic\Fields\Text;
@@ -21,6 +22,6 @@ class Tour extends CubistMagicAbstractModel
 
         $this->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']);
     }
 }