From d8cca5e6e89233f4efbc0f2b81b4a83745f57a43 Mon Sep 17 00:00:00 2001
From: Alex Barth <alex_b@53995.no-reply.drupal.org>
Date: Wed, 16 Sep 2009 21:57:10 +0000
Subject: [PATCH] Minor cleanups, add plugin form validation and submission.

---
 feeds_ui/feeds_ui.admin.inc | 18 ++++++++++++++++--
 includes/feed.inc           | 20 ++++++++++++++++++--
 2 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/feeds_ui/feeds_ui.admin.inc b/feeds_ui/feeds_ui.admin.inc
index f30c1f20..b0b576f5 100644
--- a/feeds_ui/feeds_ui.admin.inc
+++ b/feeds_ui/feeds_ui.admin.inc
@@ -165,11 +165,10 @@ function feeds_ui_build_mapping_form(&$form_state, $feed) {
 
 /**
  * Edit plugin configuration.
- * 
- * @todo: move plugin form generation into feed class.
  */
 function feeds_ui_build_plugin_form(&$form_state, $feed) {
   $form = array();
+  $form['#feed'] = $feed;
   $form['plugins'] = array(
     '#type' => 'fieldset',
     '#title' => t('Plugins'),
@@ -182,6 +181,21 @@ function feeds_ui_build_plugin_form(&$form_state, $feed) {
   return $form;
 }
 
+/**
+ * Validation handler for feeds_ui_build_edit_form().
+ */
+function feeds_ui_build_plugin_form_validate($form, &$form_state) {
+  $form['#feed']->pluginFormValidate($form, &$form_state);
+}
+
+/**
+ * Submit handler for feeds_ui_build_edit_form().
+ */
+function feeds_ui_build_plugin_form_submit($form, &$form_state) {
+  $form['#feed']->pluginFormSubmit($form, &$form_state);
+  drupal_set_message(t('Saved configuration'));
+}
+
 /**
  * Delete form.
  */
diff --git a/includes/feed.inc b/includes/feed.inc
index 9755ee85..6dc614b9 100644
--- a/includes/feed.inc
+++ b/includes/feed.inc
@@ -110,6 +110,24 @@ class Feed extends FeedsConfigurable {
     return $form;
   }
 
+  /**
+   * Validation handler for pluginForm().
+   */
+  public function pluginFormValidate($form, &$form_state) {
+    $form_state['values']['processors'] = array_filter($form_state['values']['processors']);
+    if (!count($form_state['values']['processors'])) {
+      form_set_error('processors', t('At least one processor needs to be enabled.'));
+    }
+  }
+
+  /**
+   * Submit handler for pluginForm().
+   */
+  public function pluginFormSubmit($form, &$form_state) {
+    $this->addConfig($form_state['values']);
+    $this->save();
+  }
+
   /**
    * Import feed by using configured fetchers, parsers, processors.
    */
@@ -289,8 +307,6 @@ class FeedsConfigurable {
 
   /**
    * Validation handler for configForm().
-   *
-   * @return unknown
    */
   public function configFormValidate($form, &$form_state) {
   }
-- 
GitLab