diff --git a/.classpath b/.classpath
index 7797d4a..da39f7e 100644
--- a/.classpath
+++ b/.classpath
@@ -1,12 +1,12 @@
-
+
-
+
@@ -35,5 +35,5 @@
-
+
diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
index 28eef9c..e74a0a1 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.1.0-SNAPSHOT
+lastWarOutDir=/home/francescomangiacrapa/git/gcube-ckan-datacatalog/target/gcube-ckan-datacatalog-2.2.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 68b7976..2a2ea61 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,5 +1,5 @@
-
+
@@ -13,8 +13,16 @@
-
-
+
+
+
+
+
+
+
+
+
+
@@ -29,7 +37,11 @@
-
+
+
+
+
+
@@ -44,7 +56,11 @@
-
+
+
+
+
+
@@ -59,20 +75,28 @@
-
+
+
+
+
+
-
+
uses
-
+
uses
-
+
+
+
+
+
@@ -87,7 +111,11 @@
-
+
+
+
+
+
@@ -102,7 +130,11 @@
-
+
+
+
+
+
@@ -117,7 +149,11 @@
-
+
+
+
+
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7c58e32..4a2f340 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,7 +5,7 @@ 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.2.0-SNAPSHOT] - 2022-01-21
+## [v2.2.0-SNAPSHOT] - 2022-01-27
#### Enhancements
diff --git a/pom.xml b/pom.xml
index 1265aa8..bd38352 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,7 +123,7 @@
org.gcube.portlets.widgets
ckan-content-moderator-widget
- [0.0.1, 1.0.0-SNAPSHOT)
+ [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)
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 8f84ac9..1f24cba 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
@@ -10,28 +10,25 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.ManageProductRes
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
-
/**
* The Interface GcubeCkanDataCatalogService.
*
- * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * Nov 4, 2016
+ * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Nov 4, 2016
*/
@RemoteServiceRelativePath("ckandatacatalogue")
public interface GcubeCkanDataCatalogService extends RemoteService {
-
/**
* Get the ckan connector access point.
*
- * @param browserLocationURL the browser location URL
- * @param pathInfoParameters the path info parameters
+ * @param browserLocationURL the browser location URL
+ * @param pathInfoParameters the path info parameters
* @param queryStringParameters the query string parameters
* @return the c kan connector
* @throws Exception the exception
*/
- CkanConnectorAccessPoint getCKanConnector(
- String browserLocationURL, String pathInfoParameters, String queryStringParameters) throws Exception;
+ CkanConnectorAccessPoint getCKanConnector(String browserLocationURL, String pathInfoParameters,
+ String queryStringParameters) throws Exception;
/**
* Get the current role in CKAN for this user.
@@ -62,32 +59,41 @@ public interface GcubeCkanDataCatalogService extends RemoteService {
*/
String logoutFromCkanURL();
- // /**
- // * Remove auth cookie for ckan of this user.
- // *
- // * @return the string
- // */
- // String logoutURIFromCkan();
-
+ // /**
+ // * Remove auth cookie for ckan of this user.
+ // *
+ // * @return the string
+ // */
+ // String logoutURIFromCkan();
/**
* Check if the manage product needs to be shown (e.g., for GRSF products)
- * @return
+ *
+ * @return the manage product response
*/
ManageProductResponse isManageProductEnabled();
-
+
/**
- * Check if the view per VRE is enabled, so the management panels but publish/share link must be removed.
+ * Check if the view per VRE is enabled, so the management panels but
+ * publish/share link must be removed.
+ *
* @param browserLocationURL the browser location URL
* @return the string
*/
String isViewPerVREEnabled(String browserLocationURL);
-
/**
* Outside login portal.
*
* @return true, if successful
*/
boolean outsideLoginPortal();
+
+ /**
+ * Check moderation enabled.
+ *
+ * @param reloadConfig the reload config
+ * @return the manage product response
+ */
+ ManageProductResponse checkModerationEnabled(boolean reloadConfig);
}
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 08e74b7..edc89a5 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
@@ -12,14 +12,10 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.ManageProductRes
import com.google.gwt.user.client.rpc.AsyncCallback;
-
-
-// TODO: Auto-generated Javadoc
/**
* The Interface GcubeCkanDataCatalogServiceAsync.
*
- * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * Nov 4, 2016
+ * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Nov 4, 2016
*/
public interface GcubeCkanDataCatalogServiceAsync {
@@ -34,14 +30,13 @@ public interface GcubeCkanDataCatalogServiceAsync {
/**
* Gets the CKAN connector.
*
- * @param browserLocationURL the browser location URL that performs the call
- * @param pathInfoParameters the path info parameters
+ * @param browserLocationURL the browser location URL that performs the call
+ * @param pathInfoParameters the path info parameters
* @param queryStringParameters the query string parameters
- * @param callback the callback
+ * @param callback the callback
* @return the c kan connector
*/
- void getCKanConnector(
- String browserLocationURL, String pathInfoParameters, String queryStringParameters,
+ void getCKanConnector(String browserLocationURL, String pathInfoParameters, String queryStringParameters,
AsyncCallback callback);
/**
@@ -57,8 +52,7 @@ public interface GcubeCkanDataCatalogServiceAsync {
* @param callback the callback
* @return the ckan organizations names and urls for user
*/
- void getCkanOrganizationsNamesAndUrlsForUser(
- AsyncCallback> callback);
+ void getCkanOrganizationsNamesAndUrlsForUser(AsyncCallback> callback);
/**
* Retrieve the list of groups to whom the user belongs and their urls.
@@ -66,10 +60,8 @@ public interface GcubeCkanDataCatalogServiceAsync {
* @param callback the callback
* @return the ckan groups names and urls for user
*/
- void getCkanGroupsNamesAndUrlsForUser(
- AsyncCallback> callback);
+ void getCkanGroupsNamesAndUrlsForUser(AsyncCallback> callback);
-
/**
* Checks if is manage product enabled.
*
@@ -77,20 +69,26 @@ public interface GcubeCkanDataCatalogServiceAsync {
*/
void isManageProductEnabled(AsyncCallback callback);
-
/**
* Checks if is view per VRE enabled.
*
* @param browserLocationURL the browser location URL
- * @param callback the callback
+ * @param callback the callback
*/
void isViewPerVREEnabled(String browserLocationURL, AsyncCallback callback);
-
/**
* Outside login portal.
*
* @param callback the callback
*/
void outsideLoginPortal(AsyncCallback callback);
+
+ /**
+ * Check moderation enabled.
+ *
+ * @param reloadConfig the reload config
+ * @param callback the callback
+ */
+ void checkModerationEnabled(boolean reloadConfig, 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
index b6491c3..e439704 100644
--- 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
@@ -15,7 +15,7 @@ public class ClickedCMSManageProductButtonEvent extends GwtEvent TYPE = new Type();
/**
- * Instantiates a new clicked CMS manage product button event.
+ * Instantiates a new clicked Content Moderation System (CMS) manage product button event.
*/
public ClickedCMSManageProductButtonEvent() {
}
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 f22db62..61ff19b 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
@@ -74,8 +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 manageGRSFProduct = new Button("Manage GRSF Item");
- private Button manageCMS = new Button("Manage Items");
+ private Button manageGRSFProduct = new Button("Manage GRSF Item"); //GRSF Manage
+ private Button manageCModS = new Button("Manage Items"); //Moderation
private HandlerManager eventBus;
/**
@@ -108,8 +108,8 @@ public class CkanMetadataManagementPanel extends FlowPanel {
manageGRSFProduct.setType(ButtonType.PRIMARY);
manageGRSFProduct.getElement().getStyle().setFloat(Float.RIGHT);
- manageCMS.setType(ButtonType.PRIMARY);
- manageCMS.getElement().getStyle().setFloat(Float.RIGHT);
+ manageCModS.setType(ButtonType.PRIMARY);
+ manageCModS.getElement().getStyle().setFloat(Float.RIGHT);
// set icons
home.setIcon(IconType.HOME);
@@ -126,7 +126,7 @@ public class CkanMetadataManagementPanel extends FlowPanel {
editMeta.setIcon(IconType.EDIT_SIGN);
statistics.setIcon(IconType.BAR_CHART);
manageGRSFProduct.setIcon(IconType.CHECK_SIGN);
- manageCMS.setIcon(IconType.CHECK_SIGN);
+ manageCModS.setIcon(IconType.CHECK_SIGN);
// hide edit and insert
shareLink.setEnabled(false);
@@ -135,16 +135,16 @@ public class CkanMetadataManagementPanel extends FlowPanel {
insertMeta.setVisible(false);
manageGRSFProduct.setVisible(false);
manageGRSFProduct.setEnabled(false);
- manageCMS.setVisible(false);
- manageCMS.setEnabled(false);
+ manageCModS.setVisible(false);
+ manageCModS.setEnabled(false);
// 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);
+ manageCModS.setTitle(MANAGE_CMS_ITEMS_TOOLTIP);
+ manageCModS.getElement().getStyle().setFontWeight(FontWeight.BOLD);
// add to navigation bar
nav.add(home);
@@ -167,7 +167,7 @@ public class CkanMetadataManagementPanel extends FlowPanel {
nav.add(insertMeta);
nav.add(editMeta);
nav.add(manageGRSFProduct);
- nav.add(manageCMS);
+ nav.add(manageCModS);
nav.setClose(false);
nav.setType(AlertType.INFO);
nav.getElement().getStyle().setMarginBottom(0, Unit.PX);
@@ -300,7 +300,7 @@ public class CkanMetadataManagementPanel extends FlowPanel {
}
});
- manageCMS.addClickHandler(new ClickHandler() {
+ manageCModS.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
@@ -373,12 +373,12 @@ public class CkanMetadataManagementPanel extends FlowPanel {
}
/**
- * Button to manage the CMS products..
+ * Button to manage the products under moderation via Content Moderation System (CMS)
*
* @param value true or false
*/
public void showManageCMSProductsButton(boolean value) {
- manageCMS.setVisible(value);
+ manageCModS.setVisible(value);
}
/**
@@ -387,7 +387,7 @@ public class CkanMetadataManagementPanel extends FlowPanel {
* @param value the value
*/
public void enableManageCMSProductsButton(boolean value) {
- manageCMS.setEnabled(value);
+ manageCModS.setEnabled(value);
}
/**
@@ -432,7 +432,7 @@ public class CkanMetadataManagementPanel extends FlowPanel {
myOrganizations.setVisible(false);
myGroups.setVisible(false);
manageGRSFProduct.setVisible(false);
- manageCMS.setVisible(false);
+ manageCModS.setVisible(false);
}
@@ -453,7 +453,7 @@ public class CkanMetadataManagementPanel extends FlowPanel {
myGroups.setVisible(false);
statistics.setVisible(false);
manageGRSFProduct.setVisible(false);
- manageCMS.setVisible(false);
+ manageCModS.setVisible(false);
}
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java
index 405d96f..963a48c 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
@@ -52,10 +52,12 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
private HandlerManager eventBus;
private CkanConnectorAccessPoint ckanAccessPoint;
private ManageProductResponse manageProductResponse = null;
+ private ManageProductResponse moderationProductResponse = null;
private String viewPerVREPath = null;
private static String latestSelectedProductIdentifier;
public static final int IFRAME_FIX_HEIGHT = 1800;
private JSONObject obj;
+ private boolean reloadCatServiceConfig = true; //only first time the gCat service config is reloaded
/**
* Instantiates a new g cube ckan data catalog panel.
@@ -227,17 +229,11 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
.isManageProductEnabled(new AsyncCallback() {
@Override
- public void onSuccess(ManageProductResponse result) {
- manageProductResponse = result;
+ public void onSuccess(ManageProductResponse manageResponse) {
+ manageProductResponse = manageResponse;
if (manageProductResponse != null) {
-
- if(manageProductResponse.isGRSFManageEnabled()) {
- managementPanel.showManageCMSProductsButton(
- manageProductResponse.isManageEnabled());
- }else if(manageProductResponse.isManageEnabled()) {
- managementPanel.showManageCMSProductsButton(manageProductResponse.isManageEnabled());
- managementPanel.enableManageCMSProductsButton(manageProductResponse.isManageEnabled());
- }
+ managementPanel.showManageGRSFProductButton(
+ manageProductResponse.isManageEnabled());
}
}
@@ -246,6 +242,26 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
managementPanel.showManageGRSFProductButton(false);
}
});
+
+
+ GCubeCkanDataCatalog.service.checkModerationEnabled(reloadCatServiceConfig,
+ new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ managementPanel.showManageCMSProductsButton(
+ false);
+ }
+
+ @Override
+ public void onSuccess(ManageProductResponse moderationResponse) {
+ reloadCatServiceConfig = false;
+ //here the moderationProductResponse is not null.
+ moderationProductResponse = moderationResponse;
+ managementPanel.showManageCMSProductsButton(moderationProductResponse.isManageEnabled());
+ managementPanel.enableManageCMSProductsButton(moderationProductResponse.isManageEnabled());
+ }
+ });
}
@@ -492,7 +508,8 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
managementPanel.enableShareItemButton(productId != null && !productId.isEmpty());
managementPanel.enablePublishOnZenodoButton(productId != null && !productId.isEmpty());
managementPanel.enableManageGRSFProductButton(
- productId != null && !productId.isEmpty() && manageProductResponse.isGRSFManageEnabled());
+ productId != null && !productId.isEmpty() && manageProductResponse.isManageEnabled());
+ //managementPanel.enableManageCMSProductsButton(productId != null && !productId.isEmpty() && moderationProductResponse.isManageEnabled());
}
} else {
// The data hasn't been sent from your site!
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 a643871..7e9278d 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
@@ -517,8 +517,25 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
}
else{
try{
- boolean toReturn = catalogue.isManageProductEnabled();
- logger.info("isManageProductEnabled: "+toReturn);
+ boolean isManageProductEnabled = catalogue.isManageProductEnabled();
+ logger.info("isManageProductEnabled: "+isManageProductEnabled);
+
+ //TO BE SURE THAT THE CURRENT CONTEXT IS A GRSF SCOPE FOR ENABLING THE "MANAGE GRSF ITEM"
+ boolean isGRSFContext = false;
+ if (scopePerCurrentUrl != null) {
+ if (scopePerCurrentUrl.toLowerCase().contains("grsf")) {
+ isGRSFContext = true;
+ }
+ }
+
+ logger.info("isGRSFContext: "+isGRSFContext);
+
+ boolean toReturn = false;
+ if(isGRSFContext && isManageProductEnabled) {
+ toReturn = true;
+ }
+
+ logger.info("returning manage enabled: "+toReturn);
ManageProductResponse mpr = new ManageProductResponse(toReturn, scopePerCurrentUrl);
logger.info("Will manage product be enabled for this user? " + mpr);
return mpr;
@@ -528,6 +545,16 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
}
}
}
+
+ @Override
+ public ManageProductResponse checkModerationEnabled(boolean reloadConfig) {
+ logger.info("Checking if the moderation is enabled in the current context, reload config? "+reloadConfig);
+ String scopePerCurrentUrl = SessionUtil.getScopeFromClientUrl(getThreadLocalRequest());
+ DataCatalogue catalogue = getCatalogue(scopePerCurrentUrl);
+ boolean moderationEnabled = catalogue.isModerationEnabled(reloadConfig);
+ return new ManageProductResponse(moderationEnabled, scopePerCurrentUrl);
+
+ }
/**
* Ask to liferay.
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
index cc2f1a5..22037db 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/shared/ManageProductResponse.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/shared/ManageProductResponse.java
@@ -7,15 +7,16 @@ import java.io.Serializable;
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
- * Jun 15, 2021
+ * Feb 17, 2022
*/
public class ManageProductResponse implements Serializable {
/**
*
*/
- private static final long serialVersionUID = 1L;
- private boolean isManageEnabled;
+ private static final long serialVersionUID = 4042294108868246495L;
+ // Is GRSF MANAGE in the GRSF context, Is gCat moderation in the other contexts
+ private boolean isManageEnabled = false;
private String scope;
/**
@@ -72,24 +73,6 @@ public class ManageProductResponse implements Serializable {
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.
*
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index 1e9a39a..3d0747d 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -62,13 +62,13 @@
- greetServlet
+ ckanContentModeratorServlet
org.gcube.portlets.widgets.ckancontentmoderator.server.CkanContentModeratorServiceImpl
- greetServlet
- /gCubeCkanDataCatalog/greet
+ ckanContentModeratorServlet
+ /gCubeCkanDataCatalog/ckanContentModeratorService