plugin => {
safe => 1,
rebuild => 0,
+ section => "web",
},
allowed_attachments => {
type => "pagespec",
return if ! defined $form->field("do") || ($form->field("do") ne "edit" && $form->field("do") ne "create") ;
- my $filename=$q->param('attachment');
+ my $filename=Encode::decode_utf8($q->param('attachment'));
if (defined $filename && length $filename &&
($form->submitted eq "Upload Attachment" || $form->submitted eq "Save Page")) {
my $session=$params{session};
}
}
+ $filename=IkiWiki::basename($filename);
+ $filename=~s/.*\\+(.+)/$1/; # hello, windows
+
$filename=linkpage(IkiWiki::possibly_foolish_untaint(
attachment_location($form->field('page')).
- IkiWiki::basename($filename)));
- if (IkiWiki::file_pruned($filename, $config{srcdir})) {
+ $filename));
+ if (IkiWiki::file_pruned($filename)) {
error(gettext("bad attachment filename"));
}
IkiWiki::saveindex();
}
elsif ($form->submitted eq "Insert Links") {
- my $page=quotemeta($q->param("page"));
+ my $page=quotemeta(Encode::decode_utf8($q->param("page")));
my $add="";
foreach my $f ($q->param("attachment_select")) {
+ $f=Encode::decode_utf8($f);
$f=~s/^$page\///;
- $add.="[[$f]]\n";
+ if (IkiWiki::isinlinableimage($f) &&
+ UNIVERSAL::can("IkiWiki::Plugin::img", "import")) {
+ $add.='[[!img '.$f.' align="right" size="" alt=""]]';
+ }
+ else {
+ $add.="[[$f]]";
+ }
+ $add.="\n";
}
$form->field(name => 'editcontent',
value => $form->field('editcontent')."\n\n".$add,
my @ret;
foreach my $f (values %pagesources) {
if (! defined pagetype($f) &&
- $f=~m/^\Q$loc\E[^\/]+$/ &&
- -e "$config{srcdir}/$f") {
+ $f=~m/^\Q$loc\E[^\/]+$/) {
push @ret, {
"field-select" => '<input type="checkbox" name="attachment_select" value="'.$f.'" />',
link => htmllink($page, $page, $f, noimageinline => 1),
size => IkiWiki::Plugin::filecheck::humansize((stat(_))[7]),
mtime => displaytime($IkiWiki::pagemtime{$f}),
+ mtime_raw => $IkiWiki::pagemtime{$f},
};
}
}