[Home]WikiPatches/AnnoyingQuote

UseModWiki | WikiPatches | RecentChanges | Preferences

This is an implementation of the WikiPatches/AnnoyingQuote feature of other Wikis. This follows on from the discussion on MeatBall:FortuneCookie.

This works, by saving the last line of the specified page (by default called WikiPatches/AnnoyingQuote) in the specified file (by default /home/httpd/wiki/motd). This is then read and inserted in the page if the tag :MOTD: is found.

The following patch is for UseMod 0.92. -- KevinTaylor


31d30
< 
49c48
<   $UserGotoBar $MOTDPattern $MOTDFile $MOTDPage);
---
>   $UserGotoBar);
123,124d121
< $MOTDFile    = '/home/httpd/wiki/motd';
< $MOTDPage    = 'AnnoyingQuote';
238d234
<   $MOTDPattern = ":MOTD:";
1228d1223
< 	s/$MOTDPattern/&StoreMOTD($1)/geo;
1464,1477d1458
< sub StoreMOTD {
<   my ($val) = @_;
< 
<   open MOTD, $MOTDFile or return "<small><em>ERROR: Cannot open motd file.</em></small>";
<   
<   my $line = <MOTD>;
<   close MOTD;
<   if ($line eq "")
<   {
<      return "<small><em>None.</em></small>";
<   }
<   return "<small><em>$line</em></small>";
< }
< 
3320,3324d3300
< 
<   if ($id =~ m/^$MOTDPage$/)
<   {
<      &saveMotd($Text{'text'});
<   }
4063,4080c4039
< 
< sub saveMotd
< {
<    my ($text) = @_;
< 
<    unless (open MOTD, ">$MOTDFile")
<    {
<       return undef;
<    }
< 
<    if ($text =~ m/\n(.*?)$/)
<    {
<       # Save text between last \n and end of page
<       print MOTD $1;
<    }
< 
<    close MOTD;
< }
---
> #END_OF_OTHER_CODE


Actaully, if you add in the line:


   $text =~ s/[\n\r]*$//mg;

before the m// line in saveMotd, then it gobbles up empty lines at the end of the page too.


UseModWiki | WikiPatches | RecentChanges | Preferences
Edit text of this page | View other revisions | Search MetaWiki
Last edited July 18, 2009 2:29 pm by JuanmaMP (diff)
Search: