diff --git a/.classpath b/.classpath
index 78a5c21..c10004b 100644
--- a/.classpath
+++ b/.classpath
@@ -1,6 +1,6 @@
-
+
@@ -30,5 +30,10 @@
-
+
+
+
+
+
+
diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
index e15f0c9..5a9bae0 100644
--- a/.settings/com.gwtplugins.gdt.eclipse.core.prefs
+++ b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
@@ -1,6 +1,6 @@
>>>>>>>=refs/heads/task_20699
eclipse.preferences.version=1
jarsExcludedFromWebInfLib=
-lastWarOutDir=/home/francescomangiacrapa/git/gcube-ckan-datacatalog/target/gcube-ckan-datacatalog-2.2.6-SNAPSHOT
+lastWarOutDir=/home/francescomangiacrapa/git/gcube-ckan-datacatalog/target/gcube-ckan-datacatalog-2.3.0-SNAPSHOT
warSrcDir=src/main/webapp
warSrcDirIsOutput=false
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 866bd14..dcaa495 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,5 +1,5 @@
-
+
@@ -52,8 +52,50 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -107,7 +149,28 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -161,7 +224,28 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -215,10 +299,34 @@
-
+
+
+
+
uses
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -272,7 +380,28 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -326,7 +455,28 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -380,7 +530,28 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0f9d65a..99ff62b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,14 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [v2.3.0-SNAPSHOT] - 2024-02-02
+
+- Supported the Edit facility [#26639]
+- Supported the Delete facility [#26793]
+- Revisited the Navigation Bar
+- Revisited the "Select Item Resources" step when publishing from Workspace [#26874]
+- Catalogue at root VO or VO level works in read only mode [#26854]
+
## [v2.2.7] - 2023-12-21
- Including "Upload to Zenodo" fix [#26166]
diff --git a/pom.xml b/pom.xml
index 702a8e7..8484027 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
org.gcube.portlets.gcubeckan
gcube-ckan-datacatalog
war
- 2.2.7
+ 2.3.0-SNAPSHOT
gCube CKAN Data Catalog
The gCube CKAN Data Catalog portlet
@@ -27,6 +27,7 @@
UTF-8
1.8
1.8
+ 3.7.0
@@ -35,12 +36,41 @@
https://code-repo.d4science.org/gCubeSystem/${project.artifactId}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
org.gcube.distribution
maven-portal-bom
- 3.6.4
+ ${gcube-portal-bom-version}
pom
import
@@ -55,7 +85,6 @@
-
@@ -125,6 +154,12 @@
[1.0.0,2.0.0-SNAPSHOT)
+
+ org.gcube.portlets.widgets
+ metadata-profile-form-builder-widget
+ [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)
+
+
org.gcube.portlets.widgets
ckan-metadata-publisher-widget
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml
index dde449b..972fef9 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml
@@ -20,6 +20,10 @@
+
+
+
+
+
-
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java
index d3eac8b..104a0fd 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java
@@ -7,6 +7,8 @@ import org.gcube.datacatalogue.grsf_manage_widget.client.view.ManageProductWidge
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ClickedCMSManageProductButtonEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ClickedCMSManageProductButtonEventHandler;
+import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.DeleteItemEvent;
+import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.DeleteItemEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetadataEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetadataEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEvent;
@@ -39,7 +41,11 @@ import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModerat
import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModeratorWidgetTrusted;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants;
import org.gcube.portlets.widgets.ckancontentmoderator.shared.DISPLAY_FIELD;
+import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.ReloadDatasetPageEvent;
+import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.ReloadDatasetPageEventHandler;
+import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.action.DeleteItemPanel;
import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.form.CreateDatasetForm;
+import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.form.UpdateDatasetForm;
import org.gcube.portlets_widgets.catalogue_sharing_widget.client.ShareCatalogueWidget;
import com.github.gwtbootstrap.client.ui.Modal;
@@ -95,6 +101,7 @@ public class CkanEventHandlerManager {
}
});
+
// bind on insert metadata
eventBus.addHandler(InsertMetadataEvent.TYPE, new InsertMetadataEventHandler() {
@@ -117,7 +124,7 @@ public class CkanEventHandlerManager {
// public void onHide(HideEvent hideEvent) {
// GWT.log("HideEvent on modal fired");
// GWT.log(hideEvent.toDebugString());
-// eventBus.fireEvent(new CloseCreationFormEvent());
+// eventBus.fireEvent(new CloseCreationFormProfileEvent());
//
// hideEvent.preventDefault();
// hideEvent.stopPropagation();
@@ -130,15 +137,6 @@ public class CkanEventHandlerManager {
modal.show();
}
});
- // bind on edit (TODO)
- eventBus.addHandler(EditMetadataEvent.TYPE, new EditMetadataEventHandler() {
-
- @Override
- public void onEditMetadata(EditMetadataEvent editMetadataEvent) {
-
- // TODO Auto-generated method stub
- }
- });
// show datasets event
eventBus.addHandler(ShowDatasetsEvent.TYPE, new ShowDatasetsEventHandler() {
@@ -146,14 +144,37 @@ public class CkanEventHandlerManager {
@Override
public void onShowDatasets(ShowDatasetsEvent showUserDatasetsEvent) {
String request = null;
- if (showUserDatasetsEvent.isOwnOnly())
- request = getCkanRequest("/dashboard/datasets", null);
- else
- request = getCkanRequest("/dataset", null);
+
+ if (showUserDatasetsEvent.getDatasetId() == null) {
+ if (showUserDatasetsEvent.isOwnOnly()) {
+ request = getCkanRequest("/dashboard/datasets", null);
+ } else {
+ request = getCkanRequest("/dataset", null);
+ }
+ } else {
+ String datasetId = showUserDatasetsEvent.getDatasetId();
+ request = getCkanRequest("/dataset/" + datasetId, null);
+
+ }
gcubeCkanDataCatalogue.instanceCkanFrame(request);
}
});
+ // ReloadDatasetPageEvent is declared in the Publisher Widget
+ eventBus.addHandler(ReloadDatasetPageEvent.TYPE, new ReloadDatasetPageEventHandler() {
+
+ @Override
+ public void onReloadDatasetPage(ReloadDatasetPageEvent addResourceEvent) {
+
+ if (addResourceEvent.getDatasetIDorName() != null) {
+ eventBus.fireEvent(new ShowDatasetsEvent(false, addResourceEvent.getDatasetIDorName()));
+ } else {
+ eventBus.fireEvent(new ShowDatasetsEvent(false));
+ }
+
+ }
+ });
+
eventBus.addHandler(ShowTypesEvent.TYPE, new ShowTypesEventHandler() {
@Override
@@ -201,29 +222,6 @@ public class CkanEventHandlerManager {
}
});
- // eventBus.addHandler(NotifyLogoutEvent.TYPE, new NotifyLogoutEventHandler() {
- //
- // @Override
- // public void onLogout(NotifyLogoutEvent editMetadataEvent) {
- //
- // // CKanLeaveFrame frame = new
- // CKanLeaveFrame(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
- // // DOM.appendChild(RootPanel.getBodyElement(), frame.getElement());
- // }
- // });
- //
- // eventBus.addHandler(IFrameInstanciedEvent.TYPE, new
- // IFrameInstanciedEventHandler() {
- //
- // @Override
- // public void onNewInstance(IFrameInstanciedEvent iFrameInstanciedEvent) {
- //
- // gcubeCkanDataCatalogue.updateSize();
- // if(logoutFromCKANURL==null)
- // instanceLogoutSystem();
- // }
- // });
-
eventBus.addHandler(ShowManageProductWidgetEvent.TYPE, new ShowManageProductWidgetEventHandler() {
@Override
@@ -305,6 +303,55 @@ public class CkanEventHandlerManager {
}
});
+
+ eventBus.addHandler(EditMetadataEvent.TYPE, new EditMetadataEventHandler() {
+
+ @Override
+ public void onEditMetadata(EditMetadataEvent editMetadataEvent) {
+ GWT.log("editMetadataEvent: " + editMetadataEvent);
+
+ if (editMetadataEvent.getItemID() != null) {
+
+ final Modal modal = new ExtModal(true, true);
+
+ modal.setTitle("Update Item");
+ modal.addStyleName("insert-metadata-modal-style");
+ modal.addStyleName("modal-top-custom");
+ ((Element) modal.getElement().getChildNodes().getItem(1)).addClassName("modal-body-custom");
+ modal.add(new UpdateDatasetForm(eventBus, editMetadataEvent.getItemID()));
+ modal.setCloseVisible(true);
+
+ GWT.log("show");
+ modal.show();
+
+ }
+ }
+ });
+
+ eventBus.addHandler(DeleteItemEvent.TYPE, new DeleteItemEventHandler() {
+
+ @Override
+ public void onDeleteItem(DeleteItemEvent deleteItemEvent) {
+ GWT.log("deleteItemEvent: " + deleteItemEvent);
+
+ if (deleteItemEvent.getItemID() != null) {
+
+ GWT.log("deleteItemEvent: " + deleteItemEvent);
+ final Modal modal = new ExtModal(true, true);
+
+ modal.setTitle("Delete Item");
+ modal.addStyleName("modal-top-custom");
+ ((Element) modal.getElement().getChildNodes().getItem(1)).addClassName("modal-body-custom");
+ modal.add(new DeleteItemPanel(eventBus, deleteItemEvent.getItemID()));
+ modal.setCloseVisible(true);
+
+ GWT.log("show");
+ modal.show();
+
+ }
+
+ }
+ });
}
/**
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/DeleteItemEvent.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/DeleteItemEvent.java
new file mode 100644
index 0000000..eb16b79
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/DeleteItemEvent.java
@@ -0,0 +1,66 @@
+package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event;
+
+import com.google.gwt.event.shared.GwtEvent;
+
+/**
+ * The Class DeleteItemEvent.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
+ *
+ * Feb 19, 2024
+ */
+public class DeleteItemEvent extends GwtEvent {
+ public static Type TYPE = new Type();
+ private String itemID;
+
+ /**
+ * Instantiates a new delete item event.
+ *
+ * @param itemID the item ID
+ */
+ public DeleteItemEvent(String itemID) {
+ this.itemID = itemID;
+ }
+
+ /**
+ * Gets the associated type.
+ *
+ * @return the associated type
+ */
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
+ */
+ @Override
+ public Type getAssociatedType() {
+ return TYPE;
+ }
+
+ /**
+ * Dispatch.
+ *
+ * @param handler the handler
+ */
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.
+ * EventHandler)
+ */
+ @Override
+ protected void dispatch(DeleteItemEventHandler handler) {
+ handler.onDeleteItem(this);
+ }
+
+ /**
+ * Gets the item ID.
+ *
+ * @return the item ID
+ */
+ public String getItemID() {
+ return itemID;
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/DeleteItemEventHandler.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/DeleteItemEventHandler.java
new file mode 100644
index 0000000..2c9bf68
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/DeleteItemEventHandler.java
@@ -0,0 +1,21 @@
+package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event;
+
+import com.google.gwt.event.shared.EventHandler;
+
+/**
+ * The Interface DeleteItemEventHandler.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
+ *
+ * Feb 19, 2024
+ */
+public interface DeleteItemEventHandler extends EventHandler {
+
+ /**
+ * On delete item.
+ *
+ * @param deleteItemEvent the delete item event
+ */
+ void onDeleteItem(DeleteItemEvent deleteItemEvent);
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/EditMetadataEvent.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/EditMetadataEvent.java
index 0ccd44f..98df1a8 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/EditMetadataEvent.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/EditMetadataEvent.java
@@ -11,14 +11,22 @@ import com.google.gwt.event.shared.GwtEvent;
*/
public class EditMetadataEvent extends GwtEvent {
public static Type TYPE = new Type();
-
+ private String itemID;
/**
- * Instantiates a new insert metadata event.
+ * Instantiates a new edits the metadata event.
+ *
+ * @param itemID the item ID
*/
- public EditMetadataEvent() {
+ public EditMetadataEvent(String itemID) {
+ this.itemID = itemID;
}
+ /**
+ * Gets the associated type.
+ *
+ * @return the associated type
+ */
/* (non-Javadoc)
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
*/
@@ -27,6 +35,11 @@ public class EditMetadataEvent extends GwtEvent {
return TYPE;
}
+ /**
+ * Dispatch.
+ *
+ * @param handler the handler
+ */
/* (non-Javadoc)
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
*/
@@ -34,5 +47,9 @@ public class EditMetadataEvent extends GwtEvent {
protected void dispatch(EditMetadataEventHandler handler) {
handler.onEditMetadata(this);
}
+
+ public String getItemID() {
+ return itemID;
+ }
}
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/IFrameInstanciedEvent.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/IFrameInstanciedEvent.java
index 332b54f..fa6e229 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/IFrameInstanciedEvent.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/IFrameInstanciedEvent.java
@@ -2,25 +2,28 @@ package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event;
import com.google.gwt.event.shared.GwtEvent;
-
-
/**
- * The Class NotifyLogoutEvent.
+ * The Class IFrameInstanciedEvent.
*
- * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * Jun 23, 2016
+ * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jun 23, 2016
*/
public class IFrameInstanciedEvent extends GwtEvent {
public static Type TYPE = new Type();
-
/**
* Instantiates a new insert metadata event.
*/
public IFrameInstanciedEvent() {
}
- /* (non-Javadoc)
+ /**
+ * Gets the associated type.
+ *
+ * @return the associated type
+ */
+ /*
+ * (non-Javadoc)
+ *
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
*/
@Override
@@ -28,8 +31,17 @@ public class IFrameInstanciedEvent extends GwtEvent{
-
+public class ShowDatasetsEvent extends GwtEvent {
+
public static Type TYPE = new Type();
-
+
private boolean ownOnly;
-
+
+ private String datasetId;
+
/**
* Instantiates a new show user datasets event.
+ *
+ * @param ownOnly the own only
*/
public ShowDatasetsEvent(boolean ownOnly) {
-
this.ownOnly = ownOnly;
-
}
-
+
+ /**
+ * Instantiates a new show user datasets event.
+ *
+ * @param ownOnly the own only
+ * @param datasetId the dataset id
+ */
+ public ShowDatasetsEvent(boolean ownOnly, String datasetId) {
+ this.ownOnly = ownOnly;
+ this.datasetId = datasetId;
+ }
+
+ /**
+ * Checks if is own only.
+ *
+ * @return true, if is own only
+ */
public boolean isOwnOnly() {
return ownOnly;
}
- /* (non-Javadoc)
+ /**
+ * Gets the associated type.
+ *
+ * @return the associated type
+ */
+ /*
+ * (non-Javadoc)
+ *
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
*/
@Override
@@ -33,12 +61,25 @@ public class ShowDatasetsEvent extends GwtEvent{
return TYPE;
}
- /* (non-Javadoc)
- * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
+ /**
+ * Dispatch.
+ *
+ * @param handler the handler
+ */
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.
+ * EventHandler)
*/
@Override
protected void dispatch(ShowDatasetsEventHandler handler) {
handler.onShowDatasets(this);
}
+
+ public String getDatasetId() {
+ return datasetId;
+ }
}
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanMetadataManagementPanel.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanMetadataManagementPanel.java
index f883003..78dbdf0 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanMetadataManagementPanel.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanMetadataManagementPanel.java
@@ -4,6 +4,7 @@
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ClickedCMSManageProductButtonEvent;
+import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.DeleteItemEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetadataEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.PublishOnZenodoEvent;
@@ -16,12 +17,14 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowOrgani
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatisticsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowTypesEvent;
-import com.github.gwtbootstrap.client.ui.AlertBlock;
import com.github.gwtbootstrap.client.ui.Button;
+import com.github.gwtbootstrap.client.ui.DropdownButton;
import com.github.gwtbootstrap.client.ui.Label;
-import com.github.gwtbootstrap.client.ui.constants.AlertType;
+import com.github.gwtbootstrap.client.ui.NavLink;
+import com.github.gwtbootstrap.client.ui.Navbar;
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
import com.github.gwtbootstrap.client.ui.constants.IconType;
+import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Float;
import com.google.gwt.dom.client.Style.FontWeight;
import com.google.gwt.dom.client.Style.Unit;
@@ -44,9 +47,6 @@ public class CkanMetadataManagementPanel extends FlowPanel {
public static final String CATALOGUE_ITEMS_WERE_APPROVED_BY_CATALOGUE_MODERATOR_S = "Catalogue items were approved by Catalogue Moderator(s).";
- /**
- *
- */
private static final String MY_PREFIX = "My ";
private static final String MANAGE_GRSF_ITEM_TOOLTIP = "By pushing on this button, you will be able to manage the item you are viewing."
@@ -55,7 +55,7 @@ public class CkanMetadataManagementPanel extends FlowPanel {
private static final String MANAGE_CMS_ITEMS_TOOLTIP = "By pushing on this button, you will be able to manage (APPROVING or REJECTING) the item under approval."
+ " Manageable items are not APPROVED and NOT PUBLISHED in the Catalogue.";
- private AlertBlock nav = new AlertBlock();
+ private Navbar nav = new Navbar();
// generic
private Button home = new Button("Home");
@@ -65,11 +65,14 @@ public class CkanMetadataManagementPanel extends FlowPanel {
private Button types = new Button("Types");
// user's own
- private InlineHTML separatorMyInfo = null;
- private InlineHTML separatorAdminButtons = null;
- private Button myDatasets = new Button("My Items");
- private Button myOrganizations = new Button("My Organizations");
- private Button myGroups = new Button("My Groups");
+ private InlineHTML pipe_MyInfo_start = null;
+ private InlineHTML pipe_PublishItem_start = null;
+ private InlineHTML pipe_SelectedItemOptions_start = null;
+
+ private DropdownButton dropMyOptionButtons = new DropdownButton("My...");
+ private NavLink myDatasets = new NavLink("My Items");
+ private NavLink myOrganizations = new NavLink("My Organizations");
+ private NavLink myGroups = new NavLink("My Groups");
// statistics
private Button statistics = new Button("Statistics");
@@ -78,7 +81,8 @@ public class CkanMetadataManagementPanel extends FlowPanel {
private Button shareLink = new Button("Share Link");
private Button uploadToZenodo = new Button("Upload to Zenodo");
private Button insertMeta = new Button("Publish Item");
- private Button editMeta = new Button("Edit Item");
+ private Button editMeta = new Button("Update Item");
+ private Button deleteItem = new Button("Delete Item");
private Button manageGRSFProduct = new Button("Manage GRSF Item"); // GRSF Manage
private Button manageCModS = new Button("Manage Items"); // Moderation
@@ -103,25 +107,20 @@ public class CkanMetadataManagementPanel extends FlowPanel {
items.setType(ButtonType.LINK);
types.setType(ButtonType.LINK);
- myDatasets.setType(ButtonType.LINK);
- myOrganizations.setType(ButtonType.LINK);
- myGroups.setType(ButtonType.LINK);
-
statistics.setType(ButtonType.LINK);
shareLink.setType(ButtonType.LINK);
uploadToZenodo.setType(ButtonType.LINK);
insertMeta.setType(ButtonType.LINK);
editMeta.setType(ButtonType.LINK);
+ deleteItem.setType(ButtonType.LINK);
manageGRSFProduct.setType(ButtonType.PRIMARY);
manageGRSFProduct.getElement().getStyle().setFloat(Float.RIGHT);
manageCModS.setType(ButtonType.PRIMARY);
manageCModS.getElement().getStyle().setFloat(Float.RIGHT);
manageCModS.getElement().getStyle().setMarginRight(20, Unit.PX);
-// messageModerationEnanbled.setType(AlertType.INFO);
-// messageModerationEnanbled.setClose(false);
- // messageModerationEnanbled.addStyleName("moderation-message");
+
messageModerationEnanbled.setTitle(MESSAGE_MODERATED_CATALOGUE);
messageModerationEnanbled.getElement().setInnerHTML(" " + MESSAGE_MODERATED_CATALOGUE);
messageModerationEnanbled.addStyleName("moderation-enabled-flag");
@@ -139,15 +138,24 @@ public class CkanMetadataManagementPanel extends FlowPanel {
myGroups.setIcon(IconType.GROUP);
insertMeta.setIcon(IconType.FILE);
editMeta.setIcon(IconType.EDIT_SIGN);
+ deleteItem.setIcon(IconType.REMOVE_CIRCLE);
statistics.setIcon(IconType.BAR_CHART);
manageGRSFProduct.setIcon(IconType.CHECK_SIGN);
manageCModS.setIcon(IconType.CHECK_SIGN);
- // hide edit and insert
+ // disabling share and upload
shareLink.setEnabled(false);
uploadToZenodo.setEnabled(false);
+
+ // hide upload to zenodo
+ uploadToZenodo.setVisible(false);
+
+ // hide publish/update/delete
editMeta.setVisible(false);
+ deleteItem.setVisible(false);
insertMeta.setVisible(false);
+
+ // hide manage GRSF product and Moderation
manageGRSFProduct.setVisible(false);
manageGRSFProduct.setEnabled(false);
manageCModS.setVisible(false);
@@ -163,6 +171,9 @@ public class CkanMetadataManagementPanel extends FlowPanel {
manageCModS.getElement().getStyle().setFontWeight(FontWeight.BOLD);
nav.add(messageModerationEnanbled);
+
+ nav.setId("the_catalogue_nav_bar");
+ nav.addStyleName("nav_bar_catalogue");
// add to navigation bar
nav.add(home);
nav.add(organizations);
@@ -170,25 +181,37 @@ public class CkanMetadataManagementPanel extends FlowPanel {
nav.add(items);
nav.add(types);
nav.add(statistics);
- separatorMyInfo = new InlineHTML("|");
- separatorMyInfo.setVisible(true);
- nav.add(separatorMyInfo);
- nav.add(myOrganizations);
- nav.add(myGroups);
- nav.add(myDatasets);
- separatorAdminButtons = new InlineHTML("|");
- separatorAdminButtons.setVisible(true);
- nav.add(separatorAdminButtons);
+ pipe_MyInfo_start = new InlineHTML(
+ "|");
+ pipe_MyInfo_start.setVisible(true);
+ nav.add(pipe_MyInfo_start);
+
+ dropMyOptionButtons.setBaseIcon(IconType.USER);
+ dropMyOptionButtons.add(myOrganizations);
+ dropMyOptionButtons.add(myGroups);
+ dropMyOptionButtons.add(myDatasets);
+ dropMyOptionButtons.setType(ButtonType.LINK);
+ nav.add(dropMyOptionButtons);
+
+ pipe_PublishItem_start = new InlineHTML(
+ "|");
+ pipe_PublishItem_start.setVisible(false);
+ nav.add(pipe_PublishItem_start);
+ nav.add(insertMeta);
+
+ pipe_SelectedItemOptions_start = new InlineHTML(
+ "|");
+ pipe_SelectedItemOptions_start.setVisible(true);
+ nav.add(pipe_SelectedItemOptions_start);
+
+ nav.add(editMeta);
+ nav.add(deleteItem);
nav.add(shareLink);
nav.add(uploadToZenodo);
- nav.add(insertMeta);
- nav.add(editMeta);
+
nav.add(manageGRSFProduct);
nav.add(manageCModS);
- nav.setClose(false);
- nav.setType(AlertType.INFO);
- nav.getElement().getStyle().setMarginBottom(0, Unit.PX);
- nav.getElement().getStyle().setBackgroundColor("#FFF");
+
addHandlers();
add(nav);
}
@@ -261,8 +284,18 @@ public class CkanMetadataManagementPanel extends FlowPanel {
@Override
public void onClick(ClickEvent event) {
+ GWT.log("Edit Meta clicked");
+ eventBus.fireEvent(
+ new EditMetadataEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier()));
+ }
+ });
- eventBus.fireEvent(new EditMetadataEvent());
+ deleteItem.addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(ClickEvent event) {
+ GWT.log("Delete item clicked");
+ eventBus.fireEvent(new DeleteItemEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier()));
}
});
@@ -358,17 +391,12 @@ public class CkanMetadataManagementPanel extends FlowPanel {
}
/**
- * Those buttons can be only visible when the logged user has role
- * edit/admin/sysadmin.
+ * Enable publish button.
*
- * @param show the show
+ * @param enable the enable
*/
- public void showInsertAndEditProductButtons(boolean show) {
-
- // editMeta.setVisible(show); TODO
- // separatorAdminButtons.setVisible(show);
- insertMeta.setVisible(show);
-
+ public void enablePublishItemButton(boolean enable) {
+ insertMeta.setEnabled(enable);
}
/**
@@ -391,7 +419,7 @@ public class CkanMetadataManagementPanel extends FlowPanel {
/**
* Button to manage the products under moderation via Content Moderation System
- * (CMS)
+ * (CMS).
*
* @param value true or false
*/
@@ -436,6 +464,24 @@ public class CkanMetadataManagementPanel extends FlowPanel {
uploadToZenodo.setEnabled(value);
}
+ /**
+ * Enable edit item button.
+ *
+ * @param value the value
+ */
+ public void enableEditItemButton(boolean value) {
+ editMeta.setEnabled(value);
+ }
+
+ /**
+ * Enable delete item button.
+ *
+ * @param value the value
+ */
+ public void enableDeleteItemButton(boolean value) {
+ deleteItem.setEnabled(value);
+ }
+
/**
* Visibility publish on zenodo button.
*
@@ -445,20 +491,55 @@ public class CkanMetadataManagementPanel extends FlowPanel {
uploadToZenodo.setVisible(value);
}
+ /**
+ * Visibility publish item button.
+ *
+ * @param value the value
+ * @param alsoThePipe the also the pipe. If true set bool value also the related
+ * pipe 'pipe_PublishItem_start'
+ */
+ public void visibilityPublishItemButton(boolean bool, boolean alsoThePipe) {
+ insertMeta.setVisible(bool);
+ if (alsoThePipe) {
+ pipe_PublishItem_start.setVisible(bool);
+ }
+ }
+
+ /**
+ * Visibility edit item button.
+ *
+ * @param value the value
+ */
+ public void visibilityEditItemButton(boolean value) {
+ editMeta.setVisible(value);
+ }
+
+ /**
+ * Visibility delete item button.
+ *
+ * @param value the value
+ */
+ public void visibilityDeleteItemButton(boolean value) {
+ deleteItem.setVisible(value);
+ }
+
/**
* Show only home/statistics buttons.
*/
public void doNotShowUserRelatedInfo() {
- separatorMyInfo.setVisible(false);
- separatorAdminButtons.setVisible(false);
+ pipe_MyInfo_start.setVisible(false);
+ pipe_PublishItem_start.setVisible(false);
+ pipe_SelectedItemOptions_start.setVisible(false);
shareLink.setVisible(false);
uploadToZenodo.setVisible(false);
insertMeta.setVisible(false);
editMeta.setVisible(false);
- myDatasets.setVisible(false);
- myOrganizations.setVisible(false);
- myGroups.setVisible(false);
+ deleteItem.setVisible(false);
+ dropMyOptionButtons.setVisible(false);
+// myDatasets.setVisible(false);
+// myOrganizations.setVisible(false);
+// myGroups.setVisible(false);
manageGRSFProduct.setVisible(false);
manageCModS.setVisible(false);
@@ -474,11 +555,12 @@ public class CkanMetadataManagementPanel extends FlowPanel {
groups.setVisible(false);
items.setVisible(false);
types.setVisible(false);
- separatorMyInfo.setVisible(false);
- separatorAdminButtons.setVisible(false);
- myDatasets.setVisible(false);
- myOrganizations.setVisible(false);
- myGroups.setVisible(false);
+ pipe_MyInfo_start.setVisible(false);
+ pipe_PublishItem_start.setVisible(false);
+ dropMyOptionButtons.setVisible(false);
+// myDatasets.setVisible(false);
+// myOrganizations.setVisible(false);
+// myGroups.setVisible(false);
statistics.setVisible(false);
manageGRSFProduct.setVisible(false);
manageCModS.setVisible(false);
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java
index 5099582..69ebf51 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java
@@ -181,24 +181,56 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
@Override
public void onFailure(Throwable caught) {
- showEditInsertButtons(false);
+ managementPanel.visibilityEditItemButton(false);
+ managementPanel.visibilityDeleteItemButton(false);
+ managementPanel.visibilityPublishItemButton(false, true);
}
@Override
public void onSuccess(RolesCkanGroupOrOrg result) {
- switch (result) {
- case ADMIN:
- showEditInsertButtons(true);
- break;
- case EDITOR:
- showEditInsertButtons(true);
- break;
- case MEMBER:
- showEditInsertButtons(false);
- break;
- default:
- showEditInsertButtons(false);
- break;
+ GWT.log("isUserLoggedInVRE: "+ckanAccessPoint.isUserLoggedInVRE());
+ GWT.log("getLoggedInScope: "+ckanAccessPoint.getLoggedInScope());
+
+ if (ckanAccessPoint.isUserLoggedInVRE()) {
+
+ switch (result) {
+ case ADMIN: {
+ managementPanel.visibilityPublishItemButton(true, true);
+ managementPanel.visibilityEditItemButton(true);
+ managementPanel.visibilityDeleteItemButton(true);
+ managementPanel.enablePublishItemButton(true);
+ break;
+ }
+ case EDITOR: {
+ managementPanel.visibilityPublishItemButton(true, true);
+ managementPanel.visibilityEditItemButton(true);
+ managementPanel.visibilityDeleteItemButton(true);
+ managementPanel.enablePublishItemButton(true);
+ break;
+ }
+ case MEMBER: {
+ managementPanel.visibilityEditItemButton(false);
+ managementPanel.visibilityDeleteItemButton(false);
+ // Disable the button "Publish Item" is to inform the user that he/she has
+ // not the rights to publish
+ managementPanel.visibilityPublishItemButton(true, true);
+ managementPanel.enablePublishItemButton(false);
+ break;
+ }
+ default: {
+ managementPanel.visibilityEditItemButton(false);
+ managementPanel.visibilityDeleteItemButton(false);
+ // Disable the button "Publish Item" is to inform the user that he/she has
+ // not the rights to publish
+ managementPanel.visibilityPublishItemButton(true, true);
+ managementPanel.enablePublishItemButton(false);
+ break;
+ }
+ }
+ } else {
+ managementPanel.visibilityPublishItemButton(false, true);
+ managementPanel.visibilityEditItemButton(false);
+ managementPanel.visibilityDeleteItemButton(false);
}
}
@@ -414,15 +446,15 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
updateSize();
}
- /**
- * show or hide edit/insert buttons according to the role.
- *
- * @param show the show
- */
- public void showEditInsertButtons(boolean show) {
-
- managementPanel.showInsertAndEditProductButtons(show);
- }
+// /**
+// * show or hide the Publish/Update/Delete buttons according to the role.
+// *
+// * @param show the show
+// */
+// public void showPublishUpdateDeleteButtons(boolean show) {
+//
+// managementPanel.visibilityUpdateDeleteButtons(show);
+// }
/**
* Instance ckan frame.
@@ -563,6 +595,8 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
if (!isProductKeyMissing) {
latestSelectedProductIdentifier = productId.toString();
managementPanel.enableShareItemButton(productId != null && !productId.isEmpty());
+ managementPanel.enableEditItemButton(productId != null && !productId.isEmpty());
+ managementPanel.enableDeleteItemButton(productId != null && !productId.isEmpty());
managementPanel.enablePublishOnZenodoButton(productId != null && !productId.isEmpty());
managementPanel.enableManageGRSFProductButton(
productId != null && !productId.isEmpty() && manageProductResponse.isManageEnabled());
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java
index d7d34d8..49932ba 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java
@@ -88,7 +88,7 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
try{
// just get the current scope and set it into ScopeProvider...
- SessionUtil.getCurrentContext(getThreadLocalRequest(), true);
+ String loggedInScope = SessionUtil.getCurrentContext(getThreadLocalRequest(), true);
// retrieve scope per current portlet url
String scopePerCurrentUrl = SessionUtil.getScopeFromClientUrl(getThreadLocalRequest());
@@ -112,7 +112,15 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
pathInfoParameter = isViewPerVREEnabled(browserLocationURL);
}
+ //#26854
CkanConnectorAccessPoint ckAP = getCkanConnectorAccessPoint(browserLocationURL, pathInfoParameter, queryStringParameters, scopePerCurrentUrl);
+ ckAP.setLoggedInScope(loggedInScope);
+ ckAP.setOperativeScope(scopePerCurrentUrl);
+ if(loggedInScope!=null) {
+ ScopeBean scopeBeanLS = new ScopeBean(loggedInScope);
+ boolean loggedInVRE = scopeBeanLS.is(Type.VRE);
+ ckAP.setUserLoggedInVRE(loggedInVRE);
+ }
SessionUtil.saveCkanAccessPoint(this.getThreadLocalRequest().getSession(), scopePerCurrentUrl, ckAP);
logger.info("Built the URI to CKAN (connector in case of user logged): "+ckAP.buildURI());
logger.debug("returning ckanConnectorUri: "+ckAP);
@@ -238,8 +246,8 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
RolesCkanGroupOrOrg toReturn = RolesCkanGroupOrOrg.MEMBER;
if(!SessionUtil.isIntoPortal()){
- logger.warn("OUT FROM PORTAL DETECTED RETURNING ROLE: "+RolesCkanGroupOrOrg.ADMIN);
toReturn = RolesCkanGroupOrOrg.ADMIN;
+ logger.warn("OUT FROM PORTAL DETECTED RETURNING ROLE: "+toReturn);
}else{
HttpSession httpSession = this.getThreadLocalRequest().getSession();
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/shared/CkanConnectorAccessPoint.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/shared/CkanConnectorAccessPoint.java
index 4049977..15bfaf9 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/shared/CkanConnectorAccessPoint.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/shared/CkanConnectorAccessPoint.java
@@ -10,14 +10,12 @@ import java.util.Set;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.server.GcubeCkanDataCatalogServiceImpl;
-
/**
* The Class CkanConnectorAccessPoint.
*
- * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * Jun 23, 2016
+ * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jun 23, 2016
*/
-public class CkanConnectorAccessPoint implements Serializable{
+public class CkanConnectorAccessPoint implements Serializable {
/**
*
@@ -37,6 +35,10 @@ public class CkanConnectorAccessPoint implements Serializable{
private boolean outsideLoginOnPortal = false;
private String catalogueBaseUrl = null;
+ private String operativeScope = null;
+ private String loggedInScope = null;
+ private boolean isUserLoggedInVRE = false;
+
/**
* Instantiates a new ckan connector access point.
*/
@@ -46,10 +48,10 @@ public class CkanConnectorAccessPoint implements Serializable{
/**
* Instantiates a new ckan connector access point.
*
- * @param baseUrl the base url
+ * @param baseUrl the base url
* @param serviceContext the service context
*/
- public CkanConnectorAccessPoint(String baseUrl, String serviceContext){
+ public CkanConnectorAccessPoint(String baseUrl, String serviceContext) {
this.baseUrl = baseUrl;
this.catalogueBaseUrl = baseUrl.split("ckan-connector")[0];
this.serviceContext = serviceContext;
@@ -58,29 +60,29 @@ public class CkanConnectorAccessPoint implements Serializable{
/**
* Adds the generic parameter.
*
- * @param key the key
+ * @param key the key
* @param value the value
*/
- public void addGenericParameter(String key, String value){
- queryStringParameters=queryStringParameters==null?key+"="+value:queryStringParameters+"&"+key+"="+value;
+ public void addGenericParameter(String key, String value) {
+ queryStringParameters = queryStringParameters == null ? key + "=" + value
+ : queryStringParameters + "&" + key + "=" + value;
}
-
/**
* Adds the query string.
*
* @param queryString the query string
*/
- public void addQueryString(String queryString){
+ public void addQueryString(String queryString) {
- if(queryString==null || queryString.isEmpty())
+ if (queryString == null || queryString.isEmpty())
return;
- if(queryString.startsWith("&") || queryString.startsWith("?")){
- queryString = queryString.substring(1, queryString.length()); //removes '&' or '?'
+ if (queryString.startsWith("&") || queryString.startsWith("?")) {
+ queryString = queryString.substring(1, queryString.length()); // removes '&' or '?'
}
- queryStringParameters=queryStringParameters==null?queryString:queryStringParameters+"&"+queryString;
+ queryStringParameters = queryStringParameters == null ? queryString : queryStringParameters + "&" + queryString;
}
/**
@@ -88,8 +90,8 @@ public class CkanConnectorAccessPoint implements Serializable{
*
* @param value the value
*/
- public void addGubeToken(String value){
- if(!outsideLoginOnPortal){
+ public void addGubeToken(String value) {
+ if (!outsideLoginOnPortal) {
this.gcubeTokenValue = value;
addGenericParameter(GCUBE_TOKEN_PARAMETER, value);
}
@@ -100,18 +102,19 @@ public class CkanConnectorAccessPoint implements Serializable{
*
* @param listVREs the list vr es
*/
- public void addListOfVREs(Map listVREs){
+ public void addListOfVREs(Map listVREs) {
this.mapVresRoles = listVREs;
String vres = "";
- if(listVREs!=null && listVREs.size()>0){
+ if (listVREs != null && listVREs.size() > 0) {
Set> set = listVREs.entrySet();
for (Entry entry : set) {
vres += entry.getKey().toLowerCase() + "|" + entry.getValue() + ",";
}
- vres = vres.substring(0, vres.length()-1); //remove last "," and to lower case. A CKAN Organization ID must be lower case
+ vres = vres.substring(0, vres.length() - 1); // remove last "," and to lower case. A CKAN Organization ID
+ // must be lower case
}
- if(vres.length()>0){
+ if (vres.length() > 0) {
addGenericParameter(LIST_OF_VRES_PARAMETER, vres);
}
}
@@ -121,27 +124,75 @@ public class CkanConnectorAccessPoint implements Serializable{
*
* @param pathInfo the path info
*/
- public void addPathInfo(String pathInfo){
+ public void addPathInfo(String pathInfo) {
pathInfoParameter = pathInfo;
}
-
/**
- * Builds the URI to contact the CKAN (connector in case of user logged)
+ * Builds the URI to contact the CKAN (connector in case of user logged).
*
* @return the string
*/
- public String buildURI(){
+ public String buildURI() {
- String path = "";
- String query = "";
+ String path = "";
+ String query = "";
path = checkURLPathSeparator(pathInfoParameter, true, false);
query = checkNullString(queryStringParameters);
- String url = getBaseUrlWithContext()+path;
- url+= !query.isEmpty()?"?"+query:"";
+ String url = getBaseUrlWithContext() + path;
+ url += !query.isEmpty() ? "?" + query : "";
return url;
}
+ /**
+ * Gets the operative scope.
+ *
+ * @return the operative scope
+ */
+ public String getOperativeScope() {
+ return operativeScope;
+ }
+
+ /**
+ * Gets the logged in scope.
+ *
+ * @return the logged in scope
+ */
+ public String getLoggedInScope() {
+ return loggedInScope;
+ }
+
+ public boolean isUserLoggedInVRE() {
+ return isUserLoggedInVRE;
+ }
+
+ /**
+ * Sets the user logged in VRE.
+ *
+ * @param isUserLoggedInVRE the new user logged in VRE
+ */
+ public void setUserLoggedInVRE(boolean isUserLoggedInVRE) {
+ this.isUserLoggedInVRE = isUserLoggedInVRE;
+ }
+
+ /**
+ * Sets the operative scope.
+ *
+ * @param operativeScope the new operative scope
+ */
+ public void setOperativeScope(String operativeScope) {
+ this.operativeScope = operativeScope;
+ }
+
+ /**
+ * Sets the logged in scope.
+ *
+ * @param loggedInScope the new logged in scope
+ */
+ public void setLoggedInScope(String loggedInScope) {
+ this.loggedInScope = loggedInScope;
+ }
+
/**
* Gets the base url with context.
*
@@ -149,10 +200,9 @@ public class CkanConnectorAccessPoint implements Serializable{
*/
public String getBaseUrlWithContext() {
- return baseUrl+serviceContext;
+ return baseUrl + serviceContext;
}
-
/**
* Gets the path info parameter.
*
@@ -163,7 +213,6 @@ public class CkanConnectorAccessPoint implements Serializable{
return pathInfoParameter;
}
-
/**
* Gets the query string parameters.
*
@@ -174,7 +223,6 @@ public class CkanConnectorAccessPoint implements Serializable{
return queryStringParameters;
}
-
/**
* Gets the gcube token value.
*
@@ -185,7 +233,6 @@ public class CkanConnectorAccessPoint implements Serializable{
return gcubeTokenValue;
}
-
/**
* Gets the list of v res.
*
@@ -199,25 +246,29 @@ public class CkanConnectorAccessPoint implements Serializable{
/**
* Check url path separator.
*
- * @param url the url
- * @param head - checks the {@link GcubeCkanDataCatalogServiceImpl.URL_PATH_SEPARATOR} in head adding if do not exist
- * @param tail - checks the {@link GcubeCkanDataCatalogServiceImpl.URL_PATH_SEPARATOR} in tail adding if do not exist
- * @return the string - if null return an empty string otherwise a string with {@link GcubeCkanDataCatalogServiceImpl.URL_PATH_SEPARATOR}
+ * @param url the url
+ * @param head - checks the
+ * {@link GcubeCkanDataCatalogServiceImpl.URL_PATH_SEPARATOR} in
+ * head adding if do not exist
+ * @param tail - checks the
+ * {@link GcubeCkanDataCatalogServiceImpl.URL_PATH_SEPARATOR} in
+ * tail adding if do not exist
+ * @return the string - if null return an empty string otherwise a string with
+ * {@link GcubeCkanDataCatalogServiceImpl.URL_PATH_SEPARATOR}
*/
- public static String checkURLPathSeparator(String url, boolean head, boolean tail){
+ public static String checkURLPathSeparator(String url, boolean head, boolean tail) {
- if(url!=null && url.length()>0){
- if(head)
- url=url.startsWith(URL_PATH_SEPARATOR)?url:URL_PATH_SEPARATOR+url;
- if(tail)
- url=url.endsWith(URL_PATH_SEPARATOR)?url:url+URL_PATH_SEPARATOR;
- }else
+ if (url != null && url.length() > 0) {
+ if (head)
+ url = url.startsWith(URL_PATH_SEPARATOR) ? url : URL_PATH_SEPARATOR + url;
+ if (tail)
+ url = url.endsWith(URL_PATH_SEPARATOR) ? url : url + URL_PATH_SEPARATOR;
+ } else
url = "";
return url;
}
-
/**
* Gets the base url.
*
@@ -228,23 +279,20 @@ public class CkanConnectorAccessPoint implements Serializable{
return baseUrl;
}
-
/**
* Check null string.
*
* @param value the value
* @return the string if is not null otherwise an empty string
*/
- public static String checkNullString(String value){
+ public static String checkNullString(String value) {
- if(value==null)
+ if (value == null)
return "";
else
return value;
}
-
-
/**
* Checks if is outside login on portal.
*
@@ -255,7 +303,6 @@ public class CkanConnectorAccessPoint implements Serializable{
return outsideLoginOnPortal;
}
-
/**
* Sets the outside login on portal.
*
@@ -275,8 +322,14 @@ public class CkanConnectorAccessPoint implements Serializable{
return catalogueBaseUrl;
}
-
- /* (non-Javadoc)
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ /*
+ * (non-Javadoc)
+ *
* @see java.lang.Object#toString()
*/
@Override
diff --git a/src/main/resources/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml b/src/main/resources/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml
index dde449b..972fef9 100644
--- a/src/main/resources/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml
+++ b/src/main/resources/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml
@@ -20,6 +20,10 @@
+
+
+
+
+
-
diff --git a/src/main/webapp/GCubeCkanDataCatalog.css b/src/main/webapp/GCubeCkanDataCatalog.css
index 91bce8f..ee4cc1b 100644
--- a/src/main/webapp/GCubeCkanDataCatalog.css
+++ b/src/main/webapp/GCubeCkanDataCatalog.css
@@ -164,4 +164,19 @@ h1 {
margin-right: 10px;
padding: 8px !important;
border-radius: 12px !important;
+ margin-top: 5px;
+}
+
+.nav_bar_catalogue {
+ background-color: none !important;
+ margin-bottom: 0px !important;
+ margin-left: 10px;
+ margin-right: 5px;
+ padding: 5px;
+}
+
+.nav_bar_catalogue .navbar-inner {
+ background-image: none !important;
+ padding: 10px 5px;
+ background-color: #FAFAFA;
}
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index 748e3fb..b26d2f4 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -38,6 +38,11 @@
org.gcube.portlets_widgets.catalogue_sharing_widget.server.ShareServicesImpl
+
+ workspaceExplorer
+ org.gcube.portlets.widgets.wsexplorer.server.WorkspaceExplorerServiceImpl
+
+
ckanToZenodoServlet
@@ -49,12 +54,23 @@
org.gcube.portlets.widgets.ckancontentmoderator.server.CkanContentModeratorServiceImpl
+
+ metadataProfileFormBuilderUploadServlet
+ org.gcube.portlets.widgets.mpformbuilder.server.MetadataProfileFormBuilderUploadServlet
+
+
+
+ metadataProfileFormBuilderUploadServlet
+ /gCubeCkanDataCatalog/metadataProfileFormBuilderUploadServlet
+
+
+
ckanContentModeratorServlet
/gCubeCkanDataCatalog/ckanContentModeratorService
-
-
+
+
ckanToZenodoServlet
/gCubeCkanDataCatalog/ckantozenodo
@@ -80,6 +96,12 @@
/gCubeCkanDataCatalog/grsfmanageservice
+
+ workspaceExplorer
+ /gCubeCkanDataCatalog/WorkspaceExplorerService
+
+
+