diff --git a/config/alfresco/templates/webscripts/org/alfresco/presence/status.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/presence/status.get.html.ftl index dda7864173..847f58cb88 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/presence/status.get.html.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/presence/status.get.html.ftl @@ -1,20 +1,54 @@ -
Invited Users Presence Status
-
- online=online
- offline=offline
- unknown=unknown +
Colleague Status
+
+
Presence Status Key:
+
+ online=Skype online
+ online=Yahoo online
+ offline=not configured +
+
+ online=offline
+ offline=offline
+ online=unknown +
<#list presenceResults as pr>
-
-
${pr[0]}
+
+
${pr[1]}
+
+
Documents created or modified in the last week
+
+ + + + + + + + <#assign rowNum=0> + <#list space.childrenByXPath[".//*[subtypeOf('cm:content')]"] as child> + <#if (dateCompare(child.properties["cm:modified"], date, 1000*60*60*24*7) == 1) || (dateCompare(child.properties["cm:created"], date, 1000*60*60*24*7) == 1)> + <#assign rowNum = rowNum + 1> + + + + + + + + +
NameCreated DateModified Date
${child.properties.name}${child.properties["cm:created"]?datetime}${child.properties["cm:modified"]?datetime}
+
+
+ diff --git a/config/alfresco/templates/webscripts/org/alfresco/presence/status.get.js b/config/alfresco/templates/webscripts/org/alfresco/presence/status.get.js index 91c94205ed..dbf1f4a352 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/presence/status.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/presence/status.get.js @@ -1,11 +1,26 @@ +var results = new Array(); main(); function main() { var nodeRef = args["nodeRef"]; var space = search.findNode(nodeRef); + model.space = space; + + parsePermissions(space); + + while ((space.inheritsPermissions) && (space.parent != null)) + { + space = space.parent; + parsePermissions(space); + } + + model.presenceResults = results; +} + +function parsePermissions(space) +{ var tokens, user, group; - var results = new Array(); for each(perm in space.permissions) { @@ -33,21 +48,23 @@ function main() } } } - - model.space = space; - model.presenceResults = results; } function pushUnique(results, user, details) { + var provider = String(details).split("|")[0]; + if (provider == "") + { + provider = "none"; + } var fullName = user.properties["firstName"] + " " + user.properties["lastName"]; for (i=0; i < results.length; i++) { - if (results[i][0] == fullName) + if (results[i][1] == fullName) { return; } } - results.push(new Array(fullName, details)); + results.push(new Array(provider, fullName, details)); } diff --git a/source/web/images/icons/presence_offline.gif b/source/web/images/icons/presence_offline.gif deleted file mode 100644 index 7c6d45be67..0000000000 Binary files a/source/web/images/icons/presence_offline.gif and /dev/null differ diff --git a/source/web/images/icons/presence_online.gif b/source/web/images/icons/presence_online.gif deleted file mode 100644 index 6c621aaf32..0000000000 Binary files a/source/web/images/icons/presence_online.gif and /dev/null differ diff --git a/source/web/images/icons/presence_skype_offline.png b/source/web/images/icons/presence_skype_offline.png new file mode 100644 index 0000000000..1b7d0e05be Binary files /dev/null and b/source/web/images/icons/presence_skype_offline.png differ diff --git a/source/web/images/icons/presence_skype_online.png b/source/web/images/icons/presence_skype_online.png new file mode 100644 index 0000000000..23f3a1bd64 Binary files /dev/null and b/source/web/images/icons/presence_skype_online.png differ diff --git a/source/web/images/icons/presence_status_none.png b/source/web/images/icons/presence_status_none.png new file mode 100644 index 0000000000..3a930820f8 Binary files /dev/null and b/source/web/images/icons/presence_status_none.png differ diff --git a/source/web/images/icons/presence_status_unknown.png b/source/web/images/icons/presence_status_unknown.png new file mode 100644 index 0000000000..7a67a4f3aa Binary files /dev/null and b/source/web/images/icons/presence_status_unknown.png differ diff --git a/source/web/images/icons/presence_unknown.gif b/source/web/images/icons/presence_unknown.gif deleted file mode 100644 index d244428495..0000000000 Binary files a/source/web/images/icons/presence_unknown.gif and /dev/null differ diff --git a/source/web/images/icons/presence_yahoo_offline.png b/source/web/images/icons/presence_yahoo_offline.png new file mode 100644 index 0000000000..0d0a2663df Binary files /dev/null and b/source/web/images/icons/presence_yahoo_offline.png differ diff --git a/source/web/images/icons/presence_yahoo_online.png b/source/web/images/icons/presence_yahoo_online.png new file mode 100644 index 0000000000..5400fce250 Binary files /dev/null and b/source/web/images/icons/presence_yahoo_online.png differ diff --git a/source/web/scripts/ajax/presence.js b/source/web/scripts/ajax/presence.js index 7ae2e29346..da8b1b84a9 100644 --- a/source/web/scripts/ajax/presence.js +++ b/source/web/scripts/ajax/presence.js @@ -7,30 +7,46 @@ var Presence = { window.contextPath = Presence.getContextPath(); - var users = $$("#presenceContainer .presenceStatus"); - users.each(function(user, i) + var statuses = $$("#presenceContainer .presenceStatus"); + var users = $$("#presenceContainer .presenceUsername"); + + statuses.each(function(status, i) { - // ajax call to load online status - var userDetails = user.attributes["rel"].value.split("|"); + var user = users[i]; + + var userDetails = status.attributes["rel"].value.split("|"); var proxyURL = window.contextPath + "/ajax/invoke/PresenceProxyBean.proxyRequest"; var statusURL = Presence.getStatusURL(userDetails); if (statusURL != "") { + // ajax call to load online status var myAjax = new Ajax(proxyURL, { method: 'get', headers: {'If-Modified-Since': 'Sat, 1 Jan 2000 00:00:00 GMT'}, onComplete: function(textResponse, xmlResponse) { var statusType = Presence.getStatusType(userDetails[0], textResponse); + status.addClass(statusType); user.addClass(statusType); + if (statusType == "unknown") + { + status.title = "User's status is unknown, possibly due to client privacy settings"; + } + else + { + status.title = "User's status is " + statusType; + } + user.title = status.title; } }); myAjax.request("url=" + escape(statusURL)); } else { - user.addClass("unknown"); + status.addClass("unknown"); + status.title = "User's presence provider has not been configured by Alfresco admin"; + user.title = status.title; } }); }, @@ -79,7 +95,17 @@ var Presence = switch(provider) { case "skype": - statusType = (response == "Online") ? "online" : "offline"; + switch (response) + { + case "Online": + statusType = "online"; + break; + case "Offline": + statusType = "offline"; + break; + default: + statusType = "unknown"; + } break; case "yahoo": statusType = (response == "01") ? "online" : "offline";