argue-2.0.0-alpha4/modules/argue_structure/src/Form/ArgueStructureConfForm.php
modules/argue_structure/src/Form/ArgueStructureConfForm.php
<?php namespace Drupal\argue_structure\Form; use Drupal\Core\Entity\EntityTypeManager; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Config\ConfigFactoryInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\Core\Config\ConfigManager; /** * Class ArgueStructureConfForm. */ class ArgueStructureConfForm extends ConfigFormBase { /** * Drupal\Core\Entity\EntityTypeManager definition. * * @var \Drupal\Core\Entity\EntityTypeManager */ protected $entityTypeManager; /** * Constructs a new ArgueStructureConfForm object. */ public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManager $entity_type_manager) { parent::__construct($config_factory); $this->entityTypeManager = $entity_type_manager; } public static function create(ContainerInterface $container) { return new static( $container->get('config.factory'), $container->get('entity_type.manager') ); } /** * {@inheritdoc} */ protected function getEditableConfigNames() { return [ 'argue_structure.arguestructureconf', ]; } /** * {@inheritdoc} */ public function getFormId() { return 'argue_structure_conf_form'; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('argue_structure.arguestructureconf'); $options = $this->getVocabOptions(); $form['argue_header_ov_page'] = [ '#type' => 'html_tag', '#tag' => 'h3', '#attributes' => [], '0' => ['#markup' => $this->t('Overview Page')] ]; $form['title_section_term_overview_page'] = [ '#type' => 'textfield', '#title' => $this->t('Title rule overview page.'), '#maxlength' => 64, '#size' => 64, '#default_value' => $config->get('title_section_term_overview_page'), '#description' => $this->t('Override title of the rule page. Leave empty to use the Vocabulary title.'), ]; $form['description_section_term_overview_page'] = [ '#type' => 'textarea', '#title' => $this->t('Description rule overview page.'), '#maxlength' => 256, '#cols' => 64, '#rows' => 3, '#default_value' => $config->get('description_section_term_overview_page'), '#description' => $this->t('Override description of the rule page. Leave empty to use the Vocabulary description.'), ]; $form['argue_header_main_vocab'] = [ '#type' => 'html_tag', '#tag' => 'h3', '#attributes' => [], '0' => ['#markup' => $this->t('Main content vocabulary')] ]; $form['argue_vocabulary'] = [ '#type' => 'select', '#title' => $this->t('Sections vocabulary structuring the argued content.'), '#options' => $options, '#default_value' => $config->get('argue_vocabulary'), '#description' => $this->t('Change main vocabulary. (not recommended, default: sections )'), ]; $form['argue_displayed_nesting_levels'] = [ '#type' => 'number', '#title' => $this->t('Displayed nesting levels'), '#min' => 1, '#max' => 5, '#step' => 1, '#size' => 3, '#default_value' => $config->get('argue_displayed_nesting_levels') ?: 2, '#description' => $this->t('Number of displayed levels in one view, starting from the routed term.'), ]; $form['argue_header_node_owner'] = [ '#type' => 'html_tag', '#tag' => 'h3', '#attributes' => [], '0' => ['#markup' => $this->t('Node owner settings')] ]; $node_types = []; foreach ($this->entityTypeManager->getStorage('node_type')->loadMultiple() as $node_type) { $node_types[$node_type->id()] = $node_type->label(); } $form['unset_node_owner'] = [ '#type' => 'checkboxes', '#title' => $this->t('Unset node owner'), '#description' => $this->t('If checked the node owner will be removed on ' .'node publish. So the creator can not edit the node without change request.'), '#default_value' => $config->get('unset_node_owner'), '#options' => $node_types, ]; return parent::buildForm($form, $form_state); } /** * @return array * The options for the vocabulary. */ protected function getVocabOptions() { $options = []; $vocabs = $this->entityTypeManager->getStorage('taxonomy_vocabulary')->loadByProperties(); foreach($vocabs as $vocab) { $options[$vocab->id()] = $vocab->label(); }; return $options; } /** * {@inheritdoc} */ public function validateForm(array &$form, FormStateInterface $form_state) { parent::validateForm($form, $form_state); } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { parent::submitForm($form, $form_state); $this->config('argue_structure.arguestructureconf') ->set('argue_vocabulary', $form_state->getValue('argue_vocabulary')) ->set('title_section_term_overview_page', $form_state->getValue('title_section_term_overview_page')) ->set('description_section_term_overview_page', $form_state->getValue('description_section_term_overview_page')) ->set('argue_max_nesting_level', $form_state->getValue('argue_max_nesting_level')) ->set('argue_displayed_nesting_levels', $form_state->getValue('argue_displayed_nesting_levels')) ->set('unset_node_owner', $form_state->getValue('unset_node_owner')) ->save(); } }