/* * Copyright (C) 2003-2008 eXo Platform SAS. This program is free software; you * can redistribute it and/or modify it under the terms of the GNU Affero * General Public License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. This program * is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public License for more details. You * should have received a copy of the GNU General Public License along with this * program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.wcm.webui.search; import org.exoplatform.ecm.resolver.JCRResourceResolver; import org.exoplatform.portal.application.PortalRequestContext; import org.exoplatform.portal.mop.SiteType; import org.exoplatform.portal.webui.util.Util; import org.exoplatform.resolver.ResourceResolver; import org.exoplatform.services.cms.impl.DMSConfiguration; import org.exoplatform.web.url.navigation.NavigationResource; import org.exoplatform.web.url.navigation.NodeURL; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.lifecycle.UIFormLifecycle; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; import org.exoplatform.webui.form.UIForm; import org.exoplatform.webui.form.UIFormStringInput; /* * Created by The eXo Platform SAS Author : Anh Do Ngoc anh.do@exoplatform.com * Oct 31, 2008 */ @ComponentConfig( lifecycle = UIFormLifecycle.class, events = { @EventConfig(listeners = UISearchBox.SearchActionListener.class) } ) public class UISearchBox extends UIForm { /** The template path. */ private String templatePath; /** The Constant KEYWORD_INPUT. */ public static final String KEYWORD_INPUT = "keywordInput"; /** The Constant PORTAL_NAME_PARAM. */ public static final String PORTAL_NAME_PARAM = "portal"; /** The Constant KEYWORD_PARAM. */ public static final String KEYWORD_PARAM = "keyword"; /** * Instantiates a new uI search box. * * @throws Exception the exception */ public UISearchBox() throws Exception { UIFormStringInput uiKeywordInput = new UIFormStringInput(KEYWORD_INPUT, KEYWORD_INPUT, null); addChild(uiKeywordInput); } /** * Sets the template path. * * @param templatePath the new template path */ public void setTemplatePath(String templatePath) { this.templatePath = templatePath; } /* * (non-Javadoc) * @see org.exoplatform.webui.core.UIComponent#getTemplate() */ public String getTemplate() { return templatePath; } public ResourceResolver getTemplateResourceResolver() { try { DMSConfiguration dmsConfiguration = getApplicationComponent(DMSConfiguration.class); String workspace = dmsConfiguration.getConfig().getSystemWorkspace(); return new JCRResourceResolver(workspace); } catch (Exception e) { return null; } } /** * The listener interface for receiving searchAction events. The class that is * interested in processing a searchAction event implements this interface, * and the object created with that class is registered with a component using * the component's * <code>addSearchActionListener</code> method. When the searchAction * event occurs, that object's appropriate method is invoked. */ public static class SearchActionListener extends EventListener<UISearchBox> { /* * (non-Javadoc) * @see * org.exoplatform.webui.event.EventListener#execute(org.exoplatform.webui * .event.Event) */ public void execute(Event<UISearchBox> event) throws Exception { UISearchBox uiSearchBox = event.getSource(); String keyword = uiSearchBox.getUIStringInput(UISearchBox.KEYWORD_INPUT).getValue(); String portalName = Util.getPortalRequestContext().getPortalOwner(); PortalRequestContext prContext = Util.getPortalRequestContext(); prContext.setResponseComplete(true); NodeURL nodeURL = Util.getPortalRequestContext().createURL(NodeURL.TYPE); NavigationResource resource = new NavigationResource(SiteType.PORTAL, portalName, "searchResult"); nodeURL.setResource(resource); nodeURL.setQueryParameterValue(PORTAL_NAME_PARAM, portalName); nodeURL.setQueryParameterValue(KEYWORD_PARAM, keyword); prContext.getResponse().sendRedirect(nodeURL.toString()); } } }