You are here

public function TaxonomiesSyncForm::buildForm in Structure Sync 8

Same name and namespace in other branches
  1. 2.x src/Form/TaxonomiesSyncForm.php \Drupal\structure_sync\Form\TaxonomiesSyncForm::buildForm()

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

src/Form/TaxonomiesSyncForm.php, line 61

Class

TaxonomiesSyncForm
Import and export form for content in structure, like taxonomy terms.

Namespace

Drupal\structure_sync\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $helper = new StructureSyncHelper();
  $form['title'] = [
    '#type' => 'page_title',
    '#title' => $this
      ->t('Taxonomies'),
  ];
  $form['export'] = [
    '#type' => 'details',
    '#title' => $this
      ->t('Export'),
    '#weight' => 1,
    '#open' => TRUE,
  ];
  $form['export']['export_taxonomies'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Export taxonomies'),
    '#name' => 'exportTaxonomies',
    '#button_type' => 'primary',
    '#submit' => [
      [
        $helper,
        'exportTaxonomies',
      ],
    ],
  ];

  // Get a list of all vocabularies (their machine names).
  $vocabulary_list = [];
  $vocabularies = $this->entityTypeManager
    ->getStorage('taxonomy_vocabulary')
    ->loadMultiple();
  foreach ($vocabularies as $vocabulary) {
    $vocabulary_list[$vocabulary
      ->id()] = $vocabulary
      ->label();
  }
  $form['export']['export_voc_list'] = [
    '#type' => 'checkboxes',
    '#options' => $vocabulary_list,
    '#default_value' => array_keys($vocabulary_list),
    '#title' => $this
      ->t('Select the vocabularies you would like to export'),
  ];
  $form['import'] = [
    '#type' => 'details',
    '#title' => $this
      ->t('Import'),
    '#weight' => 2,
    '#open' => TRUE,
  ];
  $taxonomies = $this
    ->config('structure_sync.data')
    ->get('taxonomies');
  if (empty($taxonomies)) {
    $form['import']['import_no_data'] = [
      '#type' => 'markup',
      '#markup' => $this
        ->t("There's no data to import, please do an export first."),
    ];
    return $form;
  }
  $form['import']['import_taxonomies_safe'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Import taxonomies (safely)'),
    '#name' => 'importTaxonomiesSafe',
    '#button_type' => 'primary',
    '#submit' => [
      [
        $helper,
        'importTaxonomiesSafe',
      ],
    ],
  ];
  $form['import']['import_taxonomies_full'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Import taxonomies (full)'),
    '#name' => 'importTaxonomiesFull',
    '#submit' => [
      [
        $helper,
        'importTaxonomiesFull',
      ],
    ],
  ];
  $form['import']['import_taxonomies_force'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Import taxonomies (force)'),
    '#name' => 'importTaxonomiesForce',
    '#submit' => [
      [
        $helper,
        'importTaxonomiesForce',
      ],
    ],
  ];
  $voc_list = array_keys($taxonomies);
  $vocabulary_list_config = array_combine($voc_list, $voc_list);
  foreach ($vocabulary_list_config as $voc) {
    $vocabulary_list_config[$voc] = $vocabulary_list[$voc];
    if (!in_array($vocabulary_list_config[$voc], $vocabulary_list)) {
      drupal_set_message($this
        ->t('Vocabulary "@voc" does not (yet) exist on the site', [
        '@voc' => $voc,
      ]), 'warning');
      unset($vocabulary_list_config[$voc]);
    }
  }
  $form['import']['import_voc_list'] = [
    '#type' => 'checkboxes',
    '#options' => $vocabulary_list_config,
    '#default_value' => array_keys($vocabulary_list_config),
    '#title' => $this
      ->t('Select the vocabularies you would like to import'),
  ];
  return $form;
}