001
014
015 package com.liferay.portlet.layoutsadmin.action;
016
017 import com.liferay.portal.NoSuchGroupException;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.lar.exportimportconfiguration.ExportImportConfigurationConstants;
020 import com.liferay.portal.kernel.lar.exportimportconfiguration.ExportImportConfigurationHelper;
021 import com.liferay.portal.kernel.lar.exportimportconfiguration.ExportImportConfigurationSettingsMapFactory;
022 import com.liferay.portal.kernel.log.Log;
023 import com.liferay.portal.kernel.log.LogFactoryUtil;
024 import com.liferay.portal.kernel.servlet.SessionErrors;
025 import com.liferay.portal.kernel.servlet.SessionMessages;
026 import com.liferay.portal.kernel.staging.StagingUtil;
027 import com.liferay.portal.kernel.util.Constants;
028 import com.liferay.portal.kernel.util.MapUtil;
029 import com.liferay.portal.kernel.util.ParamUtil;
030 import com.liferay.portal.kernel.util.Validator;
031 import com.liferay.portal.model.BackgroundTask;
032 import com.liferay.portal.model.ExportImportConfiguration;
033 import com.liferay.portal.security.auth.PrincipalException;
034 import com.liferay.portal.service.BackgroundTaskLocalServiceUtil;
035 import com.liferay.portal.service.ExportImportConfigurationLocalServiceUtil;
036 import com.liferay.portal.theme.ThemeDisplay;
037 import com.liferay.portal.util.PortalUtil;
038 import com.liferay.portal.util.WebKeys;
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 String pagesRedirect = ParamUtil.getString(
119 actionRequest, "pagesRedirect");
120
121 sendRedirect(actionRequest, actionResponse, pagesRedirect);
122 }
123 }
124
125 @Override
126 public ActionForward render(
127 ActionMapping actionMapping, ActionForm actionForm,
128 PortletConfig portletConfig, RenderRequest renderRequest,
129 RenderResponse renderResponse)
130 throws Exception {
131
132 try {
133 ActionUtil.getGroup(renderRequest);
134 }
135 catch (Exception e) {
136 if (e instanceof NoSuchGroupException ||
137 e instanceof PrincipalException) {
138
139 SessionErrors.add(renderRequest, e.getClass());
140
141 return actionMapping.findForward("portlet.layouts_admin.error");
142 }
143 else {
144 throw e;
145 }
146 }
147
148 return actionMapping.findForward(
149 getForward(renderRequest, "portlet.layouts_admin.publish_layouts"));
150 }
151
152 @Override
153 public void serveResource(
154 ActionMapping actionMapping, ActionForm actionForm,
155 PortletConfig portletConfig, ResourceRequest resourceRequest,
156 ResourceResponse resourceResponse)
157 throws Exception {
158
159 PortletContext portletContext = portletConfig.getPortletContext();
160
161 PortletRequestDispatcher portletRequestDispatcher =
162 portletContext.getRequestDispatcher(
163 "/html/portlet/layouts_admin/publish_layouts_processes.jsp");
164
165 portletRequestDispatcher.include(resourceRequest, resourceResponse);
166 }
167
168 @Override
169 protected void addSessionMessages(ActionRequest actionRequest)
170 throws Exception {
171
172 String portletId = PortalUtil.getPortletId(actionRequest);
173 long exportImportConfigurationId = ParamUtil.getLong(
174 actionRequest, "exportImportConfigurationId");
175
176 SessionMessages.add(
177 actionRequest, portletId + "exportImportConfigurationId",
178 exportImportConfigurationId);
179
180 String name = ParamUtil.getString(actionRequest, "name");
181 String description = ParamUtil.getString(actionRequest, "description");
182
183 SessionMessages.add(actionRequest, portletId + "name", name);
184 SessionMessages.add(
185 actionRequest, portletId + "description", description);
186
187 int exportImportConfigurationType =
188 ExportImportConfigurationConstants.TYPE_PUBLISH_LAYOUT_REMOTE;
189
190 boolean localPublishing = ParamUtil.getBoolean(
191 actionRequest, "localPublishing");
192
193 if (localPublishing) {
194 exportImportConfigurationType =
195 ExportImportConfigurationConstants.TYPE_PUBLISH_LAYOUT_LOCAL;
196 }
197
198 long groupId = ParamUtil.getLong(actionRequest, "groupId");
199
200 Map<String, Serializable> settingsMap =
201 ExportImportConfigurationSettingsMapFactory.buildSettingsMap(
202 actionRequest, groupId, exportImportConfigurationType);
203
204 SessionMessages.add(
205 actionRequest, portletId + "settingsMap", settingsMap);
206 }
207
208 protected void relaunchPublishLayoutConfiguration(
209 long userId, ActionRequest actionRequest)
210 throws PortalException {
211
212 long backgroundTaskId = ParamUtil.getLong(
213 actionRequest, "backgroundTaskId");
214
215 BackgroundTask backgroundTask =
216 BackgroundTaskLocalServiceUtil.getBackgroundTask(backgroundTaskId);
217
218 Map<String, Serializable> taskContextMap =
219 backgroundTask.getTaskContextMap();
220
221 ExportImportConfiguration exportImportConfiguration =
222 ExportImportConfigurationLocalServiceUtil.
223 getExportImportConfiguration(
224 MapUtil.getLong(
225 taskContextMap, "exportImportConfigurationId"));
226
227 if (exportImportConfiguration.getType() ==
228 ExportImportConfigurationConstants.TYPE_PUBLISH_LAYOUT_LOCAL) {
229
230 StagingUtil.publishLayouts(userId, exportImportConfiguration);
231 }
232 else if (exportImportConfiguration.getType() ==
233 ExportImportConfigurationConstants.
234 TYPE_PUBLISH_LAYOUT_REMOTE) {
235
236 StagingUtil.copyRemoteLayouts(exportImportConfiguration);
237 }
238 }
239
240 protected ExportImportConfiguration updatePublishConfiguration(
241 ActionRequest actionRequest)
242 throws Exception {
243
244 long exportImportConfigurationId = ParamUtil.getLong(
245 actionRequest, "exportImportConfigurationId");
246
247 boolean localPublishing = ParamUtil.getBoolean(
248 actionRequest, "localPublishing");
249
250 if (exportImportConfigurationId > 0) {
251 if (localPublishing) {
252 return ExportImportConfigurationHelper.
253 updatePublishLayoutLocalExportImportConfiguration(
254 actionRequest);
255 }
256 else {
257 return ExportImportConfigurationHelper.
258 updatePublishLayoutRemoteExportImportConfiguration(
259 actionRequest);
260 }
261 }
262 else {
263 if (localPublishing) {
264 return ExportImportConfigurationHelper.
265 addPublishLayoutLocalExportImportConfiguration(
266 actionRequest);
267 }
268 else {
269 return ExportImportConfigurationHelper.
270 addPublishLayoutRemoteExportImportConfiguration(
271 actionRequest);
272 }
273 }
274 }
275
276 private static final Log _log = LogFactoryUtil.getLog(
277 EditPublishConfigurationAction.class);
278
279 }