digital_signage_framework-2.3.x-dev/src/Form/Fonts.php

src/Form/Fonts.php
<?php

namespace Drupal\digital_signage_framework\Form;

use Drupal\Component\Serialization\Yaml;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Link;

/**
 * Configure Digital Signage fonts for this site.
 */
class Fonts extends ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId(): string {
    return 'digital_signage_framework_settings_fonts';
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames(): array {
    return ['digital_signage_framework.settings'];
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state): array {
    $fonts = Yaml::decode($this->config('digital_signage_framework.settings')->get('fonts')) ?? [];
    foreach ($fonts as $key => $font) {
      $form['font_' . $key] = [
        '#type' => 'checkbox',
        '#title' => $this->t('@family (@weight|@style|@stretch)', [
          '@family' => $font['family'],
          '@weight' => $font['weight'],
          '@style' => $font['style'],
          '@stretch' => $font['stretch'],
        ]),
        '#description' => Link::createFromRoute('Edit', 'digital_signage_framework.settings_fonts_edit', ['key' => $key]),
        '#default_value' => $font['enabled'],
      ];
    }
    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state): void {
    $fonts = Yaml::decode($this->config('digital_signage_framework.settings')->get('fonts')) ?? [];
    foreach ($fonts as $key => $font) {
      $fonts[$key]['enabled'] = (bool) $form_state->getValue('font_' . $key);
    }
    $this->config('digital_signage_framework.settings')
      ->set('fonts', Yaml::encode($fonts))
      ->save();
    parent::submitForm($form, $form_state);
  }

}

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

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