toolshed-8.x-1.x-dev/modules/toolshed_media/src/Form/MimeDisplayForm.php

modules/toolshed_media/src/Form/MimeDisplayForm.php
<?php

namespace Drupal\toolshed_media\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * Create configuration form for mapping mime types to friendly display names.
 */
class MimeDisplayForm extends ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames(): array {
    return ['toolshed.media.mime_display'];
  }

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

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state): array {
    $form = parent::buildForm($form, $form_state);
    $mimeMap = $this->config('toolshed.media.mime_display')->get('mime_map');

    $form['mime_map'] = [
      '#type' => 'fieldset',
      '#title' => $this->t('File Extension & Display Names'),
      '#tree' => TRUE,
    ];

    foreach ($mimeMap as $info) {
      $form['mime_map'][] = [
        '#type' => 'container',
        '#attributes' => [
          'class' => [
            'form-wrapper',
            'form--inline',
            'clearfix',
          ],
        ],

        'name' => [
          '#type' => 'textfield',
          '#title' => $this->t('Display name'),
          '#default_value' => $info['name'],
          '#size' => 16,
        ],
        'extensions' => [
          '#type' => 'textfield',
          '#title' => $this->t('Extensions'),
          '#placeholder' => $this->t('File extensions'),
          '#default_value' => implode(' ', $info['extensions']),
        ],
      ];
    }

    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function validateForm(array &$form, FormStateInterface $form_state): void {
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state): void {
    $mimeData = $form_state->getValue('mime_map');

    $data = [];
    foreach ($mimeData as $values) {
      $data[] = [
        'name' => $values['name'],
        'extensions' => preg_split('#\s+#', $values['extensions'], 0, PREG_SPLIT_NO_EMPTY),
      ];
    }

    $this
      ->config('toolshed.media.mime_display')
      ->setData(['mime_map' => $data])
      ->save();

    $this->messenger()->addStatus($this->t('The configuration options have been saved.'));
  }

}

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

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