/*
* 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());
}
}
}