[Home]BlogUsingSubPages

UseModWiki | RecentChanges | Preferences

Description

This allows a simple blog mechanism to be used.

Use it like this:

 <wikiblog title="Most Recent 5 Entries in My Daily Diary" number="5" reverse="0">FredDagg</wikiblog>

The use of FredDagg is so that the subpages are created underneath this main page. They all have the format .20040130Fri

Update all dates to include the Day of the Week.

This also adds a generic function for delivering another page from inside any other.

--MarkButler


Comments


The Mod

--- wiki.1.0.0.pl	Thu Sep 12 10:53:14 2002
+++ wikipatch.BlogUsingSubPages.pl	Fri Jan 30 15:11:26 2004
@@ -1567,6 +1567,7 @@
   $SaveUrlIndex = 0;
   $SaveNumUrlIndex = 0;
   $pageText = &RemoveFS($pageText);
+  $pageText .= "\n" ;
   if ($RawHtml) {
     $pageText =~ s/<html>((.|\n)*?)<\/html>/&StoreRaw($1)/ige;
   }
@@ -1598,6 +1599,87 @@
   return &RestoreSavedText($pageText);
 }
 
+sub WikiFileToHTML {
+  my ($fileName) = @_;
+  my ($output, $fileData, %tempPage, %tempSection, %tempText);
+  my ($mySaveUrlIndex, $mySaveNumUrlIndex, $myTableMode, %mySaveUrl, %mySaveNumUrl);
+
+  if (-f $fileName) {
+    $fileData = &ReadFileOrDie($fileName);
+    %tempPage = split(/$FS1/, $fileData, -1);
+    %tempSection = split(/$FS2/, $tempPage{'text_default'}, -1);
+    %tempText = split(/$FS3/, $tempSection{'data'}, -1);
+    # Global variables do not help this code. Nasty, but easiest solution.
+    %mySaveUrl= %SaveUrl;
+    %mySaveNumUrl= %SaveNumUrl;
+    $mySaveUrlIndex= $SaveUrlIndex;
+    $mySaveNumUrlIndex = $SaveNumUrlIndex;
+    $myTableMode= $TableMode;
+
+    $output = &WikiToHTML($tempText{'text'});
+    
+    %SaveUrl = %mySaveUrl;
+    %SaveNumUrl = %mySaveNumUrl;
+    $SaveUrlIndex = $mySaveUrlIndex;
+    $SaveNumUrlIndex = $mySaveNumUrlIndex;
+    $TableMode = $myTableMode;
+  }
+  return $output;
+}    
+
+sub WikiBlogToHTML {
+  my ($pageTitle, $rawAttributes) = @_;
+  my ($pageHtml, $blogListHtml, $blogFile, $blogFileName, $blogDate, $pageDir, $pageFileBase, @blogFileList);
+  my ($title, $reverse, $number, $yearmonth, $search);
+
+  if ($rawAttributes =~ m/reverse\s*?=\s*?[\'\"]?([\d]*)[\'\"]?/i) { $reverse = $1; }
+  if ($rawAttributes =~ m/title\s*?=\s*?[\'\"]?([\d\w\s\(\)\-\.\,]*)[\'\"]?/i) { $title = $1; }
+  if ($rawAttributes =~ m/number\s*?=\s*?[\'\"]?([\d]*)[\'\"]?/i) { $number = $1; }
+  if ($rawAttributes =~ m/yearmonth\s*?=\s*?[\'\"]?([\d\\d]*)[\'\"]?/i) { $yearmonth = $1; }
+  $search = ($yearmonth) ? qq(\.*$pageTitle\\\/\\\.$yearmonth\\d\{2\}\\w\{3\}.db) : qq(\.\*$pageTitle\\\/\\\.\\d\{8\}\\w\{3\}.db);
+  $pageDir = $PageDir . "/" . &GetPageDirectory($pageTitle);
+  $pageFileBase = $pageDir . "/" . $pageTitle;
+  my ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime($Now);
+  my $todaysFileName = $pageFileBase . sprintf("/.%04d%02d%02d%3s.db", $year+1900, 
+           $mon+1, $mday, ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")[$wday]);
+  if (-f $pageFileBase . ".db") {
+    if ($todaysFileName =~ m/$search/) {
+      push(@blogFileList, $todaysFileName);
+    }
+    foreach $blogFile (glob("$pageFileBase/.*.db")) {
+      if ($blogFile =~ m/$search/) {
+        push(@blogFileList, $blogFile) if ($blogFile ne $todaysFileName);
+      }
+    }
+    $title = ($title) ? $title : "Blog for " . $pageTitle;
+    $pageHtml .= "\n<hr class=wikilineblog>\n";
+    $pageHtml .= "\t<div class='wikiblogtitle'><h1>" . &GetPageLinkText($pageTitle, $title) . "</h1></div>\n";
+    $pageHtml .= "\t<div class='wikiblog'>\n";
+
+    BLOG: foreach $blogFile (sort reverse @blogFileList) {
+      if (defined $number) {
+        $number--;
+        next BLOG if (($number < 0) && ($blogFile ne $todaysFileName));
+      }
+      $blogFileName = $blogFile;
+      $blogFileName =~ s/^.*($pageTitle\/\.(\d{4})(\d{2})(\d{2})(\w{3})).db$/$1/;
+      my $blogHtml = "\t\t<div class='wikiblogentrytitle'><h2>" . 
+        &GetEditLink($blogFileName, sprintf("%3s, %04d/%02d/%02d", $5, $2, $3, $4)) . "</h2></div>\n";
+      $blogHtml .= "\t\t<div class='wikiblogentry'>\n";
+
+      $blogHtml .= &WikiFileToHTML($blogFile);
+
+      $blogHtml .= "\t\t</div><hr class=wikilineblog>\n";
+      $blogListHtml = ($reverse) ? $blogListHtml . $blogHtml : $blogHtml . $blogListHtml;
+    }
+    $pageHtml .= $blogListHtml;
+    $pageHtml .= "</div>\n";
+  } else {
+    $pageHtml .= Ts('Error: Master page for the blog "%s" does not exists. Please create it: ', $pageTitle) . &GetEditLink($pageTitle, $pageTitle);
+  }
+  return $pageHtml;
+}
+
 sub CommonMarkup {
   my ($text, $useImage, $doLines) = @_;
   local $_ = $text;
@@ -1627,6 +1709,7 @@
       s/\<strong\>(.*?)\<\/strong\>/<strong>$1<\/strong>/gi;
       s/\<em\>(.*?)\<\/em\>/<em>$1<\/em>/gi;
     }
+    s/\<wikiblog(.*?)\>(.*?)\<\/wikiblog\>/&StoreRaw(&WikiBlogToHTML($2, $1))/gise;
     s/\<tt\>(.*?)\<\/tt\>/<tt>$1<\/tt>/gis;  # <tt> (MeatBall)
     s/\<br\>/<br>/gi;  # Allow simple line break anywhere
     if ($HtmlLinks) {
@@ -2977,11 +3060,12 @@
   my ($ts) = @_;
 
   $ts += $TimeZoneOffset;
-  my ($sec, $min, $hour, $mday, $mon, $year) = localtime($ts);
+  my ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime($ts);
   if ($NumberDates) {
     return ($year + 1900) . '-' . ($mon+1) . '-' . $mday;
   }
-  return ("January", "February", "March", "April", "May", "June",
+  return ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
+          "Saturday")[$wday]. ", " . ("January", "February", "March", "April", "May", "June",
           "July", "August", "September", "October", "November",
           "December")[$mon]. " " . $mday . ", " . ($year+1900);
 }

UseModWiki | RecentChanges | Preferences
Edit text of this page | View other revisions | Search MetaWiki
Last edited March 8, 2010 6:47 pm by MarkusLude (diff)
Search: