CodeCast #4 – Adobe Flash

CodeCast #4 - Adobe Flash

Saiu! O CodeCast #4 finalmente saiu! Atrasado, mas saiu. Apedrejado pelos mais standardistas, amado pelo pessoal que gosta de interatividade, o Adobe Flash foi o assunto dessa edição.

Falamos um pouco sobre sua história, ActionScript, dos seus prós e contras, um pouco sobre o Flex e o flash-killer da Microsoft, o Silverlight. E é claro, nossa mais recente experiência com o bichinho que, diga-se de passagem, está sendo muito divertida e proveitosa.

Pra quem ainda não conhece, e pra todos que quiserem ouvir, é só acessar o site do CodeCast e baixar. São só 30 minutos, em 14MB. Até mais!

17 de maio, 2008

Upload Assíncrono de Arquivos com Mootools

Como todos sabem, Upload com Ajax não é praticável em ambiente web. Existem várias restrições de segurança que impedem que o JavaScript acesse o sistema de arquivos do cliente e envie dados binários através de uma requisição XMLHttpRequest. No entanto, é possível (e sempre foi) fazer Upload Assíncrono de arquivos, utilizando uma técnica até antiga, muito bem explorada por muitos por aí.

Já havia tempo que eu queria escrever esse script, mas a coragem faltava, até que ele me foi necessário. Como uso Mootools, não faria sentido usar funções autônomas, desperdiçando código. Então tomei coragem e fiz. Pronto, nem doeu…

O Código

Meu objetivo, nesse post, não é explicar a lógica por trás do script (farei isso em breve), mas sim deixar o código pronto, e explicar seu uso.

Download Async Upload

Antes de tudo, você precisará da Mootools com os módulos necessários, o que suponho que você já possua. Depois, faça o download do Async Upload. Agora, basta incluir os dois scripts em sua página.

<script type="text/javascript" src="mootools.js"></script>
<script type="text/javascript" src="asyncUpload.js"></script>

Utilização

Como não podia deixar de ser, o script funciona na submissão de um formulário. Ele a intercepta e a envia para um iframe escondido. Pra que tudo isso funcione, temos que definir isso no onSubmit de nosso formulário:

