Repository navigation
Expand file tree
/
Copy pathVestaAdminController.php
More file actions
84 lines (71 loc) · 2.89 KB
/
Copy pathVestaAdminController.php
File metadata and controls
84 lines (71 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
namespace Vesta;
use Cissee\WebtreesExt\MoreI18N;
use Fisharebest\Webtrees\Auth;
use Fisharebest\Webtrees\Http\RequestHandlers\ControlPanel;
use Fisharebest\Webtrees\Http\RequestHandlers\ModulesAllPage;
use Fisharebest\Webtrees\Http\ViewResponseTrait;
use Fisharebest\Webtrees\Module\ModuleInterface;
use Fisharebest\Webtrees\Services\TreeService;
use Fisharebest\Webtrees\Tree;
use Psr\Http\Message\ResponseInterface;
use function route;
class VestaAdminController {
use ViewResponseTrait;
protected ModuleInterface $module;
public function __construct(ModuleInterface $module) {
$this->module = $module;
$this->layout = 'layouts/administration';
}
//adapted from ModuleController (e.g. listFooters)
public function listHooks(
$modules,
string $interface,
string $title,
string $description,
bool $uses_access,
bool $uses_sorting,
bool $specific = false): ResponseInterface {
$view = VestaUtils::vestaViewsNamespace() . '::admin/vesta_components';
//cf AbstractModuleComponentPage
$access_summary = $modules
->mapWithKeys(function (ModuleInterface $module) use ($interface): array {
$access_levels = \Vesta\VestaUtils::get(TreeService::class)->all()
->map(static function (Tree $tree) use ($interface, $module): int {
return $module->accessLevel($tree, $interface);
})
->uniqueStrict()
->values()
->map(static function (int $level): string {
return Auth::accessLevelNames()[$level];
})
->all();
return [$module->name() => $access_levels];
})
->all();
$breadcrumbs = [];
$breadcrumbs[route(ControlPanel::class)] = MoreI18N::xlate('Control panel');
$breadcrumbs[route(ModulesAllPage::class)] = MoreI18N::xlate('Modules');
if ($specific) {
$breadcrumbs[$this->module->getConfigLink()] = $this->module->title();
}
$breadcrumbs[] = $title;
//assumes the namespace has been registered!
return $this->viewResponse($view, [
'description' => $description,
'interface' => $interface,
'modules' => $modules,
'title' => $title,
'trees' => \Vesta\VestaUtils::get(TreeService::class)->all(),
'uses_access' => $uses_access,
'uses_sorting' => $uses_sorting,
'access_summary' => $access_summary,
'uses_enabled' => !$specific,
'breadcrumbs' => $breadcrumbs,
'cancelRoute' => route('module', [
'module' => $this->module->name(),
'action' => 'Admin'
]),
]);
}
}