...
 
Commits (2)
......@@ -157,21 +157,21 @@ class Manager
// TODO: Validate!
$settings
->setDomain($values['domain']);
->setDomain(trim($values['domain']));
}
if (isset($values['title'])) {
// TODO: Validate!
$settings
->setTitle($values['title']);
->setTitle(trim($values['title']));
}
if (isset($values['headline'])) {
// TODO: Validate!
$settings
->setHeadline($values['headline']);
->setHeadline(trim($values['headline']));
}
if (isset($values['text_color'])) {
......@@ -195,18 +195,25 @@ class Manager
->setPlainBackgroundColor($values['plain_background_color']);
}
if (isset($values['tile_ratio'])) {
// TODO: Validate!
$settings
->setTileRatio($values['tile_ratio']);
}
if (isset($values['logo_guid'])) {
// TODO: Validate!
$settings
->setLogoGuid($values['logo_guid']);
->setLogoGuid(trim($values['logo_guid']));
}
if (isset($values['footer_text'])) {
// TODO: Validate!
$settings
->setFooterText($values['footer_text']);
->setFooterText(trim($values['footer_text']));
}
if (isset($values['footer_links']) && is_array($values['footer_links'])) {
......
......@@ -93,6 +93,7 @@ class Repository
->setPrimaryColor($data['primary_color'] ?? '')
->setPlainBackgroundColor($data['plain_background_color'] ?? '')
->setLogoGuid($data['logo_guid'] ?? '')
->setTileRatio($data['tile_ratio'] ?? '')
->setFooterText($data['footer_text'] ?? '')
->setFooterLinks($data['footer_links'] ?? [])
->setTagList($data['tag_list'] ?? [])
......@@ -137,6 +138,7 @@ class Repository
'text_color' => $settings->getTextColor(),
'primary_color' => $settings->getPrimaryColor(),
'plain_background_color' => $settings->getPlainBackgroundColor(),
'tile_ratio' => $settings->getTileRatio(),
'logo_guid' => $settings->getLogoGuid(),
'footer_text' => $settings->getFooterText(),
'footer_links' => $settings->getFooterLinks(),
......
......@@ -26,6 +26,8 @@ use Minds\Traits\MagicAttributes;
* @method Settings setPrimaryColor(string $primaryColor)
* @method string getPlainBackgroundColor()
* @method Settings setPlainBackgroundColor(string $plainBackgroundColor)
* @method string getTileRatio()
* @method Settings setTileRatio(string $tileRatio)
* @method int|string getLogoGuid()
* @method Settings setLogoGuid(int|string $logoGuid)
* @method string getFooterText()
......@@ -80,6 +82,9 @@ class Settings implements JsonSerializable
/** @var string */
protected $backgroundImage;
/** @var string */
protected $tileRatio;
/** @var string */
protected $logoImage;
......@@ -107,14 +112,18 @@ class Settings implements JsonSerializable
$primaryColor = $this->primaryColor ?: static::DEFAULT_PRIMARY_COLOR;
$plainBackgroundColor = $this->plainBackgroundColor ?: static::DEFAULT_PLAIN_BACKGROUND_COLOR;
$oneLineHeadline = preg_replace("/\\r?\\n+/", ' ', $this->headline);
return [
'user_guid' => (string) $this->userGuid,
'domain' => $this->domain,
'title' => $this->title,
'headline' => $this->headline,
'one_line_headline' => $oneLineHeadline,
'text_color' => $textColor,
'primary_color' => $primaryColor,
'plain_background_color' => $plainBackgroundColor,
'tile_ratio' => $this->tileRatio,
'footer_text' => $this->footerText,
'footer_links' => $this->footerLinks,
'tag_list' => $this->tagList,
......@@ -127,20 +136,36 @@ class Settings implements JsonSerializable
];
}
/**
* @return array
*/
public function buildStyles()
{
$textColor = $this->textColor ?: static::DEFAULT_TEXT_COLOR;
$primaryColor = $this->primaryColor ?: static::DEFAULT_PRIMARY_COLOR;
$plainBackgroundColor = $this->plainBackgroundColor ?: static::DEFAULT_PLAIN_BACKGROUND_COLOR;
$tileRatioPercentage = $this->calcTileRatioPercentage();
return [
'text_color' => $textColor,
'primary_color' => $primaryColor,
'plain_background_color' => $plainBackgroundColor,
'transparent_background_color' => sprintf("%sa0", $plainBackgroundColor),
'tile_ratio' => sprintf("%s%%", $tileRatioPercentage),
];
}
/**
* @return float
*/
public function calcTileRatioPercentage()
{
$ratioFragments = explode(':', $this->tileRatio ?: '16:9');
$percentage = $ratioFragments[1] / $ratioFragments[0] * 100;
return round($percentage, 3);
}
/**
* Specify data which should be serialized to JSON
* @link https://php.net/manual/en/jsonserializable.jsonserialize.php
......