001
014
015 package com.liferay.portlet.messageboards.action;
016
017 import com.liferay.portal.kernel.language.LanguageUtil;
018 import com.liferay.portal.kernel.portlet.DefaultConfigurationAction;
019 import com.liferay.portal.kernel.servlet.SessionErrors;
020 import com.liferay.portal.kernel.util.CharPool;
021 import com.liferay.portal.kernel.util.LocaleUtil;
022 import com.liferay.portal.kernel.util.LocalizationUtil;
023 import com.liferay.portal.kernel.util.NumericalStringComparator;
024 import com.liferay.portal.kernel.util.ParamUtil;
025 import com.liferay.portal.kernel.util.StringPool;
026 import com.liferay.portal.kernel.util.StringUtil;
027 import com.liferay.portal.kernel.util.Validator;
028 import com.liferay.portal.theme.ThemeDisplay;
029 import com.liferay.portal.util.WebKeys;
030
031 import java.util.ArrayList;
032 import java.util.List;
033 import java.util.Locale;
034 import java.util.Map;
035 import java.util.TreeMap;
036
037 import javax.portlet.ActionRequest;
038 import javax.portlet.ActionResponse;
039 import javax.portlet.PortletConfig;
040
041
044 public class ConfigurationActionImpl extends DefaultConfigurationAction {
045
046 @Override
047 public void processAction(
048 PortletConfig portletConfig, ActionRequest actionRequest,
049 ActionResponse actionResponse)
050 throws Exception {
051
052 String tabs2 = ParamUtil.getString(actionRequest, "tabs2");
053
054 if (tabs2.equals("email-from")) {
055 validateEmailFrom(actionRequest);
056 }
057 else if (tabs2.equals("message-added-email")) {
058 validateEmailMessageAdded(actionRequest);
059 }
060 else if (tabs2.equals("message-updated-email")) {
061 validateEmailMessageUpdated(actionRequest);
062 }
063 else if (tabs2.equals("thread-priorities")) {
064 updateThreadPriorities(actionRequest);
065 }
066 else if (tabs2.equals("user-ranks")) {
067 updateUserRanks(actionRequest);
068 }
069
070 super.processAction(portletConfig, actionRequest, actionResponse);
071 }
072
073 protected boolean isValidUserRank(String rank) {
074 if ((StringUtil.count(rank, StringPool.EQUAL) != 1) ||
075 rank.startsWith(StringPool.EQUAL) ||
076 rank.endsWith(StringPool.EQUAL)) {
077
078 return false;
079 }
080
081 return true;
082 }
083
084 protected void updateThreadPriorities(ActionRequest actionRequest)
085 throws Exception {
086
087 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
088 WebKeys.THEME_DISPLAY);
089
090 Locale[] locales = LanguageUtil.getAvailableLocales(
091 themeDisplay.getSiteGroupId());
092
093 for (int i = 0; i < locales.length; i++) {
094 String languageId = LocaleUtil.toLanguageId(locales[i]);
095
096 List<String> priorities = new ArrayList<String>();
097
098 for (int j = 0; j < 10; j++) {
099 String name = ParamUtil.getString(
100 actionRequest, "priorityName" + j + "_" + languageId);
101 String image = ParamUtil.getString(
102 actionRequest, "priorityImage" + j + "_" + languageId);
103 double value = ParamUtil.getDouble(
104 actionRequest, "priorityValue" + j + "_" + languageId);
105
106 if (Validator.isNotNull(name) || Validator.isNotNull(image) ||
107 (value != 0.0)) {
108
109 priorities.add(
110 name + StringPool.COMMA + image + StringPool.COMMA +
111 value);
112 }
113 }
114
115 String preferenceName = LocalizationUtil.getPreferencesKey(
116 "priorities", languageId);
117
118 setPreference(
119 actionRequest, preferenceName,
120 priorities.toArray(new String[priorities.size()]));
121 }
122 }
123
124 protected void updateUserRanks(ActionRequest actionRequest)
125 throws Exception {
126
127 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
128 WebKeys.THEME_DISPLAY);
129
130 Locale[] locales = LanguageUtil.getAvailableLocales(
131 themeDisplay.getSiteGroupId());
132
133 for (Locale locale : locales) {
134 String languageId = LocaleUtil.toLanguageId(locale);
135
136 String[] ranks = StringUtil.splitLines(
137 ParamUtil.getString(actionRequest, "ranks_" + languageId));
138
139 Map<String, String> map = new TreeMap<String, String>(
140 new NumericalStringComparator());
141
142 for (String rank : ranks) {
143 if (!isValidUserRank(rank)) {
144 SessionErrors.add(actionRequest, "userRank");
145
146 return;
147 }
148
149 String[] kvp = StringUtil.split(rank, CharPool.EQUAL);
150
151 String kvpName = kvp[0];
152 String kvpValue = kvp[1];
153
154 map.put(kvpValue, kvpName);
155 }
156
157 ranks = new String[map.size()];
158
159 int count = 0;
160
161 for (Map.Entry<String, String> entry : map.entrySet()) {
162 String kvpValue = entry.getKey();
163 String kvpName = entry.getValue();
164
165 ranks[count++] = kvpName + StringPool.EQUAL + kvpValue;
166 }
167
168 String preferenceName = LocalizationUtil.getPreferencesKey(
169 "ranks", languageId);
170
171 setPreference(actionRequest, preferenceName, ranks);
172 }
173 }
174
175 protected void validateEmailFrom(ActionRequest actionRequest)
176 throws Exception {
177
178 String emailFromName = getParameter(actionRequest, "emailFromName");
179 String emailFromAddress = getParameter(
180 actionRequest, "emailFromAddress");
181
182 if (Validator.isNull(emailFromName)) {
183 SessionErrors.add(actionRequest, "emailFromName");
184 }
185 else if (!Validator.isEmailAddress(emailFromAddress) &&
186 !Validator.isVariableTerm(emailFromAddress)) {
187
188 SessionErrors.add(actionRequest, "emailFromAddress");
189 }
190 }
191
192 protected void validateEmailMessageAdded(ActionRequest actionRequest)
193 throws Exception {
194
195 String emailMessageAddedSubject = getParameter(
196 actionRequest, "emailMessageAddedSubject");
197 String emailMessageAddedBody = getParameter(
198 actionRequest, "emailMessageAddedBody");
199
200 if (Validator.isNull(emailMessageAddedSubject)) {
201 SessionErrors.add(actionRequest, "emailMessageAddedSubject");
202 }
203 else if (Validator.isNull(emailMessageAddedBody)) {
204 SessionErrors.add(actionRequest, "emailMessageAddedBody");
205 }
206 }
207
208 protected void validateEmailMessageUpdated(ActionRequest actionRequest)
209 throws Exception {
210
211 String emailMessageUpdatedSubject = getParameter(
212 actionRequest, "emailMessageUpdatedSubject");
213 String emailMessageUpdatedBody = getParameter(
214 actionRequest, "emailMessageUpdatedBody");
215
216 if (Validator.isNull(emailMessageUpdatedSubject)) {
217 SessionErrors.add(actionRequest, "emailMessageUpdatedSubject");
218 }
219 else if (Validator.isNull(emailMessageUpdatedBody)) {
220 SessionErrors.add(actionRequest, "emailMessageUpdatedBody");
221 }
222 }
223
224 }