/* * 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 javax.portlet.PortletMode; import javax.portlet.PortletPreferences; import org.exoplatform.ecm.resolver.JCRResourceResolver; import org.exoplatform.portal.webui.container.UIContainer; import org.exoplatform.resolver.ResourceResolver; import org.exoplatform.services.cms.impl.DMSConfiguration; import org.exoplatform.webui.application.WebuiRequestContext; import org.exoplatform.webui.application.portlet.PortletRequestContext; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.lifecycle.Lifecycle; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; /* * Created by The eXo Platform SAS Author : Anh Do Ngoc anh.do@exoplatform.com * Oct 31, 2008 */ @ComponentConfig( lifecycle = Lifecycle.class, events = { @EventConfig(listeners = UISearchPageLayout.QuickEditActionListener.class) } ) public class UISearchPageLayout extends UIContainer { /** The Constant SEARCH_FORM. */ public static final String SEARCH_FORM = "uiSearchForm"; /** The Constant SEARCH_RESULT. */ public static final String SEARCH_RESULT = "uiSearchResult"; /** * Instantiates a new uI search page layout. * * @throws Exception the exception */ public UISearchPageLayout() throws Exception { WebuiRequestContext context = WebuiRequestContext.getCurrentInstance(); UISearchForm uiSearchForm = addChild(UISearchForm.class, null, null); UISearchResult uiSearchResult = addChild(UISearchResult.class, null, null); String searchFormTemplatePath = getTemplatePath(UIWCMSearchPortlet.SEARCH_FORM_TEMPLATE_PATH); uiSearchForm.init(searchFormTemplatePath, getTemplateResourceResolver(context, searchFormTemplatePath)); String searchResultTemplatePath = getTemplatePath(UIWCMSearchPortlet.SEARCH_RESULT_TEMPLATE_PATH); uiSearchResult.init(searchResultTemplatePath, getTemplateResourceResolver(context, searchResultTemplatePath)); } /** * Gets the portlet preference. * * @return the portlet preference */ private PortletPreferences getPortletPreference() { PortletRequestContext portletRequestContext = WebuiRequestContext.getCurrentInstance(); return portletRequestContext.getRequest().getPreferences(); } /** * Gets the template path. * * @param templateType the template type * * @return the template path */ private String getTemplatePath(String templateType) { return getPortletPreference().getValue(templateType, null); } /* * (non-Javadoc) * @see org.exoplatform.portal.webui.portal.UIPortalComponent#getTemplate() */ public String getTemplate() { String template = getPortletPreference().getValue(UIWCMSearchPortlet.SEARCH_PAGE_LAYOUT_TEMPLATE_PATH, null); return template; } /* * (non-Javadoc) * @see * org.exoplatform.webui.core.UIComponent#getTemplateResourceResolver(org. * exoplatform.webui.application.WebuiRequestContext, java.lang.String) */ public ResourceResolver getTemplateResourceResolver(WebuiRequestContext context, String template) { try { DMSConfiguration dmsConfiguration = getApplicationComponent(DMSConfiguration.class); String workspace = dmsConfiguration.getConfig().getSystemWorkspace(); return new JCRResourceResolver(workspace); } catch (Exception e) { return null; } } /** * Gets the portlet id. * * @return the portlet id */ public String getPortletId() { PortletRequestContext pContext = (PortletRequestContext) WebuiRequestContext.getCurrentInstance(); return pContext.getWindowId(); } /** * The listener interface for receiving quickEditAction events. The class that * is interested in processing a quickEditAction event implements this * interface, and the object created with that class is registered with a * component using the component's * <code>addQuickEditActionListener</code> method. When * the quickEditAction event occurs, that object's appropriate * method is invoked. */ public static class QuickEditActionListener extends EventListener<UISearchPageLayout> { /* * (non-Javadoc) * @see * org.exoplatform.webui.event.EventListener#execute(org.exoplatform.webui * .event.Event) */ public void execute(Event<UISearchPageLayout> event) throws Exception { PortletRequestContext context = (PortletRequestContext) event.getRequestContext(); context.setApplicationMode(PortletMode.EDIT); } } }