From 7e17c324dc473fecfa0fa664b06a96160d4d4486 Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 18 May 2011 06:58:16 +0000 Subject: [PATCH] =?UTF-8?q?Filterbox=20f=C3=BCr=20Folder=20verwendet=20jet?= =?UTF-8?q?zt=20eine=20Substring-Search=20(...=20LIKE=20'%foo%'=20statt=20?= =?UTF-8?q?...=20LIKE=20'foo%'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@921 8810af33-2d31-482b-a856-94f89814c4df --- .../cms/ui/folder/FolderBrowser.java | 36 ++++++++++++++----- .../cms/ui/folder/FolderManipulator.java | 10 ++++-- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderBrowser.java b/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderBrowser.java index a15cd5462..6a4dceb71 100755 --- a/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderBrowser.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderBrowser.java @@ -109,6 +109,7 @@ public class FolderBrowser extends Table { private final static String SORT_KEY_CREATION_DATE = "creationDate"; private StringParameter m_sortType = new StringParameter("sortType"); private StringParameter m_sortDirection = new StringParameter("sortDirn"); + private StringParameter m_aToZfilter = null; private StringParameter m_filter = null; private FolderManipulator.FilterForm m_filterForm; private long m_folderSize; @@ -138,21 +139,21 @@ public class FolderBrowser extends Table { m_currentFolder = currentFolder; /* - + This code should be uncommented if the desired behaviour is for a change of folder to cause reversion to default ordering of contained items (by name ascending). Our feeling is that the user selected ordering should be retained for the duration of the folder browsing session. If anyone wants this alternative behaviour it should be brought in under the control of a config parameter. - + m_currentFolder.addChangeListener(new ChangeListener() { - + public void stateChanged(ChangeEvent e) { PageState state = e.getPageState(); state.setValue(m_sortType, m_sortType.getDefaultValue()); state.setValue(m_sortDirection, m_sortDirection.getDefaultValue()); - + }}); */ setClassAttr("dataTable"); @@ -245,6 +246,10 @@ public class FolderBrowser extends Table { m_filterForm = filterForm; } + protected void setAtoZfilterParameter(StringParameter aToZfilter) { + m_aToZfilter = aToZfilter; + } + protected void setFilterParameter(StringParameter filter) { m_filter = filter; } @@ -285,14 +290,20 @@ public class FolderBrowser extends Table { } else { t.getRowSelectionModel().clearSelection(s); s_log.debug(String.format("filter = '%s'", s.getValue(m_filter))); - Folder.ItemCollection itemColl = (Folder.ItemCollection) m_itemColl. - get(s); + Folder.ItemCollection itemColl = + (Folder.ItemCollection) m_itemColl.get(s); s_log.debug(String.format("itemColl.size = %d", itemColl.size())); m_folderSize = itemColl.size(); - if (s.getValue(m_filter) != null) { + if (s.getValue(m_aToZfilter) != null) { itemColl.addFilter(String.format( "lower(name) like lower('%s%%') or lower(displayName) like lower('%s%%')", + s.getValue(m_aToZfilter), + s.getValue(m_aToZfilter))); + } + if (s.getValue(m_filter) != null) { + itemColl.addFilter(String.format( + "lower(name) like lower('%%%s%%') or lower(displayName) like lower('%%%s%%')", s.getValue(m_filter), s.getValue(m_filter))); } @@ -329,9 +340,15 @@ public class FolderBrowser extends Table { return 0; } - if (state.getValue(m_filter) != null) { + if (state.getValue(m_aToZfilter) != null) { itemColl.addFilter(String.format( "lower(name) like lower('%s%%') or lower(displayName) like lower('%s%%')", + state.getValue(m_aToZfilter), + state.getValue(m_aToZfilter))); + } + if (state.getValue(m_filter) != null) { + itemColl.addFilter(String.format( + "lower(name) like lower('%%%s%%') or lower(displayName) like lower('%%%s%%')", state.getValue(m_filter), state.getValue(m_filter))); } @@ -481,7 +498,8 @@ public class FolderBrowser extends Table { } else { ItemResolver resolver = section.getItemResolver(); return new Link(name, resolver.generateItemURL(state, id, - name, section, coll. + name, section, + coll. getVersion())); } } diff --git a/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderManipulator.java b/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderManipulator.java index 0a5757c4c..81079f546 100755 --- a/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderManipulator.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderManipulator.java @@ -113,6 +113,7 @@ public class FolderManipulator extends SimpleContainer private ItemView m_itemView; private TargetSelector m_targetSelector; private FilterForm m_filterForm; + private StringParameter m_aToZfilter = new StringParameter("aToZfilter"); private StringParameter m_filter = new StringParameter("filter"); public FolderManipulator(FolderSelectionModel folderSel) { @@ -144,6 +145,7 @@ public class FolderManipulator extends SimpleContainer p.setVisibleDefault(m_filterForm, true); p.addComponentStateParam(this, m_sources); p.addComponentStateParam(this, m_action); + p.addComponentStateParam(this, m_aToZfilter); p.addComponentStateParam(this, m_filter); } @@ -347,7 +349,8 @@ public class FolderManipulator extends SimpleContainer m_targetSelector.setVisible(s, false); m_targetSelector.reset(s); s.setValue(m_action, null); - s.setValue(m_sources, null); + s.setValue(m_sources, null); + s.setValue(m_aToZfilter, null); s.setValue(m_filter, null); } @@ -456,6 +459,7 @@ public class FolderManipulator extends SimpleContainer group.setSubject(panel); m_browser = new FolderBrowser(m_srcFolderSel); + m_browser.setAtoZfilterParameter(m_aToZfilter); m_browser.setFilterParameter(m_filter); m_browser.setFilterForm(m_filterForm); m_paginator = new Paginator((PaginationModelBuilder) m_browser. @@ -503,6 +507,7 @@ public class FolderManipulator extends SimpleContainer m_checkboxGroup.setValue(s, null); m_actionSel.setValue(s, null); m_paginator.reset(s); + s.setValue(m_aToZfilter, null); s.setValue(m_filter, null); m_filterForm.getFilterField().setValue(s, null); } @@ -551,6 +556,7 @@ public class FolderManipulator extends SimpleContainer allLink.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { + event.getPageState().setValue(m_aToZfilter, ""); event.getPageState().setValue(m_filter, ""); } }); @@ -563,7 +569,7 @@ public class FolderManipulator extends SimpleContainer link.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { - event.getPageState().setValue(m_filter, + event.getPageState().setValue(m_aToZfilter, Character.toString( lowerCaseChar)); }