diff --git a/.classpath b/.classpath
index e0384ed..7797d4a 100644
--- a/.classpath
+++ b/.classpath
@@ -1,11 +1,22 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -13,28 +24,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
index 6be4bd1..28eef9c 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.0.0-SNAPSHOT
->>>>>>> refs/heads/task_20699
+lastWarOutDir=/home/francescomangiacrapa/git/gcube-ckan-datacatalog/target/gcube-ckan-datacatalog-2.1.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 19dcf7d..6b147b2 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,37 +1,119 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5385981..2a9334f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,12 @@ 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.1.0-SNAPSHOT] - 2021-06-15
+
+#### Enhancements
+
+[#20650] Data Catalogue: integrate the Content Moderator System
+
## [v2.0.1] - 2021-05-04
#### Enhancements
diff --git a/pom.xml b/pom.xml
index 71912c7..e41038e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
org.gcube.portlets.gcubeckan
gcube-ckan-datacatalog
war
- 2.0.1
+ 2.1.0-SNAPSHOT
gCube CKAN Data Catalog
The gCube CKAN Data Catalog portlet
@@ -64,12 +64,31 @@
+
+
+ xml-apis
+ xml-apis
+ 1.4.01
+ provided
+
com.google.gwt
gwt-user
- provided
-
${gwtVersion}
+ provided
+
+
+
+ com.google.gwt
+ gwt-dev
+ ${gwtVersion}
+ provided
+
+
+ com.google.gwt
+ gwt-servlet
+ ${gwtVersion}
+ provided
com.github.gwtbootstrap
@@ -101,6 +120,11 @@
[1.0.0, 2.0.0-SNAPSHOT)
+
+ org.gcube.portlets.widgets
+ ckan-content-moderator-widget
+ [0.0.1, 1.0.0-SNAPSHOT)
+
org.gcube.portlets.widgets
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 db046d2..dde449b 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
@@ -14,24 +14,32 @@
-
+
-
+
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
+
+
+
+
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 4eef43e..fab7b95 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
@@ -4,6 +4,9 @@ package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client;
import org.gcube.datacatalogue.grsf_manage_widget.client.events.HideManagementPanelEvent;
import org.gcube.datacatalogue.grsf_manage_widget.client.events.HideManagementPanelEventHandler;
import org.gcube.datacatalogue.grsf_manage_widget.client.view.ManageProductWidget;
+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.EditMetadataEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetadataEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEvent;
@@ -32,6 +35,8 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDa
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.ckancontentmoderator.client.CkanContentModeratorWidget;
+import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.form.CreateDatasetForm;
import org.gcube.portlets_widgets.catalogue_sharing_widget.client.ShareCatalogueWidget;
@@ -39,6 +44,8 @@ import com.github.gwtbootstrap.client.ui.Modal;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.shared.HandlerManager;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
@@ -232,6 +239,39 @@ public class CkanEventHandlerManager {
}
});
+
+ eventBus.addHandler(ClickedCMSManageProductButtonEvent.TYPE, new ClickedCMSManageProductButtonEventHandler() {
+
+ @Override
+ public void onClickedManageProduct(ClickedCMSManageProductButtonEvent showManageProductWidgetEvent) {
+ final CkanContentModeratorWidget cms = new CkanContentModeratorWidget(DISPLAY_FIELD.values(), DISPLAY_FIELD.TITLE);
+ Modal modal = new Modal(true);
+ try {
+
+
+ cms.isContentModeratorEnabled(new Command() {
+
+ @Override
+ public void execute() {
+ try {
+ cms.loadItemsForStatus(ItemStatus.PENDING);
+ } catch (Exception e) {
+ Window.alert(e.getMessage());
+ return;
+ }
+ }
+ });
+
+ } catch (Exception e) {
+ Window.alert(e.getMessage());
+ return;
+ }
+ modal.add(cms.getPanel());
+ modal.show();
+
+ }
+ });
+
eventBus.addHandler(ShowRevertOperationWidgetEvent.TYPE, new ShowRevertOperationWidgetEventHandler() {
@Override
public void onShowRevertOperationWidgetEvent(
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogService.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogService.java
index e3790ab..8f84ac9 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogService.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogService.java
@@ -5,6 +5,7 @@ import java.util.List;
import org.gcube.datacatalogue.utillibrary.shared.RolesCkanGroupOrOrg;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.BeanUserInOrgGroupRole;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
+import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.ManageProductResponse;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@@ -73,7 +74,7 @@ public interface GcubeCkanDataCatalogService extends RemoteService {
* Check if the manage product needs to be shown (e.g., for GRSF products)
* @return
*/
- boolean isManageProductEnabled();
+ ManageProductResponse isManageProductEnabled();
/**
* Check if the view per VRE is enabled, so the management panels but publish/share link must be removed.
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogServiceAsync.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogServiceAsync.java
index 9731480..08e74b7 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogServiceAsync.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogServiceAsync.java
@@ -8,11 +8,13 @@ import java.util.List;
import org.gcube.datacatalogue.utillibrary.shared.RolesCkanGroupOrOrg;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.BeanUserInOrgGroupRole;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
+import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.ManageProductResponse;
import com.google.gwt.user.client.rpc.AsyncCallback;
+// TODO: Auto-generated Javadoc
/**
* The Interface GcubeCkanDataCatalogServiceAsync.
*
@@ -67,12 +69,13 @@ public interface GcubeCkanDataCatalogServiceAsync {
void getCkanGroupsNamesAndUrlsForUser(
AsyncCallback> callback);
+
/**
- * Check if the manage product needs to be shown (e.g., for GRSF products)
+ * Checks if is manage product enabled.
*
* @param callback the callback
*/
- void isManageProductEnabled(AsyncCallback callback);
+ void isManageProductEnabled(AsyncCallback callback);
/**
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ClickedCMSManageProductButtonEvent.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ClickedCMSManageProductButtonEvent.java
new file mode 100644
index 0000000..b6491c3
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ClickedCMSManageProductButtonEvent.java
@@ -0,0 +1,43 @@
+package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event;
+
+import com.google.gwt.event.shared.GwtEvent;
+
+
+/**
+ * The Class ClickedCMSManageProductButtonEvent.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
+ *
+ * Jun 15, 2021
+ */
+public class ClickedCMSManageProductButtonEvent extends GwtEvent {
+
+ public static Type TYPE = new Type();
+
+ /**
+ * Instantiates a new clicked CMS manage product button event.
+ */
+ public ClickedCMSManageProductButtonEvent() {
+ }
+
+ /**
+ * Gets the associated type.
+ *
+ * @return the associated type
+ */
+ @Override
+ public com.google.gwt.event.shared.GwtEvent.Type getAssociatedType() {
+ return TYPE;
+ }
+
+ /**
+ * Dispatch.
+ *
+ * @param handler the handler
+ */
+ @Override
+ protected void dispatch(ClickedCMSManageProductButtonEventHandler handler) {
+ handler.onClickedManageProduct(this);
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ClickedCMSManageProductButtonEventHandler.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ClickedCMSManageProductButtonEventHandler.java
new file mode 100644
index 0000000..0283606
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ClickedCMSManageProductButtonEventHandler.java
@@ -0,0 +1,21 @@
+package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event;
+
+import com.google.gwt.event.shared.EventHandler;
+
+/**
+ * The Interface ClickedCMSManageProductButtonEventHandler.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
+ *
+ * Jun 15, 2021
+ */
+public interface ClickedCMSManageProductButtonEventHandler extends EventHandler {
+
+ /**
+ * On clicked manage product.
+ *
+ * @param showManageProductWidgetEvent the show manage product widget event
+ */
+ void onClickedManageProduct(ClickedCMSManageProductButtonEvent showManageProductWidgetEvent);
+
+}
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 6021b60..9dcc5bf 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
@@ -3,6 +3,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.EditMetadataEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.PublishOnZenodoEvent;
@@ -29,24 +30,26 @@ import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.InlineHTML;
-
/**
* The Class CkanMetadataManagementPanel.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * @author Costantino Perciante costantino.perciante@isti.cnr.it
- * Jun 9, 2016
+ * @author Costantino Perciante costantino.perciante@isti.cnr.it Jun 9, 2016
+ *
*/
-public class CkanMetadataManagementPanel extends FlowPanel{
+public class CkanMetadataManagementPanel extends FlowPanel {
/**
*
*/
private static final String MY_PREFIX = "My ";
- private static final String MANAGE_ITEM_TOOLTIP = "By pushing on this button, you will be able to manage the item you are viewing."
+ private static final String MANAGE_GRSF_ITEM_TOOLTIP = "By pushing on this button, you will be able to manage the item you are viewing."
+ " Manageable items are the GRSF ones.";
+ 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();
// generic
@@ -71,7 +74,8 @@ 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("Edit Item");
- private Button manageProduct = new Button("Manage Item");
+ private Button manageGRSFProduct = new Button("Manage GRSF Item");
+ private Button manageCMS = new Button("Manage Items");
private HandlerManager eventBus;
/**
@@ -79,10 +83,10 @@ public class CkanMetadataManagementPanel extends FlowPanel{
*
* @param eventBus the event bus
*/
- public CkanMetadataManagementPanel(HandlerManager eventBus){
+ public CkanMetadataManagementPanel(HandlerManager eventBus) {
this.eventBus = eventBus;
- // this.getElement().getStyle().setPaddingTop(H_OFFSET, Unit.PX);
- // this.getElement().getStyle().setPaddingBottom(H_OFFSET, Unit.PX);
+ // this.getElement().getStyle().setPaddingTop(H_OFFSET, Unit.PX);
+ // this.getElement().getStyle().setPaddingBottom(H_OFFSET, Unit.PX);
// set link style buttons
home.setType(ButtonType.LINK);
@@ -101,8 +105,11 @@ public class CkanMetadataManagementPanel extends FlowPanel{
uploadToZenodo.setType(ButtonType.LINK);
insertMeta.setType(ButtonType.LINK);
editMeta.setType(ButtonType.LINK);
- manageProduct.setType(ButtonType.PRIMARY);
- manageProduct.getElement().getStyle().setFloat(Float.RIGHT);
+ manageGRSFProduct.setType(ButtonType.PRIMARY);
+ manageGRSFProduct.getElement().getStyle().setFloat(Float.RIGHT);
+
+ manageCMS.setType(ButtonType.PRIMARY);
+ manageCMS.getElement().getStyle().setFloat(Float.RIGHT);
// set icons
home.setIcon(IconType.HOME);
@@ -118,19 +125,26 @@ public class CkanMetadataManagementPanel extends FlowPanel{
insertMeta.setIcon(IconType.FILE);
editMeta.setIcon(IconType.EDIT_SIGN);
statistics.setIcon(IconType.BAR_CHART);
- manageProduct.setIcon(IconType.CHECK_SIGN);
+ manageGRSFProduct.setIcon(IconType.CHECK_SIGN);
+ manageCMS.setIcon(IconType.CHECK_SIGN);
// hide edit and insert
shareLink.setEnabled(false);
uploadToZenodo.setEnabled(false);
editMeta.setVisible(false);
insertMeta.setVisible(false);
- manageProduct.setVisible(false);
- manageProduct.setEnabled(false);
+ manageGRSFProduct.setVisible(false);
+ manageGRSFProduct.setEnabled(false);
+ manageCMS.setVisible(false);
+ manageCMS.setEnabled(false);
- // manage item info
- manageProduct.setTitle(MANAGE_ITEM_TOOLTIP);
- manageProduct.getElement().getStyle().setFontWeight(FontWeight.BOLD);
+ // manage GRSF item info
+ manageGRSFProduct.setTitle(MANAGE_GRSF_ITEM_TOOLTIP);
+ manageGRSFProduct.getElement().getStyle().setFontWeight(FontWeight.BOLD);
+
+ // manage CMS item info
+ manageCMS.setTitle(MANAGE_CMS_ITEMS_TOOLTIP);
+ manageCMS.getElement().getStyle().setFontWeight(FontWeight.BOLD);
// add to navigation bar
nav.add(home);
@@ -152,7 +166,8 @@ public class CkanMetadataManagementPanel extends FlowPanel{
nav.add(uploadToZenodo);
nav.add(insertMeta);
nav.add(editMeta);
- nav.add(manageProduct);
+ nav.add(manageGRSFProduct);
+ nav.add(manageCMS);
nav.setClose(false);
nav.setType(AlertType.INFO);
nav.getElement().getStyle().setMarginBottom(0, Unit.PX);
@@ -254,7 +269,6 @@ public class CkanMetadataManagementPanel extends FlowPanel{
}
});
-
myGroups.addClickHandler(new ClickHandler() {
@Override
@@ -275,12 +289,23 @@ public class CkanMetadataManagementPanel extends FlowPanel{
}
});
- manageProduct.addClickHandler(new ClickHandler() {
+ manageGRSFProduct.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
- eventBus.fireEvent(new ShowManageProductWidgetEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier()));
+ eventBus.fireEvent(new ShowManageProductWidgetEvent(
+ GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier()));
+
+ }
+ });
+
+ manageCMS.addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(ClickEvent event) {
+
+ eventBus.fireEvent(new ClickedCMSManageProductButtonEvent());
}
});
@@ -294,13 +319,14 @@ public class CkanMetadataManagementPanel extends FlowPanel{
}
});
-
+
uploadToZenodo.addClickHandler(new ClickHandler() {
-
+
@Override
public void onClick(ClickEvent event) {
-
- eventBus.fireEvent(new PublishOnZenodoEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier()));
+
+ eventBus.fireEvent(
+ new PublishOnZenodoEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier()));
}
});
}
@@ -310,30 +336,31 @@ public class CkanMetadataManagementPanel extends FlowPanel{
*
* @return the current height
*/
- public int getCurrentHeight(){
+ public int getCurrentHeight() {
return this.getOffsetHeight();
}
/**
- * Those buttons can be only visible when the logged user has role edit/admin/sysadmin.
+ * Those buttons can be only visible when the logged user has role
+ * edit/admin/sysadmin.
*
* @param show the show
*/
- public void showInsertAndEditProductButtons(boolean show){
+ public void showInsertAndEditProductButtons(boolean show) {
- //editMeta.setVisible(show); TODO
- //separatorAdminButtons.setVisible(show);
+ // editMeta.setVisible(show); TODO
+ // separatorAdminButtons.setVisible(show);
insertMeta.setVisible(show);
}
/**
- * Button to manage the product.. for example in grsf case
+ * Button to manage the GRSF product.. for example in grsf case
*
* @param value true or false
*/
- public void showManageProductButton(boolean value){
- manageProduct.setVisible(value);
+ public void showManageGRSFProductButton(boolean value) {
+ manageGRSFProduct.setVisible(value);
}
/**
@@ -341,8 +368,26 @@ public class CkanMetadataManagementPanel extends FlowPanel{
*
* @param value the value
*/
- public void enableManageProductButton(boolean value){
- manageProduct.setEnabled(value);
+ public void enableManageGRSFProductButton(boolean value) {
+ manageGRSFProduct.setEnabled(value);
+ }
+
+ /**
+ * Button to manage the CMS products..
+ *
+ * @param value true or false
+ */
+ public void showManageCMSProductsButton(boolean value) {
+ manageCMS.setVisible(value);
+ }
+
+ /**
+ * Enable manage CMS products button.
+ *
+ * @param value the value
+ */
+ public void enableManageCMSProductsButton(boolean value) {
+ manageCMS.setEnabled(value);
}
/**
@@ -350,7 +395,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{
*
* @param value the value
*/
- public void enableShareItemButton(boolean value){
+ public void enableShareItemButton(boolean value) {
shareLink.setEnabled(value);
}
@@ -359,15 +404,14 @@ public class CkanMetadataManagementPanel extends FlowPanel{
*
* @param value the value
*/
- public void enablePublishOnZenodoButton(boolean value){
+ public void enablePublishOnZenodoButton(boolean value) {
uploadToZenodo.setEnabled(value);
}
-
/**
* Show only home/statistics buttons.
*/
- public void doNotShowUserRelatedInfo(){
+ public void doNotShowUserRelatedInfo() {
separatorMyInfo.setVisible(false);
separatorAdminButtons.setVisible(false);
@@ -378,7 +422,8 @@ public class CkanMetadataManagementPanel extends FlowPanel{
myDatasets.setVisible(false);
myOrganizations.setVisible(false);
myGroups.setVisible(false);
- manageProduct.setVisible(false);
+ manageGRSFProduct.setVisible(false);
+ manageCMS.setVisible(false);
}
@@ -398,67 +443,65 @@ public class CkanMetadataManagementPanel extends FlowPanel{
myOrganizations.setVisible(false);
myGroups.setVisible(false);
statistics.setVisible(false);
- manageProduct.setVisible(false);
+ manageGRSFProduct.setVisible(false);
+ manageCMS.setVisible(false);
}
-
/**
* Customize label according translate.
*
- * @param labelName the label name
+ * @param labelName the label name
* @param translateValue the translate value
*/
- public void customizeLabelAccordingTranslate(String labelName, String translateValue){
+ public void customizeLabelAccordingTranslate(String labelName, String translateValue) {
-
- if(labelName==null || labelName.isEmpty() || translateValue==null || translateValue.isEmpty())
+ if (labelName == null || labelName.isEmpty() || translateValue == null || translateValue.isEmpty())
return;
// GWT.log("labelName "+labelName);
// GWT.log("translateValue "+translateValue);
// GWT.log("organizations "+organizations.getText());
- if(labelName.compareToIgnoreCase(organizations.getText().trim())==0){
+ if (labelName.compareToIgnoreCase(organizations.getText().trim()) == 0) {
organizations.setText(translateValue);
- //return;
- }else if(labelName.compareToIgnoreCase(groups.getText().trim())==0){
+ // return;
+ } else if (labelName.compareToIgnoreCase(groups.getText().trim()) == 0) {
groups.setText(translateValue);
- //return;
- }else if(labelName.compareToIgnoreCase(items.getText().trim())==0){
+ // return;
+ } else if (labelName.compareToIgnoreCase(items.getText().trim()) == 0) {
items.setText(translateValue);
- //return;
- }else if(labelName.compareToIgnoreCase(types.getText().trim())==0){
+ // return;
+ } else if (labelName.compareToIgnoreCase(types.getText().trim()) == 0) {
types.setText(translateValue);
- //return;
+ // return;
}
- String mylabelName = MY_PREFIX+labelName;
+ String mylabelName = MY_PREFIX + labelName;
// GWT.log("mylabelName "+mylabelName);
// GWT.log("myDatasets.getText() "+myDatasets.getText());
- if(mylabelName.compareToIgnoreCase(myDatasets.getText().trim())==0){
- myDatasets.setText(MY_PREFIX+translateValue);
- //return;
- }else if(mylabelName.compareToIgnoreCase(myOrganizations.getText().trim())==0){
- myOrganizations.setText(MY_PREFIX+translateValue);
- //return;
- }else if(mylabelName.compareToIgnoreCase(myGroups.getText().trim())==0){
- myGroups.setText(MY_PREFIX+translateValue);
- //return;
+ if (mylabelName.compareToIgnoreCase(myDatasets.getText().trim()) == 0) {
+ myDatasets.setText(MY_PREFIX + translateValue);
+ // return;
+ } else if (mylabelName.compareToIgnoreCase(myOrganizations.getText().trim()) == 0) {
+ myOrganizations.setText(MY_PREFIX + translateValue);
+ // return;
+ } else if (mylabelName.compareToIgnoreCase(myGroups.getText().trim()) == 0) {
+ myGroups.setText(MY_PREFIX + translateValue);
+ // return;
}
}
-
/**
* Capitalize.
*
* @param stringValue the translate value
* @return the string
*/
- public static String capitalize(String stringValue){
- return stringValue.substring(0,1).toUpperCase()+stringValue.substring(1, stringValue.length());
+ public static String capitalize(String stringValue) {
+ return stringValue.substring(0, 1).toUpperCase() + stringValue.substring(1, stringValue.length());
}
}
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 ea23787..9d5a36c 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
@@ -14,6 +14,7 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowRevert
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.resource.CkanPortletResources;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.BeanUserInOrgGroupRole;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
+import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.ManageProductResponse;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.ResizeEvent;
@@ -49,7 +50,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
private RootPanel rootPanel;
private HandlerManager eventBus;
private CkanConnectorAccessPoint ckanAccessPoint;
- private boolean isManageProductToShow = false;
+ private ManageProductResponse manageProductResponse = null;
private String viewPerVREPath = null;
private static String latestSelectedProductIdentifier;
public static final int IFRAME_FIX_HEIGHT = 1800;
@@ -58,18 +59,15 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
/**
* Instantiates a new g cube ckan data catalog panel.
*
- * @param rootPanel
- * the root panel
- * @param eventManager
- * the event manager
+ * @param rootPanel the root panel
+ * @param eventManager the event manager
*/
- public GCubeCkanDataCatalogPanel(
- RootPanel rootPanel, HandlerManager eventManager) {
+ public GCubeCkanDataCatalogPanel(RootPanel rootPanel, HandlerManager eventManager) {
this.rootPanel = rootPanel;
this.eventBus = eventManager;
- //postMessage(obj.toString(), ckanFramePanel.getFrame());
+ // postMessage(obj.toString(), ckanFramePanel.getFrame());
// send message about gateway url
obj = new JSONObject();
String landingPageVREs = Window.Location.getProtocol() + "//" + Window.Location.getHostName() + "/explore";
@@ -86,7 +84,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
// decode parameters (they could have been encoded)
final Map paramsMap = new HashMap(2);
String queryParameters = Window.Location.getQueryString();
- if(queryParameters != null && !queryParameters.isEmpty()){
+ if (queryParameters != null && !queryParameters.isEmpty()) {
String decoded = URL.decodeQueryString(queryParameters); // equals should be encoded too (%3D)
String[] params = decoded.substring(decoded.indexOf("?") + 1).split("&");
for (int i = 0; i < params.length; i++) {
@@ -96,19 +94,18 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
GWT.log("Extracted parameters are " + paramsMap);
}
- String pathParameter = paramsMap.get(GCubeCkanDataCatalog.GET_PATH_PARAMETER); //Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER);
+ String pathParameter = paramsMap.get(GCubeCkanDataCatalog.GET_PATH_PARAMETER); // Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER);
String queryParameter = paramsMap.get(GCubeCkanDataCatalog.GET_QUERY_PARAMETER);// Window.Location.getParameter(GCubeCkanDataCatalog.GET_QUERY_PARAMETER);
String browserLocationURL = getBrowserLocationURL();
-
- GCubeCkanDataCatalog.service.getCKanConnector(browserLocationURL,
- pathParameter, queryParameter,
+
+ GCubeCkanDataCatalog.service.getCKanConnector(browserLocationURL, pathParameter, queryParameter,
new AsyncCallback() {
@Override
public void onSuccess(CkanConnectorAccessPoint ckan) {
- if(ckan.isOutsideLoginOnPortal()){
+ if (ckan.isOutsideLoginOnPortal()) {
// the portlet is outside the portal and no user is logged
// in show only home and statistics
@@ -123,36 +120,37 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
ckanAccessPoint = ckan;
instanceCkanFrame(ckan.buildURI());
GCubeCkanDataCatalogPanel.this.rootPanel.remove(loading);
-
+
String browserLocationURL = getBrowserLocationURL();
-
- // check if view per organisation is enabled
- //and performing some actions in this case (e.g. removed the management buttons, etc.)
- GCubeCkanDataCatalog.service.isViewPerVREEnabled(browserLocationURL, new AsyncCallback() {
- @Override
- public void onSuccess(String result) {
- GWT.log("isViewPerVREEnabled?: "+result);
- if(result != null && !result.isEmpty()){
- // hide all management buttons
- managementPanel.removeGenericManagementButtons();
- // set real relative path
- ckanAccessPoint.addPathInfo(result);
- // save this information
- viewPerVREPath = result;
- }
- }
+ // check if view per organisation is enabled
+ // and performing some actions in this case (e.g. removed the management
+ // buttons, etc.)
+ GCubeCkanDataCatalog.service.isViewPerVREEnabled(browserLocationURL,
+ new AsyncCallback() {
- @Override
- public void onFailure(Throwable caught) {
+ @Override
+ public void onSuccess(String result) {
+ GWT.log("isViewPerVREEnabled?: " + result);
+ if (result != null && !result.isEmpty()) {
+ // hide all management buttons
+ managementPanel.removeGenericManagementButtons();
+ // set real relative path
+ ckanAccessPoint.addPathInfo(result);
+ // save this information
+ viewPerVREPath = result;
+ }
+ }
- // ?
+ @Override
+ public void onFailure(Throwable caught) {
- }
- });
+ // ?
+ }
+ });
- if(!ckan.isOutsideLoginOnPortal()){
+ if (!ckan.isOutsideLoginOnPortal()) {
// MANAGE CKAN MANAGEMENT PANEL ACCORDING TO MY ROLE
GCubeCkanDataCatalog.service.getMyRole(new AsyncCallback() {
@@ -183,37 +181,39 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
});
// retrieve organizations
- GCubeCkanDataCatalog.service.getCkanOrganizationsNamesAndUrlsForUser(new AsyncCallback>() {
+ GCubeCkanDataCatalog.service.getCkanOrganizationsNamesAndUrlsForUser(
+ new AsyncCallback>() {
- @Override
- public void onSuccess(List result) {
- ckanOrganizationsPanel.setOrganizations(result);
- }
+ @Override
+ public void onSuccess(List result) {
+ ckanOrganizationsPanel.setOrganizations(result);
+ }
- @Override
- public void onFailure(Throwable caught) {
- // an error message will be displayed
- ckanOrganizationsPanel.setOrganizations(null);
- }
- });
+ @Override
+ public void onFailure(Throwable caught) {
+ // an error message will be displayed
+ ckanOrganizationsPanel.setOrganizations(null);
+ }
+ });
// retrieve groups
- GCubeCkanDataCatalog.service.getCkanGroupsNamesAndUrlsForUser(new AsyncCallback>() {
+ GCubeCkanDataCatalog.service.getCkanGroupsNamesAndUrlsForUser(
+ new AsyncCallback>() {
- @Override
- public void onSuccess(List result) {
- ckanGroupsPanel.setGroups(result);
- }
+ @Override
+ public void onSuccess(List result) {
+ ckanGroupsPanel.setGroups(result);
+ }
- @Override
- public void onFailure(Throwable caught) {
- ckanGroupsPanel.setGroups(null);
- }
- });
+ @Override
+ public void onFailure(Throwable caught) {
+ ckanGroupsPanel.setGroups(null);
+ }
+ });
// check if the url encodes a revert operation to be performed
- if(paramsMap.containsKey(GCubeCkanDataCatalog.REVERT_QUERY_PARAM) &&
- paramsMap.get(GCubeCkanDataCatalog.REVERT_QUERY_PARAM).equals("true")){
+ if (paramsMap.containsKey(GCubeCkanDataCatalog.REVERT_QUERY_PARAM)
+ && paramsMap.get(GCubeCkanDataCatalog.REVERT_QUERY_PARAM).equals("true")) {
eventBus.fireEvent(new ShowRevertOperationWidgetEvent(Window.Location.getHref()));
@@ -222,21 +222,29 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
/**
* Just check if it is enabled.. then we need to listen for dom events coming
*/
- GCubeCkanDataCatalog.service.isManageProductEnabled(new AsyncCallback() {
+ GCubeCkanDataCatalog.service
+ .isManageProductEnabled(new AsyncCallback() {
- @Override
- public void onSuccess(Boolean result) {
- isManageProductToShow = result;
- managementPanel.showManageProductButton(isManageProductToShow);
+ @Override
+ public void onSuccess(ManageProductResponse result) {
+ manageProductResponse = result;
+ if (manageProductResponse != null) {
+
+ if(manageProductResponse.isGRSFManageEnabled()) {
+ managementPanel.showManageCMSProductsButton(
+ manageProductResponse.isManageEnabled());
+ }else if(manageProductResponse.isManageEnabled()) {
+ managementPanel.showManageCMSProductsButton(manageProductResponse.isManageEnabled());
+ managementPanel.enableManageCMSProductsButton(manageProductResponse.isManageEnabled());
+ }
+ }
+ }
- }
-
- @Override
- public void onFailure(Throwable caught) {
- isManageProductToShow = false;
- managementPanel.showManageProductButton(isManageProductToShow);
- }
- });
+ @Override
+ public void onFailure(Throwable caught) {
+ managementPanel.showManageGRSFProductButton(false);
+ }
+ });
}
@@ -250,14 +258,12 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
}
});
-
Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
- GWT.log("onWindowResized width: " + event.getWidth() +
- " height: " + event.getHeight());
+ GWT.log("onWindowResized width: " + event.getWidth() + " height: " + event.getHeight());
updateSize();
}
});
@@ -270,28 +276,27 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
listenForPostMessage();
}
-
-
+
/**
* Gets the browser location URL.
*
* @return the browser location URL
*/
public String getBrowserLocationURL() {
-
+
String browserLocationURL = null;
-
+
try {
browserLocationURL = Window.Location.getHref();
- }catch (Exception e) {
+ } catch (Exception e) {
// silent
}
-
- GWT.log("Returning browserLocationURL: "+browserLocationURL);
+
+ GWT.log("Returning browserLocationURL: " + browserLocationURL);
return browserLocationURL;
}
- public static String getLatestSelectedProductIdentifier(){
+ public static String getLatestSelectedProductIdentifier() {
return latestSelectedProductIdentifier;
}
@@ -310,8 +315,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
/**
* Sets the top panel visible.
*
- * @param bool
- * the new top panel visible
+ * @param bool the new top panel visible
*/
public void setTopPanelVisible(boolean bool) {
@@ -322,8 +326,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
/**
* show or hide edit/insert buttons according to the role.
*
- * @param show
- * the show
+ * @param show the show
*/
public void showEditInsertButtons(boolean show) {
@@ -333,8 +336,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
/**
* Instance ckan frame.
*
- * @param ckanUrlConnector
- * the ckan url connector
+ * @param ckanUrlConnector the ckan url connector
* @return the frame
*/
public Frame instanceCkanFrame(String ckanUrlConnector) {
@@ -366,16 +368,15 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
* Update window size.
*/
public void updateSize() {
- /*RootPanel workspace = rootPanel;
- int topBorder = workspace.getAbsoluteTop();
- GWT.log("top: "+topBorder);
- int footer = 30; // 85 footer is bottombar + sponsor
- int rootHeight = Window.getClientHeight() - topBorder - 5 - footer;
- int height = rootHeight - getTopPanelHeight();
- if (ckanFramePanel.getFrame() != null) {
- int newH =managementPanel != null && managementPanel.getCurrentHeight() > 0 ? managementPanel.getOffsetHeight() + height : height;
- ckanFramePanel.getFrame().setHeight(2000+"px");
- }*/
+ /*
+ * RootPanel workspace = rootPanel; int topBorder = workspace.getAbsoluteTop();
+ * GWT.log("top: "+topBorder); int footer = 30; // 85 footer is bottombar +
+ * sponsor int rootHeight = Window.getClientHeight() - topBorder - 5 - footer;
+ * int height = rootHeight - getTopPanelHeight(); if (ckanFramePanel.getFrame()
+ * != null) { int newH =managementPanel != null &&
+ * managementPanel.getCurrentHeight() > 0 ? managementPanel.getOffsetHeight() +
+ * height : height; ckanFramePanel.getFrame().setHeight(2000+"px"); }
+ */
RootPanel workspace = this.rootPanel;
int topBorder = workspace.getAbsoluteTop();
@@ -383,14 +384,17 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
int rootHeight = Window.getClientHeight() - topBorder - 5 - footer;
int height = rootHeight - getTopPanelHeight();
if (this.ckanFramePanel.getFrame() != null) {
- int newH = this.managementPanel != null &&this.managementPanel.getCurrentHeight() > 0? this.managementPanel.getOffsetHeight() + height : height;
+ int newH = this.managementPanel != null && this.managementPanel.getCurrentHeight() > 0
+ ? this.managementPanel.getOffsetHeight() + height
+ : height;
this.ckanFramePanel.getFrame().setHeight(newH + "px");
}
- // workspace.setHeight(height+"px");
+ // workspace.setHeight(height+"px");
}
/**
* Print a message
+ *
* @param string
*/
protected native void printString(String string) /*-{
@@ -401,71 +405,76 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
* Listen for post message.
*/
private final native void listenForPostMessage() /*-{
- var that = this;
- $wnd.addEventListener("message", function(msg) {
- console.log("read message...");
- that.@org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel::onPostMessage(Ljava/lang/String;Ljava/lang/String;)(msg.data, msg.origin);
- });
+ var that = this;
+ $wnd
+ .addEventListener(
+ "message",
+ function(msg) {
+ console.log("read message...");
+ that.@org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel::onPostMessage(Ljava/lang/String;Ljava/lang/String;)(msg.data, msg.origin);
+ });
}-*/;
/**
* On post message.
*
- * @param data the data
+ * @param data the data
* @param origin the origin
*/
private void onPostMessage(String data, String origin) {
- printString("Read data: "+data+", from origin: "+origin);
- printString("Ckan base url: "+ckanAccessPoint.getBaseUrl());
+ printString("Read data: " + data + ", from origin: " + origin);
+ printString("Ckan base url: " + ckanAccessPoint.getBaseUrl());
// parsing data.. it is a json bean of the type
printString("Incoming message is " + data + " from " + origin);
- if (ckanAccessPoint.getBaseUrl().indexOf(origin)>=0) {
+ if (ckanAccessPoint.getBaseUrl().indexOf(origin) >= 0) {
// The data has been sent from your site
// The data sent with postMessage is stored in event.data
String height = null;
String productId = null;
boolean isProductKeyMissing = false;
- try{
+ try {
JSONValue parsedJSON = JSONParser.parseStrict(data);
JSONObject object = parsedJSON.isObject();
GWT.log("Object is " + object);
- if(object != null){
- //Supporting Task #12286: parsing the translate values for 'dataset', 'organization' and so on
- if(object.containsKey("translate")){
+ if (object != null) {
+ // Supporting Task #12286: parsing the translate values for 'dataset',
+ // 'organization' and so on
+ if (object.containsKey("translate")) {
JSONObject theTranslate = (JSONObject) object.get("translate");
GWT.log("theTranslate is " + object);
for (String key : theTranslate.keySet()) {
- //GWT.log("theTranslate key " + key);
+ // GWT.log("theTranslate key " + key);
String value = theTranslate.get(key).isString().stringValue();
- printString("Customizing navigation link '" + key +"' with translate: "+value);
- managementPanel.customizeLabelAccordingTranslate(key,value);
+ printString("Customizing navigation link '" + key + "' with translate: " + value);
+ managementPanel.customizeLabelAccordingTranslate(key, value);
}
- }else if(object.containsKey("height")){
+ } else if (object.containsKey("height")) {
height = object.get("height").isString().stringValue();
- if(object.containsKey("product"))
+ if (object.containsKey("product"))
productId = object.get("product").isString().stringValue();
else
isProductKeyMissing = true;
}
}
- }catch(Exception e){
+ } catch (Exception e) {
GWT.log("Exception is " + e);
}
- if(height != null)
+ if (height != null)
setIFrameHeight(height.toString());
// show or hide the manage product button
- if(!isProductKeyMissing){
+ if (!isProductKeyMissing) {
latestSelectedProductIdentifier = productId.toString();
managementPanel.enableShareItemButton(productId != null && !productId.isEmpty());
managementPanel.enablePublishOnZenodoButton(productId != null && !productId.isEmpty());
- managementPanel.enableManageProductButton(productId != null && !productId.isEmpty() && isManageProductToShow);
+ managementPanel.enableManageGRSFProductButton(
+ productId != null && !productId.isEmpty() && manageProductResponse.isGRSFManageEnabled());
}
} else {
// The data hasn't been sent from your site!
@@ -475,30 +484,29 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
}
-
/**
* Sets the i frame height.
*
* @param height the new i frame height
*/
- private void setIFrameHeight(String height){
+ private void setIFrameHeight(String height) {
String parsedHeight = null;
- if(height==null || height.isEmpty())
+ if (height == null || height.isEmpty())
return;
- if(height.contains("px")){
+ if (height.contains("px")) {
parsedHeight = height;
- }else{
- try{
+ } else {
+ try {
int intH = Integer.parseInt(height);
parsedHeight = intH + " px";
- }catch(Exception e ){
+ } catch (Exception e) {
}
}
- if(parsedHeight!=null){
- GWT.log("Setting new height for ckan iFrame: "+height);
+ if (parsedHeight != null) {
+ GWT.log("Setting new height for ckan iFrame: " + height);
this.ckanFramePanel.getFrame().setHeight(height);
}
}
@@ -515,9 +523,10 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
/**
* Return the catalogue url (e.g. http://ckan-d-d4s.d4science.org:443/)
+ *
* @return
*/
- public String getCatalogueUrl(){
+ public String getCatalogueUrl() {
printString("Base url for iframe is " + ckanAccessPoint.getCatalogueBaseUrl());
return ckanAccessPoint.getCatalogueBaseUrl();
@@ -565,11 +574,12 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
/**
* Show management panel
+ *
* @param show
*/
- public void showManagementPanel(boolean show){
+ public void showManagementPanel(boolean show) {
- managementPanel.showManageProductButton(show);
+ managementPanel.showManageGRSFProductButton(show);
}
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 a9d72f4..86954bb 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
@@ -17,6 +17,7 @@ import org.gcube.common.authorization.library.provider.UserInfo;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.common.scope.impl.ScopeBean.Type;
+import org.gcube.datacatalogue.grsf_manage_widget.shared.ManageProductBean;
import org.gcube.datacatalogue.utillibrary.server.DataCatalogue;
import org.gcube.datacatalogue.utillibrary.server.DataCatalogueFactory;
import org.gcube.datacatalogue.utillibrary.server.utils.CatalogueUtilMethods;
@@ -28,6 +29,7 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.GcubeCkanDataCat
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.server.thread.UpdateItemCatalogueResource;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.BeanUserInOrgGroupRole;
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.vomanagement.usermanagement.GroupManager;
import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager;
@@ -506,22 +508,24 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
* @see org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.GcubeCkanDataCatalogService#isManageProductEnabled()
*/
@Override
- public boolean isManageProductEnabled() {
+ public ManageProductResponse isManageProductEnabled() {
logger.info("Checking if the manage product button needs to be shown or not for the current context");
String scopePerCurrentUrl = SessionUtil.getScopeFromClientUrl(getThreadLocalRequest());
DataCatalogue catalogue = getCatalogue(scopePerCurrentUrl);
if(catalogue == null){
logger.warn("There is no catalogue instance here..., returning false");
- return false;
+ return new ManageProductResponse(false, scopePerCurrentUrl);
}
else{
try{
boolean toReturn = catalogue.isManageProductEnabled();
- logger.info("Will manage product be enabled for this user? " + Boolean.toString(toReturn));
- return toReturn;
+ logger.info("isManageProductEnabled: "+toReturn);
+ ManageProductResponse mpr = new ManageProductResponse(toReturn, scopePerCurrentUrl);
+ logger.info("Will manage product be enabled for this user? " + mpr);
+ return mpr;
}catch(Exception e){
logger.error("Unable to determine if the manage product needs to be shown or not", e);
- return false;
+ return new ManageProductResponse(false, scopePerCurrentUrl);
}
}
}
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/shared/ManageProductResponse.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/shared/ManageProductResponse.java
new file mode 100644
index 0000000..cc2f1a5
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/shared/ManageProductResponse.java
@@ -0,0 +1,109 @@
+package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared;
+
+import java.io.Serializable;
+
+/**
+ * The Class ManageProductResponse.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
+ *
+ * Jun 15, 2021
+ */
+public class ManageProductResponse implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private boolean isManageEnabled;
+ private String scope;
+
+ /**
+ * Instantiates a new manage product response.
+ */
+ public ManageProductResponse() {
+
+ }
+
+ /**
+ * Instantiates a new manage product response.
+ *
+ * @param isManageEnabled the is manage enabled
+ * @param scope the scope
+ */
+ public ManageProductResponse(boolean isManageEnabled, String scope) {
+ this.isManageEnabled = isManageEnabled;
+ this.scope = scope;
+ }
+
+ /**
+ * Checks if is manage enabled.
+ *
+ * @return true, if is manage enabled
+ */
+ public boolean isManageEnabled() {
+ return isManageEnabled;
+ }
+
+ /**
+ * Gets the scope.
+ *
+ * @return the scope
+ */
+ public String getScope() {
+ return scope;
+ }
+
+ /**
+ * Sets the manage enabled.
+ *
+ * @param isManageEnabled the new manage enabled
+ */
+ public void setManageEnabled(boolean isManageEnabled) {
+ this.isManageEnabled = isManageEnabled;
+ }
+
+ /**
+ * Sets the scope.
+ *
+ * @param scope the new scope
+ */
+ public void setScope(String scope) {
+ this.scope = scope;
+ }
+
+ public boolean isGRSFScope() {
+ if (this.scope != null) {
+ if (this.scope.toLowerCase().contains("grsf")) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public boolean isGRSFManageEnabled() {
+
+ if (isGRSFScope() && isManageEnabled)
+ return true;
+
+ return false;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("ManageProductResponse [isManageEnabled=");
+ builder.append(isManageEnabled);
+ builder.append(", scope=");
+ builder.append(scope);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
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 faf87aa..dde449b 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
@@ -14,24 +14,32 @@
-
+
-
+
-
-
-
+
+
+
-
-
+
+
+
-
-
-
+
+
+
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index f46f0c0..1e9a39a 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -55,12 +55,23 @@
org.gcube.portlets_widgets.catalogue_sharing_widget.server.ShareServicesImpl
-
+
ckanToZenodoServlet
org.gcube.portlets.widgets.ckan2zenodopublisher.server.CkanToZenodoPublisherServiceImpl
+
+ greetServlet
+ org.gcube.portlets.widgets.ckancontentmoderator.server.CkanContentModeratorServiceImpl
+
+
+
+ greetServlet
+ /gCubeCkanDataCatalog/greet
+
+
+
ckanToZenodoServlet
/gCubeCkanDataCatalog/ckantozenodo