Przeglądaj źródła

- removed form-level submit handler, replaced by Perform submit handler
- insert transformed base form into the qbf form
- insert query results placeholder in qbf fieldset

Frederic G. Marand 15 lat temu
rodzic
commit
db6c7a2447
1 zmienionych plików z 63 dodań i 58 usunięć
  1. 63 58
      qbf.module

+ 63 - 58
qbf.module

@@ -12,7 +12,7 @@
  * @package QBF
  */
 
-// $Id: qbf.module,v 1.9.4.4 2009-03-19 17:30:24 marand Exp $
+// $Id: qbf.module,v 1.9.4.5 2009-03-20 10:00:39 marand Exp $
 
 /**
  * Saved error reporting level.
@@ -672,14 +672,11 @@ function qbf___________________________________________________(){}
 /**
  * Transform a form array for QBF.
  *
- * This function obtains the form array using Forms API, and transforms it by
- * modifying widgets to other types where needed.
+ * This function obtains the form array from the hook_form() implementation, and
+ * transforms it by modifying widgets to other types where needed.
  *
- * Any additional parameter passed to the function is transmitted to the form
- * generating function.
- *
- * $form_state is generally not used, but is passed in to match the usual FAPI
- * signatures in Drupal 6.
+ * Any additional parameter passed to the function is transmitted to the
+ * hook_form() implementation.
  *
  * @ingroup forms
  * @param string $form_id
@@ -783,40 +780,6 @@ function qbf_import_values($element, $form_values) {
   return $element;
 }
 
-/**
- * Submit handler for query save form.
- *
- * @ingroup forms
- * @param $form_id string
- * @param $form_values array
- * @return string
- */
-function qbf_submit($form_id, $form_values) {
-/*
-
-function qbf_submit($form, &$form_state) {
-/* @TODO GW The 'op' element in the form values is deprecated.
-   Each button can have #validate and #submit functions associated with it.
-   Thus, there should be one button that submits the form and which invokes
-   the normal form_id_validate and form_id_submit handlers. Any additional
-   buttons which need to invoke different validate or submit functionality
-   should have button-specific functions.
-  switch ($form_state['values']['op']) { */
-
-  switch ($form_values['op']) {
-    case t('Search'):
-      $ret = FALSE;
-      break;
-
-  }
-  //dsm(array('QS' => $form_values));
-  return $ret;
-/* @todo GW
-  //dsm(array('QS' => $form_state['values']));
-  $form_state['redirect'] = $ret;
-*/
-}
-
 /**
  * Save a query and return its qid.
  *
@@ -844,9 +807,9 @@ function _qbf_save($form_id, $form_state)
     // dsm($form, "prepare");
     $name = $form_state['values']['qbf_save_name'];
     $type = $form_state['values']['qbf_save_type'];
-    dsm($form_state);
+    // dsm($form_state);
     $form_values = _qbf_extract_query($form, $form_state['values']);
-    dsm($form_values);
+    // dsm($form_values);
     $ar_values = array();
     foreach ($form_values as $key => $value)
       {
@@ -878,31 +841,71 @@ function _qbf_save($form_id, $form_state)
 function qbf_form($form_state, $form_id, $qbf_form_id, $save_type)
   {
   // dsm(array("QBF_Form" => "Base = [$form_id], QBF ID = [$qbf_form_id]", 'save_type' => $save_type));
+  // dsm($form_state);
 
-  $form = array();
-//  $form['#validate'][] = 'qbf_form_validate';
-//  $form['#submit'][]   = 'qbf_form_submit';
+  // Fetch the basic form and rename it, passing it the previous values
+  $node = new stdClass();
+  $form = $form_id($node, $form_state);
+
+  $qbf_form = array();
+  $qbf_form['#qbf_source_form_id'] = $form_id;
+  // On the form element itselfn only keep the QBF properties and the children
+  if (in_array('#qbf', element_properties($form)))
+    {
+    $qbf_form += $form['#qbf'];
+    }
 
-  $form['qbf'] = array
+  foreach (element_children($form) as $key)
+    {
+    // dsm("Transforming $key, type " . $form[$key]['#type']);
+    $new_element = _qbf_transform_element($key, $form[$key], $form_state);
+    if (!is_null($new_element))
+      {
+      $qbf_form[$key] = $new_element;
+      }
+    }
+
+  $qbf_form['#id'] = $qbf_form_id;
+
+//  $qbf_form['#after_build'][] = 'qbf_after_build';
+//  $qbf_form['#validate'][] = 'qbf_form_validate';
+  $qbf_form['#submit'] = array('qbf_form_submit');
+  // dsm($qbf_form);
+
+  $qbf_form['qbf'] = array
     (
     '#type'   => 'fieldset',
     '#title'  => t('Query'),
     );
+  if (isset($form_state['values']) && !empty($form_state['values']))
+    {
+    dsm(array("QBF form: we must restore these values" => $form_state['values']));
+    if (isset($form_state['qbf_results']))
+      {
+      $qbf_form['qbf']['qbf_results'] = array
+        (
+        '#type'    => 'markup',
+        '#prefix'  => '<p>',
+        '#value'   => $form_state['qbf_results'],
+        '#suffix'  => '</p>',
+        );
+      }
+    }
 
-  $form['qbf']['qbf_save_type'] = array
+  $qbf_form['qbf']['qbf_save_type'] = array
     (
     '#type'          => 'hidden',
     '#value'         => $save_type,
     );
 
-  $form['qbf']['qbf_save_name'] = array
+  $qbf_form['qbf']['qbf_save_name'] = array
     (
     '#title'         => t('Name of query in your save list'),
     '#type'          => 'textfield',
     '#required'      => TRUE,
     '#default_value' => substr($form_id, 0, -5) . ' ' . format_date(time(), 'large'),
     );
-  $form['qbf']['qbf_save'] = array
+  $qbf_form['qbf']['qbf_save'] = array
     (
     '#submit'   => array('qbf_form_save_submit'),
     '#validate' => array('qbf_form_save_validate'),
@@ -911,16 +914,16 @@ function qbf_form($form_state, $form_id, $qbf_form_id, $save_type)
     '#weight'   => 5,
     );
 
-  $form['qbf']['qbf_perform'] = array
+  $qbf_form['qbf']['qbf_perform'] = array
     (
     '#submit' => array('qbf_form_perform_submit'),
-    '#validate' => array('qbf_form_perform_validate'),
+    // '#validate' => array('qbf_form_perform_validate'),
     '#type'   => 'submit',
     '#value'  => t('Perform query'),
     '#weight' => 4,
     );
 
-  return $form;
+  return $qbf_form;
   }
 
 /**
@@ -932,8 +935,10 @@ function qbf_form($form_state, $form_id, $qbf_form_id, $save_type)
 function qbf_form_perform_submit($form, &$form_state)
   {
   dsm('PERF SUB');
-  dsm($form);
+  //dsm($form);
   dsm($form_state);
+  $form_state['qbf_results'] = "Les résultats sont là";
+  $form_state['rebuild'] = TRUE;
   }
 
 /**
@@ -945,20 +950,20 @@ function qbf_form_perform_submit($form, &$form_state)
 function qbf_form_perform_validate($form, &$form_state)
   {
   dsm('PERF VAL');
-  dsm($form);
+  //dsm($form);
   dsm($form_state);
   }
 
 function qbf_form_submit($form, &$form_state)
   {
   dsm('FORM SUB');
-  dsm($form);
+  //dsm($form);
   dsm($form_state);
   }
 
 function qbf_form_validate($form, &$form_state)
   {
   dsm('FORM VAL');
-  dsm($form);
+  //dsm($form);
   dsm($form_state);
   }