$f=Encode::decode_utf8($f);
$f=~s/^$page\///;
if (IkiWiki::isinlinableimage($f) &&
- UNIVERSAL::can("IkiWiki::Plugin::img", "import")) {
+ IkiWiki::Plugin::img->can("import")) {
$add.='[[!img '.$f.' align="right" size="" alt=""]]';
}
else {
}
$add.="\n";
}
+ my $content = $form->field('editcontent');
$form->field(name => 'editcontent',
- value => $form->field('editcontent')."\n\n".$add,
+ value => $content."\n\n".$add,
force => 1) if length $add;
}
# Generate the attachment list only after having added any new
# attachments.
- $form->tmpl_param("attachment_list" => [attachment_list($form->field('page'))]);
+ $form->tmpl_param("attachment_list" => [attachment_list(scalar $form->field('page'))]);
}
sub attachment_holding_location {
$filename=IkiWiki::basename($filename);
$filename=~s/.*\\+(.+)/$1/; # hello, windows
$filename=IkiWiki::possibly_foolish_untaint(linkpage($filename));
- my $dest=attachment_holding_location($form->field('page'));
+ my $dest=attachment_holding_location(scalar $form->field('page'));
# Check that the user is allowed to edit the attachment.
my $final_filename=
linkpage(IkiWiki::possibly_foolish_untaint(
- attachment_location($form->field('page')))).
+ attachment_location(scalar $form->field('page')))).
$filename;
eval {
if (IkiWiki::file_pruned($final_filename)) {
# Move attachments out of holding directory.
my @attachments;
- my $dir=attachment_holding_location($form->field('page'));
+ my $dir=attachment_holding_location(scalar $form->field('page'));
foreach my $filename (glob("$dir/*")) {
+ $filename=Encode::decode_utf8($filename);
next unless -f $filename;
- my $dest=$config{srcdir}."/".
+ my $destdir=$config{srcdir}."/".
linkpage(IkiWiki::possibly_foolish_untaint(
- attachment_location($form->field('page')))).
- IkiWiki::basename($filename);
+ attachment_location(scalar $form->field('page'))));
+ my $destfile=IkiWiki::basename($filename);
+ my $dest=$destdir.$destfile;
unlink($dest);
+ IkiWiki::prep_writefile($destfile, $destdir);
rename($filename, $dest);
push @attachments, $dest;
}
return unless @attachments;
require IkiWiki::Render;
- IkiWiki::prune($dir);
+ IkiWiki::prune($dir, $config{wikistatedir}."/attachments");
# Check the attachments in and trigger a wiki refresh.
if ($config{rcs}) {
my $dir=attachment_holding_location($page);
my $heldmsg=gettext("this attachment is not yet saved");
foreach my $file (glob("$dir/*")) {
+ $file=Encode::decode_utf8($file);
next unless -f $file;
my $base=IkiWiki::basename($file);
my $f=$loc.$base;