View source
<?php
namespace Drupal\lingotek\Form;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Routing\RouteBuilderInterface;
use Drupal\Core\Routing\UrlGeneratorInterface;
use Drupal\Core\Utility\LinkGeneratorInterface;
use Drupal\lingotek\LingotekInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class LingotekSettingsTabIntegrationsForm extends LingotekConfigFormBase {
protected $moduleHandler;
protected $routerBuilder;
protected $renderCache;
public function __construct(LingotekInterface $lingotek, ConfigFactoryInterface $config, ModuleHandlerInterface $module_handler, RouteBuilderInterface $router_builder, CacheBackendInterface $render_cache, UrlGeneratorInterface $url_generator = NULL, LinkGeneratorInterface $link_generator = NULL) {
parent::__construct($lingotek, $config, $url_generator, $link_generator);
$this->moduleHandler = $module_handler;
$this->routerBuilder = $router_builder;
$this->renderCache = $render_cache;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('lingotek'), $container
->get('config.factory'), $container
->get('module_handler'), $container
->get('router.builder'), $container
->get('cache.render'), $container
->get('url_generator'), $container
->get('link_generator'));
}
public function getFormID() {
return 'lingotek.settings_integrations_form';
}
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this
->configFactory()
->getEditable('lingotek.settings');
$form = parent::buildForm($form, $form_state);
if ($this->moduleHandler
->moduleExists('paragraphs')) {
if (!isset($form['contrib'])) {
$form['contrib']['#tree'] = TRUE;
}
$form['contrib']['paragraphs'] = [
'#title' => $this
->t('Paragraphs'),
'#type' => 'details',
];
$form['contrib']['paragraphs']['enable_bulk_management'] = [
'#title' => $this
->t('Enable paragraphs to be managed individually instead of embedded in their parent entity.'),
'#type' => 'checkbox',
'#default_value' => $config
->get('preference.contrib.paragraphs.enable_bulk_management'),
];
}
$form['actions']['submit']['#value'] = $this
->t('Save settings');
return $form;
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$needs_rebuild = FALSE;
$needs_saving = FALSE;
$config = $this
->configFactory()
->getEditable('lingotek.settings');
$form_values = $form_state
->getValues();
if ($this->moduleHandler
->moduleExists('paragraphs')) {
$old_value = $config
->get('preference.contrib.paragraphs.enable_bulk_management', FALSE);
if ($old_value !== $form_values['contrib']['paragraphs']['enable_bulk_management']) {
$config
->set('preference.contrib.paragraphs.enable_bulk_management', boolval($form_values['contrib']['paragraphs']['enable_bulk_management']));
$needs_saving = TRUE;
$needs_rebuild = TRUE;
}
}
if ($needs_saving) {
$config
->save();
}
if ($needs_rebuild) {
$this->routerBuilder
->rebuild();
$this->renderCache
->deleteAll();
}
$form_state
->setRedirect('lingotek.settings');
parent::submitForm($form, $form_state);
}
}