diff --git a/.classpath b/.classpath
index d3cfefb..5bcac96 100644
--- a/.classpath
+++ b/.classpath
@@ -11,16 +11,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -34,6 +24,16 @@
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.project b/.project
index 88c3a4c..5ea670e 100644
--- a/.project
+++ b/.project
@@ -15,16 +15,6 @@
-
- com.gwtplugins.gdt.eclipse.core.webAppProjectValidator
-
-
-
-
- com.gwtplugins.gwt.eclipse.core.gwtProjectValidator
-
-
-
org.eclipse.wst.validation.validationbuilder
@@ -42,7 +32,6 @@
org.eclipse.jdt.core.javanature
org.eclipse.m2e.core.maven2Nature
org.eclipse.wst.common.project.facet.core.nature
- com.gwtplugins.gwt.eclipse.core.gwtNature
org.eclipse.wst.jsdt.core.jsNature
diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
index a21cd08..eb53cab 100644
--- a/.settings/com.gwtplugins.gdt.eclipse.core.prefs
+++ b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
@@ -1,4 +1,5 @@
eclipse.preferences.version=1
-lastWarOutDir=/home/francescomangiacrapa/git/ckan-content-moderator-widget/target/ckan-content-moderator-widget-0.1.0-SNAPSHOT
-warSrcDir=src/main/webapp
+jarsExcludedFromWebInfLib=
+lastWarOutDir=/home/francescomangiacrapa/git/ckan-content-moderator-widget/target/ckan-content-moderator-widget-1.2.0-SNAPSHOT
+warSrcDir=
warSrcDirIsOutput=false
diff --git a/.settings/com.gwtplugins.gwt.eclipse.core.prefs b/.settings/com.gwtplugins.gwt.eclipse.core.prefs
index f23a752..d80f7da 100644
--- a/.settings/com.gwtplugins.gwt.eclipse.core.prefs
+++ b/.settings/com.gwtplugins.gwt.eclipse.core.prefs
@@ -1,2 +1,4 @@
eclipse.preferences.version=1
entryPointModules=
+filesCopiedToWebInfLib=
+gwtSyncCodeServer=true
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 3422968..5c13042 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,53 +1,59 @@
-
+
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+
uses
+
+
-
+
+
+
-
-
-
-
-
-
+
+
+
+
-
+
+
+
diff --git a/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
deleted file mode 100644
index cc81385..0000000
--- a/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml
index 8867594..1c32d17 100644
--- a/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ b/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -1,9 +1,7 @@
-
-
-
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5cc512e..1b511e7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@
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).
+## [v1.2.0-SNAPSHOT] - 2023-01-19
+
+#### Enhancements
+
+- [#23903] Catalogue Moderation: allow to send a message to the moderators on reject to pending operation
+- [#24519] Added social_post=true to approve request
+
## [v1.1.1] - 2022-10-27
#### Fixing
diff --git a/pom.xml b/pom.xml
index e61733b..64444da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
org.gcube.portlets.widgets
ckan-content-moderator-widget
jar
- 1.1.1
+ 1.2.0-SNAPSHOT
gCube Ckan Content Moderator Widget
diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorCheckConfigs.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorCheckConfigs.java
index 90b677d..c4a5b51 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorCheckConfigs.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorCheckConfigs.java
@@ -106,7 +106,10 @@ public class CkanContentModeratorCheckConfigs {
attemptLC++;
GWT.log("checking configuration loaded, attempt " + attemptLC + " of "
+ MAX_RETRY_ON_LOADING_CONFIG);
- boolean configsLoaded = getConfigurationLoaded() == CONFIGURATION_EXPECTED;
+ int confLoaded = getConfigurationLoaded();
+ GWT.log("configuration loaded " + confLoaded + " of "
+ + CONFIGURATION_EXPECTED);
+ boolean configsLoaded = confLoaded == CONFIGURATION_EXPECTED;
GWT.log("configsLoaded: " + configsLoaded);
if (configsLoaded) {
GWT.log("ContentModeratorCheckConfig loaded correclty");
diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorService.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorService.java
index b7b3a8d..870c1c3 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorService.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorService.java
@@ -21,17 +21,6 @@ import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@RemoteServiceRelativePath("ckanContentModeratorService")
public interface CkanContentModeratorService extends RemoteService {
- /**
- * Sets the status. Currently, this only used to change the status from Rejected
- * to Pending
- *
- * @param theStatus the the status
- * @param itemNames the item names
- * @return the operation report
- * @throws Exception the exception
- */
- public OperationReport setStatus(ItemStatus theStatus, List itemNames) throws Exception;
-
/**
* Reject item.
*
@@ -67,7 +56,7 @@ public interface CkanContentModeratorService extends RemoteService {
* @return the list items for status
* @throws Exception the exception
*/
- List getListItemsForStatus(ItemStatus theStatus, int offset, int limit, boolean allFields,
+ public List getListItemsForStatus(ItemStatus theStatus, int offset, int limit, boolean allFields,
boolean restrictedToLoggedInUser, String sortForField) throws Exception;
/**
@@ -135,6 +124,16 @@ public interface CkanContentModeratorService extends RemoteService {
* @return the item for name
* @throws Exception the exception
*/
- CatalogueDataset getItemForName(String itemName) throws Exception;
+ public CatalogueDataset getItemForName(String itemName) throws Exception;
+
+ /**
+ * Sets the status.
+ *
+ * @param theStatus the the status
+ * @param itemNames the item names
+ * @return the operation report
+ * @throws Exception the exception
+ */
+ public OperationReport setStatus(ItemStatus theStatus, List itemNames, String message) throws Exception;
}
diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorServiceAsync.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorServiceAsync.java
index ded10ed..ea862e9 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorServiceAsync.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorServiceAsync.java
@@ -30,6 +30,18 @@ public interface CkanContentModeratorServiceAsync {
void rejectItem(List itemNames, boolean permanentlyDelete, String reasonMsg,
AsyncCallback callback);
+ /**
+ * Gets the list items for status.
+ *
+ * @param theStatus the the status
+ * @param offset the offset
+ * @param limit the limit
+ * @param allFields the all fields
+ * @param restrictedToLoggedInUser the restricted to logged in user
+ * @param sortForField the sort for field
+ * @param callback the callback
+ * @return the list items for status
+ */
void getListItemsForStatus(ItemStatus theStatus, int offset, int limit, boolean allFields,
boolean restrictedToLoggedInUser, String sortForField, AsyncCallback> callback);
@@ -70,9 +82,11 @@ public interface CkanContentModeratorServiceAsync {
*
* @param theStatus the the status
* @param itemNames the item names
+ * @param message the message
* @param callback the callback
*/
- void setStatus(ItemStatus theStatus, List itemNames, AsyncCallback callback);
+ void setStatus(ItemStatus theStatus, List itemNames, String message,
+ AsyncCallback callback);
/**
* Gets the CMS roles for user in the context.
diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidgetController.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidgetController.java
index 5c0fbef..494216f 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidgetController.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidgetController.java
@@ -276,6 +276,21 @@ public class CkanContentModeratorWidgetController {
GWT.log("sortForField is: " + sortForField);
howeView.loadItemsWithStatus(statusSelectedEvent.getItemStatus(), sortForField);
mainTabPanel.selectTab(0);
+
+ //#23903 Enabling the owner of the rejected item, to change the Status and send a message
+ switch (statusSelectedEvent.getItemStatus()) {
+ case REJECTED:
+ howeView.hideUpdateStatusAction(false);
+ howeView.hideSelectableRow(false);
+ break;
+
+ default:
+ howeView.hideUpdateStatusAction(readOnlyMode);
+ howeView.hideSelectableRow(readOnlyMode);
+ break;
+ }
+ //#23903 end
+
}
if (statusSelectedEvent.getDisplayMessage() != null) {
diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/DoActionCMSView.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/DoActionCMSView.java
index 1010c6c..35a0e2e 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/DoActionCMSView.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/DoActionCMSView.java
@@ -117,7 +117,8 @@ public class DoActionCMSView extends Composite {
switch (toStatus) {
case PENDING:
checkBoxPermDelete.setVisible(false);
- txtMsgReason.setVisible(false);
+ txtMsgReason.setVisible(true);
+ txtMsgReason.setPlaceholder("(Optional) Type a message...");
break;
case APPROVED:
checkBoxPermDelete.setVisible(false);
diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.java
index 53d3909..d8d9a27 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.java
@@ -106,7 +106,7 @@ public class HomeView extends Composite {
* @param status the status
* @param displayFields the display fields
* @param sortByField the sort by field
- * @param readOnlyMode the read only mode
+ * @param readOnlyMode the read only mode
* @param restrictDataToLoggedInUser the restrict data to logged in user
*/
public HomeView(HandlerManager eventBus, ItemStatus status, DISPLAY_FIELD[] displayFields,
@@ -423,8 +423,8 @@ public class HomeView extends Composite {
/**
* Load form server the items with status.
*
- * @param itemStatus the item status
- * @param sortForField
+ * @param itemStatus the item status
+ * @param sortForField
*/
public void loadItemsWithStatus(ItemStatus itemStatus, String sortForField) {
GWT.log("loadItemsWithStatus started");
@@ -456,7 +456,7 @@ public class HomeView extends Composite {
case PENDING:
CkanContentModeratorWidgetController.contentModeratorService.setStatus(toStatus, listDatasetNames,
- new AsyncCallback() {
+ doActionCMSView.getTxtReasonMsg(), new AsyncCallback() {
@Override
public void onSuccess(OperationReport result) {
diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceImpl.java
index 35fdc7d..f33cbc2 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceImpl.java
@@ -54,6 +54,7 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
DataCatalogueImpl catalogueImpl = CatalogueCMSFactory.getFactory().getCatalogueImplPerScope(scope);
CatalogueContentModeratorSystem cmsInstance = catalogueImpl.getCatalogueContentModerator();
isModerationEnabled = cmsInstance.isModerationEnabled(reloadConfig);
+ LOG.info("is ModerationEnabled? " + isModerationEnabled);
} catch (Exception e) {
LOG.error("Error occured on checking isContentModeratorEnabled, so returning false", e);
return false;
@@ -296,22 +297,29 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
*
* @param theStatus the the status
* @param itemNames the item names
+ * @param message the message to send to Moderators. If null no messange is sent
* @return the operation report
* @throws Exception the exception
*/
@Override
- public OperationReport setStatus(ItemStatus theStatus, List itemNames) throws Exception {
- LOG.info("Called set status " + theStatus + " for Items with name: " + itemNames);
+ public OperationReport setStatus(ItemStatus theStatus, List itemNames, String message) throws Exception {
+ LOG.info("Called set status " + theStatus + " for items with name: " + itemNames + ". Is message null?: "+(message==null));
try {
String scope = setContexts();
DataCatalogueImpl catalogueImpl = CatalogueCMSFactory.getFactory().getCatalogueImplPerScope(scope);
+ CatalogueContentModeratorSystem cmsInstance = catalogueImpl.getCatalogueContentModerator();
Map errorMapItems = new HashMap();
List changedStatusListItems = new ArrayList();
for (String itemName : itemNames) {
try {
catalogueImpl.refreshDataset(itemName);
+ LOG.info("refresh dataset done");
changedStatusListItems.add(itemName);
+ if(message!=null && !message.isEmpty()) {
+ LOG.debug("Sending message: "+message);
+ cmsInstance.messageItem(itemName, message);
+ }
} catch (Exception e) {
LOG.warn("Error when setting status (updating) the itemName: " + itemName, e);
errorMapItems.put(itemName, e.getMessage());
@@ -348,7 +356,7 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
List approvedListItems = new ArrayList();
for (String itemName : itemNames) {
try {
- cmsInstance.approveItem(itemName, moderatorMessage);
+ cmsInstance.approveItem(itemName, moderatorMessage, true);
approvedListItems.add(itemName);
} catch (Exception e) {
LOG.warn("Error when approving itemName: " + itemName, e);
@@ -500,5 +508,4 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
LOG.debug("Returning: " + searchedData);
return searchedData;
}
-
}
diff --git a/src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceTest.java b/src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceTest.java
index 4b9ec69..df0eb3f 100644
--- a/src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceTest.java
+++ b/src/test/java/org/gcube/portlets/widgets/ckancontentmoderator/server/CkanContentModeratorServiceTest.java
@@ -13,7 +13,6 @@ import org.gcube.datacatalogue.utillibrary.server.cms.CatalogueContentModeratorS
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
import org.gcube.datacatalogue.utillibrary.shared.jackan.model.CkanDataset;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants;
-import org.junit.Test;
import org.slf4j.LoggerFactory;
public class CkanContentModeratorServiceTest {