From 597e421c15bf7b7c6c7d2904dedccdc4d8751cc2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Mon, 30 Oct 2006 08:42:01 +0000
Subject: [PATCH] Folder_filter should toggle invert mode.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@11002 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../portal_skins/erp5_core/Folder_filter.xml  | 69 ++++++++++++++-----
 product/ERP5/bootstrap/erp5_core/bt/revision  |  2 +-
 2 files changed, 54 insertions(+), 17 deletions(-)

diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Folder_filter.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Folder_filter.xml
index b112b4e99d..e124bfe19d 100644
--- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Folder_filter.xml
+++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Folder_filter.xml
@@ -71,26 +71,35 @@
             <value> <string encoding="cdata"><![CDATA[
 
 request = context.REQUEST\n
+stool = context.portal_selections\n
 \n
-# Set selection to currently checked items, taking into consideration changes in uids\n
-selection_uids = context.portal_selections.getSelectionCheckedUidsFor(selection_name, REQUEST=request)\n
-filtered_uid_dict = {}\n
-listbox_uid = map(lambda x:int(x), listbox_uid)\n
-uids = map (lambda x:int(x), uids)\n
-for uid in uids:\n
-   filtered_uid_dict[uid] = 1\n
-for uid in selection_uids:\n
-  if uid in listbox_uid:\n
-    if uid in uids:\n
+if stool.getSelectionInvertModeFor(selection_name):\n
+  # if already in invert mode, toggle invert mode\n
+  stool.setSelectionInvertModeFor(selection_name, invert_mode=0)\n
+else:\n
+  # Set selection to currently checked items, taking into consideration changes\n
+  # in uids\n
+  selection_uids = stool.getSelectionCheckedUidsFor(\n
+                                  selection_name, REQUEST=request)\n
+  filtered_uid_dict = {}\n
+  listbox_uid = map(lambda x:int(x), listbox_uid)\n
+  uids = map (lambda x:int(x), uids)\n
+  for uid in uids:\n
+     filtered_uid_dict[uid] = 1\n
+  for uid in selection_uids:\n
+    if uid in listbox_uid:\n
+      if uid in uids:\n
+        filtered_uid_dict[uid] = 1\n
+    else:\n
       filtered_uid_dict[uid] = 1\n
-  else:\n
-    filtered_uid_dict[uid] = 1\n
 \n
-if len(filtered_uid_dict.keys()) > 0 :\n
-  context.portal_selections.checkAll(selection_name, uids, REQUEST=None)\n
-  context.portal_selections.setSelectionToIds(selection_name, filtered_uid_dict.keys(), REQUEST=request)\n
+  if len(filtered_uid_dict.keys()) > 0 :\n
+    stool.checkAll(selection_name, uids, REQUEST=None)\n
+    stool.setSelectionToIds(selection_name,\n
+                              filtered_uid_dict.keys(), REQUEST=request)\n
 \n
-url = context.portal_selections.getSelectionListUrlFor(selection_name, REQUEST=request)\n
+url = stool.getSelectionListUrlFor(\n
+                        selection_name, REQUEST=request)\n
 request.RESPONSE.redirect(url)\n
 
 
@@ -102,6 +111,12 @@ request.RESPONSE.redirect(url)\n
               <none/>
             </value>
         </item>
+        <item>
+            <key> <string>_dav_writelocks</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>_filepath</string> </key>
             <value>
@@ -142,6 +157,7 @@ request.RESPONSE.redirect(url)\n
                             <string>_getattr_</string>
                             <string>context</string>
                             <string>request</string>
+                            <string>stool</string>
                             <string>selection_uids</string>
                             <string>filtered_uid_dict</string>
                             <string>map</string>
@@ -181,4 +197,25 @@ request.RESPONSE.redirect(url)\n
       </dictionary>
     </pickle>
   </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <tuple>
+          <string>Persistence</string>
+          <string>PersistentMapping</string>
+        </tuple>
+        <none/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_container</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
 </ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/bt/revision b/product/ERP5/bootstrap/erp5_core/bt/revision
index d800886d9c..afbe847262 100644
--- a/product/ERP5/bootstrap/erp5_core/bt/revision
+++ b/product/ERP5/bootstrap/erp5_core/bt/revision
@@ -1 +1 @@
-123
\ No newline at end of file
+126
\ No newline at end of file
-- 
2.30.9