<?php
declare(strict_types=1);
namespace MeinWeimar\Elementor;
use MeinWeimar\Settings;
abstract class BrandValueTag extends \Elementor\Core\DynamicTags\Tag
{
public function get_group(): string
{
return 'meinweimar';
}
protected function brand_value(string $key): string
{
return sanitize_text_field((string) (Settings::public_config()['brand'][$key] ?? ''));
}
}
abstract class BrandImageTag extends \Elementor\Core\DynamicTags\Tag
{
public function get_group(): string
{
return 'meinweimar';
}
abstract protected function variant(): string;
public function get_categories(): array
{
return [\Elementor\Modules\DynamicTags\Module::IMAGE_CATEGORY];
}
/**
* Elementor image controls consume the same URL/alt data as the public
* brand config. No media ID or URL is duplicated in a template.
*
* @return array{url:string,id:int,alt:string,srcset:string}
*/
public function get_value(array $options = [])
{
$brand = Settings::public_config()['brand'] ?? [];
$image = is_array($brand['logo_' . $this->variant()] ?? null)
? $brand['logo_' . $this->variant()]
: [];
return [
'url' => esc_url_raw((string) ($image['url'] ?? '')),
'id' => 0,
'alt' => sanitize_text_field((string) ($image['alt'] ?? $brand['wordmark'] ?? '')),
'srcset' => sanitize_text_field((string) ($image['srcset'] ?? '')),
];
}
}
final class BrandWordmarkTag extends BrandValueTag
{
public function get_name(): string { return 'meinweimar_brand_wordmark'; }
public function get_title(): string { return __('MeinWeimar Wordmark', 'meinweimar-core'); }
public function get_categories(): array { return [\Elementor\Modules\DynamicTags\Module::TEXT_CATEGORY]; }
public function render(): void
{
echo esc_html($this->brand_value('wordmark'));
}
}
final class BrandPrimaryColorTag extends BrandValueTag
{
public function get_name(): string { return 'meinweimar_brand_primary_color'; }
public function get_title(): string { return __('MeinWeimar Primärfarbe', 'meinweimar-core'); }
public function get_categories(): array { return [\Elementor\Modules\DynamicTags\Module::COLOR_CATEGORY]; }
public function render(): void
{
echo esc_attr($this->brand_value('primary_color'));
}
}
final class BrandSecondaryColorTag extends BrandValueTag
{
public function get_name(): string { return 'meinweimar_brand_secondary_color'; }
public function get_title(): string { return __('MeinWeimar Sekundärfarbe', 'meinweimar-core'); }
public function get_categories(): array { return [\Elementor\Modules\DynamicTags\Module::COLOR_CATEGORY]; }
public function render(): void
{
echo esc_attr($this->brand_value('secondary_color'));
}
}
final class BrandLogoLightTag extends BrandImageTag
{
protected function variant(): string { return 'light'; }
public function get_name(): string { return 'meinweimar_brand_logo_light'; }
public function get_title(): string { return __('MeinWeimar Logo für helle Hintergründe', 'meinweimar-core'); }
}
final class BrandLogoDarkTag extends BrandImageTag
{
protected function variant(): string { return 'dark'; }
public function get_name(): string { return 'meinweimar_brand_logo_dark'; }
public function get_title(): string { return __('MeinWeimar Logo für dunkle Hintergründe', 'meinweimar-core'); }
}
