dxpr_theme-5.0.1/features/sooper-colors/colors-theme-settings.inc

features/sooper-colors/colors-theme-settings.inc
<?php

/**
 * @file
 * Theme color settings.
 */

/**
 * Add color options to the theme settings form.
 *
 * @param array $form
 *   Form array.
 * @param string $theme
 *   Theme machine name.
 */
function colors_theme_settings(array &$form, $theme) {
  $schemes = _dxpr_theme_get_color_schemes($theme);
  $colors = _dxpr_theme_get_color_names($theme);

  $scheme_options = array_filter(array_combine(array_keys($schemes), array_column($schemes, 'title')));
  $scheme_options = array_merge($scheme_options, [
    'custom' => t('Custom'),
    'current' => t('Revert to saved'),
  ]);

  $palette = unserialize(theme_get_setting('color_palette') ?? '', ['allowed_classes' => FALSE]);
  $palette = $palette ?: ($schemes['default']['colors'] ?? []);

  // Attach palette and schemes.
  $form['#attached']['drupalSettings']['dxpr_themeSettings']['colors'] = [
    'palette' => $palette,
    'schemes' => $schemes,
  ];

  // Build form.
  $form['dxpr_theme_settings']['colors'] = [
    '#title' => t('Colors'),
    '#type' => 'details',
    '#group' => 'dxpr_theme_settings',
    '#attributes' => [
      'class' => ['color-form'],
    ],
  ];

  $form['dxpr_theme_settings']['colors']['wrapper'] = [
    '#type' => 'html_tag',
    '#tag' => 'div',
    '#attributes' => [
      'class' => ['color-palette-wrapper'],
    ],
  ];

  $form['dxpr_theme_settings']['colors']['wrapper']['color_scheme'] = [
    '#type' => 'select',
    '#title' => t('Color set'),
    '#default_value' => theme_get_setting('color_scheme') ?? 'default',
    '#options' => $scheme_options,
  ];

  $form['dxpr_theme_settings']['colors']['wrapper']['color_palette'] = [
    '#type' => 'html_tag',
    '#tag' => 'div',
    '#attributes' => [
      'id' => ['color-palette'],
      'class' => ['color-palette'],
    ],
  ];

  foreach ($colors as $key => $title) {
    $form['dxpr_theme_settings']['colors']['wrapper']['color_palette']['color_palette_' . $key] = [
      '#type' => 'textfield',
      '#title' => t('@name', ['@name' => $title]),
      '#default_value' => $palette[$key] ?? '',
      '#size' => 7,
      '#maxlength' => 7,
      '#attributes' => ['data-original' => $palette[$key] ?? ''],
    ];
  }

  $form['dxpr_theme_settings']['colors']['color_picker'] = [
    '#type' => 'html_tag',
    '#tag' => 'div',
    '#attributes' => [
      'id' => ['color-picker-placeholder'],
      'class' => ['color-placeholder', 'sticky-top'],
    ],
  ];

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc