# ========================= sub commonTagsHandler { ### my ( $text, $topic, $web ) = @_; # do not uncomment, use $_[0], $_[1]... instead # Diff utility to compare docs $_[0] =~ s/%TWIKIDOCDIFF{(.*?)}%/twikiDocDiffHandler( $1, $_[2] )/geo; } # ========================= sub twikiDocDiffHandler { my ( $args, $web ) = @_; my $topic = $TWiki::includingTopicName; # CODE_SMELL: unofficial code reference my $text = ""; if( $args eq "diff" ) { my $diffCmd = "/usr/bin/diff -b -C5 -u"; my $dataDir = TWiki::Func::getDataDir(); my $betaDataDir = "/home/beta/data"; unless( -e "$betaDataDir/$web/$topic.txt" ) { return "Error: Topic does not exist in TWiki Beta."; } my $diff = `$diffCmd $betaDataDir/$web/$topic.txt $dataDir/$web/$topic.txt`; $diff =~ s/[\n\r]+/\n/gos; $diff =~ s/^(.)/\n$1/gos; $diff =~ s/\&/&/go; $diff =~ s/\/>/go; $diff =~ s/\%/%/go; $diff =~ s/\*/*/go; $diff =~ s/\:/:/go; $diff =~ s/\=/=/go; $diff =~ s/\_/_/go; $diff =~ s/\\/\/go; $diff =~ s/\[/[/go; $diff =~ s/\]/]/go; $diff =~ s/\|/|/go; $diff =~ s/([\s\(])([A-Z])/$1$2/go; # defuse WikiWord links $diff =~ s/\t/   /go; $diff =~ s/\n(\-)([^\n]*)/\n%RED%$2%ENDCOLOR%/go; $diff =~ s/\n(\+)([^\n]*)/\n%GREEN%$2%ENDCOLOR%/go; $diff =~ s/\n(\@)([^\n]*)/\n%BLUE%$1$2<\/b>%ENDCOLOR%/go; $diff =~ s/\@/@/go; $diff =~ s/^\n//gos; $diff =~ s/\n/
\n/gos; $text .= "$diff"; } elsif( TWiki::Access::userIsInGroup( TWiki::Func::userToWikiName( $user ), "TWikiAdminGroup" ) ) { my $time = time(); $text = "
TWiki Beta topic . { "; $text .= "View | "; $text .= "Edit | "; $text .= "Diff"; $text .= " }"; } else { $text .= "."; } return $text; } # =========================