You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.1 KiB
130 lines
4.1 KiB
1 year ago
|
<?php
|
||
|
|
||
|
/**
|
||
|
* @file
|
||
|
* Functions to support Olivera theme settings.
|
||
|
*/
|
||
|
|
||
|
use Drupal\Core\Form\FormStateInterface;
|
||
|
|
||
|
/**
|
||
|
* Implements hook_form_FORM_ID_alter() for system_theme_settings.
|
||
|
*/
|
||
|
function olivera_form_system_theme_settings_alter(&$form, FormStateInterface $form_state) {
|
||
|
$form['#validate'][] = 'olivera_theme_settings_validate';
|
||
|
$form['#attached']['library'][] = 'olivera/color-picker';
|
||
|
|
||
|
$color_config = [
|
||
|
'colors' => [
|
||
|
'base_primary_color' => 'Primary base color',
|
||
|
],
|
||
|
'schemes' => [
|
||
|
'default' => [
|
||
|
'label' => 'Blue Lagoon',
|
||
|
'colors' => [
|
||
|
'base_primary_color' => '#1b9ae4',
|
||
|
],
|
||
|
],
|
||
|
'firehouse' => [
|
||
|
'label' => 'Firehouse',
|
||
|
'colors' => [
|
||
|
'base_primary_color' => '#a30f0f',
|
||
|
],
|
||
|
],
|
||
|
'ice' => [
|
||
|
'label' => 'Ice',
|
||
|
'colors' => [
|
||
|
'base_primary_color' => '#57919e',
|
||
|
],
|
||
|
],
|
||
|
'plum' => [
|
||
|
'label' => 'Plum',
|
||
|
'colors' => [
|
||
|
'base_primary_color' => '#7a4587',
|
||
|
],
|
||
|
],
|
||
|
'slate' => [
|
||
|
'label' => 'Slate',
|
||
|
'colors' => [
|
||
|
'base_primary_color' => '#47625b',
|
||
|
],
|
||
|
],
|
||
|
],
|
||
|
];
|
||
|
|
||
|
$form['#attached']['drupalSettings']['olivera']['colorSchemes'] = $color_config['schemes'];
|
||
|
|
||
|
$form['olivera_settings']['olivera_utilities'] = [
|
||
|
'#type' => 'fieldset',
|
||
|
'#title' => t('Olivera Utilities'),
|
||
|
];
|
||
|
$form['olivera_settings']['olivera_utilities']['mobile_menu_all_widths'] = [
|
||
|
'#type' => 'checkbox',
|
||
|
'#title' => t('Enable mobile menu at all widths'),
|
||
|
'#default_value' => theme_get_setting('mobile_menu_all_widths'),
|
||
|
'#description' => t('Enables the mobile menu toggle at all widths.'),
|
||
|
];
|
||
|
$form['olivera_settings']['olivera_utilities']['site_branding_bg_color'] = [
|
||
|
'#type' => 'select',
|
||
|
'#title' => t('Header site branding background color'),
|
||
|
'#options' => [
|
||
|
'default' => t('Primary Branding Color'),
|
||
|
'gray' => t('Gray'),
|
||
|
'white' => t('White'),
|
||
|
],
|
||
|
'#default_value' => theme_get_setting('site_branding_bg_color'),
|
||
|
];
|
||
|
$form['olivera_settings']['olivera_utilities']['olivera_color_scheme'] = [
|
||
|
'#type' => 'fieldset',
|
||
|
'#title' => t('Olivera Color Scheme Settings'),
|
||
|
];
|
||
|
$form['olivera_settings']['olivera_utilities']['olivera_color_scheme']['description'] = [
|
||
|
'#type' => 'html_tag',
|
||
|
'#tag' => 'p',
|
||
|
'#value' => t('These settings adjust the look and feel of the Olivera theme. Changing the color below will change the base hue, saturation, and lightness values the Olivera theme uses to determine its internal colors.'),
|
||
|
];
|
||
|
$form['olivera_settings']['olivera_utilities']['olivera_color_scheme']['color_scheme'] = [
|
||
|
'#type' => 'select',
|
||
|
'#title' => t('Olivera Color Scheme'),
|
||
|
'#empty_option' => t('Custom'),
|
||
|
'#empty_value' => '',
|
||
|
'#options' => [
|
||
|
'default' => t('Blue Lagoon (Default)'),
|
||
|
'firehouse' => t('Firehouse'),
|
||
|
'ice' => t('Ice'),
|
||
|
'plum' => t('Plum'),
|
||
|
'slate' => t('Slate'),
|
||
|
],
|
||
|
'#input' => FALSE,
|
||
|
'#wrapper_attributes' => [
|
||
|
'style' => 'display:none;',
|
||
|
],
|
||
|
];
|
||
|
|
||
|
foreach ($color_config['colors'] as $key => $title) {
|
||
|
$form['olivera_settings']['olivera_utilities']['olivera_color_scheme'][$key] = [
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 7,
|
||
|
'#size' => 10,
|
||
|
'#title' => t($title),
|
||
|
'#description' => t('Enter color in full hexadecimal format (#abc123).') . '<br/>' . t('Derivatives will be formed from this color.'),
|
||
|
'#default_value' => theme_get_setting($key),
|
||
|
'#attributes' => [
|
||
|
'pattern' => '^#[a-fA-F0-9]{6}',
|
||
|
],
|
||
|
'#wrapper_attributes' => [
|
||
|
'data-drupal-selector' => 'olivera-color-picker',
|
||
|
],
|
||
|
];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Validation handler for the Olivera system_theme_settings form.
|
||
|
*/
|
||
|
function olivera_theme_settings_validate($form, FormStateInterface $form_state) {
|
||
|
if (!preg_match('/^#[a-fA-F0-9]{6}$/', $form_state->getValue('base_primary_color'))) {
|
||
|
$form_state->setErrorByName('base_primary_color', t('Colors must be 7-character string specifying a color hexadecimal format.'));
|
||
|
}
|
||
|
}
|