Skip to content

Commit

Permalink
Allow to modify the pagesize with a query-string.
Browse files Browse the repository at this point in the history
  • Loading branch information
pbauer committed Mar 4, 2014
1 parent f83074e commit 70a8471
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 16 deletions.
3 changes: 2 additions & 1 deletion CHANGES.txt
Expand Up @@ -4,7 +4,8 @@ Changelog
2.1.5 (unreleased)
------------------

- Nothing changed yet.
- Allow modifying the pagesize by adding a request-string e.g. "?pagesize=100".
[pbauer]


2.1.4 (2013-12-09)
Expand Down
1 change: 1 addition & 0 deletions plone/app/content/browser/folder_contents.js
Expand Up @@ -6,6 +6,7 @@ function replaceFolderContentsTable(overrides) {
var defaults = {
"sort_on": fCF.find("input[name=sort_on]").first().val(),
"pagenumber": fCF.find("input[name=pagenumber]").first().val(),
"pagesize": fCF.find("input[name=pagesize]").first().val(),
"show_all": fCF.find("input[name=show_all]").first().val()
};
$.get('foldercontents_get_table', $.extend(defaults, overrides), function(data) {
Expand Down
7 changes: 4 additions & 3 deletions plone/app/content/browser/foldercontents.py
Expand Up @@ -119,13 +119,14 @@ def __init__(self, context, request, contentFilter=None):
self.context = context
self.request = request
self.contentFilter = contentFilter is not None and contentFilter or {}
self.pagesize = int(self.request.get('pagesize', 20))
self.items = self.folderitems()

url = context.absolute_url()
view_url = url + '/folder_contents'
self.table = Table(request, url, view_url, self.items,
show_sort_column=self.show_sort_column,
buttons=self.buttons)
buttons=self.buttons,
pagesize=self.pagesize)

def render(self):
return self.table.render()
Expand Down Expand Up @@ -158,7 +159,7 @@ def folderitems(self):
contentsMethod = self.contentsMethod()

show_all = self.request.get('show_all', '').lower() == 'true'
pagesize = 20
pagesize = self.pagesize
pagenumber = int(self.request.get('pagenumber', 1))
start = (pagenumber - 1) * pagesize
end = start + pagesize
Expand Down
13 changes: 7 additions & 6 deletions plone/app/content/browser/table.pt
Expand Up @@ -4,6 +4,7 @@
tal:attributes="value request/sort_on|string:getObjPositionInParent"
/>
<input type="hidden" name="pagenumber" tal:attributes="value view/batch/pagenumber"/>
<input type="hidden" name="pagesize" tal:attributes="value view/batch/pagesize"/>
<input type="hidden" name="show_all" tal:attributes="value view/show_all"/>
<input type="hidden" name="orig_template" tal:attributes="value view/viewname"/>
<tal:block condition="view/selectall">
Expand All @@ -21,7 +22,7 @@

<metal:listing define-macro="folder_listing"
tal:define="nosortclass view/get_nosort_class">

<div class="visualClear" id="clear-space-before-navigation"><!-- --></div>

<div tal:replace="structure view/batching" tal:condition="not:view/show_all"/>
Expand All @@ -38,19 +39,19 @@
<th colspan="6" class="nosort">
<span tal:omit-tag="" i18n:translate="tableheading_all_items_selected">
All <tal:block replace="view/batch/items_on_page" i18n:name="count"/> items on this
page are selected.
page are selected.
</span>
<a tal:attributes="href view/selectall_url"
<a tal:attributes="href view/selectall_url"
id="foldercontents-selectall-completebatch"
i18n:translate="tableheading_select_all_items">Select all
i18n:translate="tableheading_select_all_items">Select all
<tal:block replace="view/batch/sequence_length" i18n:name="count"/> items in this folder.</a>
</th>
</tr>
<tr tal:condition="view/selectall">
<th colspan="6" class="nosort">
<span tal:omit-tag="" i18n:translate="tableheading_all_items_selected_in_folder">
All <tal:block replace="view/batch/sequence_length" i18n:name="count"/> items in this folder
are selected.
are selected.
</span>
<a tal:attributes="href view/selectnone_url" i18n:translate="tableheading_clear_selection"
id="foldercontents-clearselection">Clear selection</a>
Expand Down Expand Up @@ -123,7 +124,7 @@
<input type="hidden" name="selected_obj_paths:list" value="#"
tal:attributes="value item/path|id" />
<label tal:content="title_or_id"
tal:attributes="for string:cb_${id}"
tal:attributes="for string:cb_${id}"
class="hiddenStructure">
Item Title
</label>
Expand Down
10 changes: 5 additions & 5 deletions plone/app/content/browser/table.txt
Expand Up @@ -12,7 +12,7 @@ A table can be parameterized at creation time.
>>> view_url = 'http://plone/view'
>>> base_url = 'http://plone'
>>> table = Table(request={}, base_url=base_url, view_url=view_url,
... items=[], show_sort_column=False, buttons=[])
... items=[], show_sort_column=False, buttons=[])

The most important argument is items. This must provide a list of dictionaries
because the table will add more information to them for rendering.
Expand Down Expand Up @@ -116,18 +116,18 @@ The table provides the template with urls for selecting or deselecting items in
the batch. These urls are based on the url passed in at creation time.

>>> table.selectnone_url
'http://plone/view?pagenumber=1'
'http://plone/view?pagenumber=1&pagesize=20'

You can see how it automatically adds the current page to the url.

>>> table.selectscreen_url
'http://plone/view?pagenumber=1&select=screen'
'http://plone/view?pagenumber=1&pagesize=20&select=screen'

The same goes for selecting the screen and the whole batch.

>>> table.selectall_url
'http://plone/view?pagenumber=1&select=all'
'http://plone/view?pagenumber=1&pagesize=20&select=all'

A template may want to display only one of these urls at the same time.
Therefore the table has a boolean property to query wheter or not to show the
select all option. The display of this depends on wheter the whole batch is
Expand Down
3 changes: 2 additions & 1 deletion plone/app/content/browser/tableview.py
Expand Up @@ -146,7 +146,8 @@ def selectscreen_url(self):

@property
def selectnone_url(self):
base = self.view_url + '?pagenumber=%s' % (self.pagenumber)
base = self.view_url + '?pagenumber=%s&pagesize=%s' % (
self.pagenumber, self.pagesize)
if self.show_all:
base += '&show_all=true'
return base
Expand Down

0 comments on commit 70a8471

Please sign in to comment.