Escolar Documentos
Profissional Documentos
Cultura Documentos
Documentacao - OpenSocial PDF
Documentacao - OpenSocial PDF
A web muito mais interessante quando voc pode construir aplicativos que interajam facilmente
com seus amigos e colegas. Essa tendncia tambm criou uma lista crescente de APIs especficas
para sites, que os desenvolvedores precisam aprender.
O servio OpenSocial oferece um conjunto de APIs comuns para desenvolver aplicativos sociais
que iro funcionar em diversos sites. Elas possibilitam que os desenvolvedores criem aplicativos
utilizando JavaScript e HTML padro para acessar amigos de uma rede social e atualizar feeds.
Servidor opcional
O OpenSocial foi criado com a tecnologia do Google Gadget. Voc pode criar um aplicativo social
timo e "viral" com custos mnimos ou inexistentes de servidor. Com o Google Gadget Editor e
uma API simples de valor essencial, voc pode criar um aplicativo social completo sem nenhum
servidor. claro que voc tambm pode hospedar seu aplicativo em seus prprios servidores, se
preferir. Em todo caso, a tecnologia de cache de gadget do Google alivia a demanda de largura de
banda, caso seu aplicativo se torne um sucesso mundial.
Sees Tpicos selecionados
"Hello, World"
Primeiros passos
Em que consiste um Gadget?
Etapas bsicas
Criao dos seus prprios gadgets
Anatomia de um gadget
Seleo do tipo de contedo
Como transformar uma pgina da web ou aplicativo
existente em um gadget
Fundamentos do desenvolvimento
Uso de tipos de dados Userpref
Como salvar o estado
Criao de gadgets que necessitam de login ou cookies
Dicas de programao e depurao
Ferramentas para desenvolvedores Hospedagem atravs do Google Gadgets Editor
Hospedagem no Google Code
Gerenciamento da altura do gadget
Definio do ttulo do gadget
Criao de uma interface de
Guias
usurio
MiniMessages
Flash
Uso de texto
Uso de XML
Uso de contedo remoto
Uso de feeds
Uso de JSON
Criao de um gadget localizado
Internacionalizao Pacotes de mensagens
Uso de pacotes de mensagens em um gadget
Gadgets em idiomas diferentes do Onde posso encontrar gadgets que no sejam em ingls?
ingls Criao de gadgets em idiomas diferentes do ingls
Onde posso colocar meu gadget?
Publicao do seu gadget Preparao para a publicao
Publicao no diretrio de contedo do iGoogle
Preferncias do gadget
Referncia das especificaes de
Preferncias do usurio
gadgets
Seo de contedo
Referncia de JavaScript
Primeiros passos
Bem-vindo API de gadgets!
Este guia do desenvolvedor baseado na verso gadgets.* da API de gadgets JavaScript. A API
de gadgets foi inserida no namespace API JavaScript de gadgets.* para fornecer uma API mais
limpa para programao e suporte. Para saber mais sobre a API de gadgets.*, consulte a
documentao de referncia aqui. Embora a API de gadgets.* tenha muita coisa em comum com
a API de gadgets antiga, tambm h diferenas importantes.
Atualmente apenas alguns recipientes (um recipiente um site ou aplicativo que executa gadgets)
suportam a gadgets.* API. Para ver uma lista dos recipientes que suportam a gadgets.*
API, consulte a lista de recipientes do OpenSocial. Alguns recipientes mais antigos suportam
apenas a API de gadgets antiga. Portanto, verifique a documentao do seu recipiente especfico
para saber qual API suportada. Para saber mais sobre os tipos diferentes de gadgets e onde eles
podem ser executados, consulte a Viso geral da API de gadgets.
Este guia do desenvolvedor destina-se a pessoas que desejam usar a API para criar gadgets. Por
serem muito fceis de criar, os gadgets so um excelente ponto de partida se voc estiver
comeando a aprender sobre programao da web.
Hello, World"
O gadget mais simples tem apenas algumas linhas de cdigo. Este gadget exibe a mensagem "Hello,
world!":
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="hello world example" />
<Content type="html">
<![CDATA[
Hello, world!
]]>
</Content>
</Module>
Etapas bsicas
Aqui esto as etapas bsicas que voc deve seguir para criar e implementar um gadget:
1. Use qualquer editor de texto para escrever as especificaes do seu gadget e guarde essas
informaes em um servidor da web pblico.
2. Adicione seu gadget a um recipiente, como o iGoogle ou Orkut. Um recipiente um
aplicativo ou site com a capacidade de executar gadgets.
Anatomia de um gadget
Depois de compreender como editar e publicar gadgets, voc est pronto para incluir recursos mais
avanados nas especificaes do seu gadget. A especificao do gadget XML composta por 3
partes principais:
Seo de contedo. A seo <Content> onde ocorre o funcionamento mais importante
do seu gadget. onde voc especifica o tipo de gadget, a lgica de programao e,
freqentemente, os elementos HTML que determinam a aparncia do gadget.
Preferncias do usurio. A seo <UserPrefs> define os controles que permitem que os
usurios especifiquem configuraes do gadget. Por exemplo, um gadget de saudaes
personalizadas pode fornecer um campo de texto para o usurio especificar seu nome.
Preferncias do gadget. A seo <ModulePrefs> do arquivo XML especifica as
caractersticas do gadget, como ttulo, autor, tamanho preferido e assim por diante.
Observao: Dentro dos atributos XML das especificaes de um gadget, alguns caracteres
precisam ter um "escape" (ou seja, precisam ser codificados adequadamente) para que sejam
interpretados corretamente. Para obter mais informaes, consulte Codificao de escape de
caracteres especiais.
Ao criar um gadget, comece pela seo <Content>.
Definio de contedo
A seo <Content> representa o "crebro" de um gadget. A seo <Content> define o tipo de
contedo e contm o prprio contedo ou um link para contedo externo. A seo <Content>
onde os atributos do gadget e as preferncias do usurio so combinados lgica de programao e
s informaes de formatao para se transformarem em um gadget executvel.
A maneira mais fcil de criar um gadget simplesmente colocando HTML (e como opo,
JavaScript ou Flash) na seo <Content>. Os desenvolvedores de web experientes podem usar a
seo Seleo do tipo de contedo para obter outras opes relacionadas a controle de acesso,
hospedagem remota, uso de linguagens de scripts alternativas e outros tpicos. Veja aqui um
exemplo simples de gadget. Este gadget exibe uma fotografia que pode ser clicada para abrir um
lbum de fotos em uma nova pgina HTML:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Go to Photo Album" height="250" scaling="false" />
<Content type="html">
<![CDATA[
<div style="text-align:center"><a
id="Riggs" title="My Photo Album" target="_blank"
href="http://picasaweb.google.com/doc.examples/ShelfBoy">
<img border="0" alt="Photo"
src="http://doc.examples.googlepages.com/Riggsie-OP.jpg"
title="Click Here."></a>
</div>
]]>
</Content>
</Module>
Observe que:
A linha 3 do arquivo contm o texto title="Preferences for __UP_myname__".
Ao executar o gadget, o valor fornecido pela preferncia de usurio myname substitudo
dinamicamente por __UP_myname__.
A preferncia de usurio myname est marcada como "obrigatria". Se o usurio tentar
executar o gadget sem fornecer um valor para esse campo, a caixa de edio das preferncias
de usurio permanece aberta at que um valor seja fornecido.
A preferncia de usurio mychoice possui o tipo de dados bool. Ela exibida na interface
de usurio como uma caixa de seleo.
A preferncia de usurio mycolor possui o tipo de dados enum. A lista de EnumValues
especifica as opes que aparecem em um menu suspenso na caixa de edio das
preferncias do usurio.
Aqui est o gadget completo, incluindo o JavaScript que exibe a saudao do gadget:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Preferences for __UP_myname__" height="400"/>
<UserPref name="myname" display_name="Name" default_value="Rowan"/>
<UserPref name="myphoto" display_name="Photo"
default_value="http://doc.examples.googlepages.com/rowan-headshot.jpg"/>
<UserPref name="mychoice" display_name="Show Photo?" datatype="bool"
default_value="true"/>
<UserPref name="mycolor" display_name="Color" default_value="Yellow"
datatype="enum" >
<EnumValue value="Red" />
<EnumValue value="Aqua" />
<EnumValue value="Lime" />
<EnumValue value="Yellow" />
<EnumValue value="Pink" />
<EnumValue value="Orange" />
<EnumValue value="White" />
</UserPref>
<Content type="html"><![CDATA[
<div id="content_div"></div>
<script type="text/javascript">
// Get userprefs
var prefs = new gadgets.Prefs();
function displayGreeting () {
// Get current time
var today = new Date();
var time = today.getTime();
var html = "";
// Based on the time of day, display an appropriate greeting
var hour = today.getHours();
var salutation = "Afternoon";
if (hour < 12) {
salutation = "Morning";
} else if (hour > 17) {
salutation = "Evening";
}
</script>
]]>
</Content>
</Module>
Consulte a Referncia de JavaScript para obter uma lista de todas as funes JavaScript.
HTML
Com o tipo de contedo html, o cdigo completo normalmente reside nas especificaes do
gadget. Isso inclui o XML do gadget e qualquer markup HTML e JavaScript. Quase todos os
exemplos deste guia do desenvolvedor usam o tipo de contedo html. Ele o tipo mais flexvel e
verstil e voc deve normalmente optar por ele, a menos que esteja criando um gadget com
requisitos especficos.
O exemplo a seguir demonstra a implementao de um gadget do recurso ROT13. O ROT13
criptografa textos substituindo cada letra pela letra que est 13 posies frente no alfabeto.
Quando o recurso ROT13 reaplicado, ele rotaciona cada letra novamente, restaurando o texto
original.
Esta a especificao do gadget:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Magic Decoder"/>
<Content type="html">
<![CDATA[
<script type="text/javascript">
]]></Content>
</Module>
URL
Quando um gadget possui o tipo de contedo type="url", o atributo href= fornece um URL e
qualquer outro contedo da especificao do gadget ignorado. Com o tipo de contedo url,
supe-se que todas as informaes relacionadas interface de usurio e lgica programtica do
gadget residem no arquivo apontado pelo URL. No se deve colocar nenhum markup HTML ou
JavaScript dentro do gadget em si. Por exemplo:
<Module>
<ModulePrefs ... />
<Content type="url" href="http://www/cgi-bin/example/gadgets/mystats.cgi" />
</Module>
O gadget acessa os valores da lista usando a funo Prefs getArray(),; por exemplo:
var search_terms = prefs.getArray("mylist");
Dentro da matriz, os itens so armazenados em uma lista separada por barras verticais. Voc pode
usar a funo getString() de Prefs para retornar esta lista como uma nica string na qual os
valores so separados pelo caractere barra vertical (|); por exemplo:
prefs.getString("mylist");
Voc tambm pode usar uma string separada por barras verticais para definir os valores padro de
um tipo de dados list:
<UserPref name="mylist" display_name="Add Search Terms" datatype="list"
default_value="zdnet|pc|Apple Insider"/>
</ModulePrefs>
...
prefs.setArray("mylist", ["Nokia","CNET"]);
Aqui est um exemplo simples que fornece os itens da lista digitados pelo usurio na caixa Edit
(Editar):
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs
title="List Data Type Example"
scrolling="true"/>
<UserPref name="mylist"
display_name="Add Terms"
datatype="list" />
<Content type="html">
<![CDATA[
<div id=content_div></div>
<script type="text/javascript">
// Get userprefs
var prefs = new gadgets.Prefs();
// If the user has not added any terms yet, display message.
if (terms.length == 0)
{
html += "Edit the userprefs to add terms.";
}
else {
html += "Your terms are:<br /><br />";
for (var i = 0; i < terms.length ; i++) {
var term = (terms[i]);
html += term + "<br />";
}
}
document.getElementById("content_div").innerHTML = html;
</script>
]]>
</Content>
</Module>
]]>
</Content>
</Module>
</script>
<input type=button value="Count" name="count" onClick="incrementCounter()">
<input type=button value="Reset" name="reset" onClick="resetCounter()">
]]>
</Content>
</Module>
Observao: Se for necessrio armazenar diversos valores, recomendamos salv-los em uma string
JSON.
Esse comando deve ser chamado antes da exibio de qualquer resultado na pgina.
Informe os usurios. Isso pode ser feito em JavaScript, como nesta amostra de gadget
(experimente) . Voc tambm pode integrar instrues sua lgica de autenticao. Se
detectar o bloqueio de cookies, informe os usurios que eles devem afrouxar sua
configurao de privacidade ou experimentar um navegador diferente. Por exemplo, voc
pode exibir uma mensagem como:
Seu navegador no compatvel com este site na configurao atual. Se estiver usando
o Microsoft Internet Explorer, altere sua configurao de segurana selecionando
Ferramentas > Opes da Internet. Abra a guia Privacidade, clique em Avanado e,
em seguida, clique em Ignorar manipulao automtica de cookies. Em Cookies
Secundrios, clique em Aceitar. Como alternativa, voc pode usar outro navegador,
como o Firefox.
Ferramentas para desenvolvedores
Este documento fornece diretrizes gerais para programao, depurao e hospedagem de gadgets.
// Display date
function displayDate (){
// DEBUG: is the function getting called?
print("In displayDate function<br>");
content_html += today.toDateString();
// Write content HTML to div
document.getElementById("content_div").innerHTML = content_html;
}
Observao: Consulte MiniMessages para obter uma descrio da API de MiniMessages, que
permite modificar o comportamento e a aparncia das mensagens exibidas em um gadget.
Ferramentas adicionais
As funes adicionais do Firefox descritas abaixo podem ajud-lo a obter uma viso mais detalhada
dos seus gadgets durante o desenvolvimento:
O Firebug fornece ferramentas de depurao e inspeo de DOM.
O Web Developer adiciona um menu e uma barra de ferramentas ao navegador, contendo
ferramentas de desenvolvedor da web.
O comando fica disponvel somente depois que o gadget salvo (salvar faz o GGE
hospedar seu gadget). Para obter mais informaes, consulte Publicao do seu
gadget com o GGE.
Delete Exibe uma lista dos seus gadgets no GGE e permite que voc selecione os itens
(Excluir) que deseja excluir.
Bloqueio de um projeto
Antes de enviar arquivos, voc precisa bloquear o cdigo a partir do repositrio do seu projeto no
Subversion. Para isso, so necessrias trs informaes: o URL do repositrio (use a verso
precedida por https, e no por http), o nome de usurio e a senha. Para encontrar estas
informaes, v para a guia Source do seu projeto (http://code.google.com/p/<project-
name>/source). Ela deve conter algo como:
svn checkout https://<project-name>.googlecode.com/svn/trunk/ gadgets-test
--username <username>
Quando solicitado, digite a senha SVN que foi gerada.
Mantenha esta pgina aberta em um navegador para poder recuperar as informaes apropriadas
conforme necessrio.
Os detalhes do bloqueio atual podem variar dependendo do cliente do Subversion que voc estiver
usando, mas o processo geral o mesmo. As instrues desta seo supem que voc esteja
usando o TortoiseSVN.
Para bloquear um projeto:
1. Crie uma nova pasta no Windows Explorer e navegue para dentro da pasta.
2. Clique com o boto direito e selecione SVN Checkout... (Bloqueio no SVN).
3. Digite o URL do repositrio e clique em OK. Nesta etapa, necessrio usar a verso do
URL do repositrio precedida por https. Isso garante acesso de leitura e gravao. A verso
iniciada por http fornece acesso somente para leitura, e voc no poder adicionar ou enviar
arquivos.
4. O TortoiseSVN conecta-se ao servidor e tenta autenticar voc. O nome de usurio e a senha
so solicitados. Digite o nome de usurio e a senha, marque a opo Save authentication
(Salvar autenticao) e clique em OK. Se o nome de usurio e a senha no forem
solicitados, volte Etapa 3 e verifique se o URL do seu repositrio comea com https (e no
com http).
Neste ponto, o cliente conecta e bloqueia todo o repositrio. Pronto!
Se o bloqueio for concludo com sucesso, voc ver uma nova pasta oculta, /.svn. No modifique
nem exclua essa pasta.
Envio de arquivos
Depois de verificar seu projeto, voc pode comear a adicionar novas pastas e arquivos ao diretrio,
usando os comandos do Subversion. As instrues desta seo supem que voc esteja usando o
TortoiseSVN.
Para enviar um arquivo:
1. Crie um novo arquivo no diretrio <project-name>.googlecode.com/svn/trunk/ e salve-o
(por exemplo, new-gadget.xml). Voc pode colocar o arquivo diretamente no diretrio
/trunk ou em um subdiretrio de /trunk.
2. Clique com o boto direito no arquivo e selecione Add... (Adicionar...). Isso simplesmente
marca o arquivo como adicionado. Neste ponto, o arquivo ainda no foi enviado ao servidor.
Se voc colocar o arquivo em um diretrio que ainda no foi adicionado ao repositrio,
tambm ser necessrio adicionar o diretrio. Ao adicionar um diretrio, todos os arquivos
dentro dele so adicionados tambm. As mesmas regras se aplicam para o envio de
alteraes. Voc no poder enviar um arquivo ao repositrio se o diretrio no qual ele est
inserido no for enviado.
3. Continue editando o arquivo at que ele esteja pronto para ser enviado.
4. Quando estiver pronto para envi-lo, clique no arquivo com o boto direito e selecione SVN
Commit... (Enviar para SVN...).
Quando solicitado, escreva uma observao opcional no log de mensagens e clique em OK. A
transferncia do arquivo para o servidor iniciada.
Quando o arquivo transmitido para o servidor, o envio concludo e o arquivo fica disponvel
imediatamente on-line em http://<project-name>.googlecode.com/svn/trunk/new-gadget.xml. Para
apenas ler arquivos no repositrio, basta usar a verso do URL do repositrio que comea com http.
Dentro do seu repositrio, voc pode criar estruturas de diretrio que sero refletidas no URL. Por
exemplo, se voc adicionar e enviar um novo arquivo em /a/b/c/new-gadget.xml, o arquivo ser
hospedado em http://<project-name>.googlecode.com/svn/trunk/a/b/c/new-gadget.xml.
Criao de uma interface de usurio
Este documento descreve como adicionar os diversos elementos de interface de usurio ao seu
gadget.
Para obter orientaes sobre como testar a largura e a altura de um gadget, consulte Teste de largura
e altura.
Guias
Use a biblioteca de guias para adicionar uma interface de usurio com guias ao seu gadget. Para
usar guias, a especificao do seu gadget deve incluir no mnimo:
Em <ModulePrefs>, um tag <Require feature="tabs"/> para informar ao
gadget que ele precisa carregar a biblioteca tabs.
JavaScript para criar as guias e preench-las com contedo. Para obter mais detalhes,
consulte Como funciona.
Tambm comum incluir a biblioteca setprefs para que o gadget possa armazenar sempre a
ltima guia selecionada pelo usurio. Assim, se o usurio sair e retornar pgina, o gadget carrega a
guia armazenada. Para aproveitar este recurso, incorpore duas linhas de cdigo na especificao do
seu gadget:
<Require feature="setprefs"/>
...
<UserPref name="selectedTab" datatype="hidden"/>
Como funciona
Use o construtor gadgets.TabSet() para criar um objeto de guias (ou seja, um objeto
contendo um conjunto de guias indexadas). Por exemplo:
// Initialize tabs, designate the tab named "Two" as
// the tab selected by default.
var tabs = new gadgets.TabSet(__MODULE_ID__, "Two");
Depois de criar o objeto de guias, adicione as guias individuais a ele usando a funo addTab().
Uma guia individual apresenta trs componentes principais: um ndice, um nome e um ID exclusivo
que igual ao ID de um <div> correspondente. O <div> o local onde o contedo da guia
colocado. Se voc no fornecer o recipiente de <div>, a biblioteca de guias ir ger-lo.
O mtodo addTab() utiliza os seguintes argumentos:
String tabName -- Marcador da guia a ser criada.
Object opt_params -- Objeto de parmetro opcional. Ele pode incluir:
contentContainer --Um elemento HTML existente para ser usado como
recipiente do contedo da guia. Se omitido, a biblioteca de guias cria um elemento.
callback --funo mA callback a ser executada quando a guia selecionada.
tooltip-- Uma descrio de dica de ferramenta que aparece quando o usurio
move o cursor do mouse sobre a guia.
index -- o ndice no qual a guia ser inserida. Se omitido, a nova guia anexada
no final.
addTab() retorna uma string contendo o ID do DOM do recipiente da guia.
Voc pode adicionar uma guia a um objeto de guias e preench-la com contedo usando uma das
maneiras descritas abaixo:
Tcnica 1: Capture o ID da guia ao cri-la e use o ID para adicionar contedo ao <div>
correspondente da guia:
var one_Id = tabs.addTab("One");
document.getElementById(one_Id).innerHTML = "Content for tab One.";
Uma variao desta abordagem definir o nome da guia em HTML. Por exemplo:
var one_Id = tabs.addTab('<div style="color: red; font-weight: bold; background-
color:#ccf;">Cool Tab</div>');
document.getElementById(one_Id).innerHTML = "Content for tab One.";
Tcnica 2: Crie a guia e adicione um <div> correspondente parte HTML do gadget; coloque o
contedo esttico no <div>:
tabs.addTab("Two", "two_id");
...
</script>
<div id="two_id" style="display:none">Content for tab Two.</div>
Tcnica 3: Crie a guia e adicione um <div> correspondente parte HTML do gadget; coloque o
contedo esttico no <div>: Use uma funo de retorno de chamada para adicionar contedo
dinmico ao contedo esttico:
tabs.addTab("Three", "three_id", callback);
...
function callback(tabId) {
var p = document.createElement("p");
p.innerHTML = "This is dynamic content generated in callback.";
document.getElementById(tabId).appendChild(p);
}
...
</script>
<div id="three_id" style="display:none">This is static content for tab
Three.</div>
Tcnica 4: Use a funo addTab(tabName, opt_params) para adicionar uma guia por
nome. Por exemplo:
tabs.addTab("Tab", {
contentContainer: document.getElementById("domId"),
callback: func,
tooltip: "Popup description"
});
Aqui est um exemplo de gadget que mostra as maneiras diferentes de adicionar guias e preench-
las com contedo:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Tabs Demo" height="140" scrolling="true" >
<Require feature="tabs" />
</ModulePrefs>
<Content type="html">
<![CDATA[
<script type="text/javascript">
// Initialize tabs, designate the tab named "Two" as
// the tab selected by default.
var tabs = new gadgets.TabSet(__MODULE_ID__, "Two");
function init() {
// Technique #1: Capture the tab's ID when you create it, and use the ID
// to add content to the tab's corresponding <div>.
var one_Id = tabs.addTab('<div style="color: red; font-weight: bold;
background-color:#ccf;">Cool Tab</div>');
document.getElementById(one_Id).innerHTML = "Content for tab One.";
// Technique #2: Create the tab and define a corresponding <div> in the
// HTML portion of the gadget. Add static content to the <div>.
tabs.addTab("Two", {
contentContainer: document.getElementById("two_id")
});
// Technique #3: Create the tab and define a corresponding <div> in the
// HTML portion of the gadget. Add static content to the <div>.
// Use a callback function to add dynamic content to the static content.
tabs.addTab("Three", {
contentContainer: document.getElementById("three_id"),
callback: callback
});
// Technique #4: Create the tab with a tooltip message. If specified
<div>
// doesn't exist, tabs library creates one.
// Invoke callback function.
tabs.addTab("Four", {
contentContainer: document.getElementById("four_id"),
callback: callback,
tooltip: "I'm special"
});
}
Aqui est um exemplo de como mover uma guia programaticamente. Este snippet cria um link.
Quando o usurio clica no link, o gadget troca as posies da primeira e da segunda guia:
<script>
...
function switchTabs() {
tabs.swapTabs(0, 1);
}
</script>
<a href="javascript:void(0)" onclick="switchTabs()">Switch Tabs</a>
<script...>
Voc tambm pode usar JavaScript para aplicar estilos CSS ao recipiente de cabealho das guias. A
funo getHeaderContainer() retorna a tabela HTML das guias, que voc pode modificar
conforme desejar.
Por exemplo, este snippet altera o tamanho da fonte e adiciona margem no alto:
var tabs = new gadgets.TabSet();
...
var table = tabs.getHeaderContainer();
table.style.fontSize = "10px";
table.style.marginTop = "15px";
Voc pode personalizar o estilo dos cabealhos de guias individuais, obtendo os elementos da guia
individual e modificando suas propriedades. Veja um exemplo que torna o estilo da primeira guia
exclusivo:
var tabs = new gadgets.TabSet();
tabs.addTab("Unique");
...
var firstTab = tabs.getTabs()[0].getNameContainer();
firstTab.style.backgroundColor = "#999999";
firstTab.style.color = "#ffffff";
MiniMessages
Uma MiniMessage uma mensagem temporria exibida aos usurios dentro de um gadget. As
MiniMessages foram criadas para serem eliminadas programaticamente ou pelo usurio. Os tipos
bsicos de MiniMessages so:
Mensagens dispensveis que os usurios removem clicando em um [x].
Mensagens de temporizador que desaparecem depois de decorrido um determinado perodo
de tempo em segundos.
Mensagens estticas que devem ser dispensadas programaticamente.
Para usar MiniMessages, a especificao do seu gadget deve incluir:
Em <ModulePrefs>, uma tag <Require feature="minimessage"/> para
informar ao gadget que ele precisa carregar a biblioteca de MiniMessages.
Funes JavaScript descrevendo o comportamento da MiniMessage. Consulte a Referncia
para obter uma lista completa das funes da biblioteca de MiniMessages.
Veja alguns dos motivos para usar MiniMessages:
Promoo: Voc pode usar as MiniMessages para exibir uma mensagem promocional no
gadget.
Status: Muitos gadgets obtm e carregam dados em segundo plano. Voc pode usar
MiniMessages para exibir "Carregando..." ou outras mensagens relacionadas a status.
Depurao/erro: Se um gadget encontrar um erro, ele pode usar as MiniMessages para
notificar o usurio, em vez de falhar em silncio.
Outros: Dependendo do tipo de gadget (por exemplo, calendrio, eBay), voc pode exibir
notificaes para os usurios. Como as MiniMessages so pequenas e dispensveis, use-as
para comunicar informaes especiais.
Como funciona
As etapas bsicas da adio de uma MiniMessage ao gadget so simples:
1. Importe a biblioteca de MiniMessages:
<Require feature="minimessage"/>
Na maioria dos casos, voc criar um nico objeto global que possa ser acessado por todos os
escopos.
3. Crie uma nova MiniMessage com um texto:
msg.createDismissibleMessage("Please close me when you're done reading me.");
Isso adiciona no incio do gadget uma mensagem pr-formatada dispensvel com um [x] associado
a ela. Quando os usurios clicam no [x], a mensagem fechada.
Pronto! Voc criou um dos diversos tipos de mensagens dispensveis.
<div id="messageBox"></div>
<script type="text/javascript">
// In the constructor, state that messages should be be displayed
// in the messageBox <div> rather than at the top of the gadget.
var msg = new gadgets.MiniMessage(__MODULE_ID__,
document.getElementById("messageBox"));
msg.createDismissibleMessage("I'm the first message.");
msg.createDismissibleMessage("I'm the second message.");
msg.createDismissibleMessage("I'm at the bottom.");
</script>
<script type="text/javascript">
var msg = new gadgets.MiniMessage(__MODULE_ID__);
// Pass the HTML element to createDismissableMessage() to indicate
// where the message should be displayed.
msg.createDismissibleMessage(document.getElementById("status"));
</script>
</script>
Criao de uma mensagem de temporizador
Uma mensagem de temporizador pr-formatada para desaparecer depois de decorrido o perodo
de tempo especificado. A funo createTimerMessage() aceita dois parmetros: uma string
de mensagem e um nmero indicando a durao, em segundos, da exibio da mensagem. Por
exemplo:
var msg = new gadgets.MiniMessage(__MODULE_ID__);
msg.createTimerMessage("I'm going to disappear in 5 seconds.", 5);
Observao: Este exemplo mostra a forma correta de alterar totalmente a cor de fundo de uma
mensagem. A cor de fundo no ser totalmente alterada se apenas a configurao da cor de fundo do
<div> que contm a mensagem for alterada.
.mmlib_table__MODULE_ID__ {
background-color: #000066;
color: #ffffff;
}
</style>
<script...>
Flash
Use a biblioteca flash para incorporar um filme Flash (especificamente, um arquivo .swf) em
seu gadget. Para incorporar contedo Flash, a especificao do seu gadget deve incluir no mnimo:
Em <ModulePrefs>, uma tag <Require feature="flash"/> para informar ao
gadget que ele precisa carregar a biblioteca flash.
Uma chamada a gadgets.flash.embedFlash() para incorporar um arquivo .swf
no gadget e exibi-lo em um local designado. Para usar esse recurso, todos os recursos devem
estar em um nico arquivo .swf.
A biblioteca flash inclui as seguintes funes:
Funo Descrio
Incorpora o arquivo .swf especificado por swf_url e o
exibe no gadget no local especificado por swf_container.
O parmetro opt_params um objeto opcional que pode
conter qualquer parmetro html vlido.
gadgets.flash.embedCach
Injeta um arquivo Flash com cache na rvore DOM. Os
edFlash(swf_url,
parmetros e o valor retornado so os mesmos do mtodo
swf_container,
embedFlash().
swfVersion, opt_params)
gadgets.flash.getMajorV Retorna a principal verso do Flash Player, ou zero se o Flash
ersion() Player no for detectado.
Exemplo de Flash
Quando voc clica em algum boto deste exemplo de gadget, ele reproduz o arquivo .swf
correspondente. Quando voc clica em Stop, o gadget exibe uma fotografia esttica.
Aqui est a especificao do gadget do exemplo:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Trevor Does Tricks" height="300">
<Require feature="flash" />
</ModulePrefs>
<Content type="html">
<![CDATA[
<style type="text/css">
input.mybutton
{
background-color:#FFCC99;
border-style:solid;
border-color:#000000;
font-family:Comic Sans MS,sans-serif;
font-size:14px;
}
</style>
<script type="text/javascript">
// Display still photo.
function showPhoto() {
document.getElementById("flashcontainer").innerHTML = "<img
src='http://doc.examples.googlepages.com/Trevor.JPG' />";
}
// Play .swf file for specified trick.
function doTrick(trick) {
// The URL for the .swf file that shows the specified trick.
var url = "http://doc.examples.googlepages.com/Trevor-"+trick+".swf";
Introduo
A capacidade de combinar informaes de diversas fontes de maneiras novas ou de fornecer meios
alternativos de interao com informaes existentes um dos recursos mais empolgantes
disponveis para os gadgets. A API de gadgets permite que o gadget obtenha remotamente contedo
de outros servidores e pginas da web e realize operaes com esse contedo.
A API de gadgets fornece a funo makeRequest(url, callback, opt_params) para
recuperao e operao com contedo da web remoto. Ela aceita os seguintes argumentos:
String url - O URL no qual o contedo est localizado
Function callback - A funo a ser chamada com os dados do URL aps a obteno
Map.<gadgets.io.RequestParameters, Object> opt_params - Parmetros
adicionais a serem passados para a solicitao
O argumento opt_params permite especificar:
O tipo de contedo da solicitao (atualmente suportados: TEXT, XML e JSON)
O tipo de mtodo da solicitao (POST ou GET)
Qualquer cabealho que voc deseje incluir na solicitao
O tipo de autorizao (suportado atualmente: NONE ou SIGNED)
Para ler mais sobre os parmetros opcionais que podem ser passados, consulte o artigo Introduo
funo makeRequest.
Observao: Voc no pode usar makeRequest() com gadgets type="url".
Independentemente do tipo de dados sendo obtidos, as chamadas a makeRequest()
compartilham as mesmas caractersticas:
Seu primeiro parmetro um URL usado para obter o contedo remoto.
Seu segundo parmetro uma funo de retorno de chamada, usada para processar os dados
retornados.
Elas so assncronas, ou seja, todo o processamento deve ocorrer dentro da funo de
retorno de chamada. Um retorno de chamada uma funo passada como parmetro (na
forma de uma referncia de funo) a outra funo. Os retornos de chamada fornecem aos
desenvolvedores um "gancho" que pode ser conectado a uma estrutura em execuo para
realizar processamentos.
Eles no tm valores de retorno porque so retornados imediatamente, e as funes de
retorno de chamada a eles associadas so chamadas sempre que a resposta retornada.
Por exemplo, pense no seguinte snippet de cdigo, que obtm contedo remoto em forma de texto.
Este cdigo obtm o texto HTML da pgina google.com da web e exibe os primeiros 400
caracteres:
function getHtml() {
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] =
gadgets.io.ContentType.TEXT;
var url = "http://www.google.com";
gadgets.io.makeRequest(url, response, params);
};
function response(obj) {
//obj.text contains the text of the page that was requested
var str = obj.text;
var html = str.substr(0,400);
document.getElementById('content_div').innerHTML = html;
};
gadgets.util.registerOnLoadHandler(getHtml);
Este exemplo ilustra os princpios bsicos por trs do funcionamento da funo makeRequest():
1. Quando a funo makeRequest() chamada, a API de gadgets faz uma solicitao
HTTP GET assncrona ao URL passado funo (neste exemplo, o URL
http://www.google.com).
2. makeRequest() retornada imediatamente e chama a funo de retorno de chamada
posteriormente (neste exemplo, denominada response()), quando todo o contedo
obtido. Isso significa que voc deve colocar todos os cdigos dependentes dentro da funo
de retorno de chamada ou dentro de funes chamadas pela funo de retorno de chamada.
3. makeRequest() retorna um objeto JavaScript com a seguinte estrutura:
{
data : <parsed data, if applicable>,
errors : <any errors that occurred>,
text : <raw text of the response>
}
Este objeto fornecido somente como o argumento para a funo de retorno de chamada. A funo
de retorno de chamada executa algumas operaes com os dados retornados. Normalmente, ela
extrai partes dos dados, combina-os com markup HTML e exibe o HTML resultante no gadget.
Uso de texto
Aqui est um exemplo que obtm dados de um arquivo CSV (valores separados por vrgulas) e os
utiliza para preencher uma lista de contatos pessoais. Ele mostra como definir o tipo do contedo
obtido nos parmetros opcionais. Na funo response(obj) de retorno de chamada, o valor do
texto extrado de obj usando obj.text:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Fetch Text Example"/>
<Content type="html">
<![CDATA[
<div id="content_div"></div>
<script type="text/javascript">
// This example fetches data from a CSV file containing contact information.
In the CSV file,
// each record consists of a name, email address, and phone number.
function getContacts() {
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] =
gadgets.io.ContentType.TEXT;
var url = "http://gadget-doc-examples.googlecode.com/svn/trunk/opensocial-
gadgets/Contacts.csv";
gadgets.io.makeRequest(url, response, params);
};
// Callback function to process the response
function response(obj) {
var responseText = obj.text;
// Set CSS for div.
var html = "<div style='padding: 5px;background-color: #FFFFBF;font-
family:Arial, Helvetica;"
+ "text-align:left;font-size:90%'>";
</script>
]]>
</Content>
</Module>
Uso de XML
O DOM (Document Object Model, Modelo de objeto de documento) uma API para navegao em
documentos HTML e XML. Voc pode usar makeRequest() para recuperar um documento
XML como um objeto DOM. Voc pode operar o objeto obtido usando funes DOM JavaScript
padro. Normalmente, isso significa extrair os dados desejados do arquivo XML, combin-los com
markup HTML e CSS e exibir o HTML resultante em seu gadget.
Com o DOM, o contedo da web analisado em uma rvore de ns. Por exemplo, veja o snippet de
HTML abaixo:
<a href="http://www.google.com/">Google's <b>fast</b> home page.</a>
Para acessar os dados de um objeto DOM voc "percorre a rvore", usando funes DOM para
navegar pelos relacionamentos de n pai-filho e chegar aos dados necessrios.
Exemplo
O arquivo XML abaixo contm dados para uma srie de itens de caf da manh. O primeiro n-pai
menu, que possui diversos ns-filho food. O n menu tambm contm um n de atributo:
title="Breakfast Menu". Cada n food possui os ns-filho name, price, description e calories.
Os ns name, price e calories contm seus prprios ns-filho de texto. Cada n description contm
um n-filho CDATA. CDATA um tipo distinto de n. As sees CDATA so usadas para adicionar
cdigos de escape a blocos de texto contendo caracteres (como sinais de menor e maior) que, de
outra forma, seriam considerados markup. O nico separador reconhecido em uma seo CDATA
a string "]]>", que finaliza a seo CDATA.
<?xml version="1.0" encoding="UTF-8" ?>
<menu title="Breakfast Menu">
<food>
<name>Early Bird Breakfast</name>
<price>$3.95</price>
<description><![CDATA[<div style="color:purple; padding-left:25px;">Two
eggs any style with your choice of bacon
or sausage, toast or English muffin.</div>]]></description>
<calories>450</calories>
</food>
<food>
<name>Chocolate Chip Belgian Waffles</name>
<price>$7.95</price>
<description><![CDATA[<div style="color:purple; padding-left:
25px;">Chocolate chip Belgian waffles covered with
chocolate syrup and whipped cream.</div>]]></description>
<calories>900</calories>
</food>
</menu>
O exemplo de gadget a seguir usa este arquivo XML como fonte de dados. Ele exibe um menu de
caf da manh e permite que os usurios definam um limite de calorias. Ele exibe qualquer caloria
acima do limite especificado em vermelho. Os usurios tambm podem selecionar se desejam exibir
as descries de cada item do caf da manh.
O cdigo a seguir ilustra como percorrer a rvore DOM para extrair os dados dos diferentes tipos de
n, e como combin-los a markup HTML e CSS para serem exibidos no gadget de menu de caf da
manh.
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Fetch XML" scrolling="true"/>
<UserPref
name="mycalories"
display_name="Calorie limit"
default_value="800"/>
<UserPref
name="mychoice"
display_name="Show Descriptions"
datatype="bool"
default_value="false"/>
<Content type="html">
<![CDATA[
<div id="content_div"></div>
<script type="text/javascript">
// get prefs
var prefs = new gadgets.Prefs();
// Calorie limit set by user
var calorieLimit = prefs.getString("mycalories");
// Indicates whether to show descriptions in the breakfast menu
var description = prefs.getBool("mychoice");
function makeDOMRequest() {
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] =
gadgets.io.ContentType.DOM;
var url = "http://gadget-doc-
examples.googlecode.com/svn/trunk/opensocial-gadgets/breakfast-data.xml";
gadgets.io.makeRequest(url, response, params);
};
function response(obj) {
// Start building HTML string that will be displayed in <div>.
// Set the style for the <div>.
var html = "<div style='padding: 5px;background-color: #ccf;font-
family:Arial, Helvetica;"
+ "text-align:left;font-size:90%'>";
// Set style for title.
html +="<div style='text-align:center; font-size: 120%; color: yellow; "
+ "font-weight: 700;'>";
// obj.data contains a Document DOM element corresponding to the
// page that was requested
var domdata = obj.data;
// Display menu title. Use getElementsByTagName() to retrieve the <menu>
element.
// Since there is only one menu element in the file,
// you can get to it by accessing the item at index "0".
// You can then use getAttribute to get the text associated with the
// menu "title" attribute.
var title =
domdata.getElementsByTagName("menu").item(0).getAttribute("title");
// Loop through child nodes. Extract data from the text nodes that are
// the children of the associated name, price, and calories element
nodes.
for (var j = 0; j < nodeList.length ; j++) {
var node = nodeList.item(j);
if (node.nodeName == "name")
{
var name = node.firstChild.nodeValue;
}
if (node.nodeName == "price")
{
var price = node.firstChild.nodeValue;
}
if (node.nodeName == "calories")
{
var calories = node.firstChild.nodeValue;
}
// If the user chose to display descriptions and
// the child node is "#cdata-section", grab the
// contents of the description CDATA for display.
if (node.nodeName == "description" && description==true)
{
if (node.firstChild.nodeName == "#cdata-section")
var data = node.firstChild.nodeValue;
}
}
// Append extracted data to the HTML string.
html += "<i><b>";
html += name;
html += "</b></i><br>";
html += " ";
html += price;
html += " - ";
// If "calories" is greater than the user-specified calorie limit,
// display it in red.
if(calories > calorieLimit) {
html += "<font color=#ff0000>";
html += calories + " calories";
html += " </font>";
}
else
html += calories + " calories";
html += "<br>";
// If user has chosen to display descriptions
if (description==true)
{
html += "<i>" + data + "</i><br>";
}
}
// Close up div
html += "</div>";
document.getElementById('content_div').innerHTML = html;
};
gadgets.util.registerOnLoadHandler(makeDOMRequest);
</script>
]]>
</Content>
</Module>
Esta amostra de cdigo ilustra quatro das principais funes usadas para interagir com dados DOM:
getElementsByTagName(tagname)-- Para um documento DOM, retorna uma matriz dos ns
de elemento cujos nomes correspondem a tagname. Voc pode recuperar todos os ns de
elemento de um arquivo usando o caractere curinga (*), por exemplo:
response.getElementsByTagName("*").
getElementById(id)-- Para um documento DOM, recupera um nico n por id.
getAttribute(attrib)-- Para um n de elemento, retorna o atributo attrib. Por exemplo:
response.getElementsByTagName("menu").item(0).getAttribute("title").
attributes -- Para um n de elemento, retorna uma matriz dos atributos do n.
Este exemplo mostra somente algumas das diferentes funes para a navegao em uma rvore
DOM. Experimente algumas das outras funes que voc usar, como lastChild, nextSibling,
previousSibling e parentNode.
nodeType: 1
nodeValue : null
Alguns navegadores exibem todos os
espaos em branco de um documento como
nodeName: ns de texto. Assim, seu objeto DOM ir
#text conter ns de texto "vazios". Isso poder
Texto. Um n de texto gerar resultados inesperados quando voc
text sempre inserido em um n nodeType: 3 percorrer a rvore. Para solucionar esse
de elemento. Ele filho do problema, basta filtrar os ns de texto que
elemento. nodeValue: contm somente o caractere de nova linha.
Qualquer texto Ou voc pode realizar uma manipulao
inserido no n. mais robusta. Para ler mais sobre este
tpico, consulte Espaos em branco no
DOM.
nodeName: O
valor esquerda
do par de
atributo. Se o Embora os atributos sejam ns e estejam
atributo for inseridos em ns de elemento, eles no so
Um par de chave-valor que title=my ns-filho do elemento. Eles so herdados
fornece informaes document, da interface de Node, mas o DOM no os
adicionais sobre um n de nodeName ser considera parte da rvore DOM. Isso
elemento (por exemplo, title. significa que, embora voc possa usar
atributo
title=my document). Um muitas das funes de n com os ns de
atributo inserido em um nodeType: 2 atributo (como nodeName, nodeValue e
n de elemento, mas no nodeType), no possvel acessar ns de
filho do n de elemento. nodeValue: O atributo usando as funes de navegao da
valor direita do rvore DOM. Para acessar os atributos, use
par de atributo as funes attributes e getAttribute(attrib).
(neste exemplo,
my
document).
Uma seo na qual o
contedo no
manipulado ou
nodeName:
interpretado. As sees
#cdata-section
CDATA so usadas para
adicionar cdigos de
nodeType: 4
escape a blocos de texto O texto da seo CDATA tem seu prprio
CDATA contendo caracteres que, markup. Isso pode afetar o modo como
nodeValue:
de outra forma, seriam voc ir incorpor-lo ao gadget.
Texto e markup
considerados markup. O
dentro dos
nico separador
separadores
reconhecido em uma seo
CDATA.
CDATA a string "]]>",
que finaliza a seo
CDATA.
Outros recursos
Ncleo DOM W3C
Tutorial do DOM JavaScript
Uso de feeds
Adicione um feed sua pgina do iGoogle digitando seu URL no formulrio Add by URL
(Adicionar por URL) do diretrio de contedo. Esse formulrio utiliza o suporte integrado da API
de gadgets para criar um gadget para o feed e adicion-lo ao iGoogle. fcil de usar, mas no
permite qualquer personalizao do contedo ou da exibio. Alm disso, voc no pode us-lo com
outros recipientes.
Para manipular feeds de maneira mais sofisticada, use o mtodo makeRequest(). Embora a
especificao dos gadgets para makeRequest() inclua um tipo de contedo FEED, este recurso
ainda no suportado por nenhum recipiente. Como alternativa, voc pode processar um feed
usando o tipo de contedo DOM, como mostrado abaixo.
O exemplo a seguir ilustra como usar a funo makeRequest() para obter um feed e exibir
partes de seus dados em um gadget. Aqui est o gadget. Ele permite que os usurios especifiquem:
O nmero de entradas exibidas
Se o gadget exibir a data e um resumo de cada entrada
// Get userprefs
var prefs = new gadgets.Prefs();
var showdate = prefs.getBool("show_date");
var summary = prefs.getBool("show_summ");
var entries = prefs.getInt("num_entries");
function makeDOMRequest() {
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] =
gadgets.io.ContentType.DOM;
var url = "http://groups.google.com/group/Google-Gadgets-
API/feed/rss_v2_0_msgs.xml";
gadgets.io.makeRequest(url, response, params);
};
function response(obj) {
// obj.data contains a Document DOM element corresponding to the
// page that was requested
var domdata = obj.data;
// Display the field title
var title = getFeedTitle(domdata);
var html = "<div><b>" + title + "</b></div>";
// Loop through child nodes. Extract data from the text nodes that are
// the children of the associated name, price, and calories element
nodes.
for (var j = 0; j < nodeList.length ; j++) {
var node = nodeList.item(j);
if (node.nodeName == "title") {
var name = node.firstChild.nodeValue;
}
if (node.nodeName == "link")
{
var link = node.firstChild.nodeValue;
}
if (node.nodeName == "pubDate")
{
var date = node.firstChild.nodeValue;
}
if (node.nodeName == "description")
{
var desc = node.firstChild.nodeValue;
}
}
html += "<div>"
+ "<a target='_blank' href='" + link + "'>"
+ name
+ "</a>";
if (showdate==true)
{
html += "<br><i>" + date + "</i>";
}
if (summary==true)
{
html += "<br><i>" + desc + "</i>";
}
html += "</div";
}
document.getElementById('content_div').innerHTML = html;
};
// Return the feed title. This function just grabs the first element named
"title" in the feed.
function getFeedTitle(dat) {
var titles = dat.getElementsByTagName("title");
var feed_title = titles.item(0).firstChild.nodeValue;
return feed_title;
};
gadgets.util.registerOnLoadHandler(makeDOMRequest);
</script>
]]>
</Content>
</Module>
Uso de JSON
Use o tipo de contedo JSON para obter contedo com codificao JSON em forma de objeto
JavaScript.
O aplicativo descrito abaixo obtm o contedo de uma pgina PHP de amostra que contm a
seguinte string em codificao JSON:
{"validated":"This request was spoofed","query":
[],"url":"http:\/\/graargh.returnstrue.com\/buh\/fetchme.php","signature":"","si
gnature_len":1}
Ao obter contedo da pgina PHP contendo esta string, o valor retornado um objeto JavaScript
contendo pares de chave e valor (ou seja, uma matriz associativa). Esta amostra recupera o objeto e
imprime os pares de chave e valor nele contidos:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Fetch JSON 8">
<Require feature="opensocial-0.7"/>
</ModulePrefs>
<Content type="html">
<![CDATA[
<div id="content_div"></div>
<script type="text/javascript">
function makeJSONRequest() {
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] =
gadgets.io.ContentType.JSON;
// This URL returns a JSON-encoded string that represents a JavaScript
object
var url = "http://graargh.returnstrue.com/buh/fetchme.php";
gadgets.io.makeRequest(url, response, params);
};
function response(obj) {
var jsondata = obj.data;
var html = "<strong>Values: </strong><br /><br />";
// Returned JS object can be processed as an associative array
for (var key in jsondata) {
var item = jsondata[key];
html += key + ": ";
html += item + "<br />";
}
document.getElementById('content_div').innerHTML = html;
};
makeJSONRequest();
</script>
]]>
</Content>
</Module>
Atualizao do cache
Se estiver usando a funo makeRequest() para obter contedo atualizado mais de uma vez por
hora, como dados de feeds, pode ser que voc no obtenha as ltimas atualizaes. Isso ocorre
porque seus resultados so armazenados em cache para tornar a execuo do gadget mais rpida. Se
voc quiser ter certeza de que o gadget obteve os dados mais recentes, use o parmetro
refreshInterval para ignorar o cache e forar uma atualizao no intervalo que voc
especificar. Em outras palavras, o cache atualizado a cada X segundos, onde X =
refreshInterval.
Como padro, as chamadas funo makeRequest so armazenadas em cache. No exemplo
abaixo, a funo wrapper usa os mesmos parmetros da chamada funo makeRequest, mas
aceita outro parmetro denominado refreshInterval, que permite especificar a durao do
cache.
function makeCachedRequest(url, callback, params, refreshInterval) {
var ts = new Date().getTime();
var sep = "?";
if (refreshInterval && refreshInterval > 0) {
ts = Math.floor(ts / (refreshInterval * 1000));
}
if (url.indexOf("?") > -1) {
sep = "&";
}
url = [ url, sep, "nocache=", ts ].join("");
gadgets.io.makeRequest(url, response, params);
}
O uso de cache tem uma finalidade especfica. Tome cuidado para no atualizar o cache com muita
freqncia, para no prejudicar o desempenho. O uso de cache agiliza a obteno de dados. Ele
tambm reduz a carga sobre os servidores de terceiros que hospedam o contedo remoto. Evite
desativar o cache completamente (o que feito usando-se o valor refreshInterval: 0). Se o
gadget estiver recebendo milhes de visualizaes de pgina por dia e enviando milhes de
solicitaes a estes servidores, desativar o cache no apenas afetar negativamente o desempenho
do gadget de maneira negativa, mas tambm poder sobrecarregar os servidores que fornecem
dados ao seu gadget.
Como o padro atualizar o contedo a cada hora, o ideal especificar um intervalo menor que
uma hora. O intervalo recomendado para refreshInterval mais de 60 e menos de 3.600.
Gadgets e internacionalizao (i18n)
Este documento descreve como criar gadgets que possam ser facilmente localizados para um
pblico internacional.
Introduo
A API de gadgets oferece uma maneira fcil de voc disponibilizar seu gadget para um pblico
internacional. simples: basta estruturar o gadget de forma que o texto visvel para o usurio
(qualquer texto que ser traduzido) esteja em pacotes de mensagens separados do gadget. Assim,
qualquer tradutor de terceiros pode traduzir suas strings e criar novos pacotes de mensagens
especficos ao local, os quais voc pode adicionar especificao do seu gadget. Dessa forma, seu
gadget fica disponvel para um novo grupo de usurios.
Para ler mais sobre como criar gadgets em idiomas diferentes do ingls, consulte Gadgets em
idiomas diferentes do ingls.
Conceitos bsicos
Este documento refere-se internacionalizao (i18n) e localizao (l10n):
Internacionalizar significa estruturar aplicativos de forma a possibilitar sua localizao.
Localizar significa fazer um aplicativo funcionar para um mercado especfico, como
canadenses francfonos.
Para a finalidade deste documento, o perfil de localizao de um usurio consiste em dois
componentes: um pas (com base no domnio do usurio) e um idioma de interface preferido pelo
usurio (consulte a seo Teste para obter mais detalhes).
Exemplo
O exemplo de gadget usado neste documento exibe a mensagem Hello World, mostrada aqui em
chins:
Neste exemplo, o menu suspenso de preferncias do usurio permite que o usurio especifique uma
cor de fonte para a mensagem Hello World. Os nomes das cores que aparecem no menu so
arquivos externos definidos (pacotes de mensagens). O idioma no qual o menu ser exibido
depende do perfil de pas/idioma do usurio. Se um usurio com perfil ingls executar este gadget, o
texto aparecer em ingls. Veja aqui a aparncia da verso em ingls do exemplo, com o menu
suspenso userprefs sendo exibido:
Voc pode ver a especificao do gadget Hello World aqui.
Pacotes de mensagens
O elemento principal da estratgia de internacionalizao de gadgets so os pacotes de mensagens.
Os pacotes de mensagens so arquivos XML que contm as strings traduzidas para um dado local.
Cada string identificada por um nome exclusivo e esse mesmo nome usado em todos os pacotes.
Os pacotes de mensagens podem ser hospedados por qualquer URL e compartilhados entre
aplicativos. Cada pacote de mensagens contm somente um local.
Os pacotes de mensagens tm o seguinte formato:
<messagebundle>
<msg name="hello_world">
Hello World.
</msg>
<msg name="color">Color</msg>
<msg name="red">Red</msg>
<msg name="green">Green</msg>
<msg name="blue">Blue</msg>
<msg name="gray">Gray</msg>
<msg name="purple">Purple</msg>
<msg name="black">Black</msg>
</messagebundle>
Veja abaixo os campos que voc pode incluir em um arquivo de pacote de mensagens:
messagebundle: Um grupo de mensagens para traduo.
msg: Um nico item de contedo traduzvel, normalmente um marcador, frase ou pargrafo.
msg name: Um ID legvel para cada mensagem.
Convenes de nomenclatura
A conveno nomear os pacotes de mensagens como descrito abaixo:
<language>_<country>.xml
Onde no houver um valor especfico ao idioma ou ao pas, a conveno usar "ALL". Por
exemplo, o arquivo de_ALL.xml aplica-se a todas as pessoas que falam alemo,
independentemente de seu pas. O pacote de mensagens ALL_ALL.xml o arquivo usado como
padro.
Melhores prticas
No h requisitos rgidos a serem seguidos nas convenes de nomenclatura dos pacotes de
mensagem. O gadget usa os atributos lang e country de <Locale> para identificar o arquivo
de pacote de mensagens correto para o perfil do usurio. Ele no usa o nome do pacote de
mensagens em si.
Entretanto, embora a API de gadgets oferea muita flexibilidade, recomendamos que voc siga estas
orientaes:
Sempre fornea um pacote de mensagens ALL_ALL.xml ao lidar com mensagens padro.
Especifique um local por idioma. Ou seja, use fr_ALL, de_ALL e assim por diante.
Se precisar ignorar locais especficos, use pacotes de mensagens idioma-pas. Por exemplo,
se quiser fornecer um pacote de mensagens em ingls canadense para ignorar en_ALL, use
en_CA e no ALL_CA.
Durante a execuo, o gadget usa o pacote de mensagens que melhor corresponda ao perfil do
usurio.
Os valores vlidos para o idioma so cdigos de idioma ISO639-1 com dois dgitos e os valores
vlidos para o pas so cdigos ISO 3166-1 alfa-2.
Consulta s mensagens
Os pacotes de mensagens possuem um recurso de consulta. Com o recurso de consulta s
mensagens, o gadget tenta usar o pacote de mensagens que melhor corresponda ao pas do usurio e
ao idioma de preferncia da IU (especificado no URL). Se o gadget no encontrar uma
correspondncia exata, ele "consulta" todos os pacotes de mensagens para encontrar a
correspondncia mais prxima.
Com a consulta s mensagens, voc pode usar mensagens "padro" (normalmente especificadas em
ALL_ALL.xml), caso no haja um pacote disponvel para um determinado local.
Por exemplo, imagine que o seu gadget contm a seguinte especificao:
<Locale messages="http://x.com/ALL_ALL.xml"/>
<Locale lang="de" messages="http://x.com/de_ALL.xml"/>
<Locale lang="de" country="DE" messages="http://x.com/de_DE.xml"/>
<Locale lang="de" country="US" messages="http://x.com/de_US.xml"/>
Como esses arquivos seriam usados? Suponha que o domnio da sua usuria nos EUA
(http://www.google.com), mas o idioma de preferncia o alemo. Ela ver as mensagens do
arquivo de_US.xml. Se no houver uma mensagem especfica neste arquivo, ela ver a mensagem
de de_ALL.xml, e finalmente, de ALL_ALL.xml.
Um usurio da Alemanha usando a IU em alemo comear por de_DE.xml, um usurio da Sua
usando a IU em alemo comear por de_ALL.xml e um usurio da Sua usando a IU em francs
comear por ALL_ALL.xml.
Cada mensagem possui uma string exclusiva de nome para identific-la. Por exemplo, nesta
mensagem:
<msg name="red">Rot</msg>
o nome exclusivo da mensagem red e a string traduzida que aparece no gadget (no menu
suspenso userprefs) Rot, a palavra em alemo para vermelho. Aqui est a string da mensagem
equivalente em ingls no pacote de mensagens ALL_ALL.xml:
<msg name="red">Red</msg>
A especificao do gadget Hello World usa a varivel de substituio __MSG_ para indicar onde
o valor do pacote de mensagens apropriado deve ser substitudo. Por exemplo, esta sentena XML
da especificao do gadget Hello World usada para adicionar um item de menu ao menu
suspenso Color (Cor) de userprefs:
<EnumValue value="Red" display_value="__MSG_red__" />
Esta linha, na verdade, diz V para o pacote de mensagens que melhor corresponda ao perfil de
pas/idioma do usurio, obtenha o valor da mensagem com nome red e use-o no lugar de
__MSG_red__. assim que as preferncias do usurio do menu suspenso do exemplo Hello
World so preenchidas com nomes de cores (aqui, mostrado em alemo):
Como alternativa, use a funo getMsg() de userprefs. Essa funo pode ser usada para acessar
todas as mensagens dos pacotes de mensagens e no apenas as mensagens relacionadas a userprefs.
Entretanto, necessrio chamar esta funo para um objeto Prefs. Por exemplo:
var prefs = new gadgets.Prefs();
prefs.getMsg(red);
Entretanto, suponha que voc criou um gadget incluindo pacotes de mensagens para idiomas da
esquerda para a direita e vice-versa. Como voc faria seu gadget suportar ambos os casos? Aqui est
um exemplo de gadget que altera a direo dinamicamente, de acordo com o pacote de mensagens
que carregado para o local de um usurio. Este gadget possui pacotes de mensagens para dois
idiomas da direita para a esquerda, hebraico (iw) e rabe (ar):
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="BIDI Hello World">
<Locale messages="http://doc.examples.googlepages.com/ALL_ALL.xml"/>
<Locale lang="ru" messages="http://doc.examples.googlepages.com/ru_ALL.xml"/
>
<Locale lang="fr" messages="http://doc.examples.googlepages.com/fr_ALL.xml"/
>
<Locale lang="ja" messages="http://doc.examples.googlepages.com/ja_ALL.xml"/
>
<Locale lang="es" messages="http://doc.examples.googlepages.com/es_ALL.xml"/
>
<Locale lang="it" messages="http://doc.examples.googlepages.com/it_ALL.xml"/
>
<Locale lang="iw" messages="http://doc.examples.googlepages.com/iw_ALL.xml"
language_direction="rtl"/>
<Locale lang="ar" messages="http://doc.examples.googlepages.com/ar_ALL.xml"
language_direction="rtl"/>
</ModulePrefs>
<Content type="html">
<![CDATA[
<div style="margin-__BIDI_START_EDGE__:30px;"><h2>__MSG_hello_world__</h2></
div>
]]>
</Content>
</Module>
Para este gadget, suponha que o idioma de preferncia do usurio seja rabe. A linha <Locale
lang="ar" messages="http://.../ar_ALL.xml"
language_direction="rtl"/> diz "para rabe, exibir o texto do pacote de mensagens
ar_ALL.xml e definir a direo do gadget como rtl." A direo para o hebraico tambm ser da
direita para a esquerda. Para outros idiomas, a direo do implicitamente definida com o padro
ltr (esquerda para a direita).
A linha <div style="margin-__BIDI_START_EDGE__:
30px;"><h2>__MSG_hello_world__</h2></div> diz "quando o gadget estiver em
modo da esquerda para a direita, deslocar o texto 30 pixels em relao margem esquerda. Quando
o gadget estiver em modo da direita para a esquerda, deslocar o texto 30 pixels em relao
margem direita". Por exemplo, se a configurao do navegador do usurio for rabe (direita para a
esquerda), a substituio realizada na execuo ficar assim:
<div style="margin-right:30px;"><h2> x
</h2></div>
Esta tabela lista as variveis de substituio BIDI e seus possveis valores. Seus valores sempre so
baseados na direo do prprio gadget. Ou seja, estas variveis so designadas para serem usadas
em conjunto com a configurao de <Locale... language_direction="...">. Voc
pode usas as variveis em qualquer parte dentro do corpo do gadget.
Varivel Descrio
Esta varivel representa o lado
do gadget que o ponto inicial
da exibio do contedo. O
valor ser "left" (esquerda)
__BIDI_S quando o gadget estiver em
TART_EDG modo LTR e "right" (direita)
E__ quando o gadget estiver em
modo RTL. O gadget acima
um exemplo de como usar esta
varivel para a configurao de
margens CSS.
Esta varivel representa a
lateral do gadget oposta ao lado
de incio da exibio do
__BIDI_E
ND_EDGE_ contedo. O valor ser
_ "right" (direita) quando o
gadget estiver em modo LTR e
"left" (esquerda) quando o
gadget estiver em modo RTL.
O valor desta varivel ser "ltr"
__BIDI_D quando o gadget estiver em
IR__ modo LTR e "rtl" quando o
gadget estiver em modo RTL.
O valor desta varivel ser "rtl"
__BIDI_R
EVERSE_D quando o gadget estiver em
IR__ modo LTR e "ltr" quando o
gadget estiver em modo RTL.
<Content type="html"><![CDATA[
<script type="text/javascript">
// In this gadget, users choose a language from a drop-down menu, and the
gadget displays
// a "Hello World" message for the selected language. The gadget uses DOM
functions to set
// the direction and formatting for the message, depending on whether its
language is RTL
// or LTR.
// Associative array containing "Hello World" messages for different languages
var msgs = new Object();
msgs = {
"English" : "Hello World",
"Hebrew" : "" ,
"French" : "Bonjour Monde",
"Arabic" : " x",
"Russian" : " !"
};
function showMsg() {
var html="<h1>";
var div = _gel('mydiv');
div.style.color = "green";
var index = document.myform.Language.selectedIndex;
var lang = document.myform.Language.options[index].text;
var str = msgs[lang];
if (!str)
str="";
// If language is Hebrew or Arabic, set the div direction to be right-to-
left.
// Offset text 30px from right margin.
if(lang=="Hebrew" || lang=="Arabic") {
div.style.direction = "rtl";
div.style.marginRight = "30px";
html += str;
}
// For other languages, set div direction to left-to-right.
// Offset text 30px from left margin.
else {
div.style.direction = "ltr";
div.style.marginLeft = "30px";
html += str;
}
html+= "</h1>";
div.innerHTML = html;
}
</script>
<div style="background-color: #BFCFFF; height: 200px; color:green;">
<br />
<div>
<form name="myform" style="text-align: center;">
<select name="Language" onchange="showMsg()">
<option>Pick a Language
<option>English
<option>Hebrew
<option>French
<option>Arabic
<option>Russian
</select>
</form>
</div>
<br />
<div id="mydiv"><h2 style='text-align: center;'>****Pick a
language****</h2></div>
</div>
]]>
</Content>
</Module>
Teste
Para testar o gadget, altere a configurao de pas e idioma de modo que ela corresponda aos
pacotes de mensagens includos em seu gadget.
A maneira mais simples de alterar a configurao de pas e idioma no iGoogle editar o URL:
http://www.google.com/ig?&gl=<country>&hl=<lang>
Por exemplo, no URL abaixo, o pas Alemanha (DE) e o idioma ingls (en). Normalmente, o
pas tem precedncia sobre o idioma. Portanto, com este URL, o iGoogle exibe texto em alemo:
http://www.google.com/ig?&gl=DE&hl=en
Este link pode ajud-lo a criar o URL correto para um idioma especfico:
http://www.google.com/help/customize.html#searchlang. Os valores vlidos para o idioma so
cdigos de idioma ISO639-1 com dois dgitos e os valores vlidos para o pas so cdigos ISO
3166-1 alfa-2.
Cache
Os pacotes de mensagens tm o mesmo comportamento de cache que as especificaes de gadget
em si: normalmente, atualizamos o cache a cada 1 a 2 horas, os servidores de hospedagem devem
ver somente cerca de 100 a 200 solicitaes de pacotes de mensagens por dia e, se eles no
estiverem disponveis, continuaremos usando nossa cpia "antiga" pelo tempo que for possvel. No
gadget developer.xml, ao desativar o cache do gadget, voc tambm desativa o cache dos pacotes
de mensagens do gadget.
Soluo de problemas
Durante o desenvolvimento, seu gadget pode ficar em branco ou exibir ??? onde deveria haver uma
mensagem. O problema pode ser:
Voc no salvou o pacote de mensagens em UTF-8. Isso necessrio para qualquer arquivo
de idioma diferente do ingls que inclua caracteres especiais.
H um problema na sintaxe do seu pacote de mensagens.
No h um arquivo de pacote de mensagens ALL_ALL.xml para ser usado como padro
pelo gadget.
No gadget, o URL do pacote de mensagens est incorreto.
H um erro de correspondncia entre o pacote de mensagens e a varivel de substituio de
mensagens especificada no gadget.
Gadgets em idiomas diferentes do ingls
A maioria dos exemplos deste guia do desenvolvedor foi criada em ingls. Este documento descreve
recursos disponveis para usurios interessados em criar gadgets em outros idiomas.
O parmetro para o cdigo do pas &gl e o parmetro para o cdigo do idioma &hl. Neste
exemplo, o cdigo do pas (Japo) JP, e o cdigo do idioma japons ja (por padro, os cdigos
de idioma esto em letras minsculas e os cdigos de pas em letras maisculas, mas isso no
obrigatrio). O contedo do diretrio varia ligeiramente se voc fornecer somente o cdigo do pas
ou do idioma. Portanto, inclua ambos os cdigos (de pas e idioma) para obter resultados mais
especficos.
Uma boa maneira de encontrar gadgets em um idioma especfico filtrar o diretrio. Entretanto,
isso no retorna somente os gadgets criados no idioma de destino, pois os gadgets no recebem tags
de idioma. A API de gadgets inclui uma tag <Locale>, mas esta opcional. O diretrio exibe
gadgets para um local especfico com base em sua popularidade. Portanto, ao exibir o diretrio do
local Japo/japons, por exemplo, voc ver principalmente gadgets japoneses. Mas tambm poder
ver gadgets populares neste local, apesar de no serem em japons.
No diretrio de contedo do iGoogle, voc pode adicionar gadgets sua pgina do iGoogle. Aps
adicion-los ao iGoogle, voc poder visualizar o cdigo-fonte dos gadgets clicando em seus links
na pgina de gadgets do desenvolvedor. Os gadgets no personalizados (por exemplo, gadgets que
apenas exibem feeds) no esto listados na pgina de gadgets do desenvolvedor.
var files = [
"http://gadget-doc-examples.googlecode.com/svn/trunk/zombie-0.jpg",
"http://gadget-doc-examples.googlecode.com/svn/trunk/zombie-1.jpg",
"http://gadget-doc-examples.googlecode.com/svn/trunk/zombie-2.jpg",
"http://gadget-doc-examples.googlecode.com/svn/trunk/zombie-3.jpg",
"http://gadget-doc-examples.googlecode.com/svn/trunk/zombie-4.jpg",
"http://gadget-doc-examples.googlecode.com/svn/trunk/zombie-5.jpg",
"http://gadget-doc-examples.googlecode.com/svn/trunk/zombie-6.jpg"
];
// Browse through photos sequentially. When you get to the end of the array,
start over.
function browse(){
if (counter == images.length)
{
counter = 0;
}
document.getElementById("zombiecontainer").innerHTML = "";
document.getElementById("zombiecontainer").appendChild(images[counter]);
counter++;
}
</script>
<br />
<div style="text-align: center;">
<input type=submit value="Next ->" onClick="browse()">
</div>
]]>
</Content>
</Module>
Estrutura XML
As sees a seguir descrevem a estrutura e o contedo do arquivo XML usado para especificar um
gadget.
Preferncias do gadget
A seo <ModulePrefs> do arquivo XML especifica as caractersticas do gadget, como ttulo,
autor, tamanho preferido e assim por diante. Por exemplo:
<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>
Uso de bibliotecas
Para usar determinados recursos da API de gadgets, como altura dinmica ou estado de
armazenamento, necessrio carregar a biblioteca JavaScript apropriada, usando a tag
<Require> (dentro de <ModulePrefs>). A tag <Require> possui um atributo obrigatrio,
feature, cujo valor especifica a biblioteca do recurso. Por exemplo:
<ModulePrefs
title="Set Userprefs Demo">
<Require feature="dynamic-height"/>
<Require feature="setprefs" />
</ModulePrefs>
Para obter mais informaes sobre bibliotecas de recursos, consulte a Referncia de JavaScript.
Especificao de locais
Use as tags <Locale> em <ModulePrefs> para especificar os locais suportados pelo seu
gadget. Voc tambm pode us-las para especificar pacotes de mensagens, como descrito em
Gadgets e internacionalizao.
Por exemplo, este snippet especifica dois locais diferentes:
<ModulePrefs ...>
<Locale lang="en" country="us" />
<Locale lang="ja" country="jp" />
</ModulePrefs>
Ambos os atributos "lang" (idioma) e "country" (pas) so opcionais, mas voc precisa usar pelo
menos um deles para cada <Locale>. Se voc omitir um dos atributos, o valor equivalente a "*"
e "ALL" (tudo). Se voc especificar um pas e nenhum idioma, o sistema assumir que seu gadget
suporta todos os idiomas associados ao pas. Da mesma forma, se voc especificar um idioma e
nenhum pas, o sistema assumir que seu gadget suporta todos os pases associados ao idioma.
Os valores vlidos para o idioma so cdigos de idioma ISO639-1 com dois dgitos e os valores
vlidos para o pas so cdigos ISO 3166-1 alfa-2.
H algumas excees s regras normais de idioma:
Chins simplificado: lang="zh-cn" (normalmente para country="cn").
Chins tradicional: lang="zh-tw" (normalmente para country="tw" ou "hk", Taiwan ou
Hong Kong, respectivamente).
A tabela abaixo lista os atributos <Locale>:
Atributo Descrio
lang String opcional, indicando o idioma associado ao local.
country String opcional, indicando o pas associado ao local.
String opcional que um URL apontando para um pacote de mensagens. Os
messages pacotes de mensagens so arquivos XML que contm as strings traduzidas para
um dado local. Para obter mais informaes, consulte Gadgets e
internacionalizao.
String opcional que define a direo do gadget. Seu valor pode ser "rtl" (direita
para a esquerda) ou "ltr" (esquerda para a direita). O padro "ltr". Este atributo
permite criar gadgets que suportam idiomas lidos da esquerda para a direita e vice-
versa. Para ler mais sobre este tpico, consulte Criao de gadgets bidirecionais.
Voc pode usar as variveis de substituio descritas abaixo em conjunto com o
atributo language_direction:
<MayRequire type="platform"
value="windows"> This gadget uses a Windows API.
</MayRequire>
</ModulePrefs>
default_value="4">
<EnumValue value="3" display_value="Easy"/>
<EnumValue value="4" display_value="Medium"/>
Seo de contedo
A seo <Content> define o tipo de contedo e contm o prprio contedo ou uma referncia
para contedo externo. A seo <Content> onde os atributos do gadget e as preferncias do
usurio so combinados lgica de programao e s informaes de formatao para se
transformarem em um gadget executvel. Para ler mais sobre tipos de contedo, consulte Seleo
do tipo de contedo.
A tabela abaixo lista os atributos <Content>:
Atributo Descrio
String opcional que fornece o tipo de contedo. Os valores possveis so html e url. O
type
padro html.
String que fornece um URL de destino. Obrigatrio para type="url" e no permitido
href
com outros tipos de contedo.
cdata String opcional. Para HTML, contm o HTML puro que ser exibido no iframe.
API Reference: gadgets.*
Bem-vindo a uma pr-apresentao da documentao de referncia da API de gadgets. Esta
documentao contm detalhes sobre a futura insero da API de gadgets em uma API JavaScript
de gadgets.* mais limpa.
Observao: Esta API ainda no suportada pelo iGoogle. Se voc deseja criar um gadget para o
iGoogle, consulte a Referncia da API do Google Gadgets.
Sumrio
API principal
Prefs
io
AuthorizationType
ContentType
MethodType
RequestParameters
json
util
API especfica do recurso
MiniMessage
Tab
TabSet
flash
rpc
views
View
ViewType
skins
Property
window
gadgets.Prefs
Classe gadgets.Prefs
Fornece acesso s preferncias do usurio, dimenses do mdulo e mensagens. Os clientes podem
acessar suas preferncias, criando uma instncia de gadgets.Prefs e passando o id do mdulo.
Exemplo:
var prefs = new gadgets.Prefs();
var name = prefs.getString("name");
var lang = prefs.getLang();
Resumo do construtor
gadgets.Prefs(opt_moduleId)
Cria um novo objeto Prefs.
Resumo do mtodo
Array.<String> getArray(key)
Recupera uma preferncia de matriz.
Boolean getBool(key)
Recupera uma preferncia booleana.
String getCountry()
Obtm o pas atual, retornado como um cdigo ISO 3166-1 alpha-2.
Number getFloat(key)
Recupera uma preferncia de ponto flutuante.
Number getInt(key)
Recupera uma preferncia de nmero inteiro.
String getLang()
Obtm o idioma atual que o gadget deve usar na visualizao, retornado como um cdigo de
idioma ISO 639-1.
String, Number getModuleId()
Obtm o id do mdulo para a instncia atual.
String getMsg(key)
Obtm uma mensagem no formatada.
String getMsgFormatted(key, opt_subst)
Retorna um valor de mensagem com o argumento de posio opt_subst no lugar, caso seja
fornecido, ou caso contrrio, o valor fornecido no exemplo. Se a mensagem no for
encontrada, retorna a string vazia.
String getString(key)
Recupera uma preferncia de string.
set(key, val)
Armazena uma preferncia.
setArray(key, val)
Armazena uma preferncia de matriz.
Detalhes do construtor
gadgets.Prefs
gadgets.Prefs(opt_moduleId)
Detalhes do mtodo
getArray
Array.<String> getArray(key)
getBool
Boolean getBool(key)
getCountry
String getCountry()
getFloat
Number getFloat(key)
getInt
Number getInt(key)
getLang
String getLang()
Obtm o idioma atual que o gadget deve usar na visualizao, retornado como um cdigo de
idioma ISO 639-1.
Retorna:
String O idioma para esta instncia do mdulo
getModuleId
String, Number getModuleId()
getMsg
String getMsg(key)
getMsgFormatted
String getMsgFormatted(key, opt_subst)
Retorna um valor de mensagem com o argumento de posio opt_subst no lugar, caso seja
fornecido, ou caso contrrio, o valor fornecido no exemplo. Se a mensagem no for
encontrada, retorna a string vazia.
Parmetros:
String key - A mensagem a ser obtida
String opt_subst - Uma string opcional para ser substituda na mensagem
Retorna:
String A string formatada
getString
String getString(key)
set
set(key, val)
Armazena uma preferncia. Para usar esta chamada, o gadget precisa ter o recurso setprefs.
Observao: Se o gadget tiver que armazenar uma matriz, ele dever usar setArray em vez
desta chamada.
Parmetros:
String key - A preferncia a ser armazenada
Object val - Os valores a serem armazenados
setArray
setArray(key, val)
Armazena uma preferncia de matriz. Para usar esta chamada, o gadget precisa ter o recurso
setprefs.
Parmetros:
String key - A preferncia a ser armazenada
Array val - Os valores a serem armazenados
gadgets.io
Static Class gadgets.io
Fornece funes de recuperao de contedo remoto.
Resumo do mtodo
<static> String encodeValues(fields)
Converte um objeto de entrada em uma string de dados codificada como URL.
<static> String getProxyUrl(url)
Obtm a verso proxy do URL passado.
<static> makeRequest(url, callback, opt_params)
Obtm o contedo a partir do URL fornecido e alimenta este contedo na funo de retorno
de chamada.
Detalhes do mtodo
encodeValues
<static> String encodeValues(fields)
getProxyUrl
<static> String getProxyUrl(url)
makeRequest
<static> makeRequest(url, callback, opt_params)
Obtm o contedo a partir do URL fornecido e alimenta este contedo na funo de retorno
de chamada. Exemplo:
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] =
gadgets.io.ContentType.TEXT;
gadgets.io.makeRequest(url, callback, params);
Parmetros:
String url - O URL no qual o contedo est localizado
Function callback - A funo a ser chamada com os dados do URL aps a
obteno
Map.<gadgets.io.RequestParameters, Object> opt_params -
Parmetros adicionais a serem passados para a solicitao
gadgets.io.AuthorizationType
Static Class gadgets.io.AuthorizationType
Usada por RequestParameters.
Resumo do campo
<static> object AUTHENTICATED
O recipiente usar autenticao completa.
<static> object NONE
Sem autorizao.
<static> object SIGNED
A solicitao ser assinada pelo recipiente.
Detalhes do campo
AUTHENTICATED
<static> object AUTHENTICATED
NONE
<static> object NONE
Sem autorizao.
SIGNED
<static> object SIGNED
Resumo do campo
<static> object DOM
Retorna um objeto DOM; usado para obter XML.
<static> object FEED
Retorna uma representao JSON de um feed.
<static> object JSON
Retorna um objeto JSON.
<static> object TEXT
Retorna texto; usado para obter HTML.
Detalhes do campo
DOM
<static> object DOM
FEED
<static> object FEED
JSON
<static> object JSON
TEXT
<static> object TEXT
Resumo do campo
<static> object DELETE
No suportado por todos os recipientes.
<static> object GET
O tipo padro.
<static> object HEAD
No suportado por todos os recipientes.
<static> object POST
No suportado por todos os recipientes.
<static> object PUT
No suportado por todos os recipientes.
Detalhes do campo
DELETE
<static> object DELETE
No suportado por todos os recipientes.
GET
<static> object GET
O tipo padro.
HEAD
<static> object HEAD
No suportado por todos os recipientes.
POST
<static> object POST
No suportado por todos os recipientes.
PUT
<static> object PUT
No suportado por todos os recipientes.
gadgets.io.RequestParameters
Resumo do campo
<static> object AUTHORIZATION
O tipo de autenticao a ser usada durante a obteno do contedo; o padro
AuthorizationType.NONE.
<static> object CONTENT_TYPE
O tipo de contedo que reside no URL; o padro ContentType.TEXT.
<static> object GET_SUMMARIES
No caso do contedo ser um feed, indica se os resumos do feed devem ser obtidos; o padro
false (falso).
<static> object HEADERS
Os cabealhos HTTP a serem enviados ao URL; o padro null (nulo).
<static> object METHOD
O mtodo a ser usado durante a obteno de contedo a partir do URL; o padro
MethodType.GET.
<static> object NUM_ENTRIES
Se o contedo for um feed, indica o nmero de entradas a serem obtidas; o padro 3.
<static> object POST_DATA
Os dados a serem enviados ao URL usando o mtodo POST; o padro null (nulo).
Detalhes do campo
AUTHORIZATION
<static> object AUTHORIZATION
CONTENT_TYPE
<static> object CONTENT_TYPE
GET_SUMMARIES
<static> object GET_SUMMARIES
No caso do contedo ser um feed, indica se os resumos do feed devem ser obtidos; o padro
false (falso). Especificado como um Boolean.
HEADERS
<static> object HEADERS
Os cabealhos HTTP a serem enviados ao URL; o padro null (nulo). Especificado como
um Map.<String,String>.
METHOD
<static> object METHOD
NUM_ENTRIES
<static> object NUM_ENTRIES
POST_DATA
<static> object POST_DATA
Os dados a serem enviados ao URL usando o mtodo POST; o padro null (nulo).
Especificado como um String.
gadgets.json
Static Class gadgets.json
Fornece operaes de converso de objetos de e para JSON.
Resumo do mtodo
<static> Object parse(text)
Analisa uma string JSON, produzindo um valor JavaScript.
<static> String stringify(v)
Converte um valor JavaScript em uma string JSON.
Detalhes do mtodo
parse
<static> Object parse(text)
stringify
<static> String stringify(v)
Resumo do mtodo
<static> String escapeString(str)
Cria cdigos de escape para os dados inseridos, usando entidades html para garantir maior
segurana.
<static> Object getFeatureParameters(feature)
Obtm os parmetros do recurso.
<static> Object getUrlParameters()
Obtm os parmetros do URL.
<static> Boolean hasFeature(feature)
Retorna se o recurso atual suportado.
<static> makeClosure(scope, callback, var_args)
Cria um invlucro adequado para ser passado como um retorno de chamada.
<static> registerOnLoadHandler(callback)
Registra um manipulador durante a carga.
<static> String unescapeString(str)
Inverte escapeString.
Detalhes do mtodo
escapeString
<static> String escapeString(str)
Cria cdigos de escape para os dados inseridos, usando entidades html para garantir maior
segurana.
Parmetros:
String str - A String para a qual sero criados os cdigos de escape.
Retorna:
String A String com cdigos de escape.
getFeatureParameters
<static> Object getFeatureParameters(feature)
hasFeature
<static> Boolean hasFeature(feature)
makeClosure
<static> makeClosure(scope, callback, var_args)
Cria um invlucro adequado para ser passado como um retorno de chamada. possvel
passar qualquer quantidade de argumentos ao retorno de chamada. Eles sero recebidos na
ordem em que forem passados.
Parmetros:
Object scope - O escopo da execuo; pode ser null se no houver necessidade
de associar uma instncia especfica de um objeto a este retorno de chamada
Function callback - O retorno de chamada a ser executado quando a
chamada for realizada; qualquer argumento ser passado aps os argumentos iniciais
Object var_args - Argumentos iniciais a serem passados ao retorno de
chamada
registerOnLoadHandler
<static> registerOnLoadHandler(callback)
unescapeString
<static> String unescapeString(str)
Inverte escapeString.
Parmetros:
String str - A String da qual sero removidos os cdigos de escape.
Retorna:
String A String sem cdigos de escape.
gadgets.MiniMessage
Classe gadgets.MiniMessage
Classe MiniMessage.
Resumo do construtor
gadgets.MiniMessage(opt_moduleId, opt_container)
Usado para criar mensagens que aparecero para o usurio dentro do gadget.
Resumo do mtodo
Element createDismissibleMessage(message, opt_callback)
Cria uma mensagem que pode ser dispensada, com um cone [x] para permitir que os usurios
dispensem a mensagem.
Element createStaticMessage(message)
Cria uma mensagem esttica que pode ser dispensada apenas programaticamente (atravs de
uma chamada a dismissMessage()).
Element createTimerMessage(message, seconds, opt_callback)
Cria uma mensagem que exibida por um nmero especificado de segundos.
dismissMessage(message)
Dispensa a mensagem especificada.
Detalhes do construtor
gadgets.MiniMessage
gadgets.MiniMessage(opt_moduleId, opt_container)
Usado para criar mensagens que aparecero para o usurio dentro do gadget.
Parmetros:
String opt_moduleId - Id do mdulo opcional
Element opt_container - Elemento opcional do recipiente HTML no qual
aparecero as mini-mensagens.
Detalhes do mtodo
createDismissibleMessage
Element createDismissibleMessage(message, opt_callback)
Cria uma mensagem que pode ser dispensada, com um cone [x] para permitir que os
usurios dispensem a mensagem. Quando a mensagem dispensada, ela removida da
rvore DOM, e a funo opcional de retorno de chamada, se estiver definida, executada.
Parmetros:
String, Object message - A mensagem como uma string HTML ou um
elemento DOM
Function opt_callback - Funo opcional de retorno de chamada a ser
executada quando a mensagem for dispensada
Retorna:
Element Elemento HTML da mensagem criada
createStaticMessage
Element createStaticMessage(message)
Cria uma mensagem esttica que pode ser dispensada apenas programaticamente (atravs de
uma chamada a dismissMessage()).
Parmetros:
String, Object message - A mensagem como uma string HTML ou um
elemento DOM
Retorna:
Element Elemento HTML da mensagem criada
createTimerMessage
Element createTimerMessage(message, seconds, opt_callback)
Cria uma mensagem que exibida por um nmero especificado de segundos. Quando o
temporizador expira, a mensagem dispensada e a funo opcional de retorno de chamada
executada.
Parmetros:
String, Object message - A mensagem como uma string HTML ou um
elemento DOM
number seconds - Nmero de segundos que devem ser aguardados antes de a
mensagem ser dispensada
Function opt_callback - Funo opcional de retorno de chamada a ser
executada quando a mensagem for dispensada
Retorna:
Element Elemento HTML da mensagem criada
dismissMessage
dismissMessage(message)
Resumo do mtodo
Function getCallback()
Retorna a funo de retorno de chamada, executada quando a guia selecionada.
Element getContentContainer()
Retorna o elemento HTML no qual o contedo da guia visualizado.
Number getIndex()
Retorna o ndice da guia.
String getName()
Retorna o marcador da guia na forma de uma string (pode conter HTML).
Element getNameContainer()
Retorna o elemento HTML que contm o marcador da guia.
Detalhes do mtodo
getCallback
Function getCallback()
getContentContainer
Element getContentContainer()
getIndex
Number getIndex()
getNameContainer
Element getNameContainer()
Resumo do construtor
gadgets.TabSet(opt_moduleId, opt_defaultTab, opt_container)
Cria um novo objeto TabSet
Resumo do mtodo
String addTab(tabName, opt_params)
Adiciona uma nova guia com base nos pares nome-valor especificados em opt_params.
alignTabs(align, opt_offset)
Define o alinhamento das guias.
displayTabs(display)
Exibe ou oculta guias e todo o contedo associado a elas.
Element getHeaderContainer()
Retorna o elemento cabealhos de guia do recipiente.
gadgets.Tab getSelectedTab()
Retorna o objeto de guia selecionado no momento.
Array.<gadgets.Tab> getTabs()
Retorna uma matriz de todos os objetos de guia existentes.
removeTab(tabIndex)
Remove uma guia do tabIndex (ndice de guias) e todo o contedo associado a ela.
setSelectedTab(tabIndex)
Seleciona a guia no tabIndex e ativa a funo de retorno de chamada da guia, se existir.
swapTabs(tabIndex1, tabIndex2)
Troca as posies das guias em tabIndex1 e tabIndex2.
Detalhes do construtor
gadgets.TabSet
gadgets.TabSet(opt_moduleId, opt_defaultTab, opt_container)
addTab
String addTab(tabName, opt_params)
Adiciona uma nova guia com base nos pares nome-valor especificados em opt_params.
Parmetros:
String tabName - Marcador da guia a ser criada.
Object opt_params - Objeto de parmetro opcional. As seguintes propriedades
so suportadas: .contentContainer. um elemento HTML existente a ser usado como
recipiente do contedo da guia. Se omitido, a biblioteca de guias cria um elemento.
.callback. uma funo de retorno de chamada a ser executada quando a guia
selecionada. .tooltip. uma descrio de dica de ferramenta que aparece quando o
usurio move o cursor do mouse sobre a guia. .index. o ndice no qual a guia ser
inserida. Se omitido, a nova guia anexada no final.
Retorna:
String Id do DOM do recipiente da guia.
alignTabs
alignTabs(align, opt_offset)
displayTabs
displayTabs(display)
getHeaderContainer
Element getHeaderContainer()
getSelectedTab
gadgets.Tab getSelectedTab()
Retorna o objeto de guia selecionado no momento.
Retorna:
gadgets.Tab O objeto de guia selecionado no momento.
getTabs
Array.<gadgets.Tab> getTabs()
removeTab
removeTab(tabIndex)
Remove uma guia do tabIndex (ndice de guias) e todo o contedo associado a ela.
Parmetros:
Number tabIndex - ndice da guia a ser removida.
setSelectedTab
setSelectedTab(tabIndex)
swapTabs
swapTabs(tabIndex1, tabIndex2)
Resumo do mtodo
<static> Boolean embedCachedFlash()
Injeta um arquivo Flash com cache na rvore DOM.
<static> Boolean embedFlash(swfUrl, swfContainer, swfVersion,
opt_params)
Injeta um arquivo Flash na rvore DOM.
<static> Number getMajorVersion()
Detecta o Flash Player e sua verso principal.
Detalhes do mtodo
embedCachedFlash
<static> Boolean embedCachedFlash()
Injeta um arquivo Flash com cache na rvore DOM. Aceita os mesmos parmetros que
gadgets.flash.embedFlash.
Retorna:
Boolean Se a chamada funo for concluda com sucesso.
embedFlash
<static> Boolean embedFlash(swfUrl, swfContainer, swfVersion, opt_params)
getMajorVersion
<static> Number getMajorVersion()
Resumo do mtodo
<static> call(targetId, serviceName, callback, var_args)
Chama um servio RPC.
<static> register(serviceName, handler)
Registra um servio RPC.
<static> registerDefault(handler)
Registra um manipulador de servios padro para processar todas as chamadas RPC
desconhecidas, que falham sem aviso por padro.
<static> unregister(serviceName)
Cancela o registro de um servio RPC.
<static> unregisterDefault()
Cancela o manipulador de servios padro.
Detalhes do mtodo
call
<static> call(targetId, serviceName, callback, var_args)
register
<static> register(serviceName, handler)
registerDefault
<static> registerDefault(handler)
Registra um manipulador de servios padro para processar todas as chamadas RPC
desconhecidas, que falham sem aviso por padro.
Parmetros:
Function handler - Manipulador de servios.
unregister
<static> unregister(serviceName)
unregisterDefault
<static> unregisterDefault()
Resumo do mtodo
<static> gadgets.views.View getCurrentView()
Retorna a visualizao atual.
<static> Map.<String, String> getParams()
Retorna os parmetros passados a este gadget para esta visualizao.
<static> Map<gadgets.views.ViewType, String, gadgets.views.View>
getSupportedViews()
Retorna um mapa de todas as visualizaes suportadas.
<static> requestNavigateTo(view, opt_params)
Tenta ir para uma visualizao diferente deste gadget.
Detalhes do mtodo
getCurrentView
<static> gadgets.views.View getCurrentView()
getParams
<static> Map.<String, String> getParams()
Retorna os parmetros passados a este gadget para esta visualizao. No inclui todos os
parmetros de URL, somente os passados para gadgets.views.requestNavigateTo
Retorna:
Map.<String, String> O mapa de parmetros
getSupportedViews
<static> Map<gadgets.views.ViewType, String, gadgets.views.View>
getSupportedViews()
Tenta ir para uma visualizao diferente deste gadget. Se o recipiente suportar parmetros,
ele passar os parmetros opcionais para o gadget na nova visualizao.
Parmetros:
gadgets.views.View view - A visualizao de destino
Map.<String, String> opt_params - Parmetros a serem passados ao
gadget aps a visualizao ser acessada
gadgets.views.View
Classe gadgets.views.View
Interface bsica para todos os objetos de visualizao.
Resumo do mtodo
gadgets.views.ViewType, String getName()
Retorna o nome desta visualizao.
boolean isOnlyVisibleGadget()
Retorna true (verdadeiro) se o gadget for o nico gadget visvel nesta visualizao.
Detalhes do mtodo
getName
gadgets.views.ViewType, String getName()
isOnlyVisibleGadget
boolean isOnlyVisibleGadget()
Retorna true (verdadeiro) se o gadget for o nico gadget visvel nesta visualizao. Em uma
pgina de tela inteira ou no modo maximizado, provavelmente true (verdadeiro); em uma
pgina de perfil ou no modo painel, provavelmente false (falso).
Retorna:
boolean True se o gadget for o nico gadget visvel; caso contrrio, false
gadgets.views.ViewType
Static Class gadgets.views.ViewType
Usada pelas Visualizaes.
Resumo do campo
<static> object DASHBOARD
Uma visualizao na qual o gadget exibido em uma pequena rea, normalmente em uma
pgina com outros gadgets.
<static> object FULL_PAGE
Uma visualizao na qual o gadget exibido em um modo muito grande.
<static> object POPUP
Uma visualizao na qual o gadget exibido sozinho em uma pequena janela separada.
Detalhes do campo
DASHBOARD
<static> object DASHBOARD
Uma visualizao na qual o gadget exibido em uma pequena rea, normalmente em uma
pgina com outros gadgets. Em um contexto social, esta normalmente chamada de pgina
de perfil.
FULL_PAGE
<static> object FULL_PAGE
Uma visualizao na qual o gadget exibido em um modo muito grande. Deve ser a nica
coisa na pgina. Em um contexto social, esta normalmente chamada de pgina de tela
inteira.
POPUP
<static> object POPUP
Uma visualizao na qual o gadget exibido sozinho em uma pequena janela separada.
gadgets.skins
Static Class gadgets.skins
Fornece operaes para obter informaes de exibio sobre a skin exibida atualmente.
Resumo do mtodo
<static> String getProperty(propertyKey)
Obtm a propriedade de exibio mapeada para a chave em questo.
Detalhes do mtodo
getProperty
<static> String getProperty(propertyKey)
Resumo do campo
<static> object ANCHOR_COLOR
A cor que deve ser usada pelas tags anchor.
<static> object BG_COLOR
A cor de fundo do gadget.
<static> object BG_IMAGE
Uma imagem a ser usada no fundo do gadget.
<static> object FONT_COLOR
A cor que deve ser usada pela fonte principal.
Detalhes do campo
ANCHOR_COLOR
<static> object ANCHOR_COLOR
BG_COLOR
<static> object BG_COLOR
BG_IMAGE
<static> object BG_IMAGE
FONT_COLOR
<static> object FONT_COLOR
Resumo do mtodo
<static> adjustHeight(opt_height)
Ajusta a altura do gadget
<static> Object getViewportDimensions()
Detecta as dimenses internas de um frame.
<static> setTitle(title)
Define o ttulo do gadget.
Detalhes do mtodo
adjustHeight
<static> adjustHeight(opt_height)
getViewportDimensions
<static> Object getViewportDimensions()
setTitle
<static> setTitle(title)