2023-01-23 11:03:31 +01:00

237 lines
5.8 KiB
PHP

<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugin;
use Piwik\Piwik;
class ThemeStyles
{
// to maintain BC w/ old names that were defined in LESS
private static $propertyNamesToLessVariableNames = [
'fontFamilyBase' => 'theme-fontFamily-base',
'colorBrand' => 'theme-color-brand',
'colorBrandContrast' => 'theme-color-brand-contrast',
'colorText' => 'theme-color-text',
'colorTextLight' => 'theme-color-text-light',
'colorTextLighter' => 'theme-color-text-lighter',
'colorTextContrast' => 'theme-color-text-contrast',
'colorLink' => 'theme-color-link',
'colorBaseSeries' => 'theme-color-base-series',
'colorHeadlineAlternative' => 'theme-color-headline-alternative',
'colorHeaderBackground' => 'theme-color-header-background',
'colorHeaderText' => 'theme-color-header-text',
'colorMenuContrastText' => 'theme-color-menu-contrast-text',
'colorMenuContrastTextSelected' => 'theme-color-menu-contrast-textSelected',
'colorMenuContrastTextActive' => 'theme-color-menu-contrast-textActive',
'colorMenuContrastBackground' => 'theme-color-menu-contrast-background',
'colorWidgetExportedBackgroundBase' => 'theme-color-widget-exported-background-base',
'colorWidgetTitleText' => 'theme-color-widget-title-text',
'colorWidgetTitleBackground' => 'theme-color-widget-title-background',
'colorBackgroundBase' => 'theme-color-background-base',
'colorBackgroundTinyContrast' => 'theme-color-background-tinyContrast',
'colorBackgroundLowContrast' => 'theme-color-background-lowContrast',
'colorBackgroundContrast' => 'theme-color-background-contrast',
'colorBackgroundHighContrast' => 'theme-color-background-highContrast',
'colorBorder' => 'theme-color-border',
'colorCode' => 'theme-color-code',
'colorCodeBackground' => 'theme-color-code-background',
'colorWidgetBackground' => 'theme-color-widget-background',
'colorWidgetBorder' => 'theme-color-widget-border',
];
/**
* @var string
*/
public $fontFamilyBase = '-apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, Oxygen-Sans, Cantarell, \'Helvetica Neue\', sans-serif';
/**
* @var string
*/
public $colorBrand = '#43a047';
/**
* @var string
*/
public $colorBrandContrast = '#fff';
/**
* @var string
*/
public $colorText = '#212121';
/**
* @var string
*/
public $colorTextLight = '#444';
/**
* @var string
*/
public $colorTextLighter = '#666666';
/**
* @var string
*/
public $colorTextContrast = '#37474f';
/**
* @var string
*/
public $colorLink = '#1976D2';
/**
* @var string
*/
public $colorBaseSeries = '#ee3024';
/**
* @var string
*/
public $colorHeadlineAlternative = '#4E4E4E';
/**
* @var string
*/
public $colorHeaderBackground = '#3450A3';
/**
* @var string
*/
public $colorHeaderText = '#fff';
/**
* @var string
*/
public $colorMenuContrastText;
/**
* @var string
*/
public $colorMenuContrastTextSelected;
/**
* @var string
*/
public $colorMenuContrastTextActive = '#3450A3';
/**
* @var string
*/
public $colorMenuContrastBackground;
/**
* @var string
*/
public $colorWidgetExportedBackgroundBase;
/**
* @var string
*/
public $colorWidgetTitleText;
/**
* @var string
*/
public $colorWidgetTitleBackground;
/**
* @var string
*/
public $colorBackgroundBase = '#eff0f1';
/**
* @var string
*/
public $colorBackgroundTinyContrast = '#f2f2f2';
/**
* @var string
*/
public $colorBackgroundLowContrast = '#d9d9d9';
/**
* @var string
*/
public $colorBackgroundContrast = '#fff';
/**
* @var string
*/
public $colorBackgroundHighContrast = '#202020';
/**
* @var string
*/
public $colorBorder = '#cccccc';
/**
* @var string
*/
public $colorCode = '#f3f3f3';
/**
* @var string
*/
public $colorCodeBackground = '#4d4d4d';
/**
* @var string
*/
public $colorWidgetBackground;
/**
* @var string
*/
public $colorWidgetBorder;
public function __construct()
{
$this->colorMenuContrastText = $this->colorText;
$this->colorMenuContrastTextSelected = $this->colorMenuContrastText;
$this->colorMenuContrastBackground = $this->colorBackgroundContrast;
$this->colorWidgetExportedBackgroundBase = $this->colorBackgroundContrast;
$this->colorWidgetTitleText = $this->colorText;
$this->colorWidgetTitleBackground = $this->colorBackgroundContrast;
$this->colorWidgetBackground = $this->colorBackgroundContrast;
$this->colorWidgetBorder = $this->colorBackgroundTinyContrast;
}
/**
* @return ThemeStyles
*/
public static function get()
{
$result = new self();
/**
* @ignore
*/
Piwik::postEvent('Theme.configureThemeVariables', [$result]);
return $result;
}
public function toLessCode()
{
$result = '';
foreach (get_object_vars($this) as $name => $value) {
$varName = isset(self::$propertyNamesToLessVariableNames[$name]) ? self::$propertyNamesToLessVariableNames[$name] : $this->getGenericThemeVarName($name);
$result .= "@$varName = $value;\n";
}
return $result;
}
private function getGenericThemeVarName($propertyName)
{
return 'theme-' . $propertyName;
}
}