/[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.6 by wakaba, Thu Mar 27 07:52:24 2003 UTC revision 1.12.4.3 by wakaba, Sat Mar 13 06:34:19 2004 UTC
# Line 1  Line 1 
1  use strict;  =head1 NAME
2    
3  ## URI (or part of URI) of Wiki CGI itself and its external addons  suikawiki-config.ph - SuikaWiki: Configuration for SuikaWiki HTTP CGI Driver
         ## Note: If your Wiki CGI URI is <http://foo.example/path/to/wiki.cgi>,  
         ##              cookie-path: /path/to/  
         ##              script-short-name: wiki.cgi  
         ##       URI parts MUST NOT contains "&" and/or non-URI characters.  
   our %uri = (  
     cookie_path         => '/temp/suikawiki/',  
     external_script     => '../wiki/script/',  
     script_short_name   => 'wiki',  
   );  
   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}$uri{script_short_name}";  
   }  
   $uri{wiki} = $url_cgi;  
4    
5  ## Path to modules and databases  =head1 DESCRIPTION
   use lib qw!../wiki/lib!;  
   $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),  
   );  
   
 ## 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',  
     RecentChanges       => 'RecentChanges',  
     UserAgentList       => 'WikiUserAgentList',  
     AdminSpecialPage    => "\x11\x11Admin\x11Special\x11Page\x11\x11",  
   );  
   
 ## (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;  
 %log-hotness();  
 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;  
 %log-hotness(weight=>2);  
 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{WithMenu} = {%{$ViewDefinition{read}}, template => <<EOH};  
 %html-start;%html-head(title=>"%res(name=>\\"View:WebPageTitle\\");",link_meta=>"$vd{links}");  
 %log-hotness;  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   <div id=\\\"myuri\\\">%img-favicon(use_page_icon);%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  
   
 $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  
