1
14
15 package com.liferay.portlet.announcements.action;
16
17 import com.liferay.portal.kernel.servlet.SessionErrors;
18 import com.liferay.portal.kernel.util.Constants;
19 import com.liferay.portal.kernel.util.GetterUtil;
20 import com.liferay.portal.kernel.util.ParamUtil;
21 import com.liferay.portal.kernel.util.StringUtil;
22 import com.liferay.portal.kernel.util.WebKeys;
23 import com.liferay.portal.security.auth.PrincipalException;
24 import com.liferay.portal.struts.PortletAction;
25 import com.liferay.portal.theme.ThemeDisplay;
26 import com.liferay.portlet.announcements.EntryContentException;
27 import com.liferay.portlet.announcements.EntryDisplayDateException;
28 import com.liferay.portlet.announcements.EntryExpirationDateException;
29 import com.liferay.portlet.announcements.EntryTitleException;
30 import com.liferay.portlet.announcements.EntryURLException;
31 import com.liferay.portlet.announcements.NoSuchEntryException;
32 import com.liferay.portlet.announcements.service.AnnouncementsEntryServiceUtil;
33
34 import java.util.Calendar;
35
36 import javax.portlet.ActionRequest;
37 import javax.portlet.ActionResponse;
38 import javax.portlet.PortletConfig;
39 import javax.portlet.RenderRequest;
40 import javax.portlet.RenderResponse;
41
42 import org.apache.struts.action.ActionForm;
43 import org.apache.struts.action.ActionForward;
44 import org.apache.struts.action.ActionMapping;
45
46
51 public class EditEntryAction extends PortletAction {
52
53 public void processAction(
54 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
55 ActionRequest actionRequest, ActionResponse actionResponse)
56 throws Exception {
57
58 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
59
60 try {
61 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
62 updateEntry(actionRequest);
63 }
64 else if (cmd.equals(Constants.DELETE)) {
65 deleteEntry(actionRequest);
66 }
67
68 String redirect = ParamUtil.getString(actionRequest, "redirect");
69
70 actionResponse.sendRedirect(redirect);
71 }
72 catch (Exception e) {
73 if (e instanceof EntryContentException ||
74 e instanceof EntryDisplayDateException ||
75 e instanceof EntryExpirationDateException ||
76 e instanceof EntryTitleException ||
77 e instanceof EntryURLException ||
78 e instanceof NoSuchEntryException ||
79 e instanceof PrincipalException) {
80
81 SessionErrors.add(actionRequest, e.getClass().getName());
82 }
83 else {
84 throw e;
85 }
86 }
87 }
88
89 public ActionForward render(
90 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
91 RenderRequest renderRequest, RenderResponse renderResponse)
92 throws Exception {
93
94 try {
95 ActionUtil.getEntry(renderRequest);
96 }
97 catch (Exception e) {
98 if (e instanceof NoSuchEntryException ||
99 e instanceof PrincipalException) {
100
101 SessionErrors.add(renderRequest, e.getClass().getName());
102
103 return mapping.findForward("portlet.announcements.error");
104 }
105 else {
106 throw e;
107 }
108 }
109
110 return mapping.findForward(
111 getForward(renderRequest, "portlet.announcements.edit_entry"));
112 }
113
114 protected void deleteEntry(ActionRequest actionRequest) throws Exception {
115 long entryId = ParamUtil.getLong(actionRequest, "entryId");
116
117 AnnouncementsEntryServiceUtil.deleteEntry(entryId);
118 }
119
120 protected void updateEntry(ActionRequest actionRequest) throws Exception {
121 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
122 WebKeys.THEME_DISPLAY);
123
124 long entryId = ParamUtil.getLong(actionRequest, "entryId");
125
126 String[] distributionScopeParts = StringUtil.split(
127 ParamUtil.getString(actionRequest, "distributionScope"));
128
129 long classNameId = 0;
130 long classPK = 0;
131
132 if (distributionScopeParts.length == 2) {
133 classNameId = GetterUtil.getLong(distributionScopeParts[0]);
134
135 if (classNameId > 0) {
136 classPK = GetterUtil.getLong(distributionScopeParts[1]);
137 }
138 }
139
140 String title = ParamUtil.getString(actionRequest, "title");
141 String content = ParamUtil.getString(actionRequest, "content");
142 String url = ParamUtil.getString(actionRequest, "url");
143 String type = ParamUtil.getString(actionRequest, "type");
144
145 int displayDateMonth = ParamUtil.getInteger(
146 actionRequest, "displayDateMonth");
147 int displayDateDay = ParamUtil.getInteger(
148 actionRequest, "displayDateDay");
149 int displayDateYear = ParamUtil.getInteger(
150 actionRequest, "displayDateYear");
151 int displayDateHour = ParamUtil.getInteger(
152 actionRequest, "displayDateHour");
153 int displayDateMinute = ParamUtil.getInteger(
154 actionRequest, "displayDateMinute");
155 int displayDateAmPm = ParamUtil.getInteger(
156 actionRequest, "displayDateAmPm");
157
158 if (displayDateAmPm == Calendar.PM) {
159 displayDateHour += 12;
160 }
161
162 int expirationDateMonth = ParamUtil.getInteger(
163 actionRequest, "expirationDateMonth");
164 int expirationDateDay = ParamUtil.getInteger(
165 actionRequest, "expirationDateDay");
166 int expirationDateYear = ParamUtil.getInteger(
167 actionRequest, "expirationDateYear");
168 int expirationDateHour = ParamUtil.getInteger(
169 actionRequest, "expirationDateHour");
170 int expirationDateMinute = ParamUtil.getInteger(
171 actionRequest, "expirationDateMinute");
172 int expirationDateAmPm = ParamUtil.getInteger(
173 actionRequest, "expirationDateAmPm");
174
175 if (expirationDateAmPm == Calendar.PM) {
176 expirationDateHour += 12;
177 }
178
179 int priority = ParamUtil.getInteger(actionRequest, "priority");
180 boolean alert = ParamUtil.getBoolean(actionRequest, "alert");
181
182 if (entryId <= 0) {
183
184
186 AnnouncementsEntryServiceUtil.addEntry(
187 themeDisplay.getPlid(), classNameId, classPK, title, content,
188 url, type, displayDateMonth, displayDateDay, displayDateYear,
189 displayDateHour, displayDateMinute, expirationDateMonth,
190 expirationDateDay, expirationDateYear, expirationDateHour,
191 expirationDateMinute, priority, alert);
192 }
193 else {
194
195
197 AnnouncementsEntryServiceUtil.updateEntry(
198 entryId, title, content, url, type, displayDateMonth,
199 displayDateDay, displayDateYear, displayDateHour,
200 displayDateMinute, expirationDateMonth, expirationDateDay,
201 expirationDateYear, expirationDateHour, expirationDateMinute,
202 priority);
203 }
204 }
205
206 }