put the problematic patch in a toggleable to make discussion more visible
[ikiwiki] / doc / todo / mirrorlist_with_per-mirror_usedirs_settings.mdwn
1 I've got a wiki that is built at two places:
2
3 * a static copy, aimed at being viewed without any web server, using
4   a web browser's `file:///` urls => usedirs is disabled to get nice
5   and working links
6 * an online copy, with usedirs enabled in order to benefit from the
7   language negotiation using the po plugin
8
9 I need to use mirrorlist on the static copy, so that one can easily
10 reach the online, possibly updated, pages. But as documented, "pages are
11 assumed to exist in the same location under the specified url on each
12 mirror", so the generated urls are wrong.
13
14 My `mirrorlist` branch contains a patch that allows one to configure usedirs
15 per-mirror. Note: the old configuration format is still supported, so this should
16 not break existing wikis.
17
18 OT: as a bonus, this branch contains a patch to support {hashes,arrays} of
19 {hashes,arrays} in `$config`, which I missed a bit when writing the po plugin,
20 and decided this time it was really needed to implement this feature.
21
22 --[[intrigeri]]
23
24 > Ping. --[[intrigeri]]
25
26 [[!tag patch]]
27
28 >> (I'm not an ikiwiki committer, opinions may vary.)
29 >>
30 >> This would be easier to review if there weren't a million merges from
31 >> master; perhaps either leave a branch as-is, or rebase it, or merge
32 >> only at "significant" times like after a release?
33 >>
34 >> I believe Joey's main objection to complex $config entries is that
35 >> it's not at all clear what [[plugins/websetup]] would do with them.
36 >> Would something like this make a reasonable alternative?
37 >>
38 >>      $config{mirrorlist} = ["nousedirs|file:///home/intrigeri/wiki",
39 >>          "usedirs|http://example.com/wiki", "http://example.net"];
40 >>
41 >> From how I understand tainting, this:
42 >>
43 >>      $untainted{$_} = possibly_foolish_untaint($tainted->{$_})
44 >>
45 >> probably needs to untaint the key too:
46 >>
47 >>      my $key = possibly_foolish_untaint($_);
48 >>      $untainted{$key} = possibly_foolish_untaint($tainted->{key});
49 >>
50 >> --[[smcv]]