diff --git a/config/install/config_ignore.settings.yml b/config/install/config_ignore.settings.yml
index 629b342..616dc2f 100644
--- a/config/install/config_ignore.settings.yml
+++ b/config/install/config_ignore.settings.yml
@@ -1 +1,2 @@
ignored_config_entities: { }
+enable_export_filtering: ''
diff --git a/config/schema/config_ignore.schema.yml b/config/schema/config_ignore.schema.yml
index 9930f0d..2509ab3 100644
--- a/config/schema/config_ignore.schema.yml
+++ b/config/schema/config_ignore.schema.yml
@@ -7,3 +7,6 @@ config_ignore.settings:
label: 'List of ignored configurations'
sequence:
type: string
+ enable_export_filtering:
+ type: string
+ label: 'Enable export filtering'
diff --git a/src/Form/Settings.php b/src/Form/Settings.php
index 8029db0..e76fbf9 100644
--- a/src/Form/Settings.php
+++ b/src/Form/Settings.php
@@ -54,6 +54,13 @@ Examples:
'#default_value' => implode(PHP_EOL, $config_ignore_settings->get('ignored_config_entities')),
'#size' => 60,
];
+
+ $form['enable_export_filtering'] = [
+ '#type' => 'checkbox',
+ '#title' => $this->t('Enable export filtering'),
+ '#description' => $this->t('By default, configuration values are ignored on import only. Enable to also ignore changes during configuration export operations.'),
+ '#default_value' => $config_ignore_settings->get('enable_export_filtering'),
+ ];
return parent::buildForm($form, $form_state);
}
@@ -66,6 +73,7 @@ Examples:
$config_ignore_settings_array = preg_split("[\n|\r]", $values['ignored_config_entities']);
$config_ignore_settings_array = array_filter($config_ignore_settings_array);
$config_ignore_settings->set('ignored_config_entities', $config_ignore_settings_array);
+ $config_ignore_settings->set('enable_export_filtering', $values['enable_export_filtering']);
$config_ignore_settings->save();
parent::submitForm($form, $form_state);
diff --git a/src/Plugin/ConfigFilter/IgnoreFilter.php b/src/Plugin/ConfigFilter/IgnoreFilter.php
index ab940d6..6893d41 100644
--- a/src/Plugin/ConfigFilter/IgnoreFilter.php
+++ b/src/Plugin/ConfigFilter/IgnoreFilter.php
@@ -57,6 +57,7 @@ class IgnoreFilter extends ConfigFilterBase implements ContainerFactoryPluginInt
$container->get('module_handler')->invokeAll('config_ignore_settings_alter', [&$ignored]);
// Set the list in the plugin configuration.
$configuration['ignored'] = $ignored;
+ $configuration['enable_export_filtering'] = $container->get('config.factory')->get('config_ignore.settings')->get('enable_export_filtering');
return new static(
$configuration,
@@ -248,7 +249,7 @@ class IgnoreFilter extends ConfigFilterBase implements ContainerFactoryPluginInt
*/
public function filterWrite($name, array $data) {
// Write from the file storage when the name is in the ignored list.
- if ($this->matchConfigName($name)) {
+ if ($this->configuration['enable_export_filtering'] && $this->matchConfigName($name)) {
return $this->sourceWrite($name, $data);
}
@@ -269,7 +270,7 @@ class IgnoreFilter extends ConfigFilterBase implements ContainerFactoryPluginInt
* {@inheritdoc}
*/
public function filterDelete($name, $delete) {
- if ($this->matchConfigName($name)) {
+ if ($this->configuration['enable_export_filtering'] && $this->matchConfigName($name)) {
return FALSE;
}
return parent::filterDelete($name, $delete);