'markup', '#markup' => $this->t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => 0, ]; $form['settings_source'] = [ '#type' => 'radios', '#title' => $this->t('Settings source'), '#description' => $this->t('Select whether Pathologic should use the global Pathologic settings or custom “local” settings when filtering text in this text format.', [':config' => Url::fromRoute('pathologic.config_form')->toString()]), '#weight' => 10, '#default_value' => $this->settings['settings_source'], '#options' => [ 'global' => $this->t('Use global Pathologic settings'), 'local' => $this->t('Use custom settings for this text format'), ], ]; // Fields in fieldsets areā€¦ awkward to implement. // @see https://www.drupal.org/node/2378437 $form['local_settings'] = [ '#type' => 'fieldset', '#title' => $this->t('Custom settings for this text format'), '#weight' => 20, '#collapsible' => FALSE, '#collapsed' => FALSE, '#description' => $this->t('These settings are ignored if “Use global Pathologic settings” is selected above.'), // @todo Fix the #states magic (or see if it's a core D8 bug) '#states' => [ 'visible' => [ ':input[name="filters[filter_pathologic][settings][settings_source]"]' => ['value' => 'local'], ], ], ]; $common = new PathologicSettingsCommon(); $form['local_settings'] += $common->commonSettingsForm($this->settings['local_settings']); return $form; } /** * {@inheritdoc} */ public function process($text, $langcode) { $settings = $this->settings; if ($settings['settings_source'] === 'global') { $config = \Drupal::config('pathologic.settings'); $settings['protocol_style'] = $config->get('protocol_style'); $settings['local_paths'] = $config->get('local_paths'); } else { $settings = $settings['local_settings']; } // @todo Move code from .module file to inside here. return new FilterProcessResult(_pathologic_filter($text, $settings, Crypt::hashBase64(serialize($settings)))); } }