1
14
15 package com.liferay.portlet.messageboards.action;
16
17 import com.liferay.portal.kernel.language.LanguageUtil;
18 import com.liferay.portal.kernel.portlet.BaseConfigurationAction;
19 import com.liferay.portal.kernel.servlet.SessionErrors;
20 import com.liferay.portal.kernel.servlet.SessionMessages;
21 import com.liferay.portal.kernel.util.Constants;
22 import com.liferay.portal.kernel.util.LocaleUtil;
23 import com.liferay.portal.kernel.util.LocalizationUtil;
24 import com.liferay.portal.kernel.util.ParamUtil;
25 import com.liferay.portal.kernel.util.StringPool;
26 import com.liferay.portal.kernel.util.StringUtil;
27 import com.liferay.portal.kernel.util.Validator;
28 import com.liferay.portlet.PortletPreferencesFactoryUtil;
29
30 import java.util.ArrayList;
31 import java.util.Iterator;
32 import java.util.List;
33 import java.util.Locale;
34 import java.util.Map;
35 import java.util.TreeMap;
36
37 import javax.portlet.ActionRequest;
38 import javax.portlet.ActionResponse;
39 import javax.portlet.PortletConfig;
40 import javax.portlet.PortletPreferences;
41 import javax.portlet.RenderRequest;
42 import javax.portlet.RenderResponse;
43
44
49 public class ConfigurationActionImpl extends BaseConfigurationAction {
50
51 public void processAction(
52 PortletConfig portletConfig, ActionRequest actionRequest,
53 ActionResponse actionResponse)
54 throws Exception {
55
56 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
57
58 if (!cmd.equals(Constants.UPDATE)) {
59 return;
60 }
61
62 String portletResource = ParamUtil.getString(
63 actionRequest, "portletResource");
64
65 PortletPreferences preferences =
66 PortletPreferencesFactoryUtil.getPortletSetup(
67 actionRequest, portletResource);
68
69 String tabs2 = ParamUtil.getString(actionRequest, "tabs2");
70
71 if (tabs2.equals("email-from")) {
72 updateEmailFrom(actionRequest, preferences);
73 }
74 else if (tabs2.equals("general")) {
75 updateGeneral(actionRequest, preferences);
76 }
77 else if (tabs2.equals("message-added-email")) {
78 updateEmailMessageAdded(actionRequest, preferences);
79 }
80 else if (tabs2.equals("message-updated-email")) {
81 updateEmailMessageUpdated(actionRequest, preferences);
82 }
83 else if (tabs2.equals("rss")) {
84 updateRSS(actionRequest, preferences);
85 }
86 else if (tabs2.equals("thread-priorities")) {
87 updateThreadPriorities(actionRequest, preferences);
88 }
89 else if (tabs2.equals("user-ranks")) {
90 updateUserRanks(actionRequest, preferences);
91 }
92
93 if (SessionErrors.isEmpty(actionRequest)) {
94 preferences.store();
95
96 SessionMessages.add(
97 actionRequest, portletConfig.getPortletName() + ".doConfigure");
98 }
99 }
100
101 public String render(
102 PortletConfig portletConfig, RenderRequest renderRequest,
103 RenderResponse renderResponse)
104 throws Exception {
105
106 return "/html/portlet/message_boards/configuration.jsp";
107 }
108
109 protected void updateEmailFrom(
110 ActionRequest actionRequest, PortletPreferences preferences)
111 throws Exception {
112
113 String emailFromName = ParamUtil.getString(
114 actionRequest, "emailFromName");
115 String emailFromAddress = ParamUtil.getString(
116 actionRequest, "emailFromAddress");
117 boolean emailHtmlFormat = ParamUtil.getBoolean(
118 actionRequest, "emailHtmlFormat");
119
120 if (Validator.isNull(emailFromName)) {
121 SessionErrors.add(actionRequest, "emailFromName");
122 }
123 else if (!Validator.isEmailAddress(emailFromAddress) &&
124 !Validator.isVariableTerm(emailFromAddress)) {
125
126 SessionErrors.add(actionRequest, "emailFromAddress");
127 }
128 else {
129 preferences.setValue("email-from-name", emailFromName);
130 preferences.setValue("email-from-address", emailFromAddress);
131 preferences.setValue(
132 "email-html-format", String.valueOf(emailHtmlFormat));
133 }
134 }
135
136 protected void updateEmailMessageAdded(
137 ActionRequest actionRequest, PortletPreferences preferences)
138 throws Exception {
139
140 boolean emailMessageAddedEnabled = ParamUtil.getBoolean(
141 actionRequest, "emailMessageAddedEnabled");
142 String emailMessageAddedSubjectPrefix = ParamUtil.getString(
143 actionRequest, "emailMessageAddedSubjectPrefix");
144 String emailMessageAddedBody = ParamUtil.getString(
145 actionRequest, "emailMessageAddedBody");
146 String emailMessageAddedSignature = ParamUtil.getString(
147 actionRequest, "emailMessageAddedSignature");
148
149 if (Validator.isNull(emailMessageAddedSubjectPrefix)) {
150 SessionErrors.add(actionRequest, "emailMessageAddedSubjectPrefix");
151 }
152 else if (Validator.isNull(emailMessageAddedBody)) {
153 SessionErrors.add(actionRequest, "emailMessageAddedBody");
154 }
155 else {
156 preferences.setValue(
157 "email-message-added-enabled",
158 String.valueOf(emailMessageAddedEnabled));
159 preferences.setValue(
160 "email-message-added-subject-prefix",
161 emailMessageAddedSubjectPrefix);
162 preferences.setValue(
163 "email-message-added-body", emailMessageAddedBody);
164 preferences.setValue(
165 "email-message-added-signature", emailMessageAddedSignature);
166 }
167 }
168
169 protected void updateEmailMessageUpdated(
170 ActionRequest actionRequest, PortletPreferences preferences)
171 throws Exception {
172
173 boolean emailMessageUpdatedEnabled = ParamUtil.getBoolean(
174 actionRequest, "emailMessageUpdatedEnabled");
175 String emailMessageUpdatedSubjectPrefix = ParamUtil.getString(
176 actionRequest, "emailMessageUpdatedSubjectPrefix");
177 String emailMessageUpdatedBody = ParamUtil.getString(
178 actionRequest, "emailMessageUpdatedBody");
179 String emailMessageUpdatedSignature = ParamUtil.getString(
180 actionRequest, "emailMessageUpdatedSignature");
181
182 if (Validator.isNull(emailMessageUpdatedSubjectPrefix)) {
183 SessionErrors.add(
184 actionRequest, "emailMessageUpdatedSubjectPrefix");
185 }
186 else if (Validator.isNull(emailMessageUpdatedBody)) {
187 SessionErrors.add(actionRequest, "emailMessageUpdatedBody");
188 }
189 else {
190 preferences.setValue(
191 "email-message-updated-enabled",
192 String.valueOf(emailMessageUpdatedEnabled));
193 preferences.setValue(
194 "email-message-updated-subject-prefix",
195 emailMessageUpdatedSubjectPrefix);
196 preferences.setValue(
197 "email-message-updated-body", emailMessageUpdatedBody);
198 preferences.setValue(
199 "email-message-updated-signature",
200 emailMessageUpdatedSignature);
201 }
202 }
203
204 protected void updateGeneral(
205 ActionRequest actionRequest, PortletPreferences preferences)
206 throws Exception {
207
208 String allowAnonymousPosting = ParamUtil.getString(
209 actionRequest, "allowAnonymousPosting");
210 String enableFlags = ParamUtil.getString(actionRequest, "enableFlags");
211 boolean enableRatings = ParamUtil.getBoolean(
212 actionRequest, "enableRatings");
213
214 preferences.setValue("allow-anonymous-posting", allowAnonymousPosting);
215 preferences.setValue("enable-flags", enableFlags);
216 preferences.setValue(
217 "enable-message-ratings", String.valueOf(enableRatings));
218 }
219
220 protected void updateRSS(
221 ActionRequest actionRequest, PortletPreferences preferences)
222 throws Exception {
223
224 int rssDelta = ParamUtil.getInteger(actionRequest, "rssDelta");
225 String rssDisplayStyle = ParamUtil.getString(
226 actionRequest, "rssDisplayStyle");
227 String rssFormat = ParamUtil.getString(actionRequest, "rssFormat");
228
229 preferences.setValue("rss-delta", String.valueOf(rssDelta));
230 preferences.setValue("rss-display-style", rssDisplayStyle);
231 preferences.setValue("rss-format", rssFormat);
232 }
233
234 protected void updateThreadPriorities(
235 ActionRequest actionRequest, PortletPreferences preferences)
236 throws Exception {
237
238 Locale[] locales = LanguageUtil.getAvailableLocales();
239
240 for (int i = 0; i < locales.length; i++) {
241 String languageId = LocaleUtil.toLanguageId(locales[i]);
242
243 List<String> priorities = new ArrayList<String>();
244
245 for (int j = 0; j < 10; j++) {
246 String name = ParamUtil.getString(
247 actionRequest, "priorityName" + j + "_" + languageId);
248 String image = ParamUtil.getString(
249 actionRequest, "priorityImage" + j + "_" + languageId);
250 double value = ParamUtil.getDouble(
251 actionRequest, "priorityValue" + j + "_" + languageId);
252
253 if (Validator.isNotNull(name) || Validator.isNotNull(image) ||
254 (value != 0.0)) {
255
256 priorities.add(
257 name + StringPool.COMMA + image + StringPool.COMMA +
258 value);
259 }
260 }
261
262 LocalizationUtil.setPreferencesValues(
263 preferences, "priorities", languageId,
264 priorities.toArray(new String[priorities.size()]));
265 }
266 }
267
268 protected void updateUserRanks(
269 ActionRequest actionRequest, PortletPreferences preferences)
270 throws Exception {
271
272 Locale[] locales = LanguageUtil.getAvailableLocales();
273
274 for (int i = 0; i < locales.length; i++) {
275 String languageId = LocaleUtil.toLanguageId(locales[i]);
276
277 String[] ranks = StringUtil.split(
278 ParamUtil.getString(actionRequest, "ranks_" + languageId),
279 StringPool.NEW_LINE);
280
281 Map<String, String> map = new TreeMap<String, String>();
282
283 for (int j = 0; j < ranks.length; j++) {
284 String[] kvp = StringUtil.split(ranks[j], StringPool.EQUAL);
285
286 String kvpName = kvp[0];
287 String kvpValue = kvp[1];
288
289 map.put(kvpValue, kvpName);
290 }
291
292 ranks = new String[map.size()];
293
294 int count = 0;
295
296 Iterator<Map.Entry<String, String>> itr =
297 map.entrySet().iterator();
298
299 while (itr.hasNext()) {
300 Map.Entry<String, String> entry = itr.next();
301
302 String kvpValue = entry.getKey();
303 String kvpName = entry.getValue();
304
305 ranks[count++] = kvpName + StringPool.EQUAL + kvpValue;
306 }
307
308 LocalizationUtil.setPreferencesValues(
309 preferences, "ranks", languageId, ranks);
310 }
311 }
312
313 }