Browse Source

- now support form-defined property overrides
- "level" property renamed to "#level"
- "_qbf_transform_form" renamed to "qbf_transform_form" as an outside-facing function
- compatible with job.module 1.4

Frederic G. Marand 16 years ago
parent
commit
36eb700edb
1 changed files with 24 additions and 10 deletions
  1. 24 10
      qbf.module

+ 24 - 10
qbf.module

@@ -7,7 +7,7 @@
  *
  *
  * @copyright 2008 Ouest Systemes Informatiques (OSInet)
  * @copyright 2008 Ouest Systemes Informatiques (OSInet)
  * @author Frederic G. MARAND
  * @author Frederic G. MARAND
- * @version $Id: qbf.module,v 1.1 2008-08-22 16:58:01 marand Exp $
+ * @version $Id: qbf.module,v 1.2 2008-08-25 15:03:33 marand Exp $
  * @license CeCILL 2.0
  * @license CeCILL 2.0
  * @package QBF
  * @package QBF
  */
  */
@@ -58,7 +58,7 @@ function qbf_rewrite_form($form)
  * @param array $arHooks
  * @param array $arHooks
  * @return array
  * @return array
  */
  */
-function _qbf_transform_form($form_id, $arHooks = array())
+function qbf_transform_form($form_id, $arHooks = array())
   {
   {
   // Fetch the basic form and rename it
   // Fetch the basic form and rename it
   $form = drupal_retrieve_form($form_id, NULL);
   $form = drupal_retrieve_form($form_id, NULL);
@@ -67,7 +67,7 @@ function _qbf_transform_form($form_id, $arHooks = array())
   // Invoke the optional hooks extending it
   // Invoke the optional hooks extending it
   foreach ($arHooks as $hookName => $arHookArguments)
   foreach ($arHooks as $hookName => $arHookArguments)
     {
     {
-    dsm("Firing $hookName");
+    // dsm("Firing $hookName");
 
 
     foreach (module_implements($hookName) as $module)
     foreach (module_implements($hookName) as $module)
       {
       {
@@ -97,7 +97,7 @@ function _qbf_transform_form($form_id, $arHooks = array())
   $form['mark'] = array('#type' => 'textarea', '#value' => 'goo');
   $form['mark'] = array('#type' => 'textarea', '#value' => 'goo');
   foreach (element_children($form) as $key)
   foreach (element_children($form) as $key)
     {
     {
-    //dsm("Transforming $key, type " . $form[$key]['#type']);
+    // dsm("Transforming $key, type " . $form[$key]['#type']);
     $newElement = _qbf_transform_element($key, $form[$key]);
     $newElement = _qbf_transform_element($key, $form[$key]);
     if (!is_null($newElement))
     if (!is_null($newElement))
       {
       {
@@ -106,7 +106,7 @@ function _qbf_transform_form($form_id, $arHooks = array())
     }
     }
 
 
   $newForm['#id'] = $newFormId;
   $newForm['#id'] = $newFormId;
-//dsm($newForm);
+// dsm($newForm);
   return $newForm;
   return $newForm;
   }
   }
 
 
@@ -114,14 +114,16 @@ function _qbf_transform_form($form_id, $arHooks = array())
  * Transform a form element for QBF
  * Transform a form element for QBF
  *
  *
  * QBF-specific properties are:
  * QBF-specific properties are:
- * - #qbf_level : @see QBF_* constants
+ * - #qbf : array of properties
+ * - #level: only within #qbf @see QBF_* constants
  *
  *
  * @param array &$element
  * @param array &$element
  * @return void
  * @return void
  */
  */
 function _qbf_transform_element($key, array $element)
 function _qbf_transform_element($key, array $element)
   {
   {
-  //dsm(array('key' => $key, 'element' => $element));
+  // dsm(array('key' => $key, 'element' => $element));
+
   // Types without a default transformation are not transformed
   // Types without a default transformation are not transformed
   static $arDefaultTypeTransformations = array
   static $arDefaultTypeTransformations = array
     (
     (
@@ -178,8 +180,7 @@ function _qbf_transform_element($key, array $element)
     {
     {
     $ret = $element;
     $ret = $element;
     $ret['#type'] = $destType;
     $ret['#type'] = $destType;
-
-    if (!array_key_exists('#qbf_level', $element) || $element['#qbf_level'] == QBF_LEVEL_REMOVE)
+    if (!array_key_exists('#qbf', $element) || $element['#qbf']['#level'] == QBF_LEVEL_REMOVE)
       {
       {
       $ret = NULL;
       $ret = NULL;
       }
       }
@@ -203,12 +204,25 @@ function _qbf_transform_element($key, array $element)
           {
           {
           $ret[$propertyName] = $element[$propertyName];
           $ret[$propertyName] = $element[$propertyName];
           }
           }
+
+        // And apply form-defined overrides
+        if ($propertyName == '#qbf')
+          {
+          foreach ($element[$propertyName] as $overrideName => $overrideValue)
+            {
+          	$ret[$overrideName] = $overrideValue;
+            }
+          }
         }
         }
 
 
       foreach (element_children($element) as $childName)
       foreach (element_children($element) as $childName)
         {
         {
         $child = _qbf_transform_element($childName, $element[$childName]);
         $child = _qbf_transform_element($childName, $element[$childName]);
-        if (!is_null($child))
+        if (is_null($child))
+          {
+          unset($ret[$childName]);
+          }
+        else
           {
           {
           $ret[$childName] = $child;
           $ret[$childName] = $child;
           }
           }