1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.exoplatform.ecm.webui.component.explorer.control.action;
18
19 import java.util.Arrays;
20 import java.util.List;
21
22 import javax.jcr.Node;
23
24 import org.exoplatform.ecm.webui.component.explorer.UIJCRExplorer;
25 import org.exoplatform.ecm.webui.component.explorer.control.UIActionBar;
26 import org.exoplatform.ecm.webui.component.explorer.control.filter.CanRemoveNodeFilter;
27 import org.exoplatform.ecm.webui.component.explorer.control.filter.CanSetPropertyFilter;
28 import org.exoplatform.ecm.webui.component.explorer.control.filter.HasPublicationLifecycleFilter;
29 import org.exoplatform.ecm.webui.component.explorer.control.filter.IsCheckedOutFilter;
30 import org.exoplatform.ecm.webui.component.explorer.control.filter.IsDocumentFilter;
31 import org.exoplatform.ecm.webui.component.explorer.control.filter.IsNotEditingDocumentFilter;
32 import org.exoplatform.ecm.webui.component.explorer.control.filter.IsNotLockedFilter;
33 import org.exoplatform.ecm.webui.component.explorer.control.filter.IsNotRootNodeFilter;
34 import org.exoplatform.ecm.webui.component.explorer.control.filter.IsNotIgnoreVersionNodeFilter;
35 import org.exoplatform.ecm.webui.component.explorer.control.listener.UIActionBarActionListener;
36 import org.exoplatform.ecm.webui.component.explorer.popup.admin.UIActivePublication;
37 import org.exoplatform.ecm.webui.component.explorer.popup.admin.UIPublicationManager;
38 import org.exoplatform.services.ecm.publication.PublicationPresentationService;
39 import org.exoplatform.services.ecm.publication.PublicationService;
40 import org.exoplatform.services.ecm.publication.plugins.webui.UIPublicationLogList;
41 import org.exoplatform.webui.config.annotation.ComponentConfig;
42 import org.exoplatform.webui.config.annotation.EventConfig;
43 import org.exoplatform.webui.core.UIComponent;
44 import org.exoplatform.webui.core.UIContainer;
45 import org.exoplatform.webui.core.UIPopupComponent;
46 import org.exoplatform.webui.core.UIPopupContainer;
47 import org.exoplatform.webui.event.Event;
48 import org.exoplatform.webui.ext.filter.UIExtensionFilter;
49 import org.exoplatform.webui.ext.filter.UIExtensionFilters;
50 import org.exoplatform.webui.form.UIForm;
51
52
53
54
55
56
57
58 @ComponentConfig(
59 events = {
60 @EventConfig(listeners = ManagePublicationsActionComponent.ManagePublicationsActionListener.class)
61 }
62 )
63 public class ManagePublicationsActionComponent extends UIComponent {
64
65 private static final List<UIExtensionFilter> FILTERS = Arrays.asList(new UIExtensionFilter[] {
66 new HasPublicationLifecycleFilter(),
67 new IsDocumentFilter("UIActionBar.msg.manage-publication.not-supported-nodetype"),
68 new IsNotRootNodeFilter("UIActionBar.msg.cannot-enable-publication-rootnode"),
69 new CanSetPropertyFilter("UIActionBar.msg.access-denied"),
70 new IsNotLockedFilter(),
71 new IsNotIgnoreVersionNodeFilter(),
72 new IsNotEditingDocumentFilter(),
73 new IsCheckedOutFilter()});
74
75 @UIExtensionFilters
76 public List<UIExtensionFilter> getFilters() {
77 return FILTERS;
78 }
79
80 public static class ManagePublicationsActionListener extends UIActionBarActionListener<ManagePublicationsActionComponent> {
81 public void processEvent(Event<ManagePublicationsActionComponent> event) throws Exception {
82 UIActionBar uiActionBar = event.getSource().getAncestorOfType(UIActionBar.class);
83 UIJCRExplorer uiExplorer = uiActionBar.getAncestorOfType(UIJCRExplorer.class);
84 UIPopupContainer UIPopupContainer = uiExplorer.getChild(UIPopupContainer.class);
85 Node currentNode = uiExplorer.getCurrentNode();
86 uiExplorer.setIsHidePopup(false);
87 PublicationService publicationService = uiActionBar.getApplicationComponent(PublicationService.class);
88 PublicationPresentationService publicationPresentationService = uiActionBar.
89 getApplicationComponent(PublicationPresentationService.class);
90 if (!publicationService.isNodeEnrolledInLifecycle(currentNode)) {
91 UIActivePublication activePublication = uiActionBar.createUIComponent(UIActivePublication.class,null,null);
92 if(publicationService.getPublicationPlugins().size() == 1) {
93 activePublication.setRendered(false);
94 uiExplorer.addChild(activePublication);
95 String lifecycleName = publicationService.getPublicationPlugins().keySet().iterator().next();
96 activePublication.enrolNodeInLifecycle(currentNode,lifecycleName,event.getRequestContext());
97 return;
98 }
99 activePublication.setRendered(true);
100 activePublication.refresh(activePublication.getUIPageIterator().getCurrentPage());
101 UIPopupContainer.activate(activePublication, 600, 300);
102 event.getRequestContext().addUIComponentToUpdateByAjax(UIPopupContainer);
103 return;
104 }
105 UIContainer cont = uiActionBar.createUIComponent(UIContainer.class, null, null);
106 UIForm uiForm = publicationPresentationService.getStateUI(currentNode, cont);
107 if (uiForm instanceof UIPopupComponent) {
108
109
110 UIPopupContainer.activate(uiForm, 700, 500);
111 } else {
112 UIPublicationManager uiPublicationManager =
113 uiExplorer.createUIComponent(UIPublicationManager.class, null, null);
114 uiPublicationManager.addChild(uiForm);
115 uiPublicationManager.addChild(UIPublicationLogList.class, null, null).setRendered(false);
116 UIPublicationLogList uiPublicationLogList =
117 uiPublicationManager.getChild(UIPublicationLogList.class);
118 UIPopupContainer.activate(uiPublicationManager, 700, 500);
119 uiPublicationLogList.setNode(currentNode);
120 uiPublicationLogList.updateGrid();
121 }
122 event.getRequestContext().addUIComponentToUpdateByAjax(UIPopupContainer);
123 }
124 }
125 }