summaryrefslogtreecommitdiff
path: root/modules_v4
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2019-03-05 14:29:09 +0000
committerGreg Roach <fisharebest@webtrees.net>2019-03-05 14:29:09 +0000
commit3e4bf26f9f16d92152484c56e3629888fb6019d5 (patch)
tree6cad05f979c25df7a8347ea78d8717c3b749625d /modules_v4
parent54c7f8df0fc7bddb0bcc1441937c30320ca68563 (diff)
downloadwebtrees-3e4bf26f9f16d92152484c56e3629888fb6019d5.tar.gz
webtrees-3e4bf26f9f16d92152484c56e3629888fb6019d5.tar.bz2
webtrees-3e4bf26f9f16d92152484c56e3629888fb6019d5.zip
Fix: #2240 - allow custom modules to provide and replace views
Diffstat (limited to 'modules_v4')
-rw-r--r--modules_v4/example-middleware.disable/module.php4
-rw-r--r--modules_v4/example.disable/module.php46
2 files changed, 49 insertions, 1 deletions
diff --git a/modules_v4/example-middleware.disable/module.php b/modules_v4/example-middleware.disable/module.php
index ad1db9b5cd..d6f34c244a 100644
--- a/modules_v4/example-middleware.disable/module.php
+++ b/modules_v4/example-middleware.disable/module.php
@@ -31,6 +31,10 @@ return new class extends AbstractModule implements ModuleCustomInterface, Middle
}
/**
+ * For a description of request and response objects, refer to the Symfony HttpFoundation documentation.
+ *
+ * @see https://symfony.com/doc/current/components/http_foundation.html
+ *
* @param Request $request
* @param Closure $next
*
diff --git a/modules_v4/example.disable/module.php b/modules_v4/example.disable/module.php
index 2e0182ae5a..4d0c076718 100644
--- a/modules_v4/example.disable/module.php
+++ b/modules_v4/example.disable/module.php
@@ -1,9 +1,18 @@
<?php
+
+use Fisharebest\Webtrees\Auth;
+use Fisharebest\Webtrees\Contracts\UserInterface;
use Fisharebest\Webtrees\Module\AbstractModule;
use Fisharebest\Webtrees\Module\ModuleCustomInterface;
use Fisharebest\Webtrees\Module\ModuleCustomTrait;
+use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\View;
+use Symfony\Component\HttpFoundation\Request;
-return new class extends AbstractModule implements ModuleCustomInterface {
+return new /**
+ * Class UserInterface
+ */
+class extends AbstractModule implements ModuleCustomInterface {
use ModuleCustomTrait;
/**
@@ -65,4 +74,39 @@ return new class extends AbstractModule implements ModuleCustomInterface {
{
return 'https://www.example.com/support';
}
+
+ /**
+ * Constructor.
+ */
+ public function __construct()
+ {
+ // IMPORTANT - the constructor is called on *all* modules, even ones that are disabled.
+ // It is also called before the webtrees framework is initialised, and so other components
+ // will not yet exist.
+ }
+
+ /**
+ * Boostrap.
+ *
+ * @param UserInterface $user A user (or visitor) object.
+ * @param Tree|null $tree Note that $tree can be null (if all trees are private).
+ */
+ public function boot(UserInterface $user, ?Tree $tree): void
+ {
+ // The boot() function is called after the framework has been booted.
+
+ if (!Auth::isAdmin($user) && $tree !== null) {
+ return;
+ }
+
+ // Here is also a good place to register any views (templates) used by the module.
+ // This command allows the module to use: view($this->name() . '::', 'fish')
+ // to access the file ./resources/views/fish.phtml
+ View::registerNamespace($this->name(), __DIR__ . '/resources/views/');
+
+ // We can also provide replacements for existing views (which use an empty namespace).
+ // Note that you can also replace views in other modules.
+ View::registerCustomView('::individual-page', $this->name() . '::my-individual-page');
+ View::registerCustomView('::layouts/administration', $this->name() . '::layouts/my-administration');
+ }
};