diff --git a/Module.php b/Module.php index d562d31..e300903 100644 --- a/Module.php +++ b/Module.php @@ -6,6 +6,8 @@ use Omeka\Module\AbstractModule; use Laminas\EventManager\Event; use Laminas\View\Renderer\PhpRenderer; use Laminas\EventManager\SharedEventManagerInterface; +use Laminas\ModuleManager\ModuleManager; +use Laminas\ModuleManager\ModuleEvent; use Laminas\Mvc\MvcEvent; use Laminas\Mvc\Controller\AbstractController; use Omeka\Mvc\Controller\Plugin\Messenger; @@ -27,29 +29,60 @@ class Module extends AbstractModule 'exhibit' => 'Exhibitions', ]; - /* - public function attachListeners(SharedEventManagerInterface $sharedEventManager): void + public function init(ModuleManager $moduleManager): void { - $sharedEventManager->attach( - \Omeka\Api\Adapter\ItemAdapter::class, - 'api.create.post', - [$this, 'afterSaveItem'], - 100 - ); - $sharedEventManager->attach( - \Omeka\Api\Adapter\ItemAdapter::class, - 'api.update.post', - [$this, 'afterSaveItem'], - 100 - ); - $sharedEventManager->attach( - \Omeka\Api\Adapter\ItemAdapter::class, - 'api.delete.post', - [$this, 'afterDeleteItem'], - 100 - ); + $moduleManager->getEventManager()->attach(ModuleEvent::EVENT_MERGE_CONFIG, + [$this, 'onEventMergeConfig']); } - */ + + public function onEventMergeConfig(ModuleEvent $event): void + { + // Check if the main site is skipped, else the standard urls apply. + #if (!SLUG_MAIN_SITE) { + # return; + #} + + /** @var \Laminas\ModuleManager\Listener\ConfigListener $configListener */ + $configListener = $event->getParam('configListener'); + // At this point, the config is read only, so it is copied and replaced. + $config = $configListener->getMergedConfig(false); + + /* + if (isset($config['view_helpers']['invokables']['Omeka\Form\Element\HtmlTextarea'])) { + unset($config['view_helpers']['invokables']['Omeka\Form\Element\HtmlTextarea']); + } + */ + /* + if (isset($config['block_layouts']['factories']['html'])) { + unset($config['block_layouts']['factories']['html']); + } + if (isset($config['block_layouts']['sorted_names']['html'])) { + unset($config['block_layouts']['sorted_names']['html']); + } + */ + if (isset($config['block_layouts']['invokables']['tableOfContents'])) { + unset($config['block_layouts']['invokables']['tableOfContents']); + } + if (isset($config['block_layouts']['invokables']['browsePreview'])) { + unset($config['block_layouts']['invokables']['browsePreview']); + } + // Manage the routes for the main site when "s/site-slug/" is skipped. + // So copy routes from "site", without starting "/". + /* + foreach ($config['router']['routes']['site']['child_routes'] as $routeName => $options) { + // Skip some routes for pages that are set directly in the config. + if (isset($config['router']['routes']['top']['child_routes'][$routeName])) { + continue; + } + $config['router']['routes']['top']['child_routes'][$routeName] = $options; + $config['router']['routes']['top']['child_routes'][$routeName]['options']['route'] = + ltrim($config['router']['routes']['top']['child_routes'][$routeName]['options']['route'], '/'); + } + */ + $configListener->setMergedConfig($config); + } + + public function getConfig() { return include __DIR__ . '/config/module.config.php';