diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-12-25 06:14:05 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-12-25 06:14:05 +0300 |
commit | c8ba5c2d58b882fd7cd5342a42158bb5f810fd60 (patch) | |
tree | c1584cc5235be75b3c6ef1a3e2a46d5ff33a73c8 /lib/extracts_path.rb | |
parent | 49e73f8ac1f9b9dabc900a56e98a1cc83b40dc49 (diff) | |
download | gitlab-ce-c8ba5c2d58b882fd7cd5342a42158bb5f810fd60.tar.gz |
Fix routing issues when navigating over tree, commits etc
Diffstat (limited to 'lib/extracts_path.rb')
-rw-r--r-- | lib/extracts_path.rb | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/extracts_path.rb b/lib/extracts_path.rb index b60dfd036e1..220e3d2271f 100644 --- a/lib/extracts_path.rb +++ b/lib/extracts_path.rb @@ -33,6 +33,9 @@ module ExtractsPath # extract_ref("v2.0.0/README.md") # # => ['v2.0.0', 'README.md'] # + # extract_ref('/gitlab/vagrant/tree/master/app/models/project.rb') + # # => ['master', 'app/models/project.rb'] + # # extract_ref('issues/1234/app/models/project.rb') # # => ['issues/1234', 'app/models/project.rb'] # @@ -47,6 +50,13 @@ module ExtractsPath return pair unless @project + # Remove project, actions and all other staff from path + input.gsub!("/#{@project.path_with_namespace}", "") + input.gsub!(/^\/(tree|commits|blame|blob)\//, "") # remove actions + input.gsub!(/\?.*$/, "") # remove stamps suffix + input.gsub!(/.atom$/, "") # remove rss feed + input.gsub!(/\/edit$/, "") # remove edit route part + if input.match(/^([[:alnum:]]{40})(.+)/) # If the ref appears to be a SHA, we're done, just split the string pair = $~.captures @@ -98,7 +108,7 @@ module ExtractsPath request.format = :atom end - @ref, @path = extract_ref(params[:id]) + @ref, @path = extract_ref(request.fullpath) @id = File.join(@ref, @path) |