Added support for Terms of Use Display

git-svn-id: https://svn.research-infrastructures.eu/d4science/gcube/trunk/portlets/user/join-vre@150820 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Massimiliano Assante 2017-07-05 16:27:46 +00:00
parent 1ae3bf20cf
commit 3101ad62ab
7 changed files with 73 additions and 14 deletions

View File

@ -1,4 +1,8 @@
<ReleaseNotes>
<Changeset component="org.gcube.portlets-user.join-vre.3.4.0" date="2017-07-05">
<Change>Ported to GWT 2.8.1</Change>
<Change>Added support for Terms of Use Display</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.join-vre.3.3.0" date="2017-05-15">
<Change>Ported to Java8</Change>
<Change>Added support for template emails</Change>

View File

@ -23,7 +23,7 @@ public interface JoinService extends RemoteService {
VRE getSelectedVRE(Long vreId);
void addMembershipRequest(String scope, String optionalMessage);
void addMembershipRequest(VRE theVRE, String optionalMessage);
boolean registerUser(String scope, long vreId, boolean isInvitation);

View File

@ -20,7 +20,7 @@ public interface JoinServiceAsync {
void getSelectedVRE(Long vreId, AsyncCallback<VRE> callback);
void addMembershipRequest(String scope, String optionalMessage,
void addMembershipRequest(VRE theVRE, String optionalMessage,
AsyncCallback<Void> callback);
void registerUser(String scope, long vreId, boolean isInvitation,

View File

@ -7,18 +7,26 @@ import org.gcube.portlets.user.joinvre.shared.VRE;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.HelpBlock;
import com.github.gwtbootstrap.client.ui.Icon;
import com.github.gwtbootstrap.client.ui.Modal;
import com.github.gwtbootstrap.client.ui.TextArea;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window.Location;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Widget;
public class RequestMembershipDialog extends Composite {
private static final String OPTIONAL_COMMENT_TEXT = "You can add an optional comment here, it will be attached to your request and read by this VRE Moderators.";
private final JoinServiceAsync joinService = GWT.create(JoinService.class);
private static RequestAccessModalUiBinder uiBinder = GWT
@ -32,19 +40,57 @@ public class RequestMembershipDialog extends Composite {
@UiField Button confirmRequest;
@UiField TextArea optionalText;
@UiField HelpBlock helpBlock;
@UiField Icon loading;
private VRE myVRE = null;
private ResponsivePanel responsivePanel;
@UiField HelpBlock touGatewayBlock;
@UiField HTML touText;
public RequestMembershipDialog(ResponsivePanel responsivePanel, VRE myVRE) {
initWidget(uiBinder.createAndBindUi(this));
this.myVRE = myVRE;
this.responsivePanel = responsivePanel;
optionalText.setWidth("95%");
optionalText.setPlaceholder("You can add an optional comment here");
optionalText.setPlaceholder(OPTIONAL_COMMENT_TEXT);
}
public void show() {
m.setTitle("Join request for " +myVRE.getName());
loading.setVisible(true);
joinService.getTermsOfUse(this.myVRE.getId(), new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
m.setTitle("Ops, an error occurred please check your connection and try again");
confirmRequest.setText("Try again");
confirmRequest.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Location.reload();
}
});
loading.setVisible(false);
touGatewayBlock.setVisible(true);
m.show();
}
@Override
public void onSuccess(String result) {
loading.setVisible(false);
if (result != null) { // terms of use exist
String text = "By using <b>" + myVRE.getName() + "</b> VRE services, you agree to the Terms of Use below. Please read it carefully.";
helpBlock.setHTML(text);
String buttonText = "Accept Terms of Use & Request Access";
confirmRequest.setText(buttonText);
m.addStyleName("modal-custom");
((Element)m.getElement().getChildNodes().getItem(1)).addClassName("modal-body-custom");
touText.setHTML(result);
}
m.show();
}
});
m.show();
}
@ -56,7 +102,7 @@ public class RequestMembershipDialog extends Composite {
void confirm(ClickEvent e) {
String text = optionalText.getText();
confirmRequest.setEnabled(false);
joinService.addMembershipRequest(myVRE.getinfraScope(), text, new AsyncCallback<Void>() {
joinService.addMembershipRequest(myVRE, text, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
confirmRequest.removeFromParent();
@ -65,6 +111,7 @@ public class RequestMembershipDialog extends Composite {
helpBlock.setText("You will receive an email as soon as your request will be processed.");
responsivePanel.setPending(myVRE);
confirmRequest.setEnabled(false);
touText.removeFromParent();
}
@Override
public void onFailure(Throwable caught) {
@ -72,6 +119,7 @@ public class RequestMembershipDialog extends Composite {
optionalText.removeFromParent();
m.setTitle("An error occurred! Your request has not been sent");
helpBlock.setText("An email with the cause of the error has been sent to the support team, we'll be back to you shortly.");
touText.removeFromParent();
}
});
}

View File

@ -4,11 +4,19 @@
<g:HTMLPanel>
<b:Modal ui:field="m" title="My Modal" backdrop="STATIC"
keyboard="true" animation="true">
<b:Icon type="COG" size="FOUR_TIMES" spin="true" ui:field="loading"
visible="false" />
<b:ControlGroup>
<b:Controls>
<b:HelpBlock ui:field="helpBlock">Please confirm your request</b:HelpBlock>
<b:TextArea ui:field="optionalText" alternateSize="XLARGE"/>
<b:TextArea ui:field="optionalText" alternateSize="XLARGE" />
<b:HelpBlock ui:field="helpBlock">Your request will be reviewed by this VRE moderators, you will be notified via email about the result as soon as possible (tipically within a few hours).</b:HelpBlock>
<b:HelpBlock ui:field="touGatewayBlock" visible="false">
By asking access to this VRE you agree to the terms indicated in
the
<a href="/terms-of-use" target="_blank">Terms of Use</a>
of this gateway.
</b:HelpBlock>
<g:HTML ui:field="touText"></g:HTML>
</b:Controls>
</b:ControlGroup>
<b:ModalFooter>

View File

@ -44,7 +44,6 @@ import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.VirtualHost;
import com.liferay.portal.service.GroupLocalServiceUtil;
@ -355,16 +354,16 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
}
@Override
public void addMembershipRequest(String scope, String optionalMessage) {
public void addMembershipRequest(VRE theVRE, String optionalMessage) {
String scope = theVRE.getinfraScope();
String username = PortalContext.getConfiguration().getCurrentUser(getThreadLocalRequest()).getUsername();
if (optionalMessage == null || optionalMessage.compareTo("") == 0)
optionalMessage = "none";
try {
CacheRegistryUtil.clear();
GroupManager gm = new LiferayGroupManager();
long groupId = gm.getGroupIdFromInfrastructureScope(scope);
CacheRegistryUtil.clear();
long groupId = theVRE.getId();
_log.debug("Look if a request exists already");
List<GCubeGroup> userGroups = gm.listGroupsByUser(new LiferayUserManager().getUserId(username));
List<GCubeGroup> userGroups = new LiferayGroupManager().listGroupsByUser(new LiferayUserManager().getUserId(username));
for (GCubeGroup g : userGroups) {
if (g.getGroupId() == groupId) {
_log.warn("User already belongs to " + scope + " SKIP addMembershipRequest");

View File

@ -6,7 +6,7 @@
<inherits name='com.google.gwt.activity.Activity' />
<inherits name="com.github.gwtbootstrap.Bootstrap" />
<inherits name='org.gcube.portal.databook.GCubeSocialNetworking' />
<!-- <set-property name="user.agent" value="gecko1_8" /> -->
<set-property name="user.agent" value="gecko1_8" />
<!-- Specify the app entry point class. -->
<entry-point class='org.gcube.portlets.user.joinvre.client.JoinVRE' />