]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/notifyemail.pm
update info on my split-view setup, and ask for plugin advice
[git.ikiwiki.info.git] / IkiWiki / Plugin / notifyemail.pm
index c345e4365dc0155446885b57d2dd4b896878ac34..58f0c9920716020cbdf38458efbafd3d9d7c4321 100644 (file)
@@ -6,7 +6,6 @@ use strict;
 use IkiWiki 3.00;
 
 sub import {
-       hook(type => "formbuilder_setup", id => "notifyemail", call => \&formbuilder_setup);
        hook(type => "formbuilder", id => "notifyemail", call => \&formbuilder);
        hook(type => "getsetup", id => "notifyemail",  call => \&getsetup);
        hook(type => "changes", id => "notifyemail", call => \&notify);
@@ -20,25 +19,23 @@ sub getsetup () {
                },
 }
 
-sub formbuilder_setup (@) {
+sub formbuilder (@) {
        my %params=@_;
-
        my $form=$params{form};
        return unless $form->title eq "preferences";
        my $session=$params{session};
+       my $username=$session->param("name");
        $form->field(name => "subscriptions", size => 50,
                fieldset => "preferences",
-               comment => "(".htmllink("", "", "ikiwiki/PageSpec", noimageinline => 1).")",
-               value => getsubscriptions($session->param("name")));
-}
-
-sub formbuilder (@) {
-       my %params=@_;
-       my $form=$params{form};
-       return unless $form->title eq "preferences" &&
-               $form->submitted eq "Save Preferences" && $form->validate &&
-               defined $form->field("subscriptions");
-       setsubscriptions($form->field('name'), $form->field('subscriptions'));
+               comment => "(".htmllink("", "", "ikiwiki/PageSpec", noimageinline => 1).")");
+       if (! $form->submitted) {
+               $form->field(name => "subscriptions", force => 1,
+                       value => getsubscriptions($username));
+       }
+       elsif ($form->submitted eq "Save Preferences" && $form->validate &&
+              defined $form->field("subscriptions")) {
+               setsubscriptions($username, $form->field('subscriptions'));
+       }
 }
 
 sub getsubscriptions ($) {
@@ -61,7 +58,8 @@ sub subscribe ($$) {
        my $user=shift;
        my $addpagespec=shift;
        my $pagespec=getsubscriptions($user);
-       setsubscriptions($user, $pagespec." or ".$addpagespec);
+       setsubscriptions($user,
+               length $pagespec ? $pagespec." or ".$addpagespec : $addpagespec);
 }
 
 sub notify (@) {