diff options
| author | Greg Roach <fisharebest@webtrees.net> | 2019-03-05 14:29:09 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@webtrees.net> | 2019-03-05 14:29:09 +0000 |
| commit | 3e4bf26f9f16d92152484c56e3629888fb6019d5 (patch) | |
| tree | 6cad05f979c25df7a8347ea78d8717c3b749625d /modules_v4 | |
| parent | 54c7f8df0fc7bddb0bcc1441937c30320ca68563 (diff) | |
| download | webtrees-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.php | 4 | ||||
| -rw-r--r-- | modules_v4/example.disable/module.php | 46 |
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'); + } }; |
