/***************************************************************************
* Copyright (C) 2003-2007 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
***************************************************************************/
package org.exoplatform.forum.webui.popup;
import org.exoplatform.forum.ForumUtils;
import org.exoplatform.forum.common.CommonUtils;
import org.exoplatform.forum.common.UserHelper;
import org.exoplatform.forum.common.webui.UIPermissionPanel;
import org.exoplatform.forum.service.Category;
import org.exoplatform.forum.service.Forum;
import org.exoplatform.forum.service.ForumServiceUtils;
import org.exoplatform.forum.webui.BaseForumForm;
import org.exoplatform.forum.webui.UIBreadcumbs;
import org.exoplatform.forum.webui.UICategories;
import org.exoplatform.forum.webui.UICategory;
import org.exoplatform.forum.webui.UIForumContainer;
import org.exoplatform.forum.webui.UIForumDescription;
import org.exoplatform.forum.webui.UIForumPortlet;
import org.exoplatform.forum.webui.UITopicContainer;
import org.exoplatform.services.organization.User;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.ComponentConfigs;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIPopupComponent;
import org.exoplatform.webui.core.lifecycle.UIFormLifecycle;
import org.exoplatform.webui.core.model.SelectItemOption;
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.Event.Phase;
import org.exoplatform.webui.event.EventListener;
import org.exoplatform.webui.form.UIFormInputWithActions;
import org.exoplatform.webui.form.UIFormSelectBox;
import org.exoplatform.webui.form.UIFormStringInput;
import org.exoplatform.webui.form.UIFormTextAreaInput;
import org.exoplatform.webui.form.input.UICheckBoxInput;
import org.exoplatform.webui.form.validator.MandatoryValidator;
import org.exoplatform.webui.form.validator.PositiveNumberFormatValidator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@ComponentConfigs({
@ComponentConfig(lifecycle = UIFormLifecycle.class,
template = "app:/templates/forum/webui/popup/UIForumForm.gtmpl",
events = {
@EventConfig(listeners = UIForumForm.SaveActionListener.class),
@EventConfig(listeners = UIForumForm.CancelActionListener.class, phase = Phase.DECODE),
@EventConfig(listeners = UIForumForm.SelectTabActionListener.class, phase = Phase.DECODE),
@EventConfig(listeners = UIForumForm.OnChangeAutoEmailActionListener.class, phase = Phase.DECODE)
})
})
public class UIForumForm extends BaseForumForm implements UIPopupComponent {
private boolean isCategoriesUpdate = true;
private boolean isForumUpdate = false;
private boolean isActionBar = false;
private boolean isMode = false;
private boolean isUpdate = false;
private String forumId = ForumUtils.EMPTY_STR;
private String categoryId = ForumUtils.EMPTY_STR;
private int id = 0;
private boolean isDoubleClickSubmit;
public static final String FIELD_NEWFORUM_FORM = "newForum";
public static final String FIELD_MODERATOROPTION_FORM = "moderationOptions";
public static final String FIELD_CATEGORY_SELECTBOX = "Category";
public static final String FIELD_FORUMTITLE_INPUT = "ForumTitle";
public static final String FIELD_FORUMORDER_INPUT = "ForumOrder";
public static final String FIELD_FORUMSTATUS_SELECTBOX = "ForumStatus";
public static final String FIELD_FORUMSTATE_SELECTBOX = "ForumState";
public static final String FIELD_DESCRIPTION_TEXTAREA = "Description";
public static final String FIELD_AUTOADDEMAILNOTIFY_CHECKBOX = "AutoAddEmailNotify";
public static final String FIELD_NOTIFYWHENADDTOPIC_MULTIVALUE = "NotifyWhenAddTopic";
public static final String FIELD_NOTIFYWHENADDPOST_MULTIVALUE = "NotifyWhenAddPost";
public static final String FIELD_MODERATETHREAD_CHECKBOX = "ModerateThread";
public static final String FIELD_MODERATEPOST_CHECKBOX = "ModeratePost";
public static final String PERMISSION_TAB = "forumPermission";
public static final String MODERATOR = "Moderator";
public static final String VIEWER = "Viewer";
public static final String POSTABLE = "Postable";
public static final String TOPICABLE = "Topicable";
public static final String USER_SELECTOR_POPUPWINDOW = "UIForumUserPopupWindow";
private Forum forum = null;
public UIForumForm() throws Exception {
isDoubleClickSubmit = false;
setAddColonInLabel(true);
}
public boolean isMode() {
return isMode;
}
public void setMode(boolean isMode) {
this.isMode = isMode;
}
public void initForm(String spaceGroupId) throws Exception {
forum = new Forum();
List<SelectItemOption<String>> list = new ArrayList<SelectItemOption<String>>();
if (ForumUtils.isEmpty(categoryId)) {
List<Category> categorys = getForumService().getCategories(false);
for (Category category : categorys) {
list.add(new SelectItemOption<String>(category.getCategoryName(), category.getId()));
}
if (list.size() > 0) {
categoryId = list.get(0).getValue();
}
} else {
Category category = getForumService().getCategory(categoryId);
list.add(new SelectItemOption<String>(category.getCategoryName(), categoryId));
}
UIFormSelectBox selictCategoryId = new UIFormSelectBox(FIELD_CATEGORY_SELECTBOX, FIELD_CATEGORY_SELECTBOX, list);
selictCategoryId.setDefaultValue(categoryId);
UIFormStringInput forumTitle = new UIFormStringInput(FIELD_FORUMTITLE_INPUT, FIELD_FORUMTITLE_INPUT, null);
forumTitle.addValidator(MandatoryValidator.class);
UIFormStringInput forumOrder = new UIFormStringInput(FIELD_FORUMORDER_INPUT, FIELD_FORUMORDER_INPUT, "0");
forumOrder.addValidator(PositiveNumberFormatValidator.class);
List<SelectItemOption<String>> ls = new ArrayList<SelectItemOption<String>>();
ls.add(new SelectItemOption<String>(getLabel("Open"), "open"));
ls.add(new SelectItemOption<String>(getLabel("Closed"), "closed"));
UIFormSelectBox forumState = new UIFormSelectBox(FIELD_FORUMSTATE_SELECTBOX, FIELD_FORUMSTATE_SELECTBOX, ls);
forumState.setDefaultValue("open");
ls = new ArrayList<SelectItemOption<String>>();
ls.add(new SelectItemOption<String>(this.getLabel("UnLock"), "unlock"));
ls.add(new SelectItemOption<String>(this.getLabel("Locked"), "locked"));
UIFormSelectBox forumStatus = new UIFormSelectBox(FIELD_FORUMSTATUS_SELECTBOX, FIELD_FORUMSTATUS_SELECTBOX, ls);
forumStatus.setDefaultValue("unlock");
UIFormTextAreaInput description = new UIFormTextAreaInput(FIELD_DESCRIPTION_TEXTAREA, FIELD_DESCRIPTION_TEXTAREA, null);
UICheckBoxInput checkWhenAddTopic = new UICheckBoxInput(FIELD_MODERATETHREAD_CHECKBOX, FIELD_MODERATETHREAD_CHECKBOX, false);
UIFormTextAreaInput notifyWhenAddPost = new UIFormTextAreaInput(FIELD_NOTIFYWHENADDPOST_MULTIVALUE, FIELD_NOTIFYWHENADDPOST_MULTIVALUE, null);
UIFormTextAreaInput notifyWhenAddTopic = new UIFormTextAreaInput(FIELD_NOTIFYWHENADDTOPIC_MULTIVALUE, FIELD_NOTIFYWHENADDTOPIC_MULTIVALUE, null);
UICheckBoxInput autoAddEmailNotify = new UICheckBoxInput(FIELD_AUTOADDEMAILNOTIFY_CHECKBOX, FIELD_AUTOADDEMAILNOTIFY_CHECKBOX, true);
autoAddEmailNotify.setValue(true);
autoAddEmailNotify.setOnChange("OnChangeAutoEmail");
//addUIFormInput(selictCategoryId);
UIFormInputWithActions newForum = new UIFormInputWithActions(FIELD_NEWFORUM_FORM);
newForum.addUIFormInput(forumTitle);
newForum.addUIFormInput(selictCategoryId);
newForum.addUIFormInput(forumOrder);
newForum.addUIFormInput(forumState);
newForum.addUIFormInput(forumStatus);
newForum.addUIFormInput(description);
notifyWhenAddPost.setReadOnly(autoAddEmailNotify.getValue());
notifyWhenAddTopic.setReadOnly(autoAddEmailNotify.getValue());
UIFormInputWithActions moderationOptions = new UIFormInputWithActions(FIELD_MODERATOROPTION_FORM);
moderationOptions.addUIFormInput(autoAddEmailNotify);
moderationOptions.addUIFormInput(notifyWhenAddPost);
moderationOptions.addUIFormInput(notifyWhenAddTopic);
moderationOptions.addUIFormInput(checkWhenAddTopic);
addUIFormInput(newForum);
addUIFormInput(moderationOptions);
UIPermissionPanel permissionTab = createUIComponent(UIPermissionPanel.class, null, PERMISSION_TAB);
String []permssion = (isMode == true) ? new String[] { VIEWER, TOPICABLE, POSTABLE } :
new String[] { MODERATOR, VIEWER, TOPICABLE, POSTABLE };
permissionTab.setPermission(spaceGroupId, permssion);
addChild(permissionTab);
setActions(new String[] { "Save", "Cancel" });
}
public void activate() {
}
public void deActivate() {
}
protected boolean getIsSelected(int id) {
if (this.id == id)
return true;
return false;
}
public void setForumValue(Forum forum_, boolean isUpdate) throws Exception {
this.isUpdate = isUpdate;
if (isUpdate) {
forumId = forum_.getId();
forum = getForumService().getForum(categoryId, forumId);
UIFormInputWithActions newForum = this.getChildById(FIELD_NEWFORUM_FORM);
newForum.getUIStringInput(FIELD_FORUMTITLE_INPUT).setValue(CommonUtils.decodeSpecialCharToHTMLnumber(forum.getForumName()));
newForum.getUIStringInput(FIELD_FORUMORDER_INPUT).setValue(String.valueOf(forum.getForumOrder()));
String stat = "open";
if (forum.getIsClosed())
stat = "closed";
newForum.getUIFormSelectBox(FIELD_FORUMSTATE_SELECTBOX).setValue(stat);
if (forum.getIsLock())
stat = "locked";
else
stat = "unlock";
newForum.getUIFormSelectBox(FIELD_FORUMSTATUS_SELECTBOX).setValue(stat);
newForum.getUIFormTextAreaInput(FIELD_DESCRIPTION_TEXTAREA).setDefaultValue(CommonUtils.decodeSpecialCharToHTMLnumber(forum.getDescription()));
UIFormInputWithActions moderationOptions = this.getChildById(FIELD_MODERATOROPTION_FORM);
boolean isAutoAddEmail = forum.getIsAutoAddEmailNotify();
UICheckBoxInput boxInput = getUICheckBoxInput(FIELD_AUTOADDEMAILNOTIFY_CHECKBOX);
boxInput.setChecked(isAutoAddEmail);
boxInput.setReadOnly(isMode);
UIFormTextAreaInput notifyWhenAddPost = moderationOptions.getUIFormTextAreaInput(FIELD_NOTIFYWHENADDPOST_MULTIVALUE);
UIFormTextAreaInput notifyWhenAddTopic = moderationOptions.getUIFormTextAreaInput(FIELD_NOTIFYWHENADDTOPIC_MULTIVALUE);
notifyWhenAddPost.setValue(ForumUtils.unSplitForForum(forum.getNotifyWhenAddPost()));
notifyWhenAddTopic.setValue(ForumUtils.unSplitForForum(forum.getNotifyWhenAddTopic()));
notifyWhenAddPost.setReadOnly(isAutoAddEmail);
notifyWhenAddTopic.setReadOnly(isAutoAddEmail);
getUICheckBoxInput(FIELD_MODERATETHREAD_CHECKBOX).setChecked(forum.getIsModerateTopic());
UIPermissionPanel permisisonTab = this.getChildById(PERMISSION_TAB);
if(isMode == false) {
permisisonTab.addPermissionForOwners(MODERATOR, forum.getModerators());
}
permisisonTab.addPermissionForOwners(VIEWER, forum.getViewer());
permisisonTab.addPermissionForOwners(TOPICABLE, forum.getCreateTopicRole());
permisisonTab.addPermissionForOwners(POSTABLE, forum.getPoster());
}
}
public void setCategoryValue(String categoryId, boolean isEditable) throws Exception {
UIFormInputWithActions newForum = this.getChildById(FIELD_NEWFORUM_FORM);
if (!ForumUtils.isEmpty(categoryId)) {
newForum.getUIFormSelectBox(FIELD_CATEGORY_SELECTBOX).setValue(categoryId);
}
newForum.getUIFormSelectBox(FIELD_CATEGORY_SELECTBOX).setDisabled(!isEditable);
isCategoriesUpdate = isEditable;
this.categoryId = categoryId;
isUpdate = false;
}
public void setForumUpdate(boolean isForumUpdate) {
this.isForumUpdate = isForumUpdate;
}
public boolean isActionBar() {
return isActionBar;
}
public void setActionBar(boolean isActionBar) {
this.isActionBar = isActionBar;
}
private static String listToString(Collection<String> list) {
return list.toString().replace("[", ForumUtils.EMPTY_STR).replace("]", ForumUtils.EMPTY_STR);
}
static public class SaveActionListener extends EventListener<UIForumForm> {
public void execute(Event<UIForumForm> event) throws Exception {
UIForumForm uiForm = event.getSource();
if (uiForm.isDoubleClickSubmit)
return;
uiForm.isDoubleClickSubmit = true;
UIForumPortlet forumPortlet = uiForm.getAncestorOfType(UIForumPortlet.class);
UIFormInputWithActions newForumForm = uiForm.getChildById(FIELD_NEWFORUM_FORM);
UIFormSelectBox categorySelectBox = newForumForm.getUIFormSelectBox(FIELD_CATEGORY_SELECTBOX);
String categoryId = categorySelectBox.getValue();
Category category = uiForm.getForumService().getCategory(categoryId);
if (category == null) {
uiForm.warning("UICategory.msg.CategoryNotExist");
forumPortlet.renderForumHome();
forumPortlet.cancelAction();
event.getRequestContext().addUIComponentToUpdateByAjax(forumPortlet);
return;
}
String forumTitle = newForumForm.getUIStringInput(FIELD_FORUMTITLE_INPUT).getValue();
forumTitle = forumTitle.trim();
int maxText = 50;// ForumUtils.MAXTITLE ;
if (forumTitle.length() > maxText) {
uiForm.warning("NameValidator.msg.warning-long-text", new String[] { uiForm.getLabel(FIELD_FORUMTITLE_INPUT), String.valueOf(maxText) });
uiForm.isDoubleClickSubmit = false;
return;
}
forumTitle = CommonUtils.encodeSpecialCharInTitle(forumTitle);
String forumOrder = newForumForm.getUIStringInput(FIELD_FORUMORDER_INPUT).getValue();
if (ForumUtils.isEmpty(forumOrder))
forumOrder = "0";
forumOrder = ForumUtils.removeZeroFirstNumber(forumOrder);
if (forumOrder.length() > 3) {
uiForm.warning("NameValidator.msg.erro-large-number", new String[] { uiForm.getLabel(FIELD_FORUMORDER_INPUT) });
uiForm.isDoubleClickSubmit = false;
return;
}
String forumState = newForumForm.getUIFormSelectBox(FIELD_FORUMSTATE_SELECTBOX).getValue();
String forumStatus = newForumForm.getUIFormSelectBox(FIELD_FORUMSTATUS_SELECTBOX).getValue();
String description = newForumForm.getUIFormTextAreaInput(FIELD_DESCRIPTION_TEXTAREA).getValue();
description = CommonUtils.encodeSpecialCharInTitle(description);
UIPermissionPanel permissionTab = uiForm.getChildById(PERMISSION_TAB);
String moderators = permissionTab.getOwnersByPermission(MODERATOR);
String topicable = permissionTab.getOwnersByPermission(TOPICABLE);
String postable = permissionTab.getOwnersByPermission(POSTABLE);
String viewer = permissionTab.getOwnersByPermission(VIEWER);
UIFormInputWithActions moderationOptions = uiForm.getChildById(FIELD_MODERATOROPTION_FORM);
boolean isAutoAddEmail = uiForm.getUICheckBoxInput(FIELD_AUTOADDEMAILNOTIFY_CHECKBOX).isChecked();
// set email
if(uiForm.isMode == false) {
if (isAutoAddEmail) {
uiForm.setDefaultEmail(moderationOptions, moderators);
}
}
String notifyWhenAddTopics = moderationOptions.getUIFormTextAreaInput(FIELD_NOTIFYWHENADDTOPIC_MULTIVALUE).getValue();
String notifyWhenAddPosts = moderationOptions.getUIFormTextAreaInput(FIELD_NOTIFYWHENADDPOST_MULTIVALUE).getValue();
if (!ForumUtils.isValidEmailAddresses(notifyWhenAddPosts) || !ForumUtils.isValidEmailAddresses(notifyWhenAddTopics)) {
uiForm.warning("MessagePost.msg.invalid-email");
uiForm.isDoubleClickSubmit = false;
return;
}
String[] notifyWhenAddTopic = ForumUtils.splitForForum(notifyWhenAddTopics);
String[] notifyWhenAddPost = ForumUtils.splitForForum(notifyWhenAddPosts);
boolean ModerateTopic = uiForm.getUICheckBoxInput(FIELD_MODERATETHREAD_CHECKBOX).getValue();
String userName = UserHelper.getCurrentUser();
Forum newForum = uiForm.forum;
newForum.setForumName(forumTitle);
newForum.setOwner(userName);
newForum.setForumOrder(Integer.valueOf(forumOrder).intValue());
newForum.setCreatedDate(new Date());
newForum.setDescription(description);
newForum.setLastTopicPath(ForumUtils.EMPTY_STR);
newForum.setPath(ForumUtils.EMPTY_STR);
newForum.setModifiedBy(userName);
newForum.setModifiedDate(new Date());
newForum.setPostCount(0);
newForum.setTopicCount(0);
newForum.setIsAutoAddEmailNotify(isAutoAddEmail);
newForum.setNotifyWhenAddPost(notifyWhenAddPost);
newForum.setNotifyWhenAddTopic(notifyWhenAddTopic);
newForum.setIsModeratePost(false);
newForum.setIsModerateTopic(ModerateTopic);
if (forumState.equals("closed")) {
newForum.setIsClosed(true);
} else {
newForum.setIsClosed(false);
}
if (forumStatus.equals("locked")) {
newForum.setIsLock(true);
} else {
newForum.setIsLock(false);
}
String[] setTopicable = ForumUtils.splitForForum(topicable);
String[] setPostable = ForumUtils.splitForForum(postable);
String[] setViewer = ForumUtils.splitForForum(viewer);
if(uiForm.isMode == false) {
String[] setModerators = ForumUtils.splitForForum(moderators);
newForum.setModerators(setModerators);
}
newForum.setCreateTopicRole(setTopicable);
newForum.setPoster(setPostable);
newForum.setViewer(setViewer);
try {
if (!ForumUtils.isEmpty(uiForm.forumId)) {
newForum.setId(uiForm.forumId);
uiForm.getForumService().saveForum(categoryId, newForum, false);
} else {
uiForm.getForumService().saveForum(categoryId, newForum, true);
List<String> invisibleCategories = forumPortlet.getInvisibleCategories();
List<String> invisibleForums = forumPortlet.getInvisibleForums();
String listForumId = ForumUtils.EMPTY_STR, listCategoryId = ForumUtils.EMPTY_STR;
if (!invisibleCategories.isEmpty()) {
if (invisibleCategories.contains(categoryId)) {
invisibleForums.add(newForum.getId());
listForumId = listToString(invisibleForums).replaceAll(" ", ForumUtils.EMPTY_STR);
listCategoryId = listToString(invisibleCategories).replaceAll(" ", ForumUtils.EMPTY_STR);
ForumUtils.savePortletPreference(listCategoryId, listForumId);
}
}
}
} catch (Exception e) {
uiForm.log.error("Save portlet preference is fall, exception: ", e);
}
forumPortlet.cancelAction();
WebuiRequestContext context = event.getRequestContext();
if (uiForm.isUpdate && !uiForm.isForumUpdate) {
if (uiForm.isCategoriesUpdate && uiForm.isActionBar == false) {
UICategories uiCategories = forumPortlet.findFirstComponentOfType(UICategories.class);
context.addUIComponentToUpdateByAjax(uiCategories);
} else {
UICategory uiCategory = forumPortlet.findFirstComponentOfType(UICategory.class);
uiCategory.setIsEditForum(true);
if (!uiForm.isActionBar)
context.addUIComponentToUpdateByAjax(uiCategory);
}
if (uiForm.isActionBar) {
forumPortlet.findFirstComponentOfType(UICategory.class).setIsEditForum(true);
context.addUIComponentToUpdateByAjax(forumPortlet);
}
} else {
UITopicContainer uiTopicContainer = forumPortlet.findFirstComponentOfType(UITopicContainer.class);
UIForumContainer uiForumContainer = forumPortlet.getChild(UIForumContainer.class);
if (!uiForm.isForumUpdate) {
forumPortlet.updateIsRendered(ForumUtils.FORUM);
uiForumContainer.setIsRenderChild(true);
uiTopicContainer.updateByBreadcumbs(categoryId, newForum.getId(), true, 1);
}
UIForumDescription forumDescription = uiForumContainer.getChild(UIForumDescription.class);
forumDescription.setForum(newForum);
UIBreadcumbs breadcumbs = forumPortlet.getChild(UIBreadcumbs.class);
breadcumbs.setUpdataPath(categoryId + ForumUtils.SLASH + newForum.getId());
context.addUIComponentToUpdateByAjax(forumPortlet);
}
}
}
static public class CancelActionListener extends EventListener<UIForumForm> {
public void execute(Event<UIForumForm> event) throws Exception {
UIForumPortlet forumPortlet = event.getSource().getAncestorOfType(UIForumPortlet.class);
forumPortlet.cancelAction();
}
}
static public class OnChangeAutoEmailActionListener extends EventListener<UIForumForm> {
public void execute(Event<UIForumForm> event) throws Exception {
UIForumForm forumForm = event.getSource();
UIFormInputWithActions moderationOptions = forumForm.getChildById(FIELD_MODERATOROPTION_FORM);
UIFormTextAreaInput notifyWhenAddTopics = moderationOptions.getUIFormTextAreaInput(FIELD_NOTIFYWHENADDTOPIC_MULTIVALUE);
UIFormTextAreaInput notifyWhenAddPosts = moderationOptions.getUIFormTextAreaInput(FIELD_NOTIFYWHENADDPOST_MULTIVALUE);
boolean isCheck = forumForm.getUICheckBoxInput(FIELD_AUTOADDEMAILNOTIFY_CHECKBOX).isChecked();
if (isCheck) {
UIPermissionPanel permissionTab = forumForm.getChildById(PERMISSION_TAB);
String moderators = permissionTab.getOwnersByPermission(MODERATOR);
forumForm.setDefaultEmail(moderationOptions, moderators);
notifyWhenAddTopics.setReadOnly(true);
notifyWhenAddPosts.setReadOnly(true);
} else {
notifyWhenAddTopics.setReadOnly(false);
notifyWhenAddPosts.setReadOnly(false);
}
event.getRequestContext().addUIComponentToUpdateByAjax(moderationOptions);
}
}
private void setDefaultEmail(UIFormInputWithActions moderationOptions, String moderators) throws Exception {
UIFormTextAreaInput notifyWhenAddTopics = moderationOptions.getUIFormTextAreaInput(FIELD_NOTIFYWHENADDTOPIC_MULTIVALUE);
UIFormTextAreaInput notifyWhenAddPosts = moderationOptions.getUIFormTextAreaInput(FIELD_NOTIFYWHENADDPOST_MULTIVALUE);
UICheckBoxInput boxInput = getUICheckBoxInput(FIELD_AUTOADDEMAILNOTIFY_CHECKBOX);
if (! boxInput.isChecked()) {
return;
}
if (isMode()) {
moderators = ForumUtils.unSplitForForum(forum.getModerators());
}
Set<String> listModerator = new HashSet<String>();
if (!ForumUtils.isEmpty(moderators)) {
String[] moderators_ = ForumUtils.splitForForum(moderators);
String email;
User user = null;
List<String> list = ForumServiceUtils.getUserPermission(moderators_);
for (String string : list) {
user = UserHelper.getUserByUserId(string);
if (user != null && user.isEnabled()) {
email = user.getEmail();
listModerator.add(email);
}
}
}
notifyWhenAddTopics.setValue(listToString(listModerator));
notifyWhenAddPosts.setValue(listToString(listModerator));
}
static public class SelectTabActionListener extends EventListener<UIForumForm> {
public void execute(Event<UIForumForm> event) throws Exception {
String id = event.getRequestContext().getRequestParameter(OBJECTID);
UIForumForm forumForm = event.getSource();
forumForm.id = Integer.parseInt(id);
if (forumForm.id == 1 && !forumForm.isMode) {
UIFormInputWithActions moderationOptions = forumForm.getChildById(FIELD_MODERATOROPTION_FORM);
UIPermissionPanel permissionTab = forumForm.getChildById(PERMISSION_TAB);
String moderators = permissionTab.getOwnersByPermission(MODERATOR);
forumForm.setDefaultEmail(moderationOptions, moderators);
}
event.getRequestContext().addUIComponentToUpdateByAjax(forumForm);
}
}
}