Index: node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node.module,v
retrieving revision 1.410.2.2
diff -U3 -r1.410.2.2 node.module
--- node.module 29 Oct 2004 00:51:38 -0000 1.410.2.2
+++ node.module 30 Oct 2004 18:42:36 -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('
Check 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('Check which node options should be preserved during editing. Leaving a checkbox empty means that option is restored to its default creation setting as shown above. Users with "administer nodes" permission can override these settings.
');
+ $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)) ? $node->status : variable_get("node_status_$node->type", 1);
+ $node->promote = (variable_get("node_promote_edit_$node->type", 1)) ? $node->promote : variable_get("node_promote_$node->type", 1);
+ $node->sticky = (variable_get("node_sticky_edit_$node->type", 1)) ? $node->sticky : variable_get("node_sticky_$node->type", 1);
+ $node->moderate = (variable_get("node_moderate_edit_$node->type", 1)) ? $node->moderate : variable_get("node_moderate_$node->type", 1);
+ }
$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');
@@ -1164,6 +1197,12 @@
$extras .= implode('' : '';
}
+ else if ($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);
+ }
// Add the default fields.
$output .= '';