remove all accents from pager links master mjesec/master origin/trunk
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 25 May 2009 13:49:51 +0000 (13:49 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 25 May 2009 13:49:51 +0000 (13:49 +0000)
git-svn-id: file:///home/dpavlin/private/svn/webpac/trunk@789 13eb9ef6-21d5-0310-b721-a9d68796d827

WebPac.pm

index f59c73b..872aec0 100644 (file)
--- a/WebPac.pm
+++ b/WebPac.pm
@@ -143,16 +143,37 @@ sub make_pager($$$) {
        #
        my ($pager_prev,$pager_next, $pager_jump) = ('','','');
 
        #
        my ($pager_prev,$pager_next, $pager_jump) = ('','','');
 
-       my $nav_fmt=qq{ <a href="%s">%s</a> };
+       sub url_with_params {
+               my ($q,$text) = @_;
+               my %param = $q->Vars;
+               my @p;
+               foreach my $p ( keys %param ) {
+                       my $v = $param{$p};
+                       next unless defined $v and length($v) > 0;
+                       if ( $v =~ m{\0} ) {
+                               push @p, $p . '=' . my_unac_string($CHARSET, $_)
+                                       foreach (split(/\0/, $v ));
+                       } else {
+                               push @p, $p . '=' . my_unac_string($CHARSET, $v);
+                       }
+               }
+
+               return
+                 qq{ <a href="}
+               . $q->url( -relative => 1 )
+               . '?'
+               . join(';', @p)
+               . qq{">$text</a> };
+       }
 
        if ($pager->current_page() > $pager->first_page) {
                $q->param('PAGER_offset', $pager->current_page - 1);
 
        if ($pager->current_page() > $pager->first_page) {
                $q->param('PAGER_offset', $pager->current_page - 1);
-               $pager_prev .= sprintf($nav_fmt,$q->url(-relative=>1, -query=>1),'&lt;&lt;');
+               $pager_prev .= url_with_params( $q, '&lt;&lt;');
        }
 
        if ($pager->previous_set) {
                $q->param('PAGER_offset', $pager->previous_set);
        }
 
        if ($pager->previous_set) {
                $q->param('PAGER_offset', $pager->previous_set);
-               $pager_prev .= sprintf($nav_fmt,$q->url(-relative=>1, -query=>1),'..');
+               $pager_prev .= url_with_params( $q,'..');
        }
 
 
        }
 
 
@@ -162,18 +183,18 @@ sub make_pager($$$) {
                        $pager_jump .= "<b>$p</b> ";
                } else {
                        $q->param('PAGER_offset', $p);
                        $pager_jump .= "<b>$p</b> ";
                } else {
                        $q->param('PAGER_offset', $p);
-                       $pager_jump .= sprintf($nav_fmt,$q->url(-relative=>1, -query=>1),$p);
+                       $pager_jump .= url_with_params($q,$p);
                }
        }
 
        if ($pager->next_set) {
                $q->param('PAGER_offset', $pager->next_set);
                }
        }
 
        if ($pager->next_set) {
                $q->param('PAGER_offset', $pager->next_set);
-               $pager_next .= sprintf($nav_fmt,$q->url(-relative=>1, -query=>1),'..');
+               $pager_next .= url_with_params($q,'..');
        }
 
        if ($pager->current_page() < $pager->last_page) {
                $q->param('PAGER_offset', $pager->current_page + 1);
        }
 
        if ($pager->current_page() < $pager->last_page) {
                $q->param('PAGER_offset', $pager->current_page + 1);
-               $pager_next .= sprintf($nav_fmt,$q->url(-relative=>1, -query=>1),'&gt;&gt;');
+               $pager_next .= url_with_params($q,'&gt;&gt;');
        }
 
        $tmpl->param('PAGER_PREV', $pager_prev);
        }
 
        $tmpl->param('PAGER_PREV', $pager_prev);