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