diff --git a/includes/omega_tools.admin.inc b/includes/omega_tools.admin.inc index 4b1f4d0..16a6cd5 100644 --- a/includes/omega_tools.admin.inc +++ b/includes/omega_tools.admin.inc @@ -7,10 +7,14 @@ function omega_tools_theme_reset_confirm($form, &$form_state, $theme) { $themes = list_themes(); $form_state['theme'] = $theme; + $global_warning = ''; + if (variable_get('theme_settings', 'empty') != 'empty') { + $global_warning = '

Warning: This site has overridden global theme settings, which will begin to override any matching theme settings exported in the theme info file unless these overrides are removed.

'; + } return confirm_form($form, t('Are you sure you want to reset the theme %name?', array('%name' => $themes[$theme]->info['name'])), 'admin/appearance/settings/' . $theme, - t('

You are about to purge the theme settings stored in the database for this theme.

This will revert to whatever information is set in the .info file, and erase any un-exported customizations.

'), + t('

You are about to purge the theme settings stored in the database for this theme. This will revert to whatever information is set in the .info file, and erase any un-exported customizations.

Please note that global theme settings such as the logo will now override any settings in the theme .info file unless you revert the global settings as well.' . $global_warning), t('Reset'), t('Cancel') ); @@ -28,6 +32,19 @@ function omega_tools_theme_reset_confirm_submit($form, &$form_state) { $form_state['redirect'] = 'admin/appearance/settings/' . $theme; } +function omega_tools_theme_global_reset_confirm($form, &$form_state) { + return confirm_form($form, + t('Are you sure you want to remove the global theme settings?'), + 'admin/appearance/settings', + '

Removing overridden global theme settings will cause global settings to be read from an exported subtheme.info file. This action cannot be undone.

', + 'Reset to default'); +} + +function omega_tools_theme_global_reset_confirm_submit($form, &$form_state) { + variable_del('theme_settings'); + $form_state['redirect'] = 'admin/appearance/settings'; +} + /** * @todo */ @@ -236,4 +253,4 @@ function omega_tools_subtheme_add_submit($form, &$form_state) { $form_state['redirect'] = 'admin/appearance/omega-tools/edit/' . $subtheme->machine_name; } -} \ No newline at end of file +} diff --git a/omega_tools.module b/omega_tools.module index 0e10e85..6e9a8df 100644 --- a/omega_tools.module +++ b/omega_tools.module @@ -35,7 +35,17 @@ function omega_tools_menu() { 'file' => 'includes/omega_tools.admin.inc', ); } - + + //global theme settings reset + $items['admin/appearance/settings/reset'] = array( + 'title' => 'Global Settings', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('omega_tools_theme_global_reset_confirm'), + 'type' => MENU_CALLBACK, + 'access arguments' => array('administer themes'), + 'file' => 'includes/omega_tools.admin.inc', + ); + $items['admin/appearance/omega-tools/add'] = array( 'title' => 'Create new Omega subtheme', 'page callback' => 'drupal_get_form', @@ -81,25 +91,43 @@ function omega_tools_file_download($uri) { function omega_tools_form_system_theme_settings_alter(&$form, &$form_state) { $form['#validate'][] = 'omega_tools_theme_settings_form_validate'; - $form['actions']['omega_tools_reset'] = array( - '#type' => 'submit', - '#value' => t('Revert theme settings'), - '#submit' => array('omega_tools_theme_settings_form_submit'), - ); - - $form['actions']['omega_tools_export'] = array( - '#type' => 'submit', - '#value' => t('Export theme settings'), - '#submit' => array('omega_tools_theme_settings_form_submit'), - ); - - $form['actions']['omega_tools_download'] = array( - '#type' => 'submit', - '#value' => t('Download this theme'), - '#submit' => array('omega_tools_theme_settings_form_submit'), - ); + if (isset($form_state['build_info']['args'][0]) + && ($theme = $form_state['build_info']['args'][0]) + && _omega_tools_is_editable($theme)) { + $form['actions']['omega_tools_reset'] = array( + '#type' => 'submit', + '#value' => t('Revert theme settings'), + '#submit' => array('omega_tools_theme_settings_form_submit'), + '#disabled' => _omega_tools_reset_disabled($theme), + '#attributes' => array('title' => _omega_tools_reset_disabled($theme) ? + array('Settings are in default state already') : array('Revert theme settings to their default state')), + ); + + $form['actions']['omega_tools_export'] = array( + '#type' => 'submit', + '#value' => t('Export theme settings'), + '#submit' => array('omega_tools_theme_settings_form_submit'), + ); + + $form['actions']['omega_tools_download'] = array( + '#type' => 'submit', + '#value' => t('Download this theme'), + '#submit' => array('omega_tools_theme_settings_form_submit'), + ); + } + else if (count($form_state['build_info']['args']) == 0) { + $form['actions']['omega_tools_global_reset'] = array( + '#type' => 'submit', + '#value' => t('Revert overridden global theme settings'), + '#submit' => array('omega_tools_theme_global_form_submit'), + '#disabled' => _omega_tools_reset_disabled(), + '#attributes' => array('title' => _omega_tools_reset_disabled() ? + array('Settings are in default state already') : array('Remove overridden global theme settings')), + ); + } } + /** * @todo */ @@ -130,6 +158,10 @@ function omega_tools_theme_settings_form_submit($form, &$form_state) { } } +function omega_tools_theme_global_form_submit($form, &$form_state) { + $form_state['redirect'] = 'admin/appearance/settings/reset'; +} + /** * @todo */ @@ -643,4 +675,13 @@ function _omega_tools_is_editable($theme) { } return FALSE; -} \ No newline at end of file +} + +function _omega_tools_reset_disabled($theme = NULL) { + if ($theme == NULL) { + return variable_get('theme_settings', 'empty') == 'empty'; + } + else { + return variable_get('theme_' . $theme . '_settings', 'empty') == 'empty'; + } +}