diff --git a/core/modules/filter/filter.admin.inc b/core/modules/filter/filter.admin.inc index cb0b1c3..ff98056 100644 --- a/core/modules/filter/filter.admin.inc +++ b/core/modules/filter/filter.admin.inc @@ -187,6 +187,19 @@ function filter_admin_format_form($form, &$form_state, $format) { $form['roles']['#default_value'] = array($admin_role); } + // Retrieve available filters and load all configured filters for existing + // text formats. + $filters = !empty($format->format) ? filter_list_format($format->format) : array(); + + // Prepare filters for form sections. + foreach (array_keys($format->filterPlugins->getInstanceIDs()) as $name) { + // Create an empty filter object for new/unconfigured filters. + if (!isset($filters[$name])) { + $filters[$name] = $format->filterPlugins->get($name); + } + } + $form['#filters'] = $filters; + // Filter status. $form['filters']['status'] = array( '#type' => 'item', @@ -216,10 +229,7 @@ function filter_admin_format_form($form, &$form_state, $format) { '#title' => t('Filter settings'), ); - // Retrieve available filters and load all configured filters for existing - // text formats. - $form['#filters'] = filter_list_format($format->format); - foreach ($form['#filters'] as $name => $filter) { + foreach ($filters as $name => $filter) { $form['filters']['status'][$name] = array( '#type' => 'checkbox', '#title' => $filter->title, diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module index c8045db..05952af 100644 --- a/core/modules/filter/filter.module +++ b/core/modules/filter/filter.module @@ -684,7 +684,7 @@ function check_markup($text, $format_id = NULL, $langcode = '', $cache = FALSE, continue; } if ($filter->status) { - $text = $filter->prepare($text, $filter, $langcode, $cache, $cache_id); + $text = $filter->prepare($text, $langcode, $cache, $cache_id); } } @@ -695,7 +695,7 @@ function check_markup($text, $format_id = NULL, $langcode = '', $cache = FALSE, continue; } if ($filter->status) { - $text = $filter->process($text, $filter, $langcode, $cache, $cache_id); + $text = $filter->process($text, $langcode, $cache, $cache_id); } } @@ -966,7 +966,7 @@ function _filter_tips($format_id, $long = FALSE) { $filters = filter_list_format($format->format); foreach ($filters as $name => $filter) { if ($filter->status) { - $tip = $filter->tips($filter, $long); + $tip = $filter->tips($long); if (isset($tip)) { $tips[$format->name][$name] = array('tip' => $tip, 'id' => $name); } diff --git a/core/modules/filter/lib/Drupal/filter/Plugin/filter/filter/FilterBase.php b/core/modules/filter/lib/Drupal/filter/Plugin/filter/filter/FilterBase.php index 34132ff..0427572 100644 --- a/core/modules/filter/lib/Drupal/filter/Plugin/filter/filter/FilterBase.php +++ b/core/modules/filter/lib/Drupal/filter/Plugin/filter/filter/FilterBase.php @@ -30,6 +30,7 @@ public function __construct(array $configuration, $plugin_id, DiscoveryInterface parent::__construct($configuration, $plugin_id, $discovery); $this->configuration += $this->getDefinition(); + $this->settings += $this->default_settings; $this->format = $format; }