argue-2.0.0-alpha4/modules/argue_proscons/src/Form/ArgumentSettingsForm.php
modules/argue_proscons/src/Form/ArgumentSettingsForm.php
<?php
namespace Drupal\argue_proscons\Form;
use Drupal\Core\Cache\Cache;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\EntityTypeManager;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Class ArgumentSettingsForm.
*
* @ingroup argue_proscons
*/
class ArgumentSettingsForm extends ConfigFormBase {
/**
* @var EntityTypeManager $entityTypeManager
*/
var $entityTypeManager;
/**
* Config Manager.
*
* @var CacheBackendInterface
*/
protected $cacheRender;
/**
* Constructs a new DefaultForm object.
*/
public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManager $entity_type_manager, CacheBackendInterface $cache_render) {
parent::__construct($config_factory);
$this->entityTypeManager = $entity_type_manager;
$this->cacheRender = $cache_render;
}
public static function create(ContainerInterface $container) {
return new static(
$container->get('config.factory'),
$container->get('entity_type.manager'),
$container->get('cache.render')
);
}
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return [
'argue_proscons.settings',
];
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'argue_proscons';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this->config('argue_proscons.settings');
$form['max_argument_name_length'] = [
'#type' => 'number',
'#title' => $this->t('Max. Argument name length'),
'#description' => $this->t('The max length of the title heading the Argument.'),
'#default_value' => $config->get('argue_proscons.max_argument_name_length'),
];
$form['max_argument_text_length'] = [
'#type' => 'number',
'#title' => $this->t('Max. argument text length.'),
'#description' => $this->t('The max length of the argument text body.'),
'#default_value' => $config->get('argue_proscons.max_argument_text_length'),
];
$node_types = [];
foreach ($this->entityTypeManager->getStorage('node_type')->loadMultiple() as $node_type) {
$node_types[$node_type->id()] = $node_type->label();
}
$form['argue_proscons_node_types'] = [
'#type' => 'checkboxes',
'#title' => $this->t('Argue Node Types'),
'#description' => $this->t('Enable Node types for argumentation.'),
'#default_value' => $config->get('argue_proscons.argue_proscons_node_types'),
'#options' => $node_types,
];
return parent::buildForm($form, $form_state);
}
/**
* {@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_proscons.settings')
->set('argue_proscons.max_argument_name_length', $form_state->getValue('max_argument_name_length'))
->set('argue_proscons.max_argument_text_length', $form_state->getValue('max_argument_text_length'))
->set('argue_proscons.argue_proscons_node_types', $form_state->getValue('argue_proscons_node_types'))
->save();
Cache::invalidateTags(['argument_list', 'argue_block']);
}
}
