Imprimir esta página. Se você está começando um novo widget, deve criar um novo XML pra ele, chame-o de gifts.xml. Comece com as informações padrão de XML e inclua a OpenSocial API. Dê um título ao widget, “Gifts” (presentes), algo que reflita a aplicação do widget.
Veja como a estrutura do XML deve começar:
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="Gifts part 0 - Boilerplate">
<Require feature="opensocial-0.7"/>
</ModulePrefs>
<Content type="html">
<![CDATA[
]]>
</Content>
</Module>
Este Widget agora é a base para os próximos passos no seu App.
Se você vai dar presentes a seus amigos a primeira coisa a fazer é com que a aplicação descubra quem são seus amigos.Primeiro crie uma função que é chamada assim que o widget for carregado. Por agora, ela só terá uma função, mas mais tarde vamos criar vários passos para inicialização.
gadgets.util.registerOnLoadHandler(init);
function init() {
loadFriends();
}
Agora, é claro, precisa existir uma função para chamar as informações de amigos. A função a seguir cria um pedido de dados e depois preenche com os tipos de dados que você precisa: o visualizador (viewer) e os amigos do visualizador (viewerFriends). Então ele envia o pedido ao servidor, dando o nome de uma função para chamar quando os dados retornam.
function loadFriends() {
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
req.add(req.newFetchPeopleRequest('VIEWER_FRIENDS'),
'viewerFriends');
req.send(onLoadFriends);
}
A função de callback, onLoadFriends, irá trazer os dados que o servidor retornou e mostrá-los na página.
function onLoadFriends(data) {
var viewer = data.get('viewer').getData();
var viewerFriends = data.get('viewerFriends')
.getData();
html = new Array();
html.push('<ul>');
viewerFriends.each(function(person) {
html.push('<li>' + person.getDisplayName()
+ "</li>");
});
html.push('</ul>');
document.getElementById('friends').innerHTML =
html.join('');
}
Diversas divs tem que ser inseridos no widget como pontos de entrada para o novo HTML.
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="Gifts part 1 - Friends">
<Require feature="opensocial-0.7"/>
</ModulePrefs>
<Content type="html">
<![CDATA[
<script src="http://opensocial-resources.googlecode.com/svn/
samples/tutorial/tags/api-0.7/gifts_1_friends.js"></script>
<script>
gadgets.util.registerOnLoadHandler(init);
</script>
<div id='main'>
Your friends:
<div id='friends'></div>
</div>
]]>
</Content>
</Module>
Agora é hora de implementar a razão de ser do seu widget, dar presentes. Primeiro, atualize o widget para incluir um novo arquivo JavaScript (que foi fornecido a você), para converter os tipos de JavaScripts básicos em JSON strings para armazenamento fácil. Em seguida você precisará alterar o HTML básico assim você pode inserir novas informações para dar os presentes no layout.
O XML deve se parecer com isso:
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="Gifts part 2 - Send Gifts">
<Require feature="opensocial-0.7"/>
</ModulePrefs>
<Content type="html">
<![CDATA[
<script src="http://opensocial-resources.googlecode.com/svn/
samples/tutorial/tags/api-0.7/gifts_2_send_gifts.js"></script>
<script>
gadgets.util.registerOnLoadHandler(init);
</script>
<div id='main'>
<div id='give'>
<form id='gift_form'>
Give <span id='gifts'></span> to <span id='friends'></span>.
<a href="javascript:void(0);" onclick='giveGift();'>Give!</a>
</form>
</div>
</div>
]]>
</Content>
</Module>
Agora que já existem ganchos no HTML, modifique a saída da lista de amigos em um set de opções de tags, para usar com a tag selecionada. Isto permitirá que você selecione um amigo para presentear.function onLoadFriends(data) { var viewer = data.get('viewer').getData(); var viewerFriends = data.get('viewerFriends').getData(); html = new Array(); html.push('<select id="person">'); viewerFriends.each(function(person) { html.push('<option value="' + person.getId() + '">' + person.getDisplayName() + "</option>"); }); html.push('</select>'); document.getElementById('friends').innerHTML = html.join(''); }Agora você precisará criar um outro menu de seleção dos presentes que você pode dar. O exemplo usa diferentes tipos de nozes (nuts), mas você pode usar o que quiser. Uma pequena mudança na função de inicialização chama esta função quando a página carrega.
function makeOptionsMenu() { var options = ['a cashew nut', 'a peanut', 'a hazelnut', 'a red pistachio nut']; var html = new Array(); html.push('<select id="nut">'); for (var i = 0; i < options.length; i++) { html.push('<option value="' + i + '">' + options[i] + '</option>'); } html.push('</select>'); document.getElementById('gifts').innerHTML = html.join(''); } function init() { loadFriends(); makeOptionsMenu(); }Para unir tudo isto, implemente giveGift (dar presente), a função chamada quando um usuário clica no botão de dar (give) no widget. A função carrega o presente (gift) a ser dado e o amigo a quem você dará, atualiza o objeto global dos presentes (gifts) e grava isto.
var givenGifts = {}; function giveGift() { var nut = document.getElementById('nut').value; var friend = document.getElementById('person').value; givenGifts[friend] = nut; var json = gadgets.json.stringify(givenGifts); var req = opensocial.newDataRequest(); req.add(req.newUpdatePersonAppDataRequest(opensocial. DataRequest.PersonId.VIEWER, 'gifts', json)); req.send(); }
Amanhã voltamos com as partes 3 e 4 do tutorial.
Abraços e boa sorte a todos! em caso de dúvidas, comentem!
[...] Tutorial do Google para Criação de Apps OpenSocial traduzido – Parte 2 [...]
[...] Tutorial do Google para Criação de Apps OpenSocial traduzido – Parte 2 [...]
Olá…
hey, essa linha:
<script src=”http://opensocial-resources.googlecode.com/svn/s
é assim mesmo?
naum fecha a tag?
Essas funções em JS, onde é que eu declaro?
chamo elas com um arquivo .js, dentro d xml???
comé q funciona?
Tiago, acabei de ver este erro, está no css do blog, que está comendo o final das linhas. Vou consertar! Obrigado por reportar o problema
Sobre sua dúvida, você pode tanto declarar o script dentro do xml, quanto apartir do xml chamar um arquivo .js externo.
Abraço
[...] Tutorial do Google para Criação de Apps OpenSocial traduzido – Parte 2 [...]
Olá, tudo bem?
Gostaria de saber porque quando listo os amigos no aplicativo, ele mostra apenas 20 resultados? Não seria mais correto ele mostrar todos os amigos do Orkut independente da quantidade?
Um abraço.
Ok, isso eu já resolvi acrescentando:
var opt_params = {};
opt_params[opensocial.DataRequest.PeopleRequestFields.MAX] = 1000;
Isso resolve o problema. Mas alguém sabe como deletar uma entrada depois que se dá o presente? Quando a gente dá o presente, ele fica armazenado. Ma
Boa noite pessoal! alguem poderia me dizer como fazer aparecer mais do que 20 amigos?
coloco esse comando onde?
var opt_params = {};
opt_params[opensocial.DataRequest.PeopleRequestFields.MAX] = 1000;
obrigada!!
E as partes 3 e 4? Onde estão??