diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/Encoder.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/Encoder.java new file mode 100644 index 0000000..eae6224 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/Encoder.java @@ -0,0 +1,14 @@ +package org.gcube.portlets.widgets.ckandatapublisherwidget.client; + +/** + * simply encode base64 strings + */ +public class Encoder { + public static native String encode(String toEncode) /*-{ + return btoa(toEncode); + }-*/; + + public static native String decode(String toDecode) /*-{ + return atob(toDecode); + }-*/; +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/AddResourceToDataset.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/AddResourceToDataset.java index e553bb7..f417812 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/AddResourceToDataset.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/AddResourceToDataset.java @@ -2,6 +2,7 @@ package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.CKanPublisherService; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.CKanPublisherServiceAsync; +import org.gcube.portlets.widgets.ckandatapublisherwidget.client.Encoder; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.AddResourceEvent; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceBean; @@ -71,7 +72,14 @@ public class AddResourceToDataset extends Composite{ @Override public void onClick(ClickEvent event) { - Window.Location.assign(datasetUrl); + String currentPath = Window.Location.getHref(); + int datasetIndex = datasetUrl.indexOf("/dataset"); + if(datasetIndex == -1) + return; + + String finalPart = datasetUrl.substring(datasetIndex); + String finalPath = currentPath + "?" + Encoder.encode("q") + "=" + Encoder.encode(finalPart); + Window.Location.assign(finalPath); } }); } diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java index 494ea65..8456548 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java @@ -10,6 +10,7 @@ import java.util.Map.Entry; import org.gcube.portlets.user.gcubewidgets.client.elements.Span; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.CKanPublisherService; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.CKanPublisherServiceAsync; +import org.gcube.portlets.widgets.ckandatapublisherwidget.client.Encoder; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.DeleteCustomFieldEvent; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.DeleteCustomFieldEventHandler; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.DatasetMetadataBean; @@ -554,7 +555,14 @@ public class CreateDatasetForm extends Composite{ @Override public void onClick(ClickEvent event) { - Window.Location.assign(datasetUrl); + String currentPath = Window.Location.getHref(); + int datasetIndex = datasetUrl.indexOf("/dataset"); + if(datasetIndex == -1) + return; + + String finalPart = datasetUrl.substring(datasetIndex); + String finalPath = currentPath + "?" + Encoder.encode("q") + "=" + Encoder.encode(finalPart); + Window.Location.assign(finalPath); } }); @@ -738,7 +746,7 @@ public class CreateDatasetForm extends Composite{ if(checkSelectedMetaDataProfile()){ errorMessage = "You must select a metadata profile different frome none"; } - + if(organizationsListbox.getSelectedItemText() == null){ errorMessage = "You must select an organization in which you want to publish"; } @@ -859,7 +867,7 @@ public class CreateDatasetForm extends Composite{ // ckan accepts only alphanumeric values if(!itemBox.getValue().matches("^[a-zA-Z0-9]*$")) return; - + final String value = itemBox.getValue(); final ListItem displayItem = new ListItem(); displayItem.setStyleName("tag-style");