diff -upr scanner/scanner.module /Users/joe/work/launchpoker/launchpoker/sites/all/modules/scanner/scanner.module
--- scanner/scanner.module 2009-03-05 14:28:56.000000000 -0600
+++ /Users/joe/work/launchpoker/launchpoker/sites/all/modules/scanner/scanner.module 2009-10-13 20:24:28.000000000 -0500
@@ -996,6 +996,7 @@ function scanner_admin_form() {
'#collapsible' => TRUE,
);
+ $search_fields = variable_get('scanner_search_fields', array());
$table_map = _scanner_get_all_tables_map();
sort($table_map);
foreach ($table_map as $item) {
@@ -1003,7 +1004,7 @@ function scanner_admin_form() {
$form['tables'][$key] = array(
'#type' => 'checkbox',
'#title' => ''. $item['type'] .': '. $item['field'],
- '#default_value' => variable_get($key, FALSE), // default to not checked
+ '#default_value' => $search_fields[$key], // default to not checked
);
}
@@ -1014,9 +1015,50 @@ function scanner_admin_form() {
'#description' => "one per row, field in table of type nodetype on vid or nid",
);
- return system_settings_form($form);
+ $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
+ $form['buttons']['reset'] = array('#type' => 'submit', '#value' => t('Reset to defaults'));
+
+ return $form;
}
+/**
+ * Submission handler for Search and Replace settings form.
+ * Based on system_settings_form_submit().
+ */
+function scanner_admin_form_submit($form_id, $form_values) {
+ $op = isset($form_values['op']) ? $form_values['op'] : '';
+
+ // Depending on form operation, delete or update variables
+ if ($op == t('Reset to defaults')) {
+ variable_del('scanner_search_fields');
+ foreach ($settings as $setting) {
+ variable_del($setting);
+ }
+ drupal_set_message(t('The configuration options have been reset to their default values.'));
+ }
+ else {
+ // Exclude unnecessary elements from form values.
+ unset($form_values['submit'], $form_values['reset'], $form_values['form_id'], $form_values['op'], $form_values['form_token']);
+
+ // Define list of settings that should be saved individually.
+ $settings = array('scanner_mode', 'scanner_wholeword', 'scanner_regex', 'scanner_published', 'scanner_rebuild_teasers', 'scanner_vocabulary', 'scanner_custom');
+
+ // Consolidate other settings into array for scanner_search_fields
+ $search_fields = array();
+ foreach ($form_values as $key => $value) {
+ if (!in_array($key, $settings) && $value) {
+ $search_fields[$key] = $value;
+ }
+ }
+
+ // Save settings
+ variable_set('scanner_search_fields', $search_fields);
+ foreach ($settings as $setting) {
+ variable_set($setting, $form_values[$setting]);
+ }
+ drupal_set_message(t('The configuration options have been saved.'));
+ }
+}
// ***************************************************************************
@@ -1074,10 +1116,11 @@ function _scanner_get_all_tables_map() {
* @return map of selected fields and tables.
*/
function _scanner_get_selected_tables_map() {
+ $search_fields = variable_get('scanner_search_fields', array());
$tables_map = _scanner_get_all_tables_map();
foreach ($tables_map as $i => $item) {
$key = 'scanner_'. $item['field'] .'_'. $item['table'] .'_'. $item['type'];
- if (!variable_get($key, FALSE)) {
+ if (!$search_fields[$key]) {
unset($tables_map[$i]);
}
}