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

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

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

revision 1.4 by w, Sun Jan 26 02:39:48 2003 UTC revision 1.16 by wakaba, Sat May 1 03:55:28 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  # You MUST modify following '$modifier_...' variables.    ## These lines should be removed after utf8 support
24  #    BEGIN {
25  # our $modifier_dbtype = 'AnyDBM_File';  # Fast, not available on some server, page size limited.      $Message::Util::Formatter::Base::Token = qr/[\w._+\x80-\xFF-]+/;
26  # our $modifier_dbtype = 'dbmopen';      # Fast, not available on some server, page size limited.      require Message::Util::Formatter::Base;
27  #our $modifier_dbtype = 'Yuki::YukiWikiDB';     # Slow, available on all environment.    }
28  #our $modifier_dbtype = 'Yuki::YukiWikiDB2';     # Slow, available on all environment.    use Message::Util::Error;
29  our $modifier_dbtype = 'Yuki::YukiWikiDBMeta';     # Slow, available on all environment.  
30  our $url_cgi; {  use Message::Util::QName::General [q<ExpandedURI>], {
31      my $scheme = 'http';    'log' => q<http://suika.fam.cx/~wakaba/-temp/2004/05/01/reqlog#>,
32      $scheme = lc $1 if $main::ENV{SERVER_PROTOCOL} =~ m#([A-Za-z0-9+.%-]+)#;    'media-type' => q<http://suika.fam.cx/~wakaba/-temp/2004/04/24/mt#>,
33      $url_cgi = "$scheme://$main::ENV{SERVER_NAME}:$main::ENV{SERVER_PORT}/~wakaba/suikawiki/wiki";  };
34          ## - MUST NOT include [&<>"] and/or non-URI characters  
35    BEGIN {
36      if ($main::ENV{REQUEST_URI} =~ /\#/) {
37        require SuikaWiki::Output::HTTP;
38        my $out = SuikaWiki::Output::HTTP->new;
39        $out->{status_code} = 401;
40        $out->{status_phrase} = q<Request-URI MUST NOT have Fragment Identifier>;
41        $out->{entity}->{media_type} = q<text/html>;
42        $out->{entity}->{charset} = q<iso-8859-1>;
43        $out->{entity}->{language} = [q<en>];
44        $out->{entity}->{body_is_octet_stream} = 1;
45        my $ua = $main::ENV{HTTP_USER_AGENT};
46        for ($ua) {
47          s/&/&amp;/g; s/</&lt;/g; s/([^\x20-\x7E])/sprintf '&#x%02X;', ord $1/ge;
48        };
49        $out->{entity}->{body} = qq<
50          <!DOCTYPE html SYSTEM>
51          <title>401 Bad Request-URI</title>
52          <h1>Bad Request-URI</h1>
53          <p>Your Request-URI has fragment identifier but it is not allowed here.
54          It might be a bug of your user agent ($ua).  Please contact to the UA
55          vendor.</p>
56        >;
57        $out->output (output => 'http-cgi');
58        exit;
59      }
60  }  }
 our %uri = (  
   cookie_path   => '/~wakaba/suikawiki/',  
   external_script       => '../wiki/script/',  
 );  
 $uri{wiki} = $url_cgi;  
 $SuikaWiki::Plugin::plugin_directory = q(../wiki/lib/SuikaWiki/Plugin/);  
 our %PathTo = ( ## Path to your data, from the main CGI script (NOT from this config script)  
   CachePrefix   => q(./wikidata/.cache.),  
   WikiDataBase  => q(./wikidata/page),  
 );  
 ##############################  
 our %PageName = (  
   FrontPage     => 'HomePage',  
   IndexPage     => 'IndexPage',  
   SearchPage    => 'SearchPage',  
   CreatePage    => 'CreatePage',  
   ErrorPage     => 'ErrorPage',  
   RecentChanges => 'RecentChanges',  
   AdminSpecialPage      => "\x11\x11Admin\x11Special\x11Page\x11\x11",  
   UserAgentList => 'WikiUserAgentList',  
 );  
 our $kanjicode = 'euc';  
 our $lang = 'ja';  
   
 $wiki::useragent::UseLog = 0;   ## Use User-Agent name log (WikiUserAgentList) or not  
 $wiki::diff::UseDiff = 1;       ## Use diff mode or not  
   
 my %vd;  
 $vd{links} = <<'EOH';  
   %styles-wiki-html(page=>\"WikiStyleList:HTML\");  
   %link-wiki(mode=>edit,rel=>edit,class=>wiki-cmd,title=>\"%res(name=>EditThisPageLink);\");  
   %link-wiki(mode=>edit,rel=>edit,class=>wiki-cmd,title=>\"%res(name=>AdminEditThisPageLink);\",add_param=>\"admin=1\");  
   %link-wiki(rel=>view,class=>wiki-cmd,title=>\"%res(name=>ViewThisPageLink);\",up_to_date);  
   %link-wiki(rel=>myself,class=>wiki,title=>\"%res(name=>GoToMyselfLink);\");  
   %link-wiki(page=>IndexPage,rel=>index,class=>wiki,title=>\"%res(name=>GoToIndexPageLink);\");  
   %link-wiki(page=>HomePage,rel=>home,class=>wiki,title=>\"%res(name=>GoToHomePageLink);\");  
   %link-wiki(page=>WikiNews,rel=>News,class=>wiki,title=>\"%res(name=>GoToWikiNewsLink);\");  
   %link-wiki(page=>RecentChanges,rel=>News,class=>wiki,title=>\"%res(name=>GoToRecentChangesLink);\");  
   %link-wiki(page=>RecentChanges,mode=>rss,rel=>News,class=>wiki,title=>\"%res(name=>GoToRssPageLink);\",type=>\"application/xml\");  
   %link-wiki(page=>SearchPage,rel=>search,class=>wiki,title=>\"%res(name=>GoToSearchPageLink);\");  
   %link-wiki(page=>WikiHelp,mode=>read,rel=>help,class=>wiki,title=>\"%res(name=>GoToWikiHelpLink);\");  
   %link-wiki(page=>WikiPageLicense,rel=>copyright,class=>wiki,title=>\"%res(name=>GoToWikiPageLicenseLink);\");  
   %link-wiki(mode=>map,rel=>contents,class=>wiki-cmd,title=>\"%res(name=>ShowMapOfThisPageLink);\");  
   %link-wiki(mode=>RandomJump,up_to_date,rel=>lucky,class=>\"wiki randomlink\",title=>\"%res(name=>GoSomewhereLink);\");  
 EOH  
   #%link-viewcvs(href=>\"http://path-to-viewcvs/path-to-repository/\",rel=>history,class=>wiki-cmd,title=>\"%res(name=>ViewHistoryOfThisPageLink);\",hreflang=>en);  
 $vd{links} .= q(  %link-wiki(mode=>diff,rel=>history,class=>wiki-cmd,title=>\"%res(name=>ViewDiffOfThisPageLink);\");) if $wiki::diff::UseDiff;  
 $vd{links} .= <<EOH;  
   %link-wiki(href=>\\\"javascript:var%20WikiName=prompt('Please%20input%20the%20WikiName:','','Jump%20to%20SuikaWiki');if(WikiName)%7B_content.location.href='$url_cgi%3F'+encodeURIComponent(WikiName)%7D\\\",rel=>jump,class=>wiki-cmd,title=>\\\"%res(name=>JumpToLink);\\\");  
   %link-wiki(href=>\\\"javascript:var%20WikiName=prompt('Please%20input%20the%20WikiName:','','Jump%20to%20SuikaWiki');if(WikiName)%7B_content.location.href='$url_cgi%3Fmycmd=edit;mypage='+encodeURIComponent(WikiName)%7D\\\",rel=>jump,class=>wiki-cmd,title=>\\\"%res(name=>JumpToEditLink);\\\");  
 EOH  
 $vd{navbar} = <<'EOH';  
   %anchor-wiki(mode=>edit,rel=>edit,class=>wiki-cmd,label=>\\\"%res(name=>EditThisPage);\\\",title=>\\\"%res(name=>EditThisPageLong,accesskey=>E);\\\");  
   %anchor-wiki(rel=>view,up_to_date,class=>wiki-cmd,label=>\\\"%res(name=>ViewThisPage);\\\",title=>\\\"%res(name=>ViewThisPageLong);\\\");  
   %anchor-wiki(page=>CreatePage,class=>wiki,label=>\\\"%res(name=>GoToCreatePage);\\\",title=>\\\"%res(name=>GoToCreatePageLong);\\\");  
   %anchor-wiki(page=>IndexPage,class=>wiki,label=>\\\"%res(name=>GoToIndexPage);\\\",title=>\\\"%res(name=>GoToIndexPageLong);\\\");  
   %anchor-wiki(page=>HomePage,class=>wiki,label=>\\\"%res(name=>GoToHomePage);\\\",title=>\\\"%res(name=>GoToHomePageLong);\\\");  
   %anchor-wiki(page=>SearchPage,class=>wiki,label=>\\\"%res(name=>GoToSearchPage);\\\",title=>\\\"%res(name=>GoToSearchPageLong);\\\");  
   %anchor-wiki(mode=>RandomJump,up_to_date,rel=>lucky,class=>\\\"wiki randomlink\\\",label=>\\\"%res(name=>GoSomewhere);\\\",title=>\\\"%res(name=>GoSomewhereLong);\\\");  
   %anchor-wiki(page=>RecentChanges,class=>wiki,label=>\\\"%res(name=>GoToRecentChanges);\\\",title=>\\\"%res(name=>GoToRecentChangesLong);\\\");  
 EOH  
   
 our %ViewDefinition = (  
 read => {media => {type => 'text/html', charset => 1, expires => 120}, check => sub {1},  
   #xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 120},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"View:WebPageTitle\\");",link_meta=>"$vd{links}");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>read,add_to_toc=>0,content=>\\"%read(comment);\\");  
   %section(level=>2,id=>\\"see-also\\",title=>SeeAlso,heading,content=>\\"%search-result;\\");  
   %section(level=>2,id=>referer,title=>Referer,heading,content=>\\"%referer-list;\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(id=>last-modified,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"LastModified=\\\\\\");%last-modified;\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\\"$vd{navbar}\\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"  
     <a href=\\\\\\"http://www.hyuki.com/yukiwiki/\\\\\\" title=\\\\\\"YukiWiki 2.0.beta1.2002-05-29 &copy; 2000-2002 by Hiroshi Yuki\\\\\\">%res(name=>\\\\\\"About:Name:YukiWiki\\\\\\");</a>  
     <a href=\\\\\\"http://digit.que.ne.jp/work/\\\\\\" title=\\\\\\"WalWiki 2.0.beta1.wal.1 &copy; 2000-2002 by Makio Tsukamoto\\\\\\">%res(name=>\\\\\\"About:Name:WalWiki\\\\\\");</a>  
     <a href=\\\\\\"http://suika.fam.cx/gate/cvs/wakaba/wiki/\\\\\\" title=\\\\\\"%res(name=>\\\\\\"About:SuikaWiki:JumpToCVS\\\\\\");\\\\\\">%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;</a>  
   \\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 map => {media => {type => 'text/html', charset => 1, expires => 120}, check => sub {1},  
   #xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 120},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Map:WebPageTitle\\");",link_meta=>"$vd{links}");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>\\"link-map\\",title=>\\"Map:Title\\",heading,content=>\\"  
     <p>%res(name=>\\\\\\"Map:Description\\\\\\");</p>  
     %link-map;  
   \\");  
   %section(level=>2,id=>\\"see-also\\",title=>SeeAlso,heading,content=>\\"%search-result;\\");  
   %section(level=>2,id=>referer,title=>Referer,heading,content=>\\"%referer-list;\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\\"$vd{navbar}\\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
   
 edit => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   #xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Edit:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>edit,title=>\\"Edit:Title\\",heading,content=>\\"  
     %edit-form;  
     %section(level=>3,id=>edit-help,add_to_toc=>0,content=>\\\\\\"%read(page=>WikiEditHelp);\\\\\\");  
   \\");  
   %section(level=>2,id=>\\"see-also\\",title=>SeeAlso,heading,content=>\\"%search-result;\\");  
   %section(level=>2,id=>referer,title=>Referer,heading,content=>\\"%referer-list;\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(id=>last-modified,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"LastModified=\\\\\\");%last-modified;\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\\"$vd{navbar}\\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 adminedit => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Edit:Admin:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>edit,title=>\\"Edit:Title\\",heading,content=>\\"%edit-form(admin);\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(id=>last-modified,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"LastModified=\\\\\\");%last-modified;\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 -conflict => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   #xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Edit:Conflict:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>edit-conflict,title=>\\"Edit:Conflict:Title\\",heading,content=>\\"  
     <p>%res(name=>\\\\\\"Edit:Conflict:Description\\\\\\");</p>  
     %conflict-form;  
     %section(level=>3,id=>edit-conflict-diff,title=>\\\\\\"Edit:Conflict:Diff:Title\\\\\\",heading,content=>\\\\\\"  
       <p>%res(name=>\\\\\\\\\\\\\\"Edit:Conflict:Diff:Description\\\\\\\\\\\\\\");</p>  
       %conflict-diff;  
     \\\\\\");  
   \\");  
   %section(level=>2,id=>edit,title=>\\"Edit:Title\\",heading,content=>\\"  
     <p>%res(name=>\\\\\\"Edit:Conflict:Edit:Description\\\\\\");</p>  
     %edit-form;  
     %section(level=>3,id=>edit-help,add_to_toc=>0,content=>\\\\\\"%read(page=>WikiEditHelp);\\\\\\");  
   \\");  
   %section(level=>2,id=>\\"see-also\\",title=>SeeAlso,heading,content=>\\"%search-result;\\");  
   %section(level=>2,id=>referer,title=>Referer,heading,content=>\\"%referer-list;\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\\"$vd{navbar}\\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 -wrote => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Edit:Wrote:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   <p>%res(name=>\\"Edit:SavedSuccessfully\\");</p>  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 -deleted => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Edit:Deleted:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   <p>%res(name=>\\"Edit:PageIsDeletedSuccessfully\\");</p>  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 -error => {media => {type => 'text/html', charset => 1, expires => 60}, check => sub {1},  
   xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 60},  
   template => <<EOH},  
 %html-start;%html-head(title=>"%res(name=>\\"Error:WebPageTitle\\");",link_meta=>"$vd{links}  %html-meta(name=>ROBOTS,content=>NOINDEX);");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>error,title=>\\"Error:Title\\",heading,content=>\\"  
     <p>%error-message;</p>  
   \\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
   
 css => {media => {type => 'text/css', charset => 1, expires => 3600},  
   check => sub { ref $_[0]->format_converter ($_[0]->{magic} => 'CSS') ? 1 : 0 },  
   template => '%read(to=>CSS);'},  
 rss => {media => {type => 'application/rss+xml', charset => 1, expires => 3600},  
   check => sub { ref $_[0]->format_converter ($_[0]->{magic} => 'RSS') ? 1 : 0 },  
   template => '%read(to=>RSS);'},  
 -UnsupportedMediaType => {media => {type => 'text/html', charset => 1, expires => -1},  
   xmedia => {type => 'application/xhtml+xml', charset => 1, expires => -1},  
   check => sub {1}, template => <<EOH},  
 %html-start;%html-head(title=>"%page-name;",link_meta=>"$vd{links}");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,title=>\\"UnsupportedMediaType:Title\\",heading,content=>\\"  
     %res(name=>\\\\\\"UnsupportedMediaType:Description\\\\\\");  
   \\");  
   %section(level=>2,id=>\\"see-also\\",title=>SeeAlso,heading,content=>\\"%search-result;\\");  
   %section(level=>2,id=>referer,title=>Referer,heading,content=>\\"%referer-list;\\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
 );  
   
   
 $ViewDefinition{diff} = {media => {type => 'text/html', charset => 1, expires => 120},  
   #xmedia => {type => 'application/xhtml+xml', charset => 1, expires => 120},  
   template => <<EOH, check => sub {1}} if $wiki::diff::UseDiff;  
 %html-start;%html-head(title=>"%res(name=>\\"Diff:WebPageTitle\\");",link_meta=>"$vd{links}");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"$vd{navbar}\\");  
   %section(level=>2,id=>\\"diff\\",title=>\\"Diff:Title\\",heading,content=>\\"  
     <p>%res(name=>\\\\\\"Diff:Notice\\\\\\");</p>  
     %diff-between-previous;  
   \\");  
   %section(level=>2,id=>toc,title=>\\"TOC:Title\\",heading,add_to_toc=>0,content=>\\"%toc(drag);\\");  
   %section(class=>tools,add_to_toc=>0,content=>\\\"$vd{navbar}\\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
   
 $ViewDefinition{WithMenu} = {%{$ViewDefinition{read}}, template => <<EOH};  
 %html-start;%html-head(title=>"%res(name=>\\"View:WebPageTitle\\");",link_meta=>"$vd{links}");  
 %section(level=>1,add_to_toc=>0,type=>body,title=>"%page-name;",heading,content=>"  
   <div id=\\\"myuri\\\">%uri-wiki();</div>  
   %section(id=>tools1,class=>tools,add_to_toc=>0,content=>\\"  
     %anchor-wiki(rel=>view,up_to_date,mode=>default,class=>wiki-cmd,label=>\\\\\\"%res(name=>ReloadThisPage);\\\\\\",title=>\\\\\\"%res(name=>ReloadThisPageLong);\\\\\\");  
     $vd{navbar}  
   \\");  
   %section(level=>2,id=>side-menu,add_to_toc=>0,content=>\\"%read(page=>WikiMenuBar);\\");  
   %section(id=>content-frame,add_to_toc=>0,content=>\\"  
     %section(level=>2,id=>read,add_to_toc=>0,content=>\\\\\\"%read(comment);\\\\\\");  
     %section(level=>2,id=>\\\\\\"see-also\\\\\\",title=>SeeAlso,heading,content=>\\\\\\"%search-result;\\\\\\");  
     %section(level=>2,id=>referer,title=>Referer,heading,content=>\\\\\\"%referer-list;\\\\\\");  
     %section(level=>2,id=>toc,title=>\\\\\\"TOC:Title\\\\\\",heading,add_to_toc=>0,content=>\\\\\\"%toc(drag);\\\\\\");  
     %section(id=>last-modified,add_to_toc=>0,content=>\\\\\\"%res(name=>\\\\\\\\\\\\\\"LastModified=\\\\\\\\\\\\\\");%last-modified;\\\\\\");  
     %section(id=>footer,add_to_toc=>0,content=>\\\\\\"  
       <a href=\\\\\\\\\\\\\\"http://www.hyuki.com/yukiwiki/\\\\\\\\\\\\\\" title=\\\\\\\\\\\\\\"YukiWiki 2.0.beta1.2002-05-29 &copy; 2000-2002 by Hiroshi Yuki\\\\\\\\\\\\\\">%res(name=>\\\\\\\\\\\\\\"About:Name:YukiWiki\\\\\\\\\\\\\\");</a>  
       <a href=\\\\\\\\\\\\\\"http://digit.que.ne.jp/work/\\\\\\\\\\\\\\" title=\\\\\\\\\\\\\\"WalWiki 2.0.beta1.wal.1 &copy; 2000-2002 by Makio Tsukamoto\\\\\\\\\\\\\\">%res(name=>\\\\\\\\\\\\\\"About:Name:WalWiki\\\\\\\\\\\\\\");</a>  
       <a href=\\\\\\\\\\\\\\"http://suika.fam.cx/gate/cvs/wakaba/wiki/\\\\\\\\\\\\\\" title=\\\\\\\\\\\\\\"%res(name=>\\\\\\\\\\\\\\"About:SuikaWiki:JumpToCVS\\\\\\\\\\\\\\");\\\\\\\\\\\\\\">%res(name=>\\\\\\\\\\\\\\"About:Name:SuikaWiki\\\\\\\\\\\\\\"); %wiki-version;</a>  
     \\\\\\");  
   \\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
61    
62  1;  push our @Config, sub ($) {
63      my $WIKI = shift;
64      use FindBin q($Bin);
65      use File::Spec;
66      
67      ## -- Filesystem path mapping
68      for (
69         [db__cache__dir          => q"./wikidata/cache/"],
70         [db__cache_struct__file  => q"./wikidata/cache/struct.db"],
71         [db__content__dir        => q"./wikidata/page/"],
72         [db__content__error_log  => q"./wikidata/log/db-content.log"],
73         [db__bdb__home_dir       => q"./wikidata/lock/"],
74         [db__bdb__log_dir        => q"./wikidata/log/bdb/"],
75         [db__bdb__log_file       => q"./wikidata/log/bdb.log"],
76         [db__bdb__temp_dir       => q"./wikidata/lock/"],
77         [db__lock__dir           => q"./wikidata/lock/"],
78         [db__lock__log_file      => q"./wikidata/log/lock.log"],
79         [db__log__dir            => q"./wikidata/log/"],
80         [db__request_log__dir    => q"./wikidata/rlog/"],
81         [db__temp__dir           => q"./wikidata/lock/"],
82         [namazu__index_dir       => q"/var/namazu/index/suikawiki"],
83      ) {
84        ## On system that does not set current directory as main script
85        ## directory, you should specify it instead of using "abs_path".
86        $WIKI->{config}->{path_to}->{$_->[0]} = File::Spec->catfile ($Bin, $_->[1]);
87      }
88      
89      ## -- Namazu URI Mapping (See SuikaWiki:SuikaWiki//Namazu) --
90      $WIKI->{config}->{nmz__uri_to_uri} = sub {
91        my ($nmzuri, %opt) = @_;
92        if ($nmzuri =~ s!^\Q$opt{o}->{wiki}->{config}->{path_to}->{db__content__dir}\E/*!!o) {
93          $nmzuri =~ s/\.txt$//;
94          return $opt{o}->{wiki}->uri_reference
95                          (page => $opt{o}->{wiki}->name ([
96            map {s/([0-9A-F][0-9A-F])/pack 'C', hex $1/ge; $_}
97            split m!\.ns/!, $nmzuri
98          ]), base => 1);
99        } else {
100          $nmzuri =~ s<^/home/wakaba/public_html/([^.]+)><http://suika.fam.cx/~wakaba/$1>;
101          return ($nmzuri, $nmzuri);
102        }
103      };
104    
105      ## -- WikiPlugin
106      push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
107        my $wiki = shift;
108        
109        ## Installed plugin modules
110        $wiki->{plugin}->load_directory (qw(
111          lib/SuikaWiki/Plugin/
112          misc/plugins/
113          misc/plugins/form/
114          misc/plugins/format/
115          misc/plugins/link/
116          misc/plugins/view/
117        ));
118    
119        ## Configuration file as pseudo-plugin module
120        require 'wikidata/config.ph';
121      };
122    
123      ## -- WikiDatabase: Mapping logical to physical
124      push @{$WIKI->{event}->{database_loaded}}, sub {
125          my $wiki = shift;
126          
127          ## Main content
128          $wiki->{db}->_set_prop_db (content => {-db_open => sub {
129            require SuikaWiki::DB::FileSystem::LeafFile;
130            SuikaWiki::DB::FileSystem::LeafFile->new
131              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
132               directory_suffix => '.ns',
133               file_suffix    => '.txt',
134               root_key => $wiki->{config}->{page}->{Default},
135               -lock => $wiki->{var}->{db}->{lock_prop}->('content_prop'));
136          }, -db_close => sub {
137            my %opt = @_;
138            $opt{prop_info}->{-db}->close;
139            delete $opt{prop_info}->{-db};
140          }});
141    
142          ## Properties
143          $wiki->{db}->_set_prop_db (content_prop => {-db_open => sub {
144            require SuikaWiki::DB::FileSystem::LeafProp;
145            SuikaWiki::DB::FileSystem::LeafProp->new
146              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
147               directory_suffix => '.ns',
148               file_suffix    => '.prop',
149               root_key => $wiki->{config}->{page}->{Default},
150               -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
151          }, -db_close => sub {
152            my %opt = @_;
153            $opt{prop_info}->{-db}->close;
154            delete $opt{prop_info}->{-db};
155          }});
156          
157          ## Last modified
158          $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
159            require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
160            SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
161              (directory => $wiki->{config}->{path_to}->{db__content__dir},
162               -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
163          }, -prop => 'last_modified', -db_close => sub {
164            my %opt = @_;
165            $opt{prop_info}->{-db}->close;
166            delete $opt{prop_info}->{-db};
167          }});
168          
169          ## Cache DBs
170          require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
171          my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
172                (directory => $wiki->{config}->{path_to}->{db__cache__dir},
173                 expires => 86400 * 3, removes => 86400 * 3); # 3 days
174          $wiki->{db}->_set_prop_db (m__search_result =>
175            {-db => $cachedb, -prop => 'search_result', -db_close => sub {
176              my %opt = @_;
177              $opt{prop_info}->{-db}->close;
178              delete $opt{prop_info}->{-db};
179            }});
180          $wiki->{db}->_set_prop_db (wpp__headsummary =>
181            {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
182              my %opt = @_;
183              $opt{prop_info}->{-db}->close;
184              delete $opt{prop_info}->{-db};
185            }});
186          $wiki->{db}->_set_prop_db (ref__item_template =>
187            {-db => $cachedb, -prop => 'refereritem', -db_close => sub {
188              my %opt = @_;
189              $opt{prop_info}->{-db}->close;
190              delete $opt{prop_info}->{-db};
191            }});
192    
193          ## Berkely DB Environment Preparation
194          use BerkeleyDB;
195          my $bdbenv = new BerkeleyDB::Env
196             -Home => $wiki->{config}->{path_to}->{db__bdb__home_dir},
197             -Config => {
198               DB_DATA_DIR => $wiki->{config}->{path_to}->{db__content__dir},
199               DB_LOG_DIR => $wiki->{config}->{path_to}->{db__bdb__log_dir},
200               DB_TMP_DIR => $wiki->{config}->{path_to}->{db__bdb__temp_dir},
201             },
202             -ErrFile => $wiki->{config}->{path_to}->{db__bdb__log_file},
203             -Flags => DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL,
204             -Verbose => $wiki->{config}->{debug}->{db};
205    
206          $wiki->{db}->_set_prop_db (content__structured => {-db_open => sub {
207            require SuikaWiki::DB::Hash;
208            new SuikaWiki::DB::Hash constructor => sub {
209              use MLDBM qw(BerkeleyDB::Hash);# Storable);
210              tie my %mldb, 'MLDBM',
211                            -Filename => $wiki->{config}->{path_to}
212                                              ->{db__cache_struct__file},
213                            -Env => $bdbenv,
214                            -Flags => DB_CREATE,
215                            -Mode => 0644;
216              \%mldb;
217           };
218          }});
219          
220          ## Referer Database (See Referer plugin module)
221          $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
222            require SuikaWiki::DB::FileSystem::Count;
223            SuikaWiki::DB::FileSystem::Count->new
224              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
225               directory_suffix => '.ns',
226               file_suffix    => '.ref',
227               root_key => $wiki->{config}->{page}->{Default},
228               auto_mkdir => 0,
229               -lock => $wiki->{var}->{db}->{lock_prop}->('referer'));
230          }, -db_close => sub {
231            my %opt = @_;
232            $opt{prop_info}->{-db}->close;
233            delete $opt{prop_info}->{-db};
234          }});
235    
236          ## HTTP Request Logging Database (See RequestLog plugin module)
237          $wiki->{db}->_set_prop_db (log__http_request => {-db_open => sub {
238            require SuikaWiki::DB::FileSystem::Count;
239            SuikaWiki::DB::FileSystem::Count->new
240              (base_directory => $wiki->{config}->{path_to}->{db__request_log__dir},
241               directory_suffix => '.ns',
242               file_suffix    => '.rlog',
243               root_key => $wiki->{config}->{page}->{Default},
244               auto_mkdir => 1);
245          }, -db_close => sub {
246            my %opt = @_;
247            $opt{prop_info}->{-db}->close;
248            delete $opt{prop_info}->{-db};
249          }});
250          
251          ## Additional WikiDB properties should be defined here
252          # ...    
253      };
254    
255      push @{$WIKI->{event}->{input_close}}, sub {
256        my ($wiki, $event) = @_;
257        try {
258          SuikaWiki::Plugin->module_package ('RequestLog')
259                         ->http_request_log (wiki => $wiki,
260                                             prop => 'log__http_request');
261        } catch SuikaWiki::Plugin::error with {
262          my $err = shift;
263          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
264        };
265      };
266    
267      ## -- WikiName of special purpose WikiPages
268      $WIKI->{config}->{page} = {
269        Default         => $WIKI->name ([qw/HomePage/]),
270        InterWikiName   => $WIKI->name ([qw/Wiki InterWikiName/]),
271        NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
272        'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
273        ExpandedURI q<log:root> => $WIKI->name ([]),
274      };
275      
276      ## -- WikiNamespace constants
277      $WIKI->{config}->{name}->{space} = {
278        separator => '//',
279        separator_reg => qr#\s*//\s*#,
280        self => '.',
281        parent => '..',
282        root => '//',
283      };
284      
285      ## -- Default character codes
286      $WIKI->{config}->{charset} = {
287        ## Internal code - MUST be ASCII + 8bit coding scheme
288          internal => 'euc-jp',
289        ## Default output code
290          output => 'iso-2022-jp',
291        ## "query" part in URI reference
292          uri_query => '', # auto-detected
293          uri_query_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
294          uri_param => '', # auto-detected
295          uri_param_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
296        ## PATH_INFO part in URI reference
297          uri_path_info => 'x-utf-8-10646', ## Reserved for future use
298        ## Fragment identifier in URI reference
299          uri_fragment => 'x-punycode',     ## Reserved for possible future use
300      };
301    
302      ## -- User option for media types
303      $WIKI->{config}->{ExpandedURI q<media-type:accept-media-type>} = {
304        q<IMT:text/css##> => 1,
305        q<IMT:text/plain##> => 1,
306        q<IMT:text/x-suikawiki;version="0.9"##> => 1,
307        q<IMT:application/x.suikawiki.config;version="2.0"##> => 1,
308      };
309      
310      ## -- Expires duration templates
311      $WIKI->{config}->{entity}->{expires} = {
312        edit      => {delta => 60},
313        view      => {delta => 2*3600},
314        list      => {delta => 60},
315        lm_flaged => {delta => 30*24*3600},
316        stylesheet => {delta => 30*24*3600},
317        error     => {delta => 60},
318      };
319    
320      ## -- Debug mode
321      $WIKI->{config}->{debug} = {
322        general => 0,
323        db => 0,
324        format => 0,
325        view => 0,
326      };
327    
328    };
329    
330    =head1 SEE ALSO
331    
332    C<lib/suikawiki.pl>, C<wiki.cgi>,
333    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
334    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
335    
336    =head1 LICENSE
337    
338    Copyright 2003-2004 Wakaba <w@suika.fam.cx>.  All rights reserved.
339    
340    This program is free software; you can redistribute it and/or
341    modify it under the same terms as Perl itself.
342    
343    =cut
344    
345    1; # $Date$

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24