/[pub]/suikawiki/wikidata/suikawiki-config.ph
Suika

Diff of /suikawiki/wikidata/suikawiki-config.ph

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

revision 1.4 by w, Sun Jan 26 02:39:48 2003 UTC revision 1.12.4.5 by wakaba, Sat Mar 20 04:09:14 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;
 #  
 # You MUST modify following '$modifier_...' variables.  
 #  
 # 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 $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}/~wakaba/suikawiki/wiki";  
         ## - MUST NOT include [&<>"] and/or non-URI characters  
 }  
 our %uri = (  
   cookie_path   => '/~wakaba/suikawiki/',  
   external_script       => '../wiki/script/',  
 );  
 $uri{wiki} = $url_cgi;  
 $SuikaWiki::Plugin::plugin_directory = q(../wiki/lib/SuikaWiki/Plugin/);  
 our %PathTo = ( ## Path to your data, from the main CGI script (NOT from this config script)  
   CachePrefix   => q(./wikidata/.cache.),  
   WikiDataBase  => q(./wikidata/page),  
 );  
 ##############################  
 our %PageName = (  
   FrontPage     => 'HomePage',  
   IndexPage     => 'IndexPage',  
   SearchPage    => 'SearchPage',  
   CreatePage    => 'CreatePage',  
   ErrorPage     => 'ErrorPage',  
   RecentChanges => 'RecentChanges',  
   AdminSpecialPage      => "\x11\x11Admin\x11Special\x11Page\x11\x11",  
   UserAgentList => 'WikiUserAgentList',  
 );  
 our $kanjicode = 'euc';  
 our $lang = 'ja';  
   
 $wiki::useragent::UseLog = 0;   ## Use User-Agent name log (WikiUserAgentList) or not  
 $wiki::diff::UseDiff = 1;       ## Use diff mode or not  
   
 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=>contents,class=>wiki-cmd,title=>\"%res(name=>ShowMapOfThisPageLink);\");  
   %link-wiki(mode=>RandomJump,up_to_date,rel=>lucky,class=>\"wiki randomlink\",title=>\"%res(name=>GoSomewhereLink);\");  
 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);'},  
 rss => {media => {type => 'application/rss+xml', charset => 1, expires => 3600},  
   check => sub { ref $_[0]->format_converter ($_[0]->{magic} => 'RSS') ? 1 : 0 },  
   template => '%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(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  
 );  
   
   
 $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;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
   
 $ViewDefinition{WithMenu} = {%{$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,title=>"%page-name;",heading,content=>"  
   <div id=\\\"myuri\\\">%uri-wiki();</div>  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"  
     %anchor-wiki(rel=>view,up_to_date,mode=>default,class=>wiki-cmd,label=>\\\\\\"%res(name=>ReloadThisPage);\\\\\\",title=>\\\\\\"%res(name=>ReloadThisPageLong);\\\\\\");  
     $vd{navbar}  
   \\");  
   %section(level=>2,id=>side-menu,add_to_toc=>0,content=>\\"%read(page=>WikiMenuBar);\\");  
   %section(id=>content-frame,add_to_toc=>0,content=>\\"  
     %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(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  
22    
23  1;  push our @Config, sub ($) {
24      eval { use Message::Util::Error };
25      my $WIKI = shift;
26      use Cwd qw(abs_path);
27      
28      ## -- Filesystem path mapping
29      for (
30         [db__cache__dir          => q"./wikidata/lock/"],
31         [db__cache_struct__file  => q"./wikidata/lock/struct.db"],
32         [db__content__dir        => q"./wikidata/page/"],
33         [db__content__error_log  => q"./wikidata/log/db-content.log"],
34         [db__bdb__home_dir       => q"./wikidata/lock/"],
35         [db__bdb__log_dir        => q"./wikidata/log/bdb/"],
36         [db__bdb__log_file       => q"./wikidata/log/bdb.log"],
37         [db__bdb__temp_dir       => q"./wikidata/lock/"],
38         [db__lock__dir           => q"./wikidata/lock/"],
39         [db__lock__log_file      => q"./wikidata/log/lock.log"],
40         [db__log__dir            => q"./wikidata/log/"],
41         [db__temp__dir           => q"./wikidata/lock/"],
42         [namazu__index_dir       => q"/var/namazu/index/wakaba"],
43      ) {
44        ## On system that does not set current directory as main script
45        ## directory, you should specify it instead of using "abs_path".
46        $WIKI->{config}->{path_to}->{$_->[0]} = abs_path $_->[1];
47      }
48      
49      ## -- Namazu URI Mapping (See SuikaWiki:SuikaWiki//Namazu) --
50      $WIKI->{config}->{nmz__uri_to_uri} = sub {
51        my ($nmzuri, %opt) = @_;
52        if ($nmzuri =~ s!^\Q$opt{o}->{wiki}->{config}->{path_to}->{db__content__dir}\E/*!!o) {
53          $nmzuri =~ s/\.txt$//;
54          return $opt{o}->{wiki}->uri_reference
55                          (page => $opt{o}->{wiki}->name ([
56            map {s/([0-9A-F][0-9A-F])/pack 'C', hex $1/ge; $_}
57            split m!\.ns/!, $nmzuri
58          ]), base => 1);
59        } else {
60          $nmzuri =~ s<^/home/wakaba/public_html/([^.]+)><http://suika.fam.cx/~wakaba/$1>;
61          return ($nmzuri, $nmzuri);
62        }
63      };
64    
65      ## -- WikiPlugin
66      push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
67        my $wiki = shift;
68        
69        ## Installed plugin modules
70        $wiki->{plugin}->load_directory (qw(
71          lib/SuikaWiki/Plugin/
72          misc/plugins/
73          misc/plugins/form/
74          misc/plugins/format/
75          misc/plugins/link/
76          misc/plugins/view/
77        ));
78    
79        ## Configuration file as pseudo-plugin module
80        require 'wikidata/config.ph';
81      };
82    
83      ## -- WikiDatabase: Mapping logical to physical
84      push @{$WIKI->{event}->{database_loaded}}, sub {
85          my $wiki = shift;
86          
87          ## Main content
88          $wiki->{db}->_set_prop_db (content => {-db_open => sub {
89            require SuikaWiki::DB::FileSystem::YukiWikiDBNS;
90            SuikaWiki::DB::FileSystem::YukiWikiDBNS->new
91              (directory => $wiki->{config}->{path_to}->{db__content__dir},
92               logfile   => $wiki->{config}->{path_to}->{db__content__error_log},
93               suffix    => '.txt',
94               -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
95          }, -db_close => sub {
96            my %opt = @_;
97            $opt{prop_info}->{-db}->close;
98            delete $opt{prop_info}->{-db};
99          }});
100          
101          ## Last modified
102          $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
103            require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
104            SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
105              (directory => $wiki->{config}->{path_to}->{db__content__dir},
106               -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
107          }, -prop => 'last_modified', -db_close => sub {
108            my %opt = @_;
109            $opt{prop_info}->{-db}->close;
110            delete $opt{prop_info}->{-db};
111          }});
112          
113          ## Cache DBs
114          require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
115          my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
116                (directory => $wiki->{config}->{path_to}->{db__cache__dir},
117                 expires => 86400 * 3, removes => 86400 * 3); # 3 days
118          $wiki->{db}->_set_prop_db (m__search_result =>
119            {-db => $cachedb, -prop => 'search_result', -db_close => sub {
120              my %opt = @_;
121              $opt{prop_info}->{-db}->close;
122              delete $opt{prop_info}->{-db};
123            }});
124          $wiki->{db}->_set_prop_db (wpp__headsummary =>
125            {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
126              my %opt = @_;
127              $opt{prop_info}->{-db}->close;
128              delete $opt{prop_info}->{-db};
129            }});
130          $wiki->{db}->_set_prop_db (ref__item_template =>
131            {-db => $cachedb, -prop => 'refereritem', -db_close => sub {
132              my %opt = @_;
133              $opt{prop_info}->{-db}->close;
134              delete $opt{prop_info}->{-db};
135            }});
136    
137          ## Berkely DB Environment Preparation
138          use BerkeleyDB;
139          my $bdbenv = new BerkeleyDB::Env
140             -Home => $wiki->{config}->{path_to}->{db__bdb__home_dir},
141             -Config => {
142               DB_DATA_DIR => $wiki->{config}->{path_to}->{db__content__dir},
143               DB_LOG_DIR => $wiki->{config}->{path_to}->{db__bdb__log_dir},
144               DB_TMP_DIR => $wiki->{config}->{path_to}->{db__bdb__temp_dir},
145             },
146             -ErrFile => $wiki->{config}->{path_to}->{db__bdb__log_file},
147             -Flags => DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL,
148             -Verbose => $wiki->{config}->{debug}->{db};
149    
150          $wiki->{db}->_set_prop_db (content__structured => {-db_open => sub {
151            require SuikaWiki::DB::Hash;
152            new SuikaWiki::DB::Hash constructor => sub {
153              use MLDBM qw(BerkeleyDB::Hash);# Storable);
154              tie my %mldb, 'MLDBM',
155                            -Filename => $wiki->{config}->{path_to}
156                                              ->{db__cache_struct__file},
157                            -Env => $bdbenv,
158                            -Flags => DB_CREATE,
159                            -Mode => 0644;
160              \%mldb;
161           };
162          }});
163          
164          ## Referer Database (See Referer plugin module)
165          $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
166            require SuikaWiki::DB::Hash;
167            new SuikaWiki::DB::Hash constructor => sub {
168              tie my %db, 'BerkeleyDB::Hash',
169                            -Filename => 'referer.db',
170                            -Env => $bdbenv,
171                            -Flags => DB_CREATE,
172                            -Mode => 0644;
173              \%db;
174           };
175          }});
176    
177          ## HTTP Request Logging Database (See RequestLog plugin module)
178          $wiki->{db}->_set_prop_db (log__http_request => {-db_open => sub {
179            require SuikaWiki::DB::Hash;
180            new SuikaWiki::DB::Hash constructor => sub {
181              tie my %db, 'BerkeleyDB::Hash',
182                            -Filename => 'http-request-log.db',
183                            -Env => $bdbenv,
184                            -Flags => DB_CREATE,
185                            -Mode => 0644;
186              \%db;
187           };
188          }});
189          
190          ## Additional WikiDB properties should be defined here
191          # ...    
192      };
193    
194      push @{$WIKI->{event}->{input_close}}, sub {
195        my ($wiki, $event) = @_;
196        try {
197          SuikaWiki::Plugin->module_package ('Referer')
198                         ->add_referer (wiki => $wiki,
199                                        uri => $wiki->{input}->meta_variable
200                                                 ('HTTP_REFERER'));
201        } catch SuikaWiki::Plugin::error with {
202          my $err = shift;
203          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
204        };
205        try {
206          SuikaWiki::Plugin->module_package ('RequestLog')
207                         ->http_request_log (wiki => $wiki,
208                                             prop => 'log__http_request');
209        } catch SuikaWiki::Plugin::error with {
210          my $err = shift;
211          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
212        };
213      };
214    
215      ## -- WikiName of special purpose WikiPages
216      $WIKI->{config}->{page} = {
217        Default         => $WIKI->name ([qw/HomePage/]),
218        InterWikiName   => $WIKI->name ([qw/Wiki InterWikiName/]),
219        NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
220        'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
221      };
222      
223      ## -- WikiNamespace constants
224      $WIKI->{config}->{name}->{space} = {
225        separator => '//',
226        separator_reg => qr#\s*//\s*#,
227        self => '.',
228        parent => '..',
229      };
230      
231      ## -- Default character codes
232      $WIKI->{config}->{charset} = {
233        ## Internal code - MUST be ASCII + 8bit coding scheme
234          internal => 'euc-jp',
235        ## Default output code
236          output => 'iso-2022-jp',
237        ## "query" part in URI reference
238          uri_query => '', # auto-detected
239          uri_query_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
240          uri_param => '', # auto-detected
241          uri_param_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
242        ## PATH_INFO part in URI reference
243          uri_path_info => 'x-utf-8-10646', ## Reserved for future use
244        ## Fragment identifier in URI reference
245          uri_fragment => 'x-punycode',     ## Reserved for possible future use
246      };
247      
248      ## -- Expires duration templates
249      $WIKI->{config}->{entity}->{expires} = {
250        edit      => {delta => 60},
251        view      => {delta => 2*3600},
252        lm_flaged => {delta => 30*24*3600},
253        stylesheet => {delta => 30*24*3600},
254        error     => {delta => 60},
255      };
256    
257      ## -- Debug mode
258      $WIKI->{config}->{debug} = {
259        general => 0,
260        db => 0,
261        format => 0,
262        view => 0,
263      };
264    
265    };
266    
267    =head1 SEE ALSO
268    
269    C<lib/suikawiki.pl>, C<wiki.cgi>,
270    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
271    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
272    
273    =head1 LICENSE
274    
275    Copyright 2003-2004 Wakaba <w@suika.fam.cx>.  All rights reserved.
276    
277    This program is free software; you can redistribute it and/or
278    modify it under the same terms as Perl itself.
279    
280    =cut
281    
282    1; # $Date$

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24