Skip to content
Snippets Groups Projects

Issue #3336155: Hide excluded elements from settings form

@@ -4,6 +4,7 @@ namespace Drupal\webform_simplify\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
use Symfony\Component\DependencyInjection\ContainerInterface;
class WebformSimplifySettingsForm extends FormBase {
@@ -34,7 +35,8 @@ class WebformSimplifySettingsForm extends FormBase {
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state): array {
$config = $this->configFactory->get('webform_simplify.settings');
$simplifyConfig = $this->configFactory->get('webform_simplify.settings');
$webformConfig = $this->configFactory->get('webform.settings');
$form['general_settings'] = [
'#title' => $this->t('General settings'),
@@ -44,16 +46,55 @@ class WebformSimplifySettingsForm extends FormBase {
$form['general_settings']['disable_help'] = [
'#title' => $this->t('Disable help sections'),
'#type' => 'checkbox',
'#default_value' => $config->get('disable_help'),
'#default_value' => $simplifyConfig->get('disable_help'),
];
$form['element_types'] = [
'#title' => $this->t('Element types'),
'#type' => 'fieldset',
];
$excludedElements = $webformConfig->get('element.excluded_elements');
$elementSettingsUrl = Url::fromRoute('webform.config.elements', [], ['fragment' => 'edit-types'])->toString();
$form['element_types']['info'] = [
'#markup' => '<p>' . $this->t("Element types can be excluded so they don't appear as an option when building a webform.") . '<br>'
. $this->t("You can do this by navigating to <i>Webforms</i> > <i>Configuration</i> > <i>Elements</i> > <i>Element types</i>, or by following <a href=\"@elementSettingsUrl\">this link</a>.", ['@elementSettingsUrl' => $elementSettingsUrl]) . '</p>',
];
$form['element_types']['excluded_elements'] = [
'#type' => 'details',
'#title' => $this->t('Excluded elements'),
];
if ($excludedElements === []) {
$form['element_types']['excluded_elements']['types'] = [
'#markup' => '<p>' . $this->t('No elements are excluded yet.') . '</p>',
];
} else {
$form['element_types']['excluded_elements']['types'] = [
'#markup' => '<p>' . $this->t('The following elements are excluded: <i>@excludedElements</i>.', [
'@excludedElements' => implode(', ', $excludedElements),
]) . '</p>',
];
}
$form['element_settings'] = [
'#title' => $this->t('Element settings'),
'#type' => 'fieldset',
'#tree' => TRUE,
];
foreach ($this->webformSimplifyElementManager->getDefinitions() as $definition) {
$definitions = $this->webformSimplifyElementManager->getDefinitions();
usort($definitions, function ($a, $b) {
return strcasecmp($a['label'], $b['label']);
});
foreach ($definitions as $definition) {
if (in_array($definition['id'], $excludedElements)) {
continue;
}
/** @var \Drupal\webform_simplify\WebformSimplifyElementInterface $simplifyElement */
$simplifyElement = $this->webformSimplifyElementManager->createInstance($definition['id']);
@@ -65,7 +106,7 @@ class WebformSimplifySettingsForm extends FormBase {
];
$tabs = $simplifyElement->getTabs();
$disabledTabs = $config->get(sprintf('element_settings.%s.disabled_tabs', $definition['id'])) ?? [];
$disabledTabs = $simplifyConfig->get(sprintf('element_settings.%s.disabled_tabs', $definition['id'])) ?? [];
$enabledTabs = array_diff(array_keys($tabs), $disabledTabs);
$form['element_settings'][$definition['id']]['tabs'] = [
@@ -76,7 +117,7 @@ class WebformSimplifySettingsForm extends FormBase {
];
$features = $simplifyElement->getFeatures();
$disabledFeatures = $config->get(sprintf('element_settings.%s.disabled_features', $definition['id'])) ?? [];
$disabledFeatures = $simplifyConfig->get(sprintf('element_settings.%s.disabled_features', $definition['id'])) ?? [];
$enabledFeatures = array_diff(array_keys($features), $disabledFeatures);
$form['element_settings'][$definition['id']]['features'] = [
Loading