diff --git a/.classpath b/.classpath index a190e04..306919b 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,6 @@ - + @@ -26,15 +26,15 @@ - + - + - + - + diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs index 99f741f..f1f5fe5 100644 --- a/.settings/com.gwtplugins.gdt.eclipse.core.prefs +++ b/.settings/com.gwtplugins.gdt.eclipse.core.prefs @@ -1,5 +1,5 @@ eclipse.preferences.version=1 jarsExcludedFromWebInfLib= -lastWarOutDir=/home/francesco-mangiacrapa/git/gcube-ckan-datacatalog/target/gcube-ckan-datacatalog-1.7.0-SNAPSHOT +lastWarOutDir=/home/francesco-mangiacrapa/git/gcube-ckan-datacatalog/target/gcube-ckan-datacatalog-1.8.0-SNAPSHOT warSrcDir=src/main/webapp warSrcDirIsOutput=false diff --git a/.settings/com.gwtplugins.gwt.eclipse.core.prefs b/.settings/com.gwtplugins.gwt.eclipse.core.prefs index c516ac9..98d8c12 100644 --- a/.settings/com.gwtplugins.gwt.eclipse.core.prefs +++ b/.settings/com.gwtplugins.gwt.eclipse.core.prefs @@ -1,3 +1,4 @@ eclipse.preferences.version=1 entryPointModules= +gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBW11dPjwvZXh0cmEtYXJncz48dm0tYXJncz48IVtDREFUQVstWG14MWddXT48L3ZtLWFyZ3M+PGVudHJ5LXBvaW50LW1vZHVsZT5vcmcuZ2N1YmUucG9ydGxldHMuZ2N1YmVja2FuLmdjdWJlY2thbmRhdGFjYXRhbG9nLkdDdWJlQ2thbkRhdGFDYXRhbG9nPC9lbnRyeS1wb2ludC1tb2R1bGU+PC9nd3QtY29tcGlsZS1zZXR0aW5ncz4\= gwtSyncCodeServer=true diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 8db228c..a5c7673 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,6 +1,6 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 1c66b72..c505e77 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,5 @@ - + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml new file mode 100644 index 0000000..cc81385 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml index f049f34..4c3f59d 100644 --- a/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -5,5 +5,6 @@ + diff --git a/changelog.xml b/changelog.xml index 6d1c10e..5cd7748 100644 --- a/changelog.xml +++ b/changelog.xml @@ -1,4 +1,11 @@ + + [Feature #18226]: Develop Ckan extension GUI for Zenodo + interactive linking + + diff --git a/pom.xml b/pom.xml index 483c7a7..72c3008 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.gcube.portlets.gcubeckan gcube-ckan-datacatalog war - 1.7.0 + 1.8.0-SNAPSHOT gCube CKAN Data Catalog The gCube CKAN Data Catalog portlet @@ -114,6 +114,13 @@ compile + + org.gcube.portlets.widgets + ckan2zenodo-publisher-widget + [0.0.1-SNAPSHOT,1.0.0-SNAPSHOT) + compile + + @@ -217,8 +224,6 @@ compile - - 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 800e31e..0dea5be 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 @@ -25,10 +25,13 @@ + + + + - + 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 7cdcda8..e6ceb6d 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 @@ -8,6 +8,8 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetada import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetadataEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEventHandler; +import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.PublishOnZenodoEvent; +import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.PublishOnZenodoEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShareLinkEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShareLinkEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowDatasetsEvent; @@ -28,6 +30,8 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowTypesE import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowTypesEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint; +import org.gcube.portlets.widgets.ckan2zenodopublisher.client.CkanToZendoPublisherWidget; +import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.CatalogueItem; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.CloseCreationFormEvent; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.form.CreateDatasetForm; import org.gcube.portlets_widgets.catalogue_sharing_widget.client.ShareCatalogueWidget; @@ -251,6 +255,22 @@ public class CkanEventHandlerManager { } }); + + eventBus.addHandler(PublishOnZenodoEvent.TYPE, new PublishOnZenodoEventHandler() { + + @Override + public void onPublishOnZenodo(PublishOnZenodoEvent publishOnZenodoEvent) { + + if(publishOnZenodoEvent.getUuidItem()!=null) { + + CkanToZendoPublisherWidget publisherWidget = new CkanToZendoPublisherWidget(); + CatalogueItem ci = new CatalogueItem(publishOnZenodoEvent.getUuidItem(), null, CatalogueItem.ITEM_TYPE.DATASET); + publisherWidget.publishOnZenodo(ci); + + } + } + + }); } /** diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/PublishOnZenodoEvent.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/PublishOnZenodoEvent.java new file mode 100644 index 0000000..6bb4d4f --- /dev/null +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/PublishOnZenodoEvent.java @@ -0,0 +1,53 @@ +package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event; + +import com.google.gwt.event.shared.GwtEvent; + + +/** + * The Class PublishOnZenodoEvent. + * + * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) + * + * Dec 9, 2019 + */ +public class PublishOnZenodoEvent extends GwtEvent{ + + public static Type TYPE = new Type(); + private String uuidItem; + + /** + * Instantiates a new insert metadata event. + * + * @param uuidItem the uuid item + */ + public PublishOnZenodoEvent(String uuidItem) { + this.uuidItem = uuidItem; + } + + /** + * Gets the uuid item. + * + * @return the uuid item + */ + public String getUuidItem() { + return uuidItem; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + */ + @Override + protected void dispatch(PublishOnZenodoEventHandler handler) { + handler.onPublishOnZenodo(this); + } + + +} diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/PublishOnZenodoEventHandler.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/PublishOnZenodoEventHandler.java new file mode 100644 index 0000000..99f9918 --- /dev/null +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/PublishOnZenodoEventHandler.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event; + +import com.google.gwt.event.shared.EventHandler; + + +/** + * The Interface PublishOnZenodoEventHandler. + * + * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) + * + * Dec 9, 2019 + */ +public interface PublishOnZenodoEventHandler extends EventHandler { + + void onPublishOnZenodo(PublishOnZenodoEvent publishOnZenodoEvent); +} diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanGroupsPanel.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanGroupsPanel.java index 0ed5c5c..c120caf 100644 --- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanGroupsPanel.java +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanGroupsPanel.java @@ -94,7 +94,7 @@ public class CkanGroupsPanel extends VerticalPanel{ role.setType(ButtonType.LINK); role.setText("as " + org.getRole().toString().toLowerCase()); role.addStyleName("button-as-role-style"); - role.getElement().getStyle().setProperty("pointer-events", "none"); + role.getElement().getStyle().setProperty("pointerEvents", "none"); line.add(role); ListItem item = new ListItem(line); list.add(item); 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 c138746..6021b60 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 @@ -5,6 +5,7 @@ package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view; 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; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShareLinkEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowDatasetsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowGroupsEvent; @@ -67,6 +68,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ // other stuff 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 manageProduct = new Button("Manage Item"); @@ -96,6 +98,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ statistics.setType(ButtonType.LINK); shareLink.setType(ButtonType.LINK); + uploadToZenodo.setType(ButtonType.LINK); insertMeta.setType(ButtonType.LINK); editMeta.setType(ButtonType.LINK); manageProduct.setType(ButtonType.PRIMARY); @@ -108,6 +111,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ items.setIcon(IconType.SITEMAP); types.setIcon(IconType.FILE_TEXT); shareLink.setIcon(IconType.SHARE); + uploadToZenodo.setIcon(IconType.CIRCLE_ARROW_UP); myDatasets.setIcon(IconType.SITEMAP); myOrganizations.setIcon(IconType.BUILDING); myGroups.setIcon(IconType.GROUP); @@ -118,6 +122,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ // hide edit and insert shareLink.setEnabled(false); + uploadToZenodo.setEnabled(false); editMeta.setVisible(false); insertMeta.setVisible(false); manageProduct.setVisible(false); @@ -144,6 +149,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ separatorAdminButtons.setVisible(true); nav.add(separatorAdminButtons); nav.add(shareLink); + nav.add(uploadToZenodo); nav.add(insertMeta); nav.add(editMeta); nav.add(manageProduct); @@ -288,6 +294,15 @@ public class CkanMetadataManagementPanel extends FlowPanel{ } }); + + uploadToZenodo.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + + eventBus.fireEvent(new PublishOnZenodoEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier())); + } + }); } /** @@ -339,6 +354,16 @@ public class CkanMetadataManagementPanel extends FlowPanel{ shareLink.setEnabled(value); } + /** + * Enable publish on zenodo button. + * + * @param value the value + */ + public void enablePublishOnZenodoButton(boolean value){ + uploadToZenodo.setEnabled(value); + } + + /** * Show only home/statistics buttons. */ @@ -347,6 +372,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ separatorMyInfo.setVisible(false); separatorAdminButtons.setVisible(false); shareLink.setVisible(false); + uploadToZenodo.setVisible(false); insertMeta.setVisible(false); editMeta.setVisible(false); myDatasets.setVisible(false); diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanOrganizationsPanel.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanOrganizationsPanel.java index be30281..5ea3284 100644 --- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanOrganizationsPanel.java +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanOrganizationsPanel.java @@ -94,7 +94,7 @@ public class CkanOrganizationsPanel extends VerticalPanel{ role.setType(ButtonType.LINK); role.setText("as Catalogue-" + org.getRole().toString().toLowerCase()); role.addStyleName("button-as-role-style"); - role.getElement().getStyle().setProperty("pointer-events", "none"); + role.getElement().getStyle().setProperty("pointerEvents", "none"); line.add(role); ListItem item = new ListItem(line); list.add(item); 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 8f8ea39..794e2b8 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 @@ -441,6 +441,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate { if(!isProductKeyMissing){ latestSelectedProductIdentifier = productId.toString(); managementPanel.enableShareItemButton(productId != null && !productId.isEmpty()); + managementPanel.enablePublishOnZenodoButton(productId != null && !productId.isEmpty()); managementPanel.enableManageProductButton(productId != null && !productId.isEmpty() && isManageProductToShow); } } else { 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 62aa0be..233e050 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 @@ -15,7 +15,6 @@ import org.apache.commons.codec.binary.Base64; import org.gcube.common.authorization.client.exceptions.ObjectNotFound; import org.gcube.common.authorization.library.provider.UserInfo; import org.gcube.common.portal.PortalContext; -import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.scope.impl.ScopeBean; import org.gcube.common.scope.impl.ScopeBean.Type; import org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogue; @@ -543,9 +542,12 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem try{ if(!SessionUtil.isIntoPortal()){ - enabled = true; - logger.warn("Enabling View per VRE in DEV mode"); - return "/organization_vre/" + scopePerCurrentUrl.substring(scopePerCurrentUrl.lastIndexOf("/")+1,scopePerCurrentUrl.length()).toLowerCase(); //is the VRE name + enabled = false; + logger.warn("Enabling View per VRE in DEV mode? "+enabled); + if(enabled) + return "/organization_vre/" + scopePerCurrentUrl.substring(scopePerCurrentUrl.lastIndexOf("/")+1,scopePerCurrentUrl.length()).toLowerCase(); //is the VRE name + + return null; } GroupManager gm = new LiferayGroupManager(); 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 800e31e..cda82dd 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 @@ -25,10 +25,13 @@ + + + + - + diff --git a/src/main/webapp/WEB-INF/jsp/GCubeCkanDataCatalogPortlet_view.jsp b/src/main/webapp/WEB-INF/jsp/GCubeCkanDataCatalogPortlet_view.jsp index bc03c11..9c144e8 100644 --- a/src/main/webapp/WEB-INF/jsp/GCubeCkanDataCatalogPortlet_view.jsp +++ b/src/main/webapp/WEB-INF/jsp/GCubeCkanDataCatalogPortlet_view.jsp @@ -26,8 +26,8 @@ - + +<%-- src='<%=request.getContextPath()%>/js/jquery.min.js'> --%> diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 24ff74a..f46f0c0 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -1,5 +1,6 @@ - @@ -34,10 +35,10 @@ - - - - + + + + ckanpublisherservices @@ -54,6 +55,17 @@ org.gcube.portlets_widgets.catalogue_sharing_widget.server.ShareServicesImpl + + + ckanToZenodoServlet + org.gcube.portlets.widgets.ckan2zenodopublisher.server.CkanToZenodoPublisherServiceImpl + + + + ckanToZenodoServlet + /gCubeCkanDataCatalog/ckantozenodo + + shareservices /gCubeCkanDataCatalog/shareservices @@ -79,10 +91,10 @@ - - - - + + + +