4 Commits

Author SHA1 Message Date
Jürgen Mummert 0c18b268ae Fix composer namespace references 2026-03-09 10:50:17 +01:00
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
Jürgen Mummert c790a1c312 Fix browser import for Meilisearch frontend client 2026-02-24 12:52:47 +01:00
16 changed files with 73 additions and 27 deletions
+3 -3
View File
@@ -1,5 +1,5 @@
{
"name": "mummert-media/contao-meilisearch-bundle",
"name": "mummert/contao-meilisearch-bundle",
"description": "Contao Meilisearch integration bundle",
"type": "contao-bundle",
"license": "MIT",
@@ -12,10 +12,10 @@
},
"autoload": {
"psr-4": {
"MummertMedia\\ContaoMeilisearchBundle\\": "src/"
"Mummert\\ContaoMeilisearchBundle\\": "src/"
}
},
"extra": {
"contao-manager-plugin": "MummertMedia\\ContaoMeilisearchBundle\\ContaoManager\\Plugin"
"contao-manager-plugin": "Mummert\\ContaoMeilisearchBundle\\ContaoManager\\Plugin"
}
}
@@ -1,6 +1,6 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle\Command;
namespace Mummert\ContaoMeilisearchBundle\Command;
use Contao\CoreBundle\Framework\ContaoFramework;
use Doctrine\DBAL\Connection;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle\Command;
namespace Mummert\ContaoMeilisearchBundle\Command;
use Contao\CoreBundle\Framework\ContaoFramework;
use Contao\Database;
+2 -2
View File
@@ -1,8 +1,8 @@
<?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\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
+2 -2
View File
@@ -1,6 +1,6 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle\ContaoManager;
namespace Mummert\ContaoMeilisearchBundle\ContaoManager;
use Contao\CalendarBundle\ContaoCalendarBundle;
use Contao\CoreBundle\ContaoCoreBundle;
@@ -8,7 +8,7 @@ use Contao\ManagerPlugin\Bundle\BundlePluginInterface;
use Contao\ManagerPlugin\Bundle\Config\BundleConfig;
use Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
use Contao\NewsBundle\ContaoNewsBundle;
use MummertMedia\ContaoMeilisearchBundle\ContaoMeilisearchBundle;
use Mummert\ContaoMeilisearchBundle\ContaoMeilisearchBundle;
class Plugin implements BundlePluginInterface
{
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle;
namespace Mummert\ContaoMeilisearchBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
@@ -1,6 +1,6 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle\Controller\FrontendModule;
namespace Mummert\ContaoMeilisearchBundle\Controller\FrontendModule;
use Contao\Config;
use Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController;
@@ -1,6 +1,6 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle\DependencyInjection;
namespace Mummert\ContaoMeilisearchBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
+2 -2
View File
@@ -1,10 +1,10 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle\EventListener;
namespace Mummert\ContaoMeilisearchBundle\EventListener;
use Contao\Config;
use Contao\System;
use MummertMedia\ContaoMeilisearchBundle\Service\MeilisearchFileHelper;
use Mummert\ContaoMeilisearchBundle\Service\MeilisearchFileHelper;
class IndexPageListener
{
@@ -1,6 +1,6 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle\EventListener;
namespace Mummert\ContaoMeilisearchBundle\EventListener;
use Contao\CalendarEventsModel;
use Contao\Config;
+4 -4
View File
@@ -2,24 +2,24 @@ services:
# Alias MUSS vorhanden sein (richtig platziert)
Psr\Container\ContainerInterface: '@service_container'
MummertMedia\ContaoMeilisearchBundle\:
Mummert\ContaoMeilisearchBundle\:
resource: '../../{Command,EventListener,Service}'
autowire: true
autoconfigure: true
MummertMedia\ContaoMeilisearchBundle\EventListener\MeilisearchPageMarkerListener:
Mummert\ContaoMeilisearchBundle\EventListener\MeilisearchPageMarkerListener:
autowire: true
autoconfigure: false
tags:
- { name: contao.hook, hook: outputFrontendTemplate, method: onOutputFrontendTemplate }
MummertMedia\ContaoMeilisearchBundle\EventListener\IndexPageListener:
Mummert\ContaoMeilisearchBundle\EventListener\IndexPageListener:
autowire: true
autoconfigure: false
tags:
- { name: contao.hook, hook: indexPage, method: onIndexPage }
MummertMedia\ContaoMeilisearchBundle\Controller\FrontendModule\MeilisearchSearchController:
Mummert\ContaoMeilisearchBundle\Controller\FrontendModule\MeilisearchSearchController:
autowire: true
autoconfigure: false
tags:
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
use MummertMedia\ContaoMeilisearchBundle\EventListener\MeilisearchPageMarkerListener;
use Mummert\ContaoMeilisearchBundle\EventListener\MeilisearchPageMarkerListener;
$GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = [
@@ -60,10 +60,44 @@ Contao 5 Frontend Module Template
</div>
</div>
<script type="module">
import MeiliSearch from 'https://cdn.jsdelivr.net/npm/meilisearch@latest/dist/bundles/meilisearch.esm.js';
<script>
(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'
];
document.addEventListener('DOMContentLoaded', () => {
function loadClient(urls, onDone) {
if (typeof MeiliSearch !== 'undefined') {
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');
if (!wrapper) return;
@@ -221,7 +255,19 @@ Contao 5 Frontend Module Template
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>
{% endblock %}
<!-- indexer::continue -->
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle\Service;
namespace Mummert\ContaoMeilisearchBundle\Service;
use Contao\FilesModel;
use Contao\StringUtil;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle\Service;
namespace Mummert\ContaoMeilisearchBundle\Service;
use Contao\Config;
use Contao\CoreBundle\Framework\ContaoFramework;
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
namespace MummertMedia\ContaoMeilisearchBundle\Service;
namespace Mummert\ContaoMeilisearchBundle\Service;
use Contao\Config;
use Contao\CoreBundle\Framework\ContaoFramework;