summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/node.module14
-rw-r--r--modules/node/node.module14
2 files changed, 26 insertions, 2 deletions
diff --git a/modules/node.module b/modules/node.module
index 836cb2a35..557251781 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -724,6 +724,11 @@ function node_menu($may_cache) {
return $items;
}
+function node_last_changed($nid) {
+ $node = db_fetch_object(db_query('SELECT changed FROM {node} WHERE nid = %d', $nid));
+ return ($node->changed);
+}
+
/**
* Generate the content administration overview.
*/
@@ -1083,6 +1088,10 @@ function node_validate($node) {
$node->teaser = node_teaser($node->body);
}
+ if (node_last_changed($node->nid) > $node->changed) {
+ form_set_error('changed', t('This content has been modified by another user, unable to save changes.'));
+ }
+
// Create a new revision when required.
$node = node_revision_create($node);
@@ -1221,6 +1230,10 @@ function node_form($edit) {
$output .= form_hidden('created', $edit->created);
}
+ if ($edit->changed) {
+ $output .= form_hidden('changed', $edit->changed);
+ }
+
$output .= form_hidden('type', $edit->type);
// Add the buttons.
@@ -1353,7 +1366,6 @@ function node_preview($node) {
if (empty($node->created)) {
$node->created = time();
}
- $node->changed = time();
// Extract a teaser, if it hasn't been set (e.g. by a module-provided
// 'teaser' form item).
diff --git a/modules/node/node.module b/modules/node/node.module
index 836cb2a35..557251781 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -724,6 +724,11 @@ function node_menu($may_cache) {
return $items;
}
+function node_last_changed($nid) {
+ $node = db_fetch_object(db_query('SELECT changed FROM {node} WHERE nid = %d', $nid));
+ return ($node->changed);
+}
+
/**
* Generate the content administration overview.
*/
@@ -1083,6 +1088,10 @@ function node_validate($node) {
$node->teaser = node_teaser($node->body);
}
+ if (node_last_changed($node->nid) > $node->changed) {
+ form_set_error('changed', t('This content has been modified by another user, unable to save changes.'));
+ }
+
// Create a new revision when required.
$node = node_revision_create($node);
@@ -1221,6 +1230,10 @@ function node_form($edit) {
$output .= form_hidden('created', $edit->created);
}
+ if ($edit->changed) {
+ $output .= form_hidden('changed', $edit->changed);
+ }
+
$output .= form_hidden('type', $edit->type);
// Add the buttons.
@@ -1353,7 +1366,6 @@ function node_preview($node) {
if (empty($node->created)) {
$node->created = time();
}
- $node->changed = time();
// Extract a teaser, if it hasn't been set (e.g. by a module-provided
// 'teaser' form item).