You are here

function facets_pretty_paths_form_facets_facet_edit_form_alter in Facets Pretty Paths 8

Implements hook_form_FORM_ID_alter().

File

./facets_pretty_paths.module, line 13
Facets Pretty Paths module file.

Code

function facets_pretty_paths_form_facets_facet_edit_form_alter(&$form, FormStateInterface $form_state) {

  // Load the facet and facet source configuration.
  $facet = \Drupal::routeMatch()
    ->getParameter('facets_facet');
  $facetsource_config = $facet
    ->getFacetSourceConfig();

  // Only alter form when pretty paths is active.
  if ($facetsource_config
    ->getUrlProcessorName() == 'facets_pretty_paths') {

    /* @var $pretty_paths_coder_manager \Drupal\facets_pretty_paths\Coder\CoderPluginManager */
    $pretty_paths_coder_manager = \Drupal::service('plugin.manager.facets_pretty_paths.coder');
    $coders = [];
    $coder_descriptions = [];
    foreach ($pretty_paths_coder_manager
      ->getDefinitions() as $coder_id => $definition) {
      $coders[$definition['id']] = !empty($definition['label']) ? $definition['label'] : $coder_id;
      $coder_descriptions[$definition['id']] = !empty($definition['description']) ? $definition['description'] : '';
    }
    $form['facet_settings']['facets_pretty_paths_coder'] = [
      '#type' => 'radios',
      '#title' => t('Pretty paths coder'),
      '#options' => $coders,
      '#default_value' => $facet
        ->getThirdPartySetting('facets_pretty_paths', 'coder', 'default_coder'),
    ];
    foreach ($coder_descriptions as $coder_id => $coder_description) {
      $form['facet_settings']['facets_pretty_paths_coder'][$coder_id]['#description'] = $coder_description;
    }

    // We need to add our custom submit handler before the defaults. If we
    // trigger after the defaults, $facet->save() will break the entity form.
    array_unshift($form['actions']['submit']['#submit'], "facets_pretty_paths_facet_edit_form_submit");
  }
}