diff --git a/src/main/java/org/gcube/portlets/user/joinvre/client/JoinVRE.java b/src/main/java/org/gcube/portlets/user/joinvre/client/JoinVRE.java
index a249160..2e21f25 100644
--- a/src/main/java/org/gcube/portlets/user/joinvre/client/JoinVRE.java
+++ b/src/main/java/org/gcube/portlets/user/joinvre/client/JoinVRE.java
@@ -4,7 +4,6 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import org.gcube.portlets.user.joinvre.client.responsive.ResponsivePanel;
-import org.gcube.portlets.user.joinvre.shared.UserBelonging;
import org.gcube.portlets.user.joinvre.shared.VRE;
import com.google.gwt.core.client.EntryPoint;
@@ -67,7 +66,6 @@ public class JoinVRE implements EntryPoint {
case PENDING:
logger.log(Level.INFO, "User is Pending");
rp = displayVREs();
- rp.displayPending();
break;
default: //Not belonging
logger.log(Level.INFO, "User is NOT Belonging");
diff --git a/src/main/java/org/gcube/portlets/user/joinvre/client/responsive/ResponsivePanel.java b/src/main/java/org/gcube/portlets/user/joinvre/client/responsive/ResponsivePanel.java
index 17f5bb2..0bfcf8f 100644
--- a/src/main/java/org/gcube/portlets/user/joinvre/client/responsive/ResponsivePanel.java
+++ b/src/main/java/org/gcube/portlets/user/joinvre/client/responsive/ResponsivePanel.java
@@ -13,7 +13,6 @@ import org.gcube.portlets.user.joinvre.shared.VRECategory;
import com.github.gwtbootstrap.client.ui.PageHeader;
import com.github.gwtbootstrap.client.ui.Thumbnails;
import com.google.gwt.core.client.GWT;
-import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
@@ -73,10 +72,6 @@ public class ResponsivePanel extends Composite {
mainPanel.add(new HTML("
" + message + ". Please
reload this page.
"));
}
- public void displayPending() {
- Window.alert("Pending");
- }
-
public void requestMembership(VRE vre) {
RequestMembershipDialog modal = new RequestMembershipDialog(vre);
modal.show();
diff --git a/src/main/java/org/gcube/portlets/user/joinvre/client/ui/VreThumbnail.java b/src/main/java/org/gcube/portlets/user/joinvre/client/ui/VreThumbnail.java
index b6b61b4..3c699a5 100644
--- a/src/main/java/org/gcube/portlets/user/joinvre/client/ui/VreThumbnail.java
+++ b/src/main/java/org/gcube/portlets/user/joinvre/client/ui/VreThumbnail.java
@@ -3,6 +3,7 @@ package org.gcube.portlets.user.joinvre.client.ui;
import org.gcube.portlets.user.joinvre.client.JoinService;
import org.gcube.portlets.user.joinvre.client.JoinServiceAsync;
import org.gcube.portlets.user.joinvre.client.JoinVRE;
+import org.gcube.portlets.user.joinvre.shared.UserBelonging;
import org.gcube.portlets.user.joinvre.shared.VRE;
import com.github.gwtbootstrap.client.ui.Button;
@@ -45,9 +46,17 @@ public class VreThumbnail extends Composite {
vreName.setText(name);
if (vre.isUponRequest()) {
joinButton.setType(ButtonType.DEFAULT);
- joinButton.setText("Access");
+ joinButton.setText("Request Access");
+ if (vre.getUserBelonging() == UserBelonging.PENDING) {
+ joinButton.setText("Waiting approval");
+ joinButton.setType(ButtonType.WARNING);
+ joinButton.setEnabled(false);
+ }
+ if (vre.getUserBelonging() == UserBelonging.BELONGING) {
+ joinButton.setType(ButtonType.SUCCESS);
+ joinButton.setText("Access Granted");
+ }
} else {
- joinButton.setType(ButtonType.PRIMARY);
joinButton.setText("Enter this VRE");
}
vreImage.setUrl(vre.getImageURL());
@@ -55,27 +64,29 @@ public class VreThumbnail extends Composite {
@UiHandler("joinButton")
void handleClick(ClickEvent e) {
- if (myVre.isExternal()) {
- RedirectPanel modal = new RedirectPanel(myVre);
- modal.show();
- }
- else {
- joinService.joinVRE(myVre.getId(), new AsyncCallback() {
- @Override
- public void onFailure(Throwable caught) {
- String errorDescription = "Error while trying to join to"
- + myVre.getName() + " VRE. Please Try again later. "
- + "If the problem persist please contact us at www.gcube-system.org";
- Window.alert(errorDescription);
- }
+ if (myVre.getUserBelonging() != UserBelonging.PENDING) {
+ if (myVre.isExternal()) {
+ RedirectPanel modal = new RedirectPanel(myVre);
+ modal.show();
+ }
+ else {
+ joinService.joinVRE(myVre.getId(), new AsyncCallback() {
+ @Override
+ public void onFailure(Throwable caught) {
+ String errorDescription = "Error while trying to join to"
+ + myVre.getName() + " VRE. Please Try again later. "
+ + "If the problem persist please contact us at www.gcube-system.org";
+ Window.alert(errorDescription);
+ }
- @Override
- public void onSuccess(String currentGroupName) {
- Location.assign("/group/" +currentGroupName +"/explore?"+JoinVRE.GET_OID_PARAMETER+"="+myVre.getId());
- //RequestMembershipDialog modal = new RequestMembershipDialog(currentGroupName);
- //modal.show();
- }
- });
+ @Override
+ public void onSuccess(String currentGroupName) {
+ Location.assign("/group/" +currentGroupName +"/explore?"+JoinVRE.GET_OID_PARAMETER+"="+myVre.getId());
+ //RequestMembershipDialog modal = new RequestMembershipDialog(currentGroupName);
+ //modal.show();
+ }
+ });
+ }
}
}
diff --git a/src/main/java/org/gcube/portlets/user/joinvre/server/JoinServiceImpl.java b/src/main/java/org/gcube/portlets/user/joinvre/server/JoinServiceImpl.java
index a6bd0a7..ba7ceb7 100644
--- a/src/main/java/org/gcube/portlets/user/joinvre/server/JoinServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/joinvre/server/JoinServiceImpl.java
@@ -10,7 +10,6 @@ import org.gcube.application.framework.core.session.SessionManager;
import org.gcube.common.portal.CustomAttributeKeys;
import org.gcube.common.portal.GCubePortalConstants;
import org.gcube.common.portal.PortalContext;
-import org.gcube.portal.custom.communitymanager.impl.GCubeSiteManagerImpl;
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
import org.gcube.portlets.user.joinvre.client.JoinService;
import org.gcube.portlets.user.joinvre.shared.UserBelonging;
@@ -48,6 +47,7 @@ import com.liferay.portal.util.PortalUtil;
@SuppressWarnings("serial")
public class JoinServiceImpl extends RemoteServiceServlet implements JoinService {
private static Log _log = LogFactoryUtil.getLog(JoinServiceImpl.class);
+ private static final String TEST_USER = "test.user";
/**
* the current ASLSession
* @return the session
@@ -68,7 +68,7 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
* @return .
*/
public String getDevelopmentUser() {
- String user = "test.user";
+ String user = TEST_USER;
return user;
}
@@ -148,6 +148,7 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
try {
GroupManager gm = new LiferayGroupManager();
toReturn.setUponRequest(group.isRequestBasedGroup());
+ System.out.println(group.getGroupName() + " getVRECustomAttr group.isRequestBasedGroup?" + group.isRequestBasedGroup());
Boolean attributeValue = (Boolean) gm.readCustomAttr(group.getGroupId(), CustomAttributeKeys.IS_EXTERNAL.getKeyName());
toReturn.setExternal(attributeValue);
if (attributeValue) { //we read the custom attr URL if and only if the VRE is External, in the other case is useless
@@ -169,6 +170,8 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
* @throws PortalException
*/
public LinkedHashMap> getPortalSitesMappedToVRE() throws Exception {
+
+ ASLSession session = getASLSession();
GroupManager gm = new LiferayGroupManager();
LinkedHashMap> toReturn = new LinkedHashMap>();
//before iterating the actual groups create the virtualGroups in the correct order
@@ -217,7 +220,18 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
}
if (toLookFor != null) {
ArrayList toUpdate = toReturn.get(toLookFor);
- toUpdate.add(new VRE(vreID,vreName, vreDescription, vreLogoURL, groupName, friendlyURL, UserBelonging.NOT_BELONGING, requireAccessGrant, isExternal, urlIfAny));
+ UserBelonging belongs = UserBelonging.NOT_BELONGING;
+ VRE toAdd = new VRE(vreID,vreName, vreDescription, vreLogoURL, groupName, friendlyURL, belongs, requireAccessGrant, isExternal, urlIfAny);
+ if (session.getUsername().compareTo(TEST_USER) != 0) {
+ GCubeUser currUser = new LiferayUserManager().getUserByUsername(session.getUsername());
+ //check if the user belongs to it
+ if (gm.listGroupsByUser(currUser.getUserId()).contains(vreOrganization)) {
+ toAdd.setUserBelonging(UserBelonging.BELONGING);
+ }
+ else if (checkPending(currUser.getUsername(), vreOrganization.getGroupId()))
+ toAdd.setUserBelonging(UserBelonging.PENDING);
+ }
+ toUpdate.add(toAdd);
}
}
}
@@ -312,7 +326,7 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
boolean requireAccessGrant = attrs.isUponRequest();
boolean isExternal = attrs.isExternal();
String urlIfAny = attrs.getUrlIfAny();
-
+
GCubeUser currUser = um.getUserByUsername(session.getUsername());
//check if the user belongs to it
UserBelonging belongEnum = UserBelonging.NOT_BELONGING;
@@ -338,10 +352,10 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
*/
private static boolean checkPending(String screenName, long groupId) throws UserManagementSystemException, GroupRetrievalFault, UserRetrievalFault {
UserManager um = new LiferayUserManager();
- List requests = um.listMembershipRequestsByGroup(groupId);
- for (GCubeMembershipRequest r : requests) {
- if ( r.getStatus() == MembershipRequestStatus.REQUEST && (r.getRequestingUser().getUsername().compareTo(screenName)==0))
- return true;
+ List requests = um.listMembershipRequestsByGroup(groupId);
+ for (GCubeMembershipRequest r : requests) {
+ if ( r.getStatus() == MembershipRequestStatus.REQUEST && (r.getRequestingUser().getUsername().compareTo(screenName)==0))
+ return true;
}
return false;
}
diff --git a/src/main/webapp/WEB-INF/portlet.xml b/src/main/webapp/WEB-INF/portlet.xml
index bdcd055..304162f 100644
--- a/src/main/webapp/WEB-INF/portlet.xml
+++ b/src/main/webapp/WEB-INF/portlet.xml
@@ -13,7 +13,7 @@
text/html
- Join VRE
+ Explore Virtual Research Environments
JoinVRE Portlet
JoinVRE Portlet