This is the reference for the gadget spec XML.
You can see the JavaScript reference here.
Currently, the gadgets.* JavaScript API only works in containers that also support the OpenSocial API. You can still use the original "legacy" gadgets API in all applications that support gadgets, including ones that don't support OpenSocial.
If you are interested in gaining a deeper understanding of the gadgets.* API, see the gadgets specification.
The <ModulePrefs> section
in the XML file specifies characteristics of the gadget,
such as title, author, preferred sizing, and so on. For
example:
<Module>
<ModulePrefs title="Developer Forum" title_url="http://groups.google.com/group/Google-Gadgets-API"
height="200" author="Jane Smith" author_email="xxx@google.com"/>
<Content ...>
... content ...
</Content>
</Module>
The users of your gadget cannot change these attributes.
<ModulePrefs> serves as a container element for all metadata, features, and processing rules. For nested element descriptions, see their individual sections below. This section summarizes the elements and attributes in <ModulePrefs>. In the sections below, the level of nesting is indicated by slashes. For example, /ModulePrefs/Locale describes the <Locale> element that is nested inside the <ModulePrefs> element. This might appear in a gadget specification as follows:
<ModulePrefs>
<Locale lang="en" country="us" /> <Locale lang="ja" country="jp" /> </ModulePrefs>
The following table lists the <ModulePrefs> attributes that are supported in all containers. See your container documentation for any container-specific <ModulePrefs> attributes.
| Attribute | Description |
|---|---|
title |
Optional string that provides the title of the
gadget. This title is displayed in the gadget
title bar on iGoogle.
If this string contains user
preference substitution variables and you
are planning to submit your gadget to the
iGoogle content directory, you should also provide
a directory_title for
directory display. |
title_url |
Optional string that provides a URL that the gadget title links to. For example, you could link the title to a webpage related to the gadget. |
description |
Optional string that describes the gadget. |
author |
Optional string that lists the author of the gadget. |
author_email |
Optional string that provides the gadget author's
email address. You can use any email system,
but you should not use a personal email address
because of spam. One approach is to use an email
address of the form helensmith.feedback+coolgadget@gmail.com in your gadget spec.
Gmail drops everything after the plus sign (+), so this email address is interpreted as helensmith.feedback@gmail.com. You can create a Gmail account here. |
screenshot |
Optional string that gives the URL of a gadget screenshot. This must be an image on a public web site that is not blocked by robots.txt. PNG is the preferred format, though GIF and JPG are also acceptable. Gadget screenshots should be 280 pixels wide. The height of the screenshot should be the "natural" height of the gadget when it's in use. |
thumbnail |
Optional string that gives the URL of a gadget thumbnail. This must be an image on a public web site that is not blocked by robots.txt. PNG is the preferred format, though GIF and JPG are also acceptable. Gadget thumbnails should be 120x60 pixels. |
The <Require> and <Optional> elements declare feature dependencies of the gadget.
Attributes:
"feature" -- The name of the feature. Required Examples:
<Require feature="dynamic-height"/> <Optional feature="shareable-prefs"/>
These elements provide configuration parameters for a feature.
Attributes:
"name" -- The name of the parameter. Required.The <Preload> element instructs the container to fetch data from a remote source during the gadget rendering process. This data is inlined in the rendered output, and it is available immediately when gadget code is executed. Use of this method should reduce latency for gadgets that depend on content from remote servers to render.
Attributes:
"href" -- A URL specifiying the location of the data to prefetch. Required. "authz" -- The authentication type to use for making this request. Valid values are "none" (default), "signed", and "oauth". Optional. The <Icon> element specifies a 16px x 16px image that containers can associate with a particular gadget (for example, the container might display the icon next to the gadget's name in the left nav bar).
The content of the <Icon> tag can be one of the following:
Attributes:
"mode" -- The encoding used for the icon when embedding an image. Currently, only base64 is supported. Optional. "type" -- The MIME of the embedded icon text. Optional. Examples:
<ModulePrefs title="My gadget"> <Icon>http://remote/favicon.ico</Icon> </ModulePrefs> <ModulePrefs title="My gadget"> <Icon mode="base64" type="image/png">base64 encoded data</Icon> </ModulePrefs>
The <Locale> element specifies the locales supported by your gadget. You can
also use it to specify message bundles, as described
in Gadgets and Internationalization.
Attributes:
"lang" -- The language associated with the locale. Optional."country" -- The country associated with the locale. Optional."messages" -- A URL that points to a message bundle. Message bundles are XML files that contain the translated strings for a given locale. For more information, see Gadgets and Internationalization. Optional. "language_direction" -- The direction of the gadget. Optional. Its value can either be "rtl" (right-to-left) or "ltr" (left-to-right). The default is "ltr". This attribute lets you create gadgets that support both left-to-right and right-to-left languages. For more discussion of this topic, see Creating Bi-directional Gadgets. You can use the following substitution variables in conjunction with language_direction:
__BIDI_START_EDGE__: The value is "left" when the gadget is in LTR-mode and "right" when the gadget is in RTL-mode. __BIDI_END_EDGE__: The value is "right" when the gadget is in LTR-mode and "left" when the gadget is in RTL-mode.__BIDI_DIR__: The value of this variable is "ltr" when the gadget is in LTR-mode and "rtl" when the gadget is in RTL-mode.__BIDI_REVERSE_DIR__: The value of this variable is "rtl" when the gadget is in LTR-mode and "ltr" when the gadget is in RTL-mode. For example, this snippet specifies two different locales:
<ModulePrefs> <Locale lang="en" country="us" /> <Locale lang="ja" country="jp" /> </ModulePrefs>
The "lang" (language) and "country" attributes
are both optional, but you must have at least one of
them for each <Locale>.
If you omit either attribute, the value is equivalent
to "*" and "ALL". If you specify
a country and no language, it is assumed that your gadget
supports all languages associated with the country. Likewise,
if you specify a language and no country, it is assumed
that your gadget supports all countries associated with
the language.
The valid values for language are ISO639-1 two-digit language codes, and for country they are ISO 3166-1 alpha-2 codes.
There are a few exceptions to the usual language rules:
lang="zh-cn" (typically
for country="cn").lang="zh-tw" (typically
for country="tw" or "hk", Taiwan
or Hong Kong, respectively). A container-specific link. For example, this tag could be used to support new link types, such as gadgetsHelp and gadgetsSupport.
Attributes:
"rel" -- A value that triggers a lifecycle event
. Required. "href" -- A URL. Required. "method" -- The method (POST or GET) by which the request should be send. The default is GET. Optional. A container can optionally support sending lifecycle events to an
application developer's site by sending relevant query-params to a URL
endpoint. To receive these events you can use the <Link> tag.. Each <Link> tag has a rel and an href attribute. The
href attribute denotes the endpont where event pings are sent. If the
rel attribute is "opensocialevent" then all events are sent to that endpoint.
If the rel attribute matches "opensocialevent.TYPE", then events of TYPE are sent
to that endpoint. An optional method attribute can be set to POST or
GET to specify how the request should be sent. The default is GET.
Here are some examples:
<link rel="event" href="http://www.example.com/pingme" method="POST/> <link rel="event.addapp" href="http://www.example.com/add" /> <link rel="event.removeapp" href="http://www.example.com/remove" />
Most events have information about one or more opensocial ID values. These ID values are passed as one or more ID attributes. Note that a single ping can aggregate a number of events by specifying many ID values.
The following event types are defined:
addapp -- Users that have installed the app (ID).
Optional "from" designates how the user added this
app. Possible values are "invite", "gallery", and "external".removeapp -- IDs of users that have removed the app app -- action={enabled|disabled|approved}
reason={policy|quota|maintenance}invite -- id is people invited,
from_id is the ID that sent the invitation. Some gadgets need to give users a way of supplying user-specific
information. For example, a weather gadget might require
users to provide their postal codes. The user preferences
(<UserPref>) section
in the XML file describes the user input fields that
are turned into user interface controls when the gadget
runs.
The following table lists the <UserPref> attributes:
| Attribute | Description |
|---|---|
name |
Required "symbolic" name of the user
preference; displayed to the user during editing
if no display_name is defined.
Must contain only letters, number and underscores,
i.e. the regular expression ^[a-zA-Z0-9_]+$.
Must be unique. |
display_name |
Optional string to display alongside the user preferences in the edit window. Must be unique. |
urlparam |
Optional string to pass as the parameter name
for content type="url". |
datatype |
Optional string that indicates the data type
of this attribute. Can be string, bool, enum, hidden (a
string that is not visible or user editable), list (dynamic
array generated from user input), or location (for
gadgets based on Google Maps). The default is string. |
required |
Optional boolean argument (true or false)
indicating whether this user preference is required.
The default is false. |
default_value |
Optional string that indicates a user preference's default value. |
User preferences can be accessed from your gadget using the user preferences JavaScript API, for example:
<script type="text/javascript">
var prefs = new _IG_Prefs();
var someStringPref = prefs.getString("StringPrefName");
var someIntPref = prefs.getInt("IntPrefName");
var someBoolPref = prefs.getBool("BoolPrefName");
</script>
One of the values you can specify for the <UserPref> datatype attribute
is enum. The enum data
type is presented in the user interface as a menu of
choices. You specify the contents of the menu using <EnumValue>.
For example, this <UserPref> lets
users set the level of difficulty for a game. Each value
that will appear in the menu (Easy, Medium, and Hard)
is defined using an <EnumValue> tag.
<UserPref name="difficulty"
display_name="Difficulty"
datatype="enum"
default_value="4">
<EnumValue value="3" display_value="Easy"/>
<EnumValue value="4" display_value="Medium"/>
<EnumValue value="5" display_value="Hard"/>
</UserPref>
The following table lists the <EnumValue> attributes:
| Attribute | Description |
|---|---|
value |
Required string that provides a unique value.
This value is displayed in the menu in the user
preferences edit box unless a display_value is
provided. |
display_value |
Optional string that is displayed in the menu
in the user preferences edit box. If you do not
specify a display_value,
the value is
displayed in the user interface. |
The <Content> section
defines the type of content, and either holds the content
itself or has a reference to external content. The <Content> section
is where the gadget attributes and user preferences are
combined with programming logic and formatting information
to become a running gadget. For more discussion on content
types, see Choosing
a Content Type.
The following table lists the <Content> attributes:
| Attribute | Description |
|---|---|
type |
Optional string that gives the type of the content.
The possible values are html
and url.
The default is html. |
href |
String that provides a destination URL. Required
for type="url", and not allowed for
other content types. |
cdata |
Optional string. For HTML, contains the raw HTML to render in the iframe. |
You can see the JavaScript Reference here.