/*************************************************************************** * 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.faq.webui.popup; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import org.exoplatform.faq.service.Cate; import org.exoplatform.faq.service.FAQService; import org.exoplatform.faq.service.FAQSetting; import org.exoplatform.faq.service.Utils; import org.exoplatform.faq.webui.FAQUtils; import org.exoplatform.faq.webui.UIAnswersContainer; import org.exoplatform.faq.webui.UIAnswersPortlet; import org.exoplatform.faq.webui.UICategories; import org.exoplatform.faq.webui.UIQuestions; import org.exoplatform.faq.webui.ValidatorDataInput; import org.exoplatform.ks.common.webui.BaseEventListener; import org.exoplatform.ks.common.webui.BaseUIForm; import org.exoplatform.ks.common.webui.UIPopupAction; import org.exoplatform.ks.common.webui.UIPopupContainer; import org.exoplatform.ks.common.webui.WebUIUtils; import org.exoplatform.webui.application.WebuiRequestContext; import org.exoplatform.webui.config.annotation.ComponentConfig; 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.UIFormCheckBoxInput; import org.exoplatform.webui.form.UIFormInputWithActions; import org.exoplatform.webui.form.UIFormInputWithActions.ActionData; import org.exoplatform.webui.form.UIFormSelectBox; import org.exoplatform.webui.form.UIFormStringInput; import org.exoplatform.webui.form.wysiwyg.UIFormWYSIWYGInput; /** * Created by The eXo Platform SARL * Author : Hung Nguyen * hung.nguyen@exoplatform.com * Aus 01, 2007 2:48:18 PM */ @ComponentConfig( lifecycle = UIFormLifecycle.class, template = "app:/templates/faq/webui/popup/UISettingForm.gtmpl", events = { @EventConfig(listeners = UISettingForm.SaveActionListener.class), @EventConfig(listeners = UISettingForm.UserWatchManagerActionListener.class), @EventConfig(listeners = UISettingForm.ChildTabChangeActionListener.class), @EventConfig(listeners = UISettingForm.ResetMailContentActionListener.class), @EventConfig(listeners = UISettingForm.SelectCategoryForumActionListener.class), @EventConfig(listeners = UISettingForm.ChangeAvatarActionListener.class), @EventConfig(listeners = UISettingForm.SetDefaultAvatarActionListener.class, confirm = "UISettingForm.msg.SetDeFaultAvatar", phase = Phase.DECODE), @EventConfig(listeners = UISettingForm.CancelActionListener.class) } ) @SuppressWarnings("unused") public class UISettingForm extends BaseUIForm implements UIPopupComponent { public final String DISPLAY_TAB = "DisplayTab"; public final String SET_DEFAULT_EMAIL_TAB = "DefaultEmail"; public final String SET_DEFAULT_ADDNEW_QUESTION_TAB = "AddNewQuestionTab"; public final String SET_DEFAULT_EDIT_QUESTION_TAB = "EditQuestionTab"; public final String SET_EMAIL_MOVE_QUESTION_TAB = "EmailMoveQuestionTab"; public final String CATEGORY_SCOPING = "CategoryScoping"; public final String ITEM_VOTE = "vote"; private final String DISPLAY_MODE = "display-mode".intern(); public static final String ORDER_BY = "order-by".intern(); public static final String ORDER_TYPE = "order-type".intern(); private static final String DISPLAY_APPROVED = "approved"; private static final String DISPLAY_BOTH = "both"; private static final String ENABLE_VOTE_COMMNET = "enableVotComment"; private static final String ENABLE_ANONYMOUS_SUBMIT_QUESTION = "enableAnonymousSubmitQuestion"; public static final String ITEM_CREATE_DATE = "created".intern(); public static final String ITEM_ALPHABET = "alphabet".intern(); public static final String ASC = "asc".intern(); public static final String DESC = "desc".intern(); private static final String ENABLE_RSS = "enableRSS"; private static final String ENABLE_VIEW_AVATAR = "enableViewAvatar"; private static final String EMAIL_DEFAULT_ADD_QUESTION = "EmailAddNewQuestion"; private static final String EMAIL_DEFAULT_EDIT_QUESTION = "EmailEditQuestion"; private static final String EMAIL_MOVE_QUESTION = "EmailMoveQuestion"; private static final String DISCUSSION_TAB = "Discussion"; private static final String FIELD_CATEGORY_PATH_INPUT = "CategoryPath"; private static final String ENABLE_DISCUSSION = "EnableDiscuss"; private static final String POST_QUESTION_IN_ROOT_CATEGORY = "isPostQuestionInRootCategory"; private FAQSetting faqSetting_ = new FAQSetting(); private boolean isEditPortlet_ = false; private List<String> idForumName = new ArrayList<String>(); private boolean isResetMail = false; private int indexOfTab = 0; private String avatarUrl; private String tabSelected = DISPLAY_TAB; private List<Cate> listCate = new ArrayList<Cate>(); private FAQService faqService_; public UISettingForm() throws Exception { faqService_ = FAQUtils.getFAQService(); isEditPortlet_ = false; } public void setIsEditPortlet(boolean isEditPortLet) { this.isEditPortlet_ = isEditPortLet; if (isEditPortLet) { FAQUtils.getPorletPreference(faqSetting_); } } public void setPathCatygory(List<String> idForumName) { this.idForumName = idForumName; ((UIFormInputWithActions) getChildById(DISCUSSION_TAB)).getUIStringInput(FIELD_CATEGORY_PATH_INPUT).setValue(idForumName.get(1)); } private void setListCate() throws Exception { this.listCate.addAll(FAQUtils.getFAQService().listingCategoryTree()); } public void init() throws Exception { if (isEditPortlet_) { setListCate(); UIFormInputWithActions DisplayTab = new UIFormInputWithActions(DISPLAY_TAB); UIFormInputWithActions EmailTab = new UIFormInputWithActions(SET_DEFAULT_EMAIL_TAB); UIFormInputWithActions EmailAddNewQuestion = new UIFormInputWithActions(SET_DEFAULT_ADDNEW_QUESTION_TAB); UIFormInputWithActions EmailEditQuestion = new UIFormInputWithActions(SET_DEFAULT_EDIT_QUESTION_TAB); UIFormInputWithActions EmailMoveQuestion = new UIFormInputWithActions(SET_EMAIL_MOVE_QUESTION_TAB); UIFormInputWithActions Discussion = new UIFormInputWithActions(DISCUSSION_TAB); UIFormInputWithActions CategoryScoping = new UIFormInputWithActions(CATEGORY_SCOPING); List<SelectItemOption<String>> displayMode = new ArrayList<SelectItemOption<String>>(); displayMode.add(new SelectItemOption<String>(DISPLAY_APPROVED, DISPLAY_APPROVED)); displayMode.add(new SelectItemOption<String>(DISPLAY_BOTH, DISPLAY_BOTH)); List<SelectItemOption<String>> orderBy = new ArrayList<SelectItemOption<String>>(); orderBy.add(new SelectItemOption<String>(ITEM_CREATE_DATE, FAQSetting.DISPLAY_TYPE_POSTDATE)); orderBy.add(new SelectItemOption<String>(ITEM_ALPHABET + "/Index", FAQSetting.DISPLAY_TYPE_ALPHABET + "/Index")); List<SelectItemOption<String>> orderType = new ArrayList<SelectItemOption<String>>(); orderType.add(new SelectItemOption<String>(ASC, FAQSetting.ORDERBY_TYPE_ASC)); orderType.add(new SelectItemOption<String>(DESC, FAQSetting.ORDERBY_TYPE_DESC)); FAQUtils.getEmailSetting(faqSetting_, true, false); UIFormWYSIWYGInput emailDefaultAdd = new UIFormWYSIWYGInput(EMAIL_DEFAULT_ADD_QUESTION, EMAIL_DEFAULT_ADD_QUESTION, ""); emailDefaultAdd.setFCKConfig(WebUIUtils.getFCKConfig()); emailDefaultAdd.setToolBarName("Basic"); emailDefaultAdd.setValue(faqSetting_.getEmailSettingContent()); EmailAddNewQuestion.addUIFormInput(emailDefaultAdd); FAQUtils.getEmailSetting(faqSetting_, false, false); UIFormWYSIWYGInput emailDefaultEdit = new UIFormWYSIWYGInput(EMAIL_DEFAULT_EDIT_QUESTION, EMAIL_DEFAULT_EDIT_QUESTION, ""); emailDefaultEdit.setFCKConfig(WebUIUtils.getFCKConfig()); emailDefaultEdit.setToolBarName("Basic"); emailDefaultEdit.setValue(faqSetting_.getEmailSettingContent()); EmailEditQuestion.addUIFormInput(emailDefaultEdit); String defEmailMove = faqSetting_.getEmailMoveQuestion(); if (defEmailMove == null || defEmailMove.trim().length() <= 10) { defEmailMove = FAQUtils.getEmailMoveQuestion(faqSetting_); } UIFormWYSIWYGInput emailDefaultMove = new UIFormWYSIWYGInput(EMAIL_MOVE_QUESTION, EMAIL_MOVE_QUESTION, ""); emailDefaultMove.setFCKConfig(WebUIUtils.getFCKConfig()); emailDefaultMove.setToolBarName("Basic"); emailDefaultMove.setValue(defEmailMove); EmailMoveQuestion.addUIFormInput(emailDefaultMove); EmailTab.addChild(EmailAddNewQuestion); EmailTab.addChild(EmailEditQuestion); EmailTab.addChild(EmailMoveQuestion); DisplayTab.addUIFormInput((new UIFormSelectBox(DISPLAY_MODE, DISPLAY_MODE, displayMode)).setValue(faqSetting_.getDisplayMode())); DisplayTab.addUIFormInput((new UIFormSelectBox(ORDER_BY, ORDER_BY, orderBy)).setValue(String.valueOf(faqSetting_.getOrderBy()))); ; DisplayTab.addUIFormInput((new UIFormSelectBox(ORDER_TYPE, ORDER_TYPE, orderType)).setValue(String.valueOf(faqSetting_.getOrderType()))); DisplayTab.addUIFormInput((new UIFormCheckBoxInput<Boolean>(ENABLE_VOTE_COMMNET, ENABLE_VOTE_COMMNET, false)).setChecked(faqSetting_.isEnanbleVotesAndComments())); DisplayTab.addUIFormInput((new UIFormCheckBoxInput<Boolean>(ENABLE_ANONYMOUS_SUBMIT_QUESTION, ENABLE_ANONYMOUS_SUBMIT_QUESTION, false)).setChecked(faqSetting_.isEnableAnonymousSubmitQuestion())); DisplayTab.addUIFormInput((new UIFormCheckBoxInput<Boolean>(ENABLE_RSS, ENABLE_RSS, false)).setChecked(faqSetting_.isEnableAutomaticRSS())); DisplayTab.addUIFormInput((new UIFormCheckBoxInput<Boolean>(ENABLE_VIEW_AVATAR, ENABLE_VIEW_AVATAR, false)).setChecked(faqSetting_.isEnableViewAvatar())); UIFormCheckBoxInput<Boolean> isPostQuestionInRootCategory = new UIFormCheckBoxInput<Boolean>(POST_QUESTION_IN_ROOT_CATEGORY, POST_QUESTION_IN_ROOT_CATEGORY, true); isPostQuestionInRootCategory.setChecked(faqSetting_.isPostQuestionInRootCategory()); DisplayTab.addUIFormInput(isPostQuestionInRootCategory); UIFormCheckBoxInput<Boolean> enableDiscus = new UIFormCheckBoxInput<Boolean>(ENABLE_DISCUSSION, ENABLE_DISCUSSION, false); enableDiscus.setChecked(faqSetting_.getIsDiscussForum()); Discussion.addUIFormInput(enableDiscus); UIFormStringInput categoryPath = new UIFormStringInput(FIELD_CATEGORY_PATH_INPUT, FIELD_CATEGORY_PATH_INPUT, null); String pathCate = faqSetting_.getIdNameCategoryForum(); idForumName.clear(); if (pathCate.indexOf(";") > 0) { this.idForumName.add(pathCate.substring(0, pathCate.indexOf(";"))); this.idForumName.add(pathCate.substring(pathCate.indexOf(";") + 1)); } else { this.idForumName.add(""); this.idForumName.add(""); } categoryPath.setValue(idForumName.get(1)); categoryPath.setEditable(false); Discussion.addUIFormInput(categoryPath); List<ActionData> actionData = new ArrayList<ActionData>(); ActionData ad; ad = new ActionData(); ad.setActionListener("SelectCategoryForum"); ad.setActionName("SelectCategoryForum"); ad.setActionType(ActionData.TYPE_ICON); ad.setCssIconClass("AddIcon16x16"); actionData.add(ad); Discussion.setActionField(FIELD_CATEGORY_PATH_INPUT, actionData); UIFormCheckBoxInput<Boolean> checkBoxInput = null; for (Cate cate : listCate) { checkBoxInput = new UIFormCheckBoxInput<Boolean>(cate.getCategory().getId(), cate.getCategory().getId(), false); checkBoxInput.setChecked(cate.getCategory().isView()); CategoryScoping.addChild(checkBoxInput); } this.addChild(DisplayTab); this.addChild(EmailTab); this.addChild(Discussion); this.addChild(CategoryScoping); DisplayTab.setRendered(true); EmailAddNewQuestion.setRendered(true); EmailEditQuestion.setRendered(true); EmailTab.setRendered(true); } else { List<SelectItemOption<String>> orderBy = new ArrayList<SelectItemOption<String>>(); orderBy.add(new SelectItemOption<String>(ITEM_CREATE_DATE, FAQSetting.DISPLAY_TYPE_POSTDATE)); orderBy.add(new SelectItemOption<String>(ITEM_ALPHABET + "/Index", FAQSetting.DISPLAY_TYPE_ALPHABET + "/Index")); addUIFormInput((new UIFormSelectBox(ORDER_BY, ORDER_BY, orderBy)).setValue(String.valueOf(faqSetting_.getOrderBy()))); List<SelectItemOption<String>> orderType = new ArrayList<SelectItemOption<String>>(); orderType.add(new SelectItemOption<String>(ASC, FAQSetting.ORDERBY_TYPE_ASC)); orderType.add(new SelectItemOption<String>(DESC, FAQSetting.ORDERBY_TYPE_DESC)); addUIFormInput((new UIFormSelectBox(ORDER_TYPE, ORDER_TYPE, orderType)).setValue(String.valueOf(faqSetting_.getOrderType()))); addUIFormInput((new UIFormCheckBoxInput<Boolean>(ITEM_VOTE, ITEM_VOTE, false)).setChecked(faqSetting_.isSortQuestionByVote())); setAvatarUrl(FAQUtils.getUserAvatar(FAQUtils.getCurrentUser())); } } boolean isDefaultAvatar() { return avatarUrl != null && avatarUrl.indexOf(Utils.DEFAULT_AVATAR_URL) >= 0; } /** * @return the avatarUrl */ public String getAvatarUrl() { return avatarUrl; } public void setAvatarUrl(String url) { this.avatarUrl = url; } public FAQSetting getFaqSetting() { return faqSetting_; } public void setFaqSetting(FAQSetting faqSetting) { this.faqSetting_ = faqSetting; } public String[] getActions() { return new String[] { "Save", "Cancel" }; } public void activate() throws Exception { } public void deActivate() throws Exception { } private String getSelectedTab() { return tabSelected; } static public class SaveActionListener extends EventListener<UISettingForm> { public void execute(Event<UISettingForm> event) throws Exception { UISettingForm settingForm = event.getSource(); UIAnswersPortlet uiPortlet = settingForm.getAncestorOfType(UIAnswersPortlet.class); FAQSetting faqSetting = settingForm.faqSetting_; if (settingForm.isEditPortlet_) { UIFormInputWithActions inputWithActions = settingForm.getChildById(settingForm.CATEGORY_SCOPING); List<String> listCateIds = new ArrayList<String>(); UIFormCheckBoxInput<Boolean> checkBoxInput = null; int position = 1; boolean isView = true; for (int i = 0; i < settingForm.listCate.size(); i++) { checkBoxInput = inputWithActions.getChildById(settingForm.listCate.get(i).getCategory().getId()); if (settingForm.listCate.get(i).getDeft() <= position || (!checkBoxInput.isChecked() && isView)) { isView = settingForm.listCate.get(i).getCategory().isView(); position = settingForm.listCate.get(i).getDeft(); } if ((settingForm.listCate.get(i).getDeft() > position) && !isView) checkBoxInput.setChecked(false); if ((checkBoxInput.isChecked() && !settingForm.listCate.get(i).getCategory().isView()) || (!checkBoxInput.isChecked() && settingForm.listCate.get(i).getCategory().isView())) { listCateIds.add(settingForm.listCate.get(i).getCategory().getPath()); settingForm.listCate.get(i).getCategory().setView(checkBoxInput.isChecked()); } } if (listCateIds != null && listCateIds.size() > 0) settingForm.faqService_.changeStatusCategoryView(listCateIds); inputWithActions = settingForm.getChildById(settingForm.DISPLAY_TAB); faqSetting.setDisplayMode(((UIFormSelectBox) inputWithActions.getChildById(settingForm.DISPLAY_MODE)).getValue()); faqSetting.setOrderBy(String.valueOf(((UIFormSelectBox) inputWithActions.getChildById(ORDER_BY)).getValue())); faqSetting.setOrderType(String.valueOf(((UIFormSelectBox) inputWithActions.getChildById(ORDER_TYPE)).getValue())); faqSetting.setEnanbleVotesAndComments(inputWithActions.getUIFormCheckBoxInput(ENABLE_VOTE_COMMNET).isChecked()); faqSetting.setEnableAnonymousSubmitQuestion(inputWithActions.getUIFormCheckBoxInput(ENABLE_ANONYMOUS_SUBMIT_QUESTION).isChecked()); faqSetting.setEnableAutomaticRSS(inputWithActions.getUIFormCheckBoxInput(ENABLE_RSS).isChecked()); faqSetting.setEnableViewAvatar(inputWithActions.getUIFormCheckBoxInput(ENABLE_VIEW_AVATAR).isChecked()); faqSetting.setPostQuestionInRootCategory(inputWithActions.getUIFormCheckBoxInput(POST_QUESTION_IN_ROOT_CATEGORY).isChecked()); UIFormInputWithActions emailTab = settingForm.getChildById(settingForm.SET_DEFAULT_EMAIL_TAB); String defaultAddnewQuestion = ((UIFormWYSIWYGInput) ((UIFormInputWithActions) emailTab.getChildById(settingForm.SET_DEFAULT_ADDNEW_QUESTION_TAB)).getChildById(EMAIL_DEFAULT_ADD_QUESTION)).getValue(); String defaultEditQuestion = ((UIFormWYSIWYGInput) ((UIFormInputWithActions) emailTab.getChildById(settingForm.SET_DEFAULT_EDIT_QUESTION_TAB)).getChildById(EMAIL_DEFAULT_EDIT_QUESTION)).getValue(); String emailMoveQuestion = ((UIFormWYSIWYGInput) ((UIFormInputWithActions) emailTab.getChildById(settingForm.SET_EMAIL_MOVE_QUESTION_TAB)).getChildById(EMAIL_MOVE_QUESTION)).getValue(); if (defaultAddnewQuestion == null || !ValidatorDataInput.fckContentIsNotEmpty(defaultAddnewQuestion)) defaultAddnewQuestion = " "; if (defaultEditQuestion == null || !ValidatorDataInput.fckContentIsNotEmpty(defaultEditQuestion)) defaultEditQuestion = " "; UIFormInputWithActions Discussion = settingForm.getChildById(DISCUSSION_TAB); boolean isDiscus = (Boolean) Discussion.getUIFormCheckBoxInput(ENABLE_DISCUSSION).getValue(); if (isDiscus) { String value = Discussion.getUIStringInput(FIELD_CATEGORY_PATH_INPUT).getValue(); if (!settingForm.idForumName.isEmpty() && !FAQUtils.isFieldEmpty(value)) { faqSetting.setIdNameCategoryForum(settingForm.idForumName.get(0) + ";" + settingForm.idForumName.get(1)); } else { settingForm.warning("UISettingForm.msg.pathCategory-empty"); return; } } else { faqSetting.setIdNameCategoryForum(""); } faqSetting.setIsDiscussForum(isDiscus); faqSetting.setEmailMoveQuestion(emailMoveQuestion); FAQUtils.savePortletPreference(faqSetting, defaultAddnewQuestion.replaceAll("&", "&"), defaultEditQuestion.replaceAll("&", "&")); settingForm.info("UISettingForm.msg.update-successful"); } else { faqSetting.setOrderBy(String.valueOf(settingForm.getUIFormSelectBox(ORDER_BY).getValue())); faqSetting.setOrderType(String.valueOf(settingForm.getUIFormSelectBox(ORDER_TYPE).getValue())); faqSetting.setSortQuestionByVote(settingForm.getUIFormCheckBoxInput(settingForm.ITEM_VOTE).isChecked()); settingForm.faqService_.saveFAQSetting(faqSetting, FAQUtils.getCurrentUser()); UIPopupAction uiPopupAction = settingForm.getAncestorOfType(UIPopupAction.class); uiPopupAction.deActivate(); event.getRequestContext().addUIComponentToUpdateByAjax(uiPopupAction); UIQuestions questions = uiPortlet.findFirstComponentOfType(UIQuestions.class); UICategories categories = uiPortlet.findFirstComponentOfType(UICategories.class); categories.resetListCate(); questions.setFAQSetting(faqSetting); questions.setListObject(); questions.updateCurrentQuestionList(); event.getRequestContext().addUIComponentToUpdateByAjax(uiPortlet); } } } static public class UserWatchManagerActionListener extends BaseEventListener<UISettingForm> { public void onEvent(Event<UISettingForm> event, UISettingForm settingForm, String objectId) throws Exception { UIPopupContainer watchContainer = settingForm.getAncestorOfType(UIPopupContainer.class); UIUserWatchManager watchForm = openPopup(watchContainer, UIUserWatchManager.class, 600, 0); watchForm.setFAQSetting(settingForm.faqSetting_); } } static public class ChangeAvatarActionListener extends BaseEventListener<UISettingForm> { public void onEvent(Event<UISettingForm> event, UISettingForm settingForm, String objectId) throws Exception { UIPopupContainer watchContainer = settingForm.getAncestorOfType(UIPopupContainer.class); UIAttachmentForm attachMentForm = openPopup(watchContainer, UIAttachmentForm.class, 550, 0); attachMentForm.setIsChangeAvatar(true); attachMentForm.setNumberUpload(1); } } static public class SetDefaultAvatarActionListener extends EventListener<UISettingForm> { public void execute(Event<UISettingForm> event) throws Exception { UISettingForm settingForm = event.getSource(); settingForm.faqService_.setDefaultAvatar(FAQUtils.getCurrentUser()); settingForm.setAvatarUrl(Utils.DEFAULT_AVATAR_URL); event.getRequestContext().addUIComponentToUpdateByAjax(settingForm.getParent()); } } static public class ResetMailContentActionListener extends EventListener<UISettingForm> { public void execute(Event<UISettingForm> event) throws Exception { UISettingForm settingForm = event.getSource(); String id = event.getRequestContext().getRequestParameter(OBJECTID); String emailContent = ""; WebuiRequestContext context = event.getRequestContext(); ResourceBundle res = context.getApplicationResourceBundle(); UIFormInputWithActions formInputWithActions = settingForm.getChildById(settingForm.SET_DEFAULT_EMAIL_TAB); UIFormWYSIWYGInput input = null; if (id.equals("0")) { emailContent = res.getString("SendEmail.AddNewQuestion.Default"); input = (UIFormWYSIWYGInput) ((UIFormInputWithActions) formInputWithActions.getChildById(settingForm.SET_DEFAULT_ADDNEW_QUESTION_TAB)).getChildById(EMAIL_DEFAULT_ADD_QUESTION); input.setValue(emailContent); } else if (id.equals("1")) { emailContent = res.getString("SendEmail.ResponseQuestion.Default"); input = (UIFormWYSIWYGInput) ((UIFormInputWithActions) formInputWithActions.getChildById(settingForm.SET_DEFAULT_EDIT_QUESTION_TAB)).getChildById(EMAIL_DEFAULT_EDIT_QUESTION); input.setValue(emailContent); } else { emailContent = res.getString("SendEmail.MoveQuetstion.Default"); input = (UIFormWYSIWYGInput) ((UIFormInputWithActions) formInputWithActions.getChildById(settingForm.SET_EMAIL_MOVE_QUESTION_TAB)).getChildById(EMAIL_MOVE_QUESTION); input.setValue(emailContent); } settingForm.isResetMail = true; settingForm.indexOfTab = Integer.parseInt(id); context.addUIComponentToUpdateByAjax(settingForm); } } static public class ChildTabChangeActionListener extends EventListener<UISettingForm> { public void execute(Event<UISettingForm> event) throws Exception { UISettingForm settingForm = event.getSource(); String[] tabId = event.getRequestContext().getRequestParameter(OBJECTID).split("/"); String tab = tabId[0]; int id = Integer.parseInt(tabId[1]); if (tab.equals("parent")) { settingForm.isResetMail = false; if (id == 0) settingForm.tabSelected = settingForm.DISPLAY_TAB; else if (id == 2) settingForm.tabSelected = DISCUSSION_TAB; else if (id == 3) settingForm.tabSelected = settingForm.CATEGORY_SCOPING; else settingForm.tabSelected = settingForm.SET_DEFAULT_EMAIL_TAB; } else { settingForm.indexOfTab = id; settingForm.isResetMail = true; } event.getRequestContext().addUIComponentToUpdateByAjax(settingForm.getParent()); } } static public class SelectCategoryForumActionListener extends EventListener<UISettingForm> { public void execute(Event<UISettingForm> event) throws Exception { UISettingForm settingForm = event.getSource(); UIAnswersPortlet uiPortlet = settingForm.getAncestorOfType(UIAnswersPortlet.class); try { UIPopupContainer watchContainer = settingForm.getAncestorOfType(UIPopupContainer.class); UISelectCategoryForumForm listCateForm = settingForm.openPopup(watchContainer, UISelectCategoryForumForm.class, 400, 0); listCateForm.setListCategory(); } catch (Exception e) { UIPopupAction popupAction = uiPortlet.getChild(UIPopupAction.class); UISelectCategoryForumForm listCateForm = popupAction.createUIComponent(UISelectCategoryForumForm.class, null, null); listCateForm.setListCategory(); popupAction.activate(listCateForm, 400, 400); event.getRequestContext().addUIComponentToUpdateByAjax(popupAction); } } } static public class CancelActionListener extends EventListener<UISettingForm> { public void execute(Event<UISettingForm> event) throws Exception { UISettingForm settingForm = event.getSource(); UIAnswersPortlet uiPortlet = settingForm.getAncestorOfType(UIAnswersPortlet.class); UIQuestions uiQuestions = uiPortlet.findFirstComponentOfType(UIQuestions.class); uiQuestions.setDefaultLanguage(); UIPopupAction uiPopupAction = settingForm.getAncestorOfType(UIPopupAction.class); uiPopupAction.deActivate(); event.getRequestContext().addUIComponentToUpdateByAjax(uiQuestions); event.getRequestContext().addUIComponentToUpdateByAjax(uiPortlet.findFirstComponentOfType(UIAnswersContainer.class)); event.getRequestContext().addUIComponentToUpdateByAjax(uiPopupAction); } } }