cloudwords-8.x-1.x-dev/src/Form/CloudwordsNodesSetLanguageForm.php

src/Form/CloudwordsNodesSetLanguageForm.php
<?php

namespace Drupal\cloudwords\Form;

use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Element;

class CloudwordsNodesSetLanguageForm extends FormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'cloudwords_nodes_set_language_form';
  }

  public function buildForm(array $form, \Drupal\Core\Form\FormStateInterface $form_state, $nids_list = NULL) {
    $nids = array_map('_cloudwords_nodes_set_language_filter_nid', explode(',', $nids_list));

    $node_titles = [];
    $nodes = [];
    foreach ($nids as $key => $nid) {
      $node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);
      if ($node) {
        $nodes[] = $node;
        $node_titles[] = \Drupal\Component\Utility\Html::escape($node->title);
      }
      else {
        unset($nids[$key]);
      }
    }

    $lang_opts = [\Drupal\Core\Language\Language::LANGCODE_NOT_SPECIFIED => 'Language neutral'];

    foreach(\Drupal::languageManager()->getlanguages() as $k => $v){
      $lang_opts[$k] = $v->getName();
    }

    $form['language'] = [
      '#title' => $this->t('Language'),
      '#description' => $this->t('Select the language for<br /><i>' . implode("<br />", $node_titles) . '</i>'),
      '#type' => 'select',
      '#options' => $lang_opts,
    ];

    $question = $this->t('Select a language.');
    $path = 'admin/content';

    $form_state->set(['nodes_to_update'], $nodes);
    return confirm_form($form, $question, $path);
  }

  public function submitForm(array &$form, \Drupal\Core\Form\FormStateInterface $form_state) {
    $nodes = $form_state->get(['nodes_to_update']);
    $language = $form_state->getValue(['language']);

    foreach ($nodes as $node) {
      _cloudwords_nodes_set_language_single_node_operation($node, $language);
    }

    $form_state->set(['redirect'], 'admin/content');
  }

}

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

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