From de45a6eb0c4dea71bc502225f2de028d00882dd7 Mon Sep 17 00:00:00 2001 From: jensp Date: Fri, 29 Jun 2012 10:48:09 +0000 Subject: [PATCH] ItemSearch Widget Optimierungen git-svn-id: https://svn.libreccm.org/ccm/trunk@1741 8810af33-2d31-482b-a856-94f89814c4df --- ccm-cms/src/com/arsdigita/cms/CMSConfig.java | 18 +-- .../com/arsdigita/cms/CMSResources.properties | 1 + .../arsdigita/cms/CMSResources_de.properties | 1 + .../cms/CMSResources_en_GB.properties | 1 + .../arsdigita/cms/CMSResources_fr.properties | 1 + .../com/arsdigita/cms/ui/ItemSearchPage.java | 29 ++-- .../arsdigita/cms/ui/ItemSearchWidget.java | 144 ++++++++++++------ 7 files changed, 126 insertions(+), 69 deletions(-) diff --git a/ccm-cms/src/com/arsdigita/cms/CMSConfig.java b/ccm-cms/src/com/arsdigita/cms/CMSConfig.java index b9e56a08e..457d86b82 100755 --- a/ccm-cms/src/com/arsdigita/cms/CMSConfig.java +++ b/ccm-cms/src/com/arsdigita/cms/CMSConfig.java @@ -542,11 +542,11 @@ public final class CMSConfig extends AbstractConfig { private final Parameter m_itemSearchDefaultTab = new StringParameter( "com.arsdigita.cms.item_search.default_tab", - Parameter.REQUIRED, "browse"); - private final Parameter m_itemSearchFlatBrowsePaneEnable = new BooleanParameter( - "com.arsdigita.cms.item_search.flat_browse_pane.enable", - Parameter.REQUIRED, - true); + Parameter.REQUIRED, "flatBrowse"); +// private final Parameter m_itemSearchFlatBrowsePaneEnable = new BooleanParameter( +// "com.arsdigita.cms.item_search.flat_browse_pane.enable", +// Parameter.REQUIRED, +// true); private final Parameter m_itemSearchFlatBrowsePanePageSize = new IntegerParameter( "com.arsdigita.cms.item_search.flat_browse_pane.page_size", Parameter.REQUIRED, @@ -705,7 +705,7 @@ public final class CMSConfig extends AbstractConfig { // register(m_disableItemPfs); // register(m_publishToFileClass); - register(m_itemSearchFlatBrowsePaneEnable); +// register(m_itemSearchFlatBrowsePaneEnable); register(m_itemSearchFlatBrowsePanePageSize); loadInfo(); @@ -1156,9 +1156,9 @@ public final class CMSConfig extends AbstractConfig { return (Integer) get(m_imageBrowserThumbnailMaxHeight); } - public Boolean getItemSearchFlatBrowsePaneEnable() { - return (Boolean) get(m_itemSearchFlatBrowsePaneEnable); - } +// public Boolean getItemSearchFlatBrowsePaneEnable() { +// return (Boolean) get(m_itemSearchFlatBrowsePaneEnable); +// } public Integer getItemSearchFlatBrowsePanePageSize() { return (Integer) get(m_itemSearchFlatBrowsePanePageSize); diff --git a/ccm-cms/src/com/arsdigita/cms/CMSResources.properties b/ccm-cms/src/com/arsdigita/cms/CMSResources.properties index 6005932f2..4d7d579cd 100755 --- a/ccm-cms/src/com/arsdigita/cms/CMSResources.properties +++ b/ccm-cms/src/com/arsdigita/cms/CMSResources.properties @@ -1100,3 +1100,4 @@ cms.ui.item_search.flat.type=Type cms.ui.item_search.flatBrowse=Select item cms.ui.category.undeletable=This category can't be deleted. cms.ui.item_search.flat.filter.submit=Filter +cms.ui.item_search.selected=Selected content item (id) diff --git a/ccm-cms/src/com/arsdigita/cms/CMSResources_de.properties b/ccm-cms/src/com/arsdigita/cms/CMSResources_de.properties index 557f7c3c1..4ee423c8b 100755 --- a/ccm-cms/src/com/arsdigita/cms/CMSResources_de.properties +++ b/ccm-cms/src/com/arsdigita/cms/CMSResources_de.properties @@ -1091,3 +1091,4 @@ cms.ui.item_search.flat.type=Typ cms.ui.item_search.flatBrowse=Item ausw\u00e4hlen cms.ui.category.undeletable=Diese Kategorie kann nicht gel\u00f6scht werden. cms.ui.item_search.flat.filter.submit=Filtern +cms.ui.item_search.selected=Ausgew\u00e4hltes Content Item (ID) diff --git a/ccm-cms/src/com/arsdigita/cms/CMSResources_en_GB.properties b/ccm-cms/src/com/arsdigita/cms/CMSResources_en_GB.properties index 2d38bb9e8..8e13ca49a 100755 --- a/ccm-cms/src/com/arsdigita/cms/CMSResources_en_GB.properties +++ b/ccm-cms/src/com/arsdigita/cms/CMSResources_en_GB.properties @@ -39,3 +39,4 @@ cms.ui.item_search.flat.type=Type cms.ui.item_search.flatBrowse=Select item cms.ui.category.undeletable= cms.ui.item_search.flat.filter.submit= +cms.ui.item_search.selected= diff --git a/ccm-cms/src/com/arsdigita/cms/CMSResources_fr.properties b/ccm-cms/src/com/arsdigita/cms/CMSResources_fr.properties index 65ca5858c..0e1553fac 100755 --- a/ccm-cms/src/com/arsdigita/cms/CMSResources_fr.properties +++ b/ccm-cms/src/com/arsdigita/cms/CMSResources_fr.properties @@ -570,3 +570,4 @@ cms.ui.item_search.flat.type=Type cms.ui.item_search.flatBrowse=Select item cms.ui.category.undeletable= cms.ui.item_search.flat.filter.submit= +cms.ui.item_search.selected= diff --git a/ccm-cms/src/com/arsdigita/cms/ui/ItemSearchPage.java b/ccm-cms/src/com/arsdigita/cms/ui/ItemSearchPage.java index d58e7f1c4..717e1930a 100755 --- a/ccm-cms/src/com/arsdigita/cms/ui/ItemSearchPage.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/ItemSearchPage.java @@ -52,6 +52,7 @@ import javax.servlet.http.HttpServletResponse; * * @author Scott Seago (scott@arsdigita.com) * @author Sören Bernstein (sbernstein@quasiweb.de) + * @author Jens Pelzetter (jens@jp-digital.de) */ public class ItemSearchPage extends CMSPage { @@ -65,7 +66,7 @@ public class ItemSearchPage extends CMSPage { private static final CMSConfig s_conf = CMSConfig.getInstance(); private static final boolean LIMIT_TO_CONTENT_SECTION = false; public static final String CONTENT_SECTION = "section_id"; - private final boolean showFlatBrowsePane; + //private final boolean showFlatBrowsePane; /** * Construct a new ItemSearchPage @@ -79,16 +80,16 @@ public class ItemSearchPage extends CMSPage { addGlobalStateParam(new StringParameter(ItemSearchPopup.WIDGET_PARAM)); addGlobalStateParam(new StringParameter("searchWidget")); - showFlatBrowsePane = s_conf.getItemSearchFlatBrowsePaneEnable(); + //showFlatBrowsePane = s_conf.getItemSearchFlatBrowsePaneEnable(); m_sectionId = new BigDecimalParameter(CONTENT_SECTION); addGlobalStateParam(m_sectionId); m_browse = getBrowsePane(); - if (showFlatBrowsePane) { - m_flatBrowse = getFlatBrowsePane(); - } +// if (showFlatBrowsePane) { +// m_flatBrowse = getFlatBrowsePane(); +// } m_search = getSearchPane(); // m_create = getCreatePane(); @@ -100,6 +101,14 @@ public class ItemSearchPage extends CMSPage { public void pageRequested(final RequestEvent event) { final PageState state = event.getPageState(); + final String query = (String) state.getValue(new StringParameter(ItemSearchPopup.QUERY)); + + if ((query == null) || query.isEmpty()) { + m_tabbedPane.setSelectedIndex(state, 1); + } else { + m_tabbedPane.setSelectedIndex(state, 0); + } + //if (showFlatBrowsePane) { // m_tabbedPane.setTabVisible(state, 0, false); // m_tabbedPane.setSelectedIndex(state, 1); @@ -163,9 +172,9 @@ public class ItemSearchPage extends CMSPage { TabbedPane pane = new TabbedPane(); pane.setClassAttr(XSL_CLASS); - if (showFlatBrowsePane) { + //if (showFlatBrowsePane) { addToPane(pane, "flatBrowse", getFlatBrowsePane()); - } + //} addToPane(pane, "browse", getBrowsePane()); addToPane(pane, "search", getSearchPane()); // addToPane(pane, "create", getCreatePane()); @@ -176,11 +185,11 @@ public class ItemSearchPage extends CMSPage { if ("search".equals(s_conf.getItemSearchDefaultTab())) { pane.setDefaultPane(m_search); } - if ("flatBrowse".equals(s_conf.getItemSearchDefaultTab()) && showFlatBrowsePane) { + //if ("flatBrowse".equals(s_conf.getItemSearchDefaultTab()) && showFlatBrowsePane) { pane.setDefaultPane(m_flatBrowse); - } else { + //} else { pane.setDefaultPane(m_browse); - } + //} //pane.addActionListener(this); // pane.setTabVisible(null, pane, true); diff --git a/ccm-cms/src/com/arsdigita/cms/ui/ItemSearchWidget.java b/ccm-cms/src/com/arsdigita/cms/ui/ItemSearchWidget.java index c56f5ad78..cdb945b28 100755 --- a/ccm-cms/src/com/arsdigita/cms/ui/ItemSearchWidget.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/ItemSearchWidget.java @@ -42,6 +42,7 @@ import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentType; import com.arsdigita.cms.Workspace; import com.arsdigita.cms.WorkspaceServlet; +import com.arsdigita.cms.util.GlobalizationUtil; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.web.ParameterMap; import com.arsdigita.web.URL; @@ -57,7 +58,8 @@ public class ItemSearchWidget extends FormSection implements BebopConstants, FormSubmissionListener, FormInitListener { private static final Logger s_log = Logger.getLogger(ItemSearchWidget.class); - private Hidden m_selected; + //private Hidden m_selected; + private TextField m_selected; private TextField m_item; private Submit m_search; private Submit m_clear; @@ -71,6 +73,8 @@ public class ItemSearchWidget extends FormSection private String m_clearName; private ParameterModel m_model; private ParameterModel m_searchModel; + private String searchLabelText = (String) GlobalizationUtil.globalize("cms.ui.item_search.search").localize(); + private String selectedLabelText = (String) GlobalizationUtil.globalize("cms.ui.item_search.selected").localize(); public static final String BEBOP_ITEM_SEARCH = "bebop:itemSearch"; public static final String SEARCH = "search"; public static final boolean LIMIT_TO_CONTENT_SECTION = false; @@ -82,7 +86,7 @@ public class ItemSearchWidget extends FormSection public ItemFragment(ParameterModel parameter, ItemSearchWidget parent) { super(parameter); this.parent = parent; - //this.setReadOnly(); + this.setReadOnly(); this.setSize(35); } @@ -116,8 +120,9 @@ public class ItemSearchWidget extends FormSection public ClearFragment(String name, ItemSearchWidget parent) { super(name, "Clear"); this.parent = parent; - this.setAttribute("onClick", "this.form." + parent.m_selected.getName() //parent.m_item.getName() - + ".value = \"\"; return false;"); + this.setAttribute("onClick", "this.form." + parent.m_selected.getName() + ".value = \"\";" + + "this.form." + parent.m_item.getName() + ".value = \"\";" + + "return false;"); this.setAttribute("value", "Clear"); } @@ -189,8 +194,10 @@ public class ItemSearchWidget extends FormSection /** * Construct a new ItemSearchWidget. The model must be an * ItemSearchParameter + * @param model + * @param contentType */ - public ItemSearchWidget(ParameterModel model, ContentType contentType) { + public ItemSearchWidget(final ParameterModel model, final ContentType contentType) { super(new BoxPanel(BoxPanel.VERTICAL)); if (!(model instanceof ItemSearchParameter)) { @@ -214,7 +221,23 @@ public class ItemSearchWidget extends FormSection m_searchModel = new StringParameter(SEARCH); m_contentType = contentType; - m_selected = new Hidden(model); + //m_selected = new Hidden(model); + m_selected = new ItemFragment(model, this); + final Label selectedItemLabel = new Label(selectedLabelText); + selectedItemLabel.addPrintListener(new PrintListener() { + public void prepare(final PrintEvent event) { + final Label target = (Label) event.getTarget(); + target.setLabel(selectedLabelText); + } + }); + final Label searchLabel = new Label(searchLabelText); + searchLabel.addPrintListener(new PrintListener() { + + public void prepare(final PrintEvent event) { + final Label target = (Label) event.getTarget(); + target.setLabel(searchLabelText); + } + }); //m_item = new ItemFragment(model, this); m_item = new TextField(m_searchModel); m_search = new SearchFragment(m_searchName, this); @@ -232,7 +255,7 @@ public class ItemSearchWidget extends FormSection CMS.getContext().getContentSection().getID()); params.setParameter("widget", formName + ".elements['" + m_selected. //m_item. getName() + "']"); - params.setParameter("searchWidget", formName + ".elements['" + m_item.getName() + "']"); + params.setParameter("searchWidget", formName + ".elements['" + m_item.getName() + "']"); if (typeURLFrag != null) { params.setParameter("single_type", typeURLFrag); } @@ -256,7 +279,7 @@ public class ItemSearchWidget extends FormSection + "Popup(theForm) { \n" + " aWindow = window.open(\"" + url + "&query=\" + document.getElementById('" + m_item.getName() + "').value , " //+ "\"search\", \"toolbar=no,width=800,height=600,status=no,scrollbars=yes,resize=yes\");\n" - + "\"search\", \"toolbar=yes,width=\" + screen.width*0.5 + \",height=\" + screen.height*0.5 + \",status=no,scrollbars=yes,resize=yes\");\n" + + "\"search\", \"toolbar=no,width=\" + screen.width*0.5 + \",height=\" + screen.height*0.5 + \",status=no,scrollbars=yes,resize=yes\");\n" + "return false;\n" + " } \n" + " --> \n" @@ -266,12 +289,17 @@ public class ItemSearchWidget extends FormSection }); m_topHR = new HRLabel(); add(m_topHR); - FormSection searchSection = new FormSection(new BoxPanel( - BoxPanel.HORIZONTAL)); - searchSection.add(m_item); - searchSection.add(m_selected); - searchSection.add(m_search); - searchSection.add(m_clear); + final FormSection searchSection = new FormSection(new BoxPanel(BoxPanel.VERTICAL)); + final BoxPanel searchRow = new BoxPanel(BoxPanel.HORIZONTAL); + searchRow.add(searchLabel); + searchRow.add(m_item); + searchRow.add(m_search); + searchRow.add(m_clear); + final BoxPanel itemRow = new BoxPanel(BoxPanel.HORIZONTAL); + itemRow.add(selectedItemLabel); + itemRow.add(m_selected); + searchSection.add(searchRow); + searchSection.add(itemRow); searchSection.add(m_jsLabel); add(searchSection); if (m_contentType == null) { @@ -340,75 +368,75 @@ public class ItemSearchWidget extends FormSection } } - public void submitted(FormSectionEvent e) throws FormProcessException { - PageState s = e.getPageState(); - FormData data = e.getFormData(); + public void submitted(final FormSectionEvent event) throws FormProcessException { + final PageState state = event.getPageState(); + final FormData data = event.getFormData(); s_log.debug("Doing submission"); - if (m_searchComponent.isItemSelected(s)) { + if (m_searchComponent.isItemSelected(state)) { s_log.debug("Item selected"); - ContentItem item = m_searchComponent.getSelectedItem(s); + ContentItem item = m_searchComponent.getSelectedItem(state); if (item != null) { - m_item.setValue(s, item); + m_item.setValue(state, item); } try { - m_searchComponent.setVisible(s, false); - m_topHR.setVisible(s, false); - m_bottomHR.setVisible(s, false); - m_search.setVisible(s, true); + m_searchComponent.setVisible(state, false); + m_topHR.setVisible(state, false); + m_bottomHR.setVisible(state, false); + m_search.setVisible(state, true); } catch (IllegalStateException ex) { // component is in metaform. nothing to do here. Custom generateXML must hide for us } throw new FormProcessException("item search FormSection submit"); - } else if (m_searchComponent.hasQuery(s)) { + } else if (m_searchComponent.hasQuery(state)) { s_log.debug("Has query"); try { - m_searchComponent.setVisible(s, true); - m_searchComponent.processQuery(s); - m_topHR.setVisible(s, true); - m_bottomHR.setVisible(s, true); - m_search.setVisible(s, false); + m_searchComponent.setVisible(state, true); + m_searchComponent.processQuery(state); + m_topHR.setVisible(state, true); + m_bottomHR.setVisible(state, true); + m_search.setVisible(state, false); } catch (IllegalStateException ex) { // component is in metaform. nothing to do here. Custom generateXML must hide for us } if (m_contentType != null) { - s.setValue(new BigDecimalParameter(ItemSearch.SINGLE_TYPE_PARAM), + state.setValue(new BigDecimalParameter(ItemSearch.SINGLE_TYPE_PARAM), m_contentType.getID()); } else { - s.setValue(new BigDecimalParameter(ItemSearch.SINGLE_TYPE_PARAM), + state.setValue(new BigDecimalParameter(ItemSearch.SINGLE_TYPE_PARAM), null); } throw new FormProcessException("item search FormSection submit"); - } else if (m_search.isSelected(s)) { + } else if (m_search.isSelected(state)) { s_log.debug("Search selected"); try { - m_searchComponent.setVisible(s, true); - m_searchComponent.processQuery(s); - m_topHR.setVisible(s, true); - m_bottomHR.setVisible(s, true); - m_search.setVisible(s, false); + m_searchComponent.setVisible(state, true); + m_searchComponent.processQuery(state); + m_topHR.setVisible(state, true); + m_bottomHR.setVisible(state, true); + m_search.setVisible(state, false); } catch (IllegalStateException ex) { // component is in metaform. nothing to do here. Custom generateXML must hide for us } if (m_contentType != null) { - s.setValue(new BigDecimalParameter(ItemSearch.SINGLE_TYPE_PARAM), + state.setValue(new BigDecimalParameter(ItemSearch.SINGLE_TYPE_PARAM), m_contentType.getID()); } else { - s.setValue(new BigDecimalParameter(ItemSearch.SINGLE_TYPE_PARAM), + state.setValue(new BigDecimalParameter(ItemSearch.SINGLE_TYPE_PARAM), null); } throw new FormProcessException("item search FormSection submit"); - } else if (m_clear.isSelected(s)) { + } else if (m_clear.isSelected(state)) { s_log.debug("Clear selected"); - m_item.setValue(s, null); + m_item.setValue(state, null); try { - m_searchComponent.setVisible(s, false); - m_topHR.setVisible(s, false); - m_bottomHR.setVisible(s, false); - m_search.setVisible(s, true); + m_searchComponent.setVisible(state, false); + m_topHR.setVisible(state, false); + m_bottomHR.setVisible(state, false); + m_search.setVisible(state, true); } catch (IllegalStateException ex) { // component is in metaform. nothing to do here. Custom generateXML must hide for us } @@ -416,14 +444,30 @@ public class ItemSearchWidget extends FormSection } else { s_log.debug("Something else"); try { - m_searchComponent.setVisible(s, false); - m_topHR.setVisible(s, false); - m_bottomHR.setVisible(s, false); - m_search.setVisible(s, true); + m_searchComponent.setVisible(state, false); + m_topHR.setVisible(state, false); + m_bottomHR.setVisible(state, false); + m_search.setVisible(state, true); } catch (IllegalStateException ex) { // component is in metaform. nothing to do here. Custom generateXML must hide for us } } } + public String getSearchLabelText() { + return searchLabelText; + } + + public void setSearchLabelText(final String searchLabelText) { + this.searchLabelText = searchLabelText; + } + + public String getSelectedLabelText() { + return selectedLabelText; + } + + public void setSelectedLabelText(String selectedLabelText) { + this.selectedLabelText = selectedLabelText; + } + }