From 0295bb20cb8418b008a10bb656df6e33eccb0cff Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Sun, 4 Feb 2018 14:11:52 +0000 Subject: [PATCH] shared idea completed git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portal/sbd-uploadshare-portlet@162894 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 60 ++++++++++-- .../user/sbdportlets/CollaborateWithUs.java | 91 +++++++++++++++++-- .../view-experiment-error.jsp | 29 ++++++ .../view-experiment-inserted.jsp | 19 ++-- .../webapp/html/collaboratewithus/view.jsp | 2 +- 5 files changed, 179 insertions(+), 22 deletions(-) create mode 100644 src/main/webapp/html/collaboratewithus/view-experiment-error.jsp diff --git a/pom.xml b/pom.xml index b17fd63..f9a4284 100644 --- a/pom.xml +++ b/pom.xml @@ -17,9 +17,9 @@ Upload Dataset And Share Idea Portlets - scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId} - scm:https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId} - http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId} + scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portal/${project.artifactId} + scm:https://svn.d4science.research-infrastructures.eu/gcube/trunk/portal/${project.artifactId} + http://svn.d4science.research-infrastructures.eu/gcube/trunk/portal/${project.artifactId} @@ -75,11 +75,59 @@ + + + + org.gcube.distribution + maven-portal-bom + LATEST + pom + import + + + + + org.gcube.portal + social-networking-library + provided + + + org.gcube.applicationsupportlayer + aslsocial + provided + + + org.gcube.portal + notifications-common-library + provided + + + org.gcube.common + home-library-jcr + provided + + + org.gcube.common + home-library + provided + + + org.gcube.portal + social-networking-library + provided + + + org.gcube.common.portal + portal-manager + + + org.gcube.dvos + usermanagement-core + com.liferay.portal portal-service - ${liferay.version} provided @@ -97,13 +145,11 @@ com.liferay.portal util-java - ${liferay.version} provided javax.portlet portlet-api - 2.0 provided @@ -124,5 +170,5 @@ 1.2 - + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/sbdportlets/CollaborateWithUs.java b/src/main/java/org/gcube/portlets/user/sbdportlets/CollaborateWithUs.java index dd56512..2fb7186 100644 --- a/src/main/java/org/gcube/portlets/user/sbdportlets/CollaborateWithUs.java +++ b/src/main/java/org/gcube/portlets/user/sbdportlets/CollaborateWithUs.java @@ -1,14 +1,38 @@ package org.gcube.portlets.user.sbdportlets; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletException; +import javax.servlet.http.HttpServletRequest; +import org.gcube.applicationsupportlayer.social.ApplicationNotificationsManager; +import org.gcube.applicationsupportlayer.social.NotificationsManager; +import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingSite; +import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingUser; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.homelibrary.home.HomeLibrary; +import org.gcube.common.homelibrary.home.workspace.Workspace; +import org.gcube.common.portal.PortalContext; +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.portal.notifications.bean.GenericItemBean; +import org.gcube.portal.notifications.thread.MessageNotificationsThread; +import org.gcube.vomanagement.usermanagement.impl.LiferayRoleManager; +import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager; +import org.gcube.vomanagement.usermanagement.model.GCubeUser; + +import com.liferay.portal.kernel.log.Log; +import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.servlet.SessionErrors; import com.liferay.portal.kernel.servlet.SessionMessages; import com.liferay.portal.kernel.util.ParamUtil; +import com.liferay.portal.kernel.util.WebKeys; +import com.liferay.portal.model.User; +import com.liferay.portal.theme.ThemeDisplay; +import com.liferay.portal.util.PortalUtil; import com.liferay.util.bridges.mvc.MVCPortlet; /** @@ -17,19 +41,74 @@ import com.liferay.util.bridges.mvc.MVCPortlet; * Portlet implementation class CollaborateWithUs */ public class CollaborateWithUs extends MVCPortlet { + private static Log _log = LogFactoryUtil.getLog(CollaborateWithUs.class); + private static String SHARE_IDEA_ROLE_MANAGER_NAME = "UserIdea-Admin"; + + private LiferayRoleManager roleManager = new LiferayRoleManager(); + private LiferayUserManager userManager = new LiferayUserManager(); public void addIdea(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException, PortletException { try{ + User currentUser = (User) actionRequest.getAttribute(WebKeys.USER); + ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); + long groupId = themeDisplay.getLayout().getGroupId(); String experiment_name = ParamUtil.getString(actionRequest, "experiment_name"); - System.out.println("ex: " + experiment_name); + String people_institutions = ParamUtil.getString(actionRequest, "people_institutions"); + String theAbstract = ParamUtil.getString(actionRequest, "abstract"); + String experiment_tags = ParamUtil.getString(actionRequest, "experiment_tags"); + + _log.debug("new experiment shared: " + experiment_name); SessionMessages.add(actionRequest.getPortletSession(), "experiment-form-success"); - actionResponse.setRenderParameter("mvcPath", "/html/collaboratewithus/view-experiment-inserted.jsp"); - - - - }catch(Exception e){ + + + long teamId = roleManager.getTeam(groupId, SHARE_IDEA_ROLE_MANAGER_NAME).getTeamId(); + List theManagers = userManager.listUsersByTeam(teamId); + HttpServletRequest request = PortalUtil.getHttpServletRequest(actionRequest); + boolean result = sendNotificationToUser(request, groupId, currentUser, theManagers, experiment_name, people_institutions, theAbstract, experiment_tags); + if (result) + actionResponse.setRenderParameter("mvcPath", "/html/collaboratewithus/view-experiment-inserted.jsp"); + else + actionResponse.setRenderParameter("mvcPath", "/html/collaboratewithus/view-experiment-error.jsp"); + } catch(Exception e){ SessionErrors.add(actionRequest.getPortletSession(),"experiment-form-error"); e.printStackTrace(); } } + + private boolean sendNotificationToUser(HttpServletRequest request, long groupId, User currentUser, List theManagers + , String experiment_name, String people_institutions, String theAbstract, String experiment_tags) throws Exception { + String scope = PortalContext.getConfiguration().getCurrentScope(""+groupId); + _log.info("sendNotificationToUser Scope: " + scope); + + String authorizationToken = PortalContext.getConfiguration().getCurrentUserToken(scope, currentUser.getScreenName()); + ScopeProvider.instance.set(scope); + SecurityTokenProvider.instance.set(authorizationToken); + Workspace workspace = HomeLibrary.getUserWorkspace(currentUser.getScreenName()); + + List recipientIds = new ArrayList(); + List recipients = new ArrayList(); + for (GCubeUser addressee : theManagers) { + recipients.add(new GenericItemBean(addressee.getUsername(), addressee.getUsername(), addressee.getFullname(), "")); + recipientIds.add(addressee.getUsername()); + } + + String subject = "A new user shared an idea"; + StringBuilder sb = new StringBuilder("Hi, the following idea was shared by ").append(currentUser.getFullName()) + .append(" (").append(currentUser.getEmailAddress()).append(").") + .append("\n\n").append("Experiment name: ").append(experiment_name).append("\n") + .append("\n").append("Involved people and or institutions: ").append(people_institutions).append("\n") + .append("\n").append("Abstract:\n").append(theAbstract).append("\n") + .append("\n").append("Keywords (Comma separated): ").append(experiment_tags).append("\n"); + + String body = sb.toString(); + String messageId = workspace.getWorkspaceMessageManager().sendMessageToPortalLogins(subject, body, new ArrayList(), recipientIds); + + _log.debug("Sending message notification to: " + recipientIds.toString()); + NotificationsManager nm = new ApplicationNotificationsManager(new SocialNetworkingSite(request), scope, new SocialNetworkingUser( + currentUser.getScreenName(), currentUser.getEmailAddress(), currentUser.getFullName(), "")); + Thread thread = new Thread(new MessageNotificationsThread(recipients, messageId, subject, body, nm)); + thread.start(); + + return (messageId != null); + } } diff --git a/src/main/webapp/html/collaboratewithus/view-experiment-error.jsp b/src/main/webapp/html/collaboratewithus/view-experiment-error.jsp new file mode 100644 index 0000000..fb11007 --- /dev/null +++ b/src/main/webapp/html/collaboratewithus/view-experiment-error.jsp @@ -0,0 +1,29 @@ +<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> +<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui"%> +<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui"%> +<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme"%> +<%@page import="com.liferay.portal.kernel.portlet.LiferayWindowState"%> +<%@page import="com.liferay.portal.kernel.servlet.SessionErrors"%> +<%@page import="com.liferay.portal.kernel.servlet.SessionMessages"%> +<%@page import="com.liferay.portal.model.User"%> +<%@page import="com.liferay.portal.kernel.util.WebKeys"%> + + + +<% +User currentUser = (User) request.getAttribute(WebKeys.USER); +%> + + + +

+ Thank you + <%=currentUser.getFirstName()%>. There was an error submitting your request. Please report this issue. +

+ + + Close and return to home +
<%@page import="com.liferay.portal.kernel.servlet.SessionErrors"%> <%@page import="com.liferay.portal.kernel.servlet.SessionMessages"%> -<%@page import="com.liferay.portal.model.User" %> -<%@page import="com.liferay.portal.kernel.util.WebKeys" %> +<%@page import="com.liferay.portal.model.User"%> +<%@page import="com.liferay.portal.kernel.util.WebKeys"%> <% User currentUser = (User) request.getAttribute(WebKeys.USER); -%> +%> -

Thank you <%=currentUser.getFirstName()%>

+

+ Thank you + <%=currentUser.getFirstName()%>. We have been notified about your + request, will get back to you shortly. +

-  Back home -
 Close and return to home +
<% if(SessionErrors.contains(renderRequest.getPortletSession(),"experiment-form-error")){%> - + <%} %>