mirrorlist: new mirrorlist_use_cgi boolean setting.
authorintrigeri <intrigeri@boum.org>
Mon, 20 Dec 2010 14:21:49 +0000 (15:21 +0100)
committerintrigeri <intrigeri@boum.org>
Fri, 27 Apr 2012 22:18:59 +0000 (00:18 +0200)
When set to true, let each mirror's ikiwiki CGI find out the correct target page
url themselves.

This resolves the usecase described on
[[todo/mirrorlist_with_per-mirror_usedirs_settings]].

Signed-off-by: intrigeri <intrigeri@boum.org>
IkiWiki/Plugin/mirrorlist.pm
doc/plugins/mirrorlist.mdwn

index f54d94ad52366110e29f20575672bcd0fcc4413c..b7e53248500d8a31337e582e81d24a5870ebb074 100644 (file)
@@ -24,6 +24,19 @@ sub getsetup () {
                        safe => 1,
                        rebuild => 1,
                },
+               mirrorlist_use_cgi => {
+                       type => 'boolean',
+                       example => 1,
+                       description => "generate links that point to the mirrors' ikiwiki CGI",
+                       safe => 1,
+                       rebuild => 1,
+               },
+}
+
+sub checkconfig () {
+       if (! defined $config{mirrorlist_use_cgi}) {
+               $config{mirrorlist_use_cgi}=0;
+       }
 }
 
 sub pagetemplate (@) {
@@ -46,7 +59,9 @@ sub mirrorlist ($) {
                join(", ",
                        map { 
                                qq{<a href="}.
-                               $config{mirrorlist}->{$_}."/".urlto($page, "").
+                               ( $config{mirrorlist_use_cgi} ?
+                                 $config{mirrorlist}->{$_}."?do=goto&page=$page" :
+                                 $config{mirrorlist}->{$_}."/".urlto($page, "") ).
                                qq{">$_</a>}
                        } keys %{$config{mirrorlist}}
                ).
index aedc1f4a063b6ba346c16031d51c4e31fcc61229..b636858132b74b12294279aba1c4afa882f679b1 100644 (file)
@@ -5,3 +5,18 @@ This plugin allows adding links a list of mirrors to each page in the
 wiki. For each mirror, a name and an url should be specified. Pages are
 assumed to exist in the same location under the specified url on each
 mirror.
+
+In case the `usedirs` setting is not the same on all your mirrors, or
+if it is not the same on your local wiki as on the mirror a
+possibility is to let each mirror's ikiwiki CGI find out the correct
+target page url themselves; in that case the mirrors urls must be set
+to their ikiwiki CGI url instead of their base url. Example:
+
+       mirrorlist_use_cgi => 1,
+       mirrorlist => {
+               'mirror1' => 'https://mirror.example.org/ikiwiki.cgi',
+               'mirror2' => 'https://mirror2.example.org/ikiwiki.cgi',
+       },
+
+The mirrors must have the ikiwiki CGI and the [[goto]] plugin enabled
+for this to work.