/* * 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.

* *

This field may be used interchangeably with the string 'titleId'.

* * @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.

* *

This field may be used interchangeably with the string 'title'.

* * @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:

* * *

This field may be used interchangeably with the string * 'templateParams'.

* * @member opensocial.Activity.Field */ TEMPLATE_PARAMS : 'templateParams', /** *

A string specifying the URL that represents this activity.

* *

This field may be used interchangeably with the string 'url'.

* * @member opensocial.Activity.Field */ URL : 'url', /** *

Any photos, videos, or images that should be associated * with the activity. Higher priority ones are higher in the list. * The data has type Array< * MediaItem>.

* *

This field may be used interchangeably with the string 'mediaItems'.

* * @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.

* *

This field may be used interchangeably with the string 'bodyId'.

* * @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.

* *

This field may be used interchangeably with the string 'body'.

* * @member opensocial.Activity.Field */ BODY : 'body', /** *

An optional string ID generated by the posting application.

* *

This field may be used interchangeably with the string 'externalId'.

* * @member opensocial.Activity.Field */ EXTERNAL_ID : 'externalId', /** *

A string specifing the title of the stream.

* *

This field may be used interchangeably with the string * 'streamTitle'.

* * @member opensocial.Activity.Field */ STREAM_TITLE : 'streamTitle', /** *

A string specifying the stream's URL.

* *

This field may be used interchangeably with the string 'streamUrl'.

* * @member opensocial.Activity.Field */ STREAM_URL : 'streamUrl', /** *

A string specifying the stream's source URL.

* *

This field may be used interchangeably with the string * 'streamSourceUrl'.

* * @member opensocial.Activity.Field */ STREAM_SOURCE_URL : 'streamSourceUrl', /** *

A string specifying the URL for the stream's favicon.

* *

This field may be used interchangeably with the string * 'streamFaviconUrl'.

* * @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

* *

This field may be used interchangeably with the string 'priority'.

* * @member opensocial.Activity.Field */ PRIORITY : 'priority', /** *

A string ID that is permanently associated with this activity. * This value can not be set.

* *

This field may be used interchangeably with the string 'id'.

* * @member opensocial.Activity.Field */ ID : 'id', /** *

The string ID of the user who this activity is for. * This value can not be set.

* *

This field may be used interchangeably with the string 'userId'.

* * @member opensocial.Activity.Field */ USER_ID : 'userId', /** *

A string specifying the application that this activity is associated * with. This value can not be set.

* *

This field may be used interchangeably with the string 'appId'.

* * @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.

* *

This field may be used interchangeably with the string 'postedTime'.

* * @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) {};