From e53443521ae9f6d7e8ec49e23e275cf46153da55 Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Mon, 17 Nov 2008 13:16:53 +0000 Subject: [PATCH] Fix for ETHREEOH-8. Fix to client-side js error when clicking on a calendar event (recent YUI changes?) Fix to issue where user calendar webscript was supressing remote errors then trying to interpret an HTML error page result as JSON. Code and performance improvements to repo-side calendar web-scripts. Code improvements and cleanup to repo-side sites webscripts. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@11941 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repository/person/person.sites.get.js | 72 +++++++++---------- .../org/alfresco/repository/site/sites.get.js | 56 +++++++-------- .../slingshot/calendar/userevents.get.js | 67 +++++++---------- .../calendar/userevents.get.json.ftl | 22 +++--- 4 files changed, 99 insertions(+), 118 deletions(-) diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/person/person.sites.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/person/person.sites.get.js index a14b313ea9..9e04c609c4 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/person/person.sites.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/person/person.sites.get.js @@ -1,42 +1,40 @@ function main() { - // Get the user name of the person to get - var userName = url.templateArgs.userid; - - // Get the person who has that user name - var person = people.getPerson(userName); - - if (person === null) - { - // Return 404 - Not Found - status.setCode(status.STATUS_NOT_FOUND, "Person " + userName + " does not exist"); - return; - } - - // Get the list of sites - var sites = siteService.listUserSites(userName); - - var sizeString = args["size"]; - if (sizeString != null) - { - var size = parseInt(sizeString); - - if (size != NaN && size < sites.length) - { - // TODO this is a tempory implementaion to support preview client - // Only return the first n sites based on the passed page size - var pagedSites = Array(); - for (var index = 0; index < size; index++) - { - pagedSites[index] = sites[index]; - } - - sites = pagedSites; - } - } - - // Pass the queried sites to the template - model.sites = sites; + // Get the user name of the person to get + var userName = url.templateArgs.userid; + + // Get the person who has that user name + var person = people.getPerson(userName); + + if (person === null) + { + // Return 404 - Not Found + status.setCode(status.STATUS_NOT_FOUND, "Person " + userName + " does not exist"); + return; + } + + // Get the list of sites + var sites = siteService.listUserSites(userName); + + var sizeString = args["size"]; + if (sizeString != null) + { + var size = parseInt(sizeString); + + if (size < sites.length) + { + // Only return the first n sites based on the passed page size + var pagedSites = new Array(size); + for (var index = 0; index < size; index++) + { + pagedSites[index] = sites[index]; + } + + sites = pagedSites; + } + } + + model.sites = sites; } main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/site/sites.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/site/sites.get.js index 83555c961e..3abe302e14 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/site/sites.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/site/sites.get.js @@ -1,33 +1,31 @@ function main() { - // Get the filter parameters - var nameFilter = args["nf"]; - var sitePreset = args["spf"]; - var sizeString = args["size"]; - - // Get the list of sites - var sites = siteService.listSites(nameFilter, sitePreset); - - if (sizeString != null) - { - var size = parseInt(sizeString); - - if (size != NaN && size < sites.length) - { - // TODO this is a tempory implementaion to support preview client - // Only return the first n sites based on the passed page size - var pagedSites = Array(); - for (var index = 0; index < size; index++) - { - pagedSites[index] = sites[index]; - } - - sites = pagedSites; - } - } - - // Add the sites to the model - model.sites = sites; + // Get the filter parameters + var nameFilter = args["nf"]; + var sitePreset = args["spf"]; + var sizeString = args["size"]; + + // Get the list of sites + var sites = siteService.listSites(nameFilter, sitePreset); + + if (sizeString != null) + { + var size = parseInt(sizeString); + + if (size < sites.length) + { + // Only return the first n sites based on the passed page size + var pagedSites = new Array(size); + for (var index = 0; index < size; index++) + { + pagedSites[index] = sites[index]; + } + + sites = pagedSites; + } + } + + model.sites = sites; } -main(); +main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/userevents.get.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/userevents.get.js index f892508382..b419860b4b 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/userevents.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/userevents.get.js @@ -11,50 +11,35 @@ var range = {}; var dateFilter = args.from; if (dateFilter) { - range["fromdate"] = dateFilter; + range["fromdate"] = dateFilter; } model.events = getUserEvents(username, range); function getUserEvents(user, range) { - if (!user) - { - return []; - } - - var paths = []; - /** - * This part is inefficient as it looks through all of the sites - * and tries to determine if the user is a member or not; however, until something like - * /people/{userid}/sites is exposed through the JavaScript API, it will have to do. - * - */ - var availableSites = siteService.listSites(null, null); - for (var j=0; j < availableSites.length; j++) - { - var site = availableSites[j]; - if (site.isMember(user)) - { - paths.push("PATH:\"/app:company_home/st:sites/cm:" + search.ISO9075Encode(site.shortName) + "/cm:calendar/*\""); - } - } - - var results = []; - - if (paths.length > 0) - { - var luceneQuery = "+(" + paths.join(" OR ") + ") +TYPE:\"{http\://www.alfresco.org/model/calendar}calendarEvent\""; - if (range.fromdate) - { - // Expects the date in the format yyyy/mm/dd - var from = range.fromdate.split("/").join("\\-"); - var dateClause = " +@ia\\:fromDate:[" + from + "T00:00:00 TO 2099\\-1\\-1T00:00:00]"; - luceneQuery += dateClause; - } - results = search.luceneSearch(luceneQuery, "ia:fromDate", true); - } - - return results; -} - + var paths = []; + + var sites = siteService.listUserSites(user); + for (var j=0; j < sites.length; j++) + { + paths.push("PATH:\"/app:company_home/st:sites/cm:" + search.ISO9075Encode(sites[j].shortName) + "/cm:calendar/*\""); + } + + var results = []; + + if (paths.length != 0) + { + var luceneQuery = "+(" + paths.join(" OR ") + ") +TYPE:\"{http\://www.alfresco.org/model/calendar}calendarEvent\""; + if (range.fromdate) + { + // Expects the date in the format yyyy/mm/dd + var from = range.fromdate.split("/").join("\\-"); + var dateClause = " +@ia\\:fromDate:[" + from + "T00:00:00 TO 2099\\-1\\-1T00:00:00]"; + luceneQuery += dateClause; + } + results = search.luceneSearch(luceneQuery, "ia:fromDate", true); + } + + return results; +} \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/userevents.get.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/userevents.get.json.ftl index a855441f36..87784ccbbb 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/userevents.get.json.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/userevents.get.json.ftl @@ -4,17 +4,17 @@ <#if events?exists> "events": [ <#list events?sort_by(["properties", "ia:fromDate"]) as event> - <#if event_index?string == limit?string><#break> - { - "name" : "${event.name}", - "title" : "${event.properties["ia:whatEvent"]}", - "where" : "${event.properties["ia:whereEvent"]}", - "when" : "${event.properties["ia:fromDate"]?string("dd MMM yyyy")}", - "url" : "page/site/${event.parent.parent.name}/calendar?date=${event.properties["ia:fromDate"]?string("yyyy-MM-dd")}", - "start" : "${event.properties["ia:fromDate"]?string("HH:mm")}", - "end" : "${event.properties["ia:toDate"]?string("HH:mm")}", - "site" : "${event.parent.parent.name}" - }<#if event_has_next>, + <#if event_index?string == limit?string><#break> + { + "name" : "${event.name}", + "title" : "${event.properties["ia:whatEvent"]}", + "where" : "${event.properties["ia:whereEvent"]}", + "when" : "${event.properties["ia:fromDate"]?string("dd MMM yyyy")}", + "url" : "page/site/${event.parent.parent.name}/calendar?date=${event.properties["ia:fromDate"]?string("yyyy-MM-dd")}", + "start" : "${event.properties["ia:fromDate"]?string("HH:mm")}", + "end" : "${event.properties["ia:toDate"]?string("HH:mm")}", + "site" : "${event.parent.parent.name}" + }<#if event_has_next>, ]