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
This commit is contained in:
Kevin Roast
2008-11-17 13:16:53 +00:00
parent dde3f451b6
commit e53443521a
4 changed files with 99 additions and 118 deletions

View File

@@ -1,42 +1,40 @@
function main() function main()
{ {
// Get the user name of the person to get // Get the user name of the person to get
var userName = url.templateArgs.userid; var userName = url.templateArgs.userid;
// Get the person who has that user name // Get the person who has that user name
var person = people.getPerson(userName); var person = people.getPerson(userName);
if (person === null) if (person === null)
{ {
// Return 404 - Not Found // Return 404 - Not Found
status.setCode(status.STATUS_NOT_FOUND, "Person " + userName + " does not exist"); status.setCode(status.STATUS_NOT_FOUND, "Person " + userName + " does not exist");
return; return;
} }
// Get the list of sites // Get the list of sites
var sites = siteService.listUserSites(userName); var sites = siteService.listUserSites(userName);
var sizeString = args["size"]; var sizeString = args["size"];
if (sizeString != null) if (sizeString != null)
{ {
var size = parseInt(sizeString); var size = parseInt(sizeString);
if (size != NaN && size < sites.length) if (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
// Only return the first n sites based on the passed page size var pagedSites = new Array(size);
var pagedSites = Array(); for (var index = 0; index < size; index++)
for (var index = 0; index < size; index++) {
{ pagedSites[index] = sites[index];
pagedSites[index] = sites[index]; }
}
sites = pagedSites;
sites = pagedSites; }
} }
}
model.sites = sites;
// Pass the queried sites to the template
model.sites = sites;
} }
main(); main();

View File

@@ -1,33 +1,31 @@
function main() function main()
{ {
// Get the filter parameters // Get the filter parameters
var nameFilter = args["nf"]; var nameFilter = args["nf"];
var sitePreset = args["spf"]; var sitePreset = args["spf"];
var sizeString = args["size"]; var sizeString = args["size"];
// Get the list of sites // Get the list of sites
var sites = siteService.listSites(nameFilter, sitePreset); var sites = siteService.listSites(nameFilter, sitePreset);
if (sizeString != null) if (sizeString != null)
{ {
var size = parseInt(sizeString); var size = parseInt(sizeString);
if (size != NaN && size < sites.length) if (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
// Only return the first n sites based on the passed page size var pagedSites = new Array(size);
var pagedSites = Array(); for (var index = 0; index < size; index++)
for (var index = 0; index < size; index++) {
{ pagedSites[index] = sites[index];
pagedSites[index] = sites[index]; }
}
sites = pagedSites;
sites = pagedSites; }
} }
}
model.sites = sites;
// Add the sites to the model
model.sites = sites;
} }
main(); main();

View File

@@ -11,50 +11,35 @@ var range = {};
var dateFilter = args.from; var dateFilter = args.from;
if (dateFilter) if (dateFilter)
{ {
range["fromdate"] = dateFilter; range["fromdate"] = dateFilter;
} }
model.events = getUserEvents(username, range); model.events = getUserEvents(username, range);
function getUserEvents(user, range) function getUserEvents(user, range)
{ {
if (!user) var paths = [];
{
return []; var sites = siteService.listUserSites(user);
} for (var j=0; j < sites.length; j++)
{
var paths = []; paths.push("PATH:\"/app:company_home/st:sites/cm:" + search.ISO9075Encode(sites[j].shortName) + "/cm:calendar/*\"");
/** }
* 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 var results = [];
* /people/{userid}/sites is exposed through the JavaScript API, it will have to do.
* if (paths.length != 0)
*/ {
var availableSites = siteService.listSites(null, null); var luceneQuery = "+(" + paths.join(" OR ") + ") +TYPE:\"{http\://www.alfresco.org/model/calendar}calendarEvent\"";
for (var j=0; j < availableSites.length; j++) if (range.fromdate)
{ {
var site = availableSites[j]; // Expects the date in the format yyyy/mm/dd
if (site.isMember(user)) var from = range.fromdate.split("/").join("\\-");
{ var dateClause = " +@ia\\:fromDate:[" + from + "T00:00:00 TO 2099\\-1\\-1T00:00:00]";
paths.push("PATH:\"/app:company_home/st:sites/cm:" + search.ISO9075Encode(site.shortName) + "/cm:calendar/*\""); luceneQuery += dateClause;
} }
} results = search.luceneSearch(luceneQuery, "ia:fromDate", true);
}
var results = [];
return 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;
}

View File

@@ -4,17 +4,17 @@
<#if events?exists> <#if events?exists>
"events": [ "events": [
<#list events?sort_by(["properties", "ia:fromDate"]) as event> <#list events?sort_by(["properties", "ia:fromDate"]) as event>
<#if event_index?string == limit?string><#break></#if> <#if event_index?string == limit?string><#break></#if>
{ {
"name" : "${event.name}", "name" : "${event.name}",
"title" : "${event.properties["ia:whatEvent"]}", "title" : "${event.properties["ia:whatEvent"]}",
"where" : "${event.properties["ia:whereEvent"]}", "where" : "${event.properties["ia:whereEvent"]}",
"when" : "${event.properties["ia:fromDate"]?string("dd MMM yyyy")}", "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")}", "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")}", "start" : "${event.properties["ia:fromDate"]?string("HH:mm")}",
"end" : "${event.properties["ia:toDate"]?string("HH:mm")}", "end" : "${event.properties["ia:toDate"]?string("HH:mm")}",
"site" : "${event.parent.parent.name}" "site" : "${event.parent.parent.name}"
}<#if event_has_next>,</#if> }<#if event_has_next>,</#if>
</#list> </#list>
] ]
</#if> </#if>