aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki.pm3
-rw-r--r--IkiWiki/CGI.pm14
-rw-r--r--IkiWiki/Plugin/highlight.pm34
-rwxr-xr-xMakefile.PL2
-rw-r--r--debian/changelog26
-rw-r--r--debian/control3
-rw-r--r--doc/bugs/Inlining_adds_newlines_which_can_break_markdown.mdwn43
-rw-r--r--doc/bugs/Please_update_highlight_plugin_for_highlight_3.18.mdwn12
-rw-r--r--doc/bugs/can__39__t_upload_a_simple_png_image:_prohibited_by_allowed__95__attachments___40__file_MIME_type_is_application__47__octet-stream....mdwn21
-rw-r--r--doc/bugs/debwiki_shortcut_creates_buggy_URLs_to_subpages.mdwn5
-rw-r--r--doc/bugs/garbled_non-ascii_characters_in_body_in_web_interface.mdwn126
-rw-r--r--doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn48
-rw-r--r--doc/bugs/openid_login_fails_wirth_Could_not_determine_ID_provider_from_URL.mdwn50
-rw-r--r--doc/bugs/pythonproxy-utf8_again.mdwn14
-rw-r--r--doc/bugs/redirect.mdwn27
-rw-r--r--doc/bugs/rst_plugin_fails_with___34__uncaught_exception:___39__ascii__39___codec_can__39__t_encode_character__34__.mdwn2
-rw-r--r--doc/bugs/rst_plugin_hangs_when_used_with_Python_3.mdwn35
-rw-r--r--doc/bugs/template_creation_error.mdwn8
-rw-r--r--doc/bugs/trails_depend_on_everything.mdwn14
-rw-r--r--doc/forum/Right-to-left_support/comment_1_5b2bf4d037ae8db940296e6f58884927._comment21
-rw-r--r--doc/forum/Spaces_in_URLs.mdwn14
-rw-r--r--doc/forum/Using_reverse_proxy__59___base_URL_is_http_instead_of_https/comment_5_674f56100c0682eba36cc5327fbdae4a._comment61
-rw-r--r--doc/forum/__34__Error:_cannot_decode_string_with_wide_characters__34___on_Mageia_Linux_x86-64_Cauldron.mdwn3
-rw-r--r--doc/forum/__34__Error:_cannot_decode_string_with_wide_characters__34___on_Mageia_Linux_x86-64_Cauldron/comment_1_abf7ec7c378ab0908685d72d159e9fd2._comment8
-rw-r--r--doc/forum/how_to_have_a_plugin_delete_a_file.mdwn18
-rw-r--r--doc/forum/how_to_have_a_plugin_delete_a_file/comment_1_061c8bca174f7155d4065dd200c0c8db._comment11
-rw-r--r--doc/forum/how_to_have_a_plugin_delete_a_file/comment_2_864a20147885642ad3bbcf8400d8ee46._comment9
-rw-r--r--doc/ikiwiki/markdown/discussion.mdwn48
-rw-r--r--doc/news/openid.mdwn2
-rw-r--r--doc/news/version_3.20130904.1.mdwn3
-rw-r--r--doc/news/version_3.20140102.mdwn24
-rw-r--r--doc/news/version_3.20140815.mdwn10
-rw-r--r--doc/news/version_3.20140831.mdwn3
-rw-r--r--doc/plugins/contrib/addtag.mdwn1
-rw-r--r--doc/plugins/contrib/album.mdwn4
-rw-r--r--doc/plugins/contrib/album/discussion.mdwn54
-rw-r--r--doc/plugins/contrib/created_in_future.mdwn1
-rw-r--r--doc/plugins/contrib/datetime_cmp.mdwn3
-rw-r--r--doc/plugins/contrib/jscalendar.mdwn25
-rw-r--r--doc/plugins/contrib/monthcalendar.mdwn106
-rw-r--r--doc/plugins/contrib/navbar.mdwn3
-rw-r--r--doc/plugins/contrib/parenttag.mdwn1
-rw-r--r--doc/plugins/contrib/poetry.mdwn107
-rw-r--r--doc/plugins/contrib/sidebar2.mdwn5
-rw-r--r--doc/plugins/contrib/taskreport.mdwn1
-rw-r--r--doc/plugins/osm.mdwn22
-rw-r--r--doc/plugins/trail/discussion.mdwn5
-rw-r--r--doc/sandbox.mdwn9
-rw-r--r--doc/sandbox/discussion.mdwn7
-rw-r--r--doc/shortcuts.mdwn4
-rw-r--r--doc/spam_fighting.mdwn2
-rw-r--r--doc/tips/ikiwiki_on_mac_os_x.mdwn4
-rw-r--r--doc/todo/add_remove_to_actionlist.mdwn20
-rw-r--r--doc/todo/calendar_autocreate.mdwn46
-rw-r--r--doc/todo/do_not_make_links_backwards.mdwn30
-rw-r--r--doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn10
-rw-r--r--doc/todo/flexible_relationships_between_pages.mdwn2
-rw-r--r--doc/todo/manpages.mdwn3
-rw-r--r--doc/todo/pagespec__95__match__95__list_can_result_in_excessive_dependencies.mdwn41
-rw-r--r--doc/todo/should_use_a_standard_encoding_for_utf_chars_in_filenames.mdwn41
-rw-r--r--doc/todo/support_multi-row_table_headers.mdwn79
-rw-r--r--doc/users/kjs.mdwn5
-rw-r--r--doc/users/mhameed.mdwn2
-rw-r--r--doc/users/spalax.mdwn5
-rw-r--r--ikiwiki.spec2
-rw-r--r--po/ikiwiki.pot98
-rw-r--r--underlays/attachment/ikiwiki/jquery-ui.css (renamed from underlays/attachment/ikiwiki/jquery-ui.full.css)0
-rw-r--r--underlays/attachment/ikiwiki/jquery-ui.js (renamed from underlays/attachment/ikiwiki/jquery-ui.full.js)0
-rw-r--r--underlays/attachment/ikiwiki/jquery.tmpl.js (renamed from underlays/attachment/ikiwiki/jquery.tmpl.full.js)0
-rw-r--r--underlays/jquery/ikiwiki/jquery.js (renamed from underlays/jquery/ikiwiki/jquery.full.js)0
70 files changed, 1327 insertions, 143 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index be3dfce39..49ac97196 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1819,7 +1819,8 @@ sub loadindex () {
open ($in, "<", "$config{wikistatedir}/indexdb") || return;
}
else {
- $config{gettime}=1; # first build
+ # gettime on first build
+ $config{gettime}=1 unless defined $config{gettime};
return;
}
}
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index c0d8f598b..cb83319e6 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -110,11 +110,23 @@ sub decode_cgi_utf8 ($) {
}
}
+sub safe_decode_utf8 ($) {
+ my $octets = shift;
+ # call decode_utf8 on >= 5.20 only if it's not already decoded,
+ # otherwise it balks, on < 5.20, always call it
+ if ($] < 5.02 || !Encode::is_utf8($octets)) {
+ return decode_utf8($octets);
+ }
+ else {
+ return $octets;
+ }
+}
+
sub decode_form_utf8 ($) {
if ($] >= 5.01) {
my $form = shift;
foreach my $f ($form->field) {
- my @value=map { decode_utf8($_) } $form->field($f);
+ my @value=map { safe_decode_utf8($_) } $form->field($f);
$form->field(name => $f,
value => \@value,
force => 1,
diff --git a/IkiWiki/Plugin/highlight.pm b/IkiWiki/Plugin/highlight.pm
index fbe7ddff4..ce919748a 100644
--- a/IkiWiki/Plugin/highlight.pm
+++ b/IkiWiki/Plugin/highlight.pm
@@ -60,14 +60,22 @@ sub checkconfig () {
}
if (! exists $config{filetypes_conf}) {
- $config{filetypes_conf}=
- ($data_dir ? $data_dir->getConfDir() : "/etc/highlight/")
- . "filetypes.conf";
+ if (! $data_dir ) {
+ $config{filetypes_conf}= "/etc/highlight/filetypes.conf";
+ } elsif ( $data_dir -> can('searchFile') ) {
+ # 3.18 +
+ $config{filetypes_conf}=
+ $data_dir -> searchFile("filetypes.conf");
+ } else {
+ # 3.9 +
+ $config{filetypes_conf}=
+ $data_dir -> getConfDir() . "/filetypes.conf";
+ }
}
+ # note that this is only used for old versions of highlight
+ # where $data_dir will not be defined.
if (! exists $config{langdefdir}) {
- $config{langdefdir}=
- ($data_dir ? $data_dir->getLangPath("")
- : "/usr/share/highlight/langDefs");
+ $config{langdefdir}= "/usr/share/highlight/langDefs";
}
if (exists $config{tohighlight} && read_filetypes()) {
@@ -147,17 +155,27 @@ sub read_filetypes () {
}
+sub searchlangdef {
+ my $lang=shift;
+
+ if ($data_dir) {
+ return $data_dir->getLangPath($lang . ".lang");
+ } else {
+ return "$config{langdefdir}/$lang.lang";
+ }
+
+}
# Given a filename extension, determines the language definition to
# use to highlight it.
sub ext2langfile ($) {
my $ext=shift;
- my $langfile="$config{langdefdir}/$ext.lang";
+ my $langfile=searchlangdef($ext);
return $langfile if exists $highlighters{$langfile};
read_filetypes() unless $filetypes_read;
if (exists $ext2lang{$ext}) {
- return "$config{langdefdir}/$ext2lang{$ext}.lang";
+ return searchlangdef($ext2lang{$ext});
}
# If a language only has one common extension, it will not
# be listed in filetypes, so check the langfile.
diff --git a/Makefile.PL b/Makefile.PL
index c03142aae..ad3e4623c 100755
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -75,7 +75,7 @@ underlay_install:
install -d $(DESTDIR)$(PREFIX)/share/ikiwiki
for dir in `cd underlays && $(FIND) . -follow -type d`; do \
install -d $(DESTDIR)$(PREFIX)/share/ikiwiki/$$dir; \
- for file in `$(FIND) underlays/$$dir -follow -maxdepth 1 -type f ! -name \\*.full.js ! -name \\*.full.css`; do \
+ for file in `$(FIND) underlays/$$dir -follow -maxdepth 1 -type f ! -name jquery.js ! -name jquery-ui.css ! -name jquery-ui.js ! -name jquery.tmpl.js`; do \
cp -pRL $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$dir 2>/dev/null || \
install -m 644 $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$dir; \
done; \
diff --git a/debian/changelog b/debian/changelog
index 11ad07712..59a9e6ba1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,29 @@
-ikiwiki (3.20140614) UNRELEASED; urgency=medium
+ikiwiki (3.20140912) UNRELEASED; urgency=medium
+
+ * Don't double-decode CGI submissions with Encode.pm >= 2.53,
+ fixing "Error: Cannot decode string with wide characters".
+ Thanks, Antoine Beaupré
+
+ -- Simon McVittie <smcv@debian.org> Fri, 12 Sep 2014 21:23:58 +0100
+
+ikiwiki (3.20140831) unstable; urgency=medium
+
+ * Make --no-gettime work in initial build. Closes: #755075
+
+ -- Joey Hess <joeyh@debian.org> Sun, 31 Aug 2014 14:17:24 -0700
+
+ikiwiki (3.20140815) unstable; urgency=medium
* Add google back to openid selector. Apparently this has gotten a stay
of execution until April 2015. (It may continue to work until 2017.)
-
- -- Joey Hess <joeyh@debian.org> Thu, 03 Jul 2014 16:19:40 -0400
+ * highlight: Add compatibility with highlight 3.18, while still supporting
+ 3.9+. Closes: #757679
+ Thanks, David Bremner
+ * highlight: Add support for multiple language definition directories
+ Closes: #757680
+ Thanks, David Bremner
+
+ -- Joey Hess <joeyh@debian.org> Fri, 15 Aug 2014 12:58:08 -0400
ikiwiki (3.20140613) unstable; urgency=medium
diff --git a/debian/control b/debian/control
index c06e8fbac..2ab6207e0 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,8 @@ Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl,
libtimedate-perl, libhtml-template-perl,
libhtml-scrubber-perl, wdg-html-validator,
libhtml-parser-perl, liburi-perl (>= 1.36), perlmagick, po4a (>= 0.34),
- libfile-chdir-perl, libyaml-libyaml-perl, python-support
+ libfile-chdir-perl, libyaml-libyaml-perl, python-support, librpc-xml-perl,
+ libcgi-session-perl
Maintainer: Joey Hess <joeyh@debian.org>
Uploaders: Josh Triplett <josh@freedesktop.org>
Standards-Version: 3.9.5
diff --git a/doc/bugs/Inlining_adds_newlines_which_can_break_markdown.mdwn b/doc/bugs/Inlining_adds_newlines_which_can_break_markdown.mdwn
new file mode 100644
index 000000000..eb71994e5
--- /dev/null
+++ b/doc/bugs/Inlining_adds_newlines_which_can_break_markdown.mdwn
@@ -0,0 +1,43 @@
+I'm trying to put a list of tags in a table, so I carefully make a newline-free taglist.tmpl and then do:
+
+ | \[[!inline pages="link(/category/env)" feeds=no archive=yes sort=title template=taglist]] |
+
+but there's a line in `inline.pm` that does:
+
+ return "&lt;div class=\"inline\" id=\"$#inline\"&gt;&lt;/div&gt;\n\n";
+
+And the extra newlines break the table. Can they be safely removed?
+
+> If you want an HTML table, I would suggest using an HTML table, which
+> should pass through Markdown without being interpreted further:
+>
+> <table><tr>
+> \[[!inline pages="link(/category/env)" feeds=no archive=yes sort=title template=tagtd]]
+> </tr></table>
+>
+> where tagtd.tmpl is of the form `<td>your markup here</td>`; or even just
+>
+> \[[!inline pages="link(/category/env)" feeds=no archive=yes sort=title template=tagtable]]
+>
+> where tagtable.tmpl looks like
+>
+> <TMPL_IF FIRST>
+> <table><tr>
+> </TMPL_IF>
+>
+> <td>your tag here</td>
+>
+> <TMPL_IF LAST>
+> </tr></table>
+> </TMPL_IF>
+>
+> I don't think you're deriving much benefit from Markdown's table syntax
+> if you have to mix it with HTML::Template and ikiwiki directives,
+> and be pathologically careful with whitespace. "Right tool for the job"
+> and all that :-)
+>
+> When I edited this page I was amused to find that you used HTML,
+> not Markdown, as its format. It seems oddly appropriate to my answer, but
+> I've converted it to Markdown and adjusted the formatting, for easier
+> commenting.
+> --[[smcv]]
diff --git a/doc/bugs/Please_update_highlight_plugin_for_highlight_3.18.mdwn b/doc/bugs/Please_update_highlight_plugin_for_highlight_3.18.mdwn
new file mode 100644
index 000000000..e98f66881
--- /dev/null
+++ b/doc/bugs/Please_update_highlight_plugin_for_highlight_3.18.mdwn
@@ -0,0 +1,12 @@
+I have put two patches
+
+ git://pivot.cs.unb.ca/ikiwiki.git -b master
+
+The first works around a highlight API change, and the second supports the new(ish)
+feature of having multiple directories with language defintions for highlight.
+
+The corresponding version of libhighlight-perl is in Debian experimental if you want to test.
+
+[[!tag patch]]
+
+> [[done]] thanks --[[Joey]]
diff --git a/doc/bugs/can__39__t_upload_a_simple_png_image:_prohibited_by_allowed__95__attachments___40__file_MIME_type_is_application__47__octet-stream....mdwn b/doc/bugs/can__39__t_upload_a_simple_png_image:_prohibited_by_allowed__95__attachments___40__file_MIME_type_is_application__47__octet-stream....mdwn
index 4e3332748..627b2c827 100644
--- a/doc/bugs/can__39__t_upload_a_simple_png_image:_prohibited_by_allowed__95__attachments___40__file_MIME_type_is_application__47__octet-stream....mdwn
+++ b/doc/bugs/can__39__t_upload_a_simple_png_image:_prohibited_by_allowed__95__attachments___40__file_MIME_type_is_application__47__octet-stream....mdwn
@@ -56,16 +56,22 @@ Weird... --[[anarcat]]
> >
> > --[[anarcat]]
+> > > [[!template id=gitbranch branch=ready/more-magic author="[[smcv]]" browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/commitdiff/ready/more-magic]]
> > > If the regex match isn't necessary and it's just about deleting the
-> > > parameters, I think I'd prefer something like
+> > > parameters, I think I'd prefer
> > >
> > > if (! defined $mimetype) {
> > > ...
> > > }
> > > $mimetype =~ s/;.*//;
> > >
-> > > but I'd be hesitant to do that without knowing why Joey implemented it
-> > > the way it is. If it's about catching a result from file(1) that
+> > > as done in my `ready/more-magic` branch.
+> > >
+> > > I'm a little hesitant to do that without knowing why Joey implemented it
+> > > the way it is, but as far as I can tell it's just an oversight.
+> > >
+> > > Or, if the result of the s/// is checked for a reason, and it's
+> > > about catching a result from file(1) that
> > > is not, in fact, a MIME type at all (empty string or error message
> > > or something), maybe something more like this?
> > >
@@ -74,3 +80,12 @@ Weird... --[[anarcat]]
> > > (or whatever the allowed characters in MIME types are). --[[smcv]]
> > > > I don't mind either way, but i feel this should be fixed for the next release, as I need to reapply this patch at every upgrade now. -- [[anarcat]]
+
+> > > > > This is still a problem in 3.20140831. -- [[anarcat]]
+
+> > > > > > I still don't think appending a semicolon is the right answer:
+> > > > > > at best it's equivalent to what I suggested, and at worst it's
+> > > > > > disabling a check that does have some reason behind it.
+> > > > > > I've turned the version I suggested above into a proper branch.
+> > > > > > Review by someone who can commit to ikiwiki.git would be appreciated.
+> > > > > > --[[smcv]]
diff --git a/doc/bugs/debwiki_shortcut_creates_buggy_URLs_to_subpages.mdwn b/doc/bugs/debwiki_shortcut_creates_buggy_URLs_to_subpages.mdwn
new file mode 100644
index 000000000..f83f960ce
--- /dev/null
+++ b/doc/bugs/debwiki_shortcut_creates_buggy_URLs_to_subpages.mdwn
@@ -0,0 +1,5 @@
+E.g. [[!debwiki Derivatives/Guidelines]].
+
+Maybe we should use `%S` instead of `%s` in the shortcut definition?
+
+> seems reasonable, [[done]] --[[smcv]]
diff --git a/doc/bugs/garbled_non-ascii_characters_in_body_in_web_interface.mdwn b/doc/bugs/garbled_non-ascii_characters_in_body_in_web_interface.mdwn
new file mode 100644
index 000000000..657b86baa
--- /dev/null
+++ b/doc/bugs/garbled_non-ascii_characters_in_body_in_web_interface.mdwn
@@ -0,0 +1,126 @@
+since my latest jessie upgrade here, charsets are all broken when editing a page. the page i'm trying to edit is [this wishlist](http://anarc.at/wishlist/), and it used to work fine. now, instead of:
+
+`Voici des choses que vous pouvez m'acheter si vous êtes le Père Nowel (yeah right):`
+
+... as we see in the rendered body right now, when i edit the page i see:
+
+`Voici des choses que vous pouvez m'acheter si vous �tes le P�re Nowel (yeah right):`
+
+... a typical double-encoding nightmare. The actual binary data is this for the word "Père" according to `hd`:
+
+~~~~
+anarcat@marcos:ikiwiki$ echo "Père" | hd
+00000000 50 c3 a8 72 65 0a |P..re.|
+00000006
+anarcat@marcos:ikiwiki$ echo "P�re" | hd
+00000000 50 ef bf bd 72 65 0a |P...re.|
+00000007
+~~~~
+
+> I don't know what that is, but it isn't the usual double-UTF-8 encoding:
+>
+> >>> u'è'.encode('utf-8')
+> '\xc3\xa8'
+> >>> u'è'.encode('utf-8').decode('latin-1').encode('utf-8')
+> '\xc3\x83\xc2\xa8'
+>
+> A packet capture of the incorrect HTTP request/response headers and body
+> might be enlightening? --[[smcv]]
+>
+> > Here are the headers according to chromium:
+> >
+> > ~~~~
+> > GET /ikiwiki.cgi?do=edit&page=wishlist HTTP/1.1
+> > Host: anarc.at
+> > Connection: keep-alive
+> > Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+> > User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
+> > Referer: http://anarc.at/wishlist/
+> > Accept-Encoding: gzip,deflate,sdch
+> > Accept-Language: fr,en-US;q=0.8,en;q=0.6
+> > Cookie: openid_provider=openid; ikiwiki_session_anarcat=XXXXXXXXXXXXXXXXXXXXXXX
+> >
+> > HTTP/1.1 200 OK
+> > Date: Mon, 08 Sep 2014 21:22:24 GMT
+> > Server: Apache/2.4.10 (Debian)
+> > Set-Cookie: ikiwiki_session_anarcat=XXXXXXXXXXXXXXXXXXXXXXX; path=/; HttpOnly
+> > Vary: Accept-Encoding
+> > Content-Encoding: gzip
+> > Content-Length: 4093
+> > Keep-Alive: timeout=5, max=100
+> > Connection: Keep-Alive
+> > Content-Type: text/html; charset=utf-8
+> > ~~~~
+> >
+> > ... which seem fairly normal... getting more data than this is a little inconvenient since the data is gzip-encoded and i'm kind of lazy extracting that from the stream. Chromium does seem to auto-detect it as utf8 according to the menus however... not sure what's going on here. I would focus on the following error however, since it's clearly emanating from the CGI... --[[anarcat]]
+
+Clicking on the Cancel button yields the following warning:
+
+~~~~
+Error: Cannot decode string with wide characters at /usr/lib/x86_64-linux-gnu/perl/5.20/Encode.pm line 215.
+~~~~
+
+> Looks as though you might be able to get a Python-style backtrace for this
+> by setting `$Carp::Verbose = 1`.
+>
+> The error is that we're taking some string (which string? only a backtrace
+> would tell you) that is already flagged as Unicode, and trying to decode
+> it from byte-blob to Unicode again, analogous to this Python:
+>
+> some_bytes.decode('utf-8').decode('utf-8')
+>
+> --[[smcv]]
+> >
+> > I couldn't figure out where to set that Carp thing - it doesn't work simply by setting it in /usr/bin/ikiwiki - so i am not sure how to use this. However, with some debugging code in Encode.pm, i was able to find a case of double-encoding - in the left menu, for example, which is the source of the Encode.pm crash.
+> >
+> > It seems that some unicode semantics changed in Perl 5.20, or more precisely, in Encode.pm 2.53, according to [this](https://code.activestate.com/lists/perl-unicode/3314/). 5.20 does have significant Unicode changes, but I am not sure they are related (see [perldelta](https://metacpan.org/pod/distribution/perl/pod/perldelta.pod)). Doing more archeology, it seems that Encode.pm is indeed where the problem started, all the way back in [commit 8005a82](https://github.com/dankogai/p5-encode/commit/8005a82d8aa83024d72b14e66d9eb97d82029eeb#diff-f3330aa405ffb7e3fec2395c1fc953ac) (august 2013), taken from [pull request #11](https://github.com/dankogai/p5-encode/pull/11) which expressively forbids double-decoding, in effect failing like python does in the above example you gave (Perl used to silently succeed instead, a rather big change if you ask me).
+> >
+> > So stepping back, it seems that this would be a bug in Ikiwiki. It could be in any of those places:
+> >
+> > ~~~~
+> > anarcat@marcos:ikiwiki$ grep -r decode_utf8 IkiWiki* | wc -l
+> > 31
+> > ~~~~
+> >
+> > Now the fun part is to determine which one should be turned off... or should we duplicate the logic that was removed in decode_utf8, or make a safe_decode_utf8 for ourselves? --[[anarcat]]
+
+The apache logs yield:
+
+~~~~
+[Mon Sep 08 16:17:43.995827 2014] [cgi:error] [pid 2609] [client 192.168.0.3:47445] AH01215: Died at /usr/share/perl5/IkiWiki/CGI.pm line 467., referer: http://anarc.at/ikiwiki.cgi?do=edit&page=wishlist
+~~~~
+
+Interestingly enough, I can't reproduce the bug here (at least in this page). Also, editing the page through git works fine.
+
+I had put ikiwiki on hold during the last upgrade, so it was upgraded separately. The bug happens both with 3.20140613 and 3.20140831. The major thing that happened today is the upgrade from perl 5.18 to 5.20. Here's the output of `egrep '[0-9] (remove|purge|install|upgrade)' /var/log/dpkg.log | pastebinit -b paste.debian.net` to give an idea of what was upgraded today:
+
+http://paste.debian.net/plain/119944
+
+This is a major bug which should probably be fixed before jessie, yet i can't seem to find a severity statement in reportbug that would justify blocking the release based on this - unless we consider non-english speakers as "most" users (i don't know the demographics well enough). It certainly makes ikiwiki completely unusable for my users that operate on the web interface in french... --[[anarcat]]
+
+Note that on this one page, i can't even get the textarea to display and i immediately get `Error: Cannot decode string with wide characters at /usr/lib/x86_64-linux-gnu/perl/5.20/Encode.pm line 215`: http://anarc.at/ikiwiki.cgi?do=edit&page=hardware%2Fserver%2Fmarcos.
+
+Also note that this is the same as [[forum/"Error: cannot decode string with wide characters" on Mageia Linux x86-64 Cauldron]], I believe. The backtrace I get here is:
+
+~~~~
+Error: Cannot decode string with wide characters at /usr/lib/x86_64-linux-gnu/perl/5.20/Encode.pm line 215. Encode::decode_utf8("**Menu**\x{d}\x{a}\x{d}\x{a} * [[\x{fffd} propos|index]]\x{d}\x{a} * [[Logiciels|software]]"...)
+called at /usr/share/perl5/IkiWiki/CGI.pm line 117 IkiWiki::decode_form_utf8(CGI::FormBuilder=HASH(0x2ad63b8))
+called at /usr/share/perl5/IkiWiki/Plugin/editpage.pm line 90 IkiWiki::cgi_editpage(CGI=HASH(0xd514f8), CGI::Session=HASH(0x27797e0))
+called at /usr/share/perl5/IkiWiki/CGI.pm line 443 IkiWiki::__ANON__(CODE(0xfaa460))
+called at /usr/share/perl5/IkiWiki.pm line 2101 IkiWiki::run_hooks("sessioncgi", CODE(0x2520138))
+called at /usr/share/perl5/IkiWiki/CGI.pm line 443 IkiWiki::cgi()
+called at /usr/bin/ikiwiki line 192 eval {...}
+called at /usr/bin/ikiwiki line 192 IkiWiki::main()
+called at /usr/bin/ikiwiki line 231
+~~~~
+
+so this would explain the error on cancel, but doesn't explain the weird encoding i get when editing the page... <sigh>...
+
+... and that leads me to this crazy patch which fixes all the above issue, by avoiding double-decoding... go figure that shit out...
+
+[[!template id=gitbranch branch=anarcat/dev/safe_unicode author="[[anarcat]]"]]
+
+> [[Looks good to me|users/smcv/ready]] although I'm not sure how valuable
+> the `$] < 5.02 || ` test is - I'd be tempted to just call `is_utf8`. --[[smcv]]
+
+>> [[merged|done]] --[[smcv]]
diff --git a/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn b/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
index c535f88a4..6425c1ece 100644
--- a/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
+++ b/doc/bugs/image_rescaling_distorts_with_small_pictures.mdwn
@@ -1 +1,49 @@
If you use the rescaling feature of the directive [[ikiwiki/directive/img/]] with a smaller image it will distort. E.g. an image with 150x250 rescaled into size=200x200. --bastla
+
+> More specifically: `img` normally preserves aspect ratio:
+> `size=200x200` normally means "as large as possible, keeping
+> the width 200px or less, the height 200px or less, and the
+> aspect ratio correct". So a 4:3 image with `size=200x200`
+> would actually come out 200px wide and 150px tall.
+>
+> However, when (desired width is specified) && (desired height is specified)
+> && ((width > desired width) || (height > desired height)),
+> it uses exactly the desired size, without preserving aspect ratio.
+> --smcv
+
+>> [[!template id=gitbranch branch=chrysn/imgforpdf-and-more author="[[chrysn]]"]]
+>>
+>> [[!tag patch]]
+>>
+>> i've implemented a fix for this along with a unit test.
+>>
+>> the patch branch is based on the imgforpdf branch
+>> ([[bugs/svg and pdf conversion fails]]), because it would not cleanly merge.
+>> the branch also enhances on how images are handled in preview, falling back
+>> to data: urls if the image has not been rendered in a saved version. please
+>> review. --[[chrysn]]
+
+>>> Mostly [[looks good to me|users/smcv/ready]].
+>>>
+>>> Minor things, which wouldn't stop me merging it if I could:
+>>>
+>>> * `$imgdatalink = "data:image/".$im->Get("magick").";base64,".encode_base64($blob[0]);`:
+>>> is the ImageMagick file type always valid as the second part of
+>>> a MIME type?
+>>> * In this code:
+>>>
+>>> +open (my $outhtmlfd, "<", "$outpath.html");
+>>> +local $/=undef;
+>>> +my $outhtml = <$outhtmlfd>;
+>>> +close $outhtmlfd;
+>>>
+>>> no block is closed, so the "local" is ineffective, so the `<>` operator
+>>> remains in read-entire-file mode afterwards. To avoid odd side-effects,
+>>> I would suggest using `readfile()` like `t/trail.t` does.
+>>>
+>>> [[!template id=gitbranch branch=smcv/ready/imgforpdf-and-more author="[[chrysn]], [[smcv]]"
+ browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/imgforpdf-and-more]]
+>>> I've used `readfile()` (but not done anything about the ImageMagick file type)
+>>> in my copy of the branch.
+>>>
+>>> --[[smcv]]
diff --git a/doc/bugs/openid_login_fails_wirth_Could_not_determine_ID_provider_from_URL.mdwn b/doc/bugs/openid_login_fails_wirth_Could_not_determine_ID_provider_from_URL.mdwn
index ec22f0c78..073c10d14 100644
--- a/doc/bugs/openid_login_fails_wirth_Could_not_determine_ID_provider_from_URL.mdwn
+++ b/doc/bugs/openid_login_fails_wirth_Could_not_determine_ID_provider_from_URL.mdwn
@@ -4,6 +4,37 @@ On some ikiwikis that I run, I get the following error on OpenID logins:
> Is this fixed now that [[!debbug 738493]] has been fixed? --[[smcv]]
+> > No, it isn't. I still get: `no_identity_server: Could not determine ID provider from URL.` from the latest ikiwiki in jessie (3.20140831), with liblwpx-paranoidagent-perl 1.10-3. Debugging tells me it's still related to the `500 Can't verify SSL peers without knowing which Certificate Authorities to trust` error, so probably because `Mozilla::CA` is not packaged ([[!debbug 702124]]). I still had to apply the patch to disable SSL verification at the end of this file. However, setting `$ENV{PERL_LWP_SSL_CA_PATH} = '/etc/ssl/certs';` seems to work now, so the following dumb patch works:
+> >
+> > ~~~~
+> > --- /usr/bin/ikiwiki.orig 2014-09-08 15:48:35.715868902 -0400
+> > +++ /usr/bin/ikiwiki 2014-09-08 15:50:29.666779878 -0400
+> > @@ -225,4 +225,5 @@
+> > }
+> > }
+> >
+> > +$ENV{PERL_LWP_SSL_CA_PATH} = '/etc/ssl/certs';
+> > main;
+> > ~~~~
+> >
+> > may not be the best place to fiddle around with this, but then again it makes sense that it applies to the whole program. it should probably be reported upstream as well. also in my git repo. -- [[anarcat]]
+> >
+> > > This seems Debian-specific. I would be inclined to consider this to be
+> > > a packaging/system-integration (i.e. non-upstream) bug in
+> > > `liblwpx-paranoidagent-perl` rather than an upstream bug in IkiWiki;
+> > > it certainly seems inappropriate to put this Debian-specific path
+> > > in upstream IkiWiki. If it can't be fixed in LWPX::ParanoidAgent for
+> > > whatever reason, applying it via some sort of sed in ikiwiki's
+> > > `debian/rules` might be more reasonable? --[[smcv]]
+> > >
+> > > > by "upstream", i did mean `liblwpx-paranoidagent-perl`. so yeah, maybe this should be punted back into that package's court again. :( --[[anarcat]]
+> > > >
+> > > > done, by bumping the severity of [[!debbug 744404]] to release-criticial. --[[anarcat]]
+> > > >
+> > > > > ooh cool, the bug was fixed already with an upload, so this should probably be considered [[done]] at this point, even without the patch below! great! -- [[anarcat]]
+
+[[!template id=gitbranch branch=anarcat/dev/ssl_ca_path author="[[anarcat]]"]]
+
I seem recall having that error before, and fixing it, but it always seems to come back and I forget how to fix it. So I'll just open this bug and document it if i can figure it out... -- [[users/anarcat]]
The Perl module manual says:
@@ -157,18 +188,13 @@ Workaround - disable error checking:
> My only workaround for now was to fix `PERL_LWP_SSL_VERIFY_HOSTNAME` to 0 directly in `ikiwiki` :-( -- [[users/bbb]]
~~~~
-*** /home/bruno/opt/ikiwiki/bin/ikiwiki.bad 2014-04-17 15:41:38.868972152 +0200
---- /home/bruno/opt/ikiwiki/bin/ikiwiki 2014-04-17 15:04:56.524996905 +0200
-*************** sub main () {
-*** 226,229 ****
- }
- }
-
-! main;
---- 226,229 ----
+--- /usr/bin/ikiwiki.orig 2014-09-08 15:48:35.715868902 -0400
++++ /usr/bin/ikiwiki 2014-09-08 15:48:38.895947911 -0400
+@@ -225,4 +225,5 @@
}
- }
-
-! $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0 ; main;
+ }
+
++$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
+ main;
~~~~
diff --git a/doc/bugs/pythonproxy-utf8_again.mdwn b/doc/bugs/pythonproxy-utf8_again.mdwn
index fa702a22c..cc6d11de7 100644
--- a/doc/bugs/pythonproxy-utf8_again.mdwn
+++ b/doc/bugs/pythonproxy-utf8_again.mdwn
@@ -1,4 +1,6 @@
[[!template id=gitbranch branch=chrysn/more-proxy-utf8-fail author="[[chrysn]]"]]
+[[!template id=gitbranch author="[[chrysn]], [[smcv]]" branch=smcv/ready/more-proxy-utf8-fail
+ browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/more-proxy-utf8-fail]]
the recently introduced fixes for [[crashes in the python proxy even if disabled]]
caused the typical python2 implicit conversion failures ("'ascii' codec
@@ -52,3 +54,15 @@ patch.
>>> a `unicode`. (i'd happily ditch python2 and port all plugins to python3,
>>> where this is all easier, but my [[todo/vCard rendering]] still uses an
>>> ancient module.) --[[chrysn]]
+
+>>>> You were right about this, `encode` is appropriate to go from `unicode`
+>>>> to `str` under Python 2. However, Python 3 is still broken.
+>>>>
+>>>> My `ready/more-proxy-utf8-fail` branch, based on yours,
+>>>> [[fixes the `rst` test when run under Python 3|bugs/rst_plugin_hangs_when_used_with_Python_3]]
+>>>> and hopefully also fixes this one. Please check that it still
+>>>> fixes your test-case too.
+>>>>
+>>>> Joey, I think this is [[ready for merge|users/smcv/ready]] even if it
+>>>> doesn't fix chrysn's bug - it does fix Python 3 support
+>>>> in general. --[[smcv]]
diff --git a/doc/bugs/redirect.mdwn b/doc/bugs/redirect.mdwn
index 6296c3df1..87f6a67e7 100644
--- a/doc/bugs/redirect.mdwn
+++ b/doc/bugs/redirect.mdwn
@@ -24,3 +24,30 @@ then the following command should print 302
> In current ikiwiki, you can get a broadly similar effect by either
> using \[[!meta redir=foo]] (which does a HTML `<meta>` redirect)
> or reconfiguring the web server. --[[smcv]]
+
+>> The CGI spec (http://www.ietf.org/rfc/rfc3875) says that a CGI can cause a redirect by returning a Location: header.
+>> So it's possible; desirable (due to your point about conflicting with git-annex support) is a different matter.
+
+>>> One of the major things that separates ikiwiki from other wiki software
+>>> is that ikiwiki is a wiki compiler: ordinary page-views are purely
+>>> static HTML, and the CGI only gets involved when you do something
+>>> that really has to be dynamic (like an edit).
+>>>
+>>> However, there is no server-independent static content that ikiwiki
+>>> could write out to the destdir that would result in that redirect.
+>>>
+>>> If you're OK with requiring the [[plugins/404]] plugin (and a
+>>> web server where it works, which I think still means Apache) then
+>>> it would be possible to write a plugin that detected symlinks,
+>>> stored them in the `%wikistate`, and used them to make the
+>>> [[plugins/404]] plugin (or its own hook similar to the one
+>>> in that plugin) do a 302 redirect instead of a 404.
+>>> Similarly, a plugin that assumed a suitable Apache
+>>> configuration with fairly broad `AllowOverrides`,
+>>> and wrote out `.htaccess` files, would be a feasible thing
+>>> for someone to write.
+>>>
+>>> I don't think this is a bug; I think it's a request for a
+>>> feature that not everyone will want. The solution to those
+>>> is for someone who wants the feature to
+>>> [[write a plugin|plugins/write]]. --[[smcv]]
diff --git a/doc/bugs/rst_plugin_fails_with___34__uncaught_exception:___39__ascii__39___codec_can__39__t_encode_character__34__.mdwn b/doc/bugs/rst_plugin_fails_with___34__uncaught_exception:___39__ascii__39___codec_can__39__t_encode_character__34__.mdwn
index ff2a41c07..1893e7089 100644
--- a/doc/bugs/rst_plugin_fails_with___34__uncaught_exception:___39__ascii__39___codec_can__39__t_encode_character__34__.mdwn
+++ b/doc/bugs/rst_plugin_fails_with___34__uncaught_exception:___39__ascii__39___codec_can__39__t_encode_character__34__.mdwn
@@ -36,5 +36,5 @@ name, repr(ret))` (which should not hurt since it's a message
for debugging purposes only).
-> this is fixed in commit [154c4ea9](http://source.ikiwiki.branchable.com/?p=source.git;a=commit;h=154c4ea9e65d033756330a7f8c5c0fa285380bf0)
+> this is [[fixed|done]] in commit [154c4ea9](http://source.ikiwiki.branchable.com/?p=source.git;a=commit;h=154c4ea9e65d033756330a7f8c5c0fa285380bf0)
> (november 2013), which is included in 3.20140227. --[[chrysn]]
diff --git a/doc/bugs/rst_plugin_hangs_when_used_with_Python_3.mdwn b/doc/bugs/rst_plugin_hangs_when_used_with_Python_3.mdwn
new file mode 100644
index 000000000..ca0738ad5
--- /dev/null
+++ b/doc/bugs/rst_plugin_hangs_when_used_with_Python_3.mdwn
@@ -0,0 +1,35 @@
+During ikiwiki make phase the rst process hangs:
+[ps output](http://dpaste.com/21TQQKT)
+[gdb backtrace 1](http://dpaste.com/0VQBW6D)
+[gdb backtrace 1](http://dpaste.com/1VHS88Y)
+
+working with python 2.7
+[http://dpaste.com/0985A91](http://dpaste.com/0985A91)
+not working with python3.3~3.4
+[http://dpaste.com/0ACNK3W](http://dpaste.com/0ACNK3W)
+
+> Retitled this bug report since it seems to be specific to Python 3.
+>
+> The `rst` plugin is probably more commonly used with Python 2.
+> It seems likely that there is some Python-3-specific bug in `proxy.py`,
+> perhaps introduced by [commit 154c4ea
+ "properly encode and decode from/to utf8 when sending rpc to ikiwiki"](
+http://source.ikiwiki.branchable.com/?p=source.git;a=commitdiff;h=154c4ea9e65d033756330a7f8c5c0fa285380bf0).
+>
+> I can reproduce this on Debian by installing `python3-docutils`
+> and changing the first line of `plugins/proxy.py`, the first
+> line of `plugins/pythondemo`, the first line of `plugins/rst`
+> and the `system()` call in `t/rst.t` to use `python3` instead
+> of `python`. --[[smcv]]
+
+looks like the problem is in proxy.py
+ml = _IkiWikiExtPluginXMLRPCHandler._read(in_fd).decode('utf8')
+
+without decode('utf8') is working
+
+> That call was introduced
+> [[to fix a bug under Python 2|bugs/crashes_in_the_python_proxy_even_if_disabled]]
+> so it cannot just be removed, but I've put a proposed branch on
+> [[this related bug|bugs/pythonproxy-utf8_again]]. [[!tag patch]] --smcv
+
+tested and fixed with patch [http://git.pseudorandom.co.uk/smcv/ikiwiki.git/commitdiff/38bd51bc1bab0cabd97dfe3cb598220a2c02550a](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/commitdiff/38bd51bc1bab0cabd97dfe3cb598220a2c02550a) and patch [http://git.pseudorandom.co.uk/smcv/ikiwiki.git/commitdiff/81506fae8a6d5360f6d830b0e07190e60a7efd1c](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/commitdiff/81506fae8a6d5360f6d830b0e07190e60a7efd1c)
diff --git a/doc/bugs/template_creation_error.mdwn b/doc/bugs/template_creation_error.mdwn
index d3c0bcca5..d1fb788f5 100644
--- a/doc/bugs/template_creation_error.mdwn
+++ b/doc/bugs/template_creation_error.mdwn
@@ -261,4 +261,10 @@ same logic as IkiWiki itself. I don't think that's serious. --[[smcv]]
>>>> an error to invoke scan in the render phase; that would mean that
>>>> `readtemplate` needs to check whether it's invoked as a scan or not to
>>>> decide whether to scan the template page, but would be generally more
->>>> robust for future plugin writing. --[[chrysn]]
+>>>> robust for future plugin writing.
+>>>>
+>>>> **addendum**: if the new phase state is used to create warnings/errors
+>>>> about improper ikiwiki api use of plugins (which is something i'd
+>>>> advocate), that should likewise warn if `add_link` actually adds a link in
+>>>> the render phase. such a warning would have helped spotting the
+>>>> link-related [[template evaluation oddities]] earlier. --[[chrysn]]
diff --git a/doc/bugs/trails_depend_on_everything.mdwn b/doc/bugs/trails_depend_on_everything.mdwn
new file mode 100644
index 000000000..babb1e361
--- /dev/null
+++ b/doc/bugs/trails_depend_on_everything.mdwn
@@ -0,0 +1,14 @@
+[[!template id=gitbranch branch=smcv/ready/trail-sort
+author="[[Simon McVittie|smcv]]"
+browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/trail-sort]]
+[[!tag patch users/smcv/ready]]
+
+On [[trail's discussion page|plugins/trail/discussion]], [[kjs]] pointed out
+that [[plugins/trail]] and [[plugins/contrib/album]] get excessive
+dependencies on `internal(*)`. I tracked this down to their (ab)use of
+`pagespec_match_list` with the pagespec `internal(*)` to sort a pre-existing
+list of pages.
+
+They should just sort the pages instead; they'll already have all the
+dependencies they need. My branch adds `IkiWiki::sort_pages` but does not
+make it plugin API just yet. --[[smcv]]
diff --git a/doc/forum/Right-to-left_support/comment_1_5b2bf4d037ae8db940296e6f58884927._comment b/doc/forum/Right-to-left_support/comment_1_5b2bf4d037ae8db940296e6f58884927._comment
new file mode 100644
index 000000000..1e9558f96
--- /dev/null
+++ b/doc/forum/Right-to-left_support/comment_1_5b2bf4d037ae8db940296e6f58884927._comment
@@ -0,0 +1,21 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmfcr1X7TXwuCju7vCBG6vii455SX1Qxro"
+ nickname="Mesar"
+ subject="comment 1"
+ date="2014-08-30T17:53:53Z"
+ content="""
+Hi,
+
+You need ikiwiki 3.20140227 or newer, which includes the patch to expose the language code/direction see [[todo/expose_html_language_and_direction/]]
+After which you need to modify the templates to make use of the tags.
+
+I'm currently running this on http://addons.nvda-project.org
+The config/templates can be [found here](https://bitbucket.org/nvdaaddonteam/ikiwiki-ctl)
+
+I haven't investigated how this functions when the po plugin is disabled, but I am guessing that you can simply enable the po plugin, define your master language, and miss out any slave languages.
+
+I would be intrested to hear feedback/what you got to work, as we are a bunch of blind people running the project above, so the correct markup was the goal in our case, I haven't had any feedback on its visual appearance.
+
+
+--[[mhameed]]
+"""]]
diff --git a/doc/forum/Spaces_in_URLs.mdwn b/doc/forum/Spaces_in_URLs.mdwn
new file mode 100644
index 000000000..4749f4dc5
--- /dev/null
+++ b/doc/forum/Spaces_in_URLs.mdwn
@@ -0,0 +1,14 @@
+There is one file on my site that had a space in the name;
+on my old site, this link worked:
+[http://dada.pink/scarsdale/Statement 20140527.pdf](http://dada.pink/scarsdale/Statement 20140527.pdf)
+
+Now that I've moved to Ikiwiki, that doesn't work. So I moved the file here:
+[http://dada.pink/scarsdale/Statement_20140527.pdf](http://dada.pink/scarsdale/Statement_20140527.pdf)
+
+Is there a better approach to maintaining this link than setting an alias in Apache?
+
+> You can add the space character to the `wiki_file_chars` argument in your setup file. -- [[Jon]]
+
+>> a space character is not allowed in a url; user agents that read one usually represent it in percent encoded form (`%20`). if you use that, things also work for direct links, which i assume caused the problem (for both the links in the original description render correctly): `\[[http://dada.pink/scarsdale/Statement%2020140527.pdf]]` renders [[http://dada.pink/scarsdale/Statement%2020140527.pdf]].
+>>
+>> spaces are allowed in internal pages because wiki page names are not urls per se but converted using conversion rules -- this allows people to not think about url rules and just link to pages, but when you're linking outside ikiwiki, some strings just aren't valid urls. --[[chrysn]]
diff --git a/doc/forum/Using_reverse_proxy__59___base_URL_is_http_instead_of_https/comment_5_674f56100c0682eba36cc5327fbdae4a._comment b/doc/forum/Using_reverse_proxy__59___base_URL_is_http_instead_of_https/comment_5_674f56100c0682eba36cc5327fbdae4a._comment
new file mode 100644
index 000000000..1546c67a0
--- /dev/null
+++ b/doc/forum/Using_reverse_proxy__59___base_URL_is_http_instead_of_https/comment_5_674f56100c0682eba36cc5327fbdae4a._comment
@@ -0,0 +1,61 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawk6z7Jsfi_XWfzFJNZIjYUcjgrthg4aPUU"
+ nickname="Alejandro"
+ subject="Same Trick in Apache"
+ date="2014-09-10T18:58:24Z"
+ content="""
+I got it working with Apache 2.4 and Virtual Hosts on both HTTP 1.1 and HTTPS (SNI). The procedure is somewhat analogous to the nginx procedure above. So here is my set-up in the hopes will help other avoid this pain.
+
+## Set-up
+
+ CLIENT <---- HTTPS ----> REVERSE PROXY <---- HTTP ----> IKIWIKI
+
+
+## The HTTP to HTTPS Redirect
+
+To assure that all your HTTP requests are being redirected to HTTPS I chose to use mod_rewrite because simple Redirect does not pass query parameters. You will want an HTTP VHost that will redirect with something like the one below (notice the subtle ? before query string). **Note: This will NOT re-write ikiwiki's http:// URLs (base tag, etc.)**. For that I use a content filter like you will see below. This HTTP to HTTPS redirect is required though for both security and for the /foo/?updated URI form in this set-up.
+
+<pre>
+
+&lt;VirtualHost *:80&gt;
+ ServerName imass.name
+ RewriteEngine On
+ RewriteCond %{HTTPS} off
+ RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}?%{QUERY_STRING}
+ ErrorLog /var/log/imass.name-error.log
+ LogLevel warn
+ CustomLog /var/log/imass.name-access.log combined
+&lt;/VirtualHost&gt;
+
+</pre>
+
+## The SSL Virtual Host
+
+This part is a bit more tricky. First I am using SNI as I don't care for non-SNI user agents. Second, you need to use a filter that replaces all http:// to https:// before the response is set. Note that this alone won't deal with ?update so you will need the HTTP to HTTPS set-up above anyway. Third, I use HTTP Auth so I don't know if this will work with your particular Auth set-up (although it should IMHO), YMMV:
+
+<pre>
+
+&lt;VirtualHost *:443&gt;
+ ServerName imass.name
+ ProxyHTMLEnable On
+ ProxyHTMLExtended On
+ SSLEngine on
+ SSLCertificateFile XXX
+ SSLCertificateKeyFile XXX
+ SSLCertificateChainFile XXX
+ SSLOptions +StdEnvVars
+ ProxyPreserveHost On
+ ProxyHTMLURLMap http:// https://
+ ProxyPass / http://192.168.101.101/
+ ProxyPassReverse / http://192.168.101.101/
+ LogLevel warn
+ ErrorLog /var/log/imass.name-ssl-error.log
+ TransferLog \"/var/log/imass.name-ssl-access.log\"
+ CustomLog \"/var/log/imass.name-ssl-request.log\" \"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \\"%r\\" %b\"
+&lt;/VirtualHost&gt;
+
+</pre>
+
+
+
+"""]]
diff --git a/doc/forum/__34__Error:_cannot_decode_string_with_wide_characters__34___on_Mageia_Linux_x86-64_Cauldron.mdwn b/doc/forum/__34__Error:_cannot_decode_string_with_wide_characters__34___on_Mageia_Linux_x86-64_Cauldron.mdwn
index 8f9225968..c5a91be06 100644
--- a/doc/forum/__34__Error:_cannot_decode_string_with_wide_characters__34___on_Mageia_Linux_x86-64_Cauldron.mdwn
+++ b/doc/forum/__34__Error:_cannot_decode_string_with_wide_characters__34___on_Mageia_Linux_x86-64_Cauldron.mdwn
@@ -18,3 +18,6 @@ Can anyone shed any light on this problem and guide me what I need to do to fix
Regards,
-- [Shlomi Fish](http://www.shlomifish.org/)
+
+> [[Merged anarcat's fix for
+this|bugs/garbled non-ascii characters in body in web interface]] --[[smcv]]
diff --git a/doc/forum/__34__Error:_cannot_decode_string_with_wide_characters__34___on_Mageia_Linux_x86-64_Cauldron/comment_1_abf7ec7c378ab0908685d72d159e9fd2._comment b/doc/forum/__34__Error:_cannot_decode_string_with_wide_characters__34___on_Mageia_Linux_x86-64_Cauldron/comment_1_abf7ec7c378ab0908685d72d159e9fd2._comment
new file mode 100644
index 000000000..8b066b391
--- /dev/null
+++ b/doc/forum/__34__Error:_cannot_decode_string_with_wide_characters__34___on_Mageia_Linux_x86-64_Cauldron/comment_1_abf7ec7c378ab0908685d72d159e9fd2._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://id.koumbit.net/anarcat"
+ ip="72.0.72.144"
+ subject="comment 1"
+ date="2014-09-10T03:00:22Z"
+ content="""
+i had a similar issue, reported in [[bugs/garbled_non-ascii_characters_in_body_in_web_interface]].
+"""]]
diff --git a/doc/forum/how_to_have_a_plugin_delete_a_file.mdwn b/doc/forum/how_to_have_a_plugin_delete_a_file.mdwn
new file mode 100644
index 000000000..ea29555e4
--- /dev/null
+++ b/doc/forum/how_to_have_a_plugin_delete_a_file.mdwn
@@ -0,0 +1,18 @@
+[[!meta title="How to have a plugin delete a file?"]]
+
+When using the [[plugins/contrib/jscalendar]] plugin, it creates in the
+[[plugins/transient]] directory some files (a bit like the
+[[plugins/recentchanges]] plugin does). When the calendar that triggered
+creation of this file is removed, I would like to remove the corresponding
+page as well, but I cannot, because I get the following error.
+
+ internal error: jscalendar/90cde8dfad6413813b324a15ae2d1d95041aedd69e7be36c02b0cd4a58c4af73.jscalendar cannot be found in <path of wiki> or underlay
+
+My guess is that:
+
+* the page is stored, internally, in some list of pages to render (as it depends on the page containing the calendar that was just deleted);
+* my plugin delete this page (using `IkiWiki::prune()` or `unlink()`, in the `rendered()` or `needsbuild()` hook);
+* IkiWiki tries to render the page, but cannot (since I just deleted it), and throws the error.
+
+My question is: How can I tell IkiWiki that I *deleted* this page, and that it is no longer necessary to render it? Is there a hook in which I can safely do this?
+
diff --git a/doc/forum/how_to_have_a_plugin_delete_a_file/comment_1_061c8bca174f7155d4065dd200c0c8db._comment b/doc/forum/how_to_have_a_plugin_delete_a_file/comment_1_061c8bca174f7155d4065dd200c0c8db._comment
new file mode 100644
index 000000000..439b07429
--- /dev/null
+++ b/doc/forum/how_to_have_a_plugin_delete_a_file/comment_1_061c8bca174f7155d4065dd200c0c8db._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="smcv"
+ ip="81.100.115.242"
+ subject="comment 1"
+ date="2014-07-21T20:15:13Z"
+ content="""
+Without actually checking the source code, I think the answer is:
+if you refrain from saying that page *x* `will_render` a file *f* that
+was previously rendered by *x*, IkiWiki will notice the difference,
+and delete *f* automatically.
+"""]]
diff --git a/doc/forum/how_to_have_a_plugin_delete_a_file/comment_2_864a20147885642ad3bbcf8400d8ee46._comment b/doc/forum/how_to_have_a_plugin_delete_a_file/comment_2_864a20147885642ad3bbcf8400d8ee46._comment
new file mode 100644
index 000000000..f22a60748
--- /dev/null
+++ b/doc/forum/how_to_have_a_plugin_delete_a_file/comment_2_864a20147885642ad3bbcf8400d8ee46._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="smcv"
+ ip="81.100.115.242"
+ subject="comment 2"
+ date="2014-07-21T20:16:16Z"
+ content="""
+... and in that situation, you need to put *x* in the output of
+`needsbuild`, if it did not already have a reason to be built.
+"""]]
diff --git a/doc/ikiwiki/markdown/discussion.mdwn b/doc/ikiwiki/markdown/discussion.mdwn
new file mode 100644
index 000000000..7c0d75858
--- /dev/null
+++ b/doc/ikiwiki/markdown/discussion.mdwn
@@ -0,0 +1,48 @@
+There is an ongoing [effort to standardise Markdown][sm]; I think it would be nice to check whether this implementation is compliant with it.
+
+[sm]: http://standardmarkdown.com/
+
+http://standardmarkdown.com/
+
+> IkiWiki's [[plugins/mdwn]] plugin does not contain an implementation
+> of Markdown: it relies on external libraries. It can currently use
+> any of these, most-preferred first:
+>
+> * [[!cpan Text::MultiMarkdown]], only if explicitly requested via
+> `$config{multimarkdown}`
+> * [[!cpan Text::Markdown::Discount]], if not explicitly disabled
+> via `$config{nodiscount}`
+> * [[!cpan Text::Markdown]]
+> * [[!cpan Markdown]]
+> * `/usr/bin/markdown`
+>
+> In practice, Discount is the implementation pulled in by the
+> Debian package dependencies, and (I suspect) the most
+> commonly used with IkiWiki.
+>
+> If the selected external library (whatever it happens to be)
+> complies with a particular interpretation of Markdown, then
+> IkiWiki will too. If not, it won't. The only influence
+> IkiWiki has over its level of compliance with a particular
+> interpretation is in how we choose which external library
+> we prefer.
+>
+> As such, if you want IkiWiki to change its interpretation of
+> Markdown, the way to do that is to either change Discount's
+> interpretation of Markdown, or contribute a patch to make
+> `mdwn.pm` prefer a different (and presumably "more compliant")
+> Markdown implementation.
+>
+> IkiWiki has one syntax extension beyond Markdown, which is
+> that text enclosed in double-square-brackets is an IkiWiki
+> [[ikiwiki/wikilink]] or [[ikiwiki/directive]]. This applies
+> to any markup language used with IkiWiki, not just Markdown.
+>
+> (There also doesn't seem to be any consensus that labelling
+> any particular fork of Markdown as "standard" can make it the
+> truth, or that this particular fork is the Correct™ fork and not
+> just <https://xkcd.com/927/>; but that's between the authors of
+> Markdown implementations and those who want to standardize
+> Markdown, and it isn't IkiWiki's job to police that.)
+>
+> --[[smcv]]
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index 34d5bb777..c158ec3f9 100644
--- a/doc/news/openid.mdwn
+++ b/doc/news/openid.mdwn
@@ -10,4 +10,4 @@ log back in, try out the OpenID signup process if you don't already have an
OpenID, and see how OpenID works for you. And let me know your feelings about
making such a switch. --[[Joey]]
-[[!poll 75 "Accept only OpenID for logins" 21 "Accept only password logins" 49 "Accept both"]]
+[[!poll 76 "Accept only OpenID for logins" 21 "Accept only password logins" 49 "Accept both"]]
diff --git a/doc/news/version_3.20130904.1.mdwn b/doc/news/version_3.20130904.1.mdwn
deleted file mode 100644
index a24829540..000000000
--- a/doc/news/version_3.20130904.1.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-ikiwiki 3.20130904.1 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
- * Fix cookiejar default setting."""]] \ No newline at end of file
diff --git a/doc/news/version_3.20140102.mdwn b/doc/news/version_3.20140102.mdwn
deleted file mode 100644
index e10164625..000000000
--- a/doc/news/version_3.20140102.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-ikiwiki 3.20140102 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
- * aggregate: Improve display of post author.
- * poll: Fix behavior of poll buttons when inlined.
- * Fixed unncessary tight loop hash copy in saveindex where a pointer
- can be used instead. Can speed up refreshes by nearly 50% in some
- circumstances.
- * Optimized loadindex by caching the page name in the index.
- * Added only\_committed\_changes config setting, which speeds up wiki
- refresh by querying git to find the files that were changed, rather
- than looking at the work tree. Not enabled by default as it can
- break some setups where not all files get committed to git.
- * comments: Write pending moderation comments to the transient underlay
- to avoid conflict with only\_committed\_changes.
- * search: Added google\_search option, which makes it search google
- rather than using the internal xapain database.
- (googlesearch plugin is too hard to turn on when xapain databases
- corrupt themselves, which happens all too frequently).
- * osm: Remove invalid use of charset on embedded javascript tags.
- Closes: #[731197](http://bugs.debian.org/731197)
- * style.css: Add compatibility definitions for more block-level
- html5 elements. Closes: #[731199](http://bugs.debian.org/731199)
- * aggregrate: Fix several bugs in handling of empty and colliding
- titles when generating filenames."""]] \ No newline at end of file
diff --git a/doc/news/version_3.20140815.mdwn b/doc/news/version_3.20140815.mdwn
new file mode 100644
index 000000000..6ec3c73c3
--- /dev/null
+++ b/doc/news/version_3.20140815.mdwn
@@ -0,0 +1,10 @@
+ikiwiki 3.20140815 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+ * Add google back to openid selector. Apparently this has gotten a stay
+ of execution until April 2015. (It may continue to work until 2017.)
+ * highlight: Add compatibility with highlight 3.18, while still supporting
+ 3.9+. Closes: #[757679](http://bugs.debian.org/757679)
+ Thanks, David Bremner
+ * highlight: Add support for multiple language definition directories
+ Closes: #[757680](http://bugs.debian.org/757680)
+ Thanks, David Bremner"""]] \ No newline at end of file
diff --git a/doc/news/version_3.20140831.mdwn b/doc/news/version_3.20140831.mdwn
new file mode 100644
index 000000000..c8ea1a237
--- /dev/null
+++ b/doc/news/version_3.20140831.mdwn
@@ -0,0 +1,3 @@
+ikiwiki 3.20140831 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+ * Make --no-gettime work in initial build. Closes: #[755075](http://bugs.debian.org/755075)"""]] \ No newline at end of file
diff --git a/doc/plugins/contrib/addtag.mdwn b/doc/plugins/contrib/addtag.mdwn
index ed57202d8..5b9461d28 100644
--- a/doc/plugins/contrib/addtag.mdwn
+++ b/doc/plugins/contrib/addtag.mdwn
@@ -1,3 +1,4 @@
+[[!meta author="spalax"]]
[[!template id=plugin name=addtag author="[[Louis|spalax]]"]]
[[!tag type/widget]]
diff --git a/doc/plugins/contrib/album.mdwn b/doc/plugins/contrib/album.mdwn
index c2f991d5a..9fac11164 100644
--- a/doc/plugins/contrib/album.mdwn
+++ b/doc/plugins/contrib/album.mdwn
@@ -47,6 +47,10 @@ is to provide a direct link to the image.)
Updated, June 2014: integrated changes from [[KathrynAndersen]],
Lukas Lipavsky and kjs
+An `album6` branch is also available, but is less suitable
+for manual installation since it needs core IkiWiki changes
+(until [[bugs/trails depend on everything]] is fixed).
+
### Manual installation
First, you need a version of ikiwiki with the [[trail]] plugin merged in
diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn
index e504c49a0..23ff9017d 100644
--- a/doc/plugins/contrib/album/discussion.mdwn
+++ b/doc/plugins/contrib/album/discussion.mdwn
@@ -833,3 +833,57 @@ to `doc/style.css` should be enough? --[[smcv]]
>>> And right you are, unsure how I missed that. My album branch is now rebased
>>> on your album5 branch (with the two now useless commits removed).
>>> --[[cbaines]]
+
+cbaines, would you mind publishing an album with more realistic pixel-sizes
+of images using your modified CSS? It's difficult to get an idea of how it
+will degrade under conditions like "image size > browser window" with
+images as small as the ones you used. You might find
+<http://git.pseudorandom.co.uk/smcv/ikiwiki-demos/ikialbum.git>
+(`git clone git://git.pseudorandom.co.uk/git/smcv/ikiwiki-demos/ikialbum.git`),
+or the same techniques, useful: it contains images with a realistic pixel
+count, but very very lossy JPEG compression, to keep the size in bytes low.
+
+> I have now created a large (images) example, you can find all the examples
+> here [1]. I have also built all the examples with the album5 branch, you can
+> find the results here [2].
+>
+> 1: <http://cbaines.net/projects/ikiwiki/album/dest/>
+> 2: <http://cbaines.net/projects/ikiwiki/album/dest-album5/>
+
+It's much, much easier to review changes if you use separate commits for
+cosmetic changes like "separate index CSS from viewer CSS" and "more
+consistent indentation", and functional changes like turning the prev/next
+links from absolutely-positioned to floating. I'd be happy to apply
+the cosmetic changes if they were in commits that were literally only
+cosmetic changes, with no functional effect.
+
+> I have now rewritten the CSS changes to get a smaller diff. The only big
+> functional change is from the previous patch is the max-width stuff to cope
+> better with large images.
+
+For the functional bits: I think I'd have used floating boxes instead of the
+absolutely-positioned boxes that are currently used if they provided the effect
+I wanted. I can't remember exactly why I didn't do that now, but
+it might have been because if the browser window shrinks below the image width,
+floats have weird behaviour (they push the actual image out of the way), or because
+I wanted the entire left/right margin of the image to be clickable to have
+a large click-target for scrolling through the album.
+
+If there's something specific that you think is wrong with the CSS in my
+branch, could you please explain it, and perhaps we can come up with something
+that matches both our requirements?
+
+--smcv
+
+> I don't think that something specific is wrong with CSS in the album5 branch,
+> but it does not display large [3], or small [4] images very well. It might be
+> possible to resolve the image size issues without changing from absolute
+> positioning, but I felt (for no particular reason) that I would do it using
+> floats.
+>
+> The clickable region on the margin seems the most likely reason to me to go
+> with absolute positioning, as an initial look at doing this with floats
+> suggests that it is non-trivial.
+>
+> 3: <http://cbaines.net/projects/ikiwiki/album/dest-album5/large-goldtype/album/3/>
+> 4: <http://cbaines.net/projects/ikiwiki/album/dest-album5/basic-blueview/album/ikiwiki_old/>
diff --git a/doc/plugins/contrib/created_in_future.mdwn b/doc/plugins/contrib/created_in_future.mdwn
index 09d2d52fc..95793e12a 100644
--- a/doc/plugins/contrib/created_in_future.mdwn
+++ b/doc/plugins/contrib/created_in_future.mdwn
@@ -1,3 +1,4 @@
+[[!meta author="spalax"]]
[[!template id=plugin name="created_in_future (deprecated)" author="[[Louis|spalax]]"]]
# Created_in_future
diff --git a/doc/plugins/contrib/datetime_cmp.mdwn b/doc/plugins/contrib/datetime_cmp.mdwn
index 7508e0b21..ba35b37c6 100644
--- a/doc/plugins/contrib/datetime_cmp.mdwn
+++ b/doc/plugins/contrib/datetime_cmp.mdwn
@@ -1,3 +1,4 @@
+[[!meta author="spalax"]]
[[!template id=plugin name=datetime_cmp author="[[Louis|spalax]]"]]
[[!tag type/pagespec]]
@@ -36,7 +37,7 @@ where:
* `page`: other page (given in argument);
* `now`: date or time of compilation;
* `today`: same meaning as `now`.
- * `(|_delta)`: used to add a time delta (to use comparisons such as *created at least two day after `some_page`*):
+ * `(|_delta)`: used to add a time delta (to use comparisons such as *created at least two days after `some_page`*):
* *empty*: no delta;
* `_delta`: delta (given in argument).
diff --git a/doc/plugins/contrib/jscalendar.mdwn b/doc/plugins/contrib/jscalendar.mdwn
index 794e4bd9c..8123b3132 100644
--- a/doc/plugins/contrib/jscalendar.mdwn
+++ b/doc/plugins/contrib/jscalendar.mdwn
@@ -1,3 +1,4 @@
+[[!meta author="spalax"]]
[[!template id=plugin name=jscalendar author="[[Louis|spalax]]"]]
# Jscalendar
@@ -12,33 +13,37 @@ Here are some differences compared to this latter plugin.
* No need to rebuild the page containing the calendar each time day changes, or
a page (indexed by the calendar) is added, changed or deleted. This is
particularly useful if you want to have this calendar in the sidebar.
- * Handles the case where several pages appear the same day: a popup appear to let user choose the day he wants.
* Smooth navigation among months.
-* Neutral
- * Most of options are defined in Ikiwiki's setup files instead of the options
- of the directive.
* Cons
- * As a consequence, every calendar of the wiki must index the same set of pages.
* Javascript :( .
## Usage
-### Directive
+### Examples of directive
\[[!jscalendar type="month" ]]
+ \[[!jscalendar type="month" archivebase="calendar"]]
+
+ \[[!jscalendar type="month" year=2014 month=08 pages="posts/* and !posts/*"]]
+
+ \[[!jscalendar type="month" year=-1 month=08]]
+
### Setup file
-It being javascript rather than markdown, most of the configuration must be done in the IkiWiki configuration file rather than in the directive
+This plugin uses the options used by the [[plugins/calendar]] plugin:
- 'archivebase' => "evenements/calendrier",
- 'archive_pagespec' => "evenements/liste/* and ! evenements/liste/*/*",
+ 'archivebase' => "archive",
+ 'archive_pagespec' => "posts/* and ! posts/*/*",
'week_start_day' => 1,
'month_link' => 1,
+The `archivebase` and `archive_pagespec` can be overloaded by the very same
+options of the directive.
+
## Example
-You can see this plugin in action on [[our website|http://www.gresille.org]]. To see what happens when several pages happens on the same day, check the 15th of March 2012.
+You can see this plugin in action on [[our website|http://www.gresille.org]].
Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Jscalendar]]
diff --git a/doc/plugins/contrib/monthcalendar.mdwn b/doc/plugins/contrib/monthcalendar.mdwn
index 4944f3a8f..c21be0abe 100644
--- a/doc/plugins/contrib/monthcalendar.mdwn
+++ b/doc/plugins/contrib/monthcalendar.mdwn
@@ -1,9 +1,12 @@
+[[!meta author="spalax"]]
[[!template id=plugin name=monthcalendar author="[[Louis|spalax]]"]]
# Monthcalendar
This plugin displays a calendar, containing in each of its day the list of links of pages published on this day. It can be used, for example, to display archives of blog posts, or to announce events.
+The difference between this plugin and the [[plugins/calendar]] plugin is that the calendar displayed by this plugin is a big one, containing the full title of every page indexed in it.
+
## Usage
### Directive
@@ -16,6 +19,109 @@ By using the following line in template `calendarmonth.tmpl`, you can have `ikiw
\[[!monthcalendar type="month" year="<TMPL_VAR YEAR>" month="<TMPL_VAR MONTH>" pages="<TMPL_VAR PAGESPEC>"]]
+## CSS
+
+Here is an example of CSS properly rendering the calendar produced by this
+plugin.
+[[!toggle id=css text="CSS"]]
+[[!toggleable id=css text="""
+ /* Calendar */
+ .monthcalendar
+ {
+ color:#aaa;
+ /* font-size:18pt; */
+ margin-top:1em;
+ margin-bottom:1em;
+ width: 100%;
+ }
+
+ .monthcalendar table,
+ .monthcalendar td,
+ .monthcalendar th
+ {
+ border: 1px solid #ccc;
+ }
+
+ #content .monthcalendar td
+ {
+ padding: 0;
+ position: relative;
+ }
+
+ .monthcalendar td div
+ {
+ min-height: 10ex;
+ height: 100%;
+ position: relative;
+ }
+
+ .monthcalendar th
+ {
+ vertical-align: middle;
+ }
+
+ .monthcalendar td ul
+ {
+ padding-left: 0.5em;
+ list-style: dot;
+ list-style-position: inside;
+ text-align: left;
+ font-size: 8pt;
+ position: relative;
+ z-index: 10;
+ font-weight: bold;
+ }
+
+ table.monthcalendar
+ {
+ table-layout: fixed;
+ }
+
+ .monthcalendar .selflink
+ {
+ color:#444444;
+ }
+
+ .monthcalendar-day-head {
+ text-transform:capitalize;
+ }
+
+ .monthcalendar-head {
+ text-transform:capitalize;
+ }
+
+ .monthcalendar-daynumber
+ {
+ float: left;
+ position: absolute;
+ display: block;
+ font-size: 7ex;
+ color: #ccc;
+ line-height: 100%;
+ z-index: 5;
+ padding-top: 0.3ex;
+ text-align: right;
+ width: 1.8em;
+ }
+
+ /* List of pages */
+
+ .monthcalendar-pagelist {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .monthcalendar-item {
+ opacity: 0;
+ height: 0;
+ }
+
+ .monthcalendar-item:target {
+ opacity: 1;
+ height: initial;
+ }
+"""]]
+
## Code
Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Monthcalendar]].
diff --git a/doc/plugins/contrib/navbar.mdwn b/doc/plugins/contrib/navbar.mdwn
index f1c15c6e0..9de66f787 100644
--- a/doc/plugins/contrib/navbar.mdwn
+++ b/doc/plugins/contrib/navbar.mdwn
@@ -38,3 +38,6 @@ If you are interested in this, drop me a line tobi at oetiker dot ch
In the meanwhile, I ([[MartinQuinson]]) have hacked this a bit to make it fit my needs. The result is [[here|http://www.loria.fr/~quinson/Hacking/ikiwiki/]]
+
+In the meanwhile I too have hacked this for my needs and fixed a few bugs in Martin's version.
+The result (and source / instructions) can be found [[here|http://wiki.math.cmu.edu/iki/wiki/tips/20140720-ikiwiki-navbar.html]]. (It is not mobile ready yet, but might be soon...)
diff --git a/doc/plugins/contrib/parenttag.mdwn b/doc/plugins/contrib/parenttag.mdwn
index d3bede797..5dc01c7c5 100644
--- a/doc/plugins/contrib/parenttag.mdwn
+++ b/doc/plugins/contrib/parenttag.mdwn
@@ -1,3 +1,4 @@
+[[!meta author="spalax"]]
[[!template id=plugin name=parenttag author="[[Louis|spalax]]"]]
[[!tag type/tags]]
diff --git a/doc/plugins/contrib/poetry.mdwn b/doc/plugins/contrib/poetry.mdwn
new file mode 100644
index 000000000..aed2e420a
--- /dev/null
+++ b/doc/plugins/contrib/poetry.mdwn
@@ -0,0 +1,107 @@
+[[!meta author="spalax"]]
+[[!template id=plugin name=poetry author="[[Louis|spalax]]"]]
+
+# Poetry
+
+The poetry plugin provides the [[ikiwiki/directive/poetry]] directive, used to
+render poetry (or songs).
+
+## Why?
+
+### Typography
+
+In regular text, there are two different meaning of a new line: a break between
+two paragraphs, and the line wrap.
+
+When rendering poetry, we need a third one: the carriage return between two
+verse lines. This one should be different from the line wrap carriage return,
+otherwise one will not be able to tell apart these two: is a word displayed at
+the begenning of its line a new verse line, or the previous verse line,
+continuing on a new line because it is too long?
+
+Generally, wrapped text is indented, whereas verse lines are not.
+
+### Markdown
+
+One could use carriage return (two white spaces at the end of a line) between
+verse lines, and paragraph break between stanzas, but:
+
+* adding white spaces at the end of lines is painful;
+* there is no easy way to render chorus (in a different way from verses).
+
+## Usage
+
+The directive takes only one argument `content`, containing the poetry to
+render. Carriage returns are respected.
+
+Chorus are lines with `> ` as a starting character.
+
+Lines starting with `) ` are consored/outdated/crossed out verses.
+
+[[!toggle id=example text="View example"]]
+[[!toggleable id=example text='''
+ \[[!poetry content="""
+ This is a verse
+ Made of several lines
+
+ > And here is the chorus
+ > La la la!
+ > A beautiful chorus
+
+ Another verse
+ A bit longer
+ Than the previous one
+
+ ) This one is deleted
+ ) Because I did not like it
+ """]]
+''']]
+
+
+## CSS
+
+This plugin is useless without some corresponding CSS. An example is given
+below.
+
+[[!toggle id=css text="CSS"]]
+[[!toggleable id=css text="""
+ .poetry {
+ padding-left: 1em;
+ border-left: 0.1em solid lightgray;
+ border-radius: 0.5em;
+ }
+
+ .poetry .stanza {
+ padding-left: 1em;
+ }
+
+ .poetry .paren {
+ font-style: italic;
+ font-size: smaller;
+ text-decoration: line-through;
+ }
+
+ .poetry .paren:hover {
+ text-decoration: initial;
+ }
+
+ .poetry .chorus {
+ margin-left: 0.1em;
+ padding-left: 2em;
+ border-left: 0.3em solid slategray;
+ }
+
+ .poetry .line {
+ display: block;
+ text-indent: -1em;
+ }
+"""]]
+
+## Example
+
+This plugin is used to render songs on [this choir's
+website](http://barricades.int.eu.org/repertoire/bread_and_roses/).
+
+## Code
+
+Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Poetry]].
diff --git a/doc/plugins/contrib/sidebar2.mdwn b/doc/plugins/contrib/sidebar2.mdwn
index 574bdeaab..5c169bfd4 100644
--- a/doc/plugins/contrib/sidebar2.mdwn
+++ b/doc/plugins/contrib/sidebar2.mdwn
@@ -1,9 +1,10 @@
+[[!meta author="spalax"]]
[[!template id=plugin name=sidebar2 author="[[Louis|spalax]]"]]
[[!tag type/chrome]]
*Claim:* The [[sidebar|plugins/sidebar]] plugin has nothing
to do with sidebars. This plugin renders some page (which happens to be named
-`sidebar`) and put the result in template variable `SIDEBAR`, in template
+`sidebar`) and put the result in template variable `SIDEBAR` of template
`page.tmpl`. But the fact that it is a sidebar, i.e. a bar appearing on the
side on the screen, is done by CSS.
@@ -40,7 +41,7 @@ The default, which gives the behaviour of the sidebar plugin, is
# Improvements over sidebar plugin
-* You can add several "sidebars" to your wiki. For example, to have a sidebar, a submeno that appear only in pages documentations, and a footer, your `global_sidebars` would be:
+* You can add several "sidebars" to your wiki. For example, to have a sidebar, a submenu that appears only in documentation pages (`doc/*`), and a footer, your `global_sidebars` would be:
global_sidebars => [
"sidebar", "sidebar", "*",
diff --git a/doc/plugins/contrib/taskreport.mdwn b/doc/plugins/contrib/taskreport.mdwn
index 38c2a10c4..377c9ed39 100644
--- a/doc/plugins/contrib/taskreport.mdwn
+++ b/doc/plugins/contrib/taskreport.mdwn
@@ -1,3 +1,4 @@
+[[!meta author="spalax"]]
[[!template id=plugin name=taskreport author="[[Louis|spalax]]"]]
# Taskreport
diff --git a/doc/plugins/osm.mdwn b/doc/plugins/osm.mdwn
index 040d175ca..a2455a4be 100644
--- a/doc/plugins/osm.mdwn
+++ b/doc/plugins/osm.mdwn
@@ -1,10 +1,10 @@
[[!template id=plugin name=osm author="Blars Blarson, Antoine Beaupré"]]
[[!tag type/special-purpose todo/geotagging]]
-## Openstreetmap/Openlayers support for ikiwiki
+## OpenStreetMap/OpenLayers support for ikiwiki
-This plugin provides simple Openstreetmap/Openlayers support for ikiwiki.
-It can embed Openstreetmap viewports within a page or link to a bigger map
+This plugin provides simple OpenStreetMap/OpenLayers support for ikiwiki.
+It can embed OpenStreetMap viewports within a page or link to a bigger map
that will have multiple markers, generated with a KML (or CSV, or GeoJSON)
datafile of markers based on the different calling pages. Multiple distinct
maps on a single wiki are supported.
@@ -15,6 +15,22 @@ if the [[!cpan JSON]] perl module is installed.
This provides the [[ikiwiki/directive/waypoint]] and [[ikiwiki/directive/osm]] directives.
+### Examples
+
+A [[basic set of examples|http://cbaines.net/osm-examples]] is available
+([[repository|http://git.cbaines.net/?p=ikiwiki/osm-examples.git;a=summary]]).
+Note that none of these will work without patching the plugin. With the
+following patches, most of the examples will work (while each patch is
+seperate, the branch includes all previous patches in the list, so the
+cbaines/osm-icon-fixes branch includes all patches).
+
+ - [[bugs/osm plugin error TypeError: mapProjection is null]]
+ - [[todo/osm plugin GeoJSON popup patch]]
+ - [[todo/osm plugin icon patch]]
+
+Even with these patches, the CSV examples do not work, and there are cosmetic
+issues with a few of the other examples.
+
---
The plugin was originally written by
diff --git a/doc/plugins/trail/discussion.mdwn b/doc/plugins/trail/discussion.mdwn
index 6b458cef4..6b1b58bd8 100644
--- a/doc/plugins/trail/discussion.mdwn
+++ b/doc/plugins/trail/discussion.mdwn
@@ -181,6 +181,5 @@ I have removed a similar comment from the album discussion.
>>> dependencies, this turns out to be two similar issues, in `album` and
>>> `trail`: they each use `pagespec_match_list` with the pagespec
>>> `internal(*)` in order to apply a trivial filter (accept everything)
->>> to an existing list for its side-effect of sorting that list. I'll
->>> file a proper bug at some point; fixing it is going to need core
->>> ikiwiki changes, I think. --s
+>>> to an existing list for its side-effect of sorting that list.
+>>> Bug filed as [[bugs/trails depend on everything]] --smcv
diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index d0bb8c517..f9fa321b3 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -1,3 +1,4 @@
+
This is the [[SandBox]], a page anyone can edit to try out ikiwiki
(version [[!version ]]).
@@ -5,7 +6,11 @@ What about [[this page]]?
hello world (right back at ya)
-test, is it being saved?
+test, is it being saved? Probably. I will check. This seems really straightforward.
+
+~~~
+pre formated text?
+~~~
> This is a blockquote.
>
@@ -96,7 +101,7 @@ This is an email link:
Send Mail</a>
</p>
-This is some preformatted text. Each line is proceeded by four spaces.
+What follows is some preformatted text. Each line is proceeded by four spaces.
Test
diff --git a/doc/sandbox/discussion.mdwn b/doc/sandbox/discussion.mdwn
new file mode 100644
index 000000000..ec651a5b3
--- /dev/null
+++ b/doc/sandbox/discussion.mdwn
@@ -0,0 +1,7 @@
+Whilst discussing Ikiwiki on IRC, someone pointed out that "This is the SandBox, a page anyone can edit to try out ikiwiki" is not strictly true, or is debatably so, since they must log in to edit. This proved to be enough of a barrier that said person didn't consider ikiwiki any further. -- [[Jon]]
+
+> I personally think we'd be better off with a separate demo wiki
+> (sandbox.ikiwiki.info?) that has its own git repo and
+> `nofollow` configuration, so edits to that wiki aren't archived
+> in ikiwiki's git history forever; perhaps with a cron job to
+> reset the sandbox every few days? --[[smcv]]
diff --git a/doc/shortcuts.mdwn b/doc/shortcuts.mdwn
index b4f6d8ef4..ca529c296 100644
--- a/doc/shortcuts.mdwn
+++ b/doc/shortcuts.mdwn
@@ -27,7 +27,7 @@ This page controls what shortcut links the wiki supports.
* [[!shortcut name=debrt url="https://rt.debian.org/Ticket/Display.html?id=%s"]]
* [[!shortcut name=debss url="http://snapshot.debian.org/package/%s/"]]
* Usage: `\[[!debss package]]` or `\[[!debss package/version]]`. See <http://snapshot.debian.org/> for details.
-* [[!shortcut name=debwiki url="https://wiki.debian.org/%s"]]
+* [[!shortcut name=debwiki url="https://wiki.debian.org/%S"]]
* [[!shortcut name=fdobug url="https://bugs.freedesktop.org/show_bug.cgi?id=%s" desc="freedesktop.org bug #%s"]]
* [[!shortcut name=fdolist url="http://lists.freedesktop.org/mailman/listinfo/%s" desc="%s@lists.freedesktop.org"]]
* [[!shortcut name=gnomebug url="https://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]]
@@ -55,7 +55,7 @@ This page controls what shortcut links the wiki supports.
* [[!shortcut name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain"]]
* [[!shortcut name=cve url="https://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]
* [[!shortcut name=flickr url="https://secure.flickr.com/photos/%s"]]
-* [[!shortcut name=man url="http://linux.die.net/man/%s"]]
+* [[!shortcut name=man url="http://manpages.debian.org/%s"]]
* [[!shortcut name=ohloh url="https://www.ohloh.net/p/%s"]]
* [[!shortcut name=cpanrt url="https://rt.cpan.org/Ticket/Display.html?id=%s" desc="CPAN RT#%s"]]
* [[!shortcut name=novellbug url="https://bugzilla.novell.com/show_bug.cgi?id=%s" desc="bug %s"]]
diff --git a/doc/spam_fighting.mdwn b/doc/spam_fighting.mdwn
index 6e04dcf8f..712eb0740 100644
--- a/doc/spam_fighting.mdwn
+++ b/doc/spam_fighting.mdwn
@@ -30,4 +30,6 @@ cba01c2 | 2013/09/15 | spain1001 | 80.187.106.136
702a3e5 | 2014/01/02 | Toni | 124.105.173.121
c2924ce | 2014/01/02 | domtheo9110 | 182.253.51.174
cd81b9f | 2014/01/03 | domtheo9110 | ?
+e3376ce | 2014/08/19 | Nng_L (OpenID) | 58.186.127.104
+104c606 | 2014/08/19 | tlevine (OpenID) | 82.153.13.48
"""]]
diff --git a/doc/tips/ikiwiki_on_mac_os_x.mdwn b/doc/tips/ikiwiki_on_mac_os_x.mdwn
index a4d38f8f9..b36bb6a03 100644
--- a/doc/tips/ikiwiki_on_mac_os_x.mdwn
+++ b/doc/tips/ikiwiki_on_mac_os_x.mdwn
@@ -14,7 +14,7 @@ The easiest way of installing an up-to-date ikiwiki on any version of Mac OS X i
7. [install binary packages (OSX)](http://www.pkgsrc.org/#index1h1)
-{OK} As of 2014/03/19, the [version of ikiwiki in pkgsrc](http://pkgsrc.se/www/ikiwiki) is 3.20140227.
+{OK} As of 2014/08/24, the [version of ikiwiki in pkgsrc](http://pkgsrc.se/www/ikiwiki) is 3.20140815.
-----
@@ -39,7 +39,7 @@ enjoy
Enrique Castilla
-[!] As of 2014/03/19, the [version of ikiwiki in MacPorts](http://www.macports.org/ports.php?by=name&substr=Ikiwiki) is 3.20110608.
+[!] As of 2014/08/24, the [version of ikiwiki in MacPorts](http://www.macports.org/ports.php?by=name&substr=Ikiwiki) is 3.20110608.
-----
diff --git a/doc/todo/add_remove_to_actionlist.mdwn b/doc/todo/add_remove_to_actionlist.mdwn
new file mode 100644
index 000000000..b50fe885f
--- /dev/null
+++ b/doc/todo/add_remove_to_actionlist.mdwn
@@ -0,0 +1,20 @@
+[[!template id=gitbranch branch=jon/remove_action author="[[Jon]]"]]
+
+The "remove" plugin allows one to remove pages via the web, but you first have
+to click on 'edit' to get to the 'remove' button. This is a bit
+counter-intuitive, and ikiwiki has an action list, so it would be good if
+"remove" (and also "rename" for that plugin) added items to the action list.
+
+First cut series of patches in the indicated branch. A bit more review is
+needed, in my tests removals work and are committed to the vcs but
+recentchanges isn't regenerated for some reason (probably the constructed `<a>`
+link needs to add/adjust the parameters to emulate a formbuilder form
+submission more carefully).
+
+I haven't begun on the 'rename' plugin. -- [[Jon]]
+
+[[!tag wishlist patch]]
+
+> I accidentally pushed an incomplete patch to that branch that starts the
+> work of doing the same for rename, but it's not working yet, to merge one
+> would need to cherry-pick the other patches for now. Sorry. -- [[Jon]]
diff --git a/doc/todo/calendar_autocreate.mdwn b/doc/todo/calendar_autocreate.mdwn
index fc0b5c0c2..2a7350b79 100644
--- a/doc/todo/calendar_autocreate.mdwn
+++ b/doc/todo/calendar_autocreate.mdwn
@@ -177,3 +177,49 @@ sub gencalendaryear {
> --[[smcv]]
>
> > Thank you for this review. -- [[Louis|spalax]]
+
+---
+
+[[smcv]], can you please go on reviewing this?
+
+> I don't think I'm really the reviewer you want, since I don't have commit
+> access (as you might be able to tell from the number of pending branches
+> I have)... but nobody with commit access seems to be available to do
+> reviews at the moment, so I'm probably the best you're going to get.
+>
+> + 0 0 * * * ikiwiki ~/ikiwiki.setup --refresh
+>
+> I think that should be `ikiwiki --setup ~/ikiwiki.setup --refresh`
+>
+> The indentation of some of the new code in `IkiWiki/Plugin/calendar.pm`
+> is weird. Please use one hard tab (U+0009) per indent step: you seem
+> to have used a mixture of one hard tab per indent or two spaces
+> per indent, which looks bizarre for anyone whose tab size is not
+> 2 spaces.
+>
+> + return unless $config{calendar_autocreate};
+>
+> This is checked in `gencalendaryear` but not in `gencalendarmonth`.
+> Shouldn't `gencalendarmonth` do it too? Alternatively, do the check
+> in `scan`, which calls `gencalendarmonth` directly.
+>
+> + my $year = $date[5] + 1900;
+>
+> You calculate this, but you don't seem to do anything with it?
+>
+> + if (not exists $changed{$params{year}}) {
+> + $changed{$params{year}} = ();
+> + }
+> + $changed{$params{year}}{$params{month}} = 1;
+>
+> `$changed{$params{year}}` is a scalar (you can tell because it starts with the
+> `$` sigil) but `()` is a list. I think you want `{}`
+> (a scalar that is a reference to an empty anonymous hash).
+>
+> However, that whole `if` block can be omitted, and you can just use
+> `$changed{$params{year}}{$params{month}} = 1;`, because Perl will automatically
+> create `$changed{$params{year}}` as a reference to an empty hash if necessary,
+> in order to put the pair `$params{month} => 1` in it (the term to look
+> up if you're curious is "autovivification").
+>
+> --[[smcv]]
diff --git a/doc/todo/do_not_make_links_backwards.mdwn b/doc/todo/do_not_make_links_backwards.mdwn
index 4059d8e2a..50720fed0 100644
--- a/doc/todo/do_not_make_links_backwards.mdwn
+++ b/doc/todo/do_not_make_links_backwards.mdwn
@@ -30,6 +30,35 @@ Discussion
> >
> > Originally, I named that parameter `backwards_links`, but then it wouldn't make sense in the long term, and isn't exactly neutral: it assume the current way is backwards! Your suggestion is interesting however, but I don't think the rtl/ltr nomenclature is problematic, with proper documentation of course... --[[anarcat]]
+> > > I still don't think `rtl`/`ltr` is the right terminology here. I think
+> > > the "API" should say what you mean: the distinction being made is
+> > > "text first" vs. "link first", so, say that.
+> > >
+> > > As far as I understand it, RTL languages like Arabic typically write
+> > > text files "in logical order" (i.e. reading/writing order - first
+> > > letter is first in the bytestream) and only apply RTL rendering on
+> > > display. IkiWiki is UTF-8-only, and Unicode specifies that all
+> > > Unicode text should be in logical order. The opposite of logical
+> > > order is is "display order", which is how you would have to mangle
+> > > the file for it to appear correctly on a naive terminal that expects
+> > > LTR; that can only work correctly for hard-wrapped text, I think.
+> > >
+> > > IkiWiki will parse files
+> > > in logical order too; so if a link's text and destination are both
+> > > written in Arabic, in text-before-link order in the source code, an
+> > > Arabic reader starting from the right would still see the text
+> > > before the link. Similarly, in your proposed link-before-text
+> > > order, an Arabic reader would still see the link before the text
+> > > (which in their case means further to the right). So I don't think
+> > > it would make sense to suggest that
+> > > one order was more appropriate for RTL languages than the other: if
+> > > it's "more correct" (for whatever opinion of "correct") in English, then
+> > > it's "more correct" in Arabic too.
+> > >
+> > > (If the destination is written in Latin then it gets
+> > > more complicated, because the destination will be rendered LTR within an
+> > > otherwise RTL document. I think the order still works though.) --[[smcv]]
+
There's a caveat: we can't have a per-wiki backwards_links option, because of the underlay, common to all wikis, which needs to be converted. So the option doesn't make much sense. Not sure how to deal with this... Maybe this needs to be at the package level? --[[anarcat]]
> I've thought about adding a direction-neutral `\[[!link]]` directive -
@@ -80,6 +109,7 @@ I think we can approach this rationnally:
1. left to right (text then link) can be considered more natural, and should therefore be supported
2. it is supported in markdown using regular markdown links. in the proposed branch, the underlay wikilinks are converted to use regular markdown links
+ > Joey explicitly rejected this for a valid reason (it breaks inlining). See above. --[[smcv]]
3. ikiwiki links break other markup plugins, like mediawiki and creole, as those work right to left.
4. those are recognized "standards" used by other popular sites, like Wikipedia, or any wiki supporting the Creole markup, which is [most wikis](http://www.wikicreole.org/wiki/Engines)
diff --git a/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn b/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn
index 73f04adf0..e5a8d0ab9 100644
--- a/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn
+++ b/doc/todo/edittemplate_should_support_uuid__44___date_variables.mdwn
@@ -47,8 +47,8 @@ Changes to the structure of `$pagestate{$registering_page}{edittemplate}{$pagesp
>> better way based on that, maybe global configuration in `$config`.
>> --[[smcv]]
->>> [[!template id=gitbranch branch=smcv/ready/edittemplate
- browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/edittemplate
+>>> [[!template id=gitbranch branch=smcv/ready/edittemplate2
+ browse=http://git.pseudorandom.co.uk/smcv/ikiwiki.git/shortlog/refs/heads/ready/edittemplate2
author="Jonathon Anderson, [[smcv]]"]]
>>> Here is a version of that branch that I [[would merge|users/smcv/ready]] if I could.
>>> Changes since Jonathon's version:
@@ -77,3 +77,9 @@ Changes to the structure of `$pagestate{$registering_page}{edittemplate}{$pagesp
>>>> html5 would leave old evaluations of displaytime around in the repository.
>>>> (example template: `\[[!meta date="<TMPL_VAR time>"]]I wrote this post at
>>>> \[[!displaytime "<TMPL_VAR time>"]]`). --[[chrysn]]
+
+>>>>> That's a very good point; and Joey added `\[[!date "<TMPL_VAR time">]]`,
+>>>>> which does the same thing as your hypothetical `\[[!displaytime]]`,
+>>>>> almost 5 years ago. Branch replaced by `smcv/ready/edittemplate2`
+>>>>> which drops `formatted_time` and `html_time`, and adds a suggestion
+>>>>> to use `\[[!date]]`. --[[smcv]]
diff --git a/doc/todo/flexible_relationships_between_pages.mdwn b/doc/todo/flexible_relationships_between_pages.mdwn
index cb1ff2b1d..e09e03e9e 100644
--- a/doc/todo/flexible_relationships_between_pages.mdwn
+++ b/doc/todo/flexible_relationships_between_pages.mdwn
@@ -109,6 +109,8 @@ details
>> the [[matching different kinds of links]] discussion, but it was removed
>> in favor of per-type matchers. --[[chrysn]]
+ >>> note to self: should use the ``inject`` function to avoid `no strict refs`. --[[chrysn]]
+
* configuration location
i aimed for static configuration of the `block_names` in the setup file. this
diff --git a/doc/todo/manpages.mdwn b/doc/todo/manpages.mdwn
index 4120b8432..5449c0543 100644
--- a/doc/todo/manpages.mdwn
+++ b/doc/todo/manpages.mdwn
@@ -1,4 +1,7 @@
ikiwiki could support manpages (or general groff input files) and convert them
to HTML. --[[JoshTriplett]]
+> I wrote [[plugins/contrib/mandoc]] a while back. Just noticed
+> this wishlist item. --[[Schmonz]]
+
[[wishlist]]
diff --git a/doc/todo/pagespec__95__match__95__list_can_result_in_excessive_dependencies.mdwn b/doc/todo/pagespec__95__match__95__list_can_result_in_excessive_dependencies.mdwn
new file mode 100644
index 000000000..9781f7573
--- /dev/null
+++ b/doc/todo/pagespec__95__match__95__list_can_result_in_excessive_dependencies.mdwn
@@ -0,0 +1,41 @@
+If you say
+
+ pagespec_match_list($page, $spec, list => \@pages)
+
+with a small list `@pages` and a vague pagespec `$spec`, `$page` ends
+up depending on (every page that matches) `$spec`. For instance, if you
+already have a list of subpages of the sandbox, and you want to filter it
+to only the discussion pages, you can do that like
+
+ pagespec_match_list("sandbox", "*/discussion",
+ list => ["sandbox/discussion", "sandbox/things", "sandbox/stuff"])
+
+but then a change to *any* discussion page will refresh the sandbox.
+
+The [[bugs/trails depend on everything]] bug was a particularly bad
+case of this, with the widest possible pagespec `internal(*)`
+matched against a small list (the trail).
+
+In principle it would be nice if `pagespec_match_list` could detect
+this situation and make sandbox depend on only those subpages instead.
+
+Perhaps if the `list` parameter is given, `p_m_l` should add a
+by-name (simple) dependency on each page in that list, instead
+of a dependency on the pagespec? Or perhaps it should be documented
+that plugins can pass `deptype => 0` to take responsibility for
+their own dependency handling, and then do whatever they need?
+
+Uses of `pagespec_match_list` with a non-trivial list, in-tree,
+after [[bugs/trails depend on everything]] is fixed:
+
+* brokenlinks: really does need to depend on the whole pagespec,
+ but that could be done separately
+
+* inline: the inliner already depends on the inlined pages
+ so no extra dependency is needed
+
+* pagestats: same as brokenlinks
+
+My album plugin is in the same situation as inline.
+
+--[[smcv]]
diff --git a/doc/todo/should_use_a_standard_encoding_for_utf_chars_in_filenames.mdwn b/doc/todo/should_use_a_standard_encoding_for_utf_chars_in_filenames.mdwn
index a454d7da5..5a55fcce5 100644
--- a/doc/todo/should_use_a_standard_encoding_for_utf_chars_in_filenames.mdwn
+++ b/doc/todo/should_use_a_standard_encoding_for_utf_chars_in_filenames.mdwn
@@ -5,7 +5,7 @@ I hope it's a bug, not a feature and you fix it soon :) --[[Paweł|ptecza]]
> ikiwiki only allows a very limited set of characters raw in page names,
> this is done as a deny-by-default security thing. All other characters
-> need to be encoded in __code__ format, where "code" is the character
+> need to be encoded in `__code__` format, where "code" is the character
> number. This is normally done for you, but if you're adding a page
> manually, you need to handle it yourself. --[[Joey]]
@@ -48,6 +48,11 @@ I hope it's a bug, not a feature and you fix it soon :) --[[Paweł|ptecza]]
>>>>>> What's your locale? I have both pl\_PL (ISO-8859-2) and pl\_PL.UTF-8,
>>>>>> but I use pl\_PL. Is it wrong? --[[Paweł|ptecza]]
+>>>>>>> IkiWiki assumes UTF-8 throughout, so escaped filename characters
+>>>>>>> should be `__x____y____z__` where x, y, z are the bytes of the
+>>>>>>> UTF-8 encoding of the character. I don't know how to achieve that
+>>>>>>> from a non-UTF-8 locale. --[[smcv]]
+
>>>> Now, as to UTF7, in retrospect, using a standard encoding might be a
>>>> better idea than coming up with my own encoding for filenames. Can
>>>> you provide a pointer to a description to modified-UTF7? --[[Joey]]
@@ -58,4 +63,38 @@ I hope it's a bug, not a feature and you fix it soon :) --[[Paweł|ptecza]]
>>>>> There is a Perl [Unicode::IMAPUtf7](http://search.cpan.org/~fabpot/Unicode-IMAPUtf7-2.01/lib/Unicode/IMAPUtf7.pm)
>>>>> module at the CPAN, but probably it hasn't been debianized yet :( --[[Paweł|ptecza]]
+> Note: [libencode-imaputf7-perl][1] has made it into debian.
+>
+>> "IMAP UTF-7" uses & as an escape character, which seems like a recipe
+>> for shell injection vulnerabilities... so I would not recommend it
+>> for this particular use. --[[smcv]]
+
+> I would value some clarification, in the ikiwiki setup file I have
+>
+> wiki_file_chars: -[:alnum:][\p{Arabic}()]+/.:_
+>
+> Ikiwiki doesn't seem to produce any errors on the commandline for this, but
+> when I attempt to create a new post with Arabic characters from the web I get the following error :
+>
+> Error: Cannot decode string with wide characters at /usr/lib/x86_64-linux-gnu/perl/5.20/Encode.pm line 215.
+>
+> Should the modified regexp not be sufficient?
+> Ikiwiki 3.20140815.
+> --[[mhameed]]
+
+>> This seems like a bug: in principle non-ASCII in `wiki_file_chars` should work,
+>> in practice it does not. I would suggest either using the default
+>> `wiki_file_chars`, or digging into the code to find what is wrong.
+>> Solving this sort of bug usually requires having a clear picture of
+>> which "strings" are bytestrings, and which "strings" are Unicode. --[[smcv]]
+
+>>> mhameed confirmed on IRC that anarcat's [[patch]] from
+>>> [[bugs/garbled_non-ascii_characters_in_body_in_web_interface]] fixes this.
+>>> --[[smcv]]
+
+>>>> Merged that patch. Not marking this page as done, because the todo
+>>>> about using a standard encoding still stands (although I'm not at
+>>>> all sure there's an encoding that would be better). --[[smcv]]
+
[[wishlist]]
+[1]: https://packages.debian.org/search?suite=all&section=all&arch=any&searchon=names&keywords=libencode-imaputf7-perl
diff --git a/doc/todo/support_multi-row_table_headers.mdwn b/doc/todo/support_multi-row_table_headers.mdwn
new file mode 100644
index 000000000..6f13bbb23
--- /dev/null
+++ b/doc/todo/support_multi-row_table_headers.mdwn
@@ -0,0 +1,79 @@
+[[!template id=gitbranch branch=jon/table_headerblock author="[[Jon]]"]]
+It would be great if it were possible to support multi-row table headers in the [[plugins/table]] plugin, so you could do e.g.
+
+ \[[!table header="""
+ Name | Platform ||
+ | Windows | Mac | Linux
+ """ data="""
+ ikiwiki | ‧ | ✓ | ✓
+ """]]
+
+-- [[Jon]]
+
+[[!tag wishlist patch]]
+
+> This seems like weird overloading of the header parameter - it's
+> table data, except when it isn't.
+
+> > My first cut (now rebased out of existence I think) introduced a
+> > new "headerblock" parameter, but trying to clearly document the
+> > interaction of data/headerblock/header parameters was too awkward. -- [[Jon]]
+
+> Perhaps
+> something like this would be easier to use in practice?
+> (and also more featureful :-) )
+>
+> \[[!table header="2 rows 1 column" data="""
+> Name | Platform ||
+> | Windows | Mac | Linux
+> ikiwiki | no | yes | yes
+> Starcraft | yes | yes | via Wine
+> """]]
+
+> > Thanks for your prompt feedback!
+> >
+> > This would probably be good, yes, and having mixed row/column headers is
+> > definitely a nice-to-have. I don't relish the prospect of writing the parser
+> > but I see you've made a stab already...
+> >
+> > One thing you'd lose, but it's debatable whether this is valuable, would be
+> > to have the header defined in the directive, and the remaining table data
+> > declared in an external CSV. -- [[Jon]]
+
+> intended to be rendered like
+>
+> <table>
+> <tr><th>Name</th><th colspan=2>Platform</th>
+> <tr><th></th><th>Windows</th><th>Mac</th><th>Linux</th></tr>
+> <tr><th>ikiwiki</th><td>no</td><td>yes</td><td>yes</td></tr>
+> <tr><th>Starcraft</th><td>yes</td><td>yes</td><td>via Wine</td></tr>
+> </table>
+>
+> (Deliberately switching to plain-text to make it more obvious
+> what's a `<th>` and what's `<td>`.)
+>
+> Vague pseudocode for parsing `headers`
+> (possibly even valid Perl, I'm not sure):
+>
+> my ($header_rows, $header_cols);
+> while ($header =~ s/(\d*)\W*(\w+)//) {
+> my $n = ($1 or 0);
+> my $what = $2;
+> if ($what =~ m/rows?/) {
+> $header_rows = $n;
+> }
+> elif ($what =~ m/col(?:umn)?s?/) {
+> $header_cols = $n;
+> }
+> }
+>
+> and it would even be fairly easy to extend to support
+> `(first|last|)\W*(\d*)\W*(\w+)` later, e.g.
+> `header="1 row, first 2 cols, last column"`.
+>
+> --[[smcv]]
+
+> > To be clear I think your suggestion is a good one, but my hack has
+> > addressed my immediate need so it's the one I'm deploying at $ork for the
+> > time being. I'm unlikely to have time to implement this solution in the
+> > near future. -- [[Jon]]
diff --git a/doc/users/kjs.mdwn b/doc/users/kjs.mdwn
index cfe13c685..d65b663c8 100644
--- a/doc/users/kjs.mdwn
+++ b/doc/users/kjs.mdwn
@@ -5,4 +5,7 @@ Websites using ikiwiki:
* <http://img.kalleswork.net>
* <http://stockholm.kalleswork.net>
-Mostly using ikiwiki with the [[/plugins/contrib/album/]] and [[plugins/osm]] plugins.
+
+Mostly using ikiwiki with the [[/plugins/contrib/album/]] and [[plugins/osm]] plugins. My git repo with tweaks including the simplebw theme and changes to the [[plugins/contrib/album]] templates can be cloned via http at:
+
+* <http://src.kalleswork.net/ikiwiki.git>
diff --git a/doc/users/mhameed.mdwn b/doc/users/mhameed.mdwn
index b92145ce4..7b450f4c6 100644
--- a/doc/users/mhameed.mdwn
+++ b/doc/users/mhameed.mdwn
@@ -1 +1 @@
-Running ikiwiki on [homepage](http://mesarhameed.info/) also responsible for <http://addons.nvda-project.org>.
+Running ikiwiki on [personal site](http://mesarhameed.info/) also responsible for <http://addons.nvda-project.org> and <http://liblouis.org>.
diff --git a/doc/users/spalax.mdwn b/doc/users/spalax.mdwn
index 0727276a1..d5867ca9e 100644
--- a/doc/users/spalax.mdwn
+++ b/doc/users/spalax.mdwn
@@ -6,15 +6,14 @@ User of IkiWiki.
I wrote and maintain a few plugins, which are available here: [[https://atelier.gresille.org/projects/gresille-ikiwiki]].
-[[!map pages="plugins/contrib/* and ! plugins/contrib/*/* and link(.)"]]
+[[!map pages="plugins/contrib/* and ! plugins/contrib/*/* and author(spalax)"]]
# Wishlist
I have a few things in mind. Their status is something between *I will implement it someday* to *maybe someone could need this* or *I will need it if I implement this killer website I have in mind*.
-* [[plugins/contrib/jssearchtag]]: Create a page where user can tick or untick any combination of tag (s)he want, and dynamically sees an inline of the matching pages. I have to see to what extent the [[plugins/contrib/jssearchfield|jssearchfield]] plugin already does the same thing (not tested yet).
* [[plugins/contrib/htaccessmanager]]: Create a cgi page to manage a htaccess file.
-* Automatically add calendar pages (see the [[ikiwiki-calendar discussion|ikiwiki-calendar/discussion]]).
+* Automatically add calendar pages (WIP: see the [[ikiwiki-calendar discussion|ikiwiki-calendar/discussion]]).
# Contact
diff --git a/ikiwiki.spec b/ikiwiki.spec
index 74f6419db..83c110321 100644
--- a/ikiwiki.spec
+++ b/ikiwiki.spec
@@ -1,5 +1,5 @@
Name: ikiwiki
-Version: 3.20140613
+Version: 3.20140831
Release: 1%{?dist}
Summary: A wiki compiler
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index fb0d1bde5..1dbd77f7a 100644
--- a/po/ikiwiki.pot
+++ b/po/ikiwiki.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-25 16:44-0400\n"
+"POT-Creation-Date: 2014-08-31 14:18-0700\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"
@@ -28,7 +28,7 @@ msgstr ""
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
-#: ../IkiWiki/CGI.pm:222 ../IkiWiki/CGI.pm:373
+#: ../IkiWiki/CGI.pm:222 ../IkiWiki/CGI.pm:374
msgid "Your login session has expired."
msgstr ""
@@ -52,7 +52,7 @@ msgstr ""
msgid "You are banned."
msgstr ""
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1515
+#: ../IkiWiki/CGI.pm:465 ../IkiWiki/CGI.pm:466 ../IkiWiki.pm:1533
msgid "Error"
msgstr ""
@@ -120,16 +120,16 @@ msgstr ""
msgid "(feed entities escaped)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:556
+#: ../IkiWiki/Plugin/aggregate.pm:558
msgid "feed crashed XML::Feed!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:650
+#: ../IkiWiki/Plugin/aggregate.pm:652
#, perl-format
msgid "creating new page %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:678 ../IkiWiki/Plugin/edittemplate.pm:135
+#: ../IkiWiki/Plugin/aggregate.pm:682 ../IkiWiki/Plugin/edittemplate.pm:137
msgid "failed to process template:"
msgstr ""
@@ -171,15 +171,15 @@ msgstr ""
msgid "bad attachment filename"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:296
+#: ../IkiWiki/Plugin/attachment.pm:298
msgid "attachment upload"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:347
+#: ../IkiWiki/Plugin/attachment.pm:349
msgid "this attachment is not yet saved"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:365
+#: ../IkiWiki/Plugin/attachment.pm:367
msgid "just uploaded"
msgstr ""
@@ -333,8 +333,8 @@ msgid "creating %s"
msgstr ""
#: ../IkiWiki/Plugin/editpage.pm:337 ../IkiWiki/Plugin/editpage.pm:356
-#: ../IkiWiki/Plugin/editpage.pm:367 ../IkiWiki/Plugin/editpage.pm:412
-#: ../IkiWiki/Plugin/editpage.pm:454
+#: ../IkiWiki/Plugin/editpage.pm:367 ../IkiWiki/Plugin/editpage.pm:414
+#: ../IkiWiki/Plugin/editpage.pm:456
#, perl-format
msgid "editing %s"
msgstr ""
@@ -378,26 +378,26 @@ msgstr ""
msgid "%s is an attachment, not a page."
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:828 ../IkiWiki/Plugin/git.pm:891
-#: ../IkiWiki.pm:1735
+#: ../IkiWiki/Plugin/git.pm:839 ../IkiWiki/Plugin/git.pm:902
+#: ../IkiWiki.pm:1753
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:850
+#: ../IkiWiki/Plugin/git.pm:861
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:854
+#: ../IkiWiki/Plugin/git.pm:865
msgid "you are not allowed to change file modes"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:924
+#: ../IkiWiki/Plugin/git.pm:935
msgid "you are not allowed to revert a merge"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:941
+#: ../IkiWiki/Plugin/git.pm:952
#, perl-format
msgid "Failed to revert commit %s"
msgstr ""
@@ -415,17 +415,17 @@ msgstr ""
msgid "prog not a valid graphviz program"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:83
+#: ../IkiWiki/Plugin/highlight.pm:91
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:94
+#: ../IkiWiki/Plugin/highlight.pm:102
#, perl-format
msgid "Source code: %s"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:180
+#: ../IkiWiki/Plugin/highlight.pm:198
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -489,12 +489,12 @@ msgstr ""
msgid "Add a new post titled:"
msgstr ""
-#: ../IkiWiki/Plugin/inline.pm:394 ../IkiWiki/Plugin/template.pm:44
+#: ../IkiWiki/Plugin/inline.pm:396 ../IkiWiki/Plugin/template.pm:46
#, perl-format
msgid "failed to process template %s"
msgstr ""
-#: ../IkiWiki/Plugin/inline.pm:733
+#: ../IkiWiki/Plugin/inline.pm:735
msgid "RPC::XML::Client not found, not pinging"
msgstr ""
@@ -516,7 +516,7 @@ msgstr ""
msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed"
msgstr ""
-#: ../IkiWiki/Plugin/mdwn.pm:96
+#: ../IkiWiki/Plugin/mdwn.pm:97
#, perl-format
msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
msgstr ""
@@ -673,70 +673,70 @@ msgid ""
"po_link_to=default"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:467
+#: ../IkiWiki/Plugin/po.pm:473
msgid "updated PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:490
+#: ../IkiWiki/Plugin/po.pm:496
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:510
+#: ../IkiWiki/Plugin/po.pm:516
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:956
+#: ../IkiWiki/Plugin/po.pm:975
#, perl-format
msgid "POT file (%s) does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:970
+#: ../IkiWiki/Plugin/po.pm:989
#, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:998
#, perl-format
msgid "failed to update %s"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:985
+#: ../IkiWiki/Plugin/po.pm:1004
#, perl-format
msgid "failed to copy the POT file to %s"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1021
+#: ../IkiWiki/Plugin/po.pm:1040
msgid "N/A"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1032
+#: ../IkiWiki/Plugin/po.pm:1051
#, perl-format
msgid "failed to translate %s"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1111
+#: ../IkiWiki/Plugin/po.pm:1134
msgid "removed obsolete PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1168 ../IkiWiki/Plugin/po.pm:1180
-#: ../IkiWiki/Plugin/po.pm:1219
+#: ../IkiWiki/Plugin/po.pm:1191 ../IkiWiki/Plugin/po.pm:1203
+#: ../IkiWiki/Plugin/po.pm:1242
#, perl-format
msgid "failed to write %s"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1178
+#: ../IkiWiki/Plugin/po.pm:1201
msgid "failed to translate"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1231
+#: ../IkiWiki/Plugin/po.pm:1254
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1274
+#: ../IkiWiki/Plugin/po.pm:1297
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -1274,54 +1274,54 @@ msgstr ""
msgid "Discussion"
msgstr ""
-#: ../IkiWiki.pm:587
+#: ../IkiWiki.pm:595
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
-#: ../IkiWiki.pm:635
+#: ../IkiWiki.pm:643
#, perl-format
msgid "unsupported umask setting %s"
msgstr ""
-#: ../IkiWiki.pm:675
+#: ../IkiWiki.pm:683
msgid "cannot use multiple rcs plugins"
msgstr ""
-#: ../IkiWiki.pm:705
+#: ../IkiWiki.pm:713
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
-#: ../IkiWiki.pm:1497
+#: ../IkiWiki.pm:1515
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr ""
-#: ../IkiWiki.pm:1691
+#: ../IkiWiki.pm:1709
#, perl-format
msgid "bad file name %s"
msgstr ""
-#: ../IkiWiki.pm:2000
+#: ../IkiWiki.pm:2019
#, perl-format
msgid "template %s not found"
msgstr ""
-#: ../IkiWiki.pm:2250
+#: ../IkiWiki.pm:2269
msgid "yes"
msgstr ""
-#: ../IkiWiki.pm:2334
+#: ../IkiWiki.pm:2354
#, perl-format
msgid "invalid sort type %s"
msgstr ""
-#: ../IkiWiki.pm:2355
+#: ../IkiWiki.pm:2375
#, perl-format
msgid "unknown sort type %s"
msgstr ""
-#: ../IkiWiki.pm:2491
+#: ../IkiWiki.pm:2511
#, perl-format
msgid "cannot match pages: %s"
msgstr ""
diff --git a/underlays/attachment/ikiwiki/jquery-ui.full.css b/underlays/attachment/ikiwiki/jquery-ui.css
index ad212daef..ad212daef 100644
--- a/underlays/attachment/ikiwiki/jquery-ui.full.css
+++ b/underlays/attachment/ikiwiki/jquery-ui.css
diff --git a/underlays/attachment/ikiwiki/jquery-ui.full.js b/underlays/attachment/ikiwiki/jquery-ui.js
index 96b2ea624..96b2ea624 100644
--- a/underlays/attachment/ikiwiki/jquery-ui.full.js
+++ b/underlays/attachment/ikiwiki/jquery-ui.js
diff --git a/underlays/attachment/ikiwiki/jquery.tmpl.full.js b/underlays/attachment/ikiwiki/jquery.tmpl.js
index 1c5b2d62f..1c5b2d62f 100644
--- a/underlays/attachment/ikiwiki/jquery.tmpl.full.js
+++ b/underlays/attachment/ikiwiki/jquery.tmpl.js
diff --git a/underlays/jquery/ikiwiki/jquery.full.js b/underlays/jquery/ikiwiki/jquery.js
index f3201aacb..f3201aacb 100644
--- a/underlays/jquery/ikiwiki/jquery.full.js
+++ b/underlays/jquery/ikiwiki/jquery.js