check attachments in and refresh
parent
e87c3ae6df
commit
1405006fbf
|
@ -54,6 +54,8 @@ sub formbuilder (@) { #{{{
|
||||||
|
|
||||||
if ($form->submitted eq "Upload") {
|
if ($form->submitted eq "Upload") {
|
||||||
my $q=$params{cgi};
|
my $q=$params{cgi};
|
||||||
|
my $session=$params{session};
|
||||||
|
|
||||||
my $filename=$q->param('attachment');
|
my $filename=$q->param('attachment');
|
||||||
if (! defined $filename || ! length $filename) {
|
if (! defined $filename || ! length $filename) {
|
||||||
# no file, so do nothing
|
# no file, so do nothing
|
||||||
|
@ -68,7 +70,7 @@ sub formbuilder (@) { #{{{
|
||||||
# to, unless that page is an "index" page.
|
# to, unless that page is an "index" page.
|
||||||
my $page=$form->field('page');
|
my $page=$form->field('page');
|
||||||
$page=~s/(^|\/)index//;
|
$page=~s/(^|\/)index//;
|
||||||
$filename=$page."/".IkiWiki::basename($filename);
|
$filename=(length $page ? $page."/" : "").IkiWiki::basename($filename);
|
||||||
|
|
||||||
# To untaint the filename, escape any hazardous characters,
|
# To untaint the filename, escape any hazardous characters,
|
||||||
# and make sure it isn't pruned.
|
# and make sure it isn't pruned.
|
||||||
|
@ -79,7 +81,7 @@ sub formbuilder (@) { #{{{
|
||||||
|
|
||||||
# Check that the user is allowed to edit a page with the
|
# Check that the user is allowed to edit a page with the
|
||||||
# name of the attachment.
|
# name of the attachment.
|
||||||
IkiWiki::check_canedit($filename, $q, $params{session}, 1);
|
IkiWiki::check_canedit($filename, $q, $session, 1);
|
||||||
|
|
||||||
# Use a special pagespec to test that the attachment is valid.
|
# Use a special pagespec to test that the attachment is valid.
|
||||||
my $allowed=1;
|
my $allowed=1;
|
||||||
|
@ -97,7 +99,7 @@ sub formbuilder (@) { #{{{
|
||||||
error(gettext("attachment rejected")." ($allowed)");
|
error(gettext("attachment rejected")." ($allowed)");
|
||||||
}
|
}
|
||||||
|
|
||||||
# Needed for fast_file_copy.
|
# Needed for fast_file_copy and for rendering below.
|
||||||
require IkiWiki::Render;
|
require IkiWiki::Render;
|
||||||
|
|
||||||
# Move the attachment into place.
|
# Move the attachment into place.
|
||||||
|
@ -110,14 +112,25 @@ sub formbuilder (@) { #{{{
|
||||||
error("failed to get filehandle");
|
error("failed to get filehandle");
|
||||||
}
|
}
|
||||||
binmode($fh);
|
binmode($fh);
|
||||||
|
print STDERR "copying $filename\n";
|
||||||
writefile($filename, $config{srcdir}, undef, 1, sub {
|
writefile($filename, $config{srcdir}, undef, 1, sub {
|
||||||
IkiWiki::fast_file_copy($tempfile, $filename, $fh, @_);
|
IkiWiki::fast_file_copy($tempfile, $filename, $fh, @_);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO add to vcs
|
# Check the attachment in and trigger a wiki refresh.
|
||||||
|
if ($config{rcs}) {
|
||||||
# TODO trigger a wiki build if there's no vcs
|
IkiWiki::rcs_add($filename);
|
||||||
|
IkiWiki::disable_commit_hook();
|
||||||
|
IkiWiki::rcs_commit($filename, gettext("attachment upload"),
|
||||||
|
IkiWiki::rcs_prepedit($filename),
|
||||||
|
$session->param("name"), $ENV{REMOTE_ADDR});
|
||||||
|
IkiWiki::enable_commit_hook();
|
||||||
|
IkiWiki::rcs_update();
|
||||||
|
}
|
||||||
|
print STDERR "refreshing\n";
|
||||||
|
IkiWiki::refresh();
|
||||||
|
IkiWiki::saveindex();
|
||||||
}
|
}
|
||||||
} # }}}
|
} # }}}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue