/[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.13 by wakaba, Thu Mar 11 10:09:41 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
   our %uri = (  
     cookie_path => '/temp/wiki/',  
     external_script     => 'script/',  
   );  
   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  
   }  
   $uri{wiki} = $url_cgi;  
4    
5  ## Path to modules and databases  =head1 DESCRIPTION
   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  
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    
23    sub config ($) {
24      my $WIKI = shift;
25      use Cwd qw(abs_path);
26      
27      ## -- Filesystem path mapping
28      for (
29         [db__cache__dir          => q"./wikidata/lock/"],
30         [db__content__dir        => q"./wikidata/page/"],
31         [db__content__error_log  => q"./wikidata/log/db-content.log"],
32         [db__bdb__home_dir       => q"./wikidata/lock/"],
33         [db__bdb__log_dir        => q"./wikidata/log/bdb/"],
34         [db__bdb__log_file       => q"./wikidata/log/bdb.log"],
35         [db__bdb__temp_dir       => q"./wikidata/lock/"],
36         [db__lock__dir           => q"./wikidata/lock/"],
37         [db__lock__log_file      => q"./wikidata/log/lock.log"],
38         [db__log__dir            => q"./wikidata/log/"],
39         [db__temp__dir           => q"./wikidata/lock/"],
40      ) {
41        ## On system that does not set current directory as main script
42        ## directory, you should specify it instead of using "abs_path".
43        $WIKI->{config}->{path_to}->{$_->[0]} = abs_path $_->[1];
44      }
45    
46  suikawiki-config.ph --- SuikaWiki: site configuration script    ## -- WikiPlugin
47      push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
48        my $wiki = shift;
49        
50        ## Installed plugin modules
51        $wiki->{plugin}->load_directory (qw(
52          lib/SuikaWiki/Plugin/
53          misc/plugins/
54          misc/plugins/form/
55          misc/plugins/format/
56          misc/plugins/link/
57          misc/plugins/view/
58        ));
59        
60        ## Configuration file as pseudo-plugin module
61        require 'wikidata/config.ph';
62      };
63    
64      ## -- WikiDatabase: Mapping logical to physical
65      push @{$WIKI->{event}->{database_loaded}}, sub {
66          my $wiki = shift;
67          
68          ## Main content
69          $wiki->{db}->_set_prop_db (content => {-db_open => sub {
70            require SuikaWiki::DB::FileSystem::YukiWikiDBNS;
71            SuikaWiki::DB::FileSystem::YukiWikiDBNS->new
72              (directory => $wiki->{config}->{path_to}->{db__content__dir},
73               logfile   => $wiki->{config}->{path_to}->{db__content__error_log},
74               suffix    => '.txt',
75               -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
76          }, -db_close => sub {
77            my %opt = @_;
78            $opt{prop_info}->{-db}->close;
79            delete $opt{prop_info}->{-db};
80          }});
81          
82          ## Last modified
83          $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
84            require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
85            SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
86              (directory => $wiki->{config}->{path_to}->{db__content__dir},
87               -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
88          }, -prop => 'last_modified', -db_close => sub {
89            my %opt = @_;
90            $opt{prop_info}->{-db}->close;
91            delete $opt{prop_info}->{-db};
92          }});
93          
94          ## Cache DBs
95          require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
96          my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
97                (directory => $wiki->{config}->{path_to}->{db__cache__dir});
98          $wiki->{db}->_set_prop_db (m__search_result =>
99            {-db => $cachedb, -prop => 'search_result', -db_close => sub {
100              my %opt = @_;
101              $opt{prop_info}->{-db}->close;
102              delete $opt{prop_info}->{-db};
103            }});
104          $wiki->{db}->_set_prop_db (wpp__headsummary =>
105            {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
106              my %opt = @_;
107              $opt{prop_info}->{-db}->close;
108              delete $opt{prop_info}->{-db};
109            }});
110          
111          ## Berkely DB Environment Preparation
112          use BerkeleyDB;
113          my $bdbenv = new BerkeleyDB::Env
114             -Home => $wiki->{config}->{path_to}->{db__bdb__home_dir},
115             -Config => {
116               DB_DATA_DIR => $wiki->{config}->{path_to}->{db__content__dir},
117               DB_LOG_DIR => $wiki->{config}->{path_to}->{db__bdb__log_dir},
118               DB_TMP_DIR => $wiki->{config}->{path_to}->{db__bdb__temp_dir},
119             },
120             -ErrFile => $wiki->{config}->{path_to}->{db__bdb__log_file},
121             -Flags => DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL,
122             -Verbose => $wiki->{config}->{debug}->{db};
123          
124          ## Referer Database (See Referer plugin module)
125          $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
126            require SuikaWiki::DB::Hash;
127            new SuikaWiki::DB::Hash constructor => sub {
128              tie my %db, 'BerkeleyDB::Hash',
129                            -Filename => 'referer.db',
130                            -Env => $bdbenv,
131                            -Flags => DB_CREATE,
132                            -Mode => 0644;
133              \%db;
134           };
135          }});
136    
137          ## HTTP Request Logging Database (See RequestLog plugin module)
138          $wiki->{db}->_set_prop_db (log__http_request => {-db_open => sub {
139            require SuikaWiki::DB::Hash;
140            new SuikaWiki::DB::Hash constructor => sub {
141              tie my %db, 'BerkeleyDB::Hash',
142                            -Filename => 'http-request-log.db',
143                            -Env => $bdbenv,
144                            -Flags => DB_CREATE,
145                            -Mode => 0644;
146              \%db;
147           };
148          }});
149          
150          ## Additional WikiDB properties should be defined here
151          # ...    
152      };
153    
154      push @{$WIKI->{event}->{input_close}}, sub {
155        my ($wiki, $event) = @_;
156        try {
157          SuikaWiki::Plugin->module_package ('Referer')
158                         ->add_referer (wiki => $wiki,
159                                        uri => $wiki->{input}->meta_variable
160                                                 ('HTTP_REFERER'));
161        } catch SuikaWiki::Plugin::error with {
162          my $err = shift;
163          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
164        };
165        try {
166          SuikaWiki::Plugin->module_package ('RequestLog')
167                         ->http_request_log (wiki => $wiki,
168                                             prop => 'log__http_request');
169        } catch SuikaWiki::Plugin::error with {
170          my $err = shift;
171          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
172        };
173      };
174    
175      ## -- WikiName of special purpose WikiPages
176      $WIKI->{config}->{page} = {
177        Default         => $WIKI->name ([qw/HomePage/]),
178        InterWikiName   => $WIKI->name ([qw/Wiki InterWikiName/]),
179        NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
180        'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
181      };
182      
183      ## -- WikiNamespace constants
184      $WIKI->{config}->{name}->{space} = {
185        separator => '//',
186        separator_reg => qr#\s*//\s*#,
187        self => '.',
188        parent => '..',
189      };
190      
191      ## -- Default character codes
192      $WIKI->{config}->{charset} = {
193        ## Internal code - MUST be ASCII + 8bit coding scheme
194          internal => 'euc-jp',
195        ## Default output code
196          output => 'iso-2022-jp',
197        ## "query" part in URI reference
198          uri_query => '', # auto-detected
199          uri_query_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
200          uri_param => '', # auto-detected
201          uri_param_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
202        ## PATH_INFO part in URI reference
203          uri_path_info => 'x-utf-8-10646', ## Reserved for future use
204        ## Fragment identifier in URI reference
205          uri_fragment => 'x-punycode',     ## Reserved for possible future use
206      };
207      
208      ## -- Expires duration templates
209      $WIKI->{config}->{entity}->{expires} = {
210        edit      => {delta => 60},
211        view      => {delta => 2*3600},
212        lm_flaged => {delta => 30*24*3600},
213        stylesheet => {delta => 30*24*3600},
214        error     => {delta => 60},
215      };
216    
217      ## -- Debug mode
218      $WIKI->{config}->{debug} = {
219        general => 0,
220        db => 0,
221        format => 0,
222        view => 0,
223      };
224    
225    }
226    
227    =head1 SEE ALSO
228    
229    C<lib/suikawiki.pl>, C<wiki.cgi>,
230    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
231    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
232    
233  =head1 LICENSE  =head1 LICENSE
234    
235  Copyright 2003 Wakaba <w@suika.fam.cx>  Copyright 2003-2004 Wakaba <w@suika.fam.cx>.  All rights reserved.
236    
237  This program is free software; you can redistribute it and/or  This program is free software; you can redistribute it and/or
238  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.13

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24