Patch #3357 ยป repo_browser_path_versions.diff
app/helpers/application_helper.rb (working copy) | ||
---|---|---|
197 | 197 |
path.to_s.split(%r{[/\\]}).select {|p| !p.blank?} |
198 | 198 |
end |
199 | 199 | |
200 |
def pagination_links_full(paginator, count=nil, options={}) |
|
200 |
def pagination_links_full(paginator, count=nil, options={:update => 'content'})
|
|
201 | 201 |
page_param = options.delete(:page_param) || :page |
202 | 202 |
url_param = params.dup |
203 | 203 |
# don't reuse params if filters are present |
... | ... | |
205 | 205 | |
206 | 206 |
html = '' |
207 | 207 |
html << link_to_remote(('« ' + l(:label_previous)), |
208 |
{:update => 'content',
|
|
208 |
{:update => options[:update],
|
|
209 | 209 |
:url => url_param.merge(page_param => paginator.current.previous), |
210 | 210 |
:complete => 'window.scrollTo(0,0)'}, |
211 | 211 |
{:href => url_for(:params => url_param.merge(page_param => paginator.current.previous))}) + ' ' if paginator.current.previous |
... | ... | |
213 | 213 |
html << (pagination_links_each(paginator, options) do |n| |
214 | 214 |
link_to_remote(n.to_s, |
215 | 215 |
{:url => {:params => url_param.merge(page_param => n)}, |
216 |
:update => 'content',
|
|
216 |
:update => options[:update],
|
|
217 | 217 |
:complete => 'window.scrollTo(0,0)'}, |
218 | 218 |
{:href => url_for(:params => url_param.merge(page_param => n))}) |
219 | 219 |
end || '') |
220 | 220 | |
221 | 221 |
html << ' ' + link_to_remote((l(:label_next) + ' »'), |
222 |
{:update => 'content',
|
|
222 |
{:update => options[:update],
|
|
223 | 223 |
:url => url_param.merge(page_param => paginator.current.next), |
224 | 224 |
:complete => 'window.scrollTo(0,0)'}, |
225 | 225 |
{:href => url_for(:params => url_param.merge(page_param => paginator.current.next))}) if paginator.current.next |
226 | 226 | |
227 | 227 |
unless count.nil? |
228 |
html << [" (#{paginator.current.first_item}-#{paginator.current.last_item}/#{count})", per_page_links(paginator.items_per_page)].compact.join(' | ') |
|
228 |
html << [" (#{paginator.current.first_item}-#{paginator.current.last_item}/#{count})", per_page_links(paginator.items_per_page, options[:update])].compact.join(' | ')
|
|
229 | 229 |
end |
230 | 230 | |
231 | 231 |
html |
232 | 232 |
end |
233 | 233 | |
234 |
def per_page_links(selected=nil) |
|
234 |
def per_page_links(selected=nil, update = "content")
|
|
235 | 235 |
url_param = params.dup |
236 | 236 |
url_param.clear if url_param.has_key?(:set_filter) |
237 | 237 | |
238 | 238 |
links = Setting.per_page_options_array.collect do |n| |
239 |
n == selected ? n : link_to_remote(n, {:update => "content", :url => params.dup.merge(:per_page => n)},
|
|
239 |
n == selected ? n : link_to_remote(n, {:update => update, :url => params.dup.merge(:per_page => n)},
|
|
240 | 240 |
{:href => url_for(url_param.merge(:per_page => n))}) |
241 | 241 |
end |
242 | 242 |
links.size > 1 ? l(:label_display_per_page, links.join(', ')) : nil |
app/controllers/repositories_controller.rb (working copy) | ||
---|---|---|
75 | 75 |
end |
76 | 76 |
|
77 | 77 |
def browse |
78 |
@changeset_count = @repository.changesets.count |
|
79 |
@changeset_pages = Paginator.new self, @changeset_count, |
|
80 |
per_page_option, |
|
81 |
params['revisions_page'] |
|
82 |
|
|
78 | 83 |
@entries = @repository.entries(@path, @rev) |
84 |
path = @repository.url[/#{@repository.root_url}(.*)/,1] + (@path.starts_with?('/') ? @path : "/#{@path}") + "%" |
|
85 |
@changesets = @repository.changesets.find(:all, |
|
86 |
:joins => "INNER JOIN changes on changes.changeset_id = changesets.id", |
|
87 |
:group => "changesets.id", |
|
88 |
:conditions => ["changes.path like ?", path], |
|
89 |
:limit => @changeset_pages.items_per_page, |
|
90 |
:offset => @changeset_pages.current.offset, |
|
91 |
:order => "changesets.committed_on DESC") |
|
79 | 92 |
if request.xhr? |
80 |
@entries ? render(:partial => 'dir_list_content') : render(:nothing => true) |
|
93 |
if params['revisions_page'] or params['per_page'] |
|
94 |
render(:partial => 'path_revisions') |
|
95 |
else |
|
96 |
@entries ? render(:partial => 'dir_list_content') : render(:nothing => true) |
|
97 |
end |
|
81 | 98 |
else |
82 | 99 |
show_error_not_found and return unless @entries |
83 | 100 |
@properties = @repository.properties(@path, @rev) |
app/views/repositories/_path_revisions.rhtml (revision 0) | ||
---|---|---|
1 |
<% if !@changesets.empty? && authorize_for('repositories', 'revisions') %> |
|
2 |
<h3><%= l(:label_latest_revision_plural) %></h3> |
|
3 |
<%= render :partial => 'revisions', :locals => {:project => @project, :path => '', :revisions => @changesets, :entry => nil }%> |
|
4 |
|
|
5 |
<p class="pagination"><%= pagination_links_full @changeset_pages,@changeset_count, {:page_param => 'revisions_page' ,:update => 'revisions'} %></p> |
|
6 |
|
|
7 |
<p><%= link_to l(:label_view_revisions), :action => 'revisions', :id => @project %></p> |
|
8 |
<% end %> |
app/views/repositories/browse.rhtml (working copy) | ||
---|---|---|
12 | 12 |
<% content_for :header_tags do %> |
13 | 13 |
<%= stylesheet_link_tag "scm" %> |
14 | 14 |
<% end %> |
15 |
<div id="revisions"> |
|
16 |
<%= render :partial => 'path_revisions' %> |
|
17 |
</div> |