From f9e9d0b80865a42630dcd497e57e0580f2cd9b72 Mon Sep 17 00:00:00 2001 From: David Caruana Date: Mon, 8 Jan 2007 12:36:17 +0000 Subject: [PATCH] OpenSearch - comply with atom feed validators - addition of xmldate and urlencode freemarker methods git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4750 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../web/api/services/APIServiceImpl.java | 4 +++ .../alfresco/web/api/services/TextSearch.java | 34 ++++++++++--------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/source/java/org/alfresco/web/api/services/APIServiceImpl.java b/source/java/org/alfresco/web/api/services/APIServiceImpl.java index b3c2c6da44..62d2ece787 100644 --- a/source/java/org/alfresco/web/api/services/APIServiceImpl.java +++ b/source/java/org/alfresco/web/api/services/APIServiceImpl.java @@ -23,6 +23,8 @@ import java.util.Map; import javax.servlet.ServletContext; +import org.alfresco.repo.template.ISO8601DateFormatMethod; +import org.alfresco.repo.template.UrlEncodeMethod; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.TemplateService; import org.alfresco.service.descriptor.DescriptorService; @@ -170,6 +172,8 @@ public abstract class APIServiceImpl implements BeanNameAware, APIService, APICo protected Map createTemplateModel(APIRequest req, APIResponse res) { Map model = new HashMap(7, 1.0f); + model.put("xmldate", new ISO8601DateFormatMethod()); + model.put("urlencode", new UrlEncodeMethod()); model.put("date", new Date()); model.put("agent", descriptorService.getServerDescriptor()); model.put("request", req); diff --git a/source/java/org/alfresco/web/api/services/TextSearch.java b/source/java/org/alfresco/web/api/services/TextSearch.java index c5cfdd6c14..417cd30b01 100644 --- a/source/java/org/alfresco/web/api/services/TextSearch.java +++ b/source/java/org/alfresco/web/api/services/TextSearch.java @@ -25,6 +25,8 @@ import java.util.Locale; import java.util.Map; import org.alfresco.i18n.I18NUtil; +import org.alfresco.repo.template.ISO8601DateFormatMethod; +import org.alfresco.repo.template.UrlEncodeMethod; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.StoreRef; @@ -407,13 +409,11 @@ public class TextSearch extends APIServiceImpl // TODO: place into accessible file private final static String ATOM_TEMPLATE = - "<#assign dateformat=\"yyyy-MM-dd\">" + - "<#assign timeformat=\"HH:mm:sszzz\">" + "\n" + "\n" + " Alfresco (${agent.edition})\n" + " Alfresco Search: ${search.searchTerms}\n" + - " ${date?string(dateformat)}T${date?string(timeformat)}\n" + + " ${xmldate(date)}\n" + " ${request.path}/images/logo/AlfrescoLogo16.ico\n" + " \n" + " <#if request.authenticatedUsername?exists>${request.authenticatedUsername}<#else>unknown\n" + @@ -423,24 +423,24 @@ public class TextSearch extends APIServiceImpl " ${search.startIndex}\n" + " ${search.itemsPerPage}\n" + " \n" + - " \n" + - " \n" + - " \n" + + " \n" + + " \n" + + " \n" + "<#if search.startPage > 1>" + - " \n" + + " \n" + "" + "<#if search.startPage < search.totalPages>" + - " \n" + + " \n" + "" + - " \n" + + " \n" + " \n" + "<#list search.results as row>" + " \n" + " ${row.name}\n" + " \n" + - " ${request.path}${row.icon16}\"\n" + // TODO: Standard for entry icons? + " ${request.path}${row.icon16}\n" + // TODO: Standard for entry icons? " urn:uuid:${row.id}\n" + - " ${row.properties.modified?string(dateformat)}T${row.properties.modified?string(timeformat)}\n" + + " ${xmldate(row.properties.modified)}\n" + " ${row.properties.description}\n" + " \n" + " ${row.properties.creator}\n" + @@ -477,15 +477,15 @@ public class TextSearch extends APIServiceImpl " \n" + "" + " \n" + - " first" + + " first" + "<#if search.startPage > 1>" + - " previous" + + " previous" + "" + - " ${search.startPage}" + + " ${search.startPage}" + "<#if search.startPage < search.totalPages>" + - " next" + + " next" + "" + - " last" + + " last" + " \n" + "\n"; @@ -550,6 +550,8 @@ public class TextSearch extends APIServiceImpl request.put("servicePath", "http://localhost:8080/alfresco/service"); request.put("path", "http://localhost:8080/alfresco"); request.put("guest", false); + searchModel.put("xmldate", new ISO8601DateFormatMethod()); + searchModel.put("urlencode", new UrlEncodeMethod()); searchModel.put("date", new Date()); searchModel.put("agent", getDescriptorService().getServerDescriptor()); searchModel.put("request", request);