Index: includes/form.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/form.inc,v retrieving revision 1.128 diff -u -r1.128 form.inc --- includes/form.inc 5 Jul 2006 11:45:51 -0000 1.128 +++ includes/form.inc 18 Jul 2006 03:36:07 -0000 @@ -58,7 +58,7 @@ * An optional callback that will be used in addition to the form_id. * */ -function drupal_get_form($form_id, &$form, $callback = NULL) { +function drupal_get_form($form_id, &$form, $callback = NULL, $render = TRUE) { global $form_values, $form_submitted, $user, $form_button_counter; static $saved_globals = array(); @@ -145,28 +145,15 @@ } } - // Don't override #theme if someone already set it. - if (!isset($form['#theme'])) { - if (theme_get_function($form_id)) { - $form['#theme'] = $form_id; - } - elseif (theme_get_function($callback)) { - $form['#theme'] = $callback; - } + if ($render) { + $output = drupal_render_form($form_id, $form, $callback); + list($form_values, $form_submitted, $form_button_counter) = array_pop($saved_globals); + return $output; } - - if (isset($form['#pre_render'])) { - foreach ($form['#pre_render'] as $function) { - if (function_exists($function)) { - $function($form_id, $form); - } - } + else { + list($form_values, $form_submitted, $form_button_counter) = array_pop($saved_globals); + return $form; } - - $output = form_render($form); - // Restore globals - list($form_values, $form_submitted, $form_button_counter) = array_pop($saved_globals); - return $output; } function drupal_validate_form($form_id, $form, $callback = NULL) { @@ -207,6 +194,29 @@ return $goto; } +function drupal_render_form($form_id, &$form, $callback = NULL) { + // Don't override #theme if someone already set it. + if (!isset($form['#theme'])) { + if (theme_get_function($form_id)) { + $form['#theme'] = $form_id; + } + elseif (theme_get_function($callback)) { + $form['#theme'] = $callback; + } + } + + if (isset($form['#pre_render'])) { + foreach ($form['#pre_render'] as $function) { + if (function_exists($function)) { + $function($form_id, $form); + } + } + } + + $output = form_render($form); + return $output; +} + function _form_validate($elements, $form_id = NULL) { // Recurse through all children. foreach (element_children($elements) as $key) {