1
22
23 package com.liferay.portlet.messageboards.action;
24
25 import com.liferay.documentlibrary.FileNameException;
26 import com.liferay.documentlibrary.FileSizeException;
27 import com.liferay.portal.kernel.util.Constants;
28 import com.liferay.portal.kernel.util.ParamUtil;
29 import com.liferay.portal.security.auth.PrincipalException;
30 import com.liferay.portal.struts.PortletAction;
31 import com.liferay.portal.theme.ThemeDisplay;
32 import com.liferay.portal.util.PortalUtil;
33 import com.liferay.portal.util.WebKeys;
34 import com.liferay.portlet.ActionResponseImpl;
35 import com.liferay.portlet.messageboards.MessageBodyException;
36 import com.liferay.portlet.messageboards.MessageSubjectException;
37 import com.liferay.portlet.messageboards.NoSuchMessageException;
38 import com.liferay.portlet.messageboards.RequiredMessageException;
39 import com.liferay.portlet.messageboards.model.MBMessage;
40 import com.liferay.portlet.messageboards.service.MBMessageServiceUtil;
41 import com.liferay.util.servlet.SessionErrors;
42
43 import javax.portlet.ActionRequest;
44 import javax.portlet.ActionResponse;
45 import javax.portlet.PortletConfig;
46
47 import org.apache.struts.action.ActionForm;
48 import org.apache.struts.action.ActionMapping;
49
50
56 public class EditDiscussionAction extends PortletAction {
57
58 public void processAction(
59 ActionMapping mapping, ActionForm form, PortletConfig config,
60 ActionRequest req, ActionResponse res)
61 throws Exception {
62
63 ActionResponseImpl resImpl = (ActionResponseImpl)res;
64
65 String cmd = ParamUtil.getString(req, Constants.CMD);
66
67 try {
68 String redirect = ParamUtil.getString(req, "redirect");
69
70 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
71 MBMessage message = updateMessage(req);
72
73 redirect +=
74 "#" + resImpl.getNamespace() + "messageScroll" +
75 message.getMessageId();
76 }
77 else if (cmd.equals(Constants.DELETE)) {
78 deleteMessage(req);
79 }
80
81 sendRedirect(req, res, redirect);
82 }
83 catch (Exception e) {
84 if (e instanceof NoSuchMessageException ||
85 e instanceof PrincipalException ||
86 e instanceof RequiredMessageException) {
87
88 SessionErrors.add(req, e.getClass().getName());
89
90 setForward(req, "portlet.message_boards.error");
91 }
92 else if (e instanceof FileNameException ||
93 e instanceof FileSizeException ||
94 e instanceof MessageBodyException ||
95 e instanceof MessageSubjectException) {
96
97 SessionErrors.add(req, e.getClass().getName());
98
99 sendRedirect(req, res);
100 }
101 else {
102 throw e;
103 }
104 }
105 }
106
107 protected void deleteMessage(ActionRequest req) throws Exception {
108 long groupId = PortalUtil.getPortletGroupId(req);
109 String className = ParamUtil.getString(req, "className");
110 long classPK = ParamUtil.getLong(req, "classPK");
111
112 long messageId = ParamUtil.getLong(req, "messageId");
113
114 MBMessageServiceUtil.deleteDiscussionMessage(
115 groupId, className, classPK, messageId);
116 }
117
118 protected boolean isCheckMethodOnProcessAction() {
119 return _CHECK_METHOD_ON_PROCESS_ACTION;
120 }
121
122 protected MBMessage updateMessage(ActionRequest req) throws Exception {
123 ThemeDisplay themeDisplay =
124 (ThemeDisplay)req.getAttribute(WebKeys.THEME_DISPLAY);
125
126 long groupId = PortalUtil.getPortletGroupId(req);
127 String className = ParamUtil.getString(req, "className");
128 long classPK = ParamUtil.getLong(req, "classPK");
129
130 long messageId = ParamUtil.getLong(req, "messageId");
131
132 long threadId = ParamUtil.getLong(req, "threadId");
133 long parentMessageId = ParamUtil.getLong(req, "parentMessageId");
134 String subject = ParamUtil.getString(req, "subject");
135 String body = ParamUtil.getString(req, "body");
136
137 MBMessage message = null;
138
139 if (messageId <= 0) {
140
141
143 message = MBMessageServiceUtil.addDiscussionMessage(
144 groupId, className, classPK, threadId, parentMessageId, subject,
145 body, themeDisplay);
146 }
147 else {
148
149
151 message = MBMessageServiceUtil.updateDiscussionMessage(
152 groupId, className, classPK, messageId, subject, body);
153 }
154
155 return message;
156 }
157
158 private static final boolean _CHECK_METHOD_ON_PROCESS_ACTION = false;
159
160 }