/* * 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.services.wcm.publication.lifecycle.stageversion.ui; import java.util.ArrayList; import java.util.List; import javax.jcr.Node; import javax.jcr.Value; import org.exoplatform.portal.webui.container.UIContainer; import org.exoplatform.services.wcm.publication.PublicationUtil; 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 : Hoa Pham * hoa.pham@exoplatform.com * Sep 9, 2008 */ @ComponentConfig( lifecycle = Lifecycle.class, template = "classpath:groovy/wcm/webui/publication/lifecycle/stageversion/ui/UIPublishedPages.gtmpl", events = { @EventConfig(listeners=UIPublishedPages.SelectNavigationNodeURIActionListener.class) } ) public class UIPublishedPages extends UIContainer { /** The selected navigation node uri. */ private String selectedNavigationNodeURI; /** The list navigation node uri. */ private List<String> listNavigationNodeURI; /** * Gets the list navigation node uri. * * @return the list navigation node uri */ public List<String> getListNavigationNodeURI() {return listNavigationNodeURI;} /** * Sets the list navigation node uri. * * @param listNavigationNodeURI the new list navigation node uri */ public void setListNavigationNodeURI(List<String> listNavigationNodeURI) {this.listNavigationNodeURI = listNavigationNodeURI;} /** * Gets the selected navigation node uri. * * @return the selected navigation node uri */ public String getSelectedNavigationNodeURI() {return selectedNavigationNodeURI;} /** * Sets the selected navigation node uri. * * @param selectedNavigationNodeURI the new selected navigation node uri */ public void setSelectedNavigationNodeURI(String selectedNavigationNodeURI) { this.selectedNavigationNodeURI = selectedNavigationNodeURI; } /** * Inits the. * * @throws Exception the exception */ public void init() throws Exception { UIPublicationPages publishingPanel = getAncestorOfType(UIPublicationPages.class); Node contentNode = publishingPanel.getNode(); if (contentNode.hasProperty("publication:navigationNodeURIs")) { listNavigationNodeURI = new ArrayList<String>(); Value[] values = null; try{ values = contentNode.getProperty("publication:navigationNodeURIs").getValues(); }catch(Exception ex){ values = new Value[]{contentNode.getProperty("publication:navigationNodeURIs").getValue()}; } for (Value value : values) { if (PublicationUtil.isNodeContentPublishedToPageNode(contentNode, value.getString())) { if(!listNavigationNodeURI.contains(value.getString())) listNavigationNodeURI.add(value.getString()); } } } else { listNavigationNodeURI = new ArrayList<String>(); } } /** * The listener interface for receiving selectNavigationNodeURIAction events. * The class that is interested in processing a selectNavigationNodeURIAction * event implements this interface, and the object created * with that class is registered with a component using the * component's <code>addSelectNavigationNodeURIActionListener</code> method. When * the selectNavigationNodeURIAction event occurs, that object's appropriate * method is invoked. */ public static class SelectNavigationNodeURIActionListener extends EventListener<UIPublishedPages> { /* (non-Javadoc) * @see org.exoplatform.webui.event.EventListener#execute(org.exoplatform.webui.event.Event) */ public void execute(Event<UIPublishedPages> event) throws Exception { UIPublishedPages publishedPages = event.getSource(); String selectedTreeNode = event.getRequestContext().getRequestParameter(OBJECTID); publishedPages.setSelectedNavigationNodeURI(selectedTreeNode); UIPublicationContainer publicationContainer = publishedPages.getAncestorOfType(UIPublicationContainer.class); UIPublicationPagesContainer publicationPagesContainer = publishedPages. getAncestorOfType(UIPublicationPagesContainer.class); publicationContainer.setActiveTab(publicationPagesContainer, event.getRequestContext()); } } }