Index: modules/node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node.module,v retrieving revision 1.641.2.2 diff -u -p -r1.641.2.2 node.module --- modules/node.module 1 May 2006 10:45:13 -0000 1.641.2.2 +++ modules/node.module 7 May 2006 08:15:51 -0000 @@ -1682,18 +1682,37 @@ function theme_node_form($form) { $output .= form_render($form['node_preview']); } + // Admin form fields and submit buttons must be rendered first, because + // they need to go to the bottom of the form, and so should not be part of + // the catch-all call to form_render(). + $admin = ''; + if (isset($form['author'])) { + $admin .= '
'; + $admin .= form_render($form['author']); + $admin .= '
'; + } + if (isset($form['options'])) { + $admin .= '
'; + $admin .= form_render($form['options']); + $admin .= '
'; + } + $buttons = form_render($form['preview']); + $buttons .= form_render($form['submit']); + $buttons .= isset($form['delete']) ? form_render($form['delete']) : ''; + + // Everything else gets rendered here, and is displayed before the admin form + // field and the submit buttons. $output .= '
'; $output .= form_render($form); $output .= '
'; - $output .= '
'; - $output .= '
'; - $output .= form_render($form['author']); - $output .= '
'; - $output .= '
'; - $output .= form_render($form['options']); - $output .= '
'; - $output .= '
'; - $output .= ''; + + if (!empty($admin)) { + $output .= '
'; + $output .= $admin; + $output .= '
'; + } + $output .= $buttons; + return $output; }