/[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.3 - (hide annotations) (download)
Sat Oct 25 06:41:10 2003 UTC (22 years, 2 months ago) by wakaba
Branch: MAIN
Changes since 1.2: +2 -12 lines
Don't call print_header

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     This module provides tranditional interface compatible with
8     SuikaWiki 1.0.
9     @License: %%GPL%%
10     @Author[list]:
11     Wakaba <w@suika.fam.cx>
12 wakaba 1.3 @Date.RCS: $Date: 2003/10/18 07:08:34 $
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     my $o = bless {param => \%main::form, page => $page, toc => [],
49     magic => $magic, content => $content,
50     &main::_compatible_options ()}, 'SuikaWiki::Plugin';
51    
52     my $view_def = SuikaWiki::View->definition ($view);
53     if (!$view_def->check ($o)) {
54     print "Status: 406 Unsupported Media Type\n";
55     $view = '-UnsupportedMediaType';
56     $view_def = SuikaWiki::View->definition ($view);
57     }
58     my $prop = $view_def->properties;
59    
60     my $opt2 = {viewdef => $view_def, prop => $prop, o => $o};
61     $self->main_pre ($opt, $opt2); ## TODO: or die
62    
63     my $media = $prop->{media};
64 wakaba 1.2 if ($prop->{xmedia} &&
65     (index ($self->{view}->{wiki}->{var}->{client}->{user_agent_name},
66     'Gecko') > -1)) { ## TODO: conneg
67 wakaba 1.1 $media = $prop->{xmedia};
68     $o->{media} = $media;
69     }
70    
71     if (index ($magic, 'interactive="yes"') > -1) {
72     $output->set_expires (delta => 1);
73     } else {
74     $output->set_last_modified (time => $lm);
75     $output->set_expires (delta => $media->{expires})
76     if $media->{expires} > -1;
77     }
78    
79    
80     $output->{entity}->{media_type} = $media->{type};
81     $output->{entity}->{charset}
82     = $self->{view}->{wiki}->{config}->{charset}->{output}
83     if $media->{charset};
84     $output->add_header_field ('Content-Style-Type' => 'text/css');
85    
86     ## Output HTTP message body
87     my $fmt = SuikaWiki::Plugin->formatter ('view');
88     my $s = $fmt->replace ($view_def->as_string => $o, {formatter => $fmt});
89    
90     $output->append_to_body ($s);
91 wakaba 1.2 $output->output (output => 'http-cgi');
92 wakaba 1.1
93     $self->main_post ($opt, $opt2); ## TODO: or die
94     @@Name: main
95     @method:
96     @@@:
97     my $prop = $opt2->{prop};
98     if ($prop->{preprocess}) {
99     exit unless &{$prop->{preprocess}} (o => $opt2->{o});
100     }
101     1;
102     @@Name: main_pre
103     @method:
104     @@@:
105     1;
106     @@Name: main_post

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24