X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/bb93fccf0690344aa77f9538a508959a6de09847..0de3074c7f0dbe780919a53a057ee53b31d5e233:/IkiWiki/Plugin/mirrorlist.pm?ds=inline

diff --git a/IkiWiki/Plugin/mirrorlist.pm b/IkiWiki/Plugin/mirrorlist.pm
index b726386f6..b7e532485 100644
--- a/IkiWiki/Plugin/mirrorlist.pm
+++ b/IkiWiki/Plugin/mirrorlist.pm
@@ -3,7 +3,7 @@ package IkiWiki::Plugin::mirrorlist;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 
 sub import {
 	hook(type => "getsetup", id => "mirrorlist", call => \&getsetup);
@@ -15,6 +15,7 @@ sub getsetup () {
 		plugin => {
 			safe => 1,
 			rebuild => 1,
+			section => "web",
 		},
 		mirrorlist => {
 			type => "string",
@@ -23,13 +24,27 @@ 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 (@) {
 	my %params=@_;
         my $template=$params{template};
 	
-	if ($template->query(name => "extrafooter")) {
+	if ($template->query(name => "extrafooter") &&
+	    keys %{$config{mirrorlist}} > 0) {
 		my $value=$template->param("extrafooter");
 		$value.=mirrorlist($params{page});
 		$template->param(extrafooter => $value);
@@ -38,17 +53,19 @@ sub pagetemplate (@) {
 
 sub mirrorlist ($) {
 	my $page=shift;
-	return "<p>".
+	return ($config{html5} ? '<nav id="mirrorlist">' : '<div>').
 		(keys %{$config{mirrorlist}} > 1 ? gettext("Mirrors") : gettext("Mirror")).
 		": ".
 		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}}
 		).
-		"</p>";
+		($config{html5} ? '</nav>' : '</div>');
 }
 
 1