--- suikawiki/script/wiki.cgi 2002/12/04 12:00:42 1.34
+++ suikawiki/script/wiki.cgi 2002/12/05 04:32:27 1.35
@@ -50,6 +50,7 @@
#
# You MAY modify following variables.
#
+$SuikaWiki::Plugin::plugin_directory = q(./SuikaWiki/Plugin/);
my $file_touch = "$modifier_dir_data/touched.txt";
my $file_resource = "$modifier_dir_data/resource.txt";
my $file_FrontPage = "$modifier_dir_data/frontpage.txt";
@@ -118,6 +119,7 @@
$CompletedSuccessfully => 1,
#$FrontPage => 1,
WikiUserAgentList => 1,
+ WikiPluginInfo => 1,
);
my %form;
my %database;
@@ -133,6 +135,7 @@
$RssPage => 'rss',
$AdminChangePassword => 'adminchangepasswordform',
#$FrontPage => 'FrontPage',
+ WikiPluginInfo => 'x_WikiPluginInfo',
);
my %command_do = (
read => \&do_read,
@@ -154,14 +157,13 @@
diff => \&do_diff,
interwikibox => \&do_interwiki_box, # Walrus add (5)
wikiform => \&do_wikiform,
+ x_WikiPluginInfo => \&do_wikiplugininfo,
);
##############################
my $walversion = '2.0.beta1.wal.1'; # Walrus add (1)
##############################
# &test_convert;
my $UA = ''; ## User agent name
-&main;
-exit(0);
##############################
sub main {
@@ -578,8 +580,8 @@
my $epage = &encode ($page);
$walrus_log = ($walrus_debugging) ? &text_to_html("----\n$walrus_log") : ''; # Walrus add (debug)
# Walrus mod (1) start
- my $cvslog1 = q$Revision: 1.34 $;
- my $cvslog2 = q$Date: 2002/12/04 12:00:42 $;
+ my $cvslog1 = q$Revision: 1.35 $;
+ my $cvslog2 = q$Date: 2002/12/05 04:32:27 $;
print_navigate_links ($page);
print <<"EOD";
@{[ $lm ? qq(
Last modified: $lm
) : '' ]}
@@ -848,7 +850,7 @@
}
my $FormIndex = 0;
-sub make_custom_form ($$$) {
+sub make_custom_form ($$$$) {
my ($wfname, $definition, $template, $option) = @_;
## $template and $option is currently not used in this procedure.
unless ($main::_EMBEDED) {
@@ -856,28 +858,26 @@
if (length $definition) {
my $param = bless {}, 'SuikaWiki::Plugin';
my $lastmodified = &get_info($form{mypage}, $info_LastModified);
+ &load_formatter (qw/form_input form_option/);
+ $definition = &unescape ($definition);
$definition =~ s/\\(.)/$1/g;
$definition .= ' %submit;' if $definition !~ /%submit/;
- unless ($fmt{form_option}) {
- $fmt{form_option} = Message::Util::Formatter->new;
- for (@{$SuikaWiki::Plugin::List{wikiform_option}||[]}) {
- $_->load_formatter ($fmt{form_option}, type => 'wikiform_option');
- }
- }
$option = &unescape ($option);
$option =~ s/\\(.)/$1/g;
$fmt{form_option}->replace ($option, $param);
+ my $target_page = $param->{output}->{page} || $form{mypage};
+ $param->{form_disabled} = 1 if $fixedpage{$target_page};
my $target_form = $param->{output}->{id};
my $r = <
-
-
+
+
EOH
$r .= qq() if $UA =~ m#Mozilla/[12]\.#;
- $r .= $fmt{form_input}->replace (&unescape ($definition), $param);
+ $r .= $fmt{form_input}->replace ($definition, $param);
$r .= <
EOH
@@ -1285,11 +1285,6 @@
$s = qq([[$s]]) if $s !~ /^[A-Z][a-z]+(?:[A-Z][a-z]+)+$/;
&encode (&code_convert (\$p->{name}, $o->{charset} || 'shift_jis'));
};
-
- $fmt{form_input} = Message::Util::Formatter->new;
- for (@{$SuikaWiki::Plugin::List{wikiform_input}||[]}) {
- $_->load_formatter ($fmt{form_input}, type => 'wikiform_input');
- }
}
@@ -1455,10 +1450,8 @@
}
}
-sub do_wikiform {
- my $content = $database{$form{mypage}};
- my $anchor = &get_new_anchor_index ($content);
- for my $t (qw/form_template form_option/) {
+sub load_formatter (@) {
+ for my $t (@_) {
unless ($fmt{$t}) {
$fmt{$t} = Message::Util::Formatter->new;
for (@{$SuikaWiki::Plugin::List{'wiki'.$t}||[]}) {
@@ -1466,6 +1459,12 @@
}
}
}
+}
+
+sub do_wikiform {
+ my $content = $database{$form{mypage}};
+ my $anchor = &get_new_anchor_index ($content);
+ &load_formatter (qw/form_template form_option/);
my $write = 0;
my $i = 1;
$content =~ s{$embed_command{form}}{
@@ -1705,6 +1704,12 @@
sub __get_database ($) { $database{ $_[0] } }
sub __set_database ($$) { $database{ $_[0] } = $_[1] }
+sub do_wikiplugininfo {
+ &print_header (q(WikiPluginInfo));
+ print text_to_html (&SuikaWiki::Plugin::make_info_page);
+ &print_footer (q(WikiPluginInfo));
+}
+
package wiki::referer;
sub add ($$) {
my $page = shift;
@@ -1808,6 +1813,7 @@
}
package SuikaWiki::Plugin;
+ our $plugin_directory; # defined in top of this file.
our %List;
sub escape ($$) { main::escape ($_[1]) }
@@ -1823,7 +1829,51 @@
}
}
-use SuikaWiki::Plugin::WikiFormBasic;
+sub import_plugins () {
+ opendir PDIR, $plugin_directory;
+ my @plugin = grep {s/\.pm$//} readdir (PDIR);
+ closedir PDIR;
+ for (@plugin) {
+ eval qq{ use SuikaWiki::Plugin::$_ } unless /[^A-Za-z0-9_]/;
+ push @{$List{_all}}, qq(SuikaWiki::Plugin::$_);
+ }
+}
+
+sub make_info_page () {
+ my $r = <property ();
+ $r .= <{name}''' (Version $prop->{version})
+<$prop->{uri}>
+
+Provide:
+@{[do{my $t = ''; for my $f (@{$prop->{provide}||[]}) {
+ $t .= qq(-''$f''\n);
+ for (sort grep m#^\Q$f\E/#, keys %{$prop->{partinfo}}) {
+ $t .= qq(--''$_'' -- $prop->{partinfo}->{$_}\n);
+ }
+}$t}]}
+
+EOH
+ }
+ }
+ $r;
+}
+
+&import_plugins ();
+
+package main;
+&main;
+exit 0;
1;
__END__