6    
7  =head1 NAME  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;
22    use Message::Util::Error;
23    
24    push our @Config, sub ($) {
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      ) {
43        ## On system that does not set current directory as main script
44        ## directory, you should specify it instead of using "abs_path".
45        $WIKI->{config}->{path_to}->{$_->[0]} = abs_path $_->[1];
46      }
47    
48  suikawiki-config.ph --- SuikaWiki: site configuration script    ## -- WikiPlugin
49      push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
50        my $wiki = shift;
51        
52        ## Installed plugin modules
53        $wiki->{plugin}->load_directory (qw(
54          lib/SuikaWiki/Plugin/
55          misc/plugins/
56          misc/plugins/form/
57          misc/plugins/format/
58          misc/plugins/link/
59          misc/plugins/view/
60        ));
61        
62        ## Configuration file as pseudo-plugin module
63        require 'wikidata/config.ph';
64      };
65    
66      ## -- WikiDatabase: Mapping logical to physical
67      push @{$WIKI->{event}->{database_loaded}}, sub {
68          my $wiki = shift;
69          
70          ## Main content
71          $wiki->{db}->_set_prop_db (content => {-db_open => sub {
72            require SuikaWiki::DB::FileSystem::YukiWikiDBNS;
73            SuikaWiki::DB::FileSystem::YukiWikiDBNS->new
74              (directory => $wiki->{config}->{path_to}->{db__content__dir},
75               logfile   => $wiki->{config}->{path_to}->{db__content__error_log},
76               suffix    => '.txt',
77               -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
78          }, -db_close => sub {
79            my %opt = @_;
80            $opt{prop_info}->{-db}->close;
81            delete $opt{prop_info}->{-db};
82          }});
83          
84          ## Last modified
85          $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
86            require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
87            SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
88              (directory => $wiki->{config}->{path_to}->{db__content__dir},
89               -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
90          }, -prop => 'last_modified', -db_close => sub {
91            my %opt = @_;
92            $opt{prop_info}->{-db}->close;
93            delete $opt{prop_info}->{-db};
94          }});
95          
96          ## Cache DBs
97          require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
98          my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
99                (directory => $wiki->{config}->{path_to}->{db__cache__dir});
100          $wiki->{db}->_set_prop_db (m__search_result =>
101            {-db => $cachedb, -prop => 'search_result', -db_close => sub {
102              my %opt = @_;
103              $opt{prop_info}->{-db}->close;
104              delete $opt{prop_info}->{-db};
105            }});
106          $wiki->{db}->_set_prop_db (wpp__headsummary =>
107            {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
108              my %opt = @_;
109              $opt{prop_info}->{-db}->close;
110              delete $opt{prop_info}->{-db};
111            }});
112          $wiki->{db}->_set_prop_db (ref__item_template =>
113            {-db => $cachedb, -prop => 'refereritem', -db_close => sub {
114              my %opt = @_;
115              $opt{prop_info}->{-db}->close;
116              delete $opt{prop_info}->{-db};
117            }});
118          
119          ## Berkely DB Environment Preparation
120          use BerkeleyDB;
121          my $bdbenv = new BerkeleyDB::Env
122             -Home => $wiki->{config}->{path_to}->{db__bdb__home_dir},
123             -Config => {
124               DB_DATA_DIR => $wiki->{config}->{path_to}->{db__content__dir},
125               DB_LOG_DIR => $wiki->{config}->{path_to}->{db__bdb__log_dir},
126               DB_TMP_DIR => $wiki->{config}->{path_to}->{db__bdb__temp_dir},
127             },
128             -ErrFile => $wiki->{config}->{path_to}->{db__bdb__log_file},
129             -Flags => DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL,
130             -Verbose => $wiki->{config}->{debug}->{db};
131    
132          $wiki->{db}->_set_prop_db (content__structured => {-db_open => sub {
133            require SuikaWiki::DB::Hash;
134            new SuikaWiki::DB::Hash constructor => sub {
135              use MLDBM qw(BerkeleyDB::Hash);# Storable);
136              tie my %mldb, 'MLDBM',
137                            -Filename => $wiki->{config}->{path_to}
138                                              ->{db__cache_struct__file},
139                            -Env => $bdbenv,
140                            -Flags => DB_CREATE,
141                            -Mode => 0644;
142              \%mldb;
143           };
144          }});
145          
146          ## Referer Database (See Referer plugin module)
147          $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
148            require SuikaWiki::DB::Hash;
149            new SuikaWiki::DB::Hash constructor => sub {
150              tie my %db, 'BerkeleyDB::Hash',
151                            -Filename => 'referer.db',
152                            -Env => $bdbenv,
153                            -Flags => DB_CREATE,
154                            -Mode => 0644;
155              \%db;
156           };
157          }});
158    
159          ## HTTP Request Logging Database (See RequestLog plugin module)
160          $wiki->{db}->_set_prop_db (log__http_request => {-db_open => sub {
161            require SuikaWiki::DB::Hash;
162            new SuikaWiki::DB::Hash constructor => sub {
163              tie my %db, 'BerkeleyDB::Hash',
164                            -Filename => 'http-request-log.db',
165                            -Env => $bdbenv,
166                            -Flags => DB_CREATE,
167                            -Mode => 0644;
168              \%db;
169           };
170          }});
171          
172          ## Additional WikiDB properties should be defined here
173          # ...    
174      };
175    
176      push @{$WIKI->{event}->{input_close}}, sub {
177        my ($wiki, $event) = @_;
178        try {
179          SuikaWiki::Plugin->module_package ('Referer')
180                         ->add_referer (wiki => $wiki,
181                                        uri => $wiki->{input}->meta_variable
182                                                 ('HTTP_REFERER'));
183        } catch SuikaWiki::Plugin::error with {
184          my $err = shift;
185          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
186        };
187        try {
188          SuikaWiki::Plugin->module_package ('RequestLog')
189                         ->http_request_log (wiki => $wiki,
190                                             prop => 'log__http_request');
191        } catch SuikaWiki::Plugin::error with {
192          my $err = shift;
193          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
194        };
195      };
196    
197      ## -- WikiName of special purpose WikiPages
198      $WIKI->{config}->{page} = {
199        Default         => $WIKI->name ([qw/HomePage/]),
200        InterWikiName   => $WIKI->name ([qw/Wiki InterWikiName/]),
201        NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
202        'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
203      };
204      
205      ## -- WikiNamespace constants
206      $WIKI->{config}->{name}->{space} = {
207        separator => '//',
208        separator_reg => qr#\s*//\s*#,
209        self => '.',
210        parent => '..',
211      };
212      
213      ## -- Default character codes
214      $WIKI->{config}->{charset} = {
215        ## Internal code - MUST be ASCII + 8bit coding scheme
216          internal => 'euc-jp',
217        ## Default output code
218          output => 'iso-2022-jp',
219        ## "query" part in URI reference
220          uri_query => '', # auto-detected
221          uri_query_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
222          uri_param => '', # auto-detected
223          uri_param_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
224        ## PATH_INFO part in URI reference
225          uri_path_info => 'x-utf-8-10646', ## Reserved for future use
226        ## Fragment identifier in URI reference
227          uri_fragment => 'x-punycode',     ## Reserved for possible future use
228      };
229      
230      ## -- Expires duration templates
231      $WIKI->{config}->{entity}->{expires} = {
232        edit      => {delta => 60},
233        view      => {delta => 2*3600},
234        lm_flaged => {delta => 30*24*3600},
235        stylesheet => {delta => 30*24*3600},
236        error     => {delta => 60},
237      };
238    
239      ## -- Debug mode
240      $WIKI->{config}->{debug} = {
241        general => 0,
242        db => 0,
243        format => 0,
244        view => 0,
245      };
246    
247    };
248    
249    =head1 SEE ALSO
250    
251    C<lib/suikawiki.pl>, C<wiki.cgi>,
252    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
253    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
254    
255  =head1 LICENSE  =head1 LICENSE
256    
257  Copyright 2003 Wakaba <w@suika.fam.cx>  Copyright 2003-2004 Wakaba <w@suika.fam.cx>.  All rights reserved.
258    
259  This program is free software; you can redistribute it and/or  This program is free software; you can redistribute it and/or
260  modify it under the same terms as Perl itself.  modify it under the same terms as Perl itself.

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.12.4.3

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24  
Google Analytics is used in this page; Cookies are used. 忍者AdMax is used in this page; Cookies are used. Privacy policy.