/[pub]/suikawiki/script/misc/plugins/SuikaWiki10.wp2
Suika

Contents of /suikawiki/script/misc/plugins/SuikaWiki10.wp2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations) (download)
Fri Dec 26 06:58:46 2003 UTC (21 years, 4 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +1 -1 lines
FILE REMOVED
Obsoleted

1 wakaba 1.1 #?SuikaWikiConfig/2.0
2    
3     Plugin:
4 wakaba 1.2 @Name: SuikaWiki20
5     @FullName: SuikaWiki 2.0 Interface Emulation
6 wakaba 1.1 @Description:
7 wakaba 1.5 This module provides transitional interface compatible with
8     SuikaWiki 2. Note that this module will be removed in near future.
9 wakaba 1.1 @License: %%GPL%%
10     @Author[list]:
11     Wakaba <w@suika.fam.cx>
12 wakaba 1.6 @Date.RCS: $Date: 2003/12/26 06:57:44 $
13 wakaba 1.1 @RequiredModule[list]:
14     main
15    
16     ViewDefinition:
17     @Mode: #default
18     @Condition:
19     @@output: http-cgi
20 wakaba 1.2 @@http-method[list]:
21     GET
22     HEAD
23 wakaba 1.3 POST
24 wakaba 1.1 @Description: fallback mode
25     @method:
26     @@@:
27     $self->{view}->init_db;
28     require SuikaWiki::Output::HTTP;
29     my $output = SuikaWiki::Output::HTTP->new (wiki => $self->{view}->{wiki},
30     view => $self->{view},
31     viewobj => $self);
32    
33     for (@{$self->{view}->{wiki}->{var}->{client}->{used_for_negotiate}},
34     'Accept-Language') {
35     $output->add_negotiate_header_field ($_);
36     }
37    
38     my $view = $opt->{condition}->{mode};
39     require SuikaWiki::View;
40     my $content = $self->{view}->{wiki}->{db}->get
41     (content => $self->{view}->{wiki}->{var}->{page});
42     my $lm = $self->{view}->{wiki}->{db}->get
43     (lastmodified => $self->{view}->{wiki}->{var}->{page});
44     my $page = join '//', @{$self->{view}->{wiki}->{var}->{page}};
45     ## Get content and its meta info
46     my ($magic, $content) = SuikaWiki::Plugin->magic_and_content ($content);
47     $magic ||= '#?SuikaWiki/0.9';
48 wakaba 1.4 my $o = bless {
49     param => \%main::form, page => $page, toc => [],
50 wakaba 1.1 magic => $magic, content => $content,
51 wakaba 1.4 }, 'SuikaWiki::Plugin';
52 wakaba 1.1
53     my $view_def = SuikaWiki::View->definition ($view);
54     if (!$view_def->check ($o)) {
55     print "Status: 406 Unsupported Media Type\n";
56     $view = '-UnsupportedMediaType';
57     $view_def = SuikaWiki::View->definition ($view);
58     }
59     my $prop = $view_def->properties;
60    
61     my $opt2 = {viewdef => $view_def, prop => $prop, o => $o};
62     $self->main_pre ($opt, $opt2); ## TODO: or die
63    
64     my $media = $prop->{media};
65 wakaba 1.2 if ($prop->{xmedia} &&
66     (index ($self->{view}->{wiki}->{var}->{client}->{user_agent_name},
67     'Gecko') > -1)) { ## TODO: conneg
68 wakaba 1.1 $media = $prop->{xmedia};
69     $o->{media} = $media;
70     }
71    
72     if (index ($magic, 'interactive="yes"') > -1) {
73     $output->set_expires (delta => 1);
74     } else {
75     $output->set_last_modified (time => $lm);
76     $output->set_expires (delta => $media->{expires})
77     if $media->{expires} > -1;
78     }
79    
80    
81     $output->{entity}->{media_type} = $media->{type};
82     $output->{entity}->{charset}
83     = $self->{view}->{wiki}->{config}->{charset}->{output}
84     if $media->{charset};
85     $output->add_header_field ('Content-Style-Type' => 'text/css');
86    
87     ## Output HTTP message body
88     my $fmt = SuikaWiki::Plugin->formatter ('view');
89     my $s = $fmt->replace ($view_def->as_string => $o, {formatter => $fmt});
90    
91     $output->append_to_body ($s);
92 wakaba 1.2 $output->output (output => 'http-cgi');
93 wakaba 1.1
94     $self->main_post ($opt, $opt2); ## TODO: or die
95     @@Name: main
96     @method:
97     @@@:
98     my $prop = $opt2->{prop};
99     if ($prop->{preprocess}) {
100     exit unless &{$prop->{preprocess}} (o => $opt2->{o});
101     }
102     1;
103     @@Name: main_pre
104     @method:
105     @@@:
106     1;
107     @@Name: main_post

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24