From 2076e518a9f903491f8e1d3b269fe7df85cc4984 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Sat, 23 Dec 2006 17:49:47 +0000 Subject: - Patch #104729 by dww et al: node_form_add_preview() destroys existing prefix values --- modules/node/node.module | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'modules/node/node.module') diff --git a/modules/node/node.module b/modules/node/node.module index 81f311db8..f301e635a 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -2046,8 +2046,17 @@ function node_form_add_preview($form) { if ($op == t('Preview')) { drupal_validate_form($form['form_id']['#value'], $form); if (!form_get_errors()) { - // We pass the global $form_values here to preserve changes made during form validation - $form['#prefix'] = node_preview((object)$form_values); + // Because the node preview may display a form, we must render it + // outside the node submission form tags using the #prefix property + // (i.e. to prevent illegally nested forms). + // If the node form already has a #prefix, we must preserve it. + // In this case, we put the preview before the #prefix so we keep + // the #prefix as "close" to the rest of the form as possible, + // for example, to keep a
only around the form, not the + // preview. We pass the global $form_values here to preserve + // changes made during form validation. + $preview = node_preview((object)$form_values); + $form['#prefix'] = isset($form['#prefix']) ? $preview . $form['#prefix'] : $preview; } } if (variable_get('node_preview', 0) && (form_get_errors() || $op != t('Preview'))) { -- cgit v1.2.3