? 849834_feeds.patch Index: feeds.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/feeds/feeds.module,v retrieving revision 1.52 diff -u -p -r1.52 feeds.module --- feeds.module 31 Aug 2010 00:45:54 -0000 1.52 +++ feeds.module 9 Sep 2010 04:15:43 -0000 @@ -65,10 +65,10 @@ function feeds_perm() { */ function feeds_forms() { $forms = array(); - $forms['FeedsImporter_feeds_config_form']['callback'] = 'feeds_config_form'; + $forms['FeedsImporter_feeds_form']['callback'] = 'feeds_form'; $plugins = feeds_get_plugins(); foreach ($plugins as $plugin) { - $forms[$plugin['handler']['class'] .'_feeds_config_form']['callback'] = 'feeds_config_form'; + $forms[$plugin['handler']['class'] .'_feeds_form']['callback'] = 'feeds_form'; } return $forms; } Index: feeds_ui/feeds_ui.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/feeds/feeds_ui/feeds_ui.admin.inc,v retrieving revision 1.34 diff -u -p -r1.34 feeds_ui.admin.inc --- feeds_ui/feeds_ui.admin.inc 10 Jul 2010 23:30:19 -0000 1.34 +++ feeds_ui/feeds_ui.admin.inc 9 Sep 2010 04:15:43 -0000 @@ -308,13 +308,13 @@ function feeds_ui_edit_page($importer, $ ctools_include('dependent'); if (empty($plugin_key)) { $active_container['title'] = t('Basic settings'); - $active_container['body'] = feeds_get_config_form($importer); + $active_container['body'] = feeds_get_form($importer, 'configForm'); } // feeds_plugin_instance() returns a correct result because feed has been // instantiated previously. elseif (in_array($plugin_key, array_keys($plugins)) && $plugin = feeds_plugin_instance($plugin_key, $importer->id)) { $active_container['title'] = t('Settings for !plugin', array('!plugin' => $plugins[$plugin_key]['name'])); - $active_container['body'] = feeds_get_config_form($plugin); + $active_container['body'] = feeds_get_form($plugin, 'configForm'); } break; case 'mapping': @@ -354,7 +354,7 @@ function feeds_ui_edit_page($importer, $ // Fetcher. $fetcher = $plugins[$config['fetcher']['plugin_key']]; $actions = array(); - if (feeds_get_config_form($importer->fetcher)) { + if (feeds_get_form($importer->fetcher, 'configForm')) { $actions = array(l(t('Settings'), $path .'/settings/'. $config['fetcher']['plugin_key'])); } $info['title'] = t('Fetcher'); @@ -371,7 +371,7 @@ function feeds_ui_edit_page($importer, $ // Parser. $parser = $plugins[$config['parser']['plugin_key']]; $actions = array(); - if (feeds_get_config_form($importer->parser)) { + if (feeds_get_form($importer->parser, 'configForm')) { $actions = array(l(t('Settings'), $path .'/settings/'. $config['parser']['plugin_key'])); } $info['title'] = t('Parser'); @@ -388,7 +388,7 @@ function feeds_ui_edit_page($importer, $ // Processor. $processor = $plugins[$config['processor']['plugin_key']]; $actions = array(); - if (feeds_get_config_form($importer->processor)) { + if (feeds_get_form($importer->processor, 'configForm')) { $actions[] = l(t('Settings'), $path .'/settings/'. $config['processor']['plugin_key']); } $actions[] = l(t('Mapping'), $path .'/mapping'); Index: includes/FeedsConfigurable.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/feeds/includes/FeedsConfigurable.inc,v retrieving revision 1.12 diff -u -p -r1.12 FeedsConfigurable.inc --- includes/FeedsConfigurable.inc 28 Feb 2010 17:16:25 -0000 1.12 +++ includes/FeedsConfigurable.inc 9 Sep 2010 04:15:43 -0000 @@ -178,31 +178,43 @@ abstract class FeedsConfigurable { */ public function configFormValidate(&$values) { } + + /** + * Submission handler for configForm(). + * + * @param $values + */ + public function configFormSubmit(&$values) { + $this->addConfig($values); + $this->save(); + drupal_set_message(t('Your changes have been saved.')); + feeds_cache_clear(FALSE); + } } /** * Config form wrapper. Use to render the configuration form of * a FeedsConfigurable object. * - * @param + * @param $configurable * FeedsConfigurable object. - * @param - * The parent object to perform the save on. + * @param $form_method + * The form method that should be rendered. * * @return * Rendered config form, if available. Empty string otherwise. */ -function feeds_get_config_form($configurable) { +function feeds_get_form($configurable, $form_method) { $form_state = array(); - if ($configurable->configForm($form_state)) { - return drupal_get_form(get_class($configurable) .'_feeds_config_form', $configurable); + if (method_exists($configurable, $form_method)) { + return drupal_get_form(get_class($configurable) .'_feeds_form', $configurable, $form_method); } return ''; } /** * Config form callback. Don't call directly, but use - * feeds_get_config_form($configurable) instead. + * feeds_get_form($configurable, 'method') instead. * * @param * FormAPI $form_state. @@ -210,12 +222,15 @@ function feeds_get_config_form($configur * FeedsConfigurable object. * @param * The object to perform the save() operation on. + * @param $form_method + * The $form_method that should be rendered. */ -function feeds_config_form(&$form_state, $configurable) { - $form = $configurable->configForm($form_state); +function feeds_form(&$form_state, $configurable, $form_method) { + $form = $configurable->$form_method($form_state); $form['#configurable'] = $configurable; - $form['#validate'] = array('feeds_config_form_validate'); - $form['#submit'] = array('feeds_config_form_submit'); + $form['#feeds_form_method'] = $form_method; + $form['#validate'] = array('feeds_form_validate'); + $form['#submit'] = array('feeds_form_submit'); $form['submit'] = array( '#type' => 'submit', '#value' => t('Save'), @@ -225,18 +240,21 @@ function feeds_config_form(&$form_state, } /** - * Validation handler for feeds_config_form(). + * Validation handler for feeds_form(). */ -function feeds_config_form_validate($form, &$form_state) { - $form['#configurable']->configFormValidate($form_state['values']); +function feeds_form_validate($form, &$form_state) { + $validate_method = $form['#feeds_form_method'] .'Validate'; + if (method_exists($form['#configurable'], $validate_method)) { + $form['#configurable']->$validate_method($form_state['values']); + } } /** * Submit handler for feeds_config_form(). */ -function feeds_config_form_submit($form, &$form_state) { - $form['#configurable']->addConfig($form_state['values']); - $form['#configurable']->save(); - drupal_set_message(t('Your changes have been saved.')); - feeds_cache_clear(FALSE); +function feeds_form_submit($form, &$form_state) { + $submit_method = $form['#feeds_form_method'] .'Submit'; + if (method_exists($form['#configurable'], $submit_method)) { + $form['#configurable']->$submit_method($form_state['values']); + } }