From f98ccd3bfc4bf145e98669ce449049166caa4250 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 5 Feb 2024 17:03:25 +0100 Subject: [PATCH 01/17] [#26639] sync ckan-metadata-publisher-widget -> metadata-profile-form-builder-widget model --- .classpath | 4 +- .../com.gwtplugins.gdt.eclipse.core.prefs | 2 +- .settings/org.eclipse.wst.common.component | 111 ++++++++++++++++-- CHANGELOG.md | 4 + pom.xml | 8 +- .../GCubeCkanDataCatalog.gwt.xml | 5 +- .../GcubeCkanDataCatalogServiceImpl.java | 9 +- .../GCubeCkanDataCatalog.gwt.xml | 5 +- src/main/webapp/WEB-INF/web.xml | 16 ++- 9 files changed, 142 insertions(+), 22 deletions(-) diff --git a/.classpath b/.classpath index 78a5c21..c320efc 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,6 @@ - + @@ -30,5 +30,5 @@ - + 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..a777cf9 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,5 @@ - + @@ -52,8 +52,30 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -107,7 +129,18 @@ - + + + + + + + + + + + + @@ -161,7 +194,18 @@ - + + + + + + + + + + + + @@ -215,10 +259,24 @@ - + uses - + + uses + + + + + + + + + + + + + @@ -272,7 +330,18 @@ - + + + + + + + + + + + + @@ -326,7 +395,18 @@ - + + + + + + + + + + + + @@ -380,7 +460,18 @@ - + + + + + + + + + + + + diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f9d65a..0b9269b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ 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] + ## [v2.2.7] - 2023-12-21 - Including "Upload to Zenodo" fix [#26166] diff --git a/pom.xml b/pom.xml index 702a8e7..7588b35 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 @@ -125,6 +125,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..c8fed02 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/server/GcubeCkanDataCatalogServiceImpl.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java index d7d34d8..0a4d780 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 @@ -30,6 +30,7 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.BeanUserInOrgGro import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.ManageProductResponse; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.OrganizationBean; +import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.OrganizationBeanProfile; import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager; @@ -299,20 +300,20 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem * @param username the username * @return the list */ - private List fetchUserGroups(String context, String username) { + private List fetchUserGroups(String context, String username) { - List toReturn = null; + List toReturn = null; logger.info("Preloading user's groups"); try{ DataCatalogue catalogue = getCatalogue(context); - toReturn = new ArrayList(); + toReturn = new ArrayList(); Map> mapRoleGroup = catalogue.getUserRoleByGroup(username); Set>> set = mapRoleGroup.entrySet(); for (Entry> entry : set) { Set> subSet = entry.getValue().entrySet(); for (Entry subEntry : subSet) { - toReturn.add(new OrganizationBean(subEntry.getKey().getTitle(), subEntry.getKey().getName(), false)); + toReturn.add(new OrganizationBeanProfile(subEntry.getKey().getTitle(), subEntry.getKey().getName(), false)); } } 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..c8fed02 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/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 748e3fb..b9ef82e 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -49,12 +49,24 @@ org.gcube.portlets.widgets.ckancontentmoderator.server.CkanContentModeratorServiceImpl + + metadataProfileFormBuilderUploadServlet + org.gcube.portlets.widgets.mpformbuilder.server.MetadataProfileFormBuilderUploadServlet + + + + metadataProfileFormBuilderUploadServlet + /gCubeCkanDataCatalog/metadataProfileFormBuilderUploadServlet + + + + ckanContentModeratorServlet /gCubeCkanDataCatalog/ckanContentModeratorService - - + + ckanToZenodoServlet /gCubeCkanDataCatalog/ckantozenodo From 2257e3450e85a642dfebf3295848bbf5a2a97142 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 5 Feb 2024 17:30:15 +0100 Subject: [PATCH 02/17] Added Updated Item button --- .../client/CkanEventHandlerManager.java | 43 +++++++++++++++++++ .../client/event/EditMetadataEvent.java | 23 ++++++++-- .../view/CkanMetadataManagementPanel.java | 30 ++++++++++--- .../view/GCubeCkanDataCatalogPanel.java | 1 + 4 files changed, 89 insertions(+), 8 deletions(-) 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..5995b02 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 @@ -40,6 +40,7 @@ import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModerat import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants; import org.gcube.portlets.widgets.ckancontentmoderator.shared.DISPLAY_FIELD; 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; @@ -305,6 +306,48 @@ public class CkanEventHandlerManager { } }); + + eventBus.addHandler(EditMetadataEvent.TYPE, new EditMetadataEventHandler() { + + @Override + public void onEditMetadata(EditMetadataEvent editMetadataEvent) { + GWT.log("onEditMetadata called"); + + if (editMetadataEvent.getItemID() != null) { + + GWT.log("editMetadataEvent: " + editMetadataEvent); + final Modal modal = new ExtModal(true, true); + + modal.setTitle(WIDGET_CREATE_TITLE); + 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); + +// // hide any popup gcubeCkanDataCatalogue opened +// modal.addHideHandler(new HideHandler() { + // +// @Override +// public void onHide(HideEvent hideEvent) { +// GWT.log("HideEvent on modal fired"); +// GWT.log(hideEvent.toDebugString()); +// eventBus.fireEvent(new CloseCreationFormEvent()); +// +// hideEvent.preventDefault(); +// hideEvent.stopPropagation(); +// return; +// +// } +// }); + + GWT.log("show"); + modal.show(); + + } + + } + }); } /** 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/view/CkanMetadataManagementPanel.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanMetadataManagementPanel.java index f883003..631c713 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 @@ -22,6 +22,7 @@ import com.github.gwtbootstrap.client.ui.Label; import com.github.gwtbootstrap.client.ui.constants.AlertType; 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; @@ -78,7 +79,7 @@ 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 manageGRSFProduct = new Button("Manage GRSF Item"); // GRSF Manage private Button manageCModS = new Button("Manage Items"); // Moderation @@ -146,7 +147,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { // hide edit and insert shareLink.setEnabled(false); uploadToZenodo.setEnabled(false); - editMeta.setVisible(false); + editMeta.setEnabled(false); insertMeta.setVisible(false); manageGRSFProduct.setVisible(false); manageGRSFProduct.setEnabled(false); @@ -261,8 +262,8 @@ public class CkanMetadataManagementPanel extends FlowPanel { @Override public void onClick(ClickEvent event) { - - eventBus.fireEvent(new EditMetadataEvent()); + GWT.log("Edit Meta CLICK"); + eventBus.fireEvent(new EditMetadataEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier())); } }); @@ -391,7 +392,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 +437,15 @@ public class CkanMetadataManagementPanel extends FlowPanel { uploadToZenodo.setEnabled(value); } + /** + * Enable edit item button. + * + * @param value the value + */ + public void enableEditItemButton(boolean value) { + editMeta.setEnabled(value); + } + /** * Visibility publish on zenodo button. * @@ -444,6 +454,16 @@ public class CkanMetadataManagementPanel extends FlowPanel { public void visibilityPublishOnZenodoButton(boolean value) { uploadToZenodo.setVisible(value); } + + + /** + * Visibility edit item button. + * + * @param value the value + */ + public void visibilityEditItemButton(boolean value) { + editMeta.setVisible(value); + } /** * Show only home/statistics buttons. 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..8a56132 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 @@ -563,6 +563,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate { if (!isProductKeyMissing) { latestSelectedProductIdentifier = productId.toString(); managementPanel.enableShareItemButton(productId != null && !productId.isEmpty()); + managementPanel.enableEditItemButton(productId != null && !productId.isEmpty()); managementPanel.enablePublishOnZenodoButton(productId != null && !productId.isEmpty()); managementPanel.enableManageGRSFProductButton( productId != null && !productId.isEmpty() && manageProductResponse.isManageEnabled()); From 4518439788941c3c64a435090ab9c651961941d4 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 9 Feb 2024 15:12:27 +0100 Subject: [PATCH 03/17] renamed to "Update Item" --- .settings/org.eclipse.wst.common.component | 35 ++++++++++++++----- .../client/CkanEventHandlerManager.java | 2 +- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index a777cf9..49ca319 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,7 @@ - + + + @@ -64,7 +66,9 @@ - + + + @@ -129,7 +133,9 @@ - + + + @@ -194,7 +200,9 @@ - + + + @@ -259,13 +267,18 @@ + + uses + uses uses - + + + @@ -330,7 +343,9 @@ - + + + @@ -395,7 +410,9 @@ - + + + @@ -460,7 +477,9 @@ - + + + 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 5995b02..813ed63 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 @@ -318,7 +318,7 @@ public class CkanEventHandlerManager { GWT.log("editMetadataEvent: " + editMetadataEvent); final Modal modal = new ExtModal(true, true); - modal.setTitle(WIDGET_CREATE_TITLE); + 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"); From 2f6ddcf2a0ff327e032c61cad253cd4f01b611cf Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 12 Feb 2024 17:33:52 +0100 Subject: [PATCH 04/17] commented code --- .../gcubeckandatacatalog/client/CkanEventHandlerManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 813ed63..c8165f3 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 @@ -118,7 +118,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(); @@ -332,7 +332,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(); From a5efc60c576a94854bd0f5c3d09e51fe109c0731 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 13 Feb 2024 17:00:47 +0100 Subject: [PATCH 05/17] Updated the ShowDatasetsEvents --- .../client/CkanEventHandlerManager.java | 60 +++++++++-------- .../client/event/IFrameInstanciedEvent.java | 30 ++++++--- .../event/IFrameInstanciedEventHandler.java | 10 ++- .../client/event/ShowDatasetsEvent.java | 65 +++++++++++++++---- 4 files changed, 107 insertions(+), 58 deletions(-) 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 c8165f3..65304f9 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 @@ -39,6 +39,8 @@ 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.form.CreateDatasetForm; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.form.UpdateDatasetForm; import org.gcube.portlets_widgets.catalogue_sharing_widget.client.ShareCatalogueWidget; @@ -96,6 +98,7 @@ public class CkanEventHandlerManager { } }); + // bind on insert metadata eventBus.addHandler(InsertMetadataEvent.TYPE, new InsertMetadataEventHandler() { @@ -131,15 +134,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() { @@ -147,14 +141,35 @@ 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())); + } + + } + }); + eventBus.addHandler(ShowTypesEvent.TYPE, new ShowTypesEventHandler() { @Override @@ -312,7 +327,7 @@ public class CkanEventHandlerManager { @Override public void onEditMetadata(EditMetadataEvent editMetadataEvent) { GWT.log("onEditMetadata called"); - + if (editMetadataEvent.getItemID() != null) { GWT.log("editMetadataEvent: " + editMetadataEvent); @@ -325,27 +340,10 @@ public class CkanEventHandlerManager { modal.add(new UpdateDatasetForm(eventBus, editMetadataEvent.getItemID())); modal.setCloseVisible(true); -// // hide any popup gcubeCkanDataCatalogue opened -// modal.addHideHandler(new HideHandler() { - // -// @Override -// public void onHide(HideEvent hideEvent) { -// GWT.log("HideEvent on modal fired"); -// GWT.log(hideEvent.toDebugString()); -// eventBus.fireEvent(new CloseCreationFormProfileEvent()); -// -// hideEvent.preventDefault(); -// hideEvent.stopPropagation(); -// return; -// -// } -// }); - GWT.log("show"); modal.show(); } - } }); } 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; + } } From 1493d20bbe7b8ac974e5b12e64424171c1399746 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Thu, 15 Feb 2024 17:31:54 +0100 Subject: [PATCH 06/17] replaced OrganizationBeanProfile with OrganizationBean --- .settings/org.eclipse.wst.common.component | 30 ++++++++++--------- .../GcubeCkanDataCatalogServiceImpl.java | 9 +++--- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 49ca319..ba9b21d 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,6 @@ - + + @@ -66,7 +67,8 @@ - + + @@ -133,7 +135,8 @@ - + + @@ -200,7 +203,8 @@ - + + @@ -267,16 +271,11 @@ - - uses - uses - - uses - - + + @@ -343,7 +342,8 @@ - + + @@ -410,7 +410,8 @@ - + + @@ -477,7 +478,8 @@ - + + 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 0a4d780..d7d34d8 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 @@ -30,7 +30,6 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.BeanUserInOrgGro import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.ManageProductResponse; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.OrganizationBean; -import org.gcube.portlets.widgets.mpformbuilder.shared.catalogue.OrganizationBeanProfile; import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager; @@ -300,20 +299,20 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem * @param username the username * @return the list */ - private List fetchUserGroups(String context, String username) { + private List fetchUserGroups(String context, String username) { - List toReturn = null; + List toReturn = null; logger.info("Preloading user's groups"); try{ DataCatalogue catalogue = getCatalogue(context); - toReturn = new ArrayList(); + toReturn = new ArrayList(); Map> mapRoleGroup = catalogue.getUserRoleByGroup(username); Set>> set = mapRoleGroup.entrySet(); for (Entry> entry : set) { Set> subSet = entry.getValue().entrySet(); for (Entry subEntry : subSet) { - toReturn.add(new OrganizationBeanProfile(subEntry.getKey().getTitle(), subEntry.getKey().getName(), false)); + toReturn.add(new OrganizationBean(subEntry.getKey().getTitle(), subEntry.getKey().getName(), false)); } } From 94a13f5005fb5363ecceeed718499bf76b814d9f Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 16 Feb 2024 15:36:14 +0100 Subject: [PATCH 07/17] Updated the pom --- .settings/org.eclipse.wst.common.component | 3 ++ pom.xml | 32 +++++++++++++++++-- .../GCubeCkanDataCatalog.gwt.xml | 3 ++ .../GCubeCkanDataCatalog.gwt.xml | 3 ++ src/main/webapp/WEB-INF/web.xml | 12 ++++++- 5 files changed, 50 insertions(+), 3 deletions(-) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index ba9b21d..39a0f52 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -273,6 +273,9 @@ uses + + + uses diff --git a/pom.xml b/pom.xml index 7588b35..aae7b49 100644 --- a/pom.xml +++ b/pom.xml @@ -35,12 +35,41 @@ https://code-repo.d4science.org/gCubeSystem/${project.artifactId} + + + + catalogue-release-profile + + + Release + + + + 3.7.0 + [1.0.0,2.0.0-SNAPSHOT) + + + + + catalogue-snapshot-profile + + + !Release + + + + 3.8.0-SNAPSHOT + [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) + + + + org.gcube.distribution maven-portal-bom - 3.6.4 + ${gcube-portal-bom-version} pom import @@ -55,7 +84,6 @@ - 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 c8fed02..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 @@ -33,6 +33,9 @@ + + + + org.gcube.portlets_widgets.catalogue_sharing_widget.server.ShareServicesImpl + + workspaceExplorer + org.gcube.portlets.widgets.wsexplorer.server.WorkspaceExplorerServiceImpl + + ckanToZenodoServlet @@ -60,7 +65,6 @@ - ckanContentModeratorServlet /gCubeCkanDataCatalog/ckanContentModeratorService @@ -92,6 +96,12 @@ /gCubeCkanDataCatalog/grsfmanageservice + + workspaceExplorer + /gCubeCkanDataCatalog/WorkspaceExplorerService + + + From a9a7f1ccb7e1f19055e88a5b3219f6f918c5ed2e Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 16 Feb 2024 15:43:04 +0100 Subject: [PATCH 08/17] updated pom --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index aae7b49..9886102 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,7 @@ UTF-8 1.8 1.8 + 3.8.0-SNAPSHOT From 733841fd5e4a4100eb848d37a06ec4b867964b3a Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 19 Feb 2024 13:07:50 +0100 Subject: [PATCH 09/17] Updated Navigation Bar with Catalogue functionalities --- CHANGELOG.md | 1 + .../client/CkanEventHandlerManager.java | 31 +++++- .../client/event/DeleteItemEvent.java | 66 ++++++++++++ .../client/event/DeleteItemEventHandler.java | 21 ++++ .../view/CkanMetadataManagementPanel.java | 102 +++++++++++++----- .../view/GCubeCkanDataCatalogPanel.java | 1 + src/main/webapp/GCubeCkanDataCatalog.css | 15 +++ 7 files changed, 209 insertions(+), 28 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/DeleteItemEvent.java create mode 100644 src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/DeleteItemEventHandler.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b9269b..623a8df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [v2.3.0-SNAPSHOT] - 2024-02-02 - Supported the Edit facility [#26639] +- Support the Delete facility [#26793] ## [v2.2.7] - 2023-12-21 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 65304f9..4049569 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; @@ -41,6 +43,7 @@ import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWi 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; @@ -326,11 +329,10 @@ public class CkanEventHandlerManager { @Override public void onEditMetadata(EditMetadataEvent editMetadataEvent) { - GWT.log("onEditMetadata called"); + GWT.log("editMetadataEvent: " + editMetadataEvent); if (editMetadataEvent.getItemID() != null) { - GWT.log("editMetadataEvent: " + editMetadataEvent); final Modal modal = new ExtModal(true, true); modal.setTitle("Update Item"); @@ -346,6 +348,31 @@ public class CkanEventHandlerManager { } } }); + + 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/view/CkanMetadataManagementPanel.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanMetadataManagementPanel.java index 631c713..9e20de6 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,10 +17,11 @@ 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; @@ -45,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." @@ -56,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"); @@ -68,9 +67,9 @@ public class CkanMetadataManagementPanel extends FlowPanel { // 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 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"); @@ -80,6 +79,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { private Button uploadToZenodo = new Button("Upload to Zenodo"); private Button insertMeta = new Button("Publish 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 @@ -104,9 +104,9 @@ 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); +// myDatasets.setType(ButtonType.LINK); + //myOrganizations.setType(ButtonType.LINK); +// myGroups.setType(ButtonType.LINK); statistics.setType(ButtonType.LINK); @@ -114,6 +114,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { 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); @@ -140,6 +141,7 @@ 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); @@ -148,6 +150,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { shareLink.setEnabled(false); uploadToZenodo.setEnabled(false); editMeta.setEnabled(false); + deleteItem.setEnabled(false); insertMeta.setVisible(false); manageGRSFProduct.setVisible(false); manageGRSFProduct.setEnabled(false); @@ -164,6 +167,8 @@ public class CkanMetadataManagementPanel extends FlowPanel { manageCModS.getElement().getStyle().setFontWeight(FontWeight.BOLD); nav.add(messageModerationEnanbled); + + nav.addStyleName("nav_bar_catalogue"); // add to navigation bar nav.add(home); nav.add(organizations); @@ -171,25 +176,42 @@ public class CkanMetadataManagementPanel extends FlowPanel { nav.add(items); nav.add(types); nav.add(statistics); - separatorMyInfo = new InlineHTML("|"); + separatorMyInfo = new InlineHTML( + "|"); separatorMyInfo.setVisible(true); nav.add(separatorMyInfo); - nav.add(myOrganizations); - nav.add(myGroups); - nav.add(myDatasets); - separatorAdminButtons = new InlineHTML("|"); + + DropdownButton dropMy = new DropdownButton("My..."); + dropMy.setBaseIcon(IconType.USER); + dropMy.add(myOrganizations); + dropMy.add(myGroups); + dropMy.add(myDatasets); + dropMy.setType(ButtonType.LINK); + +// nav.add(myOrganizations); +// nav.add(myGroups); + nav.add(dropMy); + separatorAdminButtons = new InlineHTML( + "|"); separatorAdminButtons.setVisible(true); nav.add(separatorAdminButtons); + + nav.add(insertMeta); + + nav.add(new InlineHTML("|")); + + 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"); + // TODO +// nav.setClose(false); +// nav.setType(AlertType.INFO); +// nav.getElement().getStyle().setMarginBottom(0, Unit.PX); +// nav.getElement().getStyle().setBackgroundColor("#FFF"); addHandlers(); add(nav); } @@ -262,8 +284,18 @@ public class CkanMetadataManagementPanel extends FlowPanel { @Override public void onClick(ClickEvent event) { - GWT.log("Edit Meta CLICK"); - eventBus.fireEvent(new EditMetadataEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier())); + GWT.log("Edit Meta clicked"); + eventBus.fireEvent( + new EditMetadataEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier())); + } + }); + + deleteItem.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + GWT.log("Delete item clicked"); + eventBus.fireEvent(new DeleteItemEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier())); } }); @@ -446,6 +478,15 @@ public class CkanMetadataManagementPanel extends FlowPanel { editMeta.setEnabled(value); } + /** + * Enable delete item button. + * + * @param value the value + */ + public void enableDeleteItemButton(boolean value) { + deleteItem.setEnabled(value); + } + /** * Visibility publish on zenodo button. * @@ -454,7 +495,6 @@ public class CkanMetadataManagementPanel extends FlowPanel { public void visibilityPublishOnZenodoButton(boolean value) { uploadToZenodo.setVisible(value); } - /** * Visibility edit item button. @@ -465,6 +505,15 @@ public class CkanMetadataManagementPanel extends FlowPanel { editMeta.setVisible(value); } + /** + * Visibility delete item button. + * + * @param value the value + */ + public void visibilityDeleteItemButton(boolean value) { + deleteItem.setVisible(value); + } + /** * Show only home/statistics buttons. */ @@ -476,6 +525,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { uploadToZenodo.setVisible(false); insertMeta.setVisible(false); editMeta.setVisible(false); + deleteItem.setVisible(false); myDatasets.setVisible(false); myOrganizations.setVisible(false); myGroups.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 8a56132..d952462 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 @@ -564,6 +564,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate { 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/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 From 573c0b14deba22df0c80b1cc6ff72d0a0676d990 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 19 Feb 2024 16:08:58 +0100 Subject: [PATCH 10/17] Revisited the Navigation Bar --- CHANGELOG.md | 1 + .../client/view/CkanMetadataManagementPanel.java | 10 ++-------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 623a8df..7d7c2a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Supported the Edit facility [#26639] - Support the Delete facility [#26793] +- Revisited the Navigation Bar ## [v2.2.7] - 2023-12-21 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 9e20de6..050a2ad 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 @@ -187,10 +187,8 @@ public class CkanMetadataManagementPanel extends FlowPanel { dropMy.add(myGroups); dropMy.add(myDatasets); dropMy.setType(ButtonType.LINK); - -// nav.add(myOrganizations); -// nav.add(myGroups); nav.add(dropMy); + separatorAdminButtons = new InlineHTML( "|"); separatorAdminButtons.setVisible(true); @@ -207,11 +205,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { nav.add(manageGRSFProduct); nav.add(manageCModS); - // TODO -// nav.setClose(false); -// nav.setType(AlertType.INFO); -// nav.getElement().getStyle().setMarginBottom(0, Unit.PX); -// nav.getElement().getStyle().setBackgroundColor("#FFF"); + addHandlers(); add(nav); } From 81a76f51b868c244905b33aef3d5fc2a3149511d Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 19 Feb 2024 17:41:28 +0100 Subject: [PATCH 11/17] Managed the event showdatasetevent from the publisher widget --- .settings/org.eclipse.wst.common.component | 24 ++++++++++++------ .../client/CkanEventHandlerManager.java | 25 ++----------------- .../view/CkanMetadataManagementPanel.java | 24 +++++++++--------- .../view/GCubeCkanDataCatalogPanel.java | 16 ++++++------ 4 files changed, 38 insertions(+), 51 deletions(-) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 39a0f52..35fe429 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,6 @@ - + + @@ -67,7 +68,8 @@ - + + @@ -135,7 +137,8 @@ - + + @@ -203,7 +206,8 @@ - + + @@ -277,7 +281,8 @@ uses - + + @@ -345,7 +350,8 @@ - + + @@ -413,7 +419,8 @@ - + + @@ -481,7 +488,8 @@ - + + 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 4049569..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 @@ -168,6 +168,8 @@ public class CkanEventHandlerManager { if (addResourceEvent.getDatasetIDorName() != null) { eventBus.fireEvent(new ShowDatasetsEvent(false, addResourceEvent.getDatasetIDorName())); + } else { + eventBus.fireEvent(new ShowDatasetsEvent(false)); } } @@ -220,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 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 050a2ad..33af658 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 @@ -104,10 +104,6 @@ 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); @@ -121,9 +117,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { 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"); @@ -146,12 +140,16 @@ public class CkanMetadataManagementPanel extends FlowPanel { manageGRSFProduct.setIcon(IconType.CHECK_SIGN); manageCModS.setIcon(IconType.CHECK_SIGN); - // hide edit and insert + // disabling share and upload shareLink.setEnabled(false); uploadToZenodo.setEnabled(false); - editMeta.setEnabled(false); - deleteItem.setEnabled(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); @@ -386,15 +384,17 @@ public class CkanMetadataManagementPanel extends FlowPanel { /** * Those buttons can be only visible when the logged user has role - * edit/admin/sysadmin. + * EDITOR/ADMIN/SYSADMIN * * @param show the show */ - public void showInsertAndEditProductButtons(boolean show) { + public void visibilityPublishUpdateDeleteButtons(boolean show) { // editMeta.setVisible(show); TODO // separatorAdminButtons.setVisible(show); insertMeta.setVisible(show); + editMeta.setVisible(show); + deleteItem.setVisible(show); } 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 d952462..ce325dd 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,23 +181,23 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate { @Override public void onFailure(Throwable caught) { - showEditInsertButtons(false); + showPublishUpdateDeleteButtons(false); } @Override public void onSuccess(RolesCkanGroupOrOrg result) { switch (result) { case ADMIN: - showEditInsertButtons(true); + showPublishUpdateDeleteButtons(true); break; case EDITOR: - showEditInsertButtons(true); + showPublishUpdateDeleteButtons(true); break; case MEMBER: - showEditInsertButtons(false); + showPublishUpdateDeleteButtons(false); break; default: - showEditInsertButtons(false); + showPublishUpdateDeleteButtons(false); break; } @@ -415,13 +415,13 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate { } /** - * show or hide edit/insert buttons according to the role. + * show or hide the Publish/Update/Delete buttons according to the role. * * @param show the show */ - public void showEditInsertButtons(boolean show) { + public void showPublishUpdateDeleteButtons(boolean show) { - managementPanel.showInsertAndEditProductButtons(show); + managementPanel.visibilityPublishUpdateDeleteButtons(show); } /** From 36f32bf438cc2790961e36eaa9caa7e087c6b53e Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 19 Feb 2024 18:04:28 +0100 Subject: [PATCH 12/17] Updated Drop My Buttons --- .../view/CkanMetadataManagementPanel.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) 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 33af658..5154cb3 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 @@ -67,6 +67,8 @@ public class CkanMetadataManagementPanel extends FlowPanel { // user's own private InlineHTML separatorMyInfo = null; private InlineHTML separatorAdminButtons = 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"); @@ -179,13 +181,12 @@ public class CkanMetadataManagementPanel extends FlowPanel { separatorMyInfo.setVisible(true); nav.add(separatorMyInfo); - DropdownButton dropMy = new DropdownButton("My..."); - dropMy.setBaseIcon(IconType.USER); - dropMy.add(myOrganizations); - dropMy.add(myGroups); - dropMy.add(myDatasets); - dropMy.setType(ButtonType.LINK); - nav.add(dropMy); + dropMyOptionButtons.setBaseIcon(IconType.USER); + dropMyOptionButtons.add(myOrganizations); + dropMyOptionButtons.add(myGroups); + dropMyOptionButtons.add(myDatasets); + dropMyOptionButtons.setType(ButtonType.LINK); + nav.add(dropMyOptionButtons); separatorAdminButtons = new InlineHTML( "|"); @@ -520,9 +521,10 @@ public class CkanMetadataManagementPanel extends FlowPanel { insertMeta.setVisible(false); editMeta.setVisible(false); deleteItem.setVisible(false); - myDatasets.setVisible(false); - myOrganizations.setVisible(false); - myGroups.setVisible(false); + dropMyOptionButtons.setVisible(false); +// myDatasets.setVisible(false); +// myOrganizations.setVisible(false); +// myGroups.setVisible(false); manageGRSFProduct.setVisible(false); manageCModS.setVisible(false); @@ -540,9 +542,10 @@ public class CkanMetadataManagementPanel extends FlowPanel { types.setVisible(false); separatorMyInfo.setVisible(false); separatorAdminButtons.setVisible(false); - myDatasets.setVisible(false); - myOrganizations.setVisible(false); - myGroups.setVisible(false); + dropMyOptionButtons.setVisible(false); +// myDatasets.setVisible(false); +// myOrganizations.setVisible(false); +// myGroups.setVisible(false); statistics.setVisible(false); manageGRSFProduct.setVisible(false); manageCModS.setVisible(false); From c9811d3fb0c97fefe2862e8da63e8759eace9550 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 23 Feb 2024 15:30:05 +0100 Subject: [PATCH 13/17] Catalogue at root VO or VO level works in read only mode [#26854] --- .classpath | 5 + .settings/org.eclipse.wst.common.component | 51 +++++- CHANGELOG.md | 2 + .../view/CkanMetadataManagementPanel.java | 83 +++++---- .../view/GCubeCkanDataCatalogPanel.java | 78 ++++++--- .../GcubeCkanDataCatalogServiceImpl.java | 12 +- .../shared/CkanConnectorAccessPoint.java | 161 ++++++++++++------ 7 files changed, 270 insertions(+), 122 deletions(-) diff --git a/.classpath b/.classpath index c320efc..c10004b 100644 --- a/.classpath +++ b/.classpath @@ -30,5 +30,10 @@ + + + + + diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 35fe429..583deae 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,9 @@ - + + + + + @@ -68,7 +72,11 @@ - + + + + + @@ -137,7 +145,11 @@ - + + + + + @@ -206,7 +218,11 @@ - + + + + + @@ -275,13 +291,18 @@ - + + uses uses - + + + + + @@ -350,7 +371,11 @@ - + + + + + @@ -419,7 +444,11 @@ - + + + + + @@ -488,7 +517,11 @@ - + + + + + diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d7c2a8..da2ff14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Supported the Edit facility [#26639] - Support 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 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 5154cb3..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 @@ -65,9 +65,10 @@ public class CkanMetadataManagementPanel extends FlowPanel { private Button types = new Button("Types"); // user's own - private InlineHTML separatorMyInfo = null; - private InlineHTML separatorAdminButtons = null; - + 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"); @@ -119,7 +120,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { manageCModS.setType(ButtonType.PRIMARY); manageCModS.getElement().getStyle().setFloat(Float.RIGHT); manageCModS.getElement().getStyle().setMarginRight(20, Unit.PX); - + messageModerationEnanbled.setTitle(MESSAGE_MODERATED_CATALOGUE); messageModerationEnanbled.getElement().setInnerHTML(" " + MESSAGE_MODERATED_CATALOGUE); messageModerationEnanbled.addStyleName("moderation-enabled-flag"); @@ -145,13 +146,16 @@ public class CkanMetadataManagementPanel extends FlowPanel { // 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 + + // hide manage GRSF product and Moderation manageGRSFProduct.setVisible(false); manageGRSFProduct.setEnabled(false); manageCModS.setVisible(false); @@ -168,6 +172,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { nav.add(messageModerationEnanbled); + nav.setId("the_catalogue_nav_bar"); nav.addStyleName("nav_bar_catalogue"); // add to navigation bar nav.add(home); @@ -176,10 +181,10 @@ public class CkanMetadataManagementPanel extends FlowPanel { nav.add(items); nav.add(types); nav.add(statistics); - separatorMyInfo = new InlineHTML( + pipe_MyInfo_start = new InlineHTML( "|"); - separatorMyInfo.setVisible(true); - nav.add(separatorMyInfo); + pipe_MyInfo_start.setVisible(true); + nav.add(pipe_MyInfo_start); dropMyOptionButtons.setBaseIcon(IconType.USER); dropMyOptionButtons.add(myOrganizations); @@ -187,16 +192,18 @@ public class CkanMetadataManagementPanel extends FlowPanel { dropMyOptionButtons.add(myDatasets); dropMyOptionButtons.setType(ButtonType.LINK); nav.add(dropMyOptionButtons); - - separatorAdminButtons = new InlineHTML( - "|"); - separatorAdminButtons.setVisible(true); - nav.add(separatorAdminButtons); + pipe_PublishItem_start = new InlineHTML( + "|"); + pipe_PublishItem_start.setVisible(false); + nav.add(pipe_PublishItem_start); nav.add(insertMeta); - - nav.add(new InlineHTML("|")); - + + pipe_SelectedItemOptions_start = new InlineHTML( + "|"); + pipe_SelectedItemOptions_start.setVisible(true); + nav.add(pipe_SelectedItemOptions_start); + nav.add(editMeta); nav.add(deleteItem); nav.add(shareLink); @@ -204,7 +211,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { nav.add(manageGRSFProduct); nav.add(manageCModS); - + addHandlers(); add(nav); } @@ -384,19 +391,12 @@ public class CkanMetadataManagementPanel extends FlowPanel { } /** - * Those buttons can be only visible when the logged user has role - * EDITOR/ADMIN/SYSADMIN + * Enable publish button. * - * @param show the show + * @param enable the enable */ - public void visibilityPublishUpdateDeleteButtons(boolean show) { - - // editMeta.setVisible(show); TODO - // separatorAdminButtons.setVisible(show); - insertMeta.setVisible(show); - editMeta.setVisible(show); - deleteItem.setVisible(show); - + public void enablePublishItemButton(boolean enable) { + insertMeta.setEnabled(enable); } /** @@ -491,6 +491,20 @@ 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. * @@ -514,8 +528,9 @@ public class CkanMetadataManagementPanel extends FlowPanel { */ 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); @@ -540,8 +555,8 @@ public class CkanMetadataManagementPanel extends FlowPanel { groups.setVisible(false); items.setVisible(false); types.setVisible(false); - separatorMyInfo.setVisible(false); - separatorAdminButtons.setVisible(false); + pipe_MyInfo_start.setVisible(false); + pipe_PublishItem_start.setVisible(false); dropMyOptionButtons.setVisible(false); // myDatasets.setVisible(false); // myOrganizations.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 ce325dd..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) { - showPublishUpdateDeleteButtons(false); + managementPanel.visibilityEditItemButton(false); + managementPanel.visibilityDeleteItemButton(false); + managementPanel.visibilityPublishItemButton(false, true); } @Override public void onSuccess(RolesCkanGroupOrOrg result) { - switch (result) { - case ADMIN: - showPublishUpdateDeleteButtons(true); - break; - case EDITOR: - showPublishUpdateDeleteButtons(true); - break; - case MEMBER: - showPublishUpdateDeleteButtons(false); - break; - default: - showPublishUpdateDeleteButtons(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 the Publish/Update/Delete buttons according to the role. - * - * @param show the show - */ - public void showPublishUpdateDeleteButtons(boolean show) { - - managementPanel.visibilityPublishUpdateDeleteButtons(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. 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 From 27d0a38747d94f1b6cb1b3cc97787e0aeb0dc857 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 26 Feb 2024 15:07:45 +0100 Subject: [PATCH 14/17] Using production ranges of `gcube-portal-bom-version` and `storagehub-version-rang` --- .settings/org.eclipse.wst.common.component | 37 +++++++++++++++------- pom.xml | 8 +++-- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 583deae..dcaa495 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,7 @@ - + + + @@ -72,7 +74,9 @@ - + + + @@ -145,7 +149,9 @@ - + + + @@ -218,7 +224,9 @@ - + + + @@ -291,14 +299,15 @@ + + - - uses - uses - + + + @@ -371,7 +380,9 @@ - + + + @@ -444,7 +455,9 @@ - + + + @@ -517,7 +530,9 @@ - + + + diff --git a/pom.xml b/pom.xml index 9886102..f0f383c 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ UTF-8 1.8 1.8 - 3.8.0-SNAPSHOT + 3.7.0 @@ -59,8 +59,10 @@ - 3.8.0-SNAPSHOT - [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) + + + 3.7.0 + [1.0.0,2.0.0-SNAPSHOT) From 03cce83564f5365b7976854c5d3aa00377a41ff7 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 26 Feb 2024 15:23:44 +0100 Subject: [PATCH 15/17] Added the proper ranges in the `catalogue-snapshot-profile` --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index f0f383c..9d2e9fb 100644 --- a/pom.xml +++ b/pom.xml @@ -59,10 +59,10 @@ - - - 3.7.0 - [1.0.0,2.0.0-SNAPSHOT) + 3.8.0-SNAPSHOT + [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) + + From 6e01560b72382dc75bdefe5234885644852c7657 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Wed, 28 Feb 2024 11:05:22 +0100 Subject: [PATCH 16/17] commented profiles --- pom.xml | 50 ++++++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/pom.xml b/pom.xml index 9d2e9fb..8484027 100644 --- a/pom.xml +++ b/pom.xml @@ -38,33 +38,31 @@ - - catalogue-release-profile - - - Release - - - - 3.7.0 - [1.0.0,2.0.0-SNAPSHOT) - - + + + + + + + + + + + + - - catalogue-snapshot-profile - - - !Release - - - - 3.8.0-SNAPSHOT - [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) - - - - + + + + + + + + + + + + From 74da9f2159e4f3b2335ef116ba31fd46b1254339 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 19 Mar 2024 10:28:35 +0100 Subject: [PATCH 17/17] updated changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da2ff14..99ff62b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [v2.3.0-SNAPSHOT] - 2024-02-02 - Supported the Edit facility [#26639] -- Support the Delete facility [#26793] +- 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]