001
014
015 package com.liferay.portlet.exportimport.action;
016
017 import com.liferay.portal.LayoutPrototypeException;
018 import com.liferay.portal.NoSuchGroupException;
019 import com.liferay.portal.RemoteOptionsException;
020 import com.liferay.portal.kernel.exception.SystemException;
021 import com.liferay.portal.kernel.lock.DuplicateLockException;
022 import com.liferay.portal.kernel.servlet.SessionErrors;
023 import com.liferay.portal.kernel.util.Constants;
024 import com.liferay.portal.kernel.util.ParamUtil;
025 import com.liferay.portal.kernel.util.StringUtil;
026 import com.liferay.portal.kernel.util.Validator;
027 import com.liferay.portal.security.auth.AuthException;
028 import com.liferay.portal.security.auth.PrincipalException;
029 import com.liferay.portal.security.auth.RemoteAuthException;
030 import com.liferay.portal.struts.PortletAction;
031 import com.liferay.portlet.exportimport.RemoteExportException;
032 import com.liferay.portlet.exportimport.staging.StagingUtil;
033 import com.liferay.portlet.sites.action.ActionUtil;
034
035 import javax.portlet.ActionRequest;
036 import javax.portlet.ActionResponse;
037 import javax.portlet.PortletConfig;
038 import javax.portlet.PortletContext;
039 import javax.portlet.PortletRequestDispatcher;
040 import javax.portlet.RenderRequest;
041 import javax.portlet.RenderResponse;
042 import javax.portlet.ResourceRequest;
043 import javax.portlet.ResourceResponse;
044
045 import org.apache.struts.action.ActionForm;
046 import org.apache.struts.action.ActionForward;
047 import org.apache.struts.action.ActionMapping;
048
049
054 public class PublishLayoutsAction extends PortletAction {
055
056 @Override
057 public void processAction(
058 ActionMapping actionMapping, ActionForm actionForm,
059 PortletConfig portletConfig, ActionRequest actionRequest,
060 ActionResponse actionResponse)
061 throws Exception {
062
063 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
064
065 String redirect = ParamUtil.getString(actionRequest, "redirect");
066 String closeRedirect = ParamUtil.getString(
067 actionRequest, "closeRedirect");
068
069 try {
070 if (Validator.isNotNull(cmd)) {
071 if (cmd.equals("copy_from_live")) {
072 StagingUtil.copyFromLive(actionRequest);
073 }
074 else if (cmd.equals(Constants.PUBLISH_TO_LIVE)) {
075 hideDefaultSuccessMessage(actionRequest);
076
077 StagingUtil.publishToLive(actionRequest);
078 }
079 else if (cmd.equals(Constants.PUBLISH_TO_REMOTE)) {
080 hideDefaultSuccessMessage(actionRequest);
081
082 StagingUtil.publishToRemote(actionRequest);
083 }
084 else if (cmd.equals("schedule_copy_from_live")) {
085 StagingUtil.scheduleCopyFromLive(actionRequest);
086 }
087 else if (cmd.equals("schedule_publish_to_live")) {
088 StagingUtil.schedulePublishToLive(actionRequest);
089 }
090 else if (cmd.equals("schedule_publish_to_remote")) {
091 StagingUtil.schedulePublishToRemote(actionRequest);
092 }
093 else if (cmd.equals("unschedule_copy_from_live")) {
094 StagingUtil.unscheduleCopyFromLive(actionRequest);
095 }
096 else if (cmd.equals("unschedule_publish_to_live")) {
097 StagingUtil.unschedulePublishToLive(actionRequest);
098 }
099 else if (cmd.equals("unschedule_publish_to_remote")) {
100 StagingUtil.unschedulePublishToRemote(actionRequest);
101 }
102
103 sendRedirect(
104 portletConfig, actionRequest, actionResponse, redirect,
105 closeRedirect);
106 }
107 }
108 catch (Exception e) {
109 if (e instanceof PrincipalException) {
110 SessionErrors.add(actionRequest, e.getClass());
111
112 setForward(actionRequest, "portlet.export_import.error");
113 }
114 else if (e instanceof AuthException ||
115 e instanceof DuplicateLockException ||
116 e instanceof LayoutPrototypeException ||
117 e instanceof RemoteAuthException ||
118 e instanceof RemoteExportException ||
119 e instanceof RemoteOptionsException ||
120 e instanceof SystemException) {
121
122 if (e instanceof RemoteAuthException) {
123 SessionErrors.add(actionRequest, AuthException.class, e);
124 }
125 else {
126 SessionErrors.add(actionRequest, e.getClass(), e);
127 }
128
129 redirect = StringUtil.replace(
130 redirect, "tabs2=current-and-previous",
131 "tabs2=new-publication-process");
132
133 sendRedirect(
134 portletConfig, actionRequest, actionResponse, redirect,
135 closeRedirect);
136 }
137 else {
138 throw e;
139 }
140 }
141 }
142
143 @Override
144 public ActionForward render(
145 ActionMapping actionMapping, ActionForm actionForm,
146 PortletConfig portletConfig, RenderRequest renderRequest,
147 RenderResponse renderResponse)
148 throws Exception {
149
150 try {
151 ActionUtil.getGroup(renderRequest);
152 }
153 catch (Exception e) {
154 if (e instanceof NoSuchGroupException ||
155 e instanceof PrincipalException) {
156
157 SessionErrors.add(renderRequest, e.getClass());
158
159 return actionMapping.findForward("portlet.export_import.error");
160 }
161 else {
162 throw e;
163 }
164 }
165
166 return actionMapping.findForward(
167 getForward(renderRequest, "portlet.export_import.publish_layouts"));
168 }
169
170 @Override
171 public void serveResource(
172 ActionMapping actionMapping, ActionForm actionForm,
173 PortletConfig portletConfig, ResourceRequest resourceRequest,
174 ResourceResponse resourceResponse)
175 throws Exception {
176
177 PortletContext portletContext = portletConfig.getPortletContext();
178
179 PortletRequestDispatcher portletRequestDispatcher =
180 portletContext.getRequestDispatcher(
181 "/html/portlet/export_import/publish_layouts_processes.jsp");
182
183 portletRequestDispatcher.include(resourceRequest, resourceResponse);
184 }
185
186 }