1
22
23 package com.liferay.portlet.messageboards.action;
24
25 import com.liferay.portal.kernel.portlet.ConfigurationAction;
26 import com.liferay.portal.kernel.util.Constants;
27 import com.liferay.portal.kernel.util.GetterUtil;
28 import com.liferay.portal.kernel.util.ParamUtil;
29 import com.liferay.portal.kernel.util.StringPool;
30 import com.liferay.portal.kernel.util.StringUtil;
31 import com.liferay.portal.kernel.util.Validator;
32 import com.liferay.portlet.PortletPreferencesFactoryUtil;
33 import com.liferay.util.LocalizationUtil;
34 import com.liferay.util.servlet.SessionErrors;
35 import com.liferay.util.servlet.SessionMessages;
36
37 import java.util.ArrayList;
38 import java.util.Iterator;
39 import java.util.List;
40 import java.util.Map;
41 import java.util.TreeMap;
42
43 import javax.portlet.ActionRequest;
44 import javax.portlet.ActionResponse;
45 import javax.portlet.PortletConfig;
46 import javax.portlet.PortletPreferences;
47 import javax.portlet.RenderRequest;
48 import javax.portlet.RenderResponse;
49
50
56 public class ConfigurationActionImpl implements ConfigurationAction {
57
58 public void processAction(
59 PortletConfig config, ActionRequest req, ActionResponse res)
60 throws Exception {
61
62 String cmd = ParamUtil.getString(req, Constants.CMD);
63
64 if (!cmd.equals(Constants.UPDATE)) {
65 return;
66 }
67
68 String portletResource = ParamUtil.getString(
69 req, "portletResource");
70
71 PortletPreferences prefs =
72 PortletPreferencesFactoryUtil.getPortletSetup(
73 req, portletResource, false, true);
74
75 String tabs2 = ParamUtil.getString(req, "tabs2");
76
77 if (tabs2.equals("display-settings")) {
78 updateDisplaySettings(req, prefs);
79 }
80 else if (tabs2.equals("email-from")) {
81 updateEmailFrom(req, prefs);
82 }
83 else if (tabs2.equals("message-added-email")) {
84 updateEmailMessageAdded(req, prefs);
85 }
86 else if (tabs2.equals("message-updated-email")) {
87 updateEmailMessageUpdated(req, prefs);
88 }
89 else if (tabs2.equals("thread-priorities")) {
90 updateThreadPriorities(req, prefs);
91 }
92 else if (tabs2.equals("user-ranks")) {
93 updateUserRanks(req, prefs);
94 }
95
96 if (SessionErrors.isEmpty(req)) {
97 prefs.store();
98
99 SessionMessages.add(req, config.getPortletName() + ".doConfigure");
100 }
101 }
102
103 public String render(
104 PortletConfig config, RenderRequest req, RenderResponse res)
105 throws Exception {
106
107 return "/html/portlet/message_boards/configuration.jsp";
108 }
109
110 protected void updateDisplaySettings(
111 ActionRequest req, PortletPreferences prefs)
112 throws Exception {
113
114 String userNameAttribute = ParamUtil.getString(
115 req, "userNameAttribute");
116 int rssContentLength = ParamUtil.getInteger(req, "rssContentLength");
117
118 prefs.setValue("user-name-attribute", userNameAttribute);
119 prefs.setValue("rss-content-length", String.valueOf(rssContentLength));
120 }
121
122 protected void updateEmailFrom(ActionRequest req, PortletPreferences prefs)
123 throws Exception {
124
125 String emailFromName = ParamUtil.getString(req, "emailFromName");
126 String emailFromAddress = ParamUtil.getString(req, "emailFromAddress");
127
128 if (Validator.isNull(emailFromName)) {
129 SessionErrors.add(req, "emailFromName");
130 }
131 else if (!Validator.isEmailAddress(emailFromAddress) &&
132 !Validator.isVariableTerm(emailFromAddress)) {
133
134 SessionErrors.add(req, "emailFromAddress");
135 }
136 else {
137 prefs.setValue("email-from-name", emailFromName);
138 prefs.setValue("email-from-address", emailFromAddress);
139 }
140 }
141
142 protected void updateEmailMessageAdded(
143 ActionRequest req, PortletPreferences prefs)
144 throws Exception {
145
146 String emailMessageAddedEnabled = ParamUtil.getString(
147 req, "emailMessageAddedEnabled");
148 String emailMessageAddedSubjectPrefix = ParamUtil.getString(
149 req, "emailMessageAddedSubjectPrefix");
150 String emailMessageAddedBody = ParamUtil.getString(
151 req, "emailMessageAddedBody");
152 String emailMessageAddedSignature = ParamUtil.getString(
153 req, "emailMessageAddedSignature");
154
155 if (Validator.isNull(emailMessageAddedSubjectPrefix)) {
156 SessionErrors.add(req, "emailMessageAddedSubjectPrefix");
157 }
158 else if (Validator.isNull(emailMessageAddedBody)) {
159 SessionErrors.add(req, "emailMessageAddedBody");
160 }
161 else {
162 prefs.setValue(
163 "email-message-added-enabled", emailMessageAddedEnabled);
164 prefs.setValue(
165 "email-message-added-subject-prefix",
166 emailMessageAddedSubjectPrefix);
167 prefs.setValue("email-message-added-body", emailMessageAddedBody);
168 prefs.setValue(
169 "email-message-added-signature", emailMessageAddedSignature);
170 }
171 }
172
173 protected void updateEmailMessageUpdated(
174 ActionRequest req, PortletPreferences prefs)
175 throws Exception {
176
177 String emailMessageUpdatedEnabled = ParamUtil.getString(
178 req, "emailMessageUpdatedEnabled");
179 String emailMessageUpdatedSubjectPrefix = ParamUtil.getString(
180 req, "emailMessageUpdatedSubjectPrefix");
181 String emailMessageUpdatedBody = ParamUtil.getString(
182 req, "emailMessageUpdatedBody");
183 String emailMessageUpdatedSignature = ParamUtil.getString(
184 req, "emailMessageUpdatedSignature");
185
186 if (Validator.isNull(emailMessageUpdatedSubjectPrefix)) {
187 SessionErrors.add(req, "emailMessageUpdatedSubjectPrefix");
188 }
189 else if (Validator.isNull(emailMessageUpdatedBody)) {
190 SessionErrors.add(req, "emailMessageUpdatedBody");
191 }
192 else {
193 prefs.setValue(
194 "email-message-updated-enabled", emailMessageUpdatedEnabled);
195 prefs.setValue(
196 "email-message-updated-subject-prefix",
197 emailMessageUpdatedSubjectPrefix);
198 prefs.setValue(
199 "email-message-updated-body", emailMessageUpdatedBody);
200 prefs.setValue(
201 "email-message-updated-signature",
202 emailMessageUpdatedSignature);
203 }
204 }
205
206 protected void updateThreadPriorities(
207 ActionRequest req, PortletPreferences prefs)
208 throws Exception {
209
210 List priorities = new ArrayList();
211
212 for (int i = 0; i < 10; i++) {
213 String name = ParamUtil.getString(req, "priorityName" + i);
214 String image = ParamUtil.getString(req, "priorityImage" + i);
215 double value = ParamUtil.getDouble(req, "priorityValue" + i);
216
217 if (Validator.isNotNull(name) || Validator.isNotNull(image) ||
218 (value != 0.0)) {
219
220 priorities.add(
221 name + StringPool.COMMA + image + StringPool.COMMA + value);
222 }
223 }
224
225 String languageId = ParamUtil.getString(req, "languageId");
226
227 LocalizationUtil.setPrefsValues(
228 prefs, "priorities", languageId,
229 (String[])priorities.toArray(new String[0]));
230 }
231
232 protected void updateUserRanks(ActionRequest req, PortletPreferences prefs)
233 throws Exception {
234
235
237 String[] ranks = StringUtil.split(
238 ParamUtil.getString(req, "ranks"), StringPool.NEW_LINE);
239
240 Map map = new TreeMap();
241
242 for (int i = 0; i < ranks.length; i++) {
243 String[] kvp = StringUtil.split(ranks[i], StringPool.EQUAL);
244
245 String kvpName = kvp[0];
246 Integer kvpPosts = new Integer(GetterUtil.getInteger(kvp[1]));
247
248 map.put(kvpPosts, kvpName);
249 }
250
251 ranks = new String[map.size()];
252
253 int count = 0;
254
255 Iterator itr = map.entrySet().iterator();
256
257 while (itr.hasNext()) {
258 Map.Entry entry = (Map.Entry)itr.next();
259
260 Integer kvpPosts = (Integer)entry.getKey();
261 String kvpName = (String)entry.getValue();
262
263 ranks[count++] = kvpName + StringPool.EQUAL + kvpPosts.toString();
264 }
265
266
268 String languageId = ParamUtil.getString(req, "languageId");
269
270 LocalizationUtil.setPrefsValues(prefs, "ranks", languageId, ranks);
271 }
272
273 }