The ides of this patch is to have a dedicated page which will turn into a menu bar for the whole site.
Having a page called "Menu" with this content:
---------------------- .../wiki.pl?Menu * Home * Topic1 * Topic2 ** Subtopic1 ** Subtopic2 * Topic3 ----------------------
With the right style sheet, this will turn into a top menu like this: (Subtopics don't show, they are drop down menus; learn it e.g. here: http://www.alistapart.com/articles/hybrid/ )
+---------------------- | Home Topic1 Topic2 Topic3 | | = WikiPage = | | ...content... | ... +----------------------
Source code, applied to UseMod-1.0.4:
sub GetHtmlHeader {
[...]
if ($BGColor ne '') {
$bodyExtra .= qq( BGCOLOR="$BGColor");
}
$html .= "</HEAD><BODY$bodyExtra>\n";
+ $html .= GetMenuText();
+
return $html;
}
+sub GetMenuText {
+ my ($fname, $data);
+ my (%MenuText, %MenuPage, %MenuSection);
+
+ # %Section = ();
+ %MenuText = ();
+ $fname = &GetPageFile("Menu");
+ if (-f $fname) {
+ $data = &ReadFileOrDie($fname);
+ %MenuPage = split(/$FS1/, $data, -1); # -1 keeps trailing null fields
+ } else {
+ return "";
+ }
+
+ my ($name) = "default";
+
+ if (!defined($MenuPage{"text_default"})) {
+ return "";
+ } else {
+ if (!defined($MenuPage{"text_default"})) {
+ return "";
+ } else {
+ %MenuSection = split(/$FS2/, $MenuPage{"text_default"}, -1);
+ }
+ %MenuText = split(/$FS3/, $MenuSection{'data'}, -1);
+ }
+
+ return "<div class=menu id=menu>" . &WikiToHTML($MenuText{'text'}) . "</div>\n";
+}
+
sub GetFooterText {
my ($id, $rev) = @_;
my $result;
[...]
See it in action here: http://www.mustard-seed-faith.de and http://www.sweet-chariot.de Both Wikis are used as community sites to registered users, and appear as a web site to the outside (you).