From 8f2dea15734464dcb6ffcf3485545296f9bf9802 Mon Sep 17 00:00:00 2001
From: Mariano D'Agostino <dagmar@154086.no-reply.drupal.org>
Date: Tue, 24 Jul 2012 13:14:24 -0300
Subject: [PATCH] Issue #1479152: Allow to turn off messages

---
 configuration.admin.inc  |    9 ++++++++-
 configuration.module     |    2 +-
 tests/configuration.test |   32 ++++++++++++++++++++++++++++++++
 3 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/configuration.admin.inc b/configuration.admin.inc
index 83cc596..67f7a4d 100644
--- a/configuration.admin.inc
+++ b/configuration.admin.inc
@@ -653,6 +653,13 @@ function configuration_settings_form($form, &$form_state) {
     '#collapsed' => FALSE,
   );
 
+  $form['general_settings']['configuration_display_messages'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Display a message warning that there is changes to write into the datastore'),
+    '#description' => t('If checked, every time that configurations from datastore be overriden, a message will be displayed informing users to write the changes into the datastore.'),
+    '#default_value' => variable_get('configuration_display_messages', TRUE),
+  );
+
   $form['general_settings']['configuration_config_path'] = array(
     '#type' => 'textfield',
     '#title' => t('Configuration directory configs are stored in.'),
@@ -935,4 +942,4 @@ function configuration_in_activestore($component, $identifier) {
   //     // dpm($activestore);
   //   }
   return TRUE;
-}
\ No newline at end of file
+}
diff --git a/configuration.module b/configuration.module
index 3416782..56c5c8f 100644
--- a/configuration.module
+++ b/configuration.module
@@ -253,7 +253,7 @@ function configuration_stream_wrappers() {
  */
 function configuration_init() {
   // Don't create messages on intermediate submit handler pages.
-  if (empty($_POST)) {
+  if (variable_get('configuration_display_messages', TRUE) && empty($_POST)) {
     $overridden = configuration_get_configuration('overridden');
     if (user_access('access configuration management') && $overridden !== 0) {
       if ($overridden | (CONFIGURATION_ACTIVESTORE_OVERRIDDEN | CONFIGURATION_DATASTORE_OVERRIDDEN)) {
diff --git a/tests/configuration.test b/tests/configuration.test
index 58352fe..5b35559 100644
--- a/tests/configuration.test
+++ b/tests/configuration.test
@@ -278,4 +278,36 @@ class ConfigurationActiveStoreOverriddenTest extends ConfigurationWebTestCase {
     $status = configuration_get_status('image', 'large');
     $this->assertEqual($status, CONFIGURATION_IN_SYNC);
   }
+
+  function testDisableMessages() {
+    $this->trackConfigurations();
+
+    $configuration_needs_saving_text = t('Configurations are out of sync and need to be either !write.', array('!write' => l(t('activated or written to file'), 'admin/config/system/configuration/tracking')));
+
+    // Expeting message after modify a tracked component
+    $edit = array();
+    $edit["filters[filter_url][settings][filter_url_length]"] = 20;
+    $this->drupalPost('admin/config/content/formats/filtered_html', $edit, t('Save configuration'));
+
+    $this->drupalGet('admin');
+    $this->assertRaw($configuration_needs_saving_text, t('Warning message displayed'));
+
+    // Disable the messages
+    $edit = array();
+    $edit["configuration_display_messages"] = FALSE;
+    $this->drupalPost('admin/config/system/configuration/settings', $edit, t('Save configuration'));
+
+    // Now no message should be displayed
+    $this->drupalGet('admin');
+    $this->assertNoRaw($configuration_needs_saving_text, t('No warning message displayed'));
+
+    // Enable again the messages
+    $edit = array();
+    $edit["configuration_display_messages"] = TRUE;
+    $this->drupalPost('admin/config/system/configuration/settings', $edit, t('Save configuration'));
+
+    // Check if messages are displayed again
+    $this->drupalGet('admin');
+    $this->assertRaw($configuration_needs_saving_text, t('Warning message displayed'));
+  }
 }
-- 
1.7.10

