/*************************************************************************** * Copyright (C) 2003-2008 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 java.util.List; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.forum.ForumUtils; import org.exoplatform.forum.service.ForumPrivateMessage; import org.exoplatform.forum.service.ForumService; import org.exoplatform.forum.service.JCRPageList; import org.exoplatform.forum.service.UserProfile; import org.exoplatform.forum.service.Utils; import org.exoplatform.forum.webui.UIForumPageIterator; import org.exoplatform.forum.webui.UIForumPortlet; import org.exoplatform.ks.common.webui.UIPopupAction; import org.exoplatform.ks.common.webui.UIPopupContainer; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.UIContainer; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; /** * Created by The eXo Platform SAS * Author : Vu Duy Tu * tu.duy@exoplatform.com * Jun 3, 2008 - 9:49:22 AM */ @ComponentConfig( template = "app:/templates/forum/webui/popup/UIListSentPrivateMessage.gtmpl", events = { @EventConfig(listeners = UIListSentPrivateMessage.ViewMessageActionListener.class), @EventConfig(listeners = UIListSentPrivateMessage.DeleteMessageActionListener.class,confirm="UIPrivateMessageForm.confirm.Delete-message"), @EventConfig(listeners = UIListSentPrivateMessage.ForwardMessageActionListener.class) } ) public class UIListSentPrivateMessage extends UIContainer { private ForumService forumService; private UserProfile userProfile = null; private List<ForumPrivateMessage> listSend = null; private String userName = ForumUtils.EMPTY_STR; private boolean isRenderIterator = false; public UIListSentPrivateMessage() throws Exception { forumService = (ForumService) ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(ForumService.class); addChild(UIForumPageIterator.class, null, "PageListSentMessage"); } @SuppressWarnings("unused") private UserProfile getUserProfile() throws Exception { if (userProfile == null) { userProfile = this.getAncestorOfType(UIForumPortlet.class).getUserProfile(); } this.userName = userProfile.getUserId(); return userProfile; } @SuppressWarnings("unused") private boolean isRenderIterator() { return isRenderIterator; } @SuppressWarnings( { "unused", "unchecked" }) private List<ForumPrivateMessage> getPrivateMessageSendByUser() throws Exception { JCRPageList pageList = this.forumService.getPrivateMessage(userName, Utils.SEND_MESSAGE); UIForumPageIterator forumPageIterator = this.getChild(UIForumPageIterator.class); forumPageIterator.updatePageList(pageList); if (pageList != null) { pageList.setPageSize(10); int page = forumPageIterator.getPageSelected(); this.listSend = pageList.getPage(page); if (pageList.getAvailable() > 10) { isRenderIterator = true; } } return this.listSend; } @SuppressWarnings("unused") private ForumPrivateMessage getPrivateMessage(String id) throws Exception { List<ForumPrivateMessage> list = this.listSend; for (ForumPrivateMessage forumPrivateMessage : list) { if (forumPrivateMessage.getId().equals(id)) return forumPrivateMessage; } return null; } static public class ViewMessageActionListener extends EventListener<UIListSentPrivateMessage> { public void execute(Event<UIListSentPrivateMessage> event) throws Exception { UIListSentPrivateMessage uicontainer = event.getSource(); String objctId = event.getRequestContext().getRequestParameter(OBJECTID); if (!ForumUtils.isEmpty(objctId)) { uicontainer.forumService.saveReadMessage(objctId, uicontainer.userName, Utils.SEND_MESSAGE); ForumPrivateMessage privateMessage = uicontainer.getPrivateMessage(objctId); UIPopupContainer popupContainer = uicontainer.getAncestorOfType(UIPopupContainer.class); UIPopupAction popupAction = popupContainer.getChild(UIPopupAction.class); UIViewPrivateMessageForm privateMessageForm = popupAction.activate(UIViewPrivateMessageForm.class, 670); privateMessageForm.setPrivateMessage(privateMessage); event.getRequestContext().addUIComponentToUpdateByAjax(popupContainer); } } } static public class DeleteMessageActionListener extends EventListener<UIListSentPrivateMessage> { public void execute(Event<UIListSentPrivateMessage> event) throws Exception { UIListSentPrivateMessage uicontainer = event.getSource(); String objctId = event.getRequestContext().getRequestParameter(OBJECTID); if (!ForumUtils.isEmpty(objctId)) { uicontainer.forumService.removePrivateMessage(objctId, uicontainer.userName, Utils.SEND_MESSAGE); event.getRequestContext().addUIComponentToUpdateByAjax(uicontainer.getParent()); } } } static public class ForwardMessageActionListener extends EventListener<UIListSentPrivateMessage> { public void execute(Event<UIListSentPrivateMessage> event) throws Exception { UIListSentPrivateMessage uicontainer = event.getSource(); String objctId = event.getRequestContext().getRequestParameter(OBJECTID); ForumPrivateMessage privateMessage = uicontainer.getPrivateMessage(objctId); UIPrivateMessageForm privateMessageForm = uicontainer.getParent(); privateMessageForm.setUpdate(privateMessage, false); event.getRequestContext().addUIComponentToUpdateByAjax(privateMessageForm); } } }