. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Module; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Menu; /** * The clouds theme. */ class CloudsTheme extends AbstractModule implements ModuleThemeInterface { use ModuleThemeTrait { primaryMenu as basePrimaryMenu; } /** * Where are our CSS, JS and other assets? */ protected const THEME_DIR = 'clouds'; public const ASSET_DIR = 'themes/clouds/css-2.0.0/'; protected const STYLESHEET = 'themes/clouds/css-2.0.0/style.css'; protected const PERSON_BOX_CLASSES = [ 'M' => 'person_box', 'F' => 'person_boxF', 'U' => 'person_boxNN', ]; /** * How should this module be labelled on tabs, menus, etc.? * * @return string */ public function title(): string { /* I18N: Name of a theme. */ return I18N::translate('clouds'); } /** * Misecellaneous dimensions, fonts, styles, etc. * * @param string $parameter_name * * @return string|int|float */ public function parameter($parameter_name) { $parameters = [ 'chart-background-f' => 'e9daf1', 'chart-background-m' => 'b1cff0', 'chart-background-u' => 'eeeeee', 'chart-box-x' => 260, 'chart-box-y' => 85, 'chart-font-color' => '000000', 'chart-spacing-x' => 4, 'chart-spacing-y' => 10, 'compact-chart-box-x' => 240, 'compact-chart-box-y' => 50, 'distribution-chart-high-values' => '95b8e0', 'distribution-chart-low-values' => 'c8e7ff', 'distribution-chart-no-values' => 'ffffff', 'distribution-chart-x' => 440, 'distribution-chart-y' => 220, 'line-width' => 1.5, 'shadow-blur' => 0, 'shadow-color' => '', 'shadow-offset-x' => 0, 'shadow-offset-y' => 0, 'stats-small-chart-x' => 440, 'stats-small-chart-y' => 125, 'stats-large-chart-x' => 900, 'image-dline' => static::ASSET_DIR . 'images/dline.png', 'image-dline2' => static::ASSET_DIR . 'images/dline2.png', 'image-hline' => static::ASSET_DIR . 'images/hline.png', 'image-spacer' => static::ASSET_DIR . 'images/spacer.png', 'image-vline' => static::ASSET_DIR . 'images/vline.png', 'image-minus' => static::ASSET_DIR . 'images/minus.png', 'image-plus' => static::ASSET_DIR . 'images/plus.png', ]; return $parameters[$parameter_name]; } /** * Generate a list of items for the main menu. * * @return Menu[] */ public function primaryMenu(): array { $primary_menu = $this->basePrimaryMenu(); foreach ($primary_menu as $menu) { $submenus = $menu->getSubmenus(); if (!empty($submenus)) { // Insert a dummy menu / label into the submenu array_unshift($submenus, new Menu($menu->getLabel(), '#', '', ['onclick' => 'return false;'])); $menu->setSubmenus($submenus); } } return $primary_menu; } /** * A list of CSS files to include for this page. * * @return string[] */ public function stylesheets(): array { return [ 'themes/_common/css-2.0.0/style.css', 'themes/clouds/css-2.0.0/style.css', ]; } }