Resolvendo o problema do botão “voltar” em aplicações Ajax

Segunda, 9 de Maro de 2009 às 21:18

Quem aqui sempre sonhou em fazer aplicações em Ajax na qual o usuário pode navegar livremente utilizando o botão voltar e avançar, e além disso, pode adicionar seções específicas ao seu bookmark. Na teoria, isto não seria possível, visto que, o “Ajax” em si, utilizando pela maioria, é utilizado para recarregar apenas alguns blocos da página, mantendo aquela página ativa, e consequentemente, impossibilitando o uso do botão voltar ou de bookmarks, do contrário teríamos a boa e velha requisição da página inteira.

Mas então, como o GMAIL funciona? Ele é totalmente em ajax e mesmo assim, você consegue navegar utilizando o botão voltar, e se colocar um link como http://mail.google.com/mail/#compose na barra de endereços, ele irá abrir a tela de composição de e-mails normalmente. O grande segredo está nas #âncoras.

Navegação Orientada a Âncoras

Uma coisa muito interessante das chamadas Âncoras, é que elas permitem que você use o botão voltar e avançar, por exemplo, sem gerar nenhuma requisição e sem precisar sair daquela página, então, o que poderíamos fazer?

A primeira coisa seria criar um arquivo Javascript que irá ficar toda hora verificando se alguma âncora está ativa, caso esteja, ele envia a requisição ajax chamando a seção específica, baseada no nome da âncora, que será carregada dentro do bloco principal, simples não?

Como já é de praxe para Javascript hoje em dia, usaremos Jquery, portanto, lembrem-se de incluir o arquivo da biblioteca na sua aplicação.

Teríamos então, um arquivo de nome “core.js”, assim:

  1. /**
  2. * Ao carregar a página, o temporizador é iniciando para checar se há uma nova âncora ativa a cada 300ms
  3. */
  4. $().ready(function(){
  5. setInterval("checkAnchor()", 300);
  6. });
  7. var currentAnchor = null;
  8.  
  9. /**
  10. * Metodo que checa se há alguma mudança de âncora, se houver, envia a requisição ajax
  11. */
  12. function checkAnchor(){
  13.  
  14. if(currentAnchor != document.location.hash){
  15. currentAnchor = document.location.hash;
  16.  
  17. /**
  18. * Se não há nenhuma âncora ativa, a seção default é carregada
  19. */
  20. if(!currentAnchor)
  21. query = "section=home";
  22. else
  23. {
  24. /**
  25. * Cria a string de resultado. Convertendo a url: URL/#fotos&id=2 em URL/?section=fotos&id=2
  26. * */
  27. var splits = currentAnchor.substring(1).split(‘&’);
  28. var section = splits[0];
  29. delete splits[0];
  30. var params = splits.join(‘&’);
  31. var query = "section=" + section + params;
  32. }
  33. /**
  34. * Envia a requisição
  35. */
  36. $.get("callbacks.php",query, function(data){
  37. $("#bloco_principal").html(data);
  38. });
  39. }
  40. }

Ok, o conteúdo será carregando no elemento de ID “bloco_principal” através do resultado das requisições Ajax que estão sendo enviadas para a página “callbacks.php” em formato de querystring GET.
Para pegarmos, teríamos algo desse tipo:

  1. $section = addslashes(strip_tags($_GET[’section’]));
  2. $pagina = "paginas/".$section.".php";
  3. if (file_exists($pagina))  {
  4. include($pagina);
  5. }

Com isso, bastaria uma pasta “paginas” contendo as páginas com os mesmos nomes das âncoras.

E para chamar cada seção, bastaria uma simples página html com links do tipo:

  1. <a href="#fotos">Veja fotos</a>

que seria detectado pelo método “checkAnchor()” do javascript, que chamará uma requisição php carregando a página de nome fotos.php dentro do diretorio paginas, que será exibida dentro do bloco #bloco_principal que está contido na mesma página do link clicado, e o melhor de tudo, você pode voltar, avançar e adicionar as seções que quiser aos favoritos, à vontade.

Para ilustrar melhor o exemplo, fiz uma cópia descarada (haha), do site do evento php-pb.net, com a única diferença de possuir navegação em ajax através de âncoras (o original possui navegação normal). Acessem pelo link: http://www.diegopessoa.com/php-pb-ajax

Se quiserem baixar o exemplo funcionando, cliquem aqui!

II Encontro PHP-PB

Segunda, 9 de Maro de 2009 às 20:47
Postado na categoria Acessibilidade, Padrões Web, WCAG 2.0

Olá pessoal,

neste sábado, dia 7 de março, aconteceu no auditório do Shopping Sebrae o II Encontro de usuários PHP da Paraíba. Quero deixar aqui meus mais sinceros parabéns para todos que fizeram parte deste evento, que, vem se tornando cada vez maior, mostrando que a comunidade PHP da Paraíba é ativa e participativa!

Para os que não puderam acompanhar o evento, estou disponibilizando abaixo os slides da minha palestra; “Aplicações Web Acessíveis”.

Veja as outras apresentações do evento:

http://www.slideshare.net/tag/ii-encontro-php-pb

Agradeço a todos que puderam prestigiar, e vamos rumo ao terceiro!

WCAG! WCAG!

Segunda, 2 de Fevereiro de 2009 às 0:47
Postado na categoria Acessibilidade, Padrões Web, WCAG 2.0

Neste começo de 2009 a W3C anunciou novos padrões que ajudarão os desenvolvedores web a criar sites que atendem de maneira mais adequada às necessidades dos portadores de deficiências e usuários idosos. Trata-se da segunda versão do WCAG (Web Content Accessibility Guidelines) ou (Diretrizes de Acessibilidade a Conteúdo Web, este novo padrão produzido pela Iniciativa de Acessibilidade Web (WAI) da W3C atenderá uma largo faixa de conteúdos (tais como texto, imagens, áudio e vídeo) e aplicações web, permitindo melhores testes de verificação e ainda proverá mais flexibilidade e maior potencial de inovação para desenvolvedores web. O WCAG 2.0 é mais fácil de entender e usar juntamente como o material educacional e técnico disponível.

O WCAG 2.0 ataca as dificuldades de acesso a web experimentadas por pessoas com limitações visuais, auditivas, físicas, cognitivas e neurológicas e por usuários idosos com necessidades de acessibilidade a web. Seguindo quatro princípios:

  • Perceptível (por exemplo, fornecer textos alternativos a imagens, modo “caption” para áudio, apresentar conteúdo adaptável a diferentes maneiras de ser apresentado e usar contraste de cores);
  • Operável (por exemplo, prover acesso às funcionalidades pelo teclado, contraste de cores, oferecer tempo adequado para ler e entrar com dados, evitar imagens que causem convulsões e melhor navegabilidade);
  • Compreensível (por exemplo, prover conteúdos legíveis e previsíveis e ajudar o usuário a evitar e corrigir erros); e
  • Robusto (por exemplo, prover compatibilidade com tecnologias assistidas)

[texto adaptado do site oficial da W3C]

Para quem já quer começar a estudar as novas diretrizes, acesse o guia de referência.

Para animar vocês, vejam o vídeo com o tema da WCAG 2 (lembrem-se de ativar o recurso de legendas do player do youtube):

Para quem ainda não viu

Domingo, 1 de Fevereiro de 2009 às 23:44
Postado na categoria PHP, Programação

No último post antes da “parada”, anunciei o I Encontro PHP-PB, que aconteceu em Campina Grande no fim mês de novembro. Agora, para quem ainda não viu, estou disponibilizando os slides da minha palestra “Desenvolvendo MVC com Zend Framework”. Obrigado a todos que compareceram e aguardem, pois, o II Encontro PHP-PB vem aí, e será aqui em João Pessoa.

Retomando as atividades

Domingo, 1 de Fevereiro de 2009 às 23:40
Postado na categoria Geral

Olá pessoal, após um tempo de “pausas forçadas” no Blog devido ao final do curso, transição de trabalho, entre outras coisas, agora estou de volta, e de vez! Neste ano de 2009, pretendo compartilhar com vocês minhas experiências no trabalho e na pesquisa, esta última, tendo como destaque a acessibilidade, aguardem que vem muita coisa legal por aí…

PS: O Blog está de visual novo, temporário para ilustrar esse período de verão, enquanto isso estarei trabalhando numa versão acessibilizada, e vocês terão todos os detalhes da implementação aqui.

I Encontro PHP-PB

Sexta, 28 de Novembro de 2008 às 23:19
Postado na categoria Programação

Olá pessoal, neste sábado, dia 29 de novembro, estará sendo realizado em Campina Grande-PB no auditório da FACISA, o 1° Encontro PHP-PB, segue abaixo a programação.

Programação

08:00 - 09:00 Credenciamento
09:00 - 10:00 Joomla - Hugo Rabelo
10:00 - 11:00 PHP não é coisa de moleque! - Felipe Ribeiro
11:00 - 12:00 Smarty - Desacoplando lógica e layout - Marcus Antonius
12:00 - 14:00 Pausa para almoço
14:00 - 15:00 Segurança com PHP- Theoziran Lima
15:00 - 16:00 Desenvolvimento MVC com Zend Framework - Diego Pessoa
16:00 - 17:00 Desenvolvimento de interfaces ricas com Flex e PHP - Alwin Garside

Logo após a palestra irei postar a minha apresentação.

O evento também será transmitido ao vivo em: www.php-pb.net

Até logo mais!

Tags:

Chegou a Tela Preta da Morte!

Quinta, 6 de Novembro de 2008 às 16:28
Postado na categoria Internet, Tecnologia

Depois da clássica Tela Azul da Morte, agora, em tentativa de coibir a pirataria, a Microsoft, em atitude radical, resolveu apresentar o usuário à Tela Preta da Morte (Black Screen of Death), esta tela simplesmente é exibida todas as vezes que há a tentativa de iniciar um Windows com instalação irregular, ou seja, quem usa apenas o software pirata, não terá mais o direito nem de ligar seu PC.

Isto realmente existe, já foi colocado em prática na China e está gerando uma enorme polêmica no país, onde, estão classificando a Microsoft como “invasores” ou “maiores hackers da China”, mas, afinal, será que vale mesmo à pena combater diretamente o usuário final, no lugar de ir atrás da origem da pirataria? Isto só aumenta a raiva do usuário perante à empresa, e será que depois de uma dessa, o usuário, frustrado com a Microsoft, irá realmente adquirir o Windows Original? Na china pode até ser que sim, agora, se a Microsoft resolve um dia colocar em prática esta ação no Brasil, creio que seria uma mãozinha para apressar a disseminação e popularização (ainda mais) dos Softwares Livres.

Mas fica aqui uma curiosidade, como seriam essas tais telas pretas?

Imagine você acordar, ligar seu pc e se deparar com uma tela dessa:

Black Screen of Death

Black Screen of Death

 

Ou que tal esta?

 

Black Screen of Death 2

Black Screen of Death 2

 

E você? Como acha que pode ser a tela preta da morte?

Participe! Envie abaixo sua sugestão:

 

cforms contact form by delicious:days

Tags:

Insira um chat direto do Gtalk no seu Blog

Quarta, 29 de Outubro de 2008 às 21:20
Postado na categoria Internet

Que tal você disponibilizar um chat no seu blog? É uma boa, afinal, você cria a possibilidade de efetuar um contato dinâmico e direto, porém, melhor ainda, se o “chat” do seu site for o bom e velho Gtalk, que você já usa no seu dia-a-dia. Como vocês podem ver, já adicionei na barra lateral o balãozinho do Gtalk, que, ao clicar, levará o usuário a uma janela, na qual ele poderá se comunicar comigo mesmo que não tenha conta ou não esteja logado no Gmail. É importante frisar que o chat só fica disponível caso o meu status no Gtalk seja “On-line”, caso eu esteja ocupado por exemplo, ele avisa que eu não posso atender no momento.

Para adicionar o Gtalk no seu Blog é bem simples, acesse o site:
http://www.google.com/talk/service/badge/New

Depois é só configurar a melhor forma de exibição, a seu gosto, e copiar o código fonte, colocando-o no seu Blog.

TinEye - Procure por imagens na web

Quarta, 29 de Outubro de 2008 às 20:48
Postado na categoria Internet

Quantas vezes você achou uma foto muito legal na web mas ela está com uma qualidade péssima, num tamanho muito pequeno, ou alguém colocou alguma logomarca sobreposta a ela? Seus problemas acabaram! Chegou o TinEye, mecanismo de busca de imagens que é capaz de procurar fotografias parecidas, veja só o exemplo abaixo para uma imagem do Tux:

Façam bom proveito:
Site oficial - tineye.com

Recursos do gmail para brasileiro não ver

Quarta, 29 de Outubro de 2008 às 19:31
Postado na categoria Internet

Um belo dia, por recomendação do designer Flávio Mendes, resolvo alterar o idioma do meu Gmail para “english US”, ao acessar a aba Settings, me deparo com uma opção que não existe na versão “brasileira”, a aba “Labs”, nesta aba podemos adicionar ao nosso Gmail vários recursos muito legais, como por exemplo:

  • Links Rápidos:
    Você pode guardar aqueles e-mails favoritos como links a serem acessados rapidamente depois.
  • Fotos no Gtalk: Você poderá adicionar fotos ao Gtalk do seu gmail, deixando com cara igual ao do programa Gtalk, bem legal.
  • Super Estrelas
    Além da estrelinha padrão, você pode habilitar outros tipos de ícones para usar de marcadores nos seus e-mails.
  • Responda a todos
    Imagine um e-mail compartilhado com umas 20 pessoas, responda a todos de uma vocês habilitando este recurso!
  • Teste do Bafômetro
    Esse é muito legal, recomendo a pessoas que gostam de tomar uma nos fins de semana e depois vão usar e-mail. É bem simples, você configura os horários que costuma sair pra beber e o gmail pede para você resolver alguma contas simples antes de enviar o e-mail, kkkk, muito legal.
  • Férias!!!
    Configure um período de férias e mensagens automáticas que serão enviadas para os usuários que te contatarem neste tempo.
  • Gadget do Google Docs
    Possua acesso rápido aos docs do Google no seu e-mail, bem útil!

Enfim, estes são apenas alguns dos recursos que podem ser ativados nos Labs do Google, a única dúvida que fica na nossa cabeça é: Por que eles só habilitaram para a versão “english US”? Talvez ainda não exista uma tradução para esses componentes, de qualquer forma, agora não troco agora meu Gmail em inglês por nada! hehe.

Tags: ,