/[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 - (show annotations) (download)
Fri Dec 26 06:58:46 2003 UTC (21 years, 3 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +1 -1 lines
FILE REMOVED
Obsoleted

1 #?SuikaWikiConfig/2.0
2
3 Plugin:
4 @Name: SuikaWiki20
5 @FullName: SuikaWiki 2.0 Interface Emulation
6 @Description:
7 This module provides transitional interface compatible with
8 SuikaWiki 2. Note that this module will be removed in near future.
9 @License: %%GPL%%
10 @Author[list]:
11 Wakaba <w@suika.fam.cx>
12 @Date.RCS: $Date: 2003/12/26 06:57:44 $
13 @RequiredModule[list]:
14 main
15
16 ViewDefinition:
17 @Mode: #default
18 @Condition:
19 @@output: http-cgi
20 @@http-method[list]:
21 GET
22 HEAD
23 POST
24 @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 {
49 param => \%main::form, page => $page, toc => [],
50 magic => $magic, content => $content,
51 }, 'SuikaWiki::Plugin';
52
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 if ($prop->{xmedia} &&
66 (index ($self->{view}->{wiki}->{var}->{client}->{user_agent_name},
67 'Gecko') > -1)) { ## TODO: conneg
68 $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 $output->output (output => 'http-cgi');
93
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