/[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.17.2.1 by wakaba, Wed Aug 11 00:02:08 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    ## These lines should be removed after utf8 support
24    our %uri = (    BEGIN {
25      cookie_path => '/temp/wiki/',      $Message::Util::Formatter::Base::Token = qr/[\w._+\x80-\xFF-]+/;
26      external_script     => 'script/',      require Message::Util::Formatter::Base;
   );  
   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  
27    }    }
28    $uri{wiki} = $url_cgi;    use Message::Util::Error;
29    
30  ## Path to modules and databases  use Message::Util::QName::General [q<ExpandedURI>], {
31    use lib qw!lib!;    'media-type' => q<http://suika.fam.cx/~wakaba/-temp/2004/04/24/mt#>,
32    $SuikaWiki::Plugin::plugin_directory = q(lib/SuikaWiki/Plugin/);  };
33    our %PathTo = (       ## Path to your data, from the main CGI script (NOT from this config script)  
34      CacheHeadline       => q(./wikidata/.headline.cache),  push our @Config, sub ($) {
35      CachePrefix         => q(./wikidata/.cache.),    my $WIKI = shift;
36      CacheSearchResult   => q(./wikidata/.search.cache),    use Cwd qw(abs_path);
37      WikiDataBase        => q(./wikidata/page),    
38    );    ## -- Filesystem path mapping
39      for (
40  ## Type of WikiPage Database       [db__cache__dir          => q"./wikidata/cache/"],
41    #our $modifier_dbtype = 'AnyDBM_File';  # Fast, not available on some server, page size limited.       [db__cache_struct__file  => q"./wikidata/cache/struct.db"],
42    #our $modifier_dbtype = 'dbmopen';      # Fast, not available on some server, page size limited.       [db__content__dir        => q"./wikidata/page/"],
43    #our $modifier_dbtype = 'Yuki::YukiWikiDB';     # Slow, available on all environment.       [db__content__error_log  => q"./wikidata/log/db-content.log"],
44    #our $modifier_dbtype = 'Yuki::YukiWikiDB2';     # Slow, available on all environment.       [db__bdb__home_dir       => q"./wikidata/lock/"],
45    our $modifier_dbtype = 'Yuki::YukiWikiDBMeta';     # Slow, available on all environment.       [db__bdb__log_dir        => q"./wikidata/log/bdb/"],
46    our $use_exists = 1; # If you can use 'exists' method for your DB.       [db__bdb__log_file       => q"./wikidata/log/bdb.log"],
47         [db__bdb__temp_dir       => q"./wikidata/lock/"],
48  ## Name of Special WikiPage (linked as parts of navigations)       [db__lock__dir           => q"./wikidata/lock/"],
49    our %PageName = (       [db__lock__log_file      => q"./wikidata/log/lock.log"],
50      FrontPage   => 'HomePage',       [db__log__dir            => q"./wikidata/log/"],
51      IndexPage   => 'IndexPage',       [db__temp__dir           => q"./wikidata/lock/"],
52      SearchPage  => 'SearchPage',  #     [namazu__index_dir       => q"/var/namazu/index/wiki"],
53      CreatePage  => 'CreatePage',    ) {
54      ErrorPage   => 'ErrorPage',      ## On system that does not set current directory as main script
55      RecentChanges       => 'RecentChanges',      ## directory, you should specify it instead of using "abs_path".
56      AdminSpecialPage    => "\x11\x11Admin\x11Special\x11Page\x11\x11",      $WIKI->{config}->{path_to}->{$_->[0]} = abs_path $_->[1];
57      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  
58    
59  =head1 NAME  =begin comment
60    
61  suikawiki-config.ph --- SuikaWiki: site configuration script    ## -- Namazu URI Mapping (See SuikaWiki:SuikaWiki//Namazu) --
62      $WIKI->{config}->{nmz__uri_to_uri} = sub {
63        my ($nmzuri, %opt) = @_;
64        if ($nmzuri =~ s!^\Q$opt{o}->{wiki}->{config}->{path_to}->{db__content__dir}\E/*!!o) {
65          $nmzuri =~ s/\.txt$//;
66          return $opt{o}->{wiki}->uri_reference
67                          (page => $opt{o}->{wiki}->name ([
68            map {s/([0-9A-F][0-9A-F])/pack 'C', hex $1/ge; $_}
69            split m!\.ns/!, $nmzuri
70          ]), base => 1);
71        } else {
72          return ($nmzuri, $nmzuri);
73        }
74      };
75    
76    =end comment
77    
78    =cut
79    
80      ## -- WikiPlugin
81      push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
82        my $wiki = shift;
83        
84        ## Installed plugin modules
85        $wiki->{plugin}->load_directory (qw(
86          lib/SuikaWiki/Plugin/
87          misc/plugins/
88          misc/plugins/form/
89          misc/plugins/format/
90          misc/plugins/link/
91          misc/plugins/view/
92        ));
93        
94        ## Configuration file as pseudo-plugin module
95        require 'wikidata/config.ph';
96      };
97    
98      ## -- WikiDatabase: Mapping logical to physical
99      push @{$WIKI->{event}->{database_loaded}}, sub {
100          my $wiki = shift;
101          
102          ## Main content
103          $wiki->{db}->_set_prop_db (content => {-db_open => sub {
104            require SuikaWiki::DB::Logical;
105            my $db = SuikaWiki::DB::Logical->new;
106            $db->_set_prop_db (content => {-db_open => sub {
107              require SuikaWiki::DB::FileSystem::LeafFile;
108              SuikaWiki::DB::FileSystem::LeafFile->new
109                (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
110                 directory_suffix => '.ns',
111                 file_suffix    => '.txt',
112                 root_key => $wiki->{config}->{page}->{Default},
113                 -lock => $wiki->{var}->{db}->{lock_prop}
114                               ->('content', name => 'content'));
115            }, -db_close => sub {
116              my %opt = @_;
117              $opt{prop_info}->{-db}->close;
118              delete $opt{prop_info}->{-db};
119            }});
120            $db->_set_prop_db (content_seqed => {-db_open => sub {
121              require SuikaWiki::DB::FileSystem::Seq;
122              SuikaWiki::DB::FileSystem::Seq->new
123                (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
124                 directory_suffix => 'nnn.ns',
125                 file_suffix    => '.txt',
126                 -lock => $wiki->{var}->{db}->{lock_prop}
127                               ->('content', name => 'content_seqed'));
128            }, -db_close => sub {
129              my %opt = @_;
130              $opt{prop_info}->{-db}->close;
131              delete $opt{prop_info}->{-db};
132            }});
133            $db;
134          }, -prop => sub {
135            my (undef, $prop, $key, %opt) = @_;
136            ($key and @$key == 1 and $key->[0] =~ /^[1-9][0-9]*$/)
137              ? 'content_seqed' : $opt{method} eq '_next_number' ? 'content_seqed' : 'content';
138          }, -db_close => sub {
139            my %opt = @_;
140            $opt{prop_info}->{-db}->close;
141            delete $opt{prop_info}->{-db};
142          }});
143          
144          $wiki->{db}->_set_prop_db (content_map => {-db_open => sub {
145            require SuikaWiki::DB::FileSystem::LeafFile;
146            SuikaWiki::DB::FileSystem::LeafFile->new
147              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
148               directory_suffix => 'nnn.ns',
149               file_suffix    => '.map',
150               -lock => $wiki->{var}->{db}->{lock_prop}
151                             ->('content', name => 'content_map'));
152          }, -db_close => sub {
153            my %opt = @_;
154            $opt{prop_info}->{-db}->close;
155            delete $opt{prop_info}->{-db};
156          }});
157    
158          ## Properties
159          $wiki->{db}->_set_prop_db (content_prop => {-db_open => sub {
160            require SuikaWiki::DB::FileSystem::LeafProp;
161            SuikaWiki::DB::FileSystem::LeafProp->new
162              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
163               directory_suffix => '.ns',
164               file_suffix    => '.prop',
165               root_key => $wiki->{config}->{page}->{Default},
166               -lock => $wiki->{var}->{db}->{lock_prop}->('content_prop'));
167          }, -db_close => sub {
168            my %opt = @_;
169            $opt{prop_info}->{-db}->close;
170            delete $opt{prop_info}->{-db};
171          }});
172          
173          ## Last modified
174          $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
175            require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
176            SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
177              (directory => $wiki->{config}->{path_to}->{db__content__dir},
178               -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
179          }, -prop => sub {'last_modified'}, -db_close => sub {
180            my %opt = @_;
181            $opt{prop_info}->{-db}->close;
182            delete $opt{prop_info}->{-db};
183          }});
184          
185          ## Cache DBs
186          require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
187          my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
188                (directory => $wiki->{config}->{path_to}->{db__cache__dir},
189                 expires => 86400 * 3, removes => 86400 * 3); # 3 days
190          $wiki->{db}->_set_prop_db (m__search_result =>
191            {-db => $cachedb, -db_close => sub {
192              my %opt = @_;
193              $opt{prop_info}->{-db}->close;
194              delete $opt{prop_info}->{-db};
195            }});
196          $wiki->{db}->_set_prop_db (wpp__headsummary =>
197            {-db => $cachedb, -db_close => sub {
198              my %opt = @_;
199              $opt{prop_info}->{-db}->close;
200              delete $opt{prop_info}->{-db};
201            }});
202          $wiki->{db}->_set_prop_db (ref__item_template =>
203            {-db => $cachedb, -db_close => sub {
204              my %opt = @_;
205              $opt{prop_info}->{-db}->close;
206              delete $opt{prop_info}->{-db};
207            }});
208          
209          ## Referer Database (See Referer plugin module)
210          $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
211            require SuikaWiki::DB::FileSystem::Count;
212            SuikaWiki::DB::FileSystem::Count->new
213              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
214               directory_suffix => '.ns',
215               file_suffix    => '.ref',
216               root_key => $wiki->{config}->{page}->{Default},
217               auto_mkdir => 0,
218               -lock => $wiki->{var}->{db}->{lock_prop}->('referer'));
219          }, -db_close => sub {
220            my %opt = @_;
221            $opt{prop_info}->{-db}->close;
222            delete $opt{prop_info}->{-db};
223          }});
224    
225          ## Additional WikiDB properties should be defined here
226          # ...    
227      };
228    
229      ## -- WikiName of special purpose WikiPages
230      $WIKI->{config}->{page} = {
231        Default         => $WIKI->name ([qw/HomePage/]),
232        InterWikiName   => $WIKI->name ([qw/Wiki InterWikiName/]),
233        NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
234        'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
235      };
236    
237      ## -- Mode
238      $WIKI->{config}->{mode}->{default} = 'para--read';
239      
240      ## -- WikiNamespace constants
241      $WIKI->{config}->{name}->{space} = {
242        separator => '//',
243        separator_reg => qr#\s*//\s*#,
244        self => '.',
245        parent => '..',
246        root => '//',
247      };
248      
249      ## -- Default character codes
250      $WIKI->{config}->{charset} = {
251        ## Internal code - MUST be ASCII + 8bit coding scheme
252          internal => 'euc-jp',
253        ## Default output code
254          output => 'iso-2022-jp',
255        ## "query" part in URI reference
256          uri_query => '', # auto-detected
257          uri_query_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
258          uri_param => '', # auto-detected
259          uri_param_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
260        ## PATH_INFO part in URI reference
261          uri_path_info => 'x-utf-8-10646', ## Reserved for future use
262        ## Fragment identifier in URI reference
263          uri_fragment => 'x-punycode',     ## Reserved for possible future use
264      };
265      
266      ## -- User option for media types
267      $WIKI->{config}->{ExpandedURI q<media-type:accept-media-type>} = {
268        q<IMT:text/css##> => 1,
269        q<IMT:text/plain##> => 1,
270        q<IMT:text/x-suikawiki;version="0.9"##> => 1,
271        q<IMT:application/x.suikawiki.config;version="2.0"##> => 1,
272      };
273      
274      ## -- Expires duration templates
275      $WIKI->{config}->{entity}->{expires} = {
276        edit      => {delta => 60},
277        view      => {delta => 2*3600},
278        list      => {delta => 60},
279        lm_flaged => {delta => 30*24*3600},
280        stylesheet => {delta => 30*24*3600},
281        error     => {delta => 60},
282      };
283    
284      ## -- Debug mode
285      $WIKI->{config}->{debug} = {
286        general => 0,
287        db => 0,
288        format => 0,
289        view => 0,
290      };
291    
292    };
293    
294    =head1 SEE ALSO
295    
296    C<lib/suikawiki.pl>, C<wiki.cgi>,
297    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
298    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
299    
300  =head1 LICENSE  =head1 LICENSE
301    
302  Copyright 2003 Wakaba <w@suika.fam.cx>  Copyright 2003-2004 Wakaba <w@suika.fam.cx>.  All rights reserved.
303    
304  This program is free software; you can redistribute it and/or  This program is free software; you can redistribute it and/or
305  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.17.2.1

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24