Commit dc016fef3983a956bb3f98a70b8db6490e949605
1 parent
c8e3d319
Exists in
master
and in
4 other branches
Add redirect from Issue#id to Issue#iid
Showing
1 changed file
with
21 additions
and
1 deletions
Show diff stats
app/controllers/projects/issues_controller.rb
| @@ -91,7 +91,11 @@ class Projects::IssuesController < Projects::ApplicationController | @@ -91,7 +91,11 @@ class Projects::IssuesController < Projects::ApplicationController | ||
| 91 | protected | 91 | protected |
| 92 | 92 | ||
| 93 | def issue | 93 | def issue |
| 94 | - @issue ||= @project.issues.find_by_iid!(params[:id]) | 94 | + @issue ||= begin |
| 95 | + @project.issues.find_by_iid!(params[:id]) | ||
| 96 | + rescue ActiveRecord::RecordNotFound | ||
| 97 | + redirect_old | ||
| 98 | + end | ||
| 95 | end | 99 | end |
| 96 | 100 | ||
| 97 | def authorize_modify_issue! | 101 | def authorize_modify_issue! |
| @@ -109,4 +113,20 @@ class Projects::IssuesController < Projects::ApplicationController | @@ -109,4 +113,20 @@ class Projects::IssuesController < Projects::ApplicationController | ||
| 109 | def issues_filtered | 113 | def issues_filtered |
| 110 | @issues = Issues::ListContext.new(project, current_user, params).execute | 114 | @issues = Issues::ListContext.new(project, current_user, params).execute |
| 111 | end | 115 | end |
| 116 | + | ||
| 117 | + # Since iids are implemented only in 6.1 | ||
| 118 | + # user may navigate to issue page using old global ids. | ||
| 119 | + # | ||
| 120 | + # To prevent 404 errors we provide a redirect to correct iids until 7.0 release | ||
| 121 | + # | ||
| 122 | + def redirect_old | ||
| 123 | + issue = @project.issues.find_by_id(params[:id]) | ||
| 124 | + | ||
| 125 | + if issue | ||
| 126 | + redirect_to project_issue_path(@project, issue) | ||
| 127 | + return | ||
| 128 | + else | ||
| 129 | + raise ActiveRecord::RecordNotFound.new | ||
| 130 | + end | ||
| 131 | + end | ||
| 112 | end | 132 | end |