/[pub]/suikawiki/script/default/suikawiki-config.ph
Suika

Diff of /suikawiki/script/default/suikawiki-config.ph

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by wakaba, Thu Mar 27 06:16:35 2003 UTC revision 1.15 by wakaba, Sat Mar 13 13:17:47 2004 UTC
# Line 1  Line 1 
1    =head1 NAME
2    
3    suikawiki-config.ph - SuikaWiki: Configuration for SuikaWiki HTTP CGI Driver
4    
5    =head1 DESCRIPTION
6    
7    This is a configuration file for SuikaWiki Driver for HTTP CGI Script
8    (SWHCS).  Basic options such as WikiDB directory mapping and
9    special purpose WikiPage names can be customized with this file.
10    
11    More complex customizing, e.g. modifying navigation bar or
12    adding new mode, is also possible by config.ph (generated from
13    config.wp2) and WikiPlugin modules.  For more information,
14    see <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>.
15    
16    This file is part of SuikaWiki.
17    
18    =cut
19    
20    package wiki::driver::http;
21  use strict;  use strict;
22    
23  ## URI (or part of URI) of Wiki CGI itself and its external addons    ## These lines should be removed after utf8 support
24    our %uri = (    BEGIN {
25      cookie_path => '/temp/wiki/',      $Message::Util::Formatter::Base::Token = qr/[\w._+\x80-\xFF-]+/;
26      external_script     => 'script/',      require Message::Util::Formatter::Base;
   );  
   our $url_cgi; {  
     my $scheme = 'http';  
     $scheme = lc $1 if $main::ENV{SERVER_PROTOCOL} =~ m#([A-Za-z0-9+.%-]+)#;  
     $url_cgi = "$scheme://$main::ENV{SERVER_NAME}:$main::ENV{SERVER_PORT}$uri{cookie_path}wiki";  
       ## - MUST NOT include [&<>"] and/or non-URI characters  
27    }    }
   $uri{wiki} = $url_cgi;  
