/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @class * Representation of an activity. * *
Activities are rendered with a title and an optional activity body.
* *You may set the title and body directly as strings when calling * opensocial.newActivity. However, it is usually beneficial to create activities using * Message Templates for the title and body.
* *Users will have many activities in their activity streams, and containers * will not show every activity that is visible to a user. To help display * large numbers of activities, containers will summarize a list of activities * from a given source to a single entry.
* *You can provide Activity Summaries to customize the text shown when * multiple activities are summarized. If no customization is provided, a * container may ignore your activities altogether or provide default text * such as "Bob changed his status message + 20 other events like this."
*Example summaries: *
* <messagebundle>
* <msg name="LISTEN_TO_THIS_SONG:Artist">
* ${Subject.Count} of your friends have suggested listening to songs
* by ${Artist}!
* </msg>
* <msg name="LISTEN_TO_THIS_SONG:Song">
* ${Subject.Count} of your friends have suggested listening to ${Song}
* !</msg>
* <msg name="LISTEN_TO_THIS_SONG:Subject">
* ${Subject.DisplayName} has recommended ${Song.Count} songs to you.
* </msg>
* </messagebundle>
*
*
* * See also: * opensocial.Message, * opensocial.newActivity(), * * opensocial.requestCreateActivity() * * @name opensocial.Activity */ /** * Base interface for all activity objects. * * Private, see opensocial.createActivity() for usage. * * @param {Map.<opensocial.Activity.Field, Object>} params * Parameters defining the activity * @private * @constructor */ opensocial.Activity = function() {}; /** * @static * @class * All of the fields that activities can have. * *
It is only required to set one of TITLE_ID or TITLE. In addition, if you * are using any variables in your title or title template, * you must set TEMPLATE_PARAMS.
* *Other possible fields to set are: URL, MEDIA_ITEMS, BODY_ID, BODY, * EXTERNAL_ID, PRIORITY, STREAM_TITLE, STREAM_URL, STREAM_SOURCE_URL, * and STREAM_FAVICON_URL.
* *Containers are only required to use TITLE_ID or TITLE, they may ignore * additional parameters.
* ** See also: * opensocial.Activity.getField() *
* * @name opensocial.Activity.Field */ opensocial.Activity.Field = { /** *A string specifying the title template message ID in the gadget * spec.
* *The title is the primary text of an activity.
* *Titles may only have the following HTML tags: <b> <i>, * <a>, <span>. * The container may ignore this formatting when rendering the activity.
* * @member opensocial.Activity.Field */ TITLE_ID : 'titleId', /** *A string specifying the primary text of an activity.
* *Titles may only have the following HTML tags: <b> <i>, * <a>, <span>. * The container may ignore this formatting when rendering the activity.
* * @member opensocial.Activity.Field */ TITLE : 'title', /** *A map of custom key/value pairs associated with this activity. * These will be used for evaluation in templates.
* *The data has type Map<String, Object>. The
* object may be either a String or an opensocial.Person.
When passing in a person with key PersonKey, can use the following * replacement variables in the template:
*Array<
* MediaItem>.
* @member opensocial.Activity.Field
*/
MEDIA_ITEMS : 'mediaItems',
/**
* A string specifying the body template message ID in the gadget spec.
* *The body is an optional expanded version of an activity.
* *Bodies may only have the following HTML tags: <b> <i>, * <a>, <span>. * The container may ignore this formatting when rendering the activity.
* * @member opensocial.Activity.Field */ BODY_ID : 'bodyId', /** *A string specifying an optional expanded version of an activity.
* *Bodies may only have the following HTML tags: <b> <i>, * <a>, <span>. * The container may ignore this formatting when rendering the activity.
* * @member opensocial.Activity.Field */ BODY : 'body', /** * An optional string ID generated by the posting application. * @member opensocial.Activity.Field */ EXTERNAL_ID : 'externalId', /** * A string specifing the title of the stream. * @member opensocial.Activity.Field */ STREAM_TITLE : 'streamTitle', /** * A string specifying the stream's URL. * @member opensocial.Activity.Field */ STREAM_URL : 'streamUrl', /** * A string specifying the stream's source URL. * @member opensocial.Activity.Field */ STREAM_SOURCE_URL : 'streamSourceUrl', /** * A string specifying the URL for the stream's favicon. * @member opensocial.Activity.Field */ STREAM_FAVICON_URL : 'streamFaviconUrl', /** * A number between 0 and 1 representing the relative priority of * this activity in relation to other activities from the same source * @member opensocial.Activity.Field */ PRIORITY : 'priority', /** * A string ID that is permanently associated with this activity. * This value can not be set. * @member opensocial.Activity.Field */ ID : 'id', /** * The string ID of the user who this activity is for. * This value can not be set. * @member opensocial.Activity.Field */ USER_ID : 'userId', /** * A string specifying the application that this activity is associated with. * This value can not be set. * @member opensocial.Activity.Field */ APP_ID : 'appId', /** * A string specifying the time at which this activity took place * in milliseconds since the epoch. * This value can not be set. * @member opensocial.Activity.Field */ POSTED_TIME : 'postedTime' }; /** * Gets an ID that can be permanently associated with this activity. * * @return {String} The ID * @member opensocial.Activity */ opensocial.Activity.prototype.getId = function() {}; /** * Gets the activity data that's associated with the specified key. * * @param {String} key The key to get data for; * see the Field class * for possible values * @param {Map.<opensocial.DataRequest.DataRequestFields, Object>} * opt_params Additional * params * to pass to the request. * @return {String} The data * @member opensocial.Activity */ opensocial.Activity.prototype.getField = function(key, opt_params) {}; /** * Sets data for this activity associated with the given key. * * @param {String} key The key to set data for * @param {String} data The data to set */ opensocial.Activity.prototype.setField = function(key, data) {};