From 30e57e7efb00f57f6d387e899fcefddbfa8a6635 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Wed, 7 Feb 2018 14:36:37 +0000 Subject: [PATCH] ready to test git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portal/sbd-uploadshare-portlet@163012 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../user/sbdportlets/UploadDataset.java | 110 ++++++++++++++++++ .../html/uploaddataset/view-method-error.jsp | 29 +++++ .../uploaddataset/view-method-inserted.jsp | 30 +++++ src/main/webapp/html/uploaddataset/view.jsp | 47 ++++---- src/main/webapp/js/main.js | 31 ++--- 5 files changed, 212 insertions(+), 35 deletions(-) create mode 100644 src/main/webapp/html/uploaddataset/view-method-error.jsp create mode 100644 src/main/webapp/html/uploaddataset/view-method-inserted.jsp diff --git a/src/main/java/org/gcube/portlets/user/sbdportlets/UploadDataset.java b/src/main/java/org/gcube/portlets/user/sbdportlets/UploadDataset.java index 6b81268..725a54d 100644 --- a/src/main/java/org/gcube/portlets/user/sbdportlets/UploadDataset.java +++ b/src/main/java/org/gcube/portlets/user/sbdportlets/UploadDataset.java @@ -1,5 +1,39 @@ package org.gcube.portlets.user.sbdportlets; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +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; /** @@ -8,6 +42,82 @@ import com.liferay.util.bridges.mvc.MVCPortlet; * Portlet implementation class UploadDataset */ public class UploadDataset extends MVCPortlet { + private static Log _log = LogFactoryUtil.getLog(UploadDataset.class); + private static String UPLOAD_DATASET_ROLE_MANAGER_NAME = "UserUpload-Admin"; + private LiferayRoleManager roleManager = new LiferayRoleManager(); + private LiferayUserManager userManager = new LiferayUserManager(); + + public void addExperiment(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 method_name = ParamUtil.getString(actionRequest, "method_name"); + String people_institutions = ParamUtil.getString(actionRequest, "people_institutions"); + String demo_tutorial = ParamUtil.getString(actionRequest, "demo_tutorial"); + String experiment_tags = ParamUtil.getString(actionRequest, "experiment_tags"); + String[] attachmentIds = ParamUtil.getParameterValues(actionRequest, "selected-attachment"); + for (int i = 0; i < attachmentIds.length; i++) { + System.out.println(i+"id="+attachmentIds[i]); + } + + _log.debug("new dataset_name : " + method_name); + SessionMessages.add(actionRequest.getPortletSession(), "method-form-success"); + + + long teamId = roleManager.getTeam(groupId, UPLOAD_DATASET_ROLE_MANAGER_NAME).getTeamId(); + List theManagers = userManager.listUsersByTeam(teamId); + HttpServletRequest request = PortalUtil.getHttpServletRequest(actionRequest); + boolean result = sendNotificationToUser( + request, groupId, currentUser, theManagers, method_name, people_institutions, demo_tutorial, attachmentIds, experiment_tags); + if (result) + actionResponse.setRenderParameter("mvcPath", "/html/collaboratewithus/view-method-inserted.jsp"); + else + actionResponse.setRenderParameter("mvcPath", "/html/collaboratewithus/view-method-error.jsp"); + }catch(Exception e){ + SessionErrors.add(actionRequest.getPortletSession(),"view-method-error"); + e.printStackTrace(); + } + } + private boolean sendNotificationToUser(HttpServletRequest request, long groupId, User currentUser, List theManagers + , String method_name, String people_institutions, String demo_tutorial, String[] attachmentIds, 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 uploaded a method or dataset"; + StringBuilder sb = new StringBuilder("Hi, the following dataset/method was shared by ").append(currentUser.getFullName()) + .append(" (").append(currentUser.getEmailAddress()).append(").") + .append("\n\n").append("Dataset/Method name: ").append(method_name).append("\n") + .append("\n").append("Involved people and or institutions: ").append(people_institutions).append("\n") + .append("\n").append("Demo/Tutorial:\n").append(demo_tutorial).append("\n") + .append("\n").append("Keywords (Comma separated): ").append(experiment_tags).append("\n"); + + List attachmentsList = Arrays.asList(attachmentIds); + String body = sb.toString(); + String messageId = + workspace.getWorkspaceMessageManager(). + sendMessageToPortalLogins(subject, body, attachmentsList, recipientIds); + + _log.info("Sending upload method 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/uploaddataset/view-method-error.jsp b/src/main/webapp/html/uploaddataset/view-method-error.jsp new file mode 100644 index 0000000..fb11007 --- /dev/null +++ b/src/main/webapp/html/uploaddataset/view-method-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 +
+<%@ 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()%>. We have been notified about your + request, will get back to you shortly. +

+ + + Close and return to home +
<%@page import="com.liferay.portal.kernel.portlet.LiferayWindowState"%> <%@page import="com.liferay.portal.kernel.servlet.SessionErrors"%> -<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %> +<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet"%> -<% String wpExplorerId = "workspaceexplorerportlet_WAR_workspaceexplorerportlet"; %> +<% + String wpExplorerId = "workspaceexplorerportlet_WAR_workspaceexplorerportlet"; +%> -<% if(SessionErrors.contains(renderRequest.getPortletSession(),"dataset-form-error")){%> - -<%} %> +<% + if (SessionErrors.contains(renderRequest.getPortletSession(), "dataset-form-error")) { +%> + +<% + } +%> - + + windowState="<%=LiferayWindowState.POP_UP.toString()%>"> -
-Open Workspace -
@@ -51,20 +52,24 @@ Liferay.on('getUserData',function(event) { class="icon icon-angle-left"> Back (Cancel)
- - + - - + + Select file to attach +
- Cancel + + Cancel
diff --git a/src/main/webapp/js/main.js b/src/main/webapp/js/main.js index 7c73b07..234340a 100644 --- a/src/main/webapp/js/main.js +++ b/src/main/webapp/js/main.js @@ -7,25 +7,28 @@ function showWPPopup(url) { { dialog: { cache: false, - width:600, - height: 450, + width:700, + height: 550, modal: true }, - id: 'testPopupIdUnique', + id: 'testPopupIdUnique', + title: 'Select the dataset', uri: url } ); } -function closeWPPopup() { - var dialog = Liferay.Util.getWindow('testPopupIdUnique'); - dialog.destroy(); // You can try toggle/hide whatever You want -} -function fireEvent(eventName, eventValue) { - Liferay.Util.getOpener().Liferay.fire('getUserData',{ - name: eventValue - }); - console.log('fireEvent:done'); - closeWPPopup(); -} +//handle the event from ws explorer +Liferay.on('getSelectedItem', function(event) { + var id = event.id; + var name = event.name; + var chip = $(''+ + event.name + ' '+ + ''); + $("#attachedFiles").append(chip); +}); + +function removeFromParent(el) { + $(el).parent().remove(); +} \ No newline at end of file