28    
29  ## Path to modules and databases  use Message::Util::Error;
   use lib qw!lib!;  
   $SuikaWiki::Plugin::plugin_directory = q(lib/SuikaWiki/Plugin/);  
   our %PathTo = (       ## Path to your data, from the main CGI script (NOT from this config script)  
     CacheHeadline       => q(./wikidata/.headline.cache),  
     CachePrefix         => q(./wikidata/.cache.),  
     CacheSearchResult   => q(./wikidata/.search.cache),  
     WikiDataBase        => q(./wikidata/page),  
   );  
   
 ## Type of WikiPage Database  
   #our $modifier_dbtype = 'AnyDBM_File';  # Fast, not available on some server, page size limited.  
   #our $modifier_dbtype = 'dbmopen';      # Fast, not available on some server, page size limited.  
   #our $modifier_dbtype = 'Yuki::YukiWikiDB';     # Slow, available on all environment.  
   #our $modifier_dbtype = 'Yuki::YukiWikiDB2';     # Slow, available on all environment.  
   our $modifier_dbtype = 'Yuki::YukiWikiDBMeta';     # Slow, available on all environment.  
   our $use_exists = 1; # If you can use 'exists' method for your DB.  
   
 ## Name of Special WikiPage (linked as parts of navigations)  
   our %PageName = (  
     FrontPage   => 'HomePage',  
     IndexPage   => 'IndexPage',  
     SearchPage  => 'SearchPage',  
     CreatePage  => 'CreatePage',  
     ErrorPage   => 'ErrorPage',  
     RecentChanges       => 'RecentChanges',  
     AdminSpecialPage    => "\x11\x11Admin\x11Special\x11Page\x11\x11",  
     UserAgentList       => 'WikiUserAgentList',  
   );  
   
 ## (Should be reimplemented)  
   our $kanjicode = 'euc';  
   our $lang = 'ja';  
   $wiki::useragent::UseLog = 0; ## Use User-Agent name log (WikiUserAgentList) or not  
   
 ## Misc. options  
   $wiki::diff::UseDiff = 1;     ## Use diff mode or not  
   
 ## Namespace of WikiName  
 package wiki::page::ns;  
   our $delimiter = '//';  
   our $self = '.';  
   our $parent = '..';  
 package main;  
   
 ## Definition of views  
   
 my %vd;  
 $vd{links} = <<'EOH';  
   %styles-wiki-html(page=>\"WikiStyleList:HTML\");  
   %link-wiki(mode=>edit,rel=>edit,class=>wiki-cmd,title=>\"%res(name=>EditThisPageLink);\");  
   %link-wiki(mode=>edit,rel=>edit,class=>wiki-cmd,title=>\"%res(name=>AdminEditThisPageLink);\",add_param=>\"admin=1\");  
   %link-wiki(rel=>view,class=>wiki-cmd,title=>\"%res(name=>ViewThisPageLink);\",up_to_date);  
   %link-wiki(rel=>myself,class=>wiki,title=>\"%res(name=>GoToMyselfLink);\");  
   %link-wiki(page=>IndexPage,rel=>index,class=>wiki,title=>\"%res(name=>GoToIndexPageLink);\");  
   %link-wiki(page=>HomePage,rel=>home,class=>wiki,title=>\"%res(name=>GoToHomePageLink);\");  
   %link-wiki(page=>WikiNews,rel=>News,class=>wiki,title=>\"%res(name=>GoToWikiNewsLink);\");  
   %link-wiki(page=>RecentChanges,rel=>News,class=>wiki,title=>\"%res(name=>GoToRecentChangesLink);\");  
   %link-wiki(page=>RecentChanges,mode=>rss,rel=>News,class=>wiki,title=>\"%res(name=>GoToRssPageLink);\",type=>\"application/xml\");  
   %link-wiki(page=>SearchPage,rel=>search,class=>wiki,title=>\"%res(name=>GoToSearchPageLink);\");  
   %link-wiki(page=>WikiHelp,mode=>read,rel=>help,class=>wiki,title=>\"%res(name=>GoToWikiHelpLink);\");  
   %link-wiki(page=>WikiPageLicense,rel=>copyright,class=>wiki,title=>\"%res(name=>GoToWikiPageLicenseLink);\");  
   %link-wiki(mode=>map,rel=>sitemap,class=>wiki-cmd,title=>\"%res(name=>ShowMapOfThisPageLink);\");  
   %link-wiki(mode=>RandomJump,up_to_date,rel=>lucky,class=>\"wiki randomlink\",title=>\"%res(name=>GoSomewhereLink);\");  
   %link-wiki(page=>WikiMenuBar,mode=>mininav,rel=>\"sidebar navigator\",class=>wiki);  
   %link-favicon(use_page_icon);  
 EOH  
   #%link-viewcvs(href=>\"http://path-to-viewcvs/path-to-repository/\",rel=>history,class=>wiki-cmd,title=>\"%res(name=>ViewHistoryOfThisPageLink);\",hreflang=>en);  
 $vd{links} .= q(  %link-wiki(mode=>diff,rel=>history,class=>wiki-cmd,title=>\"%res(name=>ViewDiffOfThisPageLink);\");) if $wiki::diff::UseDiff;  
 $vd{links} .= <<EOH;  
   %link-wiki(href=>\\\"javascript:var%20WikiName=prompt('Please%20input%20the%20WikiName:','','Jump%20to%20SuikaWiki');if(WikiName)%7B_content.location.href='$url_cgi%3F'+encodeURIComponent(WikiName)%7D\\\",rel=>jump,class=>wiki-cmd,title=>\\\"%res(name=>JumpToLink);\\\");  
   %link-wiki(href=>\\\"javascript:var%20WikiName=prompt('Please%20input%20the%20WikiName:','','Jump%20to%20SuikaWiki');if(WikiName)%7B_content.location.href='$url_cgi%3Fmycmd=edit;mypage='+encodeURIComponent(WikiName)%7D\\\",rel=>jump,class=>wiki-cmd,title=>\\\"%res(name=>JumpToEditLink);\\\");  
 EOH  
 $vd{navbar} = <<'EOH';  
   %anchor-wiki(mode=>edit,rel=>edit,class=>wiki-cmd,label=>\\\"%res(name=>EditThisPage);\\\",title=>\\\"%res(name=>EditThisPageLong,accesskey=>E);\\\");  
   %anchor-wiki(rel=>view,up_to_date,class=>wiki-cmd,label=>\\\"%res(name=>ViewThisPage);\\\",title=>\\\"%res(name=>ViewThisPageLong);\\\");  
   %anchor-wiki(page=>CreatePage,class=>wiki,label=>\\\"%res(name=>GoToCreatePage);\\\",title=>\\\"%res(name=>GoToCreatePageLong);\\\");  
   %anchor-wiki(page=>IndexPage,class=>wiki,label=>\\\"%res(name=>GoToIndexPage);\\\",title=>\\\"%res(name=>GoToIndexPageLong);\\\");  
   %anchor-wiki(page=>HomePage,class=>wiki,label=>\\\"%res(name=>GoToHomePage);\\\",title=>\\\"%res(name=>GoToHomePageLong);\\\");  
   %anchor-wiki(page=>SearchPage,class=>wiki,label=>\\\"%res(name=>GoToSearchPage);\\\",title=>\\\"%res(name=>GoToSearchPageLong);\\\");  
   %anchor-wiki(mode=>RandomJump,up_to_date,rel=>lucky,class=>\\\"wiki randomlink\\\",label=>\\\"%res(name=>GoSomewhere);\\\",title=>\\\"%res(name=>GoSomewhereLong);\\\");  
   %anchor-wiki(page=>RecentChanges,class=>wiki,label=>\\\"%res(name=>GoToRecentChanges);\\\",title=>\\\"%res(name=>GoToRecentChangesLong);\\\");  
 EOH  
   
 our %ViewDefinition = (  
 read => {media => {type => 'text/html', charset => 1, expires => 120}, check => sub {1},  
   #xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 120},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"View:WebPageTitle\\");",link_meta=>"$vd{links}");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>read,add_to_toc=>0,content=>\\"%read(comment);\\");  
   %section(level=>2,id=>\\"see-also\\",title=>SeeAlso,heading,content=>\\"%search-result;\\");  
   %section(level=>2,id=>referer,title=>Referer,heading,content=>\\"%referer-list;\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(id=>last-modified,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"LastModified=\\\\\\");%last-modified;\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\\"$vd{navbar}\\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"  
     <a href=\\\\\\"http://www.hyuki.com/yukiwiki/\\\\\\" title=\\\\\\"YukiWiki 2.0.beta1.2002-05-29 &copy; 2000-2002 by Hiroshi Yuki\\\\\\">%res(name=>\\\\\\"About:Name:YukiWiki\\\\\\");</a>  
     <a href=\\\\\\"http://digit.que.ne.jp/work/\\\\\\" title=\\\\\\"WalWiki 2.0.beta1.wal.1 &copy; 2000-2002 by Makio Tsukamoto\\\\\\">%res(name=>\\\\\\"About:Name:WalWiki\\\\\\");</a>  
     <a href=\\\\\\"http://suika.fam.cx/gate/cvs/wakaba/wiki/\\\\\\" title=\\\\\\"%res(name=>\\\\\\"About:SuikaWiki:JumpToCVS\\\\\\");\\\\\\">%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;</a>  
   \\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 map => {media => {type => 'text/html', charset => 1, expires => 120}, check => sub {1},  
   #xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 120},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Map:WebPageTitle\\");",link_meta=>"$vd{links}");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>\\"link-map\\",title=>\\"Map:Title\\",heading,content=>\\"  
     <p>%res(name=>\\\\\\"Map:Description\\\\\\");</p>  
     %link-map;  
   \\");  
   %section(level=>2,id=>\\"see-also\\",title=>SeeAlso,heading,content=>\\"%search-result;\\");  
   %section(level=>2,id=>referer,title=>Referer,heading,content=>\\"%referer-list;\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\\"$vd{navbar}\\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
   
 edit => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   #xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Edit:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>edit,title=>\\"Edit:Title\\",heading,content=>\\"  
     %edit-form;  
     %section(level=>3,id=>edit-help,add_to_toc=>0,content=>\\\\\\"%read(page=>WikiEditHelp);\\\\\\");  
   \\");  
   %section(level=>2,id=>\\"see-also\\",title=>SeeAlso,heading,content=>\\"%search-result;\\");  
   %section(level=>2,id=>referer,title=>Referer,heading,content=>\\"%referer-list;\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(id=>last-modified,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"LastModified=\\\\\\");%last-modified;\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\\"$vd{navbar}\\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 adminedit => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Edit:Admin:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>edit,title=>\\"Edit:Title\\",heading,content=>\\"%edit-form(admin);\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(id=>last-modified,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"LastModified=\\\\\\");%last-modified;\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 -conflict => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   #xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Edit:Conflict:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>edit-conflict,title=>\\"Edit:Conflict:Title\\",heading,content=>\\"  
     <p>%res(name=>\\\\\\"Edit:Conflict:Description\\\\\\");</p>  
     %conflict-form;  
     %section(level=>3,id=>edit-conflict-diff,title=>\\\\\\"Edit:Conflict:Diff:Title\\\\\\",heading,content=>\\\\\\"  
       <p>%res(name=>\\\\\\\\\\\\\\"Edit:Conflict:Diff:Description\\\\\\\\\\\\\\");</p>  
       %conflict-diff;  
     \\\\\\");  
   \\");  
   %section(level=>2,id=>edit,title=>\\"Edit:Title\\",heading,content=>\\"  
     <p>%res(name=>\\\\\\"Edit:Conflict:Edit:Description\\\\\\");</p>  
     %edit-form;  
     %section(level=>3,id=>edit-help,add_to_toc=>0,content=>\\\\\\"%read(page=>WikiEditHelp);\\\\\\");  
   \\");  
   %section(level=>2,id=>\\"see-also\\",title=>SeeAlso,heading,content=>\\"%search-result;\\");  
   %section(level=>2,id=>referer,title=>Referer,heading,content=>\\"%referer-list;\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\\"$vd{navbar}\\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 -wrote => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Edit:Wrote:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   <p>%res(name=>\\"Edit:SavedSuccessfully\\");</p>  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 -deleted => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Edit:Deleted:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   <p>%res(name=>\\"Edit:PageIsDeletedSuccessfully\\");</p>  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 -error => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Error:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>error,title=>\\"Error:Title\\",heading,content=>\\"  
     <p>%error-message;</p>  
   \\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
   
 css => {media => {type => 'text/css', charset => 1, expires => 3600},  
   check => sub { ref $_[0]->format_converter ($_[0]->{magic} => 'CSS') ? 1 : 0 },  
   template => '%read(to=>CSS);'},  
 image_jpeg => {media => {type => 'image/jpeg', expires => 240*3600},  
   check => sub { ref ($_[0]->format_converter ($_[0]->{magic} => 'image_jpeg'))  
                  && $_[0]->{magic} =~ m#image-type="image/jpeg"# ? 1 : 0 },  
   template => '%read(to=>image_jpeg);'},  
 image_png => {media => {type => 'image/png', expires => 240*3600},  
   check => sub { ref ($_[0]->format_converter ($_[0]->{magic} => 'image_png'))  
                  && $_[0]->{magic} =~ m#image-type="image/png"# ? 1 : 0 },  
   template => '%read(to=>image_png);'},  
 rss => {media => {type => 'application/rss+xml', charset => 1, expires => 3600},  
   check => sub { ref $_[0]->format_converter ($_[0]->{magic} => 'RSS') ? 1 : 0 },  
   template => '<?xml version="1.0"?>%styles-wiki-xml(page=>"WikiStyleList:RSS");%read(to=>RSS);'},  
 -UnsupportedMediaType => {media => {type => 'text/html', charset => 1, expires => -1},  
   xmedia => {type => 'application/xhtml+xml', charset => 1, expires => -1},  
   check => sub {1}, template => <<EOH},  
 %html-start;%html-head(title=>"%page-name;",link_meta=>"$vd{links}");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,title=>\\"UnsupportedMediaType:Title\\",heading,content=>\\"  
     %res(name=>\\\\\\"UnsupportedMediaType:Description\\\\\\");  
   \\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 );  
   
   
 $ViewDefinition{diff} = {media => {type => 'text/html', charset => 1, expires => 120},  
   #xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 120},  
   template => <<EOH, check => sub {1}} if $wiki::diff::UseDiff;  
 %html-start;%html-head(title=>"%res(name=>\\"Diff:WebPageTitle\\");",link_meta=>"$vd{links}");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>\\"diff\\",title=>\\"Diff:Title\\",heading,content=>\\"  
     <p>%res(name=>\\\\\\"Diff:Notice\\\\\\");</p>  
     %diff-between-previous;  
   \\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\\"$vd{navbar}\\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 ");  
 EOH  
   
 $ViewDefinition{mininav} = {%{$ViewDefinition{read}}, template => <<EOH};  
 %html-start;%html-head(title=>"%res(name=>\\"View:WebPageTitle\\");",link_meta=>"$vd{links}");  
 %section(level=>1,add_to_toc=>0,type=>body,content=>"  
   %section(level=>2,id=>side-menu,class=>\\"mininav\\",add_to_toc=>0,content=>\\"  
     %read;  
     %anchor-wiki(rel=>view,mode=>mininav,class=>wiki-cmd,target=>_self,label=>\\\\\\"%res(name=>ReloadThisPage);\\\\\\",title=>\\\\\\"%res(name=>ReloadThisPageLong);\\\\\\");  
   \\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
30    
31  =head1 NAME  push our @Config, sub ($) {
32      my $WIKI = shift;
33      use Cwd qw(abs_path);
34      
35      ## -- Filesystem path mapping
36      for (
37         [db__cache__dir          => q"./wikidata/lock/"],
38         [db__cache_struct__file  => q"./wikidata/lock/struct.db"],
39         [db__content__dir        => q"./wikidata/page/"],
40         [db__content__error_log  => q"./wikidata/log/db-content.log"],
41         [db__bdb__home_dir       => q"./wikidata/lock/"],
42         [db__bdb__log_dir        => q"./wikidata/log/bdb/"],
43         [db__bdb__log_file       => q"./wikidata/log/bdb.log"],
44         [db__bdb__temp_dir       => q"./wikidata/lock/"],
45         [db__lock__dir           => q"./wikidata/lock/"],
46         [db__lock__log_file      => q"./wikidata/log/lock.log"],
47         [db__log__dir            => q"./wikidata/log/"],
48         [db__temp__dir           => q"./wikidata/lock/"],
49      ) {
50        ## On system that does not set current directory as main script
51        ## directory, you should specify it instead of using "abs_path".
52        $WIKI->{config}->{path_to}->{$_->[0]} = abs_path $_->[1];
53      }
54    
55  suikawiki-config.ph --- SuikaWiki: site configuration script    ## -- WikiPlugin
56      push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
57        my $wiki = shift;
58        
59        ## Installed plugin modules
60        $wiki->{plugin}->load_directory (qw(
61          lib/SuikaWiki/Plugin/
62          misc/plugins/
63          misc/plugins/form/
64          misc/plugins/format/
65          misc/plugins/link/
66          misc/plugins/view/
67        ));
68        
69        ## Configuration file as pseudo-plugin module
70        require 'wikidata/config.ph';
71      };
72    
73      ## -- WikiDatabase: Mapping logical to physical
74      push @{$WIKI->{event}->{database_loaded}}, sub {
75          my $wiki = shift;
76          
77          ## Main content
78          $wiki->{db}->_set_prop_db (content => {-db_open => sub {
79            require SuikaWiki::DB::FileSystem::YukiWikiDBNS;
80            SuikaWiki::DB::FileSystem::YukiWikiDBNS->new
81              (directory => $wiki->{config}->{path_to}->{db__content__dir},
82               logfile   => $wiki->{config}->{path_to}->{db__content__error_log},
83               suffix    => '.txt',
84               -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
85          }, -db_close => sub {
86            my %opt = @_;
87            $opt{prop_info}->{-db}->close;
88            delete $opt{prop_info}->{-db};
89          }});
90          
91          ## Last modified
92          $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
93            require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
94            SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
95              (directory => $wiki->{config}->{path_to}->{db__content__dir},
96               -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
97          }, -prop => 'last_modified', -db_close => sub {
98            my %opt = @_;
99            $opt{prop_info}->{-db}->close;
100            delete $opt{prop_info}->{-db};
101          }});
102          
103          ## Cache DBs
104          require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
105          my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
106                (directory => $wiki->{config}->{path_to}->{db__cache__dir});
107          $wiki->{db}->_set_prop_db (m__search_result =>
108            {-db => $cachedb, -prop => 'search_result', -db_close => sub {
109              my %opt = @_;
110              $opt{prop_info}->{-db}->close;
111              delete $opt{prop_info}->{-db};
112            }});
113          $wiki->{db}->_set_prop_db (wpp__headsummary =>
114            {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
115              my %opt = @_;
116              $opt{prop_info}->{-db}->close;
117              delete $opt{prop_info}->{-db};
118            }});
119          $wiki->{db}->_set_prop_db (ref__item_template =>
120            {-db => $cachedb, -prop => 'refereritem', -db_close => sub {
121              my %opt = @_;
122              $opt{prop_info}->{-db}->close;
123              delete $opt{prop_info}->{-db};
124            }});
125          
126          ## Berkely DB Environment Preparation
127          use BerkeleyDB;
128          my $bdbenv = new BerkeleyDB::Env
129             -Home => $wiki->{config}->{path_to}->{db__bdb__home_dir},
130             -Config => {
131               DB_DATA_DIR => $wiki->{config}->{path_to}->{db__content__dir},
132               DB_LOG_DIR => $wiki->{config}->{path_to}->{db__bdb__log_dir},
133               DB_TMP_DIR => $wiki->{config}->{path_to}->{db__bdb__temp_dir},
134             },
135             -ErrFile => $wiki->{config}->{path_to}->{db__bdb__log_file},
136             -Flags => DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL,
137             -Verbose => $wiki->{config}->{debug}->{db};
138    
139          $wiki->{db}->_set_prop_db (content__structured => {-db_open => sub {
140            require SuikaWiki::DB::Hash;
141            new SuikaWiki::DB::Hash constructor => sub {
142              use MLDBM qw(BerkeleyDB::Hash);# Storable);
143              tie my %mldb, 'MLDBM',
144                            -Filename => $wiki->{config}->{path_to}
145                                              ->{db__cache_struct__file},
146                            -Env => $bdbenv,
147                            -Flags => DB_CREATE,
148                            -Mode => 0644;
149              \%mldb;
150           };
151          }});
152          
153          ## Referer Database (See Referer plugin module)
154          $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
155            require SuikaWiki::DB::Hash;
156            new SuikaWiki::DB::Hash constructor => sub {
157              tie my %db, 'BerkeleyDB::Hash',
158                            -Filename => 'referer.db',
159                            -Env => $bdbenv,
160                            -Flags => DB_CREATE,
161                            -Mode => 0644;
162              \%db;
163           };
164          }});
165    
166          ## HTTP Request Logging Database (See RequestLog plugin module)
167          $wiki->{db}->_set_prop_db (log__http_request => {-db_open => sub {
168            require SuikaWiki::DB::Hash;
169            new SuikaWiki::DB::Hash constructor => sub {
170              tie my %db, 'BerkeleyDB::Hash',
171                            -Filename => 'http-request-log.db',
172                            -Env => $bdbenv,
173                            -Flags => DB_CREATE,
174                            -Mode => 0644;
175              \%db;
176           };
177          }});
178          
179          ## Additional WikiDB properties should be defined here
180          # ...    
181      };
182    
183      push @{$WIKI->{event}->{input_close}}, sub {
184        my ($wiki, $event) = @_;
185        try {
186          SuikaWiki::Plugin->module_package ('Referer')
187                         ->add_referer (wiki => $wiki,
188                                        uri => $wiki->{input}->meta_variable
189                                                 ('HTTP_REFERER'));
190        } catch SuikaWiki::Plugin::error with {
191          my $err = shift;
192          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
193        };
194        try {
195          SuikaWiki::Plugin->module_package ('RequestLog')
196                         ->http_request_log (wiki => $wiki,
197                                             prop => 'log__http_request');
198        } catch SuikaWiki::Plugin::error with {
199          my $err = shift;
200          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
201        };
202      };
203    
204      ## -- WikiName of special purpose WikiPages
205      $WIKI->{config}->{page} = {
206        Default         => $WIKI->name ([qw/HomePage/]),
207        InterWikiName   => $WIKI->name ([qw/Wiki InterWikiName/]),
208        NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
209        'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
210      };
211      
212      ## -- WikiNamespace constants
213      $WIKI->{config}->{name}->{space} = {
214        separator => '//',
215        separator_reg => qr#\s*//\s*#,
216        self => '.',
217        parent => '..',
218      };
219      
220      ## -- Default character codes
221      $WIKI->{config}->{charset} = {
222        ## Internal code - MUST be ASCII + 8bit coding scheme
223          internal => 'euc-jp',
224        ## Default output code
225          output => 'iso-2022-jp',
226        ## "query" part in URI reference
227          uri_query => '', # auto-detected
228          uri_query_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
229          uri_param => '', # auto-detected
230          uri_param_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
231        ## PATH_INFO part in URI reference
232          uri_path_info => 'x-utf-8-10646', ## Reserved for future use
233        ## Fragment identifier in URI reference
234          uri_fragment => 'x-punycode',     ## Reserved for possible future use
235      };
236      
237      ## -- Expires duration templates
238      $WIKI->{config}->{entity}->{expires} = {
239        edit      => {delta => 60},
240        view      => {delta => 2*3600},
241        lm_flaged => {delta => 30*24*3600},
242        stylesheet => {delta => 30*24*3600},
243        error     => {delta => 60},
244      };
245    
246      ## -- Debug mode
247      $WIKI->{config}->{debug} = {
248        general => 0,
249        db => 0,
250        format => 0,
251        view => 0,
252      };
253    
254    };
255    
256    =head1 SEE ALSO
257    
258    C<lib/suikawiki.pl>, C<wiki.cgi>,
259    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
260    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
261    
262  =head1 LICENSE  =head1 LICENSE
263    
264  Copyright 2003 Wakaba <w@suika.fam.cx>  Copyright 2003-2004 Wakaba <w@suika.fam.cx>.  All rights reserved.
265    
266  This program is free software; you can redistribute it and/or  This program is free software; you can redistribute it and/or
267  modify it under the same terms as Perl itself.  modify it under the same terms as Perl itself.

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.15

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24