/[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.2.1 by wakaba, Sun Oct 5 10:25:33 2003 UTC revision 1.20 by wakaba, Fri May 7 07:51:33 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          ## Note: If your Wiki CGI URI is <http://foo.example/path/to/wiki.cgi>,    BEGIN {
25          ##              cookie-path: /path/to/      $Message::Util::Formatter::Base::Token = qr/[\w._+\x80-\xFF-]+/;
26          ##              script-short-name: wiki.cgi      require Message::Util::Formatter::Base;
         ##       URI parts MUST NOT contains "&" and/or non-URI characters.  
   our %uri = (  
     cookie_path         => '/temp/wiki/',  
     external_script     => 'script/',  
     script_short_name   => 'wiki',  
   );  
   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}$uri{script_short_name}";  
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      CachePrefix         => q(./wikidata/.cache.),  push our @Config, sub ($) {
35      WikiDataBase        => q(./wikidata/page),    my $WIKI = shift;
36      convert             => q(/usr/X11R6/bin/convert),    use FindBin q($Bin);
37    );    use File::Spec;
38      
39  ## Type of WikiPage Database    ## -- Filesystem path mapping
40    #our $modifier_dbtype = 'AnyDBM_File';  # Fast, not available on some server, page size limited.    for (
41    #our $modifier_dbtype = 'dbmopen';      # Fast, not available on some server, page size limited.       [db__cache__dir          => q"./wikidata/cache/"],
42    #our $modifier_dbtype = 'Yuki::YukiWikiDB';     # Slow, available on all environment.       [db__cache_struct__file  => q"./wikidata/cache/struct.db"],
43    #our $modifier_dbtype = 'Yuki::YukiWikiDB2';     # Slow, available on all environment.       [db__content__dir        => q"./wikidata/page/"],
44    our $modifier_dbtype = 'Yuki::YukiWikiDBMeta';     # Slow, available on all environment.       [db__content__error_log  => q"./wikidata/log/db-content.log"],
45    our $use_exists = 1; # If you can use 'exists' method for your DB.       [db__bdb__home_dir       => q"./wikidata/lock/"],
46         [db__bdb__log_dir        => q"./wikidata/log/bdb/"],
47  ## Name of Special WikiPage (linked as parts of navigations)       [db__bdb__log_file       => q"./wikidata/log/bdb.log"],
48    our %PageName = (       [db__bdb__temp_dir       => q"./wikidata/lock/"],
49      FrontPage   => 'HomePage',       [db__lock__dir           => q"./wikidata/lock/"],
50      IndexPage   => 'IndexPage',       [db__lock__log_file      => q"./wikidata/log/lock.log"],
51      SearchPage  => 'SearchPage',       [db__log__dir            => q"./wikidata/log/"],
52      CreatePage  => 'CreatePage',       [db__temp__dir           => q"./wikidata/lock/"],
53      RecentChanges       => 'RecentChanges',  #     [namazu__index_dir       => q"/var/namazu/index/wiki"],
54      UserAgentList       => 'WikiUserAgentList',    ) {
55      AdminSpecialPage    => "\x11\x11Admin\x11Special\x11Page\x11\x11",      ## On system that does not set current directory as main script
56    );      ## directory, you should specify it instead of using "abs_path".
57        $WIKI->{config}->{path_to}->{$_->[0]} = File::Spec->rel2abs ($_->[1], $Bin);
58  ## (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=>edit,title=>\\"Edit:Rename:Title\\",heading,content=>  
     \\"%wp-rename-form-start;  
     %format(context=>form_input,template=>\\\\\\\"  
       %text(id=>to,label=>\\\\\\\\\\\\\\\"Edit:Rename:To\\\\\\\\\\\\\\\",size=>10);  
       %submit;  
     \\\\\\\");  
     %form-end;\\"  
   );  
   %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  
   
 $ViewDefinition{pi_wp__rename} = {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}\\");  
   %section(level=>2,id=>edit,title=>\\"Edit:Rename:Title\\",heading,content=>\\"%wp-renaming;\\");  
   %section(id=>footer,add_to_toc=>0,content=>\\"%res(name=>\\\\\\"About:Name:SuikaWiki\\\\\\"); %wiki-version;\\");  
 %apply-user-preferred-style;");%html-end;  
 EOH  
59    
60  =head1 NAME  =begin comment
61    
62  suikawiki-config.ph --- SuikaWiki: site configuration script    ## -- Namazu URI Mapping (See SuikaWiki:SuikaWiki//Namazu) --
63      $WIKI->{config}->{nmz__uri_to_uri} = sub {
64        my ($nmzuri, %opt) = @_;
65        if ($nmzuri =~ s!^\Q$opt{o}->{wiki}->{config}->{path_to}->{db__content__dir}\E/*!!o) {
66          $nmzuri =~ s/\.txt$//;
67          return $opt{o}->{wiki}->uri_reference
68                          (page => $opt{o}->{wiki}->name ([
69            map {s/([0-9A-F][0-9A-F])/pack 'C', hex $1/ge; $_}
70            split m!\.ns/!, $nmzuri
71          ]), base => 1);
72        } else {
73          return ($nmzuri, $nmzuri);
74        }
75      };
76    
77    =end comment
78    
79    =cut
80    
81      ## -- WikiPlugin
82      push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
83        my $wiki = shift;
84        
85        ## Installed plugin modules
86        $wiki->{plugin}->load_directory (qw(
87          lib/SuikaWiki/Plugin/
88          misc/plugins/
89          misc/plugins/form/
90          misc/plugins/format/
91          misc/plugins/link/
92          misc/plugins/view/
93        ));
94        
95        ## Configuration file as pseudo-plugin module
96        require 'wikidata/config.ph';
97      };
98    
99      ## -- WikiDatabase: Mapping logical to physical
100      push @{$WIKI->{event}->{database_loaded}}, sub {
101          my $wiki = shift;
102          
103          ## Main content
104          $wiki->{db}->_set_prop_db (content => {-db_open => sub {
105            require SuikaWiki::DB::FileSystem::LeafFile;
106            SuikaWiki::DB::FileSystem::LeafFile->new
107              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
108               directory_suffix => '.ns',
109               file_suffix    => '.txt',
110               root_key => $wiki->{config}->{page}->{Default},
111               -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
112          }, -db_close => sub {
113            my %opt = @_;
114            $opt{prop_info}->{-db}->close;
115            delete $opt{prop_info}->{-db};
116          }});
117          
118          ## Properties
119          $wiki->{db}->_set_prop_db (content_prop => {-db_open => sub {
120            require SuikaWiki::DB::FileSystem::LeafProp;
121            SuikaWiki::DB::FileSystem::LeafProp->new
122              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
123               directory_suffix => '.ns',
124               file_suffix    => '.prop',
125               root_key => $wiki->{config}->{page}->{Default},
126               -lock => $wiki->{var}->{db}->{lock_prop}->('content_prop'));
127          }, -db_close => sub {
128            my %opt = @_;
129            $opt{prop_info}->{-db}->close;
130            delete $opt{prop_info}->{-db};
131          }});
132          
133          ## Last modified
134          $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
135            require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
136            SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
137              (directory => $wiki->{config}->{path_to}->{db__content__dir},
138               -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
139          }, -prop => 'last_modified', -db_close => sub {
140            my %opt = @_;
141            $opt{prop_info}->{-db}->close;
142            delete $opt{prop_info}->{-db};
143          }});
144          
145          ## Cache DBs
146          require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
147          my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
148                (directory => $wiki->{config}->{path_to}->{db__cache__dir},
149                 expires => 86400 * 3, removes => 86400 * 3); # 3 days
150          $wiki->{db}->_set_prop_db (m__search_result =>
151            {-db => $cachedb, -prop => 'search_result', -db_close => sub {
152              my %opt = @_;
153              $opt{prop_info}->{-db}->close;
154              delete $opt{prop_info}->{-db};
155            }});
156          $wiki->{db}->_set_prop_db (wpp__headsummary =>
157            {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
158              my %opt = @_;
159              $opt{prop_info}->{-db}->close;
160              delete $opt{prop_info}->{-db};
161            }});
162          $wiki->{db}->_set_prop_db (ref__item_template =>
163            {-db => $cachedb, -prop => 'refereritem', -db_close => sub {
164              my %opt = @_;
165              $opt{prop_info}->{-db}->close;
166              delete $opt{prop_info}->{-db};
167            }});
168          
169          ## Referer Database (See Referer plugin module)
170          $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
171            require SuikaWiki::DB::FileSystem::Count;
172            SuikaWiki::DB::FileSystem::Count->new
173              (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
174               directory_suffix => '.ns',
175               file_suffix    => '.ref',
176               root_key => $wiki->{config}->{page}->{Default},
177               auto_mkdir => 0,
178               -lock => $wiki->{var}->{db}->{lock_prop}->('referer'));
179          }, -db_close => sub {
180            my %opt = @_;
181            $opt{prop_info}->{-db}->close;
182            delete $opt{prop_info}->{-db};
183          }});
184    
185          ## Additional WikiDB properties should be defined here
186          # ...    
187      };
188    
189      ## -- WikiName of special purpose WikiPages
190      $WIKI->{config}->{page} = {
191        Default         => $WIKI->name ([qw/HomePage/]),
192        InterWikiName   => $WIKI->name ([qw/Wiki InterWikiName/]),
193        NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
194        'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
195      };
196      
197      ## -- WikiNamespace constants
198      $WIKI->{config}->{name}->{space} = {
199        separator => '//',
200        separator_reg => qr#\s*//\s*#,
201        self => '.',
202        parent => '..',
203        root => '//',
204      };
205      
206      ## -- Default character codes
207      $WIKI->{config}->{charset} = {
208        ## Internal code - MUST be ASCII + 8bit coding scheme
209          internal => 'euc-jp',
210        ## Default output code
211          output => 'iso-2022-jp',
212        ## "query" part in URI reference
213          uri_query => '', # auto-detected
214          uri_query_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
215          uri_param => '', # auto-detected
216          uri_param_encode => 'euc-jp',     ## For compatibility w/ SuikaWiki 2
217        ## PATH_INFO part in URI reference
218          uri_path_info => 'x-utf-8-10646', ## Reserved for future use
219        ## Fragment identifier in URI reference
220          uri_fragment => 'x-punycode',     ## Reserved for possible future use
221      };
222      
223      ## -- User option for media types
224      $WIKI->{config}->{ExpandedURI q<media-type:accept-media-type>} = {
225        q<IMT:text/css##> => 1,
226        q<IMT:text/plain##> => 1,
227        q<IMT:text/x-suikawiki;version="0.9"##> => 1,
228        q<IMT:application/x.suikawiki.config;version="2.0"##> => 1,
229      };
230      
231      ## -- Expires duration templates
232      $WIKI->{config}->{entity}->{expires} = {
233        edit      => {delta => 60},
234        view      => {delta => 2*3600},
235        list      => {delta => 60},
236        lm_flaged => {delta => 30*24*3600},
237        stylesheet => {delta => 30*24*3600},
238        error     => {delta => 60},
239      };
240    
241      ## -- Debug mode
242      $WIKI->{config}->{debug} = {
243        general => 0,
244        db => 0,
245        format => 0,
246        view => 0,
247      };
248    
249    };
250    
251    =head1 SEE ALSO
252    
253    C<lib/suikawiki.pl>, C<wiki.cgi>,
254    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
255    <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
256    
257  =head1 LICENSE  =head1 LICENSE
258    
259  Copyright 2003 Wakaba <w@suika.fam.cx>  Copyright 2003-2004 Wakaba <w@suika.fam.cx>.  All rights reserved.
260    
261  This program is free software; you can redistribute it and/or  This program is free software; you can redistribute it and/or
262  modify it under the same terms as Perl itself.  modify it under the same terms as Perl itself.

Legend:
Removed from v.1.4.2.1  
changed lines
  Added in v.1.20

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24