Adds previous/next links to issue (#2850).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8488 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2012-01-03 20:09:44 +00:00
parent bbe1ff3ec9
commit b1504ceb43
8 changed files with 172 additions and 3 deletions
+18 -1
View File
@@ -120,7 +120,10 @@ class IssuesController < ApplicationController
@priorities = IssuePriority.active
@time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project)
respond_to do |format|
format.html { render :template => 'issues/show' }
format.html {
retrieve_previous_and_next_issue_ids
render :template => 'issues/show'
}
format.api
format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' }
format.pdf { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
@@ -277,6 +280,20 @@ private
render_404
end
def retrieve_previous_and_next_issue_ids
retrieve_query_from_session
if @query
sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria)
sort_update(@query.sortable_columns, 'issues_index_sort')
limit = 500
issue_ids = @query.issue_ids(:order => sort_clause, :limit => (limit + 1))
if (idx = issue_ids.index(@issue.id.to_s)) && idx < limit
@prev_issue_id = issue_ids[idx - 1].to_i if idx > 0
@next_issue_id = issue_ids[idx + 1].to_i if idx < (issue_ids.size - 1)
end
end
end
# Used by #edit and #update to set some common instance variables
# from the params
# TODO: Refactor, not everything in here is needed by #edit
+12
View File
@@ -92,6 +92,18 @@ module QueriesHelper
end
end
def retrieve_query_from_session
if session[:query]
@query = Query.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
if session[:query].has_key?(:project_id)
@query.project_id = session[:query][:project_id]
else
@query.project = @project
end
@query
end
end
def build_query_from_params
if params[:fields] || params[:f]
@query.filters = {}
+2 -1
View File
@@ -160,7 +160,8 @@ module SortHelper
# sort_clause.
# - criteria can be either an array or a hash of allowed keys
#
def sort_update(criteria)
def sort_update(criteria, sort_name=nil)
sort_name ||= self.sort_name
@sort_criteria = SortCriteria.new
@sort_criteria.available_criteria = criteria
@sort_criteria.from_param(params[:sort] || session[sort_name])
+8 -1
View File
@@ -3,7 +3,14 @@
<h2><%= issue_heading(@issue) %></h2>
<div class="<%= @issue.css_classes %> details">
<%= avatar(@issue.author, :size => "50") %>
<% if @prev_issue_id || @next_issue_id %>
<div class="next-prev-links contextual">
<%= link_to_if @prev_issue_id, '&#171; Previous', issue_path(@prev_issue_id), :title => "##{@prev_issue_id}" %> |
<%= link_to_if @next_issue_id, 'Next &#187;', issue_path(@next_issue_id), :title => "##{@next_issue_id}" %>
</div>
<% end %>
<%= avatar(@issue.author, :size => "50") %>
<div class="subject">
<%= render_issue_subject_with_tree(@issue) %>