summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore7
-rw-r--r--IkiWiki/Plugin/img.pm5
-rw-r--r--IkiWiki/Plugin/inline.pm57
-rw-r--r--IkiWiki/Plugin/map.pm12
-rw-r--r--IkiWiki/Plugin/pagestats.pm13
-rw-r--r--IkiWiki/Render.pm10
-rw-r--r--debian/changelog8
-rw-r--r--doc/bugs/HTML_for_parentlinks_makes_theming_hard.mdwn45
-rw-r--r--doc/bugs/html5_support.mdwn4
-rw-r--r--doc/bugs/map_fails_to_close_ul_element_for_empty_list.mdwn6
-rw-r--r--doc/bugs/post-commit_hangs.mdwn47
-rw-r--r--doc/css_market.mdwn5
-rw-r--r--doc/features.mdwn12
-rw-r--r--doc/forum/Sidebar_with_links__63__.mdwn58
-rw-r--r--doc/forum/appear_if_you_are_login_or_not_in_a_page.mdwn36
-rw-r--r--doc/forum/ikiwiki_over_database__63__.wiki11
-rw-r--r--doc/git.mdwn2
-rw-r--r--doc/ikiwiki/directive/inline.mdwn5
-rw-r--r--doc/ikiwiki/directive/pagestats.mdwn10
-rw-r--r--doc/ikiwikiusers.mdwn18
-rw-r--r--doc/news/openid/discussion.mdwn2
-rw-r--r--doc/plugins/contrib/album.mdwn7
-rw-r--r--doc/plugins/contrib/cvs.mdwn32
-rw-r--r--doc/plugins/contrib/linguas.mdwn2
-rw-r--r--doc/plugins/contrib/navbar/discussion.mdwn2
-rw-r--r--doc/plugins/contrib/trail.mdwn11
-rw-r--r--doc/plugins/contrib/unixrelpagespec.mdwn42
-rw-r--r--doc/plugins/htmlscrubber/discussion.mdwn18
-rw-r--r--doc/plugins/write.mdwn2
-rw-r--r--doc/post-commit/discussion.mdwn76
-rw-r--r--doc/sandbox.mdwn3
-rw-r--r--doc/sandbox/discussion.mdwn6
-rw-r--r--doc/tips/mathopd_permissions.mdwn15
-rw-r--r--doc/todo/CVS_backend.mdwn2
-rw-r--r--doc/todo/Raw_view_link.mdwn5
-rw-r--r--doc/todo/backlinks_result_is_lossy.mdwn4
-rw-r--r--doc/todo/generated_po_stuff_not_ignored_by_git.mdwn7
-rw-r--r--doc/todo/inline_plugin:_specifying_ordered_page_names.mdwn7
-rw-r--r--doc/todo/pagestats_among_a_subset_of_pages.mdwn4
-rw-r--r--doc/todo/should_optimise_pagespecs.mdwn4
-rw-r--r--doc/todo/source_link.mdwn25
-rw-r--r--doc/users/Tim_Lavoie.mdwn1
-rw-r--r--doc/users/Will.mdwn19
-rw-r--r--doc/users/jogo.mdwn3
-rw-r--r--doc/users/schmonz.mdwn5
-rw-r--r--doc/users/simonraven.mdwn9
46 files changed, 614 insertions, 70 deletions
diff --git a/.gitignore b/.gitignore
index 57991a732..8de36e2c8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,10 @@ ikiwiki.out
pm_to_blib
*.man
build-stamp
+po/po2wiki_stamp
+po/underlays/*/*.mdwn
+po/underlays/basewiki/*/*.mdwn
+po/underlays/basewiki/*/*/*.mdwn
+po/underlays/directives/ikiwiki/directive/*.mdwn
+po/underlays_copy_stamp
+underlays/locale
diff --git a/IkiWiki/Plugin/img.pm b/IkiWiki/Plugin/img.pm
index 44d67bd83..68b001671 100644
--- a/IkiWiki/Plugin/img.pm
+++ b/IkiWiki/Plugin/img.pm
@@ -44,6 +44,7 @@ sub preprocess (@) {
}
add_link($params{page}, $image);
+
# optimisation: detect scan mode, and avoid generating the image
if (! defined wantarray) {
return;
@@ -65,6 +66,8 @@ sub preprocess (@) {
my $r;
if ($params{size} ne 'full') {
+ add_depends($params{page}, $image);
+
my ($w, $h) = ($params{size} =~ /^(\d*)x(\d*)$/);
error sprintf(gettext('wrong size format "%s" (should be WxH)'), $params{size})
unless (defined $w && defined $h &&
@@ -102,8 +105,6 @@ sub preprocess (@) {
$imglink = $file;
}
- add_depends($imglink, $params{page});
-
my ($fileurl, $imgurl);
if (! $params{preview}) {
$fileurl=urlto($file, $params{destpage});
diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm
index 9d5ebc34d..e7d6f250e 100644
--- a/IkiWiki/Plugin/inline.pm
+++ b/IkiWiki/Plugin/inline.pm
@@ -151,7 +151,7 @@ my %feedlinks;
sub preprocess_inline (@) {
my %params=@_;
- if (! exists $params{pages}) {
+ if (! exists $params{pages} && ! exists $params{pagenames}) {
error gettext("missing pages parameter");
}
my $raw=yesno($params{raw});
@@ -183,28 +183,47 @@ sub preprocess_inline (@) {
$params{template} = $archive ? "archivepage" : "inlinepage";
}
- my @list=pagespec_match_list(
- [ grep { $_ ne $params{page} } keys %pagesources ],
- $params{pages}, location => $params{page});
+ my @list;
- if (exists $params{sort} && $params{sort} eq 'title') {
- @list=sort { pagetitle(basename($a)) cmp pagetitle(basename($b)) } @list;
- }
- elsif (exists $params{sort} && $params{sort} eq 'title_natural') {
- eval q{use Sort::Naturally};
- if ($@) {
- error(gettext("Sort::Naturally needed for title_natural sort"));
+ if (exists $params{pagenames}) {
+
+ foreach my $p (qw(sort pages)) {
+ if (exists $params{$p}) {
+ error sprintf(gettext("the %s and %s parameters cannot be used together"),
+ "pagenames", $p);
+ }
}
- @list=sort { Sort::Naturally::ncmp(pagetitle(basename($a)), pagetitle(basename($b))) } @list;
- }
- elsif (exists $params{sort} && $params{sort} eq 'mtime') {
- @list=sort { $pagemtime{$b} <=> $pagemtime{$a} } @list;
- }
- elsif (! exists $params{sort} || $params{sort} eq 'age') {
- @list=sort { $pagectime{$b} <=> $pagectime{$a} } @list;
+
+ @list = split ' ', $params{pagenames};
+ my $_;
+ @list = map { bestlink($params{page}, $_) } @list;
+
+ $params{pages} = join(" or ", @list);
}
else {
- error sprintf(gettext("unknown sort type %s"), $params{sort});
+ @list = pagespec_match_list(
+ [ grep { $_ ne $params{page} } keys %pagesources ],
+ $params{pages}, location => $params{page});
+
+ if (exists $params{sort} && $params{sort} eq 'title') {
+ @list=sort { pagetitle(basename($a)) cmp pagetitle(basename($b)) } @list;
+ }
+ elsif (exists $params{sort} && $params{sort} eq 'title_natural') {
+ eval q{use Sort::Naturally};
+ if ($@) {
+ error(gettext("Sort::Naturally needed for title_natural sort"));
+ }
+ @list=sort { Sort::Naturally::ncmp(pagetitle(basename($a)), pagetitle(basename($b))) } @list;
+ }
+ elsif (exists $params{sort} && $params{sort} eq 'mtime') {
+ @list=sort { $pagemtime{$b} <=> $pagemtime{$a} } @list;
+ }
+ elsif (! exists $params{sort} || $params{sort} eq 'age') {
+ @list=sort { $pagectime{$b} <=> $pagectime{$a} } @list;
+ }
+ else {
+ error sprintf(gettext("unknown sort type %s"), $params{sort});
+ }
}
if (yesno($params{reverse})) {
diff --git a/IkiWiki/Plugin/map.pm b/IkiWiki/Plugin/map.pm
index 120451b5d..826dbbd66 100644
--- a/IkiWiki/Plugin/map.pm
+++ b/IkiWiki/Plugin/map.pm
@@ -80,7 +80,17 @@ sub preprocess (@) {
my $indent=0;
my $openli=0;
my $addparent="";
- my $map = "<div class='map'>\n<ul>\n";
+ my $map = "<div class='map'>\n";
+
+ # Return empty div if %mapitems is empty
+ if (!scalar(keys %mapitems)) {
+ $map .= "</div>\n";
+ return $map;
+ }
+ else { # continue populating $map
+ $map .= "<ul>\n";
+ }
+
foreach my $item (sort keys %mapitems) {
my @linktext = (length $mapitems{$item} ? (linktext => $mapitems{$item}) : ());
$item=~s/^\Q$common_prefix\E\///
diff --git a/IkiWiki/Plugin/pagestats.pm b/IkiWiki/Plugin/pagestats.pm
index 8ab5d3666..874ead7e6 100644
--- a/IkiWiki/Plugin/pagestats.pm
+++ b/IkiWiki/Plugin/pagestats.pm
@@ -38,13 +38,22 @@ sub preprocess (@) {
# Needs to update whenever a page is added or removed, so
# register a dependency.
add_depends($params{page}, $params{pages});
+ add_depends($params{page}, $params{among}) if exists $params{among};
my %counts;
my $max = 0;
foreach my $page (pagespec_match_list([keys %links],
$params{pages}, location => $params{page})) {
use IkiWiki::Render;
- $counts{$page} = scalar(IkiWiki::backlinks($page));
+
+ my @backlinks = IkiWiki::backlink_pages($page);
+
+ if (exists $params{among}) {
+ @backlinks = pagespec_match_list(\@backlinks,
+ $params{among}, location => $params{page});
+ }
+
+ $counts{$page} = scalar(@backlinks);
$max = $counts{$page} if $counts{$page} > $max;
}
@@ -63,6 +72,8 @@ sub preprocess (@) {
my $res = "<div class='pagecloud'>\n";
foreach my $page (sort keys %counts) {
+ next unless $counts{$page} > 0;
+
my $class = $classes[$counts{$page} * scalar(@classes) / ($max + 1)];
$res .= "<span class=\"$class\">".
htmllink($params{page}, $params{destpage}, $page).
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index bed9cb777..5cb67ea07 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -24,13 +24,19 @@ sub calculate_backlinks () {
$backlinks_calculated=1;
}
-sub backlinks ($) {
+sub backlink_pages ($) {
my $page=shift;
calculate_backlinks();
+ return keys %{$backlinks{$page}};
+}
+
+sub backlinks ($) {
+ my $page=shift;
+
my @links;
- foreach my $p (keys %{$backlinks{$page}}) {
+ foreach my $p (backlink_pages($page)) {
my $href=urlto($p, $page);
# Trim common dir prefixes from both pages.
diff --git a/debian/changelog b/debian/changelog
index 90ec2ddac..e370a33ef 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -8,6 +8,14 @@ ikiwiki (3.15) UNRELEASED; urgency=low
* Add further build machinery to generate translated underlays from
the po file, for use by wikis whose primary language is not English.
* Add Danish basewiki translation by Jonas Smedegaard.
+ * img: Fix adding of dependency from page to the image.
+ * pagestats: add `among` parameter, which only counts links from specified
+ pages (smcv)
+ * pagestats: when making a tag cloud, don't emit links where the tag is
+ unused (smcv)
+ * map: Avoid emitting an unclosed ul element if the map is empty. (harishcm)
+ * inline: Add pagenames parameter that can be used to list a set of
+ pages to inline, in a specific order, without using a PageSpec. (smcv)
* Add getsource plugin (Will, smcv)
-- Joey Hess <joeyh@debian.org> Tue, 02 Jun 2009 17:03:41 -0400
diff --git a/doc/bugs/HTML_for_parentlinks_makes_theming_hard.mdwn b/doc/bugs/HTML_for_parentlinks_makes_theming_hard.mdwn
new file mode 100644
index 000000000..0cbef403d
--- /dev/null
+++ b/doc/bugs/HTML_for_parentlinks_makes_theming_hard.mdwn
@@ -0,0 +1,45 @@
+I'm trying to make a pretty theme for ikiwiki and I'm making progress (or at least I think I am :-). However I've noticed an issue when it comes to theming. On the front page the wiki name is put inside the "title" span and on all the other pages, it's put in the "parentlinks" span. See here:
+
+From [my dev home page](http://adam.shand.net/iki-dev/):
+
+<code>
+&lt;div class="header">
+&lt;span>
+&lt;span class="parentlinks">
+
+&lt;/span>
+&lt;span class="title">
+adam.shand.net/iki-dev
+&lt;/span>
+&lt;/span>&lt;!--.header-->
+
+&lt;/div>
+</code>
+
+From a sub-page of [my dev home page](http://adam.shand.net/iki-dev/recipes/navajo_fry_bread/):
+
+<code>
+&lt;div class="header">
+&lt;span>
+&lt;span class="parentlinks">
+
+&lt;a href="../">adam.shand.net/iki-dev</a>/
+
+&lt;/span>
+&lt;span class="title">
+recipes
+&lt;/span>
+&lt;/span>&lt;!--.header-->
+
+&lt;/div>
+</code>
+
+I understand the logic behind doing this (on the front page it is the title as well as the name of the wiki) however if you want to do something different with the title of a page vs. the name of the wiki it makes things pretty tricky.
+
+I'll just modify the templates for my own site but I thought I'd report it as a bug in the hopes that it will be useful to others.
+
+Cheers,
+Adam.
+
+----
+> I just noticed that it's also different on the comments, preferences and edit pages. I'll come up with a diff and see what you guys think. -- Adam.
diff --git a/doc/bugs/html5_support.mdwn b/doc/bugs/html5_support.mdwn
index 783f5e47c..239474275 100644
--- a/doc/bugs/html5_support.mdwn
+++ b/doc/bugs/html5_support.mdwn
@@ -37,10 +37,6 @@ This element is poorly supported by browsers. As a workaround, `style.css` needs
Internet Explorer will display it as a block, though you can't seem to be able to further control the style.
-# Validator complains about no h1-h6 in header
-
-* [#509](http://bugzilla.validator.nu/show_bug.cgi?id=509)
-
## Time element
The [time element](http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-time-element) ideally needs the datatime= attribute set by a template variable with what [HTML5 defines as a valid datetime string](http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#valid-global-date-and-time-string).
diff --git a/doc/bugs/map_fails_to_close_ul_element_for_empty_list.mdwn b/doc/bugs/map_fails_to_close_ul_element_for_empty_list.mdwn
index 47eeb7030..5e842ca7f 100644
--- a/doc/bugs/map_fails_to_close_ul_element_for_empty_list.mdwn
+++ b/doc/bugs/map_fails_to_close_ul_element_for_empty_list.mdwn
@@ -64,7 +64,11 @@ Patch:
>>>>> (Or, make a git branch of your own and replace the reference just below,
>>>>> if you prefer.) --[[smcv]]
-[[!template id=gitbranch author="[[harishcm]]" branch=smcv/harishcm-map-fix]]
+>>>>>> The current arrangement looks fine to me. Thanks. --[[harishcm]]
+
+[[!template id=gitbranch author="[[harishcm]]" branch=smcv/ready/harishcm-map-fix]]
+
+> [[merged|done]] --[[Joey]]
Patch:
diff --git a/doc/bugs/post-commit_hangs.mdwn b/doc/bugs/post-commit_hangs.mdwn
new file mode 100644
index 000000000..32820d886
--- /dev/null
+++ b/doc/bugs/post-commit_hangs.mdwn
@@ -0,0 +1,47 @@
+# post-commit hangs
+
+I installed ikiwiki v3.14159 in /usr/local from tarball (/usr contains an older version). Having done so, and used ikiwiki-transition to update setup file, the post commit hook is now blocking in flock (as seen by ps). I should also mention that I added the goodstuff, attachment and remove plugins (which was the purpose of upgrading to v3). Any clues as how to debug/fix gratefully received. The wiki is publically viewable at wiki.sgcm.org.uk if that helps.
+
+> It's blocking when you do what? Save a page from the web? Make a commit
+> to the underlaying VCS? Which VCS? These are all different code paths..
+> --[[Joey]]
+
+>> It's blocking when I run "ikiwiki --setup ikiwiki.setup" (which calls hg update, which calls ikiwiki --post-commit).
+>> Hmm, maybe it's the recursive call to ikiwiki which is the problem.
+>> The underlying VCS is mercurial. --Ali
+
+>>> You're not supposed to run ikiwiki -setup manually in your post commit hook.
+>>> Doing so will certianly lead to a locking problem; it also forces ikiwiki to rebuild
+>>> the entire wiki anytime a single page changes, which is very inefficient!
+>>>
+>>> Instead, you should use the `mercurial_wrapper` setting
+>>> in the setup file, which will make ikiwiki generate a small
+>>> executable expressly designed to be run at post commit time.
+>>> Or, you can use the `--post-commit` option, as documented
+>>> in [[rcs/mecurial]] --[[Joey]]
+
+>>>> I don't run ikiwiki --setup in the commit hook; I run ikiwiki --post-commit (as mentioned above).
+>>>> I'm trying to run ikiwiki --setup from the command line after modifying the setup file.
+>>>> ikiwiki --setup is calling hg update, which is calling ikiwiki --post-commit. Am I not supposed to do that? --Ali
+
+>>>>> No, I don't think that hg update should call ikiwiki anything. The
+>>>>> [[hgrc_example|rcs/mercurial]] doesn't seem to configure it to do that? --[[Joey]]
+
+>>>>>> Ok, I'm not sure I understand what's going on, but my problem is solved.
+>>>>>>
+>>>>>> My hgrc used to say:
+>>>>>>
+>>>>>> [hooks]
+>>>>>>
+>>>>>> incoming.update = hg up
+>>>>>>
+>>>>>> update.ikiwiki = ikiwiki --setup /home/ikiwiki/ikiwiki.setup --post-commit
+>>>>>>
+>>>>>> I've now changed it to match the example page and it works. Thanks --Ali.
+
+>>>>>>> [[done]]
+
+> Also, how have you arranged to keep it from seeing the installation in /usr? Perl could well be loading
+> modules from the old installation, and if it's one with a different locking strategy that would explain your problem. --[[Joey]]
+
+>> Good point. Not knowing perl, I just assumed /usr/local would take precedence. I've now used "dpkg -r ikiwiki" to remove the problem. --Ali
diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn
index 15e147513..61254c4b8 100644
--- a/doc/css_market.mdwn
+++ b/doc/css_market.mdwn
@@ -27,8 +27,11 @@ gnomes will convert them to css files..)
designed by [styleshout](http://www.styleshout.com).
You can see it [here](http://fred.ccheznous.org). You can download the local.css file and
the modified templates [here](http://fred.ccheznous.org/refresh_20060602.tgz).
+
+ * This link (above) seems to deliver an empty tarball.
+
* You'll find a updated version of these templates [here](http://www.der-winnie.de/~winnie/configs/ikiwiki-templates.tar.gz).
- These templates are known to work with ikiwiki 2.31, and since I'll install always the newest one on my server I'll will update them on a regular basis.
+ These templates are known to work with ikiwiki 2.31, and since I'll install always the newest one on my server I'll will update them on a regular basis.
* (This link appears to be broken?)
* **[[02_Template.css]]**, contributed and adapted by [maxx](http://martin.wuertele.net/), [original](http://www.openwebdesign.org/viewdesign.phtml?id=3057)
diff --git a/doc/features.mdwn b/doc/features.mdwn
index ff341d2cc..3925d78ef 100644
--- a/doc/features.mdwn
+++ b/doc/features.mdwn
@@ -16,6 +16,10 @@ changes via [[Subversion|rcs/svn]], [[rcs/git]], or any of a number of other
ikiwiki can be run from a [[post-commit]] hook to update your wiki
immediately whenever you commit a change using the RCS.
+It's even possible to securely let
+[[anonymous_users_git_push_changes|tips/untrusted_git_push]]
+to the wiki.
+
Note that ikiwiki does not require a RCS to function. If you want to
run a simple wiki without page history, it can do that too.
@@ -142,7 +146,8 @@ authentication, or other methods implemented via plugins.
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.
+[[templates]] for each page. If you prefer blog-syle
+[[plugins/comments]], that is available too.
### Edit controls
@@ -161,6 +166,11 @@ Well, sorta. Rather than implementing YA history browser, it can link to
ikiwiki can use the xapian search engine to add powerful
full text [[plugins/search]] capabilities to your wiki.
+### Translation via po files
+
+The [[plugins/po]] plugin allows translating individual wiki pages using
+standard `po` files.
+
### [[w3mmode]]
Can be set up so that w3m can be used to browse a wiki and edit pages
diff --git a/doc/forum/Sidebar_with_links__63__.mdwn b/doc/forum/Sidebar_with_links__63__.mdwn
new file mode 100644
index 000000000..790ee85a2
--- /dev/null
+++ b/doc/forum/Sidebar_with_links__63__.mdwn
@@ -0,0 +1,58 @@
+I'm trying to create a template to use as a sidebar with links. The template will be static
+(no variables are used). I first created a page with this directive: \[[!template id=sidebar]],
+and then created the template with the web interface.
+
+This is the code I put in the template:
+
+ <div class="infobox">
+ <ul>
+ <li>\[[Existing internal link|exists]]</li>
+ <li>\[[Non-existing internal link|doesnotexist]]</li>
+ <li>[External link](http://google.com/)</li>
+ </ul>
+ <http://google.com/>
+ </div>
+
+This is the relevant part of the resulting html file `template/sidebar.html`:
+
+ <div class="infobox">
+ <ul>
+ <li><a href="../exists.html">Existing internal link</a></li>
+ <li><span class="createlink"><a href="http://localhost/cgi-bin/itesohome.cgi?page=doesnotexist&amp;from=templates%2Fsidebar&amp;do=create" rel="nofollow">?</a>Non-existing internal link</span></li>
+ <li>[External link](http://google.com/)</li>
+ </ul>
+ </div>
+
+Note that the `<http://google.com/>` link has disappeared, and that `[External link](http://google.com/)`
+has been copied literally instead of being converted to a link, as I expected.
+
+> Templates aren't Markdown page. [[ikiwiki/WikiLink]] only are expanded. --[[Jogo]]
+
+>> Thanks for the help Jogo. Looking at the [[templates]] page, it says that
+"...you can include WikiLinks and all other forms of wiki markup in the template." I read this
+to mean that a template may indeed include Markdown. Am I wrong in my interpratation? --[[buo]]
+
+>> I discovered that if I eliminate all html from my sidebar.mdwn template, the links are
+rendered properly. It seems that the mix of Markdown and html is confusing some part of
+Ikiwiki. --[[buo]]
+
+Worse, this is the relevant part of the html file of the page that includes the template:
+
+ <div class="infobox">
+ <ul>
+ <li><span class="selflink">Existing internal link</span></li>
+ <li><span class="createlink"><a href="http://localhost/cgi-bin/itesohome.cgi?page=doesnotexist&amp;from=research&amp;do=create" rel="nofollow">?</a>Non-existing internal link</span></li>
+ <li>[External link](http://google.com/)</li>
+ </ul>
+ </div>
+
+Note that the `Existing internal link` is no longer a link. It is only text.
+
+What am I doing wrong? Any help or pointers will be appreciated. --[[buo]]
+
+-----
+
+I think I have figured this out. I thought the template was filled and then
+processed to convert Markdown to html. Instead, the text in each variable is
+processed and then the template is filled. I somehow misunderstood the
+[[templates]] page. -- [[buo]]
diff --git a/doc/forum/appear_if_you_are_login_or_not_in_a_page.mdwn b/doc/forum/appear_if_you_are_login_or_not_in_a_page.mdwn
new file mode 100644
index 000000000..be9854a08
--- /dev/null
+++ b/doc/forum/appear_if_you_are_login_or_not_in_a_page.mdwn
@@ -0,0 +1,36 @@
+Hi,
+
+Can you give me a hint for showing if one user is logged or not. If user is logged, then I want to display the user name, as wikipedia or dokuwiki for example.
+Regards,
+Xan.
+
+> ikiwiki doesn't serve pages, so this can't be done inside ikiwiki.
+> For certain kinds of authentication it might be possible anyway.
+> For instance, if you're using [[plugins/httpauth]] exclusively and
+> your server has PHP, you could put `<?php print("$REMOTE_USER");
+> ?>` in all the relevant ikiwiki [[templates]] and arrange for the
+> generated HTML pages to get run through the PHP interpreter. The trick
+> would work differently with other [[plugins/type/auth]] plugins,
+> if at all. --[[Schmonz]]
+
+>> Thanks a lot, Xan.
+
+>>> Another possible trick would be to use some Javascript to make a
+>>> "who am I?" AJAX request to the CGI (the CGI would receive the
+>>> session cookie, if any, and be able to answer). Obviously, this
+>>> wouldn't work for users who've disabled Javascript, but since it's
+>>> non-essential, that's not so bad. You'd need to
+>>> [[write_a_plugin|plugins/write]] to add a suitable CGI action,
+>>> perhaps ?do=whoami, and insert the Javascript. --[[smcv]]
+
+>>>> It's an idea, but you're trading off a serious speed hit for a very
+>>>> minor thing. --[[Joey]]
+
+>>>> Cool idea. A similar trick (I first saw it
+>>>> [here](http://www.peej.co.uk/articles/http-auth-with-html-forms.html))
+>>>> could be used to provide a [[plugins/passwordauth]]-like login form
+>>>> for [[plugins/httpauth]]. --[[Schmonz]]
+
+>>>>> I always assumed the entire reason someone might want to use the
+>>>>> httpauth plugin is to avoid nasty site-specific login forms..
+>>>>> --[[Joey]]
diff --git a/doc/forum/ikiwiki_over_database__63__.wiki b/doc/forum/ikiwiki_over_database__63__.wiki
new file mode 100644
index 000000000..a70f9c989
--- /dev/null
+++ b/doc/forum/ikiwiki_over_database__63__.wiki
@@ -0,0 +1,11 @@
+Is there here any possibility to modifying ikiwiki (via plugin) for store pages in database. I'm thinking about storing pages in sqlite or mysql for serving it much faster. The idea is from sputnik.org [http://sputnik.freewisdom.org/] but with perl ;-). Could we integrate the sputnik code in ikiwiki as a solution?
+
+-----
+
+ikiwiki generates static pages in a filesystem. It's responsible for editing and regenerating them, but they're served by any old web server. If you go to the trouble of stuffing the generated pages into a database, you'll need to go to further trouble to serve them back out somehow: write your own web server, perhaps, or a module for a particular web server. Either way you'll have sacrificed ikiwiki's interoperability, and it's not at all clear (since you're adding, in the best case, one layer of indirection reading the generated files) you'll have gained any improved page-serving performance. If it's source pages you want to store in a database, then you lose the ability to do random Unixy things to source pages, including managing them in a revision control system.
+
+Static HTML pages in a filesystem and the ability to do random Unixy things are two of the uniquely awesome features of ikiwiki. It's probably possible to do what you want, but it's unlikely that you really want it. I'd suggest you either get to know ikiwiki better, or choose one of the many wiki implementations that already works as you describe. --[[Schmonz]]
+
+---
+
+Thanks, [[Schmonz]]. You clarify me much things,.... Xan.
diff --git a/doc/git.mdwn b/doc/git.mdwn
index b4288bc98..18fbd238b 100644
--- a/doc/git.mdwn
+++ b/doc/git.mdwn
@@ -45,7 +45,7 @@ into [[Joey]]'s working tree. This is recommended. :-)
* [[jonas|JonasSmedegaard]] `git://source.jones.dk/ikiwiki-upstream`
* [[arpitjain]] `git://github.com/arpitjain11/ikiwiki.git`
* [[chrysn]] `git://github.com/github076986099/ikiwiki.git`
-* [[kjikaqawej]] `git://github.com/kjikaqawej/ikiwiki-simon.git`
+* [[simonraven]] `git://github.com/kjikaqawej/ikiwiki-simon.git`
## branches
diff --git a/doc/ikiwiki/directive/inline.mdwn b/doc/ikiwiki/directive/inline.mdwn
index 8afd65a05..9c55e07c2 100644
--- a/doc/ikiwiki/directive/inline.mdwn
+++ b/doc/ikiwiki/directive/inline.mdwn
@@ -113,6 +113,11 @@ Here are some less often needed parameters:
For example, set "feedfile=feed" to cause it to generate `page/feed.atom`
and/or `page/feed.rss`. This option is not supported if the wiki is
configured not to use `usedirs`.
+* `pagenames` - If given instead of `pages`, this is interpreted as a
+ space-separated list of links to pages (with the same
+ [[SubPage/LinkingRules]] as in a [[ikiwiki/WikiLink]]), and they are inlined
+ in exactly the order given: the `sort` and `pages` parameters cannot be used
+ in conjunction with this one.
[[!meta robots="noindex, follow"]]
diff --git a/doc/ikiwiki/directive/pagestats.mdwn b/doc/ikiwiki/directive/pagestats.mdwn
index cfb5737a5..426f3e4af 100644
--- a/doc/ikiwiki/directive/pagestats.mdwn
+++ b/doc/ikiwiki/directive/pagestats.mdwn
@@ -12,4 +12,14 @@ And here's how to create a table of all the pages on the wiki:
\[[!pagestats style="table"]]
+The optional `among` parameter limits counting to pages that match a
+[[ikiwiki/PageSpec]]. For instance, to display a cloud of tags used on blog
+entries, you could use:
+
+ \[[!pagestats pages="tags/*" among="blog/posts/*"]]
+
+or to display a cloud of tags related to Linux, you could use:
+
+ \[[!pagestats pages="tags/* and not tags/linux" among="tagged(linux)"]]
+
[[!meta robots="noindex, follow"]]
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 72bdbf3d8..db0d8cd9c 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -2,6 +2,12 @@ Projects & Organizations
========================
* [This wiki](http://ikiwiki.info) (of course!)
+* The [GNU Hurd](http://www.gnu.org/software/hurd/)
+* [DragonFly BSD](http://www.dragonflybsd.org/)
+* [Monotone](http://monotone.ca/wiki/FrontPage/)
+* The [Free Software Foundation](http://fsf.org) uses it for their internal wiki, with subversion.
+* The [cairo graphics library](http://cairographics.org/) website.
+* The [Portland State Aerospace Society](http://psas.pdx.edu) website. Converted from a combination of TWiki and MoinMoin to ikiwiki, including full history ([[rcs/Git]] backend).
* [Planet Debian upstream](http://updo.debian.net/)
* [Debian Mentors wiki](http://jameswestby.net/mentors/)
* The [Sparse wiki](http://kernel.org/pub/linux/kernel/people/josh/sparse).
@@ -13,8 +19,6 @@ Projects & Organizations
* [Braawi Ltd](http://braawi.com/) and the community site [Braawi.org](http://braawi.org/)
* [Webconverger](http://webconverger.org/) (a Web only linux distribution) with a [blog](http://webconverger.org/blog/)
* [debian-community.org](http://debian-community.org/)
-* The [cairo graphics library](http://cairographics.org/) website.
-* The [Portland State Aerospace Society](http://psas.pdx.edu) website. Converted from a combination of TWiki and MoinMoin to ikiwiki, including full history ([[rcs/Git]] backend).
* [DebTorrent](http://debtorrent.alioth.debian.org)
* The [netconf project](http://netconf.alioth.debian.org)
* The [Debian Packaging Handbook project](http://packaging-handbook.alioth.debian.org/wiki/)
@@ -27,7 +31,6 @@ Projects & Organizations
* [Enemies of Carlotta](http://www.e-o-c.org/)
* [vcs-pkg](http://vcs-pkg.org)
* [vcs-home](http://vcs-home.madduck.net)
-* [GNU Hurd wiki](http://www.bddebian.com/~wiki/)
* [Query Object Framework](http://qof.alioth.debian.org/)
* [Estron - Object Relational Mapping interpreter](http://estron.alioth.debian.org/)
* [Public Domain collection of Debian related tips & tricks](http://dabase.com/tips/) - please add any tips too
@@ -37,19 +40,15 @@ Projects & Organizations
* [Chaos Computer Club Düsseldorf](https://www.chaosdorf.de)
* [monkeysphere](http://web.monkeysphere.info/)
* [The Walden Effect](http://www.waldeneffect.org/)
-* [Monotone](http://monotone.ca/wiki/FrontPage/)
* The support pages for [Trinity Centre for High Performance Computing](http://www.tchpc.tcd.ie/support/)
* [St Hugh of Lincoln Catholic Primary School in Surrey](http://www.sthugh-of-lincoln.surrey.sch.uk/)
* [Pigro Network](http://www.pigro.net) is running a hg based ikiwiki. (And provides ikiwiki hosting for $10/m.)
* [Cosin Homepage](http://cosin.ch) uses an Ikiwiki with a subversion repository.
* [Bosco Free Orienteering Software](http://bosco.durcheinandertal.ch)
-* The [GNU Hurd](http://www.gnu.org/software/hurd/)'s web pages
-* The [Free Software Foundation](http://fsf.org) uses it for their internal wiki, with subversion.
Personal sites and blogs
========================
-* [Skirv's Wiki](http://wiki.killfile.org) - formerly Skirv's Homepage
* [[Joey]]'s [homepage](http://kitenet.net/~joey/), including his weblog
* [Kyle's MacLea Genealogy wiki](http://kitenet.net/~kyle/family/wiki) and [Livingstone and MacLea Emigration Registry](http://kitenet.net/~kyle/family/registry)
* [Ulrik's personal web page](http://kaizer.se/wiki/)
@@ -123,10 +122,13 @@ Personal sites and blogs
* [Natalian - Kai Hendry's personal blog](http://natalian.org/)
* [Mick Pollard aka \_lunix_ - Personal sysadmin blog and wiki](http://www.lunix.com.au)
* [tumashu's page](http://tumashu.github.com) This is my personal site in github created with ikiwiki and only a page,you can get the [source](http://github.com/tumashu/tumashu/tree/master)
+* [Skirv's Wiki](http://wiki.killfile.org) - formerly Skirv's Homepage
Please feel free to add your own ikiwiki site!
See also: [Debian ikiwiki popcon graph](http://qa.debian.org/popcon.php?package=ikiwiki)
and [google search for ikiwiki powered sites](http://www.google.com/search?q=%22powered%20by%20ikiwiki%22).
-While nothing makes me happier than knowing that ikiwiki has happy users, dropping some change in the [[TipJar]] is a nice way to show extra appreciation.
+While nothing makes me happier than knowing that ikiwiki has happy users,
+dropping some change in the [[TipJar]] is a nice way to show extra
+appreciation.
diff --git a/doc/news/openid/discussion.mdwn b/doc/news/openid/discussion.mdwn
index aa9f3f0be..e611fa77b 100644
--- a/doc/news/openid/discussion.mdwn
+++ b/doc/news/openid/discussion.mdwn
@@ -15,6 +15,8 @@ as well. Also have I just created an account on this wiki as well?
> can configure it to eg, subscribe your email address to changes to pages.
> --[[Joey]]
+OK, my openid login works too. One question though, is there a setup parameter which controls whether new registrations are permitted at all? For instance, I'm thinking that I'd like to use the wiki format for content, but I don't want it editable by anyone who isn't already set up. Does this work? --[[Tim Lavoie]]
+
----
# How to ban an IP address?
diff --git a/doc/plugins/contrib/album.mdwn b/doc/plugins/contrib/album.mdwn
index f550ca64c..395c99bce 100644
--- a/doc/plugins/contrib/album.mdwn
+++ b/doc/plugins/contrib/album.mdwn
@@ -65,6 +65,13 @@ The next/previous links are themselves implemented by
photo, using a special template (by default `albumnext.tmpl`
or `albumprev.tmpl`), in `archive`/`quick` mode.
+> With hindsight, using an inline here is wrong - I should just
+> run hooks and fill in the template within the album plugin.
+> inline has some specialized functionality that's overkill
+> here, and its delayed HTML substitution breaks the ability
+> to have previous/up/next links both above and below the
+> photo, for instance. --[[smcv]]
+
## Writing the album
The album contains one `\[[!album]]` directive. It may also
diff --git a/doc/plugins/contrib/cvs.mdwn b/doc/plugins/contrib/cvs.mdwn
new file mode 100644
index 000000000..fc5afebfd
--- /dev/null
+++ b/doc/plugins/contrib/cvs.mdwn
@@ -0,0 +1,32 @@
+[[!template id=plugin name=cvs core=0 author="[[schmonz]]"]]
+
+This plugin allows ikiwiki to use [[!wikipedia desc="CVS" Concurrent Versions System]] as an [[rcs]].
+
+* Diffs are against [[3.14159|news/version_3.14159]]. `cvs.pm` started life as a copy of `svn.pm`.
+* `IkiWiki.pm:wiki_file_prune_regexps` avoids copying CVS metadata into `$DESTDIR`.
+* [[ikiwiki-makerepo]]:
+ * creates a repository,
+ * imports `$SRCDIR` into top-level module `ikiwiki` (vendor tag IKIWIKI, release tag PRE_CVS),
+ * creates a small post-commit wrapper to prevent `cvs add <directory>` from being seen by ikiwiki's [[post-commit]] hook,
+ * configures the wrapper itself as a post-commit hook in `CVSROOT/loginfo`.
+* [`cvsps`](http://www.cobite.com/cvsps/) is required (`rcs_recentchanges()` and `rcs_diff()` need it to work).
+* [[!cpan IPC::Cmd]] and [[!cpan String::ShellQuote]] are required (to safely keep `cvs` quiet and to safely escape commit messages, respectively).
+* CVS multi-directory commits happen separately; the post-commit hook sees only the first directory's changes in time for [[recentchanges|plugins/recentchanges]]. The next run of `ikiwiki --setup` will correctly re-render such a recentchanges entry. It might be possible to solve this problem with scripts like `commit_prep` and `log_accum` from CVS contrib.
+* Due to the name of CVS's metadata directories, it's impossible to create `.../CVS/foo.mdwn`. On case-insensitive filesystems it's also impossible to create `.../cvs/foo.mdwn`. Since the failure can have confusing effects on one's CVS checkout, perhaps the web interface should prevent the attempt.
+* No testing or special-casing has been done with [[attachments|plugins/attachment]], but they'll probably need `cvs add -kb`.
+
+Having a `$HOME/.cvsrc` isn't necessary. Sure does make using CVS more livable, though. Here's a good general-purpose one:
+
+ cvs -q
+ checkout -P
+ update -dP
+ diff -u
+ rdiff -u
+
+Not knowing how the tests get set up, I blindly attempted to add subversion-like tests to `t/file_pruned.t`. They fail. But the plugin definitely works. :-)
+
+### Code
+* [`cvs.pm`](http://www.netbsd.org/~schmonz/ikiwiki-cvs/cvs.pm)
+* [`cvs-IkiWiki.pm.diff`](http://www.netbsd.org/~schmonz/ikiwiki-cvs/cvs-IkiWiki.pm.diff)
+* [`cvs-ikiwiki-makerepo.diff`](http://www.netbsd.org/~schmonz/ikiwiki-cvs/cvs-ikiwiki-makerepo.diff)
+* [`cvs-t-file_pruned.t.diff`](http://www.netbsd.org/~schmonz/ikiwiki-cvs/cvs-t-file_pruned.t.diff)
diff --git a/doc/plugins/contrib/linguas.mdwn b/doc/plugins/contrib/linguas.mdwn
index bf502606e..84ece042e 100644
--- a/doc/plugins/contrib/linguas.mdwn
+++ b/doc/plugins/contrib/linguas.mdwn
@@ -10,7 +10,7 @@ Download: [linguas.pm](http://ettin.org/pub/ikiwiki/linguas.pm) (2006-08-21).
Note that even though it is still available for download, this plugin is no
longer actively maintained. If you are interested in multilingual wiki pages, you
-can also take a look at other approaches such as [[todo/l10n]], [[plugins/contrib/po]],
+can also take a look at other approaches such as [[todo/l10n]], [[plugins/po]],
or Lars Wirzenius's
[Static website, with translations, using IkiWiki](http://liw.iki.fi/liw/log/2007-05.html#20070528b).
diff --git a/doc/plugins/contrib/navbar/discussion.mdwn b/doc/plugins/contrib/navbar/discussion.mdwn
new file mode 100644
index 000000000..0bbec743c
--- /dev/null
+++ b/doc/plugins/contrib/navbar/discussion.mdwn
@@ -0,0 +1,2 @@
+Where can I download this plugin ?
+-- [[jogo]]
diff --git a/doc/plugins/contrib/trail.mdwn b/doc/plugins/contrib/trail.mdwn
index 52dea52d6..337e5d427 100644
--- a/doc/plugins/contrib/trail.mdwn
+++ b/doc/plugins/contrib/trail.mdwn
@@ -9,9 +9,14 @@ and are likely to include it in ikiwiki, I'll try to modify
[[plugins/contrib/album]] to be based on it, rather than partially
reinventing it.
-This plugin can benefit from
-[[another_of_my_branches|todo/inline_plugin:_specifying_ordered_page_names]]
-but does not require it.
+Bugs:
+
+* \[[!inline pages="..." trail=yes]] currently tries to work out
+ what pages are in the trail, and their order, at scan time. That
+ won't work, because matching a pagespec at scan time is
+ unreliable - pages we want might not have been scanned yet! I
+ haven't worked out a solution for this. I think
+ \[[!inline pagenames="..." trail=yes]] would be safe, though.
----
diff --git a/doc/plugins/contrib/unixrelpagespec.mdwn b/doc/plugins/contrib/unixrelpagespec.mdwn
new file mode 100644
index 000000000..a35f76c30
--- /dev/null
+++ b/doc/plugins/contrib/unixrelpagespec.mdwn
@@ -0,0 +1,42 @@
+[[!template id=plugin name=unixrelpagespec core=0 author="[[Jogo]]"]]
+
+I don't understand why `./*` correspond to siblings and not subpages.
+This is probably only meaningfull with [[plugins/autoindex]] turned on.
+
+Here is a small plugin wich follow usual Unix convention :
+
+- `./*` expand to subpages
+- `../*` expand to siblings
+
+---
+ #!/usr/bin/perl
+ # UnixRelPageSpec plugin.
+ # by Joseph Boudou <jogo at matabio dot net>
+
+ package IkiWiki::Plugin::unixrelpagespec;
+
+ use warnings;
+ use strict;
+ use IkiWiki 3.00;
+
+ sub import {
+ inject(
+ name => 'IkiWiki::PageSpec::derel',
+ call => \&unix_derel
+ );
+ }
+
+ sub unix_derel ($$) {
+ my $path = shift;
+ my $from = shift;
+
+ if ($path =~ m!^\.{1,2}/!) {
+ $from =~ s#/?[^/]+$## if (defined $from and $path =~ m/^\.{2}/);
+ $path =~ s#^\.{1,2}/##;
+ $path = "$from/$path" if length $from;
+ }
+
+ return $path;
+ }
+
+ 1;
diff --git a/doc/plugins/htmlscrubber/discussion.mdwn b/doc/plugins/htmlscrubber/discussion.mdwn
new file mode 100644
index 000000000..5e8b637b7
--- /dev/null
+++ b/doc/plugins/htmlscrubber/discussion.mdwn
@@ -0,0 +1,18 @@
+**Ok, I have yet to post a big dummy wiki-noobie question around here, so here goes:**
+
+Yes, I want to play around with *gulp* Google Ads on an ikiwiki blog, namely, in the *sidebar*.
+
+No, I do not want to turn htmlscrubber off, but apart from that I have not been able to allow &lt;script&gt; elements as required by Google.
+
+Thoughts?
+
+---
+
+***Fixed!***
+
+Did some more reading, did some searching on the wiki, and found, under *embed*, these
+
+ htmlscrubber_skip => '!*/Discussion',
+ locked_pages => '!*/Discussion',
+
+Thanks!
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 02bdb21c6..3976f9adf 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -850,7 +850,7 @@ of the page with the rcs's conflict markers on failure.
Passed a message, user, and ip address. Should commit all staged changes.
Returns undef on success, and an error message on failure.
-Changes can be staged by calls to `rcs_add, `rcs_remove`, and
+Changes can be staged by calls to `rcs_add`, `rcs_remove`, and
`rcs_rename`.
#### `rcs_add($)`
diff --git a/doc/post-commit/discussion.mdwn b/doc/post-commit/discussion.mdwn
index 31347a614..c78709e94 100644
--- a/doc/post-commit/discussion.mdwn
+++ b/doc/post-commit/discussion.mdwn
@@ -45,3 +45,79 @@ Thanks
> Yes, ikiwiki does expect you to use your revision control system to check
> in changes. Otherwise, recentchanges cannot work right, since it uses the
> commit history from your revision control system. --[[Joey]]
+
+-----
+
+I'm working on an [[rcs]] plugin for CVS, adapted from `svn.pm`, in order
+to integrate ikiwiki at sites where that's all they've got. What's working
+so far: web commit (post-commit hook and all), diff, add (under certain
+conditions), and remove. What's not working: with rcs_add(), iff any of the
+new page's parent dirs aren't already under CVS control and the post-commit
+hook is enabled, the browser and ikiwiki stall for several seconds trying
+to add it, then time out. (If I kill ikiwiki when this is happening, it cvs
+adds the topmost parent that needed adding; if I wait for timeout, it
+doesn't. I think.) If I disable the post-commit hook and do the same kind
+of thing, the page is created and saved.
+
+In case you're lucky enough not to know, cvs adds on directories are weird
+-- they operate immediately against the repository, unlike file adds:
+
+ $ cvs add randomdir
+ Directory /Users/schmonz/Documents/cvswiki/repository/ikiwiki/randomdir added to the repository
+
+I was able to work out that when I'm seeing this page save misbehavior, my
+plugin is somewhere inside `system("cvs", "-Q", "add", "$file")`, which was
+never returning. If I changed it to anything other than cvs it iterated
+correctly over all the parent dirs which needed to be added to CVS, in the
+proper order. (cvs add isn't recursive, sadly.)
+
+Can you offer an educated guess what's going wrong here? --[[Schmonz]]
+
+> Got `rcs_recentchanges` working, believe it or not, thanks to [cvsps](http://www.cobite.com/cvsps/). If I can figure out this interaction between the post-commit hook and `cvs add` on directories, the CVS plugin is mostly done. Could it be a locking issue? Where should I be looking? Any suggestions appreciated. --[[Schmonz]]
+
+>> Okay, it is definitely a locking issue. First, on the conjecture that
+>> `cvs add <directory>` was triggering the post-commit hook and confusing
+>> ikiwiki, I wrapped the ikiwiki post-commit binary with a shell script
+>> that exited 0 if the triggering file was a directory. The first half of
+>> the conjecture was correct -- my wrapper got triggered -- but the web
+>> add of `one/two/three.mdwn` (where `one` and `two` weren't existing
+>> CVS-controlled dirs) remained hung as before. There were two ikiwiki
+>> processes running. On a whim, I killed the one with the higher PID; `cvs
+>> add one` immediately completed successfully, then back to a hang and two
+>> ikiwiki processes. I killed the newer one again and then `cvs add
+>> one/two` and `cvs add one/two/three.mdwn` completed and the web add was
+>> successful. --[[Schmonz]]
+
+>>> Aaaaaand I was wrong about the second half of the conjecture being
+>>> wrong. The wrapper script wasn't correctly identifying directories;
+>>> with that fixed, everything works. I've created a
+>>> [[plugins/contrib/cvs]] plugin page. Thanks for listening. :-)
+>>> --[[Schmonz]]
+
+>> Here is a comment I committed to my laptop from Madrid Airport before
+>> your most recent updates, in case it's still useful:
+>>
+>> Locking certianly seems likely to be a problem. ikiwiki calls `rcs_add`
+>> *before* disabling the post-commit plugin, since all over VCS allow
+>> adding something in a staged manner. You can see this in, for example,
+>> `editpage.pm` lines 391+.
+>>
+>> So I guess what happens is that ikiwiki has taken the wiki lock, calls
+>> `rcs_add`, which does a `cvs add`, which runs the post commit hook,
+>> since it is not disabled -- which blocks waiting for the wiki lock.
+>>
+>> I guess you can fix this in either of three ways: Modify lots of places
+>> in ikiwiki to disable the post commit hook before calling `rcs_add`,
+>> or make cvs's `rcs_add` temporarily disable the commit hook and
+>> re-enable it (but only if it was not already disabled, somehow),
+>> or make cvs's `rcs_add` only make note that it needs to call `cvs add`
+>> later, and do so at `rcs_commit`. The last of these seems easist,
+>> especially since ikiwiki always commits after an add, in the same
+>> process, so you could just use a temporary list of things to add.
+>> --[[Joey]]
+
+>>> Thanks for the comments. Attempting to set up a wiki on a different system with a different version of `cvs`, I've encountered a new locking problem within CVS: `cvs commit` takes a write lock, post-commit ikiwiki calls `rcs_update()`, `cvs update` wants a read lock and blocks. The easiest fix I can think of is to make `cvs commit` return and relinquish its lock -- so instead of my wrapper script `exec`ing ikiwiki's post-commit hook, I amp it off and exit 0. Seems to do the trick and, if I grok ikiwiki's behavior here, is not dangerous. (Beats me why my development `cvs` doesn't behave the same WRT locking.)
+
+>>> I was all set to take your third suggestion, but now that there's more than one CVS oddity fixed trivially in a wrapper script, I think I prefer doing it that way.
+
+>>> I'd be glad for the CVS plugin to be included in ikiwiki, if and when you deem it ready. Please let me know what needs to be done for that to happen. --[[Schmonz]]
diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 6730dd146..9b0a53c68 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -14,6 +14,9 @@ While working on [[http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?p=27199|[97]
* It looks like that I was wrong, from Wikipedia Creole page it mention that ikiwiki is also adopting Creole markup.
>>>>>>> 55c1a37cce91d4fd01bf80fcaeeaf56535218a5c:doc/sandbox.mdwn
+
+---
+I try to have a discussion page !!!
----
Testing OpenID some more..
diff --git a/doc/sandbox/discussion.mdwn b/doc/sandbox/discussion.mdwn
new file mode 100644
index 000000000..d8c565617
--- /dev/null
+++ b/doc/sandbox/discussion.mdwn
@@ -0,0 +1,6 @@
+normally a sandbow doesn't have a discussion page
+but it's a sandbox
+
+-
+little light
+ikiwiki looks great
diff --git a/doc/tips/mathopd_permissions.mdwn b/doc/tips/mathopd_permissions.mdwn
new file mode 100644
index 000000000..c0425b9ca
--- /dev/null
+++ b/doc/tips/mathopd_permissions.mdwn
@@ -0,0 +1,15 @@
+When using [mathopd](http://www.mathopd.org) to serve ikiwiki, be careful of your Umask settings in the mathopd.conf.
+
+With `Umask 026` in mathopd.conf, editing pages resulted in the following errors and a 404 page when the wiki tried to take me to the updated page.
+
+ append_indexes: cannot open .../[destdir]/[outputfile].html
+ open: Permission denied
+
+With `Umask 022` in mathopd.conf, editing pages works.
+
+Hopefully this prevents someone else from spending ~2 hours figuring out why this wouldn't work. ;)
+
+> More generally, if your web server uses a nonstandard umask
+> or you're getting permissions related problems in the cgi log
+> when using ikiwiki, you can force ikiwiki to use a sane umask
+> via the `umask` setting in ikiwiki's own setup file. --[[Joey]]
diff --git a/doc/todo/CVS_backend.mdwn b/doc/todo/CVS_backend.mdwn
index f99d09b22..3c6527290 100644
--- a/doc/todo/CVS_backend.mdwn
+++ b/doc/todo/CVS_backend.mdwn
@@ -8,5 +8,7 @@ Original discussion:
>
>> No, although the existing svn backend could fairly esily be modified into
>> a CVS backend, by someone who doesn't mind working with CVS. --[[Joey]]
+>>
+>>> Wouldn't say I don't mind, but I needed it. See [[plugins/contrib/cvs]]. --[[Schmonz]]
[[!tag wishlist]]
diff --git a/doc/todo/Raw_view_link.mdwn b/doc/todo/Raw_view_link.mdwn
index 8f412fd09..fd64074c2 100644
--- a/doc/todo/Raw_view_link.mdwn
+++ b/doc/todo/Raw_view_link.mdwn
@@ -10,7 +10,8 @@ The configuration setting for Mercurial could be something like this:
> Not that I'm opposed to the idea of a plugin that adds a Raw link
> --[[Joey]]
->> [[todo/source_link]] does this via the CGI instead of delegating
->> to gitweb/etc. --[[smcv]]
+>> In [[todo/source_link]], Will does this via the CGI instead of delegating
+>> to gitweb/etc. I think Will's patch is a good approach, and have improved
+>> on it a bit in a git branch.
[[!tag wishlist]]
diff --git a/doc/todo/backlinks_result_is_lossy.mdwn b/doc/todo/backlinks_result_is_lossy.mdwn
index 7306b1546..11b5fbcae 100644
--- a/doc/todo/backlinks_result_is_lossy.mdwn
+++ b/doc/todo/backlinks_result_is_lossy.mdwn
@@ -1,5 +1,5 @@
[[!tag patch patch/core]]
-[[!template id=gitbranch branch=smcv/among author="[[smcv]]"]]
+[[!template id=gitbranch branch=smcv/ready/among author="[[smcv]]"]]
IkiWiki::backlinks returns a form of $backlinks{$page} that has undergone a
lossy transformation (to get it in the form that page templates want), making
@@ -9,3 +9,5 @@ A commit on my `among` branch splits it into IkiWiki::backlink_pages
(which returns the keys of $backlinks{$page}, and might be suitable for
exporting) and IkiWiki::backlinks (which calls backlink_pages, then performs
the same lossy transformation as before on the result).
+
+[[done]] --[[Joey]]
diff --git a/doc/todo/generated_po_stuff_not_ignored_by_git.mdwn b/doc/todo/generated_po_stuff_not_ignored_by_git.mdwn
new file mode 100644
index 000000000..1d24fd385
--- /dev/null
+++ b/doc/todo/generated_po_stuff_not_ignored_by_git.mdwn
@@ -0,0 +1,7 @@
+[[!template id=gitbranch branch=smcv/gitignore author="[[smcv]]"]]
+[[!tag patch]]
+
+The recent merge of the po branch didn't come with a .gitignore.
+It eventually annoyed me enough to fix it :-) --[[smcv]]
+
+[[done]]
diff --git a/doc/todo/inline_plugin:_specifying_ordered_page_names.mdwn b/doc/todo/inline_plugin:_specifying_ordered_page_names.mdwn
index db93a343c..bbde04f83 100644
--- a/doc/todo/inline_plugin:_specifying_ordered_page_names.mdwn
+++ b/doc/todo/inline_plugin:_specifying_ordered_page_names.mdwn
@@ -1,4 +1,4 @@
-[[!template id=gitbranch branch=smcv/inline-pagenames author="[[smcv]]"]]
+[[!template id=gitbranch branch=smcv/ready/inline-pagenames author="[[smcv]]"]]
A [[!taglink patch]] in my git repository (the inline-pagenames branch) adds
the following parameter to the [[ikiwiki/directive/inline]] directive:
@@ -14,3 +14,8 @@ uses it internally (as it has already collected the pages in order). It could al
be useful for other things, like [[todo/wikitrails]]. --[[smcv]]
[[!tag plugins/inline]]
+
+> It's sort of a pity that a pagespec like "a or b or c" doesn't somehow
+> match to (a, b, c) in that order, but I don't see how that would be
+> generally possible. While this feels a bit like bloat and inline already
+> has far too many parameters, I have [[merged|done]] it. --[[Joey]]
diff --git a/doc/todo/pagestats_among_a_subset_of_pages.mdwn b/doc/todo/pagestats_among_a_subset_of_pages.mdwn
index 099d26665..fd15d6a42 100644
--- a/doc/todo/pagestats_among_a_subset_of_pages.mdwn
+++ b/doc/todo/pagestats_among_a_subset_of_pages.mdwn
@@ -1,5 +1,5 @@
[[!tag patch plugins/pagestats]]
-[[!template id=gitbranch branch=smcv/among author="[[smcv]]"]]
+[[!template id=gitbranch branch=smcv/ready/among author="[[smcv]]"]]
My `among` branch fixes [[todo/backlinks_result_is_lossy]], then uses that
to provide pagestats for links from a subset of pages. From the docs included
@@ -25,3 +25,5 @@ I use this on my tag pages on one site, with the following template:
archive="yes" quick="yes" reverse="yes" timeformat="%x"]]
--[[smcv]]
+
+> [[merged|done]] thanks --[[Joey]]
diff --git a/doc/todo/should_optimise_pagespecs.mdwn b/doc/todo/should_optimise_pagespecs.mdwn
index db7a017c4..3ccef62fe 100644
--- a/doc/todo/should_optimise_pagespecs.mdwn
+++ b/doc/todo/should_optimise_pagespecs.mdwn
@@ -79,7 +79,7 @@ I can think about reducung the size of my wiki source and making it available on
>
> --[[Joey]]
-[[!template id=gitbranch branch=smcv/optimize-depends author="[[smcv]]"]]
+[[!template id=gitbranch branch=smcv/ready/optimize-depends author="[[smcv]]"]]
>> I've been looking at optimizing ikiwiki for a site using
>> [[plugins/contrib/album]] (which produces a lot of pages) and it seems
@@ -98,7 +98,7 @@ I can think about reducung the size of my wiki source and making it available on
>>>> I haven't actually deleted it), because the "or" operation is now done in
>>>> the Perl code, rather than by merging pagespecs and translating. --[[smcv]]
-[[!template id=gitbranch branch=smcv/remove-pagespec-merge author="[[smcv]]"]]
+[[!template id=gitbranch branch=smcv/ready/remove-pagespec-merge author="[[smcv]]"]]
>>>>> I've now added a patch to the end of that branch that deletes
>>>>> `pagespec_merge` almost entirely (we do need to keep a copy around, in
diff --git a/doc/todo/source_link.mdwn b/doc/todo/source_link.mdwn
index a7203d06c..0c639a314 100644
--- a/doc/todo/source_link.mdwn
+++ b/doc/todo/source_link.mdwn
@@ -4,11 +4,36 @@ How about a direct link from the page header to the source of the latest version
I just implemented this. There is one [[patch]] to the default page template, and a new plugin. -- [[Will]]
+All of this code is licensed under the GPLv2+. -- [[Will]]
+
> The use of sessioncgi here seems undesirable: on wikis where anonymity is
> not allowed, you'll be asked to log in. Couldn't you achieve the same thing
> by loading the index with IkiWiki::loadindex, like [[plugins/goto]] does?
> --[[smcv]]
+[[!template id=gitbranch branch=smcv/ready/getsource
+ author="[[Will]]/[[smcv]]"]]
+
+>> I've applied the patch below in a git branch, fixed my earlier criticism,
+>> and also fixed a couple of other issues I noticed:
+>>
+>> * missing pages could be presented better as a real 404 page
+>> * the default Content-type should probably be UTF-8 since the rest of
+>> IkiWiki tends to assume that
+>> * emitting attachments (images, etc.) as text/plain isn't going to work :-)
+>>
+>> Any opinions on my branch? I think it's ready for merge, if Joey approves.
+>>
+>> --[[smcv]]
+
+>>> I need a copyright&license statement, so debian/copyright can be updated for
+>>> the plugin, before I can merge this. Otherwise ready. --[[Joey]]
+
+>>> That looks like a nice set of fixes. One more that might be worthwhile: instead of reading the page source into a var, and then writing it out later, it might be nice to just
+>>> `print readfile(srcfile(pagesources{$page}));` at the appropriate point. -- [[Will]]
+
+>>>> OK, I've committed that. --[[smcv]]
+
----
diff --git a/templates/page.tmpl b/templates/page.tmpl
diff --git a/doc/users/Tim_Lavoie.mdwn b/doc/users/Tim_Lavoie.mdwn
new file mode 100644
index 000000000..90df011c6
--- /dev/null
+++ b/doc/users/Tim_Lavoie.mdwn
@@ -0,0 +1 @@
+Hey... I'm just starting to use ikiwiki, but am happy to find it repeatedly doing the sorts of things in a way which makes sense to me. (e.g. most pages are static, DVCS for file store etc.)
diff --git a/doc/users/Will.mdwn b/doc/users/Will.mdwn
index b20418e47..9c46edc69 100644
--- a/doc/users/Will.mdwn
+++ b/doc/users/Will.mdwn
@@ -1,24 +1,15 @@
-I started using Ikiwiki as a way to replace [Trac](http://trac.edgewall.org/) when using [Monotone](http://monotone.ca/). Version control has been an interest of mine for a while and I wrote most of the ikiwiki [[rcs/monotone]] plugin.
+I started using Ikiwiki as a way to replace [Trac](http://trac.edgewall.org/) when using [Monotone](http://monotone.ca/). Version control has been an interest of mine for a while and I wrote most of the ikiwiki [[rcs/monotone]] plugin. I'm not actively working on the Monotone plugin any more.
Lately I've been using Ikiwiki for other things and seem to be scratching a few itches here and there. :)
I generally use my [[ikiwiki/openid]] login when editing here: <http://www.cse.unsw.edu.au/~willu/>
-> Regarding your recent change to [[ikiwiki/directive]], won't the inlined
-> list of directives tend to be empty when it's shown? Only if
-> listdirectives is installed will the directives underlay be enabled.
-> --[[Joey]]
+Generic License Grant
+-----------------
->> Hrm. Yes. Pretty silly. I just wanted to read directive docs.
+Unless otherwise specified, any code that I post to this wiki I release under the GPL2+. Any non-code patches I post are released under [[standard ikiwiki licenses|freesoftware]].
->> But it seems to work on this wiki at least, and you don't have listdirectives enabled.
->> Is it only working because you have old files in your output directory that aren't
->> backed by source files any more? -- [[Will]]
-
->>> This wiki's source is ikiwiki's doc/ directory, which contains all the
->>> files that are installed into the underlay, including the directive
->>> documentation. But, it's special that way.
->>> I've now enabled listdirectives on this wiki, BTW. --[[Joey]]
+------
### Open Bugs:
diff --git a/doc/users/jogo.mdwn b/doc/users/jogo.mdwn
new file mode 100644
index 000000000..2a6577990
--- /dev/null
+++ b/doc/users/jogo.mdwn
@@ -0,0 +1,3 @@
+I'm looking at Ikiwiki, searching the best Wiki. The only other one I've found is [werc](http://werc.cat-v.org/).
+
+email: `jogo matabio net`.
diff --git a/doc/users/schmonz.mdwn b/doc/users/schmonz.mdwn
index 42b3713ea..752880561 100644
--- a/doc/users/schmonz.mdwn
+++ b/doc/users/schmonz.mdwn
@@ -1 +1,4 @@
-[Amitai Schlair](http://www.schmonz.com/) recently discovered ikiwiki. His first attempt at contributing is [[plugins/contrib/unixauth]].
+[Amitai Schlair](http://www.columbia.edu/~ays2105/) recently discovered ikiwiki and finds himself using it for all sorts of things. His attempts at contributing:
+
+* [[plugins/contrib/unixauth]]
+* [[plugins/contrib/cvs]]
diff --git a/doc/users/simonraven.mdwn b/doc/users/simonraven.mdwn
index 0706859aa..5fc24711e 100644
--- a/doc/users/simonraven.mdwn
+++ b/doc/users/simonraven.mdwn
@@ -1,3 +1,8 @@
-New ikiwiki site at my personal site under /ikiwiki/ . This might move to /wiki/ or be on wiki.k.o depending on if I can import my MediaWiki stuff to it.
+## personal/site info
+
+New ikiwiki site at my web site, blog, kisikew.org home site, for indigenews, and our indigenous-centric wiki (mostly East Coast/Woodlands area). Mediawiki stuff was imported successfully (as noted on this web site).
+
+## ikiwiki branch at github
+
+Maintain my own branch, partly to learn about VCS, git, ikiwiki, Debian packaging, and Perl. I don't recommend anyone pull from it, as I use third-party plugins included on this site that people may not want in a default installation of ikiwiki. This is why I don't push to Joey's -- so it's nothing personal, I just don't want to mess things up for other people, from my mistakes and stumbles.
-Thought I'd try it out again and it grew on me.