diff --git a/core/includes/config.inc b/core/includes/config.inc index bb07c03..fb74906 100644 --- a/core/includes/config.inc +++ b/core/includes/config.inc @@ -322,7 +322,7 @@ function config_get_module_config_entities($module) { */ function config_diff(StorageInterface $source_storage, StorageInterface $target_storage, $name, $options = array()) { require_once DRUPAL_ROOT . '/core/vendor/phpspec/php-diff/lib/Diff.php'; - require_once DRUPAL_ROOT . '/core/vendor/phpspec/php-diff/lib//Diff/Renderer/Html/SideBySide.php'; + require_once DRUPAL_ROOT . '/core/vendor/phpspec/php-diff/lib/Diff/Renderer/Html/SideBySide.php'; // Implemntors of StorageInterface::read() return keyed arrays of // configuration data. The diff class wants an array of strings, @@ -336,6 +336,6 @@ function config_diff(StorageInterface $source_storage, StorageInterface $target_ $target_data = explode("\n", $dumper->dump($target_storage->read($name), PHP_INT_MAX)); $diff = new Diff($source_data, $target_data, $options); - $renderer = new Diff_Renderer_Html_SideBySide; - return $diff->Render($renderer); + $renderer = new Diff_Renderer_Html_SideBySide(); + return $diff->render($renderer); } diff --git a/core/modules/config/config.admin.inc b/core/modules/config/config.admin.inc index 0ffdc4c..d9b72e4 100644 --- a/core/modules/config/config.admin.inc +++ b/core/modules/config/config.admin.inc @@ -73,10 +73,31 @@ function config_admin_sync_form(array &$form, array &$form_state, StorageInterfa foreach ($config_files as $config_file) { $form[$config_change_type]['list']['#rows'][] = array($config_file); - // If this is a change, show the inline diff. - if ($config_change_type == 'change') { - $form[$config_change_type]['list']['#rows'][] = array(config_diff($target_storage, $source_storage, $config_file)); + switch ($config_change_type) { + case 'change': + $fieldset_title = t('View changes of @config_file', array('@config_file' => $config_file)); + break; + case 'create': + $fieldset_title = t('View added file @config_file', array('@config_file' => $config_file)); + break; + case 'delete': + $fieldset_title = t('View removed file @config_file', array('@config_file' => $config_file)); + break; } + + // Show the additions/changes/deletions in a nice collapsible fieldset. + $fieldset = array( + '#type' => 'fieldset', + '#title' => $fieldset_title, + '#collapsible' => TRUE, + '#collapsed' => TRUE, + ); + $fieldset['diff'] = array( + '#markup' => config_diff($target_storage, $source_storage, $config_file), + ); + $form[$config_change_type]['list']['#rows'][] = array( + array('data' => $fieldset), + ); } } }