diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js index b5b0ae7d4f..b40c3b6b54 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js @@ -1,20 +1,20 @@ function main() { - // Try and get the person - var userid = url.templateArgs.userid; - var person = people.getPerson(userid); - if (person == null) - { - // 404 since person resource could not be found - status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + " could not be found"); - return; - } - - // Get the preferences for the person - var preferences = preferenceService.getPreferences(userid, args["pf"]); - - // Convert the preferences to JSON and place in the model - model.preferences = jsonUtils.toJSONString(preferences); + // Try and get the person + var userid = url.templateArgs.userid; + var person = people.getPerson(userid); + if (person == null) + { + // 404 since person resource could not be found + status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + " could not be found"); + return; + } + + // Get the preferences for the person + var preferences = preferenceService.getPreferences(userid, args["pf"]); + + // Convert the preferences to JSON and place in the model + model.preferences = jsonUtils.toJSONString(preferences); } main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.get.js index 46028a8879..888044403e 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.get.js @@ -1,41 +1,40 @@ function main() { - // Get the url values - var urlElements = url.extension.split("/"); - var shortName = urlElements[0]; - var userName = urlElements[2]; - - // Get the site - var site = siteService.getSite(shortName); - if (site == null) - { - // Site cannot be found - status.setCode(status.STATUS_NOT_FOUND, "The site " + shortName + " does not exist."); - return; - } - - var person = people.getPerson(userName); - if (person == null) - { - // Person cannot be found - status.setCode(status.STATUS_NOT_FOUND, "The person with user name " + userName + " does not exist."); - return; - } - - // Get the role of the user - var role = site.getMembersRole(userName); - if (role == null) - { - // Person is not a member of the site - status.setCode(status.STATUS_NOT_FOUND, "The person with user name " + userName + " is not a member of the site " + shortName); - return; - } - - // Pass the values to the template - model.site = site; - model.person = person; - model.role = role; + // Get the url values + var urlElements = url.extension.split("/"); + var shortName = urlElements[0]; + var userName = urlElements[2]; + + // Get the site + var site = siteService.getSite(shortName); + if (site == null) + { + // Site cannot be found + status.setCode(status.STATUS_NOT_FOUND, "The site " + shortName + " does not exist."); + return; + } + + var person = people.getPerson(userName); + if (person == null) + { + // Person cannot be found + status.setCode(status.STATUS_NOT_FOUND, "The person with user name " + userName + " does not exist."); + return; + } + + // Get the role of the user + var role = site.getMembersRole(userName); + if (role == null) + { + // Person is not a member of the site + status.setCode(status.STATUS_NOT_FOUND, "The person with user name " + userName + " is not a member of the site " + shortName); + return; + } + + // Pass the values to the template + model.site = site; + model.person = person; + model.role = role; } -main(); - \ No newline at end of file +main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.lib.ftl index fdf47f1a12..c6418f96f9 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.lib.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/membership.lib.ftl @@ -1,24 +1,24 @@ <#macro membershipJSON site role person> - <#escape x as jsonUtils.encodeJSONString(x)> +<#escape x as jsonUtils.encodeJSONString(x)> { - "role" : "${role}", - "person": - { - "userName" : "${person.properties.userName}", - "firstName" : "${person.properties.firstName}", - "lastName" : "${person.properties.lastName}", - <#if person.assocs["cm:avatar"]??> - "avatar" : "${"api/node/" + person.assocs["cm:avatar"][0].nodeRef?string?replace('://','/') + "/content/thumbnails/avatar"}", - - <#if person.properties.jobtitle??> - "jobtitle" : "${person.properties.jobtitle}", - - <#if person.properties.organization??> - "organization" : "${person.properties.organization}", - - "url" : "${url.serviceContext + "/api/people/" + person.properties.userName}" - }, - "url" : "${url.serviceContext + "/api/sites/" + site.shortName + "/memberships/" + person.properties.userName}" + "role" : "${role}", + "person": + { + "userName" : "${person.properties.userName}", + "firstName" : "${person.properties.firstName}", + "lastName" : "${person.properties.lastName}", + <#if person.assocs["cm:avatar"]??> + "avatar" : "${"api/node/" + person.assocs["cm:avatar"][0].nodeRef?string?replace('://','/') + "/content/thumbnails/avatar"}", + + <#if person.properties.jobtitle??> + "jobtitle" : "${person.properties.jobtitle}", + + <#if person.properties.organization??> + "organization" : "${person.properties.organization}", + + "url" : "${url.serviceContext + "/api/people/" + person.properties.userName}" + }, + "url" : "${url.serviceContext + "/api/sites/" + site.shortName + "/memberships/" + person.properties.userName}" } - + \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/memberships.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/memberships.get.js index fe8dac5d1b..f710ee1203 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/memberships.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/memberships.get.js @@ -14,18 +14,18 @@ var memberships = site.listMembers(nameFilter, roleFilter, sizeString != null ? var peopleList = Array(memberships.length); for (userName in memberships) { - var person = people.getPerson(userName); - peopleList["_" + userName] = person; // make sure the keys are strings + var person = people.getPerson(userName); + // make sure the keys are strings - as usernames may be all numbers! + peopleList['_' + userName] = person; } // also copy over the memberships. var mems = {}; -var pos = 0; // memberships[userName] won't return the correct value if userName is a digit-only value for (userName in memberships) { - var membershipType = memberships[pos]; - mems["_" + userName] = membershipType; // make sure the keys are strings - pos++; + var membershipType = memberships[userName]; + // make sure the keys are strings - as usernames may be all numbers! + mems['_' + userName] = membershipType; } // Pass the information to the template diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/memberships.get.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/memberships.get.json.ftl index 3cf4528397..46ec40e358 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/memberships.get.json.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/site/membership/memberships.get.json.ftl @@ -2,7 +2,7 @@ <#assign userNames = memberships?keys /> [ <#list userNames as userName> - <@membershipLib.membershipJSON site=site role=memberships[userName] person=people[userName] /> - <#if userName_has_next>, + <@membershipLib.membershipJSON site=site role=memberships[userName] person=people[userName] /> + <#if userName_has_next>, ] \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/site/site.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/site/site.get.js index 0b17aaca33..e3cd4fb59a 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/site/site.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/site/site.get.js @@ -1,22 +1,22 @@ function main() { - // Get the shortname - var shortName = url.extension; - - // Get the site - var site = siteService.getSite(shortName); - - if (site != null) - { - // Pass the site to the template - model.site = site; - } - else - { - // Return 404 - status.setCode(404, "Site " + shortName + " does not exist"); - return; - } + // Get the shortname + var shortName = url.extension; + + // Get the site + var site = siteService.getSite(shortName); + + if (site != null) + { + // Pass the site to the template + model.site = site; + } + else + { + // Return 404 + status.setCode(404, "Site " + shortName + " does not exist"); + return; + } } -main(); \ No newline at end of file +main(); \ No newline at end of file diff --git a/source/java/org/alfresco/repo/web/scripts/RepositoryTemplateProcessor.java b/source/java/org/alfresco/repo/web/scripts/RepositoryTemplateProcessor.java index bdd8345f5c..07c3697041 100644 --- a/source/java/org/alfresco/repo/web/scripts/RepositoryTemplateProcessor.java +++ b/source/java/org/alfresco/repo/web/scripts/RepositoryTemplateProcessor.java @@ -64,11 +64,14 @@ public class RepositoryTemplateProcessor extends FreeMarkerProcessor protected String defaultEncoding; protected Configuration templateConfig; protected FreeMarkerProcessor freeMarkerProcessor; + private int updateDelay = 0; + private int cacheSize = 512; /* (non-Javadoc) * @see org.alfresco.repo.template.FreeMarkerProcessor#setDefaultEncoding(java.lang.String) */ + @Override public void setDefaultEncoding(String defaultEncoding) { this.defaultEncoding = defaultEncoding; @@ -81,6 +84,25 @@ public class RepositoryTemplateProcessor extends FreeMarkerProcessor { return this.defaultEncoding; } + + /** + * @param updateDelay the time in seconds between checks on the modified date for cached templates + */ + public void setUpdateDelay(int updateDelay) + { + this.updateDelay = updateDelay; + } + + /** + * @param cacheSize the size of the MRU template cache, default is 256 + */ + public void setCacheSize(int cacheSize) + { + if (cacheSize >= 0) + { + this.cacheSize = cacheSize; + } + } /** * @param searchPath @@ -151,9 +173,9 @@ public class RepositoryTemplateProcessor extends FreeMarkerProcessor Configuration config = new Configuration(); // setup template cache - config.setCacheStorage(new MruCacheStorage(20, 100)); - config.setTemplateUpdateDelay(0); - + config.setCacheStorage(new MruCacheStorage(this.cacheSize, this.cacheSize << 1)); + config.setTemplateUpdateDelay(updateDelay); + // setup template loaders List loaders = new ArrayList(); for (Store apiStore : searchPath.getStores())