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.lar.ExportImportHelperUtil;
024 import com.liferay.portal.kernel.servlet.SessionErrors;
025 import com.liferay.portal.kernel.staging.StagingUtil;
026 import com.liferay.portal.kernel.util.Constants;
027 import com.liferay.portal.kernel.util.DateRange;
028 import com.liferay.portal.kernel.util.ParamUtil;
029 import com.liferay.portal.kernel.util.Validator;
030 import com.liferay.portal.security.auth.PrincipalException;
031 import com.liferay.portlet.sites.action.ActionUtil;
032
033 import java.util.Date;
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 EditLayoutsAction {
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 try {
064 checkPermissions(actionRequest);
065 }
066 catch (PrincipalException pe) {
067 return;
068 }
069
070 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
071
072 String redirect = ParamUtil.getString(actionRequest, "redirect");
073 String closeRedirect = ParamUtil.getString(
074 actionRequest, "closeRedirect");
075
076 try {
077 if (Validator.isNotNull(cmd)) {
078 if (cmd.equals("copy_from_live")) {
079 StagingUtil.copyFromLive(actionRequest);
080 }
081 else if (cmd.equals("publish_to_live")) {
082 StagingUtil.publishToLive(actionRequest);
083 }
084 else if (cmd.equals("publish_to_remote")) {
085 StagingUtil.publishToRemote(actionRequest);
086 }
087 else if (cmd.equals("schedule_copy_from_live")) {
088 StagingUtil.scheduleCopyFromLive(actionRequest);
089 }
090 else if (cmd.equals("schedule_publish_to_live")) {
091 StagingUtil.schedulePublishToLive(actionRequest);
092 }
093 else if (cmd.equals("schedule_publish_to_remote")) {
094 StagingUtil.schedulePublishToRemote(actionRequest);
095 }
096 else if (cmd.equals("unschedule_copy_from_live")) {
097 StagingUtil.unscheduleCopyFromLive(actionRequest);
098 }
099 else if (cmd.equals("unschedule_publish_to_live")) {
100 StagingUtil.unschedulePublishToLive(actionRequest);
101 }
102 else if (cmd.equals("unschedule_publish_to_remote")) {
103 StagingUtil.unschedulePublishToRemote(actionRequest);
104 }
105
106 sendRedirect(
107 portletConfig, actionRequest, actionResponse, redirect,
108 closeRedirect);
109 }
110 else {
111 long groupId = ParamUtil.getLong(
112 actionRequest, "stagingGroupId");
113 boolean privateLayout = ParamUtil.getBoolean(
114 actionRequest, "privateLayout");
115
116 DateRange dateRange = ExportImportHelperUtil.getDateRange(
117 actionRequest, groupId, privateLayout, 0, null);
118
119 Date startDate = dateRange.getStartDate();
120
121 if (startDate != null) {
122 actionResponse.setRenderParameter(
123 "startDate", String.valueOf(startDate.getTime()));
124 }
125
126 Date endDate = dateRange.getEndDate();
127
128 if (endDate != null) {
129 actionResponse.setRenderParameter(
130 "endDate", String.valueOf(endDate.getTime()));
131 }
132 }
133 }
134 catch (Exception e) {
135 if (e instanceof PrincipalException) {
136 SessionErrors.add(actionRequest, e.getClass());
137
138 setForward(actionRequest, "portlet.layouts_admin.error");
139 }
140 else if (e instanceof DuplicateLockException ||
141 e instanceof LayoutPrototypeException ||
142 e instanceof RemoteExportException ||
143 e instanceof RemoteOptionsException ||
144 e instanceof SystemException) {
145
146 SessionErrors.add(actionRequest, e.getClass(), e);
147
148 redirect = ParamUtil.getString(actionRequest, "pagesRedirect");
149
150 sendRedirect(
151 portletConfig, actionRequest, actionResponse, redirect,
152 closeRedirect);
153 }
154 else {
155 throw e;
156 }
157 }
158 }
159
160 @Override
161 public ActionForward render(
162 ActionMapping actionMapping, ActionForm actionForm,
163 PortletConfig portletConfig, RenderRequest renderRequest,
164 RenderResponse renderResponse)
165 throws Exception {
166
167 try {
168 ActionUtil.getGroup(renderRequest);
169 }
170 catch (Exception e) {
171 if (e instanceof NoSuchGroupException ||
172 e instanceof PrincipalException) {
173
174 SessionErrors.add(renderRequest, e.getClass());
175
176 return actionMapping.findForward("portlet.layouts_admin.error");
177 }
178 else {
179 throw e;
180 }
181 }
182
183 return actionMapping.findForward(
184 getForward(renderRequest, "portlet.layouts_admin.publish_layouts"));
185 }
186
187 @Override
188 public void serveResource(
189 ActionMapping actionMapping, ActionForm actionForm,
190 PortletConfig portletConfig, ResourceRequest resourceRequest,
191 ResourceResponse resourceResponse)
192 throws Exception {
193
194 PortletContext portletContext = portletConfig.getPortletContext();
195
196 PortletRequestDispatcher portletRequestDispatcher =
197 portletContext.getRequestDispatcher(
198 "/html/portlet/layouts_admin/publish_layouts_processes.jsp");
199
200 portletRequestDispatcher.include(resourceRequest, resourceResponse);
201 }
202
203 }