X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ee1ad53c4c2710aa7ded61bdc56f3a8cce514f22..fe001bd7bf8d16ae998aa66513e3d2276ab9749b:/IkiWiki/Plugin/mirrorlist.pm?ds=sidebyside

diff --git a/IkiWiki/Plugin/mirrorlist.pm b/IkiWiki/Plugin/mirrorlist.pm
index 3997e6fef..b7e532485 100644
--- a/IkiWiki/Plugin/mirrorlist.pm
+++ b/IkiWiki/Plugin/mirrorlist.pm
@@ -3,33 +3,69 @@ package IkiWiki::Plugin::mirrorlist;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 
-sub import { #{{{
+sub import {
+	hook(type => "getsetup", id => "mirrorlist", call => \&getsetup);
 	hook(type => "pagetemplate", id => "mirrorlist", call => \&pagetemplate);
-} # }}}
+}
 
-sub pagetemplate (@) { #{{{
+sub getsetup () {
+	return
+		plugin => {
+			safe => 1,
+			rebuild => 1,
+			section => "web",
+		},
+		mirrorlist => {
+			type => "string",
+			example => {},
+			description => "list of mirrors",
+			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};
 	
-	$template->param(extrafooter => mirrorlist($params{page}))
-		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);
+	}
+}
 
-sub mirrorlist ($) { #{{{
+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