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(actionRequest, "groupId");
112 boolean privateLayout = ParamUtil.getBoolean(
113 actionRequest, "privateLayout");
114
115 DateRange dateRange = ExportImportHelperUtil.getDateRange(
116 actionRequest, groupId, privateLayout, 0, null);
117
118 Date startDate = dateRange.getStartDate();
119
120 if (startDate != null) {
121 actionResponse.setRenderParameter(
122 "startDate", String.valueOf(startDate.getTime()));
123 }
124
125 Date endDate = dateRange.getEndDate();
126
127 if (endDate != null) {
128 actionResponse.setRenderParameter(
129 "endDate", String.valueOf(endDate.getTime()));
130 }
131 }
132 }
133 catch (Exception e) {
134 if (e instanceof PrincipalException) {
135 SessionErrors.add(actionRequest, e.getClass());
136
137 setForward(actionRequest, "portlet.layouts_admin.error");
138 }
139 else if (e instanceof DuplicateLockException ||
140 e instanceof LayoutPrototypeException ||
141 e instanceof RemoteExportException ||
142 e instanceof RemoteOptionsException ||
143 e instanceof SystemException) {
144
145 SessionErrors.add(actionRequest, e.getClass(), e);
146
147 redirect = ParamUtil.getString(actionRequest, "pagesRedirect");
148
149 sendRedirect(
150 portletConfig, actionRequest, actionResponse, redirect,
151 closeRedirect);
152 }
153 else {
154 throw e;
155 }
156 }
157 }
158
159 @Override
160 public ActionForward render(
161 ActionMapping actionMapping, ActionForm actionForm,
162 PortletConfig portletConfig, RenderRequest renderRequest,
163 RenderResponse renderResponse)
164 throws Exception {
165
166 try {
167 ActionUtil.getGroup(renderRequest);
168 }
169 catch (Exception e) {
170 if (e instanceof NoSuchGroupException ||
171 e instanceof PrincipalException) {
172
173 SessionErrors.add(renderRequest, e.getClass());
174
175 return actionMapping.findForward("portlet.layouts_admin.error");
176 }
177 else {
178 throw e;
179 }
180 }
181
182 return actionMapping.findForward(
183 getForward(renderRequest, "portlet.layouts_admin.publish_layouts"));
184 }
185
186 @Override
187 public void serveResource(
188 ActionMapping actionMapping, ActionForm actionForm,
189 PortletConfig portletConfig, ResourceRequest resourceRequest,
190 ResourceResponse resourceResponse)
191 throws Exception {
192
193 PortletContext portletContext = portletConfig.getPortletContext();
194
195 PortletRequestDispatcher portletRequestDispatcher =
196 portletContext.getRequestDispatcher(
197 "/html/portlet/layouts_admin/publish_layouts_processes.jsp");
198
199 portletRequestDispatcher.include(resourceRequest, resourceResponse);
200 }
201
202 }