/[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 by wakaba, Sun Apr 25 07:12:56 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      ## -- WikiPlugin
79      push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
80        my $wiki = shift;
81        
82        ## Installed plugin modules
83        $wiki->{plugin}->load_directory (qw(
84          lib/SuikaWiki/Plugin/
85          misc/plugins/
86          misc/plugins/form/
87          misc/plugins/format/
88          misc/plugins/link/
89          misc/plugins/view/
90        ));
91        
92        ## Configuration file as pseudo-plugin module
93        require 'wikidata/config.ph';
94      };
95    
96      ## -- WikiDatabase: Mapping logical to physical
97      push @{$WIKI->{event}->{database_loaded}}, sub {
98          my $wiki = shift;
99          
100          ## Main content
101          $wiki->{db}->_set_prop_db (content => {-db_open => sub {
102            require SuikaWiki::DB::FileSystem::LeafFile;
103            SuikaWiki::DB::FileSystem::LeafFile->new
104              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
105               directory_suffix => '.ns',
106               file_suffix    => '.txt',
107               root_key => $wiki->{config}->{page}->{Default},
108               -lock => $wiki->{var}->{db}->{lock_prop}->('content_prop'));
109          }, -db_close => sub {
110            my %opt = @_;
111            $opt{prop_info}->{-db}->close;
112            delete $opt{prop_info}->{-db};
113          }});
114          
115          ## Properties
116          $wiki->{db}->_set_prop_db (content_prop => {-db_open => sub {
117            require SuikaWiki::DB::FileSystem::LeafProp;
118            SuikaWiki::DB::FileSystem::LeafProp->new
119              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
120               directory_suffix => '.ns',
121               file_suffix    => '.prop',
122               root_key => $wiki->{config}->{page}->{Default},
123               -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
124          }, -db_close => sub {
125            my %opt = @_;
126            $opt{prop_info}->{-db}->close;
127            delete $opt{prop_info}->{-db};
128          }});
129          
130          ## Last modified
131          $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
132            require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
133            SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
134              (directory => $wiki->{config}->{path_to}->{db__content__dir},
135               -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
136          }, -prop => 'last_modified', -db_close => sub {
137            my %opt = @_;
138            $opt{prop_info}->{-db}->close;
139            delete $opt{prop_info}->{-db};
140          }});
141          
142          ## Cache DBs
143          require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
144          my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
145                (directory => $wiki->{config}->{path_to}->{db__cache__dir},
146                 expires => 86400 * 3, removes => 86400 * 3); # 3 days
147          $wiki->{db}->_set_prop_db (m__search_result =>
148            {-db => $cachedb, -prop => 'search_result', -db_close => sub {
149              my %opt = @_;
150              $opt{prop_info}->{-db}->close;
151              delete $opt{prop_info}->{-db};
152            }});
153          $wiki->{db}->_set_prop_db (wpp__headsummary =>
154            {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
155              my %opt = @_;
156              $opt{prop_info}->{-db}->close;
157              delete $opt{prop_info}->{-db};
158            }});
159          $wiki->{db}->_set_prop_db (ref__item_template =>
160            {-db => $cachedb, -prop => 'refereritem', -db_close => sub {
161              my %opt = @_;
162              $opt{prop_info}->{-db}->close;
163              delete $opt{prop_info}->{-db};
164            }});
165          
166          ## Referer Database (See Referer plugin module)
167          $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
168            require SuikaWiki::DB::FileSystem::Count;
169            SuikaWiki::DB::FileSystem::Count->new
170              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
171               directory_suffix => '.ns',
172               file_suffix    => '.ref',
173               root_key => $wiki->{config}->{page}->{Default},
174               auto_mkdir => 0,
175               -lock => $wiki->{var}->{db}->{lock_prop}->('referer'));
176          }, -db_close => sub {
177            my %opt = @_;
178            $opt{prop_info}->{-db}->close;
179            delete $opt{prop_info}->{-db};
180          }});
181    
182          ## Additional WikiDB properties should be defined here
183          # ...    
184      };
185    
186      push @{$WIKI->{event}->{input_close}}, sub {
187        my ($wiki, $event) = @_;
188        try {
189          SuikaWiki::Plugin->module_package ('Referer')
190                         ->add_referer (wiki => $wiki,
191                                        uri => $wiki->{input}->meta_variable
192                                                 ('HTTP_REFERER'));
193        } catch SuikaWiki::Plugin::error with {
194          my $err = shift;
195          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
196        };
197        try {
198          SuikaWiki::Plugin->module_package ('RequestLog')
199                         ->http_request_log (wiki => $wiki,
200                                             prop => 'log__http_request');
201        } catch SuikaWiki::Plugin::error with {
202          my $err = shift;
203          $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
204        };
205      };
206    
207      ## -- WikiName of special purpose WikiPages
208      $WIKI->{config}->{page} = {
209        Default         => $WIKI->name ([qw/HomePage/]),
210        InterWikiName   => $WIKI->name ([qw/Wiki InterWikiName/]),
211        NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
212        'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
213      };
214      
215      ## -- WikiNamespace constants
216      $WIKI->{config}->{name}->{space} = {
217        separator => '//',
218        separator_reg => qr#\s*//\s*#,
219        self => '.',
220        parent => '..',
221        root => '//',
222      };
223      
224      ## -- Default character codes
225      $WIKI->{config}->{charset} = {
226        ## Internal code - MUST be ASCII + 8bit coding scheme
227          internal => 'euc-jp',
228        ## Default output code
229          output => 'iso-2022-jp',
230        ## "query" part in URI reference
231          uri_query => '', # auto-detected
232          uri_query_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
233          uri_param => '', # auto-detected
234          uri_param_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
235        ## PATH_INFO part in URI reference
236          uri_path_info => 'x-utf-8-10646', ## Reserved for future use
237        ## Fragment identifier in URI reference
238          uri_fragment => 'x-punycode',     ## Reserved for possible future use
239      };
240      
241      ## -- User option for media types
242      $WIKI->{config}->{ExpandedURI q<media-type:accept-media-type>} = {
243        q<IMT:text/css##> => 1,
244        q<IMT:text/plain##> => 1,
245        q<IMT:text/x-suikawiki;version="0.9"##> => 1,
246        q<IMT:application/x.suikawiki.config;version="2.0"##> => 1,
247      };
248      
249      ## -- Expires duration templates
250      $WIKI->{config}->{entity}->{expires} = {
251        edit      => {delta => 60},
252        view      => {delta => 2*3600},
253        list      => {delta => 60},
254        lm_flaged => {delta => 30*24*3600},
255        stylesheet => {delta => 30*24*3600},
256        error     => {delta => 60},
257      };
258    
259      ## -- Debug mode
260      $WIKI->{config}->{debug} = {
261        general => 0,
262        db => 0,
263        format => 0,
264        view => 0,
265      };
266    
267    };
268    
269    =head1 SEE ALSO
270    
271    C<lib/suikawiki.pl>, C<wiki.cgi>,
272    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
273    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
274    
275  =head1 LICENSE  =head1 LICENSE
276    
277  Copyright 2003 Wakaba <w@suika.fam.cx>  Copyright 2003-2004 Wakaba <w@suika.fam.cx>.  All rights reserved.
278    
279  This program is free software; you can redistribute it and/or  This program is free software; you can redistribute it and/or
280  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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24