/[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.1 - (hide annotations) (download)
Sun Oct 5 11:24:52 2003 UTC (22 years, 10 months ago) by wakaba
Branch: MAIN
New

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24