View Javadoc
1   /*
2    * Copyright (C) 2003-2010 eXo Platform SAS.
3    *
4    * This program is free software; you can redistribute it and/or
5    * modify it under the terms of the GNU Affero General Public License
6    * as published by the Free Software Foundation; either version 3
7    * of the License, or (at your option) any later version.
8    *
9    * This program is distributed in the hope that it will be useful,
10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12   * GNU General Public License for more details.
13   *
14   * You should have received a copy of the GNU General Public License
15   * along with this program; if not, see<http://www.gnu.org/licenses/>.
16   */
17  package org.exoplatform.wcm.ext.component.activity;
18  
19  import java.util.Date;
20  
21  import org.exoplatform.social.core.activity.model.ExoSocialActivity;
22  import org.exoplatform.social.service.rest.Util;
23  import org.exoplatform.social.webui.Utils;
24  import org.exoplatform.social.webui.activity.BaseUIActivity;
25  import org.exoplatform.social.webui.activity.UIActivitiesContainer;
26  import org.exoplatform.social.webui.composer.PopupContainer;
27  import org.exoplatform.webui.config.annotation.ComponentConfig;
28  import org.exoplatform.webui.config.annotation.EventConfig;
29  import org.exoplatform.webui.core.lifecycle.UIFormLifecycle;
30  import org.exoplatform.webui.event.Event;
31  import org.exoplatform.webui.event.EventListener;
32  
33  @ComponentConfig(
34          lifecycle = UIFormLifecycle.class,
35          template = "classpath:groovy/ecm/social-integration/plugin/link/UILinkActivity.gtmpl",
36          events = {
37                  @EventConfig(listeners = UILinkActivity.ViewDocumentActionListener.class),
38                  @EventConfig(listeners = BaseUIActivity.LoadLikesActionListener.class),
39                  @EventConfig(listeners = BaseUIActivity.ToggleDisplayCommentFormActionListener.class),
40                  @EventConfig(listeners = BaseUIActivity.LikeActivityActionListener.class),
41                  @EventConfig(listeners = BaseUIActivity.SetCommentListStatusActionListener.class),
42                  @EventConfig(listeners = BaseUIActivity.PostCommentActionListener.class),
43                  @EventConfig(listeners = BaseUIActivity.DeleteActivityActionListener.class),
44                  @EventConfig(listeners = BaseUIActivity.DeleteCommentActionListener.class),
45                  @EventConfig(listeners = BaseUIActivity.LikeCommentActionListener.class),
46                  @EventConfig(listeners = BaseUIActivity.EditActivityActionListener.class),
47                  @EventConfig(listeners = BaseUIActivity.EditCommentActionListener.class)
48          }
49  )
50  public class UILinkActivity extends BaseUIActivity {
51  
52    public static final String ACTIVITY_TYPE = "LINK_ACTIVITY";
53  
54    private String linkSource = "";
55    private String linkTitle = "";
56    private String linkImage = "";
57    private String linkDescription = "";
58    private String linkComment = "";
59    private String embedHtml = "";
60  
61    public String getLinkComment() {
62      return linkComment;
63    }
64    public void setLinkComment(String linkComment) {
65      this.linkComment = linkComment;
66    }
67    public String getLinkDescription() {
68      return UILinkUtil.simpleEscapeHtml(Util.getDecodeQueryURL(linkDescription));
69    }
70    public void setLinkDescription(String linkDescription) {
71      this.linkDescription = linkDescription;
72    }
73    public String getLinkImage() {
74      return linkImage;
75    }
76    public void setLinkImage(String linkImage) {
77      this.linkImage = linkImage;
78    }
79    public String getLinkSource() {
80      return UILinkUtil.simpleEscapeHtml(Util.getDecodeQueryURL(linkSource));
81    }
82    public void setLinkSource(String linkSource) {
83      this.linkSource = linkSource;
84    }
85    public String getLinkTitle() {
86      return UILinkUtil.simpleEscapeHtml(Util.getDecodeQueryURL(linkTitle));
87    }
88    public void setLinkTitle(String linkTitle) {
89      this.linkTitle = linkTitle;
90    }
91    public String getEmbedHtml() {
92      return embedHtml;
93    }
94    public void setEmbedHtml(String embedHtml) {
95      this.embedHtml = embedHtml;
96    }
97  
98    @Override
99    protected void editActivity(String message) {
100     ExoSocialActivity activity = getActivity();
101     activity.getTemplateParams().put(UILinkActivityComposer.COMMENT_PARAM, message);
102     getActivity().setUpdated(new Date());
103     this.setLinkComment(message);
104     Utils.getActivityManager().updateActivity(getActivity());
105   }
106 
107   public static class ViewDocumentActionListener extends EventListener<UILinkActivity> {
108     @Override
109     public void execute(Event<UILinkActivity> event) throws Exception {
110       UILinkActivity uiLinkActivity = event.getSource();
111       UIActivitiesContainer uiActivitiesContainer = uiLinkActivity.getAncestorOfType(UIActivitiesContainer.class);
112       PopupContainer uiPopupContainer = uiActivitiesContainer.getPopupContainer();
113 
114       UIDocumentPreview uiDocumentPreview = uiPopupContainer.createUIComponent(UIDocumentPreview.class, null,
115               "UIDocumentPreview");
116       uiDocumentPreview.setBaseUIActivity(uiLinkActivity);
117 
118       uiPopupContainer.activate(uiDocumentPreview, 0, 0, true);
119       event.getRequestContext().addUIComponentToUpdateByAjax(uiPopupContainer);
120     }
121   }
122 }