/*************************************************************************** * Copyright (C) 2003-2009 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.ecm.webui.component.explorer.rightclick.manager; import java.util.Arrays; import java.util.List; import javax.jcr.Node; import org.exoplatform.ecm.webui.component.explorer.UIJCRExplorer; import org.exoplatform.ecm.webui.component.explorer.control.filter.IsDocumentFilter; import org.exoplatform.ecm.webui.component.explorer.control.filter.IsNotInTrashFilter; import org.exoplatform.portal.application.PortalRequestContext; import org.exoplatform.portal.webui.util.Util; 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.core.lifecycle.UIContainerLifecycle; import org.exoplatform.webui.ext.filter.UIExtensionFilter; import org.exoplatform.webui.ext.filter.UIExtensionFilters; import org.exoplatform.webui.ext.manager.UIAbstractManager; import org.exoplatform.webui.ext.manager.UIAbstractManagerComponent; /** * Created by The eXo Platform SARL Author : Hoang Van Hung hunghvit@gmail.com * Aug 6, 2009 */ @ComponentConfig( lifecycle = UIContainerLifecycle.class ) public class PermlinkActionComponent extends UIAbstractManagerComponent { private static final List<UIExtensionFilter> FILTERS = Arrays.asList(new UIExtensionFilter[] { new IsNotInTrashFilter(), new IsDocumentFilter() }); @UIExtensionFilters public List<UIExtensionFilter> getFilters() { return FILTERS; } public String getPermlink(UIJCRExplorer uiExplorer, Node node) throws Exception { if (uiExplorer == null) { uiExplorer = getAncestorOfType(UIJCRExplorer.class); } if (node == null) { node = uiExplorer.getCurrentNode(); } PortalRequestContext pcontext = Util.getPortalRequestContext(); String portletId = pcontext.getNodePath(); String drivename = uiExplorer.getDriveData().getName(); String nodePath = node.getPath().replaceAll("/+", "/"); String path = new StringBuilder().append(drivename) .append(nodePath) .toString(); NodeURL nodeURL = Util.getPortalRequestContext().createURL(NodeURL.TYPE); NavigationResource resource = new NavigationResource(pcontext.getSiteType(), pcontext.getSiteName(), portletId); nodeURL.setResource(resource); nodeURL.setQueryParameterValue("path", path); return nodeURL.toString(); } public String getPermlink(UIJCRExplorer uiExplorer) throws Exception { return getPermlink(uiExplorer, null); } public String getPermlink(Node node) throws Exception { return getPermlink(null, node); } public String getPermlink() throws Exception { return getPermlink(null, null); } @Override public Class<? extends UIAbstractManager> getUIAbstractManagerClass() { return null; } }