X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/c487b847e2053b13c4eea0ccfeecf5a41c396412..d7fdd04b5a113b6dded40cb79b670b16570c11b3:/IkiWiki/CGI.pm diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index a6695b3a5..55ee5d86a 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -57,7 +57,6 @@ sub check_canedit ($$$;$) { #{{{ my $nonfatal=shift; my $canedit; - my $callback; run_hooks(canedit => sub { return if defined $canedit; my $ret=shift->($page, $q, $session); @@ -66,12 +65,12 @@ sub check_canedit ($$$;$) { #{{{ $canedit=1; } elsif (ref $ret eq 'CODE') { + $ret->() unless $nonfatal; $canedit=0; - $callback->() unless $nonfatal; } elsif (defined $ret) { - $canedit=0; error($ret) unless $nonfatal; + $canedit=0; } } }); @@ -101,7 +100,7 @@ sub cgi_recentchanges ($) { #{{{ my $changelog=[rcs_recentchanges(100)]; foreach my $change (@$changelog) { - $change->{when} = concise(ago($change->{when})); + $change->{when} = concise(ago(time - $change->{when})); $change->{user} = userlink($change->{user}); @@ -243,9 +242,6 @@ sub cgi_prefs ($$) { #{{{ $form->field(name => "do", type => "hidden"); $form->field(name => "email", size => 50, fieldset => "preferences"); - $form->field(name => "subscriptions", size => 50, - fieldset => "preferences", - comment => "(".htmllink("", "", "ikiwiki/PageSpec", noimageinline => 1).")"); $form->field(name => "banned_users", size => 50, fieldset => "admin"); @@ -257,8 +253,6 @@ sub cgi_prefs ($$) { #{{{ if (! $form->submitted) { $form->field(name => "email", force => 1, value => userinfo_get($user_name, "email")); - $form->field(name => "subscriptions", force => 1, - value => userinfo_get($user_name, "subscriptions")); if (is_admin($user_name)) { $form->field(name => "banned_users", force => 1, value => join(" ", get_banned_users())); @@ -275,11 +269,9 @@ sub cgi_prefs ($$) { #{{{ return; } elsif ($form->submitted eq 'Save Preferences' && $form->validate) { - foreach my $field (qw(email subscriptions)) { - if (defined $form->field($field) && length $form->field($field)) { - userinfo_set($user_name, $field, $form->field($field)) || - error("failed to set $field"); - } + if (defined $form->field('email')) { + userinfo_set($user_name, 'email', $form->field('email')) || + error("failed to set email"); } if (is_admin($user_name)) { set_banned_users(grep { ! is_admin($_) } @@ -342,7 +334,7 @@ sub cgi_editpage ($$) { #{{{ if (exists $pagesources{$page} && $form->field("do") ne "create") { $file=$pagesources{$page}; $type=pagetype($file); - if (! defined $type) { + if (! defined $type || $type=~/^_/) { error(sprintf(gettext("%s is not an editable page"), $page)); } if (! $form->submitted) { @@ -471,7 +463,8 @@ sub cgi_editpage ($$) { #{{{ my @page_types; if (exists $hooks{htmlize}) { - @page_types=keys %{$hooks{htmlize}}; + @page_types=grep { !/^_/ } + keys %{$hooks{htmlize}}; } $form->tmpl_param("page_select", 1); @@ -719,7 +712,7 @@ sub cgi (;$$) { #{{{ elsif ($do eq 'create' || $do eq 'edit') { cgi_editpage($q, $session); } - elsif (defined $session->param("postsignin")) { + elsif (defined $session->param("postsignin") || $do eq 'postsignin') { cgi_postsignin($q, $session); } else { @@ -727,32 +720,4 @@ sub cgi (;$$) { #{{{ } } #}}} -sub userlink ($) { #{{{ - my $user=shift; - - eval q{use CGI 'escapeHTML'}; - error($@) if $@; - if ($user =~ m!^https?://! && - eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) { - # Munge user-urls, as used by eg, OpenID. - my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user); - my $display=$oid->display; - # Convert "user.somehost.com" to "user [somehost.com]". - if ($display !~ /\[/) { - $display=~s/^(.*?)\.([^.]+\.[a-z]+)$/$1 [$2]/; - } - # Convert "http://somehost.com/user" to "user [somehost.com]". - if ($display !~ /\[/) { - $display=~s/^https?:\/\/(.+)\/([^\/]+)$/$2 [$1]/; - } - $display=~s!^https?://!!; # make sure this is removed - return "".escapeHTML($display).""; - } - else { - return htmllink("", "", escapeHTML( - length $config{userdir} ? $config{userdir}."/".$user : $user - ), noimageinline => 1); - } -} #}}} - 1