diff options
| author | Greg Roach <fisharebest@webtrees.net> | 2019-01-30 20:10:25 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@webtrees.net> | 2019-01-30 20:11:03 +0000 |
| commit | dedcf571c9427b58a4edf21c94050d1e5e77604e (patch) | |
| tree | 39ff05ea82e3de7166e637e1e5b46b3302582e88 | |
| parent | e5331ed896843a6cf8be7ec691a30ab8c02810ef (diff) | |
| download | webtrees-dedcf571c9427b58a4edf21c94050d1e5e77604e.tar.gz webtrees-dedcf571c9427b58a4edf21c94050d1e5e77604e.tar.bz2 webtrees-dedcf571c9427b58a4edf21c94050d1e5e77604e.zip | |
Convert Theme class to modules
| -rw-r--r-- | app/Http/Controllers/AccountController.php | 33 | ||||
| -rw-r--r-- | app/Http/Controllers/AdminSiteController.php | 29 | ||||
| -rw-r--r-- | app/Http/Controllers/AdminTreesController.php | 30 | ||||
| -rw-r--r-- | app/Http/Controllers/AdminUsersController.php | 26 | ||||
| -rw-r--r-- | app/Services/ModuleService.php | 12 |
5 files changed, 115 insertions, 15 deletions
diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 516d063e2b..9c6915c1c5 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -23,9 +23,12 @@ use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\Functions\FunctionsEdit; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; +use Fisharebest\Webtrees\Module\ModuleThemeInterface; +use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Session; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; +use Illuminate\Support\Collection; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -36,8 +39,20 @@ use Symfony\Component\HttpFoundation\Response; class AccountController extends AbstractBaseController { /** - * Help for dates. + * @var ModuleService + */ + private $module_service; + + /** + * AdminUsersController constructor. * + * @param ModuleService $module_service + */ + public function __construct(ModuleService $module_service) { + $this->module_service = $module_service; + } + + /** * @param Tree $tree * @param User $user * @@ -50,7 +65,7 @@ class AccountController extends AbstractBaseController $default_individual = Individual::getInstance($tree->getUserPreference(Auth::user(), 'rootid'), $tree); $installed_languages = FunctionsEdit::optionsInstalledLanguages(); $show_delete_option = !$user->getPreference('canadmin'); - $themes = $this->themeNames(); + $themes = $this->themeOptions(); $timezone_ids = DateTimeZone::listIdentifiers(); $timezones = array_combine($timezone_ids, $timezone_ids); $title = I18N::translate('My account'); @@ -149,15 +164,13 @@ class AccountController extends AbstractBaseController } /** - * @return array + * @return Collection|string[] */ - private function themeNames(): array + private function themeOptions(): Collection { - $default_option = [ - /* I18N: default option in list of themes */ - '' => I18N::translate('<default theme>'), - ]; - - return $default_option + Theme::themeNames(); + return $this->module_service + ->findByInterface(ModuleThemeInterface::class) + ->map($this->module_service->titleMapper()) + ->prepend(I18N::translate('<default theme>'), ''); } } diff --git a/app/Http/Controllers/AdminSiteController.php b/app/Http/Controllers/AdminSiteController.php index d9e221c095..ca56997cfc 100644 --- a/app/Http/Controllers/AdminSiteController.php +++ b/app/Http/Controllers/AdminSiteController.php @@ -22,12 +22,15 @@ use Exception; use Fisharebest\Webtrees\File; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; +use Fisharebest\Webtrees\Module\ModuleThemeInterface; use Fisharebest\Webtrees\Services\DatatablesService; +use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\Builder; +use Illuminate\Support\Collection; use League\Flysystem\Filesystem; use stdClass; use Symfony\Component\HttpFoundation\JsonResponse; @@ -44,6 +47,20 @@ class AdminSiteController extends AbstractBaseController protected $layout = 'layouts/administration'; /** + * @var ModuleService + */ + private $module_service; + + /** + * AdminUsersController constructor. + * + * @param ModuleService $module_service + */ + public function __construct(ModuleService $module_service) { + $this->module_service = $module_service; + } + + /** * Show old user files in the data folder. * * @param Filesystem $filesystem @@ -376,7 +393,7 @@ class AdminSiteController extends AbstractBaseController */ public function preferencesForm(): Response { - $all_themes = Theme::themeNames(); + $all_themes = $this->themeOptions(); $title = I18N::translate('Website preferences'); @@ -519,4 +536,14 @@ class AdminSiteController extends AbstractBaseController 4 => I18N::translate('Choose user defined welcome text typed below'), ]; } + + /** + * @return Collection|string[] + */ + private function themeOptions(): Collection + { + return $this->module_service + ->findByInterface(ModuleThemeInterface::class) + ->map($this->module_service->titleMapper()); + } } diff --git a/app/Http/Controllers/AdminTreesController.php b/app/Http/Controllers/AdminTreesController.php index 891224eccb..c68c02d3ca 100644 --- a/app/Http/Controllers/AdminTreesController.php +++ b/app/Http/Controllers/AdminTreesController.php @@ -32,6 +32,8 @@ use Fisharebest\Webtrees\Html; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Media; +use Fisharebest\Webtrees\Module\ModuleThemeInterface; +use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Services\TimeoutService; use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\Source; @@ -41,6 +43,7 @@ use Fisharebest\Webtrees\User; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\JoinClause; +use Illuminate\Support\Collection; use League\Flysystem\Filesystem; use League\Flysystem\ZipArchive\ZipArchiveAdapter; use stdClass; @@ -65,6 +68,20 @@ class AdminTreesController extends AbstractBaseController protected $layout = 'layouts/administration'; /** + * @var ModuleService + */ + private $module_service; + + /** + * AdminUsersController constructor. + * + * @param ModuleService $module_service + */ + public function __construct(ModuleService $module_service) { + $this->module_service = $module_service; + } + + /** * @param Tree $tree * * @return Response @@ -966,7 +983,7 @@ class AdminTreesController extends AbstractBaseController 2 => I18N::translate('records'), ]; - $theme_options = ['' => I18N::translate('<default theme>')] + Theme::themeNames(); + $theme_options = $this->themeOptions(); $privacy_options = [ Auth::PRIV_USER => I18N::translate('Show to members'), @@ -2114,4 +2131,15 @@ class AdminTreesController extends AbstractBaseController return $tree_name . $tree_number; } + + /** + * @return Collection|string[] + */ + private function themeOptions(): Collection + { + return $this->module_service + ->findByInterface(ModuleThemeInterface::class) + ->map($this->module_service->titleMapper()) + ->prepend(I18N::translate('<default theme>'), ''); + } } diff --git a/app/Http/Controllers/AdminUsersController.php b/app/Http/Controllers/AdminUsersController.php index d965db2484..00434123be 100644 --- a/app/Http/Controllers/AdminUsersController.php +++ b/app/Http/Controllers/AdminUsersController.php @@ -24,12 +24,15 @@ use Fisharebest\Webtrees\Functions\FunctionsEdit; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Log; use Fisharebest\Webtrees\Mail; +use Fisharebest\Webtrees\Module\ModuleThemeInterface; use Fisharebest\Webtrees\Services\DatatablesService; +use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\JoinClause; +use Illuminate\Support\Collection; use stdClass; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; @@ -49,6 +52,20 @@ class AdminUsersController extends AbstractBaseController protected $layout = 'layouts/administration'; /** + * @var ModuleService + */ + private $module_service; + + /** + * AdminUsersController constructor. + * + * @param ModuleService $module_service + */ + public function __construct(ModuleService $module_service) { + $this->module_service = $module_service; + } + + /** * @param Request $request * * @return Response @@ -464,10 +481,13 @@ class AdminUsersController extends AbstractBaseController } /** - * @return string[] + * @return Collection|string[] */ - private function themeOptions(): array + private function themeOptions(): Collection { - return ['' => I18N::translate('<default theme>')] + Theme::themeNames(); + return $this->module_service + ->findByInterface(ModuleThemeInterface::class) + ->map($this->module_service->titleMapper()) + ->prepend(I18N::translate('<default theme>'), ''); } } diff --git a/app/Services/ModuleService.php b/app/Services/ModuleService.php index 057103c151..b0e99ddb0f 100644 --- a/app/Services/ModuleService.php +++ b/app/Services/ModuleService.php @@ -419,6 +419,18 @@ class ModuleService } /** + * A function to convert modules into their titles - to create option lists, etc. + * + * @return Closure + */ + public function titleMapper(): Closure + { + return function (ModuleInterface $module): string { + return $module->title(); + }; + } + + /** * Modules which (a) provide a specific function and (b) we have permission to see. * * @param string $component |
