]> Lady’s Gitweb - Gitweb/commitdiff
gitweb: Easier adding/changing parameters to current URL
authorJakub Narebski <redacted>
Thu, 1 Nov 2007 12:06:27 +0000 (13:06 +0100)
committerLady <redacted>
Mon, 6 Apr 2026 04:07:12 +0000 (00:07 -0400)
Add boolean option '-replay' to href() subroutine, which is used to
generate links in gitweb.  This option "replays" current URL,
overriding it with provided parameters.  It means that current value
of each CGI parameter is used unless otherwise provided.

This change is meant to make it easier to generate links which differ
from current page URL only by one parameter, for example the same view
but sorted by different column:
  href(-replay=>1, order=>"age")
or view which differs by some option, e.g. in log views
  href(-replay=>1, extra_options=>"--no-merges")
or alternate view of the same object, e.g. in the 'blob' view
  href(-replay=>1, action=>"blob_plain")

Actual use of this functionality is left for later.

Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
gitweb.perl

index dd81a9e60d618c60244dc8c3a508eb8c9f423331c1668e9c01afb2ec4cf53ed0..c738fa999b4fae7fa297aea6538e22988ea85ef17b9d5c1d6d332640416ffe30 100755 (executable)
@@ -612,6 +612,15 @@ sub href(%) {
        );
        my %mapping = @mapping;
 
+       if ($params{-replay}) {
+               while (my ($name, $symbol) = each %mapping) {
+                       if (!exists $params{$name}) {
+                               # to allow for multivalued params we use arrayref form
+                               $params{$name} = [ $cgi->param($symbol) ];
+                       }
+               }
+       }
+
        $params{'project'} = $project unless exists $params{'project'};
 
        my ($use_pathinfo) = gitweb_check_feature('pathinfo');
This page took 0.247455 seconds and 4 git commands to generate.