$(window).addEvent("load", function() { // quando terminar de carregar...
  $("seu-formulario").addEvent("submit", function() { // e o nosso formulário for enviado...
    this.upload() // fazemos nosso upload, parecido (mas não é) com Ajax
  })
}

E cadê a URL?

Como a Mootools nos dá muitas opções para trabalhar com DOM, não precisamos definir a URL no script. Essa URL vai ser retirada do próprio formulário, no action:

<form action="http://sua-url-para-envio/upload.php" id="seu-formulario">
  <input type="file" name="fileToUpload" id="fileToUpload" />
</form>

Elemento de Retorno

Muito melhor do que elementos de retorno, podemos definir uma função para tratar o retorno do upload. Para isso, passamos um parâmetro para a função:

$(window).addEvent("load", function() {
  $("seu-formulario").addEvent("submit", function() {
    this.upload({
      "onComplete": function(response) {
        $("elemento_de_retorno").setHTML(response)
      }
    })
  })
}

Com o código acima, o resultado da requisição iria para uma div (ou algum outro elemento) de id “elemento_de_retorno”. É claro, pode-se fazer muito mais, mas fica a seu cargo decidir…

Recebendo o Arquivo

Apesar de assíncrono (ou Ajax disfarçado), esse upload funciona como um upload comum. No PHP, por exemplo, podemos receber o arquivo assim:

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "nome_do_arquivo.txt");

Exemplo e Download

Caso queira dar uma olhada, deixei um exemplo na página de downloads. Faça upload de um arquivo qualquer e veja o funcionamento! Caso deseje saber a lógica por trás de tudo isso, aguarde os próximos posts. Até mais!

08 de maio, 2008

CodeCast #3 – Semântica e Microformatos

Por mais que se fale, ainda tem muito desenvolvedor que peca nessa parte: o bom e velho HTML semântico. Tentando esclarecer um pouco mais o assunto, cá está o CodeCast #3, em versão resumida e ainda por cima atrasada.

Em 20 poucos minutos falamos um pouco sobre semântica, microformats, XML, RDF, e qualquer outra coisa relacionada que eu possa ter esquecido no momento. CodeCast #3 – A Semântica e Microformatos.

Peço desculpas pela recente ausência, e pela falta de respostas para alguns contatos. Logo logo respondo todo mundo, e também pretendo postar alguma coisa em breve (juro!). Até mais!

23 de abril, 2008

Mootools – Menu Sanfona

A Mootools, além de ser uma ótima biblioteca para tarefas variadas relacionadas a Strings, Arrays, DOM e Ajax, ela também possui alguns "extras" muito úteis na hora de desenvolver algo mais "bonitinho". O menu sanfona (ou accordion menu, como preferir) é um deles, do qual irei falar nesse post mais-do-que-atrasado. Aproveite e veja como ficará.

O HTML

Antes de começar com o comportamento, primeiro vamos criar o conteúdo do menu. Uma lista simples, com outras listas aninhadas, as quais
ficarão escondidas até que seus títulos sejam clicados.

<ul>
        <li><h3>Título 1</h3>
                <ul>
                        <li>Item 1</li>
                        <li>Item 2</li>
                        <li>Item 3</li>
                </ul>
        </li>
        <li><h3>Título 2</h3>
                <ul>
                        <li>Item 1</li>
                        <li>Item 2</li>
                        <li>Item 3</li>
                </ul>
        </li>
</ul>

Nada em especial até agora, mas temos que incluir mais alguns atributos aí. Para que a Mootools possa identificar quais itens serão clicáveis e quais deverão ficar “escondidos”, precisamos identificá-los com classes. Não há restrição para alguma classe específica, mas costumo usar toggler para os clicáveis e element para os itens escondidos.

<ul>
        <li><h3 class="toggler">Título 1</h3>
                <ul class="element">
                        <li>Item 1</li>
                        <li>Item 2</li>
                        <li>Item 3</li>
                </ul>
        </li>
        <li><h3 class="toggler">Título 2</h3>
                <ul class="element">
                        <li>Item 1</li>
                        <li>Item 2</li>
                        <li>Item 3</li>
                </ul>
        </li>
</ul>

O Script

Agora sim, a parte difícil, ou nem tanto assim. Como tudo na Mootools é baseado em classes, o menu sanfona não foge à regra. A classe Accordion é a responsável por todo o menu, desde identificar seus elementos até mostrar/esconder o conteúdo.

window.addEvent('domready', function() {
	var accordion = new Accordion('h3.toggler', 'ul.element')
})

Como parâmetros, passamos os títulos clicáveis e o conteúdo de cada item, somente isso. A biblioteca cuida do resto. Difícil, não?

Algumas Opções

Podemos ir um pouco além do básico, e adicionar alguma personalização em nosso menu. Para isso, a classe nos dá algumas opções. Basta passar um objeto como terceiro parâmetro. As opções possíveis são:

  • show: índice do elemento a ser mostrado inicialmente
  • display: índice do elemento a ser mostrado inicialmente. Diferentemente de show, esse elemento será mostrado com uma transição
  • fixedHeight: altura fixa dos itens, padrão false
  • fixedWidth: largura fixa dos itens, padrão false
  • height: inclui transição de altura, padrão true
  • opacity: inclui transição de opacidade, padrão true
  • width: inclui transição de largura, padrão false
  • alwaysHide: permite esconder todos elementos, em vez de manter ao menos um sendo mostrado, padrão false

Além das opções, temos também dois eventos:

  • onActive: executado quando algum item se tornar ativo
  • onBackground: executado quando algum item for escondido

Finalizando

Agora vamos modificar um pouco nosso menu, utilizando as opções e eventos vistos acima.

window.addEvent('domready', function() {
	var accordion = new Accordion('h3.toggler', 'ul.element', {
		"opacity": false,
		"onActive": function(toggler) {
			toggler.setStyle("color", "#f00");
			toggler.setStyle("font-weight", "bold");
		},
		"onBackground": function(toggler) {
			toggler.setStyle("color", "#000");
			toggler.setStyle("font-weight", "normal");
		}
	})
})

Pronto! Veja o exemplo finalizado. E mais: retirando todas as transições, você tem um menu sanfona totalmente customizável. O poder e a facilidade da Mootools. Incrível, muito bem pensado, por isso adoro essa biblioteca. Até mais!

13 de abril, 2008

CodeCast #2 – XHTML 2 e HTML 5

Gravamos no tempo, falhei na hora de avisar… O CodeCast #2 já está no ar há uma semana, mas só agora pude trazê-lo até aqui. Rotina nova, ainda me acostumando…

Desta vez falamos sobre os novos padrões, XHTML 2 e HTML 5. Coisas legais, mancadas, acessibilidade, semântica, enfim. Seguimos algumas dicas do pessoal, fizemos o podcast em apenas 30 minutos, tínhamos uma pauta (que não foi seguida muito à risca, mas ela existia) e também já temos o RSS funcionando.

Como disse o Rafael, escutem que está bem legal!

06 de abril, 2008