From b6c7bf5477b47ff9b273cf2db39eac5c7d58c701 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 21 Nov 2011 15:54:45 +0000 Subject: [PATCH] ALF-8671 When listing Blogs/Lists/Discussions, the tag filter string is encoded before sending, so must be decoded in the webscript before searching. (Plus blog tagging test enhancements) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@32146 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../blogs/posts/AbstractGetBlogWebScript.java | 12 +++++++++++- .../repo/web/scripts/discussion/ForumTopicsGet.java | 4 ++++ .../repo/web/scripts/links/LinksListGet.java | 6 ++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java index fa2b41f269..5dfc4b8f07 100644 --- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java +++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java @@ -35,9 +35,11 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.util.Pair; import org.alfresco.util.ScriptPagingDetails; +import org.alfresco.util.UrlUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.json.simple.JSONObject; +import org.springframework.extensions.surf.util.URLDecoder; import org.springframework.extensions.webscripts.Cache; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; @@ -65,7 +67,15 @@ public abstract class AbstractGetBlogWebScript extends AbstractBlogWebScript Date toDate = parseDateParam(req, "toDate"); String tag = req.getParameter("tag"); - if (tag != null && tag.length() == 0) tag = null; + if (tag == null || tag.length() == 0) + { + tag = null; + } + else + { + // Tags can be full unicode strings, so decode + tag = URLDecoder.decode(tag); + } // One webscript (blog-posts-new.get) uses a 'numdays' parameter as a 'fromDate'. // This is a hacky solution to this special case. FIXME diff --git a/source/java/org/alfresco/repo/web/scripts/discussion/ForumTopicsGet.java b/source/java/org/alfresco/repo/web/scripts/discussion/ForumTopicsGet.java index ef796cb2e6..eb3fe0b3b0 100644 --- a/source/java/org/alfresco/repo/web/scripts/discussion/ForumTopicsGet.java +++ b/source/java/org/alfresco/repo/web/scripts/discussion/ForumTopicsGet.java @@ -27,6 +27,7 @@ import org.alfresco.service.cmr.discussion.TopicInfo; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.site.SiteInfo; import org.json.simple.JSONObject; +import org.springframework.extensions.surf.util.URLDecoder; import org.springframework.extensions.webscripts.Cache; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptException; @@ -58,6 +59,9 @@ public class ForumTopicsGet extends AbstractDiscussionWebScript if (tag != null && tag.length() > 0) { tagSearch = true; + + // Tags can be full unicode strings, so decode + tag = URLDecoder.decode(tag); } // Get the topics diff --git a/source/java/org/alfresco/repo/web/scripts/links/LinksListGet.java b/source/java/org/alfresco/repo/web/scripts/links/LinksListGet.java index 118478c806..69e48d058e 100644 --- a/source/java/org/alfresco/repo/web/scripts/links/LinksListGet.java +++ b/source/java/org/alfresco/repo/web/scripts/links/LinksListGet.java @@ -32,6 +32,7 @@ import org.alfresco.service.cmr.links.LinkInfo; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.site.SiteInfo; import org.json.simple.JSONObject; +import org.springframework.extensions.surf.util.URLDecoder; import org.springframework.extensions.webscripts.Cache; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; @@ -61,6 +62,11 @@ public class LinksListGet extends AbstractLinksWebScript { tagFiltering = false; } + else + { + // Tags can be full unicode strings, so decode + tag = URLDecoder.decode(tag); + } // User? boolean userFiltering = false;