My Organizations page created
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/gcube-ckan-datacatalog@129654 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
f5fe2d0b1f
commit
b00f2993c4
|
@ -131,8 +131,9 @@ public class CkanEventHandlerManager {
|
|||
@Override
|
||||
public void onShowOrganizations(
|
||||
ShowUserOrganizationsEvent showUserDatasetsEvent) {
|
||||
String request = getCkanRequest("/dashboard/organizations", null);
|
||||
panel.instanceCkanFrame(request);
|
||||
|
||||
panel.showOrganizations();
|
||||
|
||||
}
|
||||
});
|
||||
eventBus.addHandler(
|
||||
|
@ -213,9 +214,6 @@ public class CkanEventHandlerManager {
|
|||
return ckan.buildURI();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private static native void logutWindow(String uri, boolean timeout)/*-{
|
||||
var newWindow = window.open(uri, '_blank', 'width=50,height=50');
|
||||
newWindow.onload = function() {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
|
||||
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanRole;
|
||||
|
||||
|
@ -22,6 +24,12 @@ public interface GcubeCkanDataCatalogService extends RemoteService {
|
|||
CkanRole getMyRole() throws Exception;
|
||||
|
||||
String getUser();
|
||||
|
||||
/**
|
||||
* Retrieve the list of organizations to whom the user belongs and their urls
|
||||
* @return
|
||||
*/
|
||||
Map<String, String> getCkanOrganizationsNamesAndUrlsForUser();
|
||||
|
||||
void logoutFromCkan();
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
*/
|
||||
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
|
||||
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanRole;
|
||||
|
||||
|
@ -36,4 +38,8 @@ public interface GcubeCkanDataCatalogServiceAsync {
|
|||
|
||||
void logoutURIFromCkan(AsyncCallback<String> callback);
|
||||
|
||||
|
||||
void getCkanOrganizationsNamesAndUrlsForUser(
|
||||
AsyncCallback<Map<String, String>> callback);
|
||||
|
||||
}
|
||||
|
|
|
@ -82,6 +82,7 @@ public class CkanFramePanel extends FlowPanel{
|
|||
}
|
||||
});
|
||||
add(frame);
|
||||
frame.setVisible(true);
|
||||
eventBus.fireEvent(new IFrameInstanciedEvent());
|
||||
return frame;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Button;
|
||||
import com.github.gwtbootstrap.client.ui.Paragraph;
|
||||
import com.github.gwtbootstrap.client.ui.base.ListItem;
|
||||
import com.github.gwtbootstrap.client.ui.base.UnorderedList;
|
||||
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
|
||||
/**
|
||||
* The ckan panel that shows the user organizations
|
||||
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
|
||||
*/
|
||||
public class CkanOrganizationsPanel extends VerticalPanel{
|
||||
|
||||
private Map<String, String> organizations;
|
||||
private GCubeCkanDataCatalogPanel father;
|
||||
|
||||
public CkanOrganizationsPanel(
|
||||
GCubeCkanDataCatalogPanel gCubeCkanDataCatalogPanel) {
|
||||
father = gCubeCkanDataCatalogPanel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the organizations to show
|
||||
* @param result
|
||||
*/
|
||||
public void setOrganizations(Map<String, String> result) {
|
||||
|
||||
HorizontalPanel hPanel = new HorizontalPanel();
|
||||
hPanel.setStyleName("horizontal-panel-organizations");
|
||||
VerticalPanel vPanel = new VerticalPanel();
|
||||
|
||||
hPanel.add(vPanel);
|
||||
add(hPanel);
|
||||
|
||||
this.organizations = result;
|
||||
|
||||
//generate the list of organizations
|
||||
if(result == null || result.isEmpty()){
|
||||
|
||||
Paragraph p = new Paragraph("You are not a member of any organizations.");
|
||||
p.setStyleName("no-organizations-found-paragraph");
|
||||
p.getElement().getStyle().setColor("#aaaaaa");
|
||||
vPanel.add(p);
|
||||
|
||||
}else{
|
||||
|
||||
UnorderedList list = new UnorderedList();
|
||||
Iterator<Entry<String, String>> iterator = organizations.entrySet().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
final Map.Entry<String, String> entry = (Map.Entry<String, String>) iterator
|
||||
.next();
|
||||
|
||||
Button b = new Button();
|
||||
b.setType(ButtonType.LINK);
|
||||
b.setText(entry.getKey());
|
||||
b.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
|
||||
String request = getCkanRequest(entry.getValue(), null);
|
||||
father.instanceCkanFrame(request);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
ListItem item = new ListItem(b);
|
||||
list.add(item);
|
||||
}
|
||||
|
||||
list.addStyleName("list-panel-organizations-style");
|
||||
vPanel.add(list);
|
||||
}
|
||||
setWidth("100%");
|
||||
setStyleName("my-organizations-container-style");
|
||||
}
|
||||
|
||||
/**
|
||||
* Request the correct url to the ckan connector
|
||||
* @param pathInfo
|
||||
* @param query
|
||||
* @return
|
||||
*/
|
||||
private String getCkanRequest(String pathInfo, String query){
|
||||
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(father.getBaseURLCKANConnector());
|
||||
ckan.addGubeToken(father.getGcubeTokenValueToCKANConnector());
|
||||
pathInfo = CkanConnectorAccessPoint.checkNullString(pathInfo);
|
||||
query = CkanConnectorAccessPoint.checkNullString(query);
|
||||
ckan.addPathInfo(pathInfo);
|
||||
ckan.addQueryString(query);
|
||||
return ckan.buildURI();
|
||||
}
|
||||
|
||||
}
|
|
@ -3,6 +3,8 @@
|
|||
*/
|
||||
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.GCubeCkanDataCatalog;
|
||||
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.resource.CkanPortletResources;
|
||||
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
|
||||
|
@ -18,6 +20,7 @@ import com.google.gwt.user.client.ui.Frame;
|
|||
import com.google.gwt.user.client.ui.Image;
|
||||
import com.google.gwt.user.client.ui.RootPanel;
|
||||
import com.google.gwt.user.client.ui.ScrollPanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -28,15 +31,15 @@ import com.google.gwt.user.client.ui.ScrollPanel;
|
|||
*/
|
||||
public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
|
||||
|
||||
|
||||
private CkanMetadataManagementPanel managementPanel;
|
||||
private ScrollPanel centerScrollable = new ScrollPanel();
|
||||
private CkanFramePanel ckanFramePanel;
|
||||
private CkanOrganizationsPanel ckanOrganizationsPanel;
|
||||
private Image loading = new Image(CkanPortletResources.ICONS.loading());
|
||||
private RootPanel rootPanel;
|
||||
private HandlerManager eventBus;
|
||||
private CkanConnectorAccessPoint ckanAccessPoint;
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new g cube ckan data catalog panel.
|
||||
*
|
||||
|
@ -48,6 +51,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
|
|||
this.eventBus = eventManager;
|
||||
ckanFramePanel = new CkanFramePanel(eventBus);
|
||||
managementPanel = new CkanMetadataManagementPanel(eventBus);
|
||||
ckanOrganizationsPanel = new CkanOrganizationsPanel(this);
|
||||
initPanel();
|
||||
String pathParameter = Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER);
|
||||
String queryParameter = Window.Location.getParameter(GCubeCkanDataCatalog.GET_QUERY_PARAMETER);
|
||||
|
@ -67,6 +71,21 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
|
|||
Window.alert("Sorry, An error occurred during contacting Gcube Ckan Data Catalogue!");
|
||||
}
|
||||
});
|
||||
|
||||
// RETRIEVE USER'S ORGANIZATIONS
|
||||
GCubeCkanDataCatalog.service.getCkanOrganizationsNamesAndUrlsForUser(new AsyncCallback<Map<String,String>>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(Map<String, String> result) {
|
||||
|
||||
if(result != null)
|
||||
ckanOrganizationsPanel.setOrganizations(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//MANAGE CKAN MANAGEMENT PANEL ACCORDING TO MY ROLE
|
||||
|
@ -157,6 +176,8 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
|
|||
*/
|
||||
public Frame instanceCkanFrame(String ckanUrlConnector){
|
||||
|
||||
ckanFramePanel.setVisible(true);
|
||||
ckanOrganizationsPanel.setVisible(false);
|
||||
return ckanFramePanel.instanceFrame(ckanUrlConnector);
|
||||
|
||||
}
|
||||
|
@ -167,7 +188,12 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
|
|||
private void initPanel() {
|
||||
setTopPanelVisible(false);
|
||||
addToTop(managementPanel);
|
||||
centerScrollable.add(ckanFramePanel);
|
||||
VerticalPanel containerIntoScrollPanel = new VerticalPanel();
|
||||
containerIntoScrollPanel.setWidth("100%");
|
||||
containerIntoScrollPanel.add(ckanFramePanel);
|
||||
containerIntoScrollPanel.add(ckanOrganizationsPanel);
|
||||
centerScrollable.add(containerIntoScrollPanel);
|
||||
ckanOrganizationsPanel.setVisible(false);
|
||||
addToMiddle(centerScrollable);
|
||||
}
|
||||
|
||||
|
@ -225,4 +251,13 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
|
|||
return ckanAccessPoint.getPathInfoParameter();
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the organizations panel
|
||||
*/
|
||||
public void showOrganizations() {
|
||||
|
||||
ckanOrganizationsPanel.setVisible(true);
|
||||
ckanFramePanel.setVisible(false);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import java.io.InputStream;
|
|||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
@ -38,6 +39,7 @@ import org.slf4j.LoggerFactory;
|
|||
|
||||
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
||||
|
||||
import eu.trentorise.opendata.jackan.model.CkanOrganization;
|
||||
import eu.trentorise.opendata.traceprov.internal.org.apache.commons.io.IOUtils;
|
||||
/**
|
||||
* The server side implementation of the RPC service.
|
||||
|
@ -465,6 +467,42 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getCkanOrganizationsNamesAndUrlsForUser() {
|
||||
|
||||
HttpSession httpSession = this.getThreadLocalRequest().getSession();
|
||||
ASLSession session = getASLSession(httpSession);
|
||||
String username = session.getUsername();
|
||||
|
||||
Map<String, String> toReturn = new HashMap<>();
|
||||
|
||||
if(!SessionUtil.isIntoPortal()){
|
||||
|
||||
logger.warn("You are not into the portal");
|
||||
// toReturn.put("testVRE", "random");
|
||||
// toReturn.put("testVRE2", "random");
|
||||
// toReturn.put("testVRE3", "random");
|
||||
// toReturn.put("testVRE4", "random");
|
||||
// toReturn.put("testVRE5", "random");
|
||||
|
||||
}
|
||||
|
||||
if(username.equals(TEST_USER))
|
||||
return toReturn;
|
||||
else{
|
||||
|
||||
List<CkanOrganization> organizations = instance.getOrganizationsByUser(username);
|
||||
|
||||
for (CkanOrganization ckanOrganization : organizations) {
|
||||
toReturn.put(ckanOrganization.getTitle(), "/organization/" + ckanOrganization.getName());
|
||||
}
|
||||
|
||||
logger.debug("List of organizations to return for user " + username + " is " + toReturn);
|
||||
}
|
||||
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
/*
|
||||
public static void main(String[] args) {
|
||||
|
||||
|
|
|
@ -49,4 +49,49 @@ h1 {
|
|||
|
||||
.modal {
|
||||
top: 2% !important;
|
||||
}
|
||||
|
||||
/** My Organizations panel **/
|
||||
.my-organizations-container-style {
|
||||
background-repeat: repeat !important;
|
||||
background-attachment: scroll !important;
|
||||
background-position: 0% 0% !important;
|
||||
background-clip: border-box !important;
|
||||
background-origin: padding-box !important;
|
||||
background-size: auto auto !important;
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
background: #eeeeee
|
||||
url("https://ckan-d-d4s.d4science.org/base/images/bg.png") !important;
|
||||
}
|
||||
|
||||
.horizontal-panel-organizations {
|
||||
margin-right: auto !important;
|
||||
margin-left: auto !important;
|
||||
background-color: white !important;
|
||||
width: 70% !important;
|
||||
margin-top: 2% !important;
|
||||
margin-bottom: 10% ! important;
|
||||
zoom: 1 !important;
|
||||
background-color: #FFF !important;
|
||||
border: 1px solid #cccccc !important;
|
||||
-webkit-border-radius: 4px !important;
|
||||
-moz-border-radius: 4px !important;
|
||||
border-radius: 4px !important;
|
||||
-webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05) !important;
|
||||
-moz-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05) !important;
|
||||
box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05) !important;
|
||||
position: relative !important;
|
||||
background-color: #fff !important;
|
||||
padding-left: 5% !important !important;
|
||||
}
|
||||
|
||||
.list-panel-organizations-style {
|
||||
padding: 30px !important;
|
||||
}
|
||||
|
||||
.no-organizations-found-paragraph {
|
||||
padding: 30px !important;
|
||||
color: #aaaaaa !important;
|
||||
font-style: italic !important;
|
||||
}
|
Loading…
Reference in New Issue