Index: modules/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node.module,v
retrieving revision 1.409
diff -U3 -r1.409 node.module
--- modules/node.module 12 Oct 2004 20:01:25 -0000 1.409
+++ modules/node.module 14 Oct 2004 21:32:56 -0000
@@ -805,18 +805,40 @@
drupal_set_message(t('The content settings have been reset to their default values.'));
}
- $header = array_merge(array(t('type')), array_keys(node_invoke_nodeapi($node, 'settings')));
+ $edit_settings = array(
+ 'publish' => 'node_status_edit_',
+ 'promote' => 'node_promote_edit_',
+ 'moderate' => 'node_moderate_edit_',
+ 'sticky' => 'node_sticky_edit_'
+ );
+
+ $create_header = array_merge(array(t('type')), array_keys(node_invoke_nodeapi($node, 'settings')));
+ $edit_header = array_merge(array(t('type')), array_keys($edit_settings));
foreach (node_list() as $type) {
$node = new StdClass();
$node->type = $type;
- $cols = array();
+ $create_cols = array();
foreach (node_invoke_nodeapi($node, 'settings') as $setting) {
- $cols[] = array('data' => $setting, 'align' => 'center', 'width' => 55);
+ $create_cols[] = array('data' => $setting, 'align' => 'center', 'width' => 55);
}
- $rows[] = array_merge(array(node_invoke($node, 'node_name')), $cols);
+ $create_rows[] = array_merge(array(node_invoke($node, 'node_name')), $create_cols);
+
+ $edit_cols = array();
+ foreach ($edit_settings as $option => $varname) {
+ $varname = $varname. $type;
+ $edit_cols[] = array('data' => form_checkbox('', $varname, 1, (variable_get($varname, 0)) ? true : false), 'align' => 'center', 'width' => 55);
+ }
+ $edit_rows[] = array_merge(array(node_invoke($node, 'node_name')), $edit_cols);
+
}
+ $group = theme('table', $create_header, $create_rows);
+ $help = t('
Choose which options are assigned to new nodes.
');
+ $output .= form_group(t('Creation settings'), $help. $group);
- $output .= theme('table', $header, $rows);
+
+ $group = theme('table', $edit_header, $edit_rows);
+ $help = t('Choose which node options are preserved during editing.
');
+ $output .= form_group(t('Editing options'), $help. $group);
$output .= form_submit(t('Save configuration'));
$output .= form_submit(t('Reset to defaults'));
@@ -1051,9 +1073,6 @@
$node->teaser = node_teaser($node->body);
}
- // Create a new revision when required.
- $node = node_revision_create($node);
-
if (user_access('administer nodes')) {
// Set up default values, if required.
if (!$node->created) {
@@ -1088,16 +1107,30 @@
}
else {
// Validate for normal users:
- $node->uid = $user->uid ? $user->uid : 0;
- // Force defaults in case people modify the form:
- $node->status = variable_get("node_status_$node->type", 1);
- $node->promote = variable_get("node_promote_$node->type", 1);
- $node->moderate = variable_get("node_moderate_$node->type", 0);
- $node->sticky = variable_get("node_sticky_$node->type", 0);
+ $node->uid = ($node->uid >= 0) ? $node->uid : $user->uid;
+
+ if (!$node->nid) {
+ // Force defaults:
+ $node->status = variable_get("node_status_$node->type", 1);
+ $node->promote = variable_get("node_promote_$node->type", 1);
+ $node->sticky = variable_get("node_sticky_$node->type", 0);
+ $node->moderate = variable_get("node_moderate_$node->type", 0);
+ }
+ else {
+ // Determine if the settings are preserved for nodes that exist.
+ $node->status = (variable_get("node_status_edit_$node->type", 1)) ? variable_get("node_status_$node->type", 1) : $node->status;
+ $node->promote = (variable_get("node_promote_edit_$node->type", 1)) ? variable_get("node_promote_$node->type", 1) : $node->promote;
+ $node->sticky = (variable_get("node_sticky_edit_$node->type", 1)) ? variable_get("node_sticky_$node->type", 1) : $node->sticky;
+ $node->moderate = (variable_get("node_moderate_edit_$node->type", 1)) ? variable_get("node_moderate_$node->type", 1) : $node->moderate;
+ }
$node->revision = variable_get("node_revision_$node->type", 0);
+
unset($node->created);
}
+ // Create a new revision when required.
+ $node = node_revision_create($node);
+
// Do node-type-specific validation checks.
node_invoke($node, 'validate');
node_invoke_nodeapi($node, 'validate');
@@ -1175,6 +1208,10 @@
// Add the hidden fields.
if ($edit->nid) {
$output .= form_hidden('nid', $edit->nid);
+ $output .= form_hidden('status', $edit->status);
+ $output .= form_hidden('moderate', $edit->moderate);
+ $output .= form_hidden('promote', $edit->promote);
+ $output .= form_hidden('sticky', $edit->sticky);
}
if (isset($edit->uid)) {