* Use POST for poll to avoid some robots.
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Thu, 14 Dec 2006 19:04:42 +0000 (19:04 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Thu, 14 Dec 2006 19:04:42 +0000 (19:04 +0000)
IkiWiki/Plugin/poll.pm
debian/changelog
doc/bugs/poll_plugin_uses_GET.mdwn

index 320d2fa775e6660736608b999a202d3c664e5cbb..56034b60ad766654c599849c16c965e93f7162d8 100644 (file)
@@ -4,7 +4,6 @@ package IkiWiki::Plugin::poll;
 use warnings;
 use strict;
 use IkiWiki;
-use URI;
 
 sub import { #{{{
        hook(type => "preprocess", id => "poll", call => \&preprocess);
@@ -45,24 +44,28 @@ sub preprocess (@) { #{{{
 
        my $ret="";
        foreach my $choice (@choices) {
+               if ($open && exists $config{cgiurl}) {
+                       $ret.="<form action=\"$config{cgiurl}\">\n";
+               }
                my $percent=$total > 0 ? int($choices{$choice} / $total * 100) : 0;
+               $ret.="<p>\n";
                if ($showpercent) {
-                       $ret.="$choice ($percent%) ";
+                       $ret.="$choice ($percent%)\n";
                }
                else {
-                       $ret.="$choice ($choices{$choice}) ";
+                       $ret.="$choice ($choices{$choice})\n";
+               }
+               if ($open && exists $config{cgiurl}) {
+                       $ret.="<input type=\"hidden\" name=\"do\" value=\"poll\" />\n";
+                       $ret.="<input type=\"hidden\" name=\"num\" value=\"$pagenum{$params{page}}\" />\n";
+                       $ret.="<input type=\"hidden\" name=\"page\" value=\"$params{page}\" />\n";
+                       $ret.="<input type=\"hidden\" name=\"choice\" value=\"$choice\" />\n";
+                       $ret.="<input type=\"submit\" value=\"vote\" />\n";
                }
+               $ret.="</p>\n<hr class=poll align=left width=\"$percent%\"/>\n";
                if ($open && exists $config{cgiurl}) {
-                       my $url=URI->new($config{cgiurl});
-                       $url->query_form(
-                               "do" => "poll",
-                               "num" => $pagenum{$params{page}}, 
-                               "page" => $params{page}, 
-                               "choice" => $choice,
-                       );
-                       $ret.="<a class=pollbutton href=\"$url\">vote</a>";
+                       $ret.="</form>\n";
                }
-               $ret.="<br />\n<hr class=poll align=left width=\"$percent%\"/>\n";
        }
        if ($showtotal) {
                $ret.="<span>Total votes: $total</span>\n";
index b2cc9c72512b7eb0f3a084d953f78928d26d1bb0..37e37111dd97fc1238bdeee29031a703efe47273 100644 (file)
@@ -1,8 +1,9 @@
 ikiwiki (1.36) UNRELEASED; urgency=low
 
   * Fix various links on the hyperestradier pages.
+  * Use POST for poll to avoid some robots.
 
- -- Joey Hess <joeyh@debian.org>  Mon,  4 Dec 2006 11:50:27 +0100
+ -- Joey Hess <joeyh@debian.org>  Thu, 14 Dec 2006 14:04:25 -0500
 
 ikiwiki (1.35) unstable; urgency=low
 
index 786c7289082d2e163d00f2f67b5b96c249eb1718..9adb6d8705cb237eed0658223988c0e46137c6b1 100644 (file)
@@ -1 +1,4 @@
-The [[plugins/poll]] plugin uses GET for the vote links.  As a result, the [[news/openid]] poll has a number of votes from Google. :)
\ No newline at end of file
+The [[plugins/poll]] plugin uses GET for the vote links.  As a result, the
+[[news/openid]] poll has a number of votes from Google. :)
+
+[[bugs/done]] -- [[Joey]]