2 Commits

Author SHA1 Message Date
Jürgen Mummert 188de3d03f Rename vendor and namespace to mummert 2026-03-09 10:10:13 +01:00
Jürgen Mummert d874fe4274 Add resilient CDN loader for Meilisearch browser client 2026-02-24 12:58:34 +01:00
16 changed files with 69 additions and 28 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"name": "mummert-media/contao-meilisearch-bundle", "name": "mummert/contao-meilisearch-bundle",
"description": "Contao Meilisearch integration bundle", "description": "Contao Meilisearch integration bundle",
"type": "contao-bundle", "type": "contao-bundle",
"license": "MIT", "license": "MIT",
@@ -1,6 +1,6 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\Command; namespace Mummert\ContaoMeilisearchBundle\Command;
use Contao\CoreBundle\Framework\ContaoFramework; use Contao\CoreBundle\Framework\ContaoFramework;
use Doctrine\DBAL\Connection; use Doctrine\DBAL\Connection;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\Command; namespace Mummert\ContaoMeilisearchBundle\Command;
use Contao\CoreBundle\Framework\ContaoFramework; use Contao\CoreBundle\Framework\ContaoFramework;
use Contao\Database; use Contao\Database;
+2 -2
View File
@@ -1,8 +1,8 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\Command; namespace Mummert\ContaoMeilisearchBundle\Command;
use MummertMedia\ContaoMeilisearchBundle\Service\MeilisearchIndexService; use Mummert\ContaoMeilisearchBundle\Service\MeilisearchIndexService;
use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
+2 -2
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\ContaoManager; namespace Mummert\ContaoMeilisearchBundle\ContaoManager;
use Contao\CalendarBundle\ContaoCalendarBundle; use Contao\CalendarBundle\ContaoCalendarBundle;
use Contao\CoreBundle\ContaoCoreBundle; use Contao\CoreBundle\ContaoCoreBundle;
@@ -8,7 +8,7 @@ use Contao\ManagerPlugin\Bundle\BundlePluginInterface;
use Contao\ManagerPlugin\Bundle\Config\BundleConfig; use Contao\ManagerPlugin\Bundle\Config\BundleConfig;
use Contao\ManagerPlugin\Bundle\Parser\ParserInterface; use Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
use Contao\NewsBundle\ContaoNewsBundle; use Contao\NewsBundle\ContaoNewsBundle;
use MummertMedia\ContaoMeilisearchBundle\ContaoMeilisearchBundle; use Mummert\ContaoMeilisearchBundle\ContaoMeilisearchBundle;
class Plugin implements BundlePluginInterface class Plugin implements BundlePluginInterface
{ {
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle; namespace Mummert\ContaoMeilisearchBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle; use Symfony\Component\HttpKernel\Bundle\Bundle;
@@ -1,6 +1,6 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\Controller\FrontendModule; namespace Mummert\ContaoMeilisearchBundle\Controller\FrontendModule;
use Contao\Config; use Contao\Config;
use Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController; use Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController;
@@ -1,6 +1,6 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\DependencyInjection; namespace Mummert\ContaoMeilisearchBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator; use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
+2 -2
View File
@@ -1,10 +1,10 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\EventListener; namespace Mummert\ContaoMeilisearchBundle\EventListener;
use Contao\Config; use Contao\Config;
use Contao\System; use Contao\System;
use MummertMedia\ContaoMeilisearchBundle\Service\MeilisearchFileHelper; use Mummert\ContaoMeilisearchBundle\Service\MeilisearchFileHelper;
class IndexPageListener class IndexPageListener
{ {
@@ -1,6 +1,6 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\EventListener; namespace Mummert\ContaoMeilisearchBundle\EventListener;
use Contao\CalendarEventsModel; use Contao\CalendarEventsModel;
use Contao\Config; use Contao\Config;
+4 -4
View File
@@ -2,24 +2,24 @@ services:
# Alias MUSS vorhanden sein (richtig platziert) # Alias MUSS vorhanden sein (richtig platziert)
Psr\Container\ContainerInterface: '@service_container' Psr\Container\ContainerInterface: '@service_container'
MummertMedia\ContaoMeilisearchBundle\: Mummert\ContaoMeilisearchBundle\:
resource: '../../{Command,EventListener,Service}' resource: '../../{Command,EventListener,Service}'
autowire: true autowire: true
autoconfigure: true autoconfigure: true
MummertMedia\ContaoMeilisearchBundle\EventListener\MeilisearchPageMarkerListener: Mummert\ContaoMeilisearchBundle\EventListener\MeilisearchPageMarkerListener:
autowire: true autowire: true
autoconfigure: false autoconfigure: false
tags: tags:
- { name: contao.hook, hook: outputFrontendTemplate, method: onOutputFrontendTemplate } - { name: contao.hook, hook: outputFrontendTemplate, method: onOutputFrontendTemplate }
MummertMedia\ContaoMeilisearchBundle\EventListener\IndexPageListener: Mummert\ContaoMeilisearchBundle\EventListener\IndexPageListener:
autowire: true autowire: true
autoconfigure: false autoconfigure: false
tags: tags:
- { name: contao.hook, hook: indexPage, method: onIndexPage } - { name: contao.hook, hook: indexPage, method: onIndexPage }
MummertMedia\ContaoMeilisearchBundle\Controller\FrontendModule\MeilisearchSearchController: Mummert\ContaoMeilisearchBundle\Controller\FrontendModule\MeilisearchSearchController:
autowire: true autowire: true
autoconfigure: false autoconfigure: false
tags: tags:
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
use MummertMedia\ContaoMeilisearchBundle\EventListener\MeilisearchPageMarkerListener; use Mummert\ContaoMeilisearchBundle\EventListener\MeilisearchPageMarkerListener;
$GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = [ $GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = [
@@ -60,16 +60,45 @@ Contao 5 Frontend Module Template
</div> </div>
</div> </div>
<script type="module">
<script src="https://cdn.jsdelivr.net/npm/meilisearch@0.39.0/dist/bundles/meilisearch.umd.min.js"></script>
<script> <script>
document.addEventListener('DOMContentLoaded', () => { (function () {
const CDN_URLS = [
'https://cdn.jsdelivr.net/npm/meilisearch@0.39.0/dist/bundles/meilisearch.umd.min.js',
'https://unpkg.com/meilisearch@0.39.0/dist/bundles/meilisearch.umd.min.js'
];
if (typeof MeiliSearch === 'undefined') { function loadClient(urls, onDone) {
console.error('[Meilisearch] Browser client konnte nicht geladen werden'); if (typeof MeiliSearch !== 'undefined') {
return; onDone(true, null);
return;
}
if (!urls.length) {
onDone(false, 'Alle CDN-Quellen fehlgeschlagen (mögliche CSP-Blockierung von script-src).');
return;
}
const url = urls.shift();
const script = document.createElement('script');
script.src = url;
script.async = true;
script.crossOrigin = 'anonymous';
script.onload = () => {
if (typeof MeiliSearch !== 'undefined') {
onDone(true, null);
} else {
loadClient(urls, onDone);
}
};
script.onerror = () => loadClient(urls, onDone);
document.head.appendChild(script);
} }
function initSearch() {
const wrapper = document.querySelector('.meilisearch-search'); const wrapper = document.querySelector('.meilisearch-search');
if (!wrapper) return; if (!wrapper) return;
@@ -226,7 +255,19 @@ Contao 5 Frontend Module Template
results.appendChild(node); results.appendChild(node);
} }
} }
}); }
document.addEventListener('DOMContentLoaded', () => {
loadClient([...CDN_URLS], (ok, reason) => {
if (!ok) {
console.error('[Meilisearch] Browser client konnte nicht geladen werden. ' + reason);
return;
}
initSearch();
});
});
})();
</script> </script>
{% endblock %} {% endblock %}
<!-- indexer::continue --> <!-- indexer::continue -->
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\Service; namespace Mummert\ContaoMeilisearchBundle\Service;
use Contao\FilesModel; use Contao\FilesModel;
use Contao\StringUtil; use Contao\StringUtil;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\Service; namespace Mummert\ContaoMeilisearchBundle\Service;
use Contao\Config; use Contao\Config;
use Contao\CoreBundle\Framework\ContaoFramework; use Contao\CoreBundle\Framework\ContaoFramework;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
namespace MummertMedia\ContaoMeilisearchBundle\Service; namespace Mummert\ContaoMeilisearchBundle\Service;
use Contao\Config; use Contao\Config;
use Contao\CoreBundle\Framework\ContaoFramework; use Contao\CoreBundle\Framework\ContaoFramework;