#?SuikaWikiConfig/2.0 Plugin: @Name: SuikaWiki20 @FullName: SuikaWiki 2.0 Interface Emulation @Description: This module provides transitional interface compatible with SuikaWiki 2. Note that this module will be removed in near future. @License: %%GPL%% @Author[list]: Wakaba @Date.RCS: $Date: 2003/12/26 06:58:46 $ @RequiredModule[list]: main ViewDefinition: @Mode: #default @Condition: @@output: http-cgi @@http-method[list]: GET HEAD POST @Description: fallback mode @method: @@@: $self->{view}->init_db; require SuikaWiki::Output::HTTP; my $output = SuikaWiki::Output::HTTP->new (wiki => $self->{view}->{wiki}, view => $self->{view}, viewobj => $self); for (@{$self->{view}->{wiki}->{var}->{client}->{used_for_negotiate}}, 'Accept-Language') { $output->add_negotiate_header_field ($_); } my $view = $opt->{condition}->{mode}; require SuikaWiki::View; my $content = $self->{view}->{wiki}->{db}->get (content => $self->{view}->{wiki}->{var}->{page}); my $lm = $self->{view}->{wiki}->{db}->get (lastmodified => $self->{view}->{wiki}->{var}->{page}); my $page = join '//', @{$self->{view}->{wiki}->{var}->{page}}; ## Get content and its meta info my ($magic, $content) = SuikaWiki::Plugin->magic_and_content ($content); $magic ||= '#?SuikaWiki/0.9'; my $o = bless { param => \%main::form, page => $page, toc => [], magic => $magic, content => $content, }, 'SuikaWiki::Plugin'; my $view_def = SuikaWiki::View->definition ($view); if (!$view_def->check ($o)) { print "Status: 406 Unsupported Media Type\n"; $view = '-UnsupportedMediaType'; $view_def = SuikaWiki::View->definition ($view); } my $prop = $view_def->properties; my $opt2 = {viewdef => $view_def, prop => $prop, o => $o}; $self->main_pre ($opt, $opt2); ## TODO: or die my $media = $prop->{media}; if ($prop->{xmedia} && (index ($self->{view}->{wiki}->{var}->{client}->{user_agent_name}, 'Gecko') > -1)) { ## TODO: conneg $media = $prop->{xmedia}; $o->{media} = $media; } if (index ($magic, 'interactive="yes"') > -1) { $output->set_expires (delta => 1); } else { $output->set_last_modified (time => $lm); $output->set_expires (delta => $media->{expires}) if $media->{expires} > -1; } $output->{entity}->{media_type} = $media->{type}; $output->{entity}->{charset} = $self->{view}->{wiki}->{config}->{charset}->{output} if $media->{charset}; $output->add_header_field ('Content-Style-Type' => 'text/css'); ## Output HTTP message body my $fmt = SuikaWiki::Plugin->formatter ('view'); my $s = $fmt->replace ($view_def->as_string => $o, {formatter => $fmt}); $output->append_to_body ($s); $output->output (output => 'http-cgi'); $self->main_post ($opt, $opt2); ## TODO: or die @@Name: main @method: @@@: my $prop = $opt2->{prop}; if ($prop->{preprocess}) { exit unless &{$prop->{preprocess}} (o => $opt2->{o}); } 1; @@Name: main_pre @method: @@@: 1; @@Name: main_post