]> Lady’s Gitweb - Gitweb/blobdiff - gitweb.perl
gitweb: embed snapshot format parameter in PATH_INFO
[Gitweb] / gitweb.perl
index 280319a4b3b7215d7015019e23045c64dbfd29af8af64003a464b12cece16040..8db5c344b10a643180b99129a0203ec3261accf548f6a1433f89fd6ee0cc694c 100755 (executable)
@@ -812,6 +812,7 @@ sub href (%) {
                #   - action
                #   - hash_parent or hash_parent_base:/file_parent
                #   - hash or hash_base:/filename
+               #   - the snapshot_format as an appropriate suffix
 
                # When the script is the root DirectoryIndex for the domain,
                # $href here would be something like http://gitweb.example.com/
@@ -823,6 +824,10 @@ sub href (%) {
                $href .= "/".esc_url($params{'project'}) if defined $params{'project'};
                delete $params{'project'};
 
+               # since we destructively absorb parameters, we keep this
+               # boolean that remembers if we're handling a snapshot
+               my $is_snapshot = $params{'action'} eq 'snapshot';
+
                # Summary just uses the project path URL, any other action is
                # added to the URL
                if (defined $params{'action'}) {
@@ -862,6 +867,18 @@ sub href (%) {
                        $href .= esc_url($params{'hash'});
                        delete $params{'hash'};
                }
+
+               # If the action was a snapshot, we can absorb the
+               # snapshot_format parameter too
+               if ($is_snapshot) {
+                       my $fmt = $params{'snapshot_format'};
+                       # snapshot_format should always be defined when href()
+                       # is called, but just in case some code forgets, we
+                       # fall back to the default
+                       $fmt ||= $snapshot_fmts[0];
+                       $href .= $known_snapshot_formats{$fmt}{'suffix'};
+                       delete $params{'snapshot_format'};
+               }
        }
 
        # now encode the parameters explicitly
This page took 0.198512 seconds and 4 git commands to generate.