001
014
015 package com.liferay.portlet.exportimport.action;
016
017 import com.liferay.portal.NoSuchGroupException;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.log.Log;
020 import com.liferay.portal.kernel.log.LogFactoryUtil;
021 import com.liferay.portal.kernel.servlet.SessionErrors;
022 import com.liferay.portal.kernel.servlet.SessionMessages;
023 import com.liferay.portal.kernel.util.Constants;
024 import com.liferay.portal.kernel.util.MapUtil;
025 import com.liferay.portal.kernel.util.ParamUtil;
026 import com.liferay.portal.kernel.util.Validator;
027 import com.liferay.portal.model.BackgroundTask;
028 import com.liferay.portal.security.auth.PrincipalException;
029 import com.liferay.portal.service.BackgroundTaskLocalServiceUtil;
030 import com.liferay.portal.theme.ThemeDisplay;
031 import com.liferay.portal.util.PortalUtil;
032 import com.liferay.portal.util.WebKeys;
033 import com.liferay.portlet.exportimport.configuration.ExportImportConfigurationConstants;
034 import com.liferay.portlet.exportimport.configuration.ExportImportConfigurationHelper;
035 import com.liferay.portlet.exportimport.configuration.ExportImportConfigurationSettingsMapFactory;
036 import com.liferay.portlet.exportimport.model.ExportImportConfiguration;
037 import com.liferay.portlet.exportimport.service.ExportImportConfigurationLocalServiceUtil;
038 import com.liferay.portlet.exportimport.staging.StagingUtil;
039 import com.liferay.portlet.sites.action.ActionUtil;
040
041 import java.io.Serializable;
042
043 import java.util.Map;
044
045 import javax.portlet.ActionRequest;
046 import javax.portlet.ActionResponse;
047 import javax.portlet.PortletConfig;
048 import javax.portlet.PortletContext;
049 import javax.portlet.PortletRequestDispatcher;
050 import javax.portlet.RenderRequest;
051 import javax.portlet.RenderResponse;
052 import javax.portlet.ResourceRequest;
053 import javax.portlet.ResourceResponse;
054
055 import org.apache.struts.action.ActionForm;
056 import org.apache.struts.action.ActionForward;
057 import org.apache.struts.action.ActionMapping;
058
059
064 public class EditPublishConfigurationAction
065 extends EditExportConfigurationAction {
066
067 @Override
068 public void processAction(
069 ActionMapping actionMapping, ActionForm actionForm,
070 PortletConfig portletConfig, ActionRequest actionRequest,
071 ActionResponse actionResponse)
072 throws Exception {
073
074 hideDefaultSuccessMessage(actionRequest);
075
076 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
077
078 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
079 WebKeys.THEME_DISPLAY);
080
081 try {
082 long exportImportConfigurationId = ParamUtil.getLong(
083 actionRequest, "exportImportConfigurationId");
084
085 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
086 updatePublishConfiguration(actionRequest);
087 }
088 else if (cmd.equals(Constants.DELETE)) {
089 deleteExportImportConfiguration(actionRequest, false);
090 }
091 else if (cmd.equals(Constants.MOVE_TO_TRASH)) {
092 deleteExportImportConfiguration(actionRequest, true);
093 }
094 else if (cmd.equals(Constants.PUBLISH_TO_LIVE)) {
095 StagingUtil.publishLayouts(
096 themeDisplay.getUserId(), exportImportConfigurationId);
097 }
098 else if (cmd.equals(Constants.PUBLISH_TO_REMOTE)) {
099 StagingUtil.copyRemoteLayouts(exportImportConfigurationId);
100 }
101 else if (cmd.equals(Constants.RELAUNCH)) {
102 relaunchPublishLayoutConfiguration(
103 themeDisplay.getUserId(), actionRequest);
104 }
105 else if (Validator.isNull(cmd)) {
106 addSessionMessages(actionRequest);
107 }
108
109 String redirect = ParamUtil.getString(actionRequest, "redirect");
110
111 sendRedirect(actionRequest, actionResponse, redirect);
112 }
113 catch (Exception e) {
114 _log.error(e, e);
115
116 SessionErrors.add(actionRequest, e.getClass());
117
118 sendRedirect(actionRequest, actionResponse);
119 }
120 }
121
122 @Override
123 public ActionForward render(
124 ActionMapping actionMapping, ActionForm actionForm,
125 PortletConfig portletConfig, RenderRequest renderRequest,
126 RenderResponse renderResponse)
127 throws Exception {
128
129 try {
130 ActionUtil.getGroup(renderRequest);
131 }
132 catch (Exception e) {
133 if (e instanceof NoSuchGroupException ||
134 e instanceof PrincipalException) {
135
136 SessionErrors.add(renderRequest, e.getClass());
137
138 return actionMapping.findForward("portlet.export_import.error");
139 }
140 else {
141 throw e;
142 }
143 }
144
145 return actionMapping.findForward(
146 getForward(renderRequest, "portlet.export_import.publish_layouts"));
147 }
148
149 @Override
150 public void serveResource(
151 ActionMapping actionMapping, ActionForm actionForm,
152 PortletConfig portletConfig, ResourceRequest resourceRequest,
153 ResourceResponse resourceResponse)
154 throws Exception {
155
156 PortletContext portletContext = portletConfig.getPortletContext();
157
158 PortletRequestDispatcher portletRequestDispatcher =
159 portletContext.getRequestDispatcher(
160 "/html/portlet/export_import/publish_layouts_processes.jsp");
161
162 portletRequestDispatcher.include(resourceRequest, resourceResponse);
163 }
164
165 @Override
166 protected void addSessionMessages(ActionRequest actionRequest)
167 throws Exception {
168
169 String portletId = PortalUtil.getPortletId(actionRequest);
170 long exportImportConfigurationId = ParamUtil.getLong(
171 actionRequest, "exportImportConfigurationId");
172
173 SessionMessages.add(
174 actionRequest, portletId + "exportImportConfigurationId",
175 exportImportConfigurationId);
176
177 String name = ParamUtil.getString(actionRequest, "name");
178 String description = ParamUtil.getString(actionRequest, "description");
179
180 SessionMessages.add(actionRequest, portletId + "name", name);
181 SessionMessages.add(
182 actionRequest, portletId + "description", description);
183
184 long groupId = ParamUtil.getLong(actionRequest, "groupId");
185
186 int exportImportConfigurationType =
187 ExportImportConfigurationConstants.TYPE_PUBLISH_LAYOUT_REMOTE;
188
189 boolean localPublishing = ParamUtil.getBoolean(
190 actionRequest, "localPublishing");
191
192 if (localPublishing) {
193 exportImportConfigurationType =
194 ExportImportConfigurationConstants.TYPE_PUBLISH_LAYOUT_LOCAL;
195 }
196
197 Map<String, Serializable> settingsMap =
198 ExportImportConfigurationSettingsMapFactory.buildSettingsMap(
199 actionRequest, groupId, exportImportConfigurationType);
200
201 SessionMessages.add(
202 actionRequest, portletId + "settingsMap", settingsMap);
203 }
204
205 protected void relaunchPublishLayoutConfiguration(
206 long userId, ActionRequest actionRequest)
207 throws PortalException {
208
209 long backgroundTaskId = ParamUtil.getLong(
210 actionRequest, "backgroundTaskId");
211
212 BackgroundTask backgroundTask =
213 BackgroundTaskLocalServiceUtil.getBackgroundTask(backgroundTaskId);
214
215 Map<String, Serializable> taskContextMap =
216 backgroundTask.getTaskContextMap();
217
218 ExportImportConfiguration exportImportConfiguration =
219 ExportImportConfigurationLocalServiceUtil.
220 getExportImportConfiguration(
221 MapUtil.getLong(
222 taskContextMap, "exportImportConfigurationId"));
223
224 if (exportImportConfiguration.getType() ==
225 ExportImportConfigurationConstants.TYPE_PUBLISH_LAYOUT_LOCAL) {
226
227 StagingUtil.publishLayouts(userId, exportImportConfiguration);
228 }
229 else if (exportImportConfiguration.getType() ==
230 ExportImportConfigurationConstants.
231 TYPE_PUBLISH_LAYOUT_REMOTE) {
232
233 StagingUtil.copyRemoteLayouts(exportImportConfiguration);
234 }
235 }
236
237 protected ExportImportConfiguration updatePublishConfiguration(
238 ActionRequest actionRequest)
239 throws Exception {
240
241 long exportImportConfigurationId = ParamUtil.getLong(
242 actionRequest, "exportImportConfigurationId");
243
244 boolean localPublishing = ParamUtil.getBoolean(
245 actionRequest, "localPublishing");
246
247 if (exportImportConfigurationId > 0) {
248 if (localPublishing) {
249 return ExportImportConfigurationHelper.
250 updatePublishLayoutLocalExportImportConfiguration(
251 actionRequest);
252 }
253 else {
254 return ExportImportConfigurationHelper.
255 updatePublishLayoutRemoteExportImportConfiguration(
256 actionRequest);
257 }
258 }
259 else {
260 if (localPublishing) {
261 return ExportImportConfigurationHelper.
262 addPublishLayoutLocalExportImportConfiguration(
263 actionRequest);
264 }
265 else {
266 return ExportImportConfigurationHelper.
267 addPublishLayoutRemoteExportImportConfiguration(
268 actionRequest);
269 }
270 }
271 }
272
273 private static final Log _log = LogFactoryUtil.getLog(
274 EditPublishConfigurationAction.class);
275
276 }