Tutorial do Google para Criação de Apps OpenSocial traduzido – Parte 2
sexta-feira, maio 23rd, 2008 17:08 by Diego Túlio Tomaz Gomes Print Imprimir esta página.

Parte 2 do tutorial de Aplicativos OpenSocial, traduzido do google code. Nesta parte, você aprenderá a configurar o básico do seu App, listar amigos e criar uma funcionalidade para que eles interajam. Em caso de dúvidas, consulte a parte 1

Configurando o Básico

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.

Listando amigos.

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>

Dando Presentes (Gifts)

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!

10 Responses to “ Tutorial do Google para Criação de Apps OpenSocial traduzido – Parte 2 ”

  1. Widgy | Tutorial do Google para Criação de Apps OpenSocial traduzido - Parte 1

    [...] Tutorial do Google para Criação de Apps OpenSocial traduzido – Parte 2 [...]

  2. Widgy | Tutorial do Google para Criação de Apps OpenSocial traduzido - Parte 3

    [...] Tutorial do Google para Criação de Apps OpenSocial traduzido – Parte 2 [...]

  3. Tiago Freire

    Olá…
    hey, essa linha:

    <script src=”http://opensocial-resources.googlecode.com/svn/s

    é assim mesmo?
    naum fecha a tag?

  4. Tiago Freire

    Essas funções em JS, onde é que eu declaro?
    chamo elas com um arquivo .js, dentro d xml???
    comé q funciona?

  5. dttg

    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

  6. Widgy | Tutorial do Google para Criação de Apps OpenSocial traduzido - Parte 4 Final

    [...] Tutorial do Google para Criação de Apps OpenSocial traduzido – Parte 2 [...]

  7. Taboada

    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.

  8. Taboada

    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

  9. Renata

    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!!

  10. Dicas da Web

    E as partes 3 e 4? Onde estão??

Deixe uma resposta