You are here

function media_directories_ui_form_media_directories_config_form_alter in Media Directories 2.x

Same name and namespace in other branches
  1. 8 modules/media_directories_ui/media_directories_ui.module \media_directories_ui_form_media_directories_config_form_alter()

Implements hook_form_FORM_ID_alter().

Adding settings to the media_directories config form here.

File

modules/media_directories_ui/media_directories_ui.module, line 363
Main module file.

Code

function media_directories_ui_form_media_directories_config_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  $config = \Drupal::config('media_directories_ui.settings');
  $combined_upload_enabled = $config
    ->get('enable_combined_upload');
  $form['media_directories_ui'] = [
    '#type' => 'details',
    '#title' => t('Media browser UI'),
    '#description' => t('Change media browser UI settings.'),
    '#collapsible' => TRUE,
    '#open' => TRUE,
    '#tree' => TRUE,
  ];
  $form['media_directories_ui']['quick_edit_form_mode'] = [
    '#type' => 'fieldset',
    '#title' => t('Quick Edit Form Mode'),
    '#description' => t('The media form mode <strong>media_library</strong> is used to display media in the quick edit dialog. You can edit the form display <a href=":url">in the media types field UI</a>. <em>Be aware that the media\'s source field will always be hidden!</em>', [
      ':url' => Url::fromRoute('entity.media_type.collection')
        ->toString(),
    ]),
  ];
  $form['media_directories_ui']['hide_media_library_media_tab'] = [
    '#type' => 'checkbox',
    '#title' => t('Hide Media tab'),
    '#description' => t('If checked, the <em>Media</em> tab will be hidden.'),
    '#default_value' => $config
      ->get('hide_media_library_media_tab'),
  ];
  $form['media_directories_ui']['hide_media_library_files_tab'] = [
    '#type' => 'checkbox',
    '#title' => t('Hide Files tab'),
    '#description' => t('If checked, the <em>Files</em> tab will be hidden.'),
    '#default_value' => $config
      ->get('hide_media_library_files_tab'),
  ];
  if (\Drupal::service('module_handler')
    ->moduleExists('admin_toolbar_tools')) {
    $form['media_directories_ui']['hide_admin_toolbar_links'] = [
      '#type' => 'checkbox',
      '#title' => t('Hide admin_toolbar_tools links'),
      '#description' => t("If checked, the <em>Add Media</em> menu links of admin_toolbar_tools will be hidden and also it's <em>Media</em> and <em>Files</em> links depending on the tab settings."),
      '#default_value' => $config
        ->get('hide_admin_toolbar_links'),
    ];
  }

  /** @var  \Drupal\media\MediaTypeInterface[] $media_types */
  $media_types = \Drupal::entityTypeManager()
    ->getStorage('media_type')
    ->loadMultiple();
  $options = [];
  foreach ($media_types as $media_type) {
    $source_field_allowed_types = $media_type
      ->getSource()
      ->getPluginDefinition()['allowed_field_types'];
    $valid_field_types = [
      'file',
      'image',
    ];
    if (array_intersect($valid_field_types, $source_field_allowed_types)) {
      $options[$media_type
        ->id()] = $media_type
        ->label();
    }
  }
  $form['media_directories_ui']['combined_upload'] = [
    '#type' => 'details',
    '#title' => t('Combined upload'),
    '#description' => t("Allows uploading files through one upload field. A media type is identified by it's file extension(s)!"),
    '#collapsible' => TRUE,
    '#open' => $combined_upload_enabled,
  ];
  $form['media_directories_ui']['combined_upload']['enable_combined_upload'] = [
    '#type' => 'checkbox',
    '#title' => t('Enable combined upload'),
    '#description' => t('Enables simplified upload form, where user can upload different file types through one upload field.'),
    '#default_value' => $config
      ->get('enable_combined_upload'),
  ];
  $form['media_directories_ui']['combined_upload']['combined_upload_media_types'] = [
    '#type' => 'checkboxes',
    '#title' => t('Enabled Media types'),
    '#description' => t('Select media types to use in combined upload (you need to select at least one). This will work only for media types that have upload field.'),
    '#options' => $options,
    '#default_value' => $config
      ->get('combined_upload_media_types') != NULL ? $config
      ->get('combined_upload_media_types') : [],
  ];
  array_unshift($form['#submit'], 'media_directories_ui_config_form_submit');
}