* Add canedit hook, allowing arbitrary controls over when a page can be
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Fri, 2 Feb 2007 02:33:03 +0000 (02:33 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Fri, 2 Feb 2007 02:33:03 +0000 (02:33 +0000)
  edited.
* Move code forcing signing before edit to a new "signinedit" plugin, and
  code checking for locked pages into a new "lockedit" plugin. Both are
  enabled by default.
* Remove the anonok config setting. This is now implemented by a new
  "anonok" plugin. Anyone with a wiki allowing anonymous edits should
  change their configs to enable this new plugin.
* Add an opendiscussion plugin that allows anonymous users to edit
  discussion pages, on a wiki that is otherwise wouldn't allow it.
* Lots of CGI code reorg and cleanup.

34 files changed:
IkiWiki.pm
IkiWiki/CGI.pm
IkiWiki/Plugin/anonok.pm [new file with mode: 0644]
IkiWiki/Plugin/lockedit.pm [new file with mode: 0644]
IkiWiki/Plugin/opendiscussion.pm [new file with mode: 0644]
IkiWiki/Plugin/openid.pm
IkiWiki/Plugin/passwordauth.pm
IkiWiki/Plugin/signinedit.pm [new file with mode: 0644]
IkiWiki/Plugin/skeleton.pm
debian/NEWS
debian/changelog
doc/features.mdwn
doc/ikiwiki.setup
doc/index/discussion.mdwn
doc/plugins.mdwn
doc/plugins/anonok.mdwn [new file with mode: 0644]
doc/plugins/lockedit.mdwn [new file with mode: 0644]
doc/plugins/opendiscussion.mdwn [new file with mode: 0644]
doc/plugins/signinedit.mdwn [new file with mode: 0644]
doc/plugins/type/auth.mdwn
doc/plugins/write.mdwn
doc/todo/discuss_without_login.mdwn [new file with mode: 0644]
doc/usage.mdwn
doc/w3mmode/ikiwiki.setup
ikiwiki.in
po/bg.po
po/cs.po
po/es.po
po/fr.po
po/gu.po
po/ikiwiki.pot
po/pl.po
po/sv.po
po/vi.po

index 292f18f5e0228207513f3a0a6a1bfa43c2dc9af2..2d692a9784e67548382e0e5e36252f5992b5eb48 100644 (file)
@@ -44,7 +44,6 @@ sub defaultconfig () { #{{{
        cgiurl => '',
        historyurl => '',
        diffurl => '',
-       anonok => 0,
        rss => 0,
        atom => 0,
        discussion => 1,
@@ -66,7 +65,7 @@ sub defaultconfig () { #{{{
        setup => undef,
        adminuser => undef,
        adminemail => undef,
-       plugin => [qw{mdwn inline htmlscrubber passwordauth}],
+       plugin => [qw{mdwn inline htmlscrubber passwordauth signinedit lockedit}],
        timeformat => '%c',
        locale => undef,
        sslcookie => 0,
index 0c66705469185954acf8eadf4200bb17e0e18d36..a8e610e2de1c193900404f1d8dbb2d8796c919e3 100644 (file)
@@ -33,28 +33,25 @@ sub redirect ($$) { #{{{
        }
 } #}}}
 
-sub page_locked ($$;$) { #{{{
+sub check_canedit ($$$;$) { #{{{
        my $page=shift;
+       my $q=shift;
        my $session=shift;
        my $nonfatal=shift;
        
-       my $user=$session->param("name");
-       return if defined $user && is_admin($user);
-
-       foreach my $admin (@{$config{adminuser}}) {
-               my $locked_pages=userinfo_get($admin, "locked_pages");
-               if (pagespec_match($page, userinfo_get($admin, "locked_pages"))) {
-                       return 1 if $nonfatal;
-
-                       #translators: The first parameter is a page name,
-                       #translators: second is the user who locked it.
-                       error(sprintf(gettext("%s is locked by %s and cannot be edited"),
-                               htmllink("", "", $page, 1),
-                               userlink($admin)));
+       my $canedit;
+       run_hooks(canedit => sub {
+               return if defined $canedit;
+               my $ret=shift->($page, $q, $session);
+               if (defined $ret && $ret eq "") {
+                       $canedit=1;
                }
-       }
-
-       return 0;
+               elsif (defined $ret) {
+                       $canedit=0;
+                       error($ret) unless $nonfatal;
+               }
+       });
+       return $canedit;
 } #}}}
 
 sub decode_form_utf8 ($) { #{{{
@@ -113,6 +110,23 @@ sub cgi_recentchanges ($) { #{{{
        print $q->header(-charset => 'utf-8'), $template->output;
 } #}}}
 
+# Check if the user is signed in. If not, redirect to the signin form and
+# save their place to return to later.
+sub needsignin ($$) { #{{{
+       my $q=shift;
+       my $session=shift;
+
+       if (! defined $session->param("name") ||
+           ! userinfo_get($session->param("name"), "regdate")) {
+               if (! defined $session->param("postsignin")) {
+                       $session->param(postsignin => $ENV{QUERY_STRING});
+               }
+               cgi_signin($q, $session);
+               cgi_savesession($session);
+               exit;
+       }
+} #}}} 
+
 sub cgi_signin ($$) { #{{{
        my $q=shift;
        my $session=shift;
@@ -134,11 +148,11 @@ sub cgi_signin ($$) { #{{{
        );
        my $buttons=["Login"];
        
-       $form->field(name => "do", type => "hidden");
-       
        if ($q->param("do") ne "signin" && !$form->submitted) {
                $form->text(gettext("You need to log in first."));
        }
+       $form->field(name => "do", type => "hidden", value => "signin",
+               force => 1);
        
        run_hooks(formbuilder_setup => sub {
                shift->(form => $form, cgi => $q, session => $session);
@@ -166,23 +180,19 @@ sub cgi_postsignin ($$) { #{{{
        my $session=shift;
 
        # Continue with whatever was being done before the signin process.
-       if (defined $q->param("do") && $q->param("do") ne "signin" &&
-           defined $session->param("postsignin")) {
-               my $postsignin=CGI->new($session->param("postsignin"));
-               $session->clear("postsignin");
-               cgi($postsignin, $session);
-               cgi_savesession($session);
-               exit;
-       }
-       else {
-               redirect($q, $config{url});
-       }
+       my $postsignin=CGI->new($session->param("postsignin"));
+       $session->clear("postsignin");
+       cgi($postsignin, $session);
+       cgi_savesession($session);
+       exit;
 } #}}}
 
 sub cgi_prefs ($$) { #{{{
        my $q=shift;
        my $session=shift;
 
+       needsignin($q, $session);
+
        eval q{use CGI::FormBuilder};
        error($@) if $@;
        my $form = CGI::FormBuilder->new(
@@ -210,13 +220,10 @@ sub cgi_prefs ($$) { #{{{
        $form->field(name => "email", size => 50);
        $form->field(name => "subscriptions", size => 50,
                comment => "(".htmllink("", "", "PageSpec", 1).")");
-       $form->field(name => "locked_pages", size => 50,
-               comment => "(".htmllink("", "", "PageSpec", 1).")");
        $form->field(name => "banned_users", size => 50);
        
        my $user_name=$session->param("name");
        if (! is_admin($user_name)) {
-               $form->field(name => "locked_pages", type => "hidden");
                $form->field(name => "banned_users", type => "hidden");
        }
 
@@ -225,8 +232,6 @@ sub cgi_prefs ($$) { #{{{
                        value => userinfo_get($user_name, "email"));
                $form->field(name => "subscriptions", force => 1,
                        value => userinfo_get($user_name, "subscriptions"));
-               $form->field(name => "locked_pages", force => 1,
-                       value => userinfo_get($user_name, "locked_pages"));
                if (is_admin($user_name)) {
                        $form->field(name => "banned_users", force => 1,
                                value => join(" ", get_banned_users()));
@@ -245,7 +250,7 @@ sub cgi_prefs ($$) { #{{{
                return;
        }
        elsif ($form->submitted eq 'Save Preferences' && $form->validate) {
-               foreach my $field (qw(email subscriptions locked_pages)) {
+               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");
                        }
@@ -422,16 +427,22 @@ sub cgi_editpage ($$) { #{{{
                                if length $config{userdir};
 
                        @page_locs = grep {
-                               ! exists $pagecase{lc $_} &&
-                               ! page_locked($_, $session, 1)
+                               ! exists $pagecase{lc $_}
                        } @page_locs;
-                       
                        if (! @page_locs) {
                                # hmm, someone else made the page in the
                                # meantime?
                                redirect($q, "$config{url}/".htmlpage($page));
                                return;
                        }
+
+                       my @editable_locs = grep {
+                               check_canedit($_, $q, $session, 1)
+                       } @page_locs;
+                       if (! @editable_locs) {
+                               # let it throw an error this time
+                               map { check_canedit($_, $q, $session) } @page_locs;
+                       }
                        
                        my @page_types;
                        if (exists $hooks{htmlize}) {
@@ -440,13 +451,13 @@ sub cgi_editpage ($$) { #{{{
                        
                        $form->tmpl_param("page_select", 1);
                        $form->field(name => "page", type => 'select',
-                               options => \@page_locs, value => $best_loc);
+                               options => \@editable_locs, value => $best_loc);
                        $form->field(name => "type", type => 'select',
                                options => \@page_types);
                        $form->title(sprintf(gettext("creating %s"), pagetitle($page)));
                }
                elsif ($form->field("do") eq "edit") {
-                       page_locked($page, $session);
+                       check_canedit($page, $q, $session);
                        if (! defined $form->field('editcontent') || 
                            ! length $form->field('editcontent')) {
                                my $content="";
@@ -467,7 +478,7 @@ sub cgi_editpage ($$) { #{{{
        }
        else {
                # save page
-               page_locked($page, $session);
+               check_canedit($page, $q, $session);
                
                my $content=$form->field('editcontent');
 
@@ -547,7 +558,7 @@ sub cgi_savesession ($) { #{{{
        my $oldmask=umask(077);
        $session->flush;
        umask($oldmask);
-}
+} #}}}
 
 sub cgi (;$$) { #{{{
        my $q=shift;
@@ -606,37 +617,27 @@ sub cgi (;$$) { #{{{
                        }
                }
        }
-
-       # Everything below this point needs the user to be signed in.
-       if (((! $config{anonok} || $do eq 'prefs') &&
-            (! defined $session->param("name") ||
-            ! userinfo_get($session->param("name"), "regdate")))
-            || $do eq 'signin') {
-               if ($do ne 'signin' && ! defined $session->param("postsignin")) {
-                       $session->param(postsignin => $ENV{QUERY_STRING});
-               }
-               cgi_signin($q, $session);
-               cgi_savesession($session);
-               return;
-       }
-       elsif (defined $session->param("postsignin")) {
-               cgi_postsignin($q, $session);
-       }
-
-       if (defined $session->param("name") && userinfo_get($session->param("name"), "banned")) {
+       
+       if (defined $session->param("name") &&
+           userinfo_get($session->param("name"), "banned")) {
                print $q->header(-status => "403 Forbidden");
                $session->delete();
                print gettext("You are banned.");
                cgi_savesession($session);
-               exit;
        }
-       
-       if ($do eq 'create' || $do eq 'edit') {
-               cgi_editpage($q, $session);
+       elsif ($do eq 'signin') {
+               cgi_signin($q, $session);
+               cgi_savesession($session);
+       }
+       elsif (defined $session->param("postsignin")) {
+               cgi_postsignin($q, $session);
        }
        elsif ($do eq 'prefs') {
                cgi_prefs($q, $session);
        }
+       elsif ($do eq 'create' || $do eq 'edit') {
+               cgi_editpage($q, $session);
+       }
        elsif ($do eq 'blog') {
                my $page=titlepage(decode_utf8($q->param('title')));
                $page=~s/(\/)/"__".ord($1)."__"/eg; # escape slashes too
diff --git a/IkiWiki/Plugin/anonok.pm b/IkiWiki/Plugin/anonok.pm
new file mode 100644 (file)
index 0000000..3e2a746
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/perl
+package IkiWiki::Plugin::anonok;
+
+use warnings;
+use strict;
+use IkiWiki;
+
+sub import { #{{{
+       hook(type => "canedit", id => "anonok", call => \&canedit,);
+} # }}}
+
+sub canedit ($$$) { #{{{
+       return "";
+} #}}}
+
+1
diff --git a/IkiWiki/Plugin/lockedit.pm b/IkiWiki/Plugin/lockedit.pm
new file mode 100644 (file)
index 0000000..587f7ee
--- /dev/null
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+package IkiWiki::Plugin::lockedit;
+
+use warnings;
+use strict;
+use IkiWiki;
+
+sub import { #{{{
+       hook(type => "canedit", id => "lockedit", call => \&canedit);
+       hook(type => "formbuilder_setup", id => "lockedit",
+            call => \&formbuilder_setup);
+} # }}}
+
+sub canedit ($$) { #{{{
+       my $page=shift;
+       my $cgi=shift;
+       my $session=shift;
+
+       my $user=$session->param("name");
+       return undef if defined $user && IkiWiki::is_admin($user);
+
+       foreach my $admin (@{$config{adminuser}}) {
+               if (pagespec_match($page, IkiWiki::userinfo_get($admin, "locked_pages"))) {
+                       return sprintf(gettext("%s is locked by %s and cannot be edited"),
+                               htmllink("", "", $page, 1),
+                               IkiWiki::userlink($admin));
+               }
+       }
+
+       return undef;
+} #}}}
+
+sub formbuilder_setup (@) { #{{{
+       my %params=@_;
+       
+       my $form=$params{form};
+       my $session=$params{session};
+       my $cgi=$params{cgi};
+       my $user_name=$session->param("name");
+
+       if ($form->title eq "preferences") {
+               $form->field(name => "locked_pages", size => 50,
+                       comment => "(".htmllink("", "", "PageSpec", 1).")");
+               if (! IkiWiki::is_admin($user_name)) {
+                       $form->field(name => "locked_pages", type => "hidden");
+               }
+               if (! $form->submitted) {
+                       $form->field(name => "locked_pages", force => 1,
+                               value => IkiWiki::userinfo_get($user_name, "locked_pages"));
+               }
+               if ($form->submitted && $form->submitted eq 'Save Preferences') {
+                       if (defined $form->field("locked_pages")) {
+                               IkiWiki::userinfo_set($user_name, "locked_pages",
+                                       $form->field("locked_pages")) ||
+                                               error("failed to set locked_pages");
+                       }
+               }
+       }
+} #}}}
+
+1
diff --git a/IkiWiki/Plugin/opendiscussion.pm b/IkiWiki/Plugin/opendiscussion.pm
new file mode 100644 (file)
index 0000000..4b1a432
--- /dev/null
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+package IkiWiki::Plugin::opendiscussion;
+
+use warnings;
+use strict;
+use IkiWiki;
+
+sub import { #{{{
+       hook(type => "canedit", id => "opendiscussion", call => \&canedit);
+} # }}}
+
+sub canedit ($$) { #{{{
+       my $page=shift;
+       my $cgi=shift;
+       my $session=shift;
+
+       my $discussion=gettext("discussion");
+       return "" if $page=~/\/\Q$discussion\E$/;
+       return undef;
+} #}}}
+
+1
index 4a7255069928c7d2b3bafb23730f7ef4783462c1..5d387fbc6602e5e091203870e01e1a2a43fda294 100644 (file)
@@ -59,7 +59,7 @@ sub formbuilder_setup (@) { #{{{
        elsif ($form->title eq "preferences") {
                if (! defined $form->field(name => "name")) {
                        $form->field(name => "OpenID", disabled => 1, value =>
-                               $session->param("name"), size => 30, force => 1);
+                               $session->param("name"), size => 50, force => 1);
                }
        }
 }
index 7ffc12080cdc6135dc64600f279135a7f7c1deb4..3007dd4ffd092f858b9fc0d4599ef4444a31e7c1 100644 (file)
@@ -21,7 +21,7 @@ sub formbuilder_setup (@) { #{{{
        my $cgi=$params{cgi};
 
        if ($form->title eq "signin" || $form->title eq "register") {
-               $form->field(name => "name", required => 0, size => 30);
+               $form->field(name => "name", required => 0, size => 50);
                $form->field(name => "password", type => "password", required => 0);
                
                if ($form->submitted eq "Register" || $form->submitted eq "Create Account") {
diff --git a/IkiWiki/Plugin/signinedit.pm b/IkiWiki/Plugin/signinedit.pm
new file mode 100644 (file)
index 0000000..04532f4
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+package IkiWiki::Plugin::signinedit;
+
+use warnings;
+use strict;
+use IkiWiki;
+
+sub import { #{{{
+       hook(type => "canedit", id => "signinedit", call => \&canedit,
+            last => 1);
+} # }}}
+
+sub canedit ($$$) { #{{{
+       my $page=shift;
+       my $cgi=shift;
+       my $session=shift;
+
+       # Have the user sign in, if they are not already. This is why the
+       # hook runs last, so that any hooks that don't need the user to
+       # signin can override this.
+       IkiWiki::needsignin($cgi, $session);
+       return "";
+} #}}}
+
+1
index feb0f7419b26948624e1d3d96b5af3fc82e906a4..06b184b0a201ad66037e7c0883045b978eaf2c84 100644 (file)
@@ -21,6 +21,7 @@ sub import { #{{{
        hook(type => "change", id => "skeleton", call => \&change);
        hook(type => "cgi", id => "skeleton", call => \&cgi);
        hook(type => "auth", id => "skeleton", call => \&auth);
+       hook(type => "canedit", id => "skeleton", call => \&canedit);
        hook(type => "formbuilder_setup", id => "skeleton", call => \&formbuilder_setup);
        hook(type => "formbuilder", id => "skeleton", call => \&formbuilder);
        hook(type => "savestate", id => "savestate", call => \&savestate);
@@ -105,6 +106,14 @@ sub auth ($$) { #{{{
        debug("skeleton plugin running in auth");
 } #}}}
 
+sub canedit ($$$) { #{{{
+       my $page=shift;
+       my $cgi=shift;
+       my $session=shift;
+
+       debug("skeleton plugin running in canedit");
+} #}}}
+
 sub formbuilder_setup (@) { #{{{
        my %params=@_;
        
index dd19e26b4ee3f9c87f02994f6252e025b5bbfa94..bb3bf2272d78ee4c3c2c1749b45385b9597c689a 100644 (file)
@@ -1,3 +1,11 @@
+ikiwiki (1.42) unstable; urgency=low
+
+  The anonok setting in config files has been removed. To enable
+  httpauth support on your wiki, you should now enable the anonok plugin,
+  instead.
+
+ -- Joey Hess <joeyh@debian.org>  Thu,  1 Feb 2007 16:57:59 -0500
+
 ikiwiki (1.34) unstable; urgency=low
 
   The httpauth setting in config files has been removed. To enable
index 40eaae23823f894aa502d07d5acdbf0e4812b662..9ef47936e3a19d224a7818d2c811714092152e40 100644 (file)
@@ -2,8 +2,19 @@ ikiwiki (1.42) UNRELEASED; urgency=low
 
   * Fix several more missing translations of Discussion.
   * Fix for missing backlinks() in pagestats plugin.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 31 Jan 2007 02:12:01 -0500
+  * Add canedit hook, allowing arbitrary controls over when a page can be
+    edited.
+  * Move code forcing signing before edit to a new "signinedit" plugin, and
+    code checking for locked pages into a new "lockedit" plugin. Both are 
+    enabled by default.
+  * Remove the anonok config setting. This is now implemented by a new
+    "anonok" plugin. Anyone with a wiki allowing anonymous edits should
+    change their configs to enable this new plugin.
+  * Add an opendiscussion plugin that allows anonymous users to edit
+    discussion pages, on a wiki that is otherwise wouldn't allow it.
+  * Lots of CGI code reorg and cleanup.
+
+ -- Joey Hess <joeyh@debian.org>  Thu,  1 Feb 2007 15:36:38 -0500
 
 ikiwiki (1.41) unstable; urgency=low
 
index b2c810f30b209f4ce3f5048196755416bf1e5406..58d6d09cd9ef041af12e9b421375dc3d19a459be 100644 (file)
@@ -129,7 +129,7 @@ and can be enabled by enabling [[CGI]].
 
 ### User registration
 
-Can optionally be configured to allow only registered users to post
+Can optionally be configured to allow only registered users to edit
 pages.
 
 User registration can be done using a web form, or ikiwiki can be
@@ -142,10 +142,12 @@ Thanks to subpages, every page can easily and automatically have a
 /Discussion subpage. By default, these links are included in the
 [[templates]] for each page.
 
-### Page locking
+### Edit controls
 
-Wiki admins can [[lock_pages|page_locking]] so that only other admins
-can edit them.
+Wiki admins can [[lock_pages|page_locking]] so that only other admins can
+edit them. Or a wiki can be set up to allow anyone to edit Discussion
+pages, but only registered users to edit other pages. These are just two
+possibilities, since page edit controls can be changed via plugins.
 
 ### [[PageHistory]]
 
index 910b2b527dcfa97538b2660d14613b5de8693710..a25d9f50ec18e19dab46e1fe86eb618b0ffb4123 100644 (file)
@@ -71,8 +71,6 @@ use IkiWiki::Setup::Standard {
                #},
        ],
        
-       # Can anonymous web users edit pages?
-       #anonok => 1,
        # Generate rss feeds for blogs?
        rss => 1,
        # Generate atom feeds for blogs?
@@ -98,7 +96,7 @@ use IkiWiki::Setup::Standard {
        
        # To add plugins, list them here.
        #add_plugins => [qw{goodstuff openid search wikitext camelcase
-       #                   htmltidy fortune sidebar map rst}],
+       #                   htmltidy fortune sidebar map rst anonok}],
        # If you want to disable any of the default plugins, list them here.
        #disable_plugins => [qw{inline htmlscrubber passwordauth}],
 
index e60ab0f50229970f306699ffe6196caae6cef5e4..7f82e87ceedcfa2d2702dba79b6a164bf9be1d56 100644 (file)
@@ -162,21 +162,3 @@ Clicking on an old "?" or going to a create link but new Markdown content exists
 >>> discussion, or users/discussion, but not index/discussion, since this
 >>> page already exists. If all the pages existed, it would do the redirect
 >>> thing. --[[Joey]]
-
-----
-
-# Discuss without login? Or feedback forum? Or fine-tuned per-page access control?
-
-Any plugin or option for allowing website visitors to edit the discuss page without logging in (without having ikiwiki accounts)?
-
-Or any plugin to add a feedback form (and maybe threads) to extend a Wiki webpage?
-
-Or is there per-page access control that can be fine-tuned to lock some users or groups for specific pages?
-(The [[pagespec]] does show a way to lock all pages except for Discussion pages, but I want some users to also be able to edit other pages.)
-
-I want a way for website visitors to be able to give feedback on the wiki pages without having to sign up or log in.
-I don't want them to be able to edit the exiting wiki pages except maybe Discussion page.
-
-(For some reason, it seems like I asked this before ...)
-
---JeremyReed
\ No newline at end of file
index 46527ce4ffdd02a267a5e54638300d5d2cd35b22..1006a9e1c0d17b38315f6607696d9b7c334c1b24 100644 (file)
@@ -7,10 +7,10 @@ wiki, or just have [[type/fun]].
 There's documentation if you want to [[write]] your own plugins, or you can
 install and use plugins [[contributed|contrib]] by others. 
 
-The [[mdwn]], [[inline]], [[htmlscrubber]], and [[passwordauth]] plugins
-are enabled by default. To enable other plugins, use the `--plugin` switch
-described in [[usage]], or the equivalent `add_plugins` line in
-[[ikiwiki.setup]].
+The [[mdwn]], [[inline]], [[htmlscrubber]], [[passwordauth]],
+[[signinedit]], and [[lockedit]] plugins are enabled by default.
+To enable other plugins, use the `--plugin` switch described in
+[[usage]], or the equivalent `add_plugins` line in [[ikiwiki.setup]].
 
 # Plugin directory
 
diff --git a/doc/plugins/anonok.mdwn b/doc/plugins/anonok.mdwn
new file mode 100644 (file)
index 0000000..ae1c87f
--- /dev/null
@@ -0,0 +1,5 @@
+[[template id=plugin name=anonok included=1 author="[[Joey]]"]]
+[[tag type/auth]]
+
+By default, anonymous users cannot edit the wiki. This plugin allows
+anonymous web users, who have not signed in, to edit any page in the wiki.
diff --git a/doc/plugins/lockedit.mdwn b/doc/plugins/lockedit.mdwn
new file mode 100644 (file)
index 0000000..be9ca84
--- /dev/null
@@ -0,0 +1,4 @@
+[[template id=plugin name=lockedit core=1 included=1 author="[[Joey]]"]]
+[[tag type/auth]]
+
+This plugin enables [[page_locking]]. It is enabled by default.
diff --git a/doc/plugins/opendiscussion.mdwn b/doc/plugins/opendiscussion.mdwn
new file mode 100644 (file)
index 0000000..3257224
--- /dev/null
@@ -0,0 +1,5 @@
+[[template id=plugin name=opendiscussion included=1 author="[[Joey]]"]]
+[[tag type/auth]]
+
+This plugin allows editing of Discussion pages by anonymous users who have
+not logged into the wiki.
diff --git a/doc/plugins/signinedit.mdwn b/doc/plugins/signinedit.mdwn
new file mode 100644 (file)
index 0000000..5beae9d
--- /dev/null
@@ -0,0 +1,5 @@
+[[template id=plugin name=signinedit core=1 included=1 author="[[Joey]]"]]
+[[tag type/auth]]
+
+This plugin, which is enabled by default, requires users be logged in
+before editing pages in the wiki.
index a6ae5e4ea6d16450fa908364bdeb79331276b96f..400a5bccad9b143822ab3d52368eb09308600ff3 100644 (file)
@@ -1,2 +1,2 @@
 These plugins add different authentication methods for logging in to the
-wiki.
+wiki and control what pages users can edit.
index 6c475024a2adf45576895be5cbeded1355f97f85..d0f256ca293aaeaf21fd398906771f9db8cd831f 100644 (file)
@@ -192,6 +192,20 @@ object's "name" parameter to the authenticated user's name. Note that
 if the name is set to the name of a user who is not registered,
 a basic registration of the user will be automatically performed.
 
+### canedit
+
+       hook(type => "canedit", id => "foo", call => \&pagelocked);
+
+This hook can be used to implement arbitrary access methods to control when
+a page can be edited using the web interface (commits from revision control
+bypass it). When a page is edited, each registered canedit hook is called
+in turn, and passed the page name, a CGI object, and a session object.
+
+If edit can proceed, the hook should return "". If the edit is not allowed
+by this hook, the hook should return an error message for the user to see.
+If the hook has no opinion about whether the edit can proceed, return
+`undef`, and the next plugin will be asked to decide.
+
 ### formbuilder
 
        hook(type => "formbuilder_setup", id => "foo", call => \&formbuilder_setup);
diff --git a/doc/todo/discuss_without_login.mdwn b/doc/todo/discuss_without_login.mdwn
new file mode 100644 (file)
index 0000000..74f3cde
--- /dev/null
@@ -0,0 +1,19 @@
+# Discuss without login? Or feedback forum? Or fine-tuned per-page access control?
+
+Any plugin or option for allowing website visitors to edit the discuss page without logging in (without having ikiwiki accounts)?
+
+Or any plugin to add a feedback form (and maybe threads) to extend a Wiki webpage?
+
+Or is there per-page access control that can be fine-tuned to lock some users or groups for specific pages?
+(The [[pagespec]] does show a way to lock all pages except for Discussion pages, but I want some users to also be able to edit other pages.)
+
+I want a way for website visitors to be able to give feedback on the wiki pages without having to sign up or log in.
+I don't want them to be able to edit the exiting wiki pages except maybe Discussion page.
+
+(For some reason, it seems like I asked this before ...)
+
+--JeremyReed
+
+[[todo/Done]]; there's now a plugin interface for this and several nice
+plugins including one allowing [[plugins/opendiscussion]]. More special-purpose 
+(and less wiki-like plugins) can be added based on this. --[[Joey]]
index 9980cca037d25a73ec38bff97ed3f3334ca108e1..afd69919472a7cd34e9de6e342b6985965a4fde8 100644 (file)
@@ -154,12 +154,6 @@ configuration options of their own.
   This defaults to trunk; change it if your wiki is at some other location
   inside the repository.
 
-* --anonok, --noanonok
-
-  If anonok is set, it will allow anonymous web users, who have not signed in, to make changes to the wiki.
-
-  By default, anonymous users cannot edit the wiki.
-
 * --rss, --norss
 
   If rss is set, ikiwiki will generate RSS feeds for pages that inline
index 216e066c8ec431e7b8e2fc800184b76fa48e6f78..d71221a8ff6deffea28cb453602cd50a907969ba 100644 (file)
@@ -26,7 +26,7 @@ use IkiWiki::Setup::Standard {
                },
        ],
        
-       anonok => 1,
+       add_plugins => [qw{anonok}],
        rss => 1,
        atom => 1,
        discussion => 1,
index 5b1f57d16314bef6add96735c2737a7170a7d2ec..24b02bc415f9ad73908eef2c809d2efa1111400e 100755 (executable)
@@ -31,7 +31,6 @@ sub getconfig () { #{{{
                        "wrappermode=i" => \$config{wrappermode},
                        "rcs=s" => \$config{rcs},
                        "no-rcs" => sub { $config{rcs}="" },
-                       "anonok!" => \$config{anonok},
                        "cgi!" => \$config{cgi},
                        "discussion!" => \$config{discussion},
                        "w3mmode!" => \$config{w3mmode},
index 080b1e899cb6668929f93998fafb6296433f1c30..de05863072660b0167a137096822547bcfdd22dd 100644 (file)
--- a/po/bg.po
+++ b/po/bg.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki-bg\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-31 02:17-0500\n"
+"POT-Creation-Date: 2007-02-01 21:27-0500\n"
 "PO-Revision-Date: 2007-01-12 01:19+0200\n"
 "Last-Translator: Damyan Ivanov <dam@modsodtsys.com>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -16,43 +16,36 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#. translators: The first parameter is a page name,
-#. translators: second is the user who locked it.
-#: ../IkiWiki/CGI.pm:51
-#, perl-format
-msgid "%s is locked by %s and cannot be edited"
-msgstr ""
-"Страницата „%s” е заключена от потребителя „%s” и не може да бъде променяна"
-
-#: ../IkiWiki/CGI.pm:140
+#: ../IkiWiki/CGI.pm:152
 msgid "You need to log in first."
 msgstr "Първо трябва да влезете."
 
-#: ../IkiWiki/CGI.pm:257
+#: ../IkiWiki/CGI.pm:262
 msgid "Preferences saved."
 msgstr "Предпочитанията са запазени."
 
-#: ../IkiWiki/CGI.pm:407 ../IkiWiki/Plugin/brokenlinks.pm:24
-#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/orphans.pm:28
-#: ../IkiWiki/Render.pm:97 ../IkiWiki/Render.pm:165
+#: ../IkiWiki/CGI.pm:412 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/opendiscussion.pm:17
+#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
+#: ../IkiWiki/Render.pm:165
 msgid "discussion"
 msgstr "дискусия"
 
-#: ../IkiWiki/CGI.pm:446
+#: ../IkiWiki/CGI.pm:457
 #, perl-format
 msgid "creating %s"
 msgstr "създаване на %s"
 
-#: ../IkiWiki/CGI.pm:463 ../IkiWiki/CGI.pm:506
+#: ../IkiWiki/CGI.pm:474 ../IkiWiki/CGI.pm:517
 #, perl-format
 msgid "editing %s"
 msgstr "промяна на %s"
 
-#: ../IkiWiki/CGI.pm:629
+#: ../IkiWiki/CGI.pm:625
 msgid "You are banned."
 msgstr "Достъпът ви е забранен."
 
-#: ../IkiWiki/CGI.pm:656
+#: ../IkiWiki/CGI.pm:657
 msgid "login failed, perhaps you need to turn on cookies?"
 msgstr ""
 
@@ -142,6 +135,12 @@ msgstr "модулът „RPC::XML::Client” не е намерен; източ
 msgid "linkmap failed to run dot"
 msgstr "приставката „linkmap”: грешка при изпълнение на „dot”"
 
+#: ../IkiWiki/Plugin/lockedit.pm:24
+#, perl-format
+msgid "%s is locked by %s and cannot be edited"
+msgstr ""
+"Страницата „%s” е заключена от потребителя „%s” и не може да бъде променяна"
+
 #: ../IkiWiki/Plugin/mdwn.pm:37
 #, perl-format
 msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
@@ -372,13 +371,13 @@ msgstr "успешно генериране на %s"
 msgid "usage: ikiwiki [options] source dest"
 msgstr "формат: ikiwiki [опции] източник местоназначение"
 
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:102
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 "При използване на пареметъра „--cgi” е необходимо да се укаже и "
 "местоположението на уикито чрез параметъра „--url”"
 
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:147 ../IkiWiki.pm:148
 msgid "Error"
 msgstr "Грешка"
 
@@ -386,7 +385,7 @@ msgstr "Грешка"
 #. translators: preprocessor directive name,
 #. translators: the second a page name, the
 #. translators: third a number.
-#: ../IkiWiki.pm:528
+#: ../IkiWiki.pm:527
 #, perl-format
 msgid "%s preprocessing loop detected on %s at depth %i"
 msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i"
index 4c731c54efb2d1a928662a39d52971a3d84bcecf..5cc90a512496ced05226b43aae7de49a92985321 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-31 02:17-0500\n"
+"POT-Creation-Date: 2007-02-01 21:27-0500\n"
 "PO-Revision-Date: 2007-01-07 11:59+0100\n"
 "Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
 "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
@@ -15,42 +15,36 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#. translators: The first parameter is a page name,
-#. translators: second is the user who locked it.
-#: ../IkiWiki/CGI.pm:51
-#, perl-format
-msgid "%s is locked by %s and cannot be edited"
-msgstr "Stránka %s je zamknutá uživatelem %s a nelze ji měnit"
-
-#: ../IkiWiki/CGI.pm:140
+#: ../IkiWiki/CGI.pm:152
 msgid "You need to log in first."
 msgstr "Nejprve se musíte přihlásit."
 
-#: ../IkiWiki/CGI.pm:257
+#: ../IkiWiki/CGI.pm:262
 msgid "Preferences saved."
 msgstr "Nastavení uloženo."
 
-#: ../IkiWiki/CGI.pm:407 ../IkiWiki/Plugin/brokenlinks.pm:24
-#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/orphans.pm:28
-#: ../IkiWiki/Render.pm:97 ../IkiWiki/Render.pm:165
+#: ../IkiWiki/CGI.pm:412 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/opendiscussion.pm:17
+#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
+#: ../IkiWiki/Render.pm:165
 msgid "discussion"
 msgstr "diskuse"
 
-#: ../IkiWiki/CGI.pm:446
+#: ../IkiWiki/CGI.pm:457
 #, perl-format
 msgid "creating %s"
 msgstr "vytvářím %s"
 
-#: ../IkiWiki/CGI.pm:463 ../IkiWiki/CGI.pm:506
+#: ../IkiWiki/CGI.pm:474 ../IkiWiki/CGI.pm:517
 #, perl-format
 msgid "editing %s"
 msgstr "upravuji %s"
 
-#: ../IkiWiki/CGI.pm:629
+#: ../IkiWiki/CGI.pm:625
 msgid "You are banned."
 msgstr "Jste vyhoštěni."
 
-#: ../IkiWiki/CGI.pm:656
+#: ../IkiWiki/CGI.pm:657
 msgid "login failed, perhaps you need to turn on cookies?"
 msgstr ""
 
@@ -138,6 +132,11 @@ msgstr "RPC::XML::Client nebyl nalezen, nepinkám"
 msgid "linkmap failed to run dot"
 msgstr "linkmapu se nepodařilo spustit dot"
 
+#: ../IkiWiki/Plugin/lockedit.pm:24
+#, perl-format
+msgid "%s is locked by %s and cannot be edited"
+msgstr "Stránka %s je zamknutá uživatelem %s a nelze ji měnit"
+
 #: ../IkiWiki/Plugin/mdwn.pm:37
 #, perl-format
 msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
@@ -366,11 +365,11 @@ msgstr "%s byl úspěšně vytvořen"
 msgid "usage: ikiwiki [options] source dest"
 msgstr "použití: ikiwiki [volby] zdroj cíl"
 
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:102
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr "Při použití --cgi musíte pomocí --url zadat url k wiki"
 
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:147 ../IkiWiki.pm:148
 msgid "Error"
 msgstr "Chyba"
 
@@ -378,7 +377,7 @@ msgstr "Chyba"
 #. translators: preprocessor directive name,
 #. translators: the second a page name, the
 #. translators: third a number.
-#: ../IkiWiki.pm:528
+#: ../IkiWiki.pm:527
 #, perl-format
 msgid "%s preprocessing loop detected on %s at depth %i"
 msgstr "Byla rozpoznána smyčka direktivy %s na %s v hloubce %i"
index d2ba0745a4e19dca675f5eb946116389948a5e63..75387d161dbb17117098f833842db68c98a27db8 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-31 02:17-0500\n"
+"POT-Creation-Date: 2007-02-01 21:27-0500\n"
 "PO-Revision-Date: 2007-01-03 09:37+0100\n"
 "Last-Translator: Víctor Moral <victor@taquiones.net>\n"
 "Language-Team: spanish <es@li.org>\n"
@@ -16,42 +16,36 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#. translators: The first parameter is a page name,
-#. translators: second is the user who locked it.
-#: ../IkiWiki/CGI.pm:51
-#, perl-format
-msgid "%s is locked by %s and cannot be edited"
-msgstr "La página %s está bloqueada por %s y no puede modificarse"
-
-#: ../IkiWiki/CGI.pm:140
+#: ../IkiWiki/CGI.pm:152
 msgid "You need to log in first."
 msgstr "Antes es necesario identificarse"
 
-#: ../IkiWiki/CGI.pm:257
+#: ../IkiWiki/CGI.pm:262
 msgid "Preferences saved."
 msgstr "Las preferencias se han guardado."
 
-#: ../IkiWiki/CGI.pm:407 ../IkiWiki/Plugin/brokenlinks.pm:24
-#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/orphans.pm:28
-#: ../IkiWiki/Render.pm:97 ../IkiWiki/Render.pm:165
+#: ../IkiWiki/CGI.pm:412 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/opendiscussion.pm:17
+#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
+#: ../IkiWiki/Render.pm:165
 msgid "discussion"
 msgstr "comentarios"
 
-#: ../IkiWiki/CGI.pm:446
+#: ../IkiWiki/CGI.pm:457
 #, perl-format
 msgid "creating %s"
 msgstr "creando página %s"
 
-#: ../IkiWiki/CGI.pm:463 ../IkiWiki/CGI.pm:506
+#: ../IkiWiki/CGI.pm:474 ../IkiWiki/CGI.pm:517
 #, perl-format
 msgid "editing %s"
 msgstr "modificando página %s"
 
-#: ../IkiWiki/CGI.pm:629
+#: ../IkiWiki/CGI.pm:625
 msgid "You are banned."
 msgstr "Ha sido expulsado."
 
-#: ../IkiWiki/CGI.pm:656
+#: ../IkiWiki/CGI.pm:657
 msgid "login failed, perhaps you need to turn on cookies?"
 msgstr ""
 
@@ -142,6 +136,11 @@ msgstr "No he encontrado el componente RPC::XML::Client, no envío señal alguna
 msgid "linkmap failed to run dot"
 msgstr "El complemento linkmap no ha podido ejecutar el programa dot"
 
+#: ../IkiWiki/Plugin/lockedit.pm:24
+#, perl-format
+msgid "%s is locked by %s and cannot be edited"
+msgstr "La página %s está bloqueada por %s y no puede modificarse"
+
 #: ../IkiWiki/Plugin/mdwn.pm:37
 #, perl-format
 msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
@@ -375,13 +374,13 @@ msgstr "creado con éxito el programa envoltorio %s"
 msgid "usage: ikiwiki [options] source dest"
 msgstr "uso: ikiwiki [opciones] origen destino"
 
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:102
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 "Es obligatorio especicar un url al wiki con el parámetro --url si se utiliza "
 "el parámetro --cgi"
 
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:147 ../IkiWiki.pm:148
 msgid "Error"
 msgstr "Error"
 
@@ -389,7 +388,7 @@ msgstr "Error"
 #. translators: preprocessor directive name,
 #. translators: the second a page name, the
 #. translators: third a number.
-#: ../IkiWiki.pm:528
+#: ../IkiWiki.pm:527
 #, perl-format
 msgid "%s preprocessing loop detected on %s at depth %i"
 msgstr ""
index 9db7b5cd003cbc47509653e38b4be29948a8eda3..9a7ebdc8f573eac6950dba5da6f36c9038e2662b 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-31 02:17-0500\n"
+"POT-Creation-Date: 2007-02-01 21:27-0500\n"
 "PO-Revision-Date: 2007-01-22 22:12+0100\n"
 "Last-Translator: Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>\n"
 "Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@@ -17,42 +17,36 @@ msgstr ""
 "X-Poedit-Language: French\n"
 "X-Poedit-Country: FRANCE\n"
 
-#. translators: The first parameter is a page name,
-#. translators: second is the user who locked it.
-#: ../IkiWiki/CGI.pm:51
-#, perl-format
-msgid "%s is locked by %s and cannot be edited"
-msgstr "%s est verrouillé par %s et ne peut être édité"
-
-#: ../IkiWiki/CGI.pm:140
+#: ../IkiWiki/CGI.pm:152
 msgid "You need to log in first."
 msgstr "Vous devez d'abord vous identifier."
 
-#: ../IkiWiki/CGI.pm:257
+#: ../IkiWiki/CGI.pm:262
 msgid "Preferences saved."
 msgstr "Les préférences ont été enregistrées."
 
-#: ../IkiWiki/CGI.pm:407 ../IkiWiki/Plugin/brokenlinks.pm:24
-#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/orphans.pm:28
-#: ../IkiWiki/Render.pm:97 ../IkiWiki/Render.pm:165
+#: ../IkiWiki/CGI.pm:412 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/opendiscussion.pm:17
+#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
+#: ../IkiWiki/Render.pm:165
 msgid "discussion"
 msgstr "Discussion"
 
-#: ../IkiWiki/CGI.pm:446
+#: ../IkiWiki/CGI.pm:457
 #, perl-format
 msgid "creating %s"
 msgstr "Création de %s"
 
-#: ../IkiWiki/CGI.pm:463 ../IkiWiki/CGI.pm:506
+#: ../IkiWiki/CGI.pm:474 ../IkiWiki/CGI.pm:517
 #, perl-format
 msgid "editing %s"
 msgstr "Édition de %s"
 
-#: ../IkiWiki/CGI.pm:629
+#: ../IkiWiki/CGI.pm:625
 msgid "You are banned."
 msgstr "Vous avez été banni."
 
-#: ../IkiWiki/CGI.pm:656
+#: ../IkiWiki/CGI.pm:657
 msgid "login failed, perhaps you need to turn on cookies?"
 msgstr ""
 "Échec de l'identification, vous devriez peut-être autoriser les cookies."
@@ -143,6 +137,11 @@ msgstr "RPC::XML::Client introuvable, pas de réponse au ping"
 msgid "linkmap failed to run dot"
 msgstr "Échec de lancement de dot par linkmap"
 
+#: ../IkiWiki/Plugin/lockedit.pm:24
+#, perl-format
+msgid "%s is locked by %s and cannot be edited"
+msgstr "%s est verrouillé par %s et ne peut être édité"
+
 #: ../IkiWiki/Plugin/mdwn.pm:37
 #, perl-format
 msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
@@ -375,13 +374,13 @@ msgstr "%s a été créé avec succès"
 msgid "usage: ikiwiki [options] source dest"
 msgstr "Syntaxe : ikiwiki [options] source destination"
 
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:102
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 "Vous devez indiquer une url vers le wiki par --url lors de l'utilisation de "
 "--cgi"
 
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:147 ../IkiWiki.pm:148
 msgid "Error"
 msgstr "Erreur"
 
@@ -389,7 +388,7 @@ msgstr "Erreur"
 #. translators: preprocessor directive name,
 #. translators: the second a page name, the
 #. translators: third a number.
-#: ../IkiWiki.pm:528
+#: ../IkiWiki.pm:527
 #, perl-format
 msgid "%s preprocessing loop detected on %s at depth %i"
 msgstr ""
index bcf98b982d64937dda879e74b29791020b14114f..59ae104b9d66b888d0c00eadd52a2c4b4accca2c 100644 (file)
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki-gu\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-31 02:17-0500\n"
+"POT-Creation-Date: 2007-02-01 21:27-0500\n"
 "PO-Revision-Date: 2007-01-11 16:05+0530\n"
 "Last-Translator: Kartik Mistry <kartik.mistry@gmail.com>\n"
 "Language-Team: Gujarati <team@utkarsh.org>\n"
@@ -15,42 +15,36 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#. translators: The first parameter is a page name,
-#. translators: second is the user who locked it.
-#: ../IkiWiki/CGI.pm:51
-#, perl-format
-msgid "%s is locked by %s and cannot be edited"
-msgstr "%s એ %s દ્વારા તાળું મરાયેલ છે અને તેમાં સુધારો કરી શકાશે નહી"
-
-#: ../IkiWiki/CGI.pm:140
+#: ../IkiWiki/CGI.pm:152
 msgid "You need to log in first."
 msgstr "તમારે પ્રથમ લોગ ઇન થવું પડશે."
 
-#: ../IkiWiki/CGI.pm:257
+#: ../IkiWiki/CGI.pm:262
 msgid "Preferences saved."
 msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ."
 
-#: ../IkiWiki/CGI.pm:407 ../IkiWiki/Plugin/brokenlinks.pm:24
-#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/orphans.pm:28
-#: ../IkiWiki/Render.pm:97 ../IkiWiki/Render.pm:165
+#: ../IkiWiki/CGI.pm:412 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/opendiscussion.pm:17
+#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
+#: ../IkiWiki/Render.pm:165
 msgid "discussion"
 msgstr "ચર્ચા"
 
-#: ../IkiWiki/CGI.pm:446
+#: ../IkiWiki/CGI.pm:457
 #, perl-format
 msgid "creating %s"
 msgstr "%s બનાવે છે"
 
-#: ../IkiWiki/CGI.pm:463 ../IkiWiki/CGI.pm:506
+#: ../IkiWiki/CGI.pm:474 ../IkiWiki/CGI.pm:517
 #, perl-format
 msgid "editing %s"
 msgstr "%s સુધારે છે"
 
-#: ../IkiWiki/CGI.pm:629
+#: ../IkiWiki/CGI.pm:625
 msgid "You are banned."
 msgstr "તમારા પર પ્રતિબંધ છે."
 
-#: ../IkiWiki/CGI.pm:656
+#: ../IkiWiki/CGI.pm:657
 msgid "login failed, perhaps you need to turn on cookies?"
 msgstr ""
 
@@ -138,6 +132,11 @@ msgstr "RPC::XML::Client મળ્યું નહી, પિંગ કરવા
 msgid "linkmap failed to run dot"
 msgstr "લીંકમેપ ડોટ ચલાવવામાં નિષ્ફળ"
 
+#: ../IkiWiki/Plugin/lockedit.pm:24
+#, perl-format
+msgid "%s is locked by %s and cannot be edited"
+msgstr "%s એ %s દ્વારા તાળું મરાયેલ છે અને તેમાં સુધારો કરી શકાશે નહી"
+
 #: ../IkiWiki/Plugin/mdwn.pm:37
 #, perl-format
 msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
@@ -364,11 +363,11 @@ msgstr "સફળતાપૂર્વક પેદા કરેલ છે %s"
 msgid "usage: ikiwiki [options] source dest"
 msgstr "ઉપયોગ: ikiwiki [વિકલ્પો] source dest"
 
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:102
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr "જ્યારે --cgi ઉપયોગ કરતાં હોય ત્યારે વીકીનું યુઆરએલ સ્પષ્ટ કરવું જ પડશે"
 
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:147 ../IkiWiki.pm:148
 msgid "Error"
 msgstr "ક્ષતિ"
 
@@ -376,7 +375,7 @@ msgstr "ક્ષતિ"
 #. translators: preprocessor directive name,
 #. translators: the second a page name, the
 #. translators: third a number.
-#: ../IkiWiki.pm:528
+#: ../IkiWiki.pm:527
 #, perl-format
 msgid "%s preprocessing loop detected on %s at depth %i"
 msgstr "%s પર શોધાયેલ લુપ  %s પર ચલાવે છે %i ઉંડાણ પર"
index 43fe172bada233c7f9851ce25fc005bbd93126d9..a77f9d8838dd36a0eef56609d8119c12d6806497 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-31 02:17-0500\n"
+"POT-Creation-Date: 2007-02-01 21:30-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,42 +16,36 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#. translators: The first parameter is a page name,
-#. translators: second is the user who locked it.
-#: ../IkiWiki/CGI.pm:51
-#, perl-format
-msgid "%s is locked by %s and cannot be edited"
-msgstr ""
-
-#: ../IkiWiki/CGI.pm:140
+#: ../IkiWiki/CGI.pm:152
 msgid "You need to log in first."
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:257
+#: ../IkiWiki/CGI.pm:262
 msgid "Preferences saved."
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:407 ../IkiWiki/Plugin/brokenlinks.pm:24
-#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/orphans.pm:28
-#: ../IkiWiki/Render.pm:97 ../IkiWiki/Render.pm:165
+#: ../IkiWiki/CGI.pm:412 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/opendiscussion.pm:17
+#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
+#: ../IkiWiki/Render.pm:165
 msgid "discussion"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:446
+#: ../IkiWiki/CGI.pm:457
 #, perl-format
 msgid "creating %s"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:463 ../IkiWiki/CGI.pm:506
+#: ../IkiWiki/CGI.pm:474 ../IkiWiki/CGI.pm:517
 #, perl-format
 msgid "editing %s"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:629
+#: ../IkiWiki/CGI.pm:625
 msgid "You are banned."
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:656
+#: ../IkiWiki/CGI.pm:657
 msgid "login failed, perhaps you need to turn on cookies?"
 msgstr ""
 
@@ -139,6 +133,11 @@ msgstr ""
 msgid "linkmap failed to run dot"
 msgstr ""
 
+#: ../IkiWiki/Plugin/lockedit.pm:24
+#, perl-format
+msgid "%s is locked by %s and cannot be edited"
+msgstr ""
+
 #: ../IkiWiki/Plugin/mdwn.pm:37
 #, perl-format
 msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
@@ -365,11 +364,11 @@ msgstr ""
 msgid "usage: ikiwiki [options] source dest"
 msgstr ""
 
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:102
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:147 ../IkiWiki.pm:148
 msgid "Error"
 msgstr ""
 
@@ -377,7 +376,7 @@ msgstr ""
 #. translators: preprocessor directive name,
 #. translators: the second a page name, the
 #. translators: third a number.
-#: ../IkiWiki.pm:528
+#: ../IkiWiki.pm:527
 #, perl-format
 msgid "%s preprocessing loop detected on %s at depth %i"
 msgstr ""
index a1e445949244cb0ef96003ce50b834e902b2351d..a93c76167946290bdb5ab92171d5b806c937a082 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki 1.37\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-31 02:17-0500\n"
+"POT-Creation-Date: 2007-02-01 21:27-0500\n"
 "PO-Revision-Date: 2007-01-05 16:33+100\n"
 "Last-Translator: Paweł Tęcza <ptecza@net.icm.edu.pl>\n"
 "Language-Team: Debian L10n Polish <debian-l10n-polish@lists.debian.org>\n"
@@ -16,44 +16,36 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#. translators: The first parameter is a page name,
-#. translators: second is the user who locked it.
-#: ../IkiWiki/CGI.pm:51
-#, perl-format
-msgid "%s is locked by %s and cannot be edited"
-msgstr ""
-"strona %s jest tymczasowo zablokowana przez użytkownika %s i nie może być "
-"teraz edytowana"
-
-#: ../IkiWiki/CGI.pm:140
+#: ../IkiWiki/CGI.pm:152
 msgid "You need to log in first."
 msgstr "Konieczne jest zalogowanie się."
 
-#: ../IkiWiki/CGI.pm:257
+#: ../IkiWiki/CGI.pm:262
 msgid "Preferences saved."
 msgstr "Ustawienia zostały zapisane."
 
-#: ../IkiWiki/CGI.pm:407 ../IkiWiki/Plugin/brokenlinks.pm:24
-#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/orphans.pm:28
-#: ../IkiWiki/Render.pm:97 ../IkiWiki/Render.pm:165
+#: ../IkiWiki/CGI.pm:412 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/opendiscussion.pm:17
+#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
+#: ../IkiWiki/Render.pm:165
 msgid "discussion"
 msgstr "dyskusja"
 
-#: ../IkiWiki/CGI.pm:446
+#: ../IkiWiki/CGI.pm:457
 #, perl-format
 msgid "creating %s"
 msgstr "tworzenie strony %s"
 
-#: ../IkiWiki/CGI.pm:463 ../IkiWiki/CGI.pm:506
+#: ../IkiWiki/CGI.pm:474 ../IkiWiki/CGI.pm:517
 #, perl-format
 msgid "editing %s"
 msgstr "edycja strony %s"
 
-#: ../IkiWiki/CGI.pm:629
+#: ../IkiWiki/CGI.pm:625
 msgid "You are banned."
 msgstr "Dostęp został zabroniony przez administratora."
 
-#: ../IkiWiki/CGI.pm:656
+#: ../IkiWiki/CGI.pm:657
 msgid "login failed, perhaps you need to turn on cookies?"
 msgstr ""
 
@@ -145,6 +137,13 @@ msgstr "Niezainstalowany moduł RPC::XML::Client, brak możliwości pingowania"
 msgid "linkmap failed to run dot"
 msgstr "awaria wtyczki linkmap"
 
+#: ../IkiWiki/Plugin/lockedit.pm:24
+#, perl-format
+msgid "%s is locked by %s and cannot be edited"
+msgstr ""
+"strona %s jest tymczasowo zablokowana przez użytkownika %s i nie może być "
+"teraz edytowana"
+
 #: ../IkiWiki/Plugin/mdwn.pm:37
 #, perl-format
 msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
@@ -376,13 +375,13 @@ msgstr "strona pomyślnie utworzona %s"
 msgid "usage: ikiwiki [options] source dest"
 msgstr "użycie: ikiwiki [parametry] źródło cel"
 
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:102
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 "Użycie parametru --cgi wymaga podania adresu URL do wiki za pomocą parametru "
 "--url"
 
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:147 ../IkiWiki.pm:148
 msgid "Error"
 msgstr "Błąd"
 
@@ -390,7 +389,7 @@ msgstr "Błąd"
 #. translators: preprocessor directive name,
 #. translators: the second a page name, the
 #. translators: third a number.
-#: ../IkiWiki.pm:528
+#: ../IkiWiki.pm:527
 #, perl-format
 msgid "%s preprocessing loop detected on %s at depth %i"
 msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i"
index ddb95c0f568560ff79169f8ceef8db3f58bd18d0..df9c1055beea4e103abf596cd8a2a887a15f8e6b 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-31 02:17-0500\n"
+"POT-Creation-Date: 2007-02-01 21:27-0500\n"
 "PO-Revision-Date: 2007-01-10 23:47+0100\n"
 "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -15,42 +15,36 @@ msgstr ""
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#. translators: The first parameter is a page name,
-#. translators: second is the user who locked it.
-#: ../IkiWiki/CGI.pm:51
-#, perl-format
-msgid "%s is locked by %s and cannot be edited"
-msgstr "%s är låst av %s och kan inte redigeras"
-
-#: ../IkiWiki/CGI.pm:140
+#: ../IkiWiki/CGI.pm:152
 msgid "You need to log in first."
 msgstr "Du måste logga in först."
 
-#: ../IkiWiki/CGI.pm:257
+#: ../IkiWiki/CGI.pm:262
 msgid "Preferences saved."
 msgstr "Inställningar sparades."
 
-#: ../IkiWiki/CGI.pm:407 ../IkiWiki/Plugin/brokenlinks.pm:24
-#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/orphans.pm:28
-#: ../IkiWiki/Render.pm:97 ../IkiWiki/Render.pm:165
+#: ../IkiWiki/CGI.pm:412 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/opendiscussion.pm:17
+#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
+#: ../IkiWiki/Render.pm:165
 msgid "discussion"
 msgstr "diskussion"
 
-#: ../IkiWiki/CGI.pm:446
+#: ../IkiWiki/CGI.pm:457
 #, perl-format
 msgid "creating %s"
 msgstr "skapar %s"
 
-#: ../IkiWiki/CGI.pm:463 ../IkiWiki/CGI.pm:506
+#: ../IkiWiki/CGI.pm:474 ../IkiWiki/CGI.pm:517
 #, perl-format
 msgid "editing %s"
 msgstr "redigerar %s"
 
-#: ../IkiWiki/CGI.pm:629
+#: ../IkiWiki/CGI.pm:625
 msgid "You are banned."
 msgstr "Du är bannlyst."
 
-#: ../IkiWiki/CGI.pm:656
+#: ../IkiWiki/CGI.pm:657
 msgid "login failed, perhaps you need to turn on cookies?"
 msgstr ""
 
@@ -138,6 +132,11 @@ msgstr "RPC::XML::Client hittades inte, pingar inte"
 msgid "linkmap failed to run dot"
 msgstr "linkmap misslyckades att köra dot"
 
+#: ../IkiWiki/Plugin/lockedit.pm:24
+#, perl-format
+msgid "%s is locked by %s and cannot be edited"
+msgstr "%s är låst av %s och kan inte redigeras"
+
 #: ../IkiWiki/Plugin/mdwn.pm:37
 #, perl-format
 msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
@@ -368,11 +367,11 @@ msgstr "generering av %s lyckades"
 msgid "usage: ikiwiki [options] source dest"
 msgstr "användning: ikiwiki [flaggor] källa mål"
 
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:102
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr "Måste ange url till wiki med --url när --cgi används"
 
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:147 ../IkiWiki.pm:148
 msgid "Error"
 msgstr "Fel"
 
@@ -380,7 +379,7 @@ msgstr "Fel"
 #. translators: preprocessor directive name,
 #. translators: the second a page name, the
 #. translators: third a number.
-#: ../IkiWiki.pm:528
+#: ../IkiWiki.pm:527
 #, perl-format
 msgid "%s preprocessing loop detected on %s at depth %i"
 msgstr "%s förbehandlingsslinga detekterades på %s, djup %i"
index ddecc0db053645ba6db6e9673d14c69e81b14d63..32d386856aa02bab3b4756dc3991eca8b0ae5954 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ikiwiki\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-31 02:17-0500\n"
+"POT-Creation-Date: 2007-02-01 21:27-0500\n"
 "PO-Revision-Date: 2007-01-13 15:31+1030\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
@@ -16,42 +16,36 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: LocFactoryEditor 1.6fc1\n"
 
-#. translators: The first parameter is a page name,
-#. translators: second is the user who locked it.
-#: ../IkiWiki/CGI.pm:51
-#, perl-format
-msgid "%s is locked by %s and cannot be edited"
-msgstr "%s bị %s khoá nên không thể sửa được"
-
-#: ../IkiWiki/CGI.pm:140
+#: ../IkiWiki/CGI.pm:152
 msgid "You need to log in first."
 msgstr "Trước tiên bạn cần phải đăng nhập."
 
-#: ../IkiWiki/CGI.pm:257
+#: ../IkiWiki/CGI.pm:262
 msgid "Preferences saved."
 msgstr "Tùy thích đã được lưu."
 
-#: ../IkiWiki/CGI.pm:407 ../IkiWiki/Plugin/brokenlinks.pm:24
-#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/orphans.pm:28
-#: ../IkiWiki/Render.pm:97 ../IkiWiki/Render.pm:165
+#: ../IkiWiki/CGI.pm:412 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/Plugin/inline.pm:160 ../IkiWiki/Plugin/opendiscussion.pm:17
+#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
+#: ../IkiWiki/Render.pm:165
 msgid "discussion"
 msgstr "thảo luận"
 
-#: ../IkiWiki/CGI.pm:446
+#: ../IkiWiki/CGI.pm:457
 #, perl-format
 msgid "creating %s"
 msgstr "đang tạo %s"
 
-#: ../IkiWiki/CGI.pm:463 ../IkiWiki/CGI.pm:506
+#: ../IkiWiki/CGI.pm:474 ../IkiWiki/CGI.pm:517
 #, perl-format
 msgid "editing %s"
 msgstr "đang sửa %s"
 
-#: ../IkiWiki/CGI.pm:629
+#: ../IkiWiki/CGI.pm:625
 msgid "You are banned."
 msgstr "Bạn bị cấm ra."
 
-#: ../IkiWiki/CGI.pm:656
+#: ../IkiWiki/CGI.pm:657
 msgid "login failed, perhaps you need to turn on cookies?"
 msgstr ""
 
@@ -141,6 +135,11 @@ msgstr "Không tìm thấy RPC::XML::Client nên không gửi gói tin ping"
 msgid "linkmap failed to run dot"
 msgstr "linkmap không chạy dot được"
 
+#: ../IkiWiki/Plugin/lockedit.pm:24
+#, perl-format
+msgid "%s is locked by %s and cannot be edited"
+msgstr "%s bị %s khoá nên không thể sửa được"
+
 #: ../IkiWiki/Plugin/mdwn.pm:37
 #, perl-format
 msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
@@ -368,12 +367,12 @@ msgstr "%s đã được tạo ra"
 msgid "usage: ikiwiki [options] source dest"
 msgstr "cách sử dụng: ikiwiki [tùy chọn] nguồn đích"
 
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:102
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 "Cần phải xác định địa chỉ URL tới wiki với « --url » khi dùng « --cgi »"
 
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:147 ../IkiWiki.pm:148
 msgid "Error"
 msgstr "Lỗi"
 
@@ -381,7 +380,7 @@ msgstr "Lỗi"
 #. translators: preprocessor directive name,
 #. translators: the second a page name, the
 #. translators: third a number.
-#: ../IkiWiki.pm:528
+#: ../IkiWiki.pm:527
 #, perl-format
 msgid "%s preprocessing loop detected on %s at depth %i"
 msgstr "vòng lặp tiền xử lý %s được phát hiện trên %s ở độ sâu %i"