From c1e9e121b738909a84eba8be327b5eaca74e7964 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 1 Jul 2008 17:19:38 -0400 Subject: [PATCH] basic attachment list --- IkiWiki/Plugin/attachment.pm | 51 +++++++++++++++++++++++++++++------- templates/editpage.tmpl | 16 ++++++++--- 2 files changed, 55 insertions(+), 12 deletions(-) diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm index 48cd954d9..1d392589e 100644 --- a/IkiWiki/Plugin/attachment.pm +++ b/IkiWiki/Plugin/attachment.pm @@ -15,12 +15,50 @@ sub checkconfig () { #{{{ $config{cgi_disable_uploads}=0; } #}}} +sub attachment_location ($) { + my $page=shift; + + # Put the attachment in a subdir of the page it's attached + # to, unless that page is an "index" page. + $page=~s/(^|\/)index//; + $page.="/" if length $page; + + return $page; +} + +sub attachment_list ($) { + my $loc=attachment_location(shift); + + my @ret; + foreach my $f (values %pagesources) { + print STDERR ">>$f\n" if ! defined IkiWiki::pagetype($f); + if (! defined IkiWiki::pagetype($f) && + $f=~m/^\Q$loc\E[^\/]+$/ && + -e "$config{srcdir}/$f") { + push @ret, { + "field-select" => '', + link => $f, + size => (stat(_))[7], + mtime => displaytime($IkiWiki::pagemtime{$f}), + }; + } + } + + return @ret; +} + sub formbuilder_setup (@) { #{{{ my %params=@_; my $form=$params{form}; if ($form->field("do") eq "edit") { $form->field(name => 'attachment', type => 'file'); + $form->tmpl_param("attachment_list" => [attachment_list($form->field('page'))]); + + # These buttons are not put in the usual place, so + # is not added to the normal formbuilder button list. + $form->tmpl_param("field-upload" => ''); + $form->tmpl_param("field-link" => ''); } elsif ($form->title eq "preferences") { my $session=$params{session}; @@ -66,15 +104,10 @@ sub formbuilder (@) { #{{{ # of the temp file that CGI writes the upload to. my $tempfile=$q->tmpFileName($filename); - # Put the attachment in a subdir of the page it's attached - # to, unless that page is an "index" page. - my $page=$form->field('page'); - $page=~s/(^|\/)index//; - $filename=(length $page ? $page."/" : "").IkiWiki::basename($filename); - - # To untaint the filename, escape any hazardous characters, - # and make sure it isn't pruned. - $filename=IkiWiki::titlepage(IkiWiki::possibly_foolish_untaint($filename)); + $filename=IkiWiki::titlepage( + IkiWiki::possibly_foolish_untaint( + attachment_location($form->field('page')). + IkiWiki::basename($filename))); if (IkiWiki::file_pruned($filename, $config{srcdir})) { error(gettext("bad attachment filename")); } diff --git a/templates/editpage.tmpl b/templates/editpage.tmpl index 36b616f5b..1a27beb6f 100644 --- a/templates/editpage.tmpl +++ b/templates/editpage.tmpl @@ -61,9 +61,19 @@ Optional comment about this change:
-

-Attach a file: -

+
+
+ + + + + + + + + +
Attachments
+
-- 2.26.2