1
22
23 package com.liferay.portlet.messageboards.action;
24
25 import com.liferay.portal.kernel.servlet.SessionErrors;
26 import com.liferay.portal.kernel.util.ArrayUtil;
27 import com.liferay.portal.kernel.util.ParamUtil;
28 import com.liferay.portal.kernel.util.Validator;
29 import com.liferay.portal.security.auth.PrincipalException;
30 import com.liferay.portal.struts.PortletAction;
31 import com.liferay.portal.util.PortletKeys;
32 import com.liferay.portal.util.PropsValues;
33 import com.liferay.portal.util.WebKeys;
34 import com.liferay.portlet.PortalPreferences;
35 import com.liferay.portlet.PortletPreferencesFactoryUtil;
36 import com.liferay.portlet.messageboards.NoSuchMessageException;
37 import com.liferay.portlet.messageboards.model.MBMessageDisplay;
38 import com.liferay.portlet.messageboards.service.MBMessageServiceUtil;
39
40 import javax.portlet.PortletConfig;
41 import javax.portlet.RenderRequest;
42 import javax.portlet.RenderResponse;
43
44 import org.apache.struts.action.ActionForm;
45 import org.apache.struts.action.ActionForward;
46 import org.apache.struts.action.ActionMapping;
47
48
53 public class ViewMessageAction extends PortletAction {
54
55 public ActionForward render(
56 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
57 RenderRequest renderRequest, RenderResponse renderResponse)
58 throws Exception {
59
60 try {
61 long messageId = ParamUtil.getLong(renderRequest, "messageId");
62
63 PortalPreferences preferences =
64 PortletPreferencesFactoryUtil.getPortalPreferences(
65 renderRequest);
66
67 String threadView = ParamUtil.getString(
68 renderRequest, "threadView");
69
70 if (Validator.isNotNull(threadView)) {
71 preferences.setValue(
72 PortletKeys.MESSAGE_BOARDS, "thread-view", threadView);
73 }
74 else {
75 threadView = preferences.getValue(
76 PortletKeys.MESSAGE_BOARDS, "thread-view",
77 PropsValues.MESSAGE_BOARDS_THREAD_VIEWS_DEFAULT);
78 }
79
80 if (!ArrayUtil.contains(
81 PropsValues.MESSAGE_BOARDS_THREAD_VIEWS, threadView)) {
82
83 threadView = PropsValues.MESSAGE_BOARDS_THREAD_VIEWS_DEFAULT;
84
85 preferences.setValue(
86 PortletKeys.MESSAGE_BOARDS, "thread-view", threadView);
87 }
88
89 MBMessageDisplay messageDisplay =
90 MBMessageServiceUtil.getMessageDisplay(messageId, threadView);
91
92 renderRequest.setAttribute(
93 WebKeys.MESSAGE_BOARDS_MESSAGE, messageDisplay);
94
95 return mapping.findForward("portlet.message_boards.view_message");
96 }
97 catch (Exception e) {
98 if (e instanceof NoSuchMessageException ||
99 e instanceof PrincipalException) {
100
101 SessionErrors.add(renderRequest, e.getClass().getName());
102
103 return mapping.findForward("portlet.message_boards.error");
104 }
105 else {
106 throw e;
107 }
108 }
109 }
110
111 }