001
014
015 package com.liferay.portlet.announcements.action;
016
017 import com.liferay.portal.kernel.servlet.SessionErrors;
018 import com.liferay.portal.kernel.util.Constants;
019 import com.liferay.portal.kernel.util.GetterUtil;
020 import com.liferay.portal.kernel.util.ParamUtil;
021 import com.liferay.portal.kernel.util.StringUtil;
022 import com.liferay.portal.kernel.util.Validator;
023 import com.liferay.portal.kernel.util.WebKeys;
024 import com.liferay.portal.security.auth.PrincipalException;
025 import com.liferay.portal.struts.PortletAction;
026 import com.liferay.portal.theme.ThemeDisplay;
027 import com.liferay.portal.util.PortalUtil;
028 import com.liferay.portlet.announcements.EntryContentException;
029 import com.liferay.portlet.announcements.EntryDisplayDateException;
030 import com.liferay.portlet.announcements.EntryExpirationDateException;
031 import com.liferay.portlet.announcements.EntryTitleException;
032 import com.liferay.portlet.announcements.EntryURLException;
033 import com.liferay.portlet.announcements.NoSuchEntryException;
034 import com.liferay.portlet.announcements.service.AnnouncementsEntryServiceUtil;
035
036 import java.util.Calendar;
037
038 import javax.portlet.ActionRequest;
039 import javax.portlet.ActionResponse;
040 import javax.portlet.PortletConfig;
041 import javax.portlet.RenderRequest;
042 import javax.portlet.RenderResponse;
043
044 import org.apache.struts.action.ActionForm;
045 import org.apache.struts.action.ActionForward;
046 import org.apache.struts.action.ActionMapping;
047
048
051 public class EditEntryAction extends PortletAction {
052
053 @Override
054 public void processAction(
055 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
056 ActionRequest actionRequest, ActionResponse actionResponse)
057 throws Exception {
058
059 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
060
061 try {
062 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
063 updateEntry(actionRequest);
064 }
065 else if (cmd.equals(Constants.DELETE)) {
066 deleteEntry(actionRequest);
067 }
068
069 String redirect = PortalUtil.escapeRedirect(
070 ParamUtil.getString(actionRequest, "redirect"));
071
072 if (Validator.isNotNull(redirect)) {
073 actionResponse.sendRedirect(redirect);
074 }
075 }
076 catch (Exception e) {
077 if (e instanceof EntryContentException ||
078 e instanceof EntryDisplayDateException ||
079 e instanceof EntryExpirationDateException ||
080 e instanceof EntryTitleException ||
081 e instanceof EntryURLException ||
082 e instanceof NoSuchEntryException ||
083 e instanceof PrincipalException) {
084
085 SessionErrors.add(actionRequest, e.getClass().getName());
086 }
087 else {
088 throw e;
089 }
090 }
091 }
092
093 @Override
094 public ActionForward render(
095 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
096 RenderRequest renderRequest, RenderResponse renderResponse)
097 throws Exception {
098
099 try {
100 ActionUtil.getEntry(renderRequest);
101 }
102 catch (Exception e) {
103 if (e instanceof NoSuchEntryException ||
104 e instanceof PrincipalException) {
105
106 SessionErrors.add(renderRequest, e.getClass().getName());
107
108 return mapping.findForward("portlet.announcements.error");
109 }
110 else {
111 throw e;
112 }
113 }
114
115 return mapping.findForward(
116 getForward(renderRequest, "portlet.announcements.edit_entry"));
117 }
118
119 protected void deleteEntry(ActionRequest actionRequest) throws Exception {
120 long entryId = ParamUtil.getLong(actionRequest, "entryId");
121
122 AnnouncementsEntryServiceUtil.deleteEntry(entryId);
123 }
124
125 protected void updateEntry(ActionRequest actionRequest) throws Exception {
126 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
127 WebKeys.THEME_DISPLAY);
128
129 long entryId = ParamUtil.getLong(actionRequest, "entryId");
130
131 String[] distributionScopeParts = StringUtil.split(
132 ParamUtil.getString(actionRequest, "distributionScope"));
133
134 long classNameId = 0;
135 long classPK = 0;
136
137 if (distributionScopeParts.length == 2) {
138 classNameId = GetterUtil.getLong(distributionScopeParts[0]);
139
140 if (classNameId > 0) {
141 classPK = GetterUtil.getLong(distributionScopeParts[1]);
142 }
143 }
144
145 String title = ParamUtil.getString(actionRequest, "title");
146 String content = ParamUtil.getString(actionRequest, "content");
147 String url = ParamUtil.getString(actionRequest, "url");
148 String type = ParamUtil.getString(actionRequest, "type");
149
150 int displayDateMonth = ParamUtil.getInteger(
151 actionRequest, "displayDateMonth");
152 int displayDateDay = ParamUtil.getInteger(
153 actionRequest, "displayDateDay");
154 int displayDateYear = ParamUtil.getInteger(
155 actionRequest, "displayDateYear");
156 int displayDateHour = ParamUtil.getInteger(
157 actionRequest, "displayDateHour");
158 int displayDateMinute = ParamUtil.getInteger(
159 actionRequest, "displayDateMinute");
160 int displayDateAmPm = ParamUtil.getInteger(
161 actionRequest, "displayDateAmPm");
162
163 if (displayDateAmPm == Calendar.PM) {
164 displayDateHour += 12;
165 }
166
167 int expirationDateMonth = ParamUtil.getInteger(
168 actionRequest, "expirationDateMonth");
169 int expirationDateDay = ParamUtil.getInteger(
170 actionRequest, "expirationDateDay");
171 int expirationDateYear = ParamUtil.getInteger(
172 actionRequest, "expirationDateYear");
173 int expirationDateHour = ParamUtil.getInteger(
174 actionRequest, "expirationDateHour");
175 int expirationDateMinute = ParamUtil.getInteger(
176 actionRequest, "expirationDateMinute");
177 int expirationDateAmPm = ParamUtil.getInteger(
178 actionRequest, "expirationDateAmPm");
179
180 if (expirationDateAmPm == Calendar.PM) {
181 expirationDateHour += 12;
182 }
183
184 int priority = ParamUtil.getInteger(actionRequest, "priority");
185 boolean alert = ParamUtil.getBoolean(actionRequest, "alert");
186
187 if (entryId <= 0) {
188
189
190
191 AnnouncementsEntryServiceUtil.addEntry(
192 themeDisplay.getPlid(), classNameId, classPK, title, content,
193 url, type, displayDateMonth, displayDateDay, displayDateYear,
194 displayDateHour, displayDateMinute, expirationDateMonth,
195 expirationDateDay, expirationDateYear, expirationDateHour,
196 expirationDateMinute, priority, alert);
197 }
198 else {
199
200
201
202 AnnouncementsEntryServiceUtil.updateEntry(
203 entryId, title, content, url, type, displayDateMonth,
204 displayDateDay, displayDateYear, displayDateHour,
205 displayDateMinute, expirationDateMonth, expirationDateDay,
206 expirationDateYear, expirationDateHour, expirationDateMinute,
207 priority);
208 }
209 }
210
211 }