diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ConfigurableBrowse.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ConfigurableBrowse.java index aa4d87ccf6..65540e0989 100644 --- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ConfigurableBrowse.java +++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/ConfigurableBrowse.java @@ -364,17 +364,21 @@ public class ConfigurableBrowse extends AbstractDSpaceTransformer implements String type = info.getBrowseIndex().getName(); // Prepare a Map of query parameters required for all links - Map queryParams = new HashMap(); - queryParams.putAll(params.getCommonParameters()); - queryParams.putAll(params.getControlParameters()); + Map queryParamsGET = new HashMap(); + queryParamsGET.putAll(params.getCommonParametersEncoded()); + queryParamsGET.putAll(params.getControlParameters()); + + Map queryParamsPOST = new HashMap(); + queryParamsPOST.putAll(params.getCommonParameters()); + queryParamsPOST.putAll(params.getControlParameters()); // Navigation aid (really this is a poor version of pagination) Division jump = div.addInteractiveDivision("browse-navigation", BROWSE_URL_BASE, Division.METHOD_POST, "secondary navigation"); // Add all the query parameters as hidden fields on the form - for (String key : queryParams.keySet()) - jump.addHidden(key).setValue(queryParams.get(key)); + for (String key : queryParamsPOST.keySet()) + jump.addHidden(key).setValue(queryParamsPOST.get(key)); // If this is a date based browse, render the date navigation if (isSortedByDate(info)) @@ -426,13 +430,13 @@ public class ConfigurableBrowse extends AbstractDSpaceTransformer implements // Create a clickable list of the alphabet List jumpList = jump.addList("jump-list", List.TYPE_SIMPLE, "alphabet"); - Map zeroQuery = new HashMap(queryParams); + Map zeroQuery = new HashMap(queryParamsGET); zeroQuery.put(BrowseParams.STARTS_WITH, "0"); jumpList.addItemXref(super.generateURL(BROWSE_URL_BASE, zeroQuery), "0-9"); for (char c = 'A'; c <= 'Z'; c++) { - Map cQuery = new HashMap(queryParams); + Map cQuery = new HashMap(queryParamsGET); cQuery.put(BrowseParams.STARTS_WITH, Character.toString(c)); jumpList.addItemXref(super.generateURL(BROWSE_URL_BASE, cQuery), Character .toString(c)); @@ -552,7 +556,7 @@ public class ConfigurableBrowse extends AbstractDSpaceTransformer implements return null; Map parameters = new HashMap(); - parameters.putAll(params.getCommonParameters()); + parameters.putAll(params.getCommonParametersEncoded()); parameters.putAll(params.getControlParameters()); if (info.hasPrevPage()) @@ -578,7 +582,7 @@ public class ConfigurableBrowse extends AbstractDSpaceTransformer implements return null; Map parameters = new HashMap(); - parameters.putAll(params.getCommonParameters()); + parameters.putAll(params.getCommonParametersEncoded()); parameters.putAll(params.getControlParameters()); if (info.hasNextPage()) @@ -946,26 +950,36 @@ class BrowseParams { Map paramMap = new HashMap(); - paramMap.put(BrowseParams.TYPE, AbstractDSpaceTransformer.URLEncode( - scope.getBrowseIndex().getName())); + paramMap.put(BrowseParams.TYPE, scope.getBrowseIndex().getName()); if (scope.getFilterValue() != null) { paramMap.put(scope.getAuthorityValue() != null? - BrowseParams.FILTER_VALUE[1]:BrowseParams.FILTER_VALUE[0], - AbstractDSpaceTransformer.URLEncode( - scope.getFilterValue())); + BrowseParams.FILTER_VALUE[1]:BrowseParams.FILTER_VALUE[0], scope.getFilterValue()); } if (scope.getFilterValueLang() != null) { - paramMap.put(BrowseParams.FILTER_VALUE_LANG, AbstractDSpaceTransformer.URLEncode( - scope.getFilterValueLang())); + paramMap.put(BrowseParams.FILTER_VALUE_LANG, scope.getFilterValueLang()); } return paramMap; } + Map getCommonParametersEncoded() throws UIException + { + Map paramMap = getCommonParameters(); + Map encodedParamMap = new HashMap(); + + for (String key: paramMap.keySet()) + { + encodedParamMap.put(key, AbstractDSpaceTransformer.URLEncode(paramMap.get(key))); + } + + return encodedParamMap; + } + + /* * Creates a Map of the browse control options (sort by / ordering / results * per page / authors per item) diff --git a/dspace/CHANGES b/dspace/CHANGES index 6928c3f857..a2ff572921 100644 --- a/dspace/CHANGES +++ b/dspace/CHANGES @@ -136,9 +136,12 @@ (Richard Rodgers) - [DS-324] Add OpenSearch support - (Toni Prieto) +(Toni Prieto) - [DS-356] Antispam for suggest item feature +(Flavio Botelho) + - [DS-246] Fix configurable browse parameter encoding (XMLUI) + 1.5.2 final ===========