|
@@ -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;
|
|
}
|
|
}
|