Delta Bytes in Recent Changes

Summary: Display the number of bytes (characters) added or deleted to a page in RecentChanges.
Version: 24 February 2007
Prerequisites:
Status:
Maintainer: Petko
License: PD

Note: A feature like the one described in this page will be included in PmWiki 2.2.119. To enable it, see $EnableRCDiffBytes.

How can the RecentChanges pages display the amount of bytes (characters) added or deleted to a page? Like it is done in Wikipedia?

Description

Display the number of bytes (characters) added or deleted to a page in RecentChanges.

You can use such a function (add it in your (farm)config.php):

# before 2.3.24: 
# array_unshift($EditFunctions, "DeltaPageSize");
# since 2.3.24: 
InsertEditFunction("DeltaPageSize", '>SaveChangeSummary');
function DeltaPageSize($pagename,&$page,&$new)
{
  global $EnablePost, $ChangeSummary, $Now;
  if (!$EnablePost) return;
  $delta = strlen($new['text']) - strlen($page['text']);
  if($delta>0) $delta = "+$delta";
  $new['csum'] .= " ($delta)";
  $new["csum:$Now"] .= " ($delta)";
  $ChangeSummary .= " ($delta)";
}

A sample output of this recipe would be:

Variant with colored delta numbers

This variant displays important deletions in red, important additions in green and in bold.

# before 2.3.24: 
# array_unshift($EditFunctions, "DeltaPageSize");
# since 2.3.24: 
InsertEditFunction("DeltaPageSize", '>SaveChangeSummary');
function DeltaPageSize($pagename,&$page,&$new)
{
   global $EnablePost, $ChangeSummary, $Now;
   if (!$EnablePost) return;
   $delta = strlen($new['text']) - strlen($page['text']);
   $span = $_span = $bold = '';
   if(abs($delta) > 500 )$bold = "'''";
   if($delta<-500) $span="purple";
   elseif($delta<-100)$span="red";
   elseif($delta==0) $span="gray";
   elseif($delta>100)$span="green";
   if($span){$span="=]%$span%"; $_span="%%[=";}
   if($delta>0) $delta = "+$delta";
   $new['csum'] .= " ($delta)";
   $new["csum:$Now"] .= " ($delta)";
   $ChangeSummary .= " ($span$bold$delta$bold$_span)";
}

Notes

  • This will append (±Number) to the $ChangeSummary variable. That is, no additional page variables, but the change summary will always be modified (and exist).

Release Notes

  • Drafted on 2007-02-24

See Also

Contributors

Comments

See discussion at DeltaBytesRecentChanges-Talk

User notes +1: If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.