UIContentResultViewer.java
package org.exoplatform.wcm.webui.selector.content;
import javax.jcr.Node;
import javax.portlet.PortletPreferences;
import org.exoplatform.portal.webui.util.Util;
import org.exoplatform.services.wcm.core.NodeIdentifier;
import org.exoplatform.services.wcm.core.NodeLocation;
import org.exoplatform.services.wcm.publication.NotInWCMPublicationException;
import org.exoplatform.services.wcm.publication.WCMPublicationService;
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.UIContainer;
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.EventListener;
/**
* Author : TAN DUNG DANG
* dzungdev@gmail.com
* Feb 12, 2009
*/
@ComponentConfig (
template="classpath:groovy/wcm/webui/selector/content/UIContentResultViewer.gtmpl",
events = {
@EventConfig(listeners = UIContentResultViewer.SelectActionListener.class)
}
)
public class UIContentResultViewer extends UIContainer {
private NodeLocation presentNodeLocation;
public String[] getActions() {
return new String[] {"Select"};
}
public static class SelectActionListener extends EventListener<UIContentResultViewer> {
public void execute(Event<UIContentResultViewer> event) throws Exception {
UIContentResultViewer contentResultView = event.getSource();
Node presentNode = NodeLocation.getNodeByLocation(contentResultView.presentNodeLocation);
Node webContent = presentNode;
NodeIdentifier nodeIdentifier = NodeIdentifier.make(webContent);
PortletRequestContext pContext = (PortletRequestContext) event.getRequestContext();
PortletPreferences prefs = pContext.getRequest().getPreferences();
prefs.setValue("repository", nodeIdentifier.getRepository());
prefs.setValue("workspace", nodeIdentifier.getWorkspace());
prefs.setValue("nodeIdentifier", nodeIdentifier.getUUID());
prefs.store();
String remoteUser = Util.getPortalRequestContext().getRemoteUser();
String currentSite = Util.getPortalRequestContext().getPortalOwner();
WCMPublicationService wcmPublicationService = contentResultView.getApplicationComponent(WCMPublicationService.class);
try {
wcmPublicationService.isEnrolledInWCMLifecycle(webContent);
} catch (NotInWCMPublicationException e){
wcmPublicationService.unsubcribeLifecycle(webContent);
wcmPublicationService.enrollNodeInLifecycle(webContent, currentSite, remoteUser);
}
}
}
}