標準のDrupalインストールでは、「保留中」のリビジョンを作成できません。次の2つのオプションがあります。
- プログラムで新しいリビジョンを作成しますが、プログラムで元のリビジョンに戻します(これにより、さらに新しいリビジョンが作成されますが、元のコンテンツが含まれています)。
- (推奨)バージョン管理やアクセス制御のためのよく考えられたソリューションであるワークベンチのモデレーション、リビジョン、またはワークフローを使用します。
オプション1の場合:このコードを新しいルールとして追加するか、新しいモジュールで使用できます。
<?php
// Programatically load the existing revision and save it
// Taken from http://api.drupal.org/api/drupal/modules!node!node.module/function/node_save/7
// Load the revision
$original_revision = node_load($nid);
$original_revision->revision = 1;
$original_revision->log = t('Copy of the revision from %date.', array('%date' => format_date($original_revision->revision_timestamp)));
$new_revision = node_load($nid);
// Make any changes to the new revision here...
$new_revision->revision = 1;
$new_revision->log = t('Summarize your changes here');
// Save the new revision first
node_save($new_revision);
// Save the original one again so that it is still the current revision
node_save($original_revision);
watchdog('content', '@type: reverted %title revision %revision.', array('@type' => $node_revision->type, '%title' => $node_revision->title, '%revision' => $node_revision->vid));
drupal_set_message(t('@type %title was saved with a new revision, but reverting to original revision from %revision-date.', array('@type' => node_type_get_name($node_revision), '%title' => $node_revision->title, '%revision-date' => format_date($node_revision->revision_timestamp))));
drupal_goto('node/' . $node_revision->nid . '/revisions');
?>
オプション2の場合:リビジョンやワークフローよりもワークベンチをお勧めしますが、それぞれニーズに応じて異なります。Workbenchは、Revisioningの後継の一種であり、Workflowは単なるバージョン管理以上のものなので、ニーズに適している場合とそうでない場合があります。
ここでは、WorkbenchとWorkflowの違いについて簡単に説明します。