xref: /webtrees/app/Module/ModuleThemeInterface.php (revision e364afe4ae4e316fc4ebd53eccbaff2d29e419a5)
1a25f0a04SGreg Roach<?php
2a25f0a04SGreg Roach/**
3a25f0a04SGreg Roach * webtrees: online genealogy
48fcd0d32SGreg Roach * Copyright (C) 2019 webtrees development team
5a25f0a04SGreg Roach * This program is free software: you can redistribute it and/or modify
6a25f0a04SGreg Roach * it under the terms of the GNU General Public License as published by
7a25f0a04SGreg Roach * the Free Software Foundation, either version 3 of the License, or
8a25f0a04SGreg Roach * (at your option) any later version.
9a25f0a04SGreg Roach * This program is distributed in the hope that it will be useful,
10a25f0a04SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of
11a25f0a04SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12a25f0a04SGreg Roach * GNU General Public License for more details.
13a25f0a04SGreg Roach * You should have received a copy of the GNU General Public License
14a25f0a04SGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>.
15a25f0a04SGreg Roach */
16e7f56f2aSGreg Roachdeclare(strict_types=1);
17e7f56f2aSGreg Roach
1876692c8bSGreg Roachnamespace Fisharebest\Webtrees\Module;
19a25f0a04SGreg Roach
20ade503dfSGreg Roachuse Fisharebest\Webtrees\Fact;
21ade503dfSGreg Roachuse Fisharebest\Webtrees\Individual;
22ade503dfSGreg Roachuse Fisharebest\Webtrees\Menu;
230c8c69d4SGreg Roachuse Fisharebest\Webtrees\Tree;
24ade503dfSGreg Roach
25a25f0a04SGreg Roach/**
26ade503dfSGreg Roach * Interface ModuleThemelInterface - Classes and libraries for module system
27a25f0a04SGreg Roach */
2837eb8894SGreg Roachinterface ModuleThemeInterface extends ModuleInterface
29c1010edaSGreg Roach{
30ade503dfSGreg Roach    /**
31ade503dfSGreg Roach     * Display an icon for this fact.
32ade503dfSGreg Roach     *
33ade503dfSGreg Roach     * @param Fact $fact
34ade503dfSGreg Roach     *
35ade503dfSGreg Roach     * @return string
36ade503dfSGreg Roach     */
37ade503dfSGreg Roach    public function icon(Fact $fact): string;
38ade503dfSGreg Roach
39ade503dfSGreg Roach    /**
40ade503dfSGreg Roach     * Display an individual in a box - for charts, etc.
41ade503dfSGreg Roach     *
42ade503dfSGreg Roach     * @param Individual $individual
43ade503dfSGreg Roach     *
44ade503dfSGreg Roach     * @return string
45ade503dfSGreg Roach     */
46ade503dfSGreg Roach    public function individualBox(Individual $individual): string;
47ade503dfSGreg Roach
48ade503dfSGreg Roach    /**
49ade503dfSGreg Roach     * Display an empty box - for a missing individual in a chart.
50ade503dfSGreg Roach     *
51ade503dfSGreg Roach     * @return string
52ade503dfSGreg Roach     */
53ade503dfSGreg Roach    public function individualBoxEmpty(): string;
54ade503dfSGreg Roach
55ade503dfSGreg Roach    /**
56ade503dfSGreg Roach     * Display an individual in a box - for charts, etc.
57ade503dfSGreg Roach     *
58ade503dfSGreg Roach     * @param Individual $individual
59ade503dfSGreg Roach     *
60ade503dfSGreg Roach     * @return string
61ade503dfSGreg Roach     */
62ade503dfSGreg Roach    public function individualBoxLarge(Individual $individual): string;
63ade503dfSGreg Roach
64ade503dfSGreg Roach    /**
65ade503dfSGreg Roach     * Display an individual in a box - for charts, etc.
66ade503dfSGreg Roach     *
67ade503dfSGreg Roach     * @param Individual $individual
68ade503dfSGreg Roach     *
69ade503dfSGreg Roach     * @return string
70ade503dfSGreg Roach     */
71ade503dfSGreg Roach    public function individualBoxSmall(Individual $individual): string;
72ade503dfSGreg Roach
73ade503dfSGreg Roach    /**
74ade503dfSGreg Roach     * Display an individual in a box - for charts, etc.
75ade503dfSGreg Roach     *
76ade503dfSGreg Roach     * @return string
77ade503dfSGreg Roach     */
78ade503dfSGreg Roach    public function individualBoxSmallEmpty(): string;
79ade503dfSGreg Roach
80ade503dfSGreg Roach    /**
81ade503dfSGreg Roach     * Links, to show in chart boxes;
82ade503dfSGreg Roach     *
83ade503dfSGreg Roach     * @param Individual $individual
84ade503dfSGreg Roach     *
85ade503dfSGreg Roach     * @return Menu[]
86ade503dfSGreg Roach     */
87ade503dfSGreg Roach    public function individualBoxMenu(Individual $individual): array;
88ade503dfSGreg Roach
89ade503dfSGreg Roach    /**
90ade503dfSGreg Roach     * Themes menu.
91ade503dfSGreg Roach     *
92ade503dfSGreg Roach     * @return Menu|null
93ade503dfSGreg Roach     */
94*e364afe4SGreg Roach    public function menuThemes(): ?Menu;
95ade503dfSGreg Roach
96ade503dfSGreg Roach    /**
97ade503dfSGreg Roach     * Misecellaneous dimensions, fonts, styles, etc.
98ade503dfSGreg Roach     *
99ade503dfSGreg Roach     * @param string $parameter_name
100ade503dfSGreg Roach     *
101ade503dfSGreg Roach     * @return string|int|float
102ade503dfSGreg Roach     */
103ade503dfSGreg Roach    public function parameter($parameter_name);
104ade503dfSGreg Roach
105ade503dfSGreg Roach    /**
106ade503dfSGreg Roach     * Generate a list of items for the main menu.
107ade503dfSGreg Roach     *
1080c8c69d4SGreg Roach     * @param Tree|null $tree
1090c8c69d4SGreg Roach     *
110ade503dfSGreg Roach     * @return Menu[]
111ade503dfSGreg Roach     */
1120c8c69d4SGreg Roach    public function genealogyMenu(?Tree $tree): array;
113ade503dfSGreg Roach
114ade503dfSGreg Roach    /**
115ade503dfSGreg Roach     * Generate a list of items for the user menu.
116ade503dfSGreg Roach     *
1170c8c69d4SGreg Roach     * @param Tree|null $tree
1180c8c69d4SGreg Roach     *
119ade503dfSGreg Roach     * @return Menu[]
120ade503dfSGreg Roach     */
1210c8c69d4SGreg Roach    public function userMenu(?Tree $tree): array;
122ade503dfSGreg Roach
123ade503dfSGreg Roach    /**
124ade503dfSGreg Roach     * A list of CSS files to include for this page.
125ade503dfSGreg Roach     *
126ade503dfSGreg Roach     * @return string[]
127ade503dfSGreg Roach     */
128ade503dfSGreg Roach    public function stylesheets(): array;
129a25f0a04SGreg Roach}
130