From e9f712d8e4c1282ac424b09b4d82da4db1136e60 Mon Sep 17 00:00:00 2001 From: Jean-Paul Smets <jp@nexedi.com> Date: Wed, 28 Jan 2004 11:56:36 +0000 Subject: [PATCH] first working implementation of multipage checked uids git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@362 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Form/ListBox.py | 20 +++++-- product/ERP5Form/SelectionTool.py | 88 ++++++++++++++++++++++--------- 2 files changed, 78 insertions(+), 30 deletions(-) diff --git a/product/ERP5Form/ListBox.py b/product/ERP5Form/ListBox.py index 976678ce36..0f34a1fd56 100755 --- a/product/ERP5Form/ListBox.py +++ b/product/ERP5Form/ListBox.py @@ -392,6 +392,18 @@ class ListBoxWidget(Widget.Widget): elif not params.has_key(k): params[k] = eval(v) + # Allow overriding list_method and stat_method by params + if params.has_key('list_method_id'): + #try: + list_method = getattr(here.portal_skins.local_list_method , params['list_method_id']) # Coramy specific + #except: + # list_method = list_method + if params.has_key('stat_method_id'): + #try: + list_method = getattr(here.portal_skins.local_list_method , params['stat_method_id']) # Coramy specific + #except: + # list_method = list_method + # Set the params spec (this should change in the future) params['meta_type'] = filtered_meta_types params['portal_type'] = filtered_portal_types @@ -759,10 +771,10 @@ onChange="submitAction(this.form,'%s/portal_selections/setReportRoot')"> list_header = """\ <tr >%s <td class="Data" width="50" align="center" valign="middle"> - <input type="image" name="Select All" - src="/images/pro/images/checkall.png" border="0" alt="Select All" - onClick="SelectAll()" /> - <img src="/images/pro/images/decheckall.png" border="0" alt="img"/></td> + <input type="image" name="portal_selections/checkAll:method" value="1" + src="/images/pro/images/checkall.png" border="0" alt="Check All" /> + <input type="image" name="portal_selections/uncheckAll:method" value="1" + src="/images/pro/images/decheckall.png" border="0" alt="Uncheck All" /> """ % report_popup else: list_header = """\ diff --git a/product/ERP5Form/SelectionTool.py b/product/ERP5Form/SelectionTool.py index 8f25ce8564..da1b5d170d 100755 --- a/product/ERP5Form/SelectionTool.py +++ b/product/ERP5Form/SelectionTool.py @@ -186,6 +186,56 @@ class SelectionTool( UniqueObject, SimpleItem ): selection_object = Selection(checked_uids=checked_uids) self.setSelectionFor(selection_name, selection_object, REQUEST) + security.declareProtected(ERP5Permissions.View, 'getSelectionCheckedUidsFor') + def getSelectionCheckedUidsFor(self, selection_name, REQUEST=None): + """ + Sets the selection params for a given selection_name + """ + selection_object = self.getSelectionFor(selection_name, REQUEST) + if selection_object: + return selection_object.selection_checked_uids + return [] + + security.declareProtected(ERP5Permissions.View, 'checkAll') + def checkAll(self, selection_name, listbox_uid, REQUEST=None): + """ + Sets the selection params for a given selection_name + """ + selection_object = self.getSelectionFor(selection_name, REQUEST) + if selection_object: + selection_uid_dict = {} + for uid in selection_object.selection_checked_uids: + selection_uid_dict[uid] = 1 + for uid in listbox_uid: + selection_uid_dict[int(uid)] = 1 + self.setSelectionCheckedUidsFor(selection_name, selection_uid_dict.keys(), REQUEST=REQUEST) + request = REQUEST + if request: + referer = request['HTTP_REFERER'] + referer = referer.replace('reset=', 'noreset=') + referer = referer.replace('reset:int=', 'noreset:int=') + return request.RESPONSE.redirect(referer) + + security.declareProtected(ERP5Permissions.View, 'uncheckAll') + def uncheckAll(self, selection_name, listbox_uid, REQUEST=None): + """ + Sets the selection params for a given selection_name + """ + selection_object = self.getSelectionFor(selection_name, REQUEST) + if selection_object: + selection_uid_dict = {} + for uid in selection_object.selection_checked_uids: + selection_uid_dict[uid] = 1 + for uid in listbox_uid: + if selection_uid_dict.has_key(int(uid)): del selection_uid_dict[int(uid)] + self.setSelectionCheckedUidsFor(selection_name, selection_uid_dict.keys(), REQUEST=REQUEST) + request = REQUEST + if request: + referer = request['HTTP_REFERER'] + referer = referer.replace('reset=', 'noreset=') + referer = referer.replace('reset:int=', 'noreset:int=') + return request.RESPONSE.redirect(referer) + security.declareProtected(ERP5Permissions.View, 'getSelectionListUrlFor') def getSelectionListUrlFor(self, selection_name, REQUEST=None): """ @@ -213,7 +263,7 @@ class SelectionTool( UniqueObject, SimpleItem ): """ selection = self.getSelectionFor(selection_name, REQUEST=REQUEST) if selection is not None: - selection.edit(invert_mode=0, params={}) + selection.edit(invert_mode=0, params={}, checked_uids=[]) security.declareProtected(ERP5Permissions.View, 'setSelectionSortOrder') def setSelectionSortOrder(self, selection_name, sort_on, REQUEST=None): @@ -253,6 +303,7 @@ class SelectionTool( UniqueObject, SimpleItem ): request = REQUEST referer = request['HTTP_REFERER'] referer = referer.replace('reset=', 'noreset=') + referer = referer.replace('reset:int=', 'noreset:int=') return request.RESPONSE.redirect(referer) security.declareProtected(ERP5Permissions.View, 'getSelectionSortOrder') @@ -385,7 +436,7 @@ class SelectionTool( UniqueObject, SimpleItem ): # ListBox related methods security.declareProtected(ERP5Permissions.View, 'nextPage') - def nextPage(self, REQUEST=None): + def nextPage(self, listbox_uid, uids=[], REQUEST=None): """ Access the next page of a list """ @@ -399,16 +450,11 @@ class SelectionTool( UniqueObject, SimpleItem ): params['list_start'] = int(start) + int(lines) selection.edit(params= params) - # We must cancel the reset in this case - # since we need to change page - # we replace the keyword reset by noreset - # This must be documented in the keywords - referer = request['HTTP_REFERER'] - referer = referer.replace('reset=', 'noreset=') - return request.RESPONSE.redirect(referer) + self.uncheckAll(selection_name, listbox_uid) + return self.checkAll(selection_name, uids, REQUEST=REQUEST) security.declareProtected(ERP5Permissions.View, 'previousPage') - def previousPage(self, REQUEST): + def previousPage(self, listbox_uid, uids=[], REQUEST=None): """ Access the previous page of a list """ @@ -422,16 +468,11 @@ class SelectionTool( UniqueObject, SimpleItem ): params['list_start'] = max(int(start) - int(lines), 0) selection.edit(params= selection.selection_params) - # We must cancel the reset in this case - # since we need to change page - # we replace the keyword reset by noreset - # This must be documented in the keywords - referer = request['HTTP_REFERER'] - referer = referer.replace('reset=', 'noreset=') - return request.RESPONSE.redirect(referer) + self.uncheckAll(selection_name, listbox_uid) + return self.checkAll(selection_name, uids, REQUEST=REQUEST) security.declareProtected(ERP5Permissions.View, 'setPage') - def setPage(self, REQUEST): + def setPage(self, listbox_uid, uids=[], REQUEST=None): """ Access the previous page of a list """ @@ -447,14 +488,8 @@ class SelectionTool( UniqueObject, SimpleItem ): params['list_start'] = start selection.edit(params= selection.selection_params) - # We must cancel the reset in this case - # since we need to change page - # we replace the keyword reset by noreset - # This must be documented in the keywords - - referer = request['HTTP_REFERER'] - referer = referer.replace('reset=', 'noreset=') - return request.RESPONSE.redirect(referer) + self.uncheckAll(selection_name, listbox_uid) + return self.checkAll(selection_name, uids, REQUEST=REQUEST) security.declareProtected(ERP5Permissions.View, 'setDomainRoot') def setDomainRoot(self, REQUEST): @@ -574,6 +609,7 @@ class SelectionTool( UniqueObject, SimpleItem ): referer = request['HTTP_REFERER'] referer = referer.replace('reset=', 'noreset=') + referer = referer.replace('reset:int=', 'noreset:int=') return request.RESPONSE.redirect(referer) -- 2.30.9