@security_exclusions = true
end
- # table pagination
- @page_size = 20
- @page_size = params[:page_size].to_i if Api::Utils.is_number?(params[:page_size]) && params[:page_size].to_i > 5
- @total_number = @reviews.size
- if @reviews.size > @page_size
- @page_id = (params[:page_id] ? params[:page_id].to_i : 1)
- @page_count = @reviews.size / @page_size
- @page_count += 1 if (@reviews.size % @page_size > 0)
- from = (@page_id-1) * @page_size
- to = (@page_id*@page_size)-1
- to = @reviews.size-1 if to >= @reviews.size
- @reviews = @reviews[from..to]
- end
+# # table pagination
+# @page_size = 20
+# @page_size = params[:page_size].to_i if Api::Utils.is_number?(params[:page_size]) && params[:page_size].to_i > 5
+# @total_number = @reviews.size
+# if @reviews.size > @page_size
+# @page_id = (params[:page_id] ? params[:page_id].to_i : 1)
+# @page_count = @reviews.size / @page_size
+# @page_count += 1 if (@reviews.size % @page_size > 0)
+# from = (@page_id-1) * @page_size
+# to = (@page_id*@page_size)-1
+# to = @reviews.size-1 if to >= @reviews.size
+# @reviews = @reviews[from..to]
+# end
end
end
options['to']=@to
end
unless @id == ''
- if is_number? @id
+ if Api::Utils.is_integer? @id
options['id'] = @id
else
options['id'] = -1
if found_reviews.size != @reviews.size
@security_exclusions = true
end
-
- # table pagination
- @page_size = 20
- @page_size = params[:page_size].to_i if is_number?(params[:page_size]) && params[:page_size].to_i > 5
- @total_number = @reviews.size
- if @reviews.size > @page_size
- @page_id = (params[:page_id] ? params[:page_id].to_i : 1)
- @page_count = @reviews.size / @page_size
- @page_count += 1 if (@reviews.size % @page_size > 0)
- from = (@page_id-1) * @page_size
- to = (@page_id*@page_size)-1
- to = @reviews.size-1 if to >= @reviews.size
- @reviews = @reviews[from..to]
- end
- end
-
- def is_number?(s)
- true if Float(s) rescue false
end
def has_rights_to_modify?(object)
html = options[:default].to_s if html.nil? && options[:default]
html
end
+
+ #
+ # Creates a pagination section for the given array (items_array) if its size exceeds the pagination size (default: 20).
+ # Upon completion of this method, the HTML is returned and the given array contains only the selected elements.
+ #
+ # In any case, the HTML that is returned contains the message 'x results', where x is the total number of elements
+ # in the items_array object.
+ #
+ # === Optional parameters
+ # * page_size: the number of elements to display at the same time (= the pagination size)
+ #
+ def paginate(items_array, options={})
+ html = items_array.size.to_s + " " + message('results').downcase
+
+ page_size = options[:page_size] || 20
+ if items_array.size > page_size
+ # computes the pagination elements
+ page_id = (params[:page_id] ? params[:page_id].to_i : 1)
+ page_count = items_array.size / page_size
+ page_count += 1 if (items_array.size % page_size > 0)
+ from = (page_id-1) * page_size
+ to = (page_id*page_size)-1
+ to = items_array.size-1 if to >= items_array.size
+
+ # render the pagination links
+ html += " | "
+ html += link_to_if page_id>1, message('paging_previous'), {:overwrite_params => {:page_id => page_id-1}}
+ html += " "
+ for index in 1..page_count
+ html += link_to_unless index==page_id, index.to_s, {:overwrite_params => {:page_id => index}}
+ html += " "
+ end
+ html += link_to_if page_id<page_count, message('paging_next'), {:overwrite_params => {:page_id => 1+page_id}}
+
+ # and adapt the items_array object according to the pagination
+ items_to_keep = items_array[from..to]
+ items_array.clear
+ items_to_keep.each {|i| items_array << i}
+ end
+
+ html
+ end
+
end
<tfoot>
<tr>
<td colspan="6">
- <%= @total_number -%> <%= message('results').downcase -%>
- <% if @page_count %>
- |
- <%= link_to_if @page_id>1, message('paging_previous'), {:overwrite_params => {:page_id => @page_id-1}} %>
- <% for index in 1..@page_count %>
- <%= link_to_unless index==@page_id, index.to_s, {:overwrite_params => {:page_id => index}} %>
- <% end %>
- <%= link_to_if @page_id<@page_count, message('paging_next'), {:overwrite_params => {:page_id => 1+@page_id}} %>
- <% end %>
+ <%= paginate(@reviews) -%>
</td>
</tr>
</tfoot>