mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-21 18:09:20 +00:00
Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud)
101303: Merge RA-SPRINT2 to HEAD-BUG-FIX (5.1) 99855: RA-61: move /slingshot/profile webscripts. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@101446 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,16 +0,0 @@
|
||||
<webscript kind="org.alfresco.repository.content.stream">
|
||||
<shortname>Avatar</shortname>
|
||||
<description>
|
||||
Returns a user avatar image in the format specified by the thumbnailname, or the "avatar" preset if omitted.
|
||||
</description>
|
||||
<url>/slingshot/profile/avatar/avatar</url>
|
||||
<url>/slingshot/profile/avatar/avatar/thumbnail/{thumbnailname}</url>
|
||||
<url>/slingshot/profile/avatar/{store_type}/{store_id}/{id}/thumbnail/{thumbnailname}</url>
|
||||
<url>/slingshot/profile/avatar/{store_type}/{store_id}/{id}</url>
|
||||
<url>/slingshot/profile/avatar/{username}/thumbnail/{thumbnailname}</url>
|
||||
<url>/slingshot/profile/avatar/{username}</url>
|
||||
<format default="">argument</format>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
<lifecycle>internal</lifecycle>
|
||||
</webscript>
|
@@ -1,104 +0,0 @@
|
||||
/**
|
||||
* User Profile - User avatar GET method
|
||||
*
|
||||
* Returns a user avatar image in the format specified by the thumbnailname, or the "avatar" preset if omitted.
|
||||
*
|
||||
* @method GET
|
||||
*/
|
||||
|
||||
function getPlaceholder(thumbnailName)
|
||||
{
|
||||
// Try and get the place holder resource for a png avatar.
|
||||
var phPath = thumbnailService.getMimeAwarePlaceHolderResourcePath(thumbnailName, "images/png");
|
||||
if (phPath == null)
|
||||
{
|
||||
// 404 since no thumbnail was found
|
||||
status.setCode(status.STATUS_NOT_FOUND, "Thumbnail was not found and no place holder resource set for '" + thumbnailName + "'");
|
||||
return;
|
||||
}
|
||||
|
||||
return phPath;
|
||||
}
|
||||
|
||||
function main()
|
||||
{
|
||||
var userName = url.templateArgs.username,
|
||||
thumbnailName = url.templateArgs.thumbnailname || "avatar",
|
||||
avatarNode;
|
||||
|
||||
// If there is no store type, store id or id on the request then this WebScript has most likely been requested
|
||||
// for a user with no avatar image so we will just return the placeholder image.
|
||||
if (userName == null && url.templateArgs.store_type == null && url.templateArgs.store_id == null && url.templateArgs.id == null)
|
||||
{
|
||||
// If there is no userName or nodeRef data then we want to return the browser cacheable placeholder...
|
||||
model.contentPath = getPlaceholder(thumbnailName);
|
||||
model.allowBrowserToCache = "true";
|
||||
return;
|
||||
}
|
||||
else if (url.templateArgs.store_type == null && url.templateArgs.store_id == null && url.templateArgs.id == null)
|
||||
{
|
||||
// There is no nodeRef data but there is a username... this should return the user image that needs revalidation
|
||||
var person = people.getPerson(userName);
|
||||
if (person == null)
|
||||
{
|
||||
// Stream the placeholder image
|
||||
model.contentPath = getPlaceholder(thumbnailName);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Retrieve the avatar NodeRef for this person, if there is one.
|
||||
var avatarAssoc = person.assocs["cm:avatar"];
|
||||
if (avatarAssoc != null)
|
||||
{
|
||||
avatarNode = avatarAssoc[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (userName == null)
|
||||
{
|
||||
// There is no user name but there is nodeREf data... this should return the image that CAN be cached by the browser
|
||||
model.allowBrowserToCache = "true";
|
||||
avatarNode = search.findNode(url.templateArgs.store_type + "://" + url.templateArgs.store_id + "/" + url.templateArgs.id);
|
||||
if (avatarNode == null)
|
||||
{
|
||||
// Stream the placeholder image if the avatar node cannot be found.
|
||||
model.contentPath = getPlaceholder(thumbnailName);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Get the thumbnail for the avatar...
|
||||
if (avatarNode != null)
|
||||
{
|
||||
// Get the thumbnail
|
||||
var thumbnail = avatarNode.getThumbnail(thumbnailName);
|
||||
if (thumbnail == null || thumbnail.size == 0)
|
||||
{
|
||||
// Remove broken thumbnail
|
||||
if (thumbnail != null)
|
||||
{
|
||||
thumbnail.remove();
|
||||
}
|
||||
|
||||
// Force the creation of the thumbnail
|
||||
thumbnail = avatarNode.createThumbnail(thumbnailName, false);
|
||||
if (thumbnail != null)
|
||||
{
|
||||
model.contentNode = thumbnail;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Place the details of the thumbnail into the model, this will be used to stream the content to the client
|
||||
model.contentNode = thumbnail;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Stream the placeholder image
|
||||
model.contentPath = getPlaceholder(thumbnailName);
|
||||
}
|
||||
|
||||
main();
|
@@ -1,9 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Reset Avatar image</shortname>
|
||||
<description>User Profile - Reset Avatar image for a user</description>
|
||||
<format default="json">argument</format>
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
<url>/slingshot/profile/resetavatar/{userName}</url>
|
||||
<lifecycle>internal</lifecycle>
|
||||
</webscript>
|
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"success": ${success?string}
|
||||
}
|
@@ -1,46 +0,0 @@
|
||||
/**
|
||||
* User Profile - Reset user avatar REST method
|
||||
*
|
||||
* Current user can only modify their own settings or an admin can reset all.
|
||||
*
|
||||
* @method PUT
|
||||
*/
|
||||
|
||||
function main()
|
||||
{
|
||||
// Get the person details and ensure they exist for update
|
||||
var userName = url.extension;
|
||||
var user = people.getPerson(userName);
|
||||
if (user == null)
|
||||
{
|
||||
status.setCode(status.STATUS_NOT_FOUND, "Person " + userName + " does not exist");
|
||||
return;
|
||||
}
|
||||
|
||||
// ensure we found a valid user and that it is the current user or we are an admin
|
||||
if (user == null ||
|
||||
(people.isAdmin(person) == false && user.properties.userName != person.properties.userName))
|
||||
{
|
||||
status.code = 500;
|
||||
status.message = "Failed to locate user to modify or permission denied.";
|
||||
status.redirect = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// remove old image child node if we have one
|
||||
var assocs = user.childAssocs["cm:preferenceImage"];
|
||||
if (assocs != null && assocs.length == 1)
|
||||
{
|
||||
assocs[0].remove();
|
||||
}
|
||||
// remove 'cm:avatar' target association - backward compatible with JSF web-client avatar
|
||||
assocs = user.associations["cm:avatar"];
|
||||
if (assocs != null && assocs.length == 1)
|
||||
{
|
||||
user.removeAssociation(assocs[0], "cm:avatar");
|
||||
}
|
||||
|
||||
model.success = true;
|
||||
}
|
||||
|
||||
main();
|
@@ -1,9 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Avatar Upload</shortname>
|
||||
<description>Upload avatar file content and apply to person preferences</description>
|
||||
<format default="json" />
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
<url>/slingshot/profile/uploadavatar</url>
|
||||
<lifecycle>internal</lifecycle>
|
||||
</webscript>
|
@@ -1,15 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Upload Avatar Success</title>
|
||||
</head>
|
||||
<body>
|
||||
<#if (args.success!"")?matches("^[\\w\\d\\._]+$")>
|
||||
<script type="text/javascript">
|
||||
${args.success}({
|
||||
nodeRef: "${image.nodeRef}",
|
||||
fileName: "${image.name}"
|
||||
});
|
||||
</script>
|
||||
</#if>
|
||||
</body>
|
||||
</html>
|
@@ -1,19 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Upload Avatar Failure</title>
|
||||
</head>
|
||||
<body>
|
||||
<#if (args.failure!"")?matches("^[\\w\\d\\._]+$")>
|
||||
<script type="text/javascript">
|
||||
${args.failure}({
|
||||
status: {
|
||||
"code" : ${status.code},
|
||||
"name" : "${status.codeName}",
|
||||
"description" : "${status.codeDescription}"
|
||||
},
|
||||
message: "${jsonUtils.encodeJSONString(status.message)}"
|
||||
});
|
||||
</script>
|
||||
</#if>
|
||||
</body>
|
||||
</html>
|
@@ -1,115 +0,0 @@
|
||||
/**
|
||||
* User Profile Avatar Upload method
|
||||
*
|
||||
* @method POST
|
||||
* @param username {string}
|
||||
* filedata {file}
|
||||
*/
|
||||
|
||||
function main()
|
||||
{
|
||||
try
|
||||
{
|
||||
var filename = null;
|
||||
var content = null;
|
||||
var username = null;
|
||||
|
||||
// locate file attributes
|
||||
for each (field in formdata.fields)
|
||||
{
|
||||
if (field.name == "filedata" && field.isFile)
|
||||
{
|
||||
filename = field.filename;
|
||||
content = field.content;
|
||||
}
|
||||
else if (field.name == "username")
|
||||
{
|
||||
username = field.value;
|
||||
}
|
||||
}
|
||||
|
||||
// ensure all mandatory attributes have been located
|
||||
if (filename == undefined || content == undefined)
|
||||
{
|
||||
status.code = 400;
|
||||
status.message = "Uploaded file cannot be located in request";
|
||||
status.redirect = true;
|
||||
return;
|
||||
}
|
||||
if (username == null || username.length == 0)
|
||||
{
|
||||
status.code = 500;
|
||||
status.message = "Username parameter not supplied.";
|
||||
status.redirect = true;
|
||||
return;
|
||||
}
|
||||
|
||||
var user = people.getPerson(username);
|
||||
// ensure we found a valid user and that it is the current user or we are an admin
|
||||
if (user == null ||
|
||||
(people.isAdmin(person) == false && user.properties.userName != person.properties.userName))
|
||||
{
|
||||
status.code = 500;
|
||||
status.message = "Failed to locate user to modify or permission denied.";
|
||||
status.redirect = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// ensure cm:person has 'cm:preferences' aspect applied - as we want to add the avatar as
|
||||
// the child node of the 'cm:preferenceImage' association
|
||||
if (!user.hasAspect("cm:preferences"))
|
||||
{
|
||||
user.addAspect("cm:preferences");
|
||||
}
|
||||
|
||||
// remove old image child node if we already have one
|
||||
var assocs = user.childAssocs["cm:preferenceImage"];
|
||||
if (assocs != null && assocs.length == 1)
|
||||
{
|
||||
assocs[0].remove();
|
||||
}
|
||||
|
||||
// create the new image node
|
||||
var image = user.createNode(filename, "cm:content", "cm:preferenceImage");
|
||||
image.properties.content.write(content);
|
||||
image.properties.content.guessMimetype(filename);
|
||||
|
||||
if (image.properties.content.getMimetype().indexOf("image/") != 0)
|
||||
{
|
||||
user.removeNode(image);
|
||||
status.code = 500;
|
||||
status.message = " Only image files are allowed for user avatar.";
|
||||
status.redirect = true;
|
||||
return;
|
||||
}
|
||||
|
||||
image.properties.content.encoding = "UTF-8";
|
||||
image.save();
|
||||
|
||||
// wire up 'cm:avatar' target association - backward compatible with JSF web-client avatar
|
||||
assocs = user.associations["cm:avatar"];
|
||||
if (assocs != null && assocs.length == 1)
|
||||
{
|
||||
user.removeAssociation(assocs[0], "cm:avatar");
|
||||
}
|
||||
user.createAssociation(image, "cm:avatar");
|
||||
|
||||
// save ref to be returned
|
||||
model.image = image;
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
var x = e;
|
||||
status.code = 500;
|
||||
status.message = "Unexpected error occured during upload of new content.";
|
||||
if(x.message && x.message.indexOf("org.alfresco.service.cmr.usage.ContentQuotaException") == 0)
|
||||
{
|
||||
status.code = 413;
|
||||
status.message = x.message;
|
||||
}
|
||||
status.redirect = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
@@ -1,12 +0,0 @@
|
||||
<#escape x as jsonUtils.encodeJSONString(x)>
|
||||
{
|
||||
"nodeRef": "${image.nodeRef}",
|
||||
"fileName": "${image.name}",
|
||||
"status":
|
||||
{
|
||||
"code": 200,
|
||||
"name": "OK",
|
||||
"description" : "File uploaded successfully"
|
||||
}
|
||||
}
|
||||
</#escape>
|
@@ -1,9 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>Last edited user contents</shortname>
|
||||
<description>Last edited user contents</description>
|
||||
<format default="json" />
|
||||
<authentication>guest</authentication>
|
||||
<url>/slingshot/profile/usercontents</url>
|
||||
<transaction allow="readonly">required</transaction>
|
||||
<lifecycle>internal</lifecycle>
|
||||
</webscript>
|
@@ -1,90 +0,0 @@
|
||||
<import resource="classpath:/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js">
|
||||
|
||||
var maxResults = (args.maxResults !== undefined) ? parseInt(args.maxResults, 10) : DEFAULT_MAX_RESULTS;
|
||||
|
||||
function padZeros(number)
|
||||
{
|
||||
return (number < 10) ? '0' + number : number;
|
||||
}
|
||||
|
||||
function getContents(user, type)
|
||||
{
|
||||
// set range to within last 28 days
|
||||
var date = new Date();
|
||||
var toQuery = date.getFullYear() + "-" + padZeros((date.getMonth()+1)) + "-" + padZeros(date.getDate());
|
||||
date.setDate(date.getDate() - 28);
|
||||
var fromQuery = date.getFullYear() + "-" + padZeros((date.getMonth()+1)) + "-" + padZeros(date.getDate());
|
||||
|
||||
var userProperty = (type == 'created') ? 'creator' : 'modifier';
|
||||
|
||||
var getBlogPostsQuery = function getBlogPosts()
|
||||
{
|
||||
return 'PATH:"/app:company_home/st:sites/*/cm:blog/*" ' +
|
||||
'AND +TYPE:"cm:content" ' +
|
||||
'AND +@cm:' + userProperty + ':"' + user + '" ' +
|
||||
'AND +@cm:' + type + ':["' + fromQuery + '" TO "' + toQuery + '"]';
|
||||
};
|
||||
|
||||
var getWikiPagesQuery = function getWikiPagesQuery()
|
||||
{
|
||||
return 'PATH:"/app:company_home/st:sites/*/cm:wiki/*" ' +
|
||||
'AND +TYPE:"cm:content" ' +
|
||||
'AND +@cm:' + userProperty + ':"' + user + '" ' +
|
||||
'AND +@cm:' + type + ':["' + fromQuery + '" TO "' + toQuery + '"]';
|
||||
};
|
||||
|
||||
var getDiscussionsQuery = function getDiscussionsQuery()
|
||||
{
|
||||
return 'PATH:"/app:company_home/st:sites/*/cm:discussions//*" ' +
|
||||
'AND +TYPE:"fm:post" ' +
|
||||
'AND +@cm:' + userProperty + ':"' + user + '" ' +
|
||||
'AND +@cm:' + type + ':["' + fromQuery + '" TO "' + toQuery + '"]';
|
||||
};
|
||||
|
||||
var getDocumentsQuery = function getDocumentsQuery()
|
||||
{
|
||||
return 'TYPE:"cm:content" ' +
|
||||
'AND +@cm:' + userProperty + ':"' + user + '" ' +
|
||||
'AND +@cm:' + type + ':["' + fromQuery + '" TO "' + toQuery + '"] AND -QNAME:comment\\-*';
|
||||
};
|
||||
|
||||
var sortColumns = [];
|
||||
sortColumns.push(
|
||||
{
|
||||
column: "@" + utils.longQName("cm:" + type),
|
||||
ascending: false
|
||||
});
|
||||
|
||||
var queryDef = {
|
||||
query: "",
|
||||
language: "fts-alfresco",
|
||||
page: {maxItems: maxResults},
|
||||
onerror: "no-results",
|
||||
sort: sortColumns
|
||||
};
|
||||
|
||||
// perform fts-alfresco language queries
|
||||
var results;
|
||||
queryDef.query = getBlogPostsQuery();
|
||||
results = search.query(queryDef);
|
||||
queryDef.query = getWikiPagesQuery();
|
||||
results = results.concat(search.query(queryDef));
|
||||
queryDef.query = getDiscussionsQuery();
|
||||
results = results.concat(search.query(queryDef));
|
||||
queryDef.query = getDocumentsQuery();
|
||||
results = results.concat(search.query(queryDef));
|
||||
|
||||
results.sort(function(a, b)
|
||||
{
|
||||
var date1 = a.properties[type].getTime(),
|
||||
date2 = b.properties[type].getTime();
|
||||
return (date1 < date2) ? 1 : (date1 > date2) ? -1 : 0;
|
||||
}
|
||||
);
|
||||
|
||||
return processResults(results, maxResults);
|
||||
}
|
||||
|
||||
model.data = [];
|
||||
model.data['created'] = getContents(args.user, 'created', maxResults);
|
||||
model.data['modified'] = getContents(args.user, 'modified', maxResults);
|
@@ -1,37 +0,0 @@
|
||||
<#macro dateFormat date>${date?string("yyyy-MM-dd'T'HH:mm:ss.SSSZ")}</#macro>
|
||||
<#macro formatDataItems data>
|
||||
<#escape x as jsonUtils.encodeJSONString(x)>
|
||||
{
|
||||
"items":
|
||||
[
|
||||
<#list data.items as item>
|
||||
{
|
||||
"nodeRef": "${item.nodeRef}",
|
||||
"type": "${item.type}",
|
||||
"name": "${item.name!''}",
|
||||
"displayName": "${item.displayName!''}",
|
||||
"description": "${item.description!''}",
|
||||
"createdOn": "<@dateFormat item.createdOn />",
|
||||
"createdBy": "${item.createdBy!''}",
|
||||
"createdByUser": "${item.createdByUser!''}",
|
||||
"modifiedOn": "<@dateFormat item.modifiedOn />",
|
||||
"modifiedByUser": "${item.modifiedByUser}",
|
||||
"modifiedBy": "${item.modifiedBy}",
|
||||
"size": ${item.size?c},
|
||||
<#if item.site??>"site":
|
||||
{
|
||||
"shortName": "${item.site.shortName}",
|
||||
"title": "${item.site.title}"
|
||||
},</#if>
|
||||
"container": "${item.container!""}",
|
||||
"tags": [<#list item.tags as tag>"${tag}"<#if tag_has_next>,</#if></#list>]
|
||||
}<#if item_has_next>,</#if>
|
||||
</#list>
|
||||
]
|
||||
}
|
||||
</#escape>
|
||||
</#macro>
|
||||
{
|
||||
"created": <@formatDataItems data['created'] />,
|
||||
"modified": <@formatDataItems data['modified'] />
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>User Profile</shortname>
|
||||
<description>User Profile POST for update</description>
|
||||
<format default="json" />
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
<url>/slingshot/profile/userprofile</url>
|
||||
<lifecycle>internal</lifecycle>
|
||||
</webscript>
|
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"success": ${success?string}
|
||||
}
|
@@ -1,88 +0,0 @@
|
||||
/**
|
||||
* User Profile REST Update method
|
||||
*
|
||||
* @method POST
|
||||
* @param json {string}
|
||||
* {
|
||||
* username: "username",
|
||||
* properties:
|
||||
* {
|
||||
* "cm:propname": "value"
|
||||
* ...
|
||||
* },
|
||||
* content:
|
||||
* {
|
||||
* "cm:contentpropname": "contentstringvalue"
|
||||
* ...
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
function main()
|
||||
{
|
||||
model.success = false;
|
||||
var username = json.get("username");
|
||||
if (username == null)
|
||||
{
|
||||
status.code = 400;
|
||||
status.message = "Username parameter not supplied.";
|
||||
status.redirect = true;
|
||||
return;
|
||||
}
|
||||
|
||||
var user = people.getPerson(username);
|
||||
// ensure we found a valid user and that it is the current user or we are an admin
|
||||
if (user == null ||
|
||||
(people.isAdmin(person) == false && user.properties.userName != person.properties.userName))
|
||||
{
|
||||
status.code = 500;
|
||||
status.message = "Failed to locate user to modify or permission denied.";
|
||||
status.redirect = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (json.has("properties"))
|
||||
{
|
||||
var props = json.get("properties");
|
||||
if (props != null)
|
||||
{
|
||||
var names = props.names();
|
||||
for (var i=0; i<props.length(); i++)
|
||||
{
|
||||
var propname = names.get(i);
|
||||
var propval = props.get(propname);
|
||||
|
||||
// set simple text properties
|
||||
user.properties[propname] = propval;
|
||||
|
||||
// update userStatusTime if updating userStatus
|
||||
if (propname.toLowerCase() == "cm:userstatus")
|
||||
{
|
||||
user.properties["cm:userStatusTime"] = new Date();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (json.has("content"))
|
||||
{
|
||||
var props = json.get("content");
|
||||
if (props != null)
|
||||
{
|
||||
var names = props.names();
|
||||
for (var i=0; i<props.length(); i++)
|
||||
{
|
||||
var propname = names.get(i);
|
||||
var propval = props.get(propname);
|
||||
|
||||
// set content property
|
||||
user.properties[propname].content = propval;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
user.save();
|
||||
model.success = true;
|
||||
}
|
||||
|
||||
main();
|
@@ -1,9 +0,0 @@
|
||||
<webscript>
|
||||
<shortname>User Status</shortname>
|
||||
<description>User Status POST for update</description>
|
||||
<format default="json" />
|
||||
<authentication>user</authentication>
|
||||
<transaction>required</transaction>
|
||||
<url>/slingshot/profile/userstatus</url>
|
||||
<lifecycle>internal</lifecycle>
|
||||
</webscript>
|
@@ -1,9 +0,0 @@
|
||||
<#escape x as jsonUtils.encodeJSONString(x)>
|
||||
{
|
||||
<#if success>
|
||||
"userStatus": "${userStatus}",
|
||||
"userStatusTime": { "iso8601": "${xmldate(userStatusTime)}"},
|
||||
</#if>
|
||||
"success": ${success?string}
|
||||
}
|
||||
</#escape>
|
@@ -1,39 +0,0 @@
|
||||
/**
|
||||
* User Status REST Update method
|
||||
*
|
||||
* @method POST
|
||||
* @param json {string}
|
||||
* {
|
||||
* status: "value"
|
||||
* }
|
||||
*/
|
||||
|
||||
function main()
|
||||
{
|
||||
model.success = false;
|
||||
|
||||
if (json.has("status"))
|
||||
{
|
||||
var newStatus = json.get("status");
|
||||
if (newStatus != null)
|
||||
{
|
||||
var statusTime = new Date();
|
||||
person.properties["cm:userStatus"] = newStatus;
|
||||
person.properties["cm:userStatusTime"] = statusTime;
|
||||
person.save();
|
||||
|
||||
model.success = true;
|
||||
model.userStatus = newStatus;
|
||||
model.userStatusTime = statusTime;
|
||||
|
||||
if (newStatus.trim() != "")
|
||||
{
|
||||
var activity = {};
|
||||
activity.status = newStatus;
|
||||
activities.postActivity("org.alfresco.profile.status-changed", null, "profile", jsonUtils.toJSONString(activity));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
Reference in New Issue
Block a user