/[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.16 by wakaba, Sat Mar 20 04:25:49 2004 UTC
# Line 1  Line 1 
1    =head1 NAME
2    
3    suikawiki-config.ph - SuikaWiki: Configuration for SuikaWiki HTTP CGI Driver
4    
5    =head1 DESCRIPTION
6    
7    This is a configuration file for SuikaWiki Driver for HTTP CGI Script
8    (SWHCS).  Basic options such as WikiDB directory mapping and
9    special purpose WikiPage names can be customized with this file.
10    
11    More complex customizing, e.g. modifying navigation bar or
12    adding new mode, is also possible by config.ph (generated from
13    config.wp2) and WikiPlugin modules.  For more information,
14    see <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>.
15    
16    This file is part of SuikaWiki.
17    
18    =cut
19    
20    package wiki::driver::http;
21  use strict;  use strict;
22    
23  ## URI (or part of URI) of Wiki CGI itself and its external addons  push our @Config, sub ($) {
24    our %uri = (    eval q{ use Message::Util::Error };
25      cookie_path => '/temp/wiki/',    my $WIKI = shift;
26      external_script     => 'script/',    use Cwd qw(abs_path);
27    );    
28    our $url_cgi; {    ## -- Filesystem path mapping
29      my $scheme = 'http';    for (
30      $scheme = lc $1 if $main::ENV{SERVER_PROTOCOL} =~ m#([A-Za-z0-9+.%-]+)#;       [db__cache__dir          => q"./wikidata/lock/"],
31      $url_cgi = "$scheme://$main::ENV{SERVER_NAME}:$main::ENV{SERVER_PORT}$uri{cookie_path}wiki";       [db__cache_struct__file  => q"./wikidata/lock/struct.db"],
32        ## - MUST NOT include [&<>"] and/or non-URI characters       [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/wiki"],
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    }    }
   $uri{wiki} = $url_cgi;  
48    
49  ## Path to modules and databases  =begin comment
   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  
   
 =head1 NAME  
50    
51  suikawiki-config.ph --- SuikaWiki: site configuration script    ## -- Namazu URI Mapping (See SuikaWiki:SuikaWiki//Namazu) --
52      $WIKI->{config}->{nmz__uri_to_uri} = sub {
53        my ($nmzuri, %opt) = @_;
54        if ($nmzuri =~ s!^\Q$opt{o}->{wiki}->{config}->{path_to}->{db__content__dir}\E/*!!o) {
55          $nmzuri =~ s/\.txt$//;
56          return $opt{o}->{wiki}->uri_reference
57                          (page => $opt{o}->{wiki}->name ([
58            map {s/([0-9A-F][0-9A-F])/pack 'C', hex $1/ge; $_}
59            split m!\.ns/!, $nmzuri
60          ]), base => 1);
61        } else {
62          return ($nmzuri, $nmzuri);
63        }
64      };
65    
66    =end comment
67    
68      ## -- WikiPlugin
69      push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
70        my $wiki = shift;
71        
72        ## Installed plugin modules
73        $wiki->{plugin}->load_directory (qw(
74          lib/SuikaWiki/Plugin/
75          misc/plugins/
76          misc/plugins/form/
77          misc/plugins/format/
78          misc/plugins/link/
79          misc/plugins/view/
80        ));
81        
82        ## Configuration file as pseudo-plugin module
83        require 'wikidata/config.ph';
84      };
85    
86      ## -- WikiDatabase: Mapping logical to physical
87      push @{$WIKI->{event}->{database_loaded}}, sub {
88          my $wiki = shift;
89          
90          ## Main content
91          $wiki->{db}->_set_prop_db (content => {-db_open => sub {
92            require SuikaWiki::DB::FileSystem::YukiWikiDBNS;
93            SuikaWiki::DB::FileSystem::YukiWikiDBNS->new
94              (directory => $wiki->{config}->{path_to}->{db__content__dir},
95               logfile   => $wiki->{config}->{path_to}->{db__content__error_log},
96               suffix    => '.txt',
97               -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
98          }, -db_close => sub {
99            my %opt = @_;
100            $opt{prop_info}->{-db}->close;
101            delete $opt{prop_info}->{-db};
102          }});
103          
104          ## Last modified
105          $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
106            require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
107            SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
108              (directory => $wiki->{config}->{path_to}->{db__content__dir},
109               -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
110          }, -prop => 'last_modified', -db_close => sub {
111            my %opt = @_;
112            $opt{prop_info}->{-db}->close;
113            delete $opt{prop_info}->{-db};
114          }});
115          
116          ## Cache DBs
117          require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
118          my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
119                (directory => $wiki->{config}->{path_to}->{db__cache__dir},
120                 expires => 86400 * 3, removes => 86400 * 3); # 3 days
121          $wiki->{db}->_set_prop_db (m__search_result =>
122            {-db => $cachedb, -prop => 'search_result', -db_close => sub {
123              my %opt = @_;
124              $opt{prop_info}->{-db}->close;
125              delete $opt{prop_info}->{-db};
126            }});
127          $wiki->{db}->_set_prop_db (wpp__headsummary =>
128            {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
129              my %opt = @_;
130              $opt{prop_info}->{-db}->close;
131              delete $opt{prop_info}->{-db};
132            }});
133          $wiki->{db}->_set_prop_db (ref__item_template =>
134            {-db => $cachedb, -prop => 'refereritem', -db_close => sub {
135              my %opt = @_;
136              $opt{prop_info}->{-db}->close;
137              delete $opt{prop_info}->{-db};
138            }});
139          
140          ## Berkely DB Environment Preparation
141          use BerkeleyDB;
142          my $bdbenv = new BerkeleyDB::Env
143             -Home => $wiki->{config}->{path_to}->{db__bdb__home_dir},
144             -Config => {
145               DB_DATA_DIR => $wiki->{config}->{path_to}->{db__content__dir},
146               DB_LOG_DIR => $wiki->{config}->{path_to}->{db__bdb__log_dir},
147               DB_TMP_DIR => $wiki->{config}->{path_to}->{db__bdb__temp_dir},
148             },
149             -ErrFile => $wiki->{config}->{path_to}->{db__bdb__log_file},
150             -Flags => DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL,
151             -Verbose => $wiki->{config}->{debug}->{db};
152    
153          $wiki->{db}->_set_prop_db (content__structured => {-db_open => sub {
154            require SuikaWiki::DB::Hash;
155            new SuikaWiki::DB::Hash constructor => sub {
156              use MLDBM qw(BerkeleyDB::Hash);# Storable);
157              tie my %mldb, 'MLDBM',
158                            -Filename => $wiki->{config}->{path_to}
159                                              ->{db__cache_struct__file},
160                            -Env => $bdbenv,
161                            -Flags => DB_CREATE,
162                            -Mode => 0644;
163              \%mldb;
164           };
165          }});
166          
167          ## Referer Database (See Referer plugin module)
168          $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
169            require SuikaWiki::DB::Hash;
170            new SuikaWiki::DB::Hash constructor => sub {
171              tie my %db, 'BerkeleyDB::Hash',
172                            -Filename => 'referer.db',
173                            -Env => $bdbenv,
174                            -Flags => DB_CREATE,
175                            -Mode => 0644;
176              \%db;
177           };
178          }});
179    
180          ## HTTP Request Logging Database (See RequestLog plugin module)
181          $wiki->{db}->_set_prop_db (log__http_request => {-db_open => sub {
182            require SuikaWiki::DB::Hash;
183            new SuikaWiki::DB::Hash constructor => sub {
184              tie my %db, 'BerkeleyDB::Hash',
185                            -Filename => 'http-request-log.db',
186                            -Env => $bdbenv,
187                            -Flags => DB_CREATE,
188                            -Mode => 0644;
189              \%db;
190           };
191          }});
192          
193          ## Additional WikiDB properties should be defined here
194          # ...    
195      };
196    
197      push @{$WIKI->{event}->{input_close}}, sub {
198        my ($wiki, $event) = @_;
199        try {
200          SuikaWiki::Plugin->module_package ('Referer')
201                         ->add_referer (wiki => $wiki,
202                                        uri => $wiki->{input}->meta_variable
203                                                 ('HTTP_REFERER'));
204        } catch SuikaWiki::Plugin::error with {
205          my $err = shift;
206          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
207        };
208        try {
209          SuikaWiki::Plugin->module_package ('RequestLog')
210                         ->http_request_log (wiki => $wiki,
211                                             prop => 'log__http_request');
212        } catch SuikaWiki::Plugin::error with {
213          my $err = shift;
214          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
215        };
216      };
217    
218      ## -- WikiName of special purpose WikiPages
219      $WIKI->{config}->{page} = {
220        Default         => $WIKI->name ([qw/HomePage/]),
221        InterWikiName   => $WIKI->name ([qw/Wiki InterWikiName/]),
222        NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
223        'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
224      };
225      
226      ## -- WikiNamespace constants
227      $WIKI->{config}->{name}->{space} = {
228        separator => '//',
229        separator_reg => qr#\s*//\s*#,
230        self => '.',
231        parent => '..',
232      };
233      
234      ## -- Default character codes
235      $WIKI->{config}->{charset} = {
236        ## Internal code - MUST be ASCII + 8bit coding scheme
237          internal => 'euc-jp',
238        ## Default output code
239          output => 'iso-2022-jp',
240        ## "query" part in URI reference
241          uri_query => '', # auto-detected
242          uri_query_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
243          uri_param => '', # auto-detected
244          uri_param_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
245        ## PATH_INFO part in URI reference
246          uri_path_info => 'x-utf-8-10646', ## Reserved for future use
247        ## Fragment identifier in URI reference
248          uri_fragment => 'x-punycode',     ## Reserved for possible future use
249      };
250      
251      ## -- Expires duration templates
252      $WIKI->{config}->{entity}->{expires} = {
253        edit      => {delta => 60},
254        view      => {delta => 2*3600},
255        lm_flaged => {delta => 30*24*3600},
256        stylesheet => {delta => 30*24*3600},
257        error     => {delta => 60},
258      };
259    
260      ## -- Debug mode
261      $WIKI->{config}->{debug} = {
262        general => 0,
263        db => 0,
264        format => 0,
265        view => 0,
266      };
267    
268    };
269    
270    =head1 SEE ALSO
271    
272    C<lib/suikawiki.pl>, C<wiki.cgi>,
273    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
274    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
275    
276  =head1 LICENSE  =head1 LICENSE
277    
278  Copyright 2003 Wakaba <w@suika.fam.cx>  Copyright 2003-2004 Wakaba <w@suika.fam.cx>.  All rights reserved.
279    
280  This program is free software; you can redistribute it and/or  This program is free software; you can redistribute it and/or
281  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.16

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24