mirror of
https://github.com/git/git.git
synced 2024-11-20 16:34:04 +01:00
gitweb: generate parent..current URLs
If use_pathinfo is enabled, href now creates links that contain paths in the form $project/$action/oldhash:/oldname..newhash:/newname for actions that use hash_parent etc. If any of the filename contains two consecutive dots, it's kept as a CGI parameter since the resulting path would otherwise be ambiguous. Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com> Acked-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b0be3838bb
commit
8db49a7f6f
@ -766,6 +766,7 @@ sub href (%) {
|
||||
# try to put as many parameters as possible in PATH_INFO:
|
||||
# - project name
|
||||
# - action
|
||||
# - hash_parent or hash_parent_base:/file_parent
|
||||
# - hash or hash_base:/filename
|
||||
|
||||
# When the script is the root DirectoryIndex for the domain,
|
||||
@ -785,17 +786,36 @@ sub href (%) {
|
||||
delete $params{'action'};
|
||||
}
|
||||
|
||||
# Finally, we put either hash_base:/file_name or hash
|
||||
# Next, we put hash_parent_base:/file_parent..hash_base:/file_name,
|
||||
# stripping nonexistent or useless pieces
|
||||
$href .= "/" if ($params{'hash_base'} || $params{'hash_parent_base'}
|
||||
|| $params{'hash_parent'} || $params{'hash'});
|
||||
if (defined $params{'hash_base'}) {
|
||||
$href .= "/".esc_url($params{'hash_base'});
|
||||
if (defined $params{'file_name'}) {
|
||||
if (defined $params{'hash_parent_base'}) {
|
||||
$href .= esc_url($params{'hash_parent_base'});
|
||||
# skip the file_parent if it's the same as the file_name
|
||||
delete $params{'file_parent'} if $params{'file_parent'} eq $params{'file_name'};
|
||||
if (defined $params{'file_parent'} && $params{'file_parent'} !~ /\.\./) {
|
||||
$href .= ":/".esc_url($params{'file_parent'});
|
||||
delete $params{'file_parent'};
|
||||
}
|
||||
$href .= "..";
|
||||
delete $params{'hash_parent'};
|
||||
delete $params{'hash_parent_base'};
|
||||
} elsif (defined $params{'hash_parent'}) {
|
||||
$href .= esc_url($params{'hash_parent'}). "..";
|
||||
delete $params{'hash_parent'};
|
||||
}
|
||||
|
||||
$href .= esc_url($params{'hash_base'});
|
||||
if (defined $params{'file_name'} && $params{'file_name'} !~ /\.\./) {
|
||||
$href .= ":/".esc_url($params{'file_name'});
|
||||
delete $params{'file_name'};
|
||||
}
|
||||
delete $params{'hash'};
|
||||
delete $params{'hash_base'};
|
||||
} elsif (defined $params{'hash'}) {
|
||||
$href .= "/".esc_url($params{'hash'});
|
||||
$href .= esc_url($params{'hash'});
|
||||
delete $params{'hash'};
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user