X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/c9459523813052ee187bdad1c8594ae114bece62..339bfbd44a438f7bb712d76f6e7ee9c1f4784254:/IkiWiki/Plugin/attachment.pm diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm index 2d1fe51cf..87da6cd4e 100644 --- a/IkiWiki/Plugin/attachment.pm +++ b/IkiWiki/Plugin/attachment.pm @@ -5,15 +5,16 @@ use warnings; use strict; use IkiWiki 2.00; -sub import { #{{{ +sub import { + add_underlay("javascript"); hook(type => "getsetup", id => "attachment", call => \&getsetup); hook(type => "checkconfig", id => "attachment", call => \&checkconfig); hook(type => "formbuilder_setup", id => "attachment", call => \&formbuilder_setup); hook(type => "formbuilder", id => "attachment", call => \&formbuilder); IkiWiki::loadplugin("filecheck"); -} # }}} +} -sub getsetup () { #{{{ +sub getsetup () { return plugin => { safe => 1, @@ -34,9 +35,9 @@ sub getsetup () { #{{{ safe => 0, # executed rebuild => 0, }, -} #}}} +} -sub check_canattach ($$;$) { #{{{ +sub check_canattach ($$;$) { my $session=shift; my $dest=shift; # where it's going to be put, under the srcdir my $file=shift; # the path to the attachment currently @@ -83,13 +84,13 @@ sub check_canattach ($$;$) { #{{{ else { return 1; } -} #}}} +} -sub checkconfig () { #{{{ +sub checkconfig () { $config{cgi_disable_uploads}=0; -} #}}} +} -sub formbuilder_setup (@) { #{{{ +sub formbuilder_setup (@) { my %params=@_; my $form=$params{form}; my $q=$params{cgi}; @@ -104,10 +105,10 @@ sub formbuilder_setup (@) { #{{{ $form->tmpl_param("field-upload" => ''); $form->tmpl_param("field-link" => ''); - # Add the javascript from the toggle plugin; - # the attachments interface uses it to toggle visibility. + # Add the toggle javascript; the attachments interface uses + # it to toggle visibility. require IkiWiki::Plugin::toggle; - $form->tmpl_param("javascript" => $IkiWiki::Plugin::toggle::javascript); + $form->tmpl_param("javascript" => IkiWiki::Plugin::toggle::include_javascript($params{page}, 1)); # Start with the attachments interface toggled invisible, # but if it was used, keep it open. if ($form->submitted ne "Upload Attachment" && @@ -152,9 +153,9 @@ sub formbuilder_setup (@) { #{{{ } } } -} #}}} +} -sub formbuilder (@) { #{{{ +sub formbuilder (@) { my %params=@_; my $form=$params{form}; my $q=$params{cgi}; @@ -252,9 +253,9 @@ sub formbuilder (@) { #{{{ # Generate the attachment list only after having added any new # attachments. $form->tmpl_param("attachment_list" => [attachment_list($form->field('page'))]); -} # }}} +} -sub attachment_location ($) { #{{{ +sub attachment_location ($) { my $page=shift; # Put the attachment in a subdir of the page it's attached @@ -263,9 +264,9 @@ sub attachment_location ($) { #{{{ $page.="/" if length $page; return $page; -} #}}} +} -sub attachment_list ($) { #{{{ +sub attachment_list ($) { my $page=shift; my $loc=attachment_location($page); @@ -279,7 +280,6 @@ sub attachment_list ($) { #{{{ link => htmllink($page, $page, $f, noimageinline => 1), size => IkiWiki::Plugin::filecheck::humansize((stat(_))[7]), mtime => displaytime($IkiWiki::pagemtime{$f}), - mtime_raw => $IkiWiki::pagemtime{$f}, }; } } @@ -287,65 +287,6 @@ sub attachment_list ($) { #{{{ # Sort newer attachments to the top of the list, so a newly-added # attachment appears just before the form used to add it. return sort { $b->{mtime_raw} <=> $a->{mtime_raw} || $a->{link} cmp $b->{link} } @ret; -} #}}} - -package IkiWiki::PageSpec; - -sub match_user ($$;@) { #{{{ - shift; - my $user=shift; - my %params=@_; - - if (! exists $params{user}) { - return IkiWiki::FailReason->new("no user specified"); - } - - if (defined $params{user} && lc $params{user} eq lc $user) { - return IkiWiki::SuccessReason->new("user is $user"); - } - elsif (! defined $params{user}) { - return IkiWiki::FailReason->new("not logged in"); - } - else { - return IkiWiki::FailReason->new("user is $params{user}, not $user"); - } -} #}}} - -sub match_admin ($$;@) { #{{{ - shift; - shift; - my %params=@_; - - if (! exists $params{user}) { - return IkiWiki::FailReason->new("no user specified"); - } - - if (defined $params{user} && IkiWiki::is_admin($params{user})) { - return IkiWiki::SuccessReason->new("user is an admin"); - } - elsif (! defined $params{user}) { - return IkiWiki::FailReason->new("not logged in"); - } - else { - return IkiWiki::FailReason->new("user is not an admin"); - } -} #}}} - -sub match_ip ($$;@) { #{{{ - shift; - my $ip=shift; - my %params=@_; - - if (! exists $params{ip}) { - return IkiWiki::FailReason->new("no IP specified"); - } - - if (defined $params{ip} && lc $params{ip} eq lc $ip) { - return IkiWiki::SuccessReason->new("IP is $ip"); - } - else { - return IkiWiki::FailReason->new("IP is $params{ip}, not $ip"); - } -} #}}} +} 1