diff -Naur diff.orig/diff.module diff/diff.module
--- diff.orig/diff.module 2005-05-05 21:20:37.000000000 +0300
+++ diff/diff.module 2007-01-29 11:59:48.000000000 +0200
@@ -1,4 +1,4 @@
-
* This module is distributed under the GPL.
-*/
+ * 4.7 port by Mohammed Sameer for eglug.org
+ */
include_once 'Text/Diff.php';
include_once 'Text/Diff/Renderer.php';
@@ -36,21 +37,23 @@
if (!$may_cache) {
if (arg(0) == 'node' && is_numeric(arg(1))) {
- $node = node_load(array('nid' => arg(1)));
+ $node = node_load(arg(1));
if ($node->nid) {
- if ($node->revisions) {
- $items[] = array('path' => 'node/'. arg(1) .'/diff', 'title' => t('diff'),
- 'callback' => 'diff_page',
- 'callback arguments' => arg(1),
- 'access' => user_access('access diff'),
- 'weight' => 6,
- 'type' => MENU_LOCAL_TASK);
+ if ($node->vid > 1) {
+ $items[] = array('path' => 'node/'. arg(1) .'/diff',
+ 'title' => t('diff'),
+ 'callback' => 'diff_page',
+ 'callback arguments' => arg(1),
+ 'access' => user_access('access diff'),
+ 'weight' => 6,
+ 'type' => MENU_LOCAL_TASK);
}
}
}
- $path = drupal_get_path('module', 'diff');
$style = "";
drupal_set_html_head($style);
+ // $path = drupal_get_path('module', 'diff');
+ // drupal_add_css($path.'/diff.css');
}
return $items;
}
@@ -69,11 +72,11 @@
function _diff_show_revision($nid, $rid1, $rid2 = NULL) {
- $r1 = node_load(array('nid' => $nid), $rid1);
- $r2 = node_load(array('nid' => $nid), $rid2);
+ $r1 = node_load($nid, $rid1);
+ $r2 = node_load($nid, $rid2);
$source = explode("\n", diff_node_render($r2));
$target = explode("\n", diff_node_render($r1));
- $diff = &new Text_Diff($target, $source);
+ $diff = &new Text_Diff($source, $target);
$renderer = &new Text_Diff_Renderer_inline();
$node = $r1;
$node->body = $renderer->render($diff);
@@ -81,21 +84,32 @@
}
function _diff_show_page($nid) {
- $node = node_load(array('nid' => $nid));
+ $node = node_load($nid);
drupal_set_title($node->title);
+ $revisions = array_reverse(node_revision_list($node));
+
$header = array(t('Older revisions'), array('data' => t('Operations'), 'colspan' => 3));
- // $last_key = count($node->revisions) - 1;
- foreach ($node->revisions as $key => $revision) {
+
+ foreach ($revisions as $key => $revision) {
+ $vid = $revision->vid;
if ($key != 0) {
- $prev = l(t('previous'), "node/$node->nid/diff/$key/".($key-1));
- $first = l(t('first'), "node/$node->nid/diff/$key/0");
+ $prev = l(t('previous'), "node/$node->nid/diff/$vid/".( $revisions[$key-1]->vid ));
+ $first = l(t('first'), "node/$node->nid/diff/$vid/" .($revisions[0]->vid));
}
- $current = l(t('current'), "node/$node->nid/diff/$key");
- $rows[] = array(t('revision #%r revised by %u on %d', array('%r' => $key, '%u' => format_name(user_load(array('uid' => $revision['uid']))), '%d' => format_date($revision['timestamp'], 'small'))) . ($revision['history'] ? '
'. $revision['history'] .'' : ''), $prev, $first, $current);
+ $current = l(t('current'), "node/$node->nid/diff/$vid");
+ $rows[] = array(
+ t('revision %r (%v) revised by %u on %d',
+ array(
+ '%r' => 1 + $key,
+ '%v' => $vid,
+ '%u' => theme('username', user_load(array('uid' => $revision->uid))),
+ '%d' => format_date($revision->timestamp, 'small')
+ )
+ ) . ($revision->history ? '
'. $revision->history .'' : ''),
+ $prev, $first, $current);
}
- $output .= theme('table', $header, $rows);
- return $output;
+ return theme('table', $header, $rows);
}
// Get node *body* output (filtered and with module-specific fields). Modified from node_update_index()