Neste post compartilho um plugin jQuery que tenho usado para criar a funcionalidade de accordion, muito útil para agrupar inputs e reduzir o tamanho de formulários. Não pretendo explicar os detalhes e meandros da confecção de um plugin, somente compartilhar o código.
O plugin espera uma determinada estrutura de marcação para funcionar corretamente. A seguir temos um exemplo:
Seção
... seus inputs, sugiro colocar em uma lista ...
Ajuda da seção
Outra Seção
... seus inputs ...
Ajuda da outra seção
E depois é só chamar o plugin em cima do container, como a seguir:
Interessante… DHH (criador do Rails) fez uma campanha de caridade pra arrecadar $100k para ajudar pessoas sem água potável na África. Arrecadou $37,468. Vide http://mycharitywater.org/rails3
O projeto Diaspora também queria arrecadar $$$ e pra isso usou o Kickstarter. Seu objetivo era arrecadar $10k, mas acabaram juntando $200k. A irônia é que ele é *feito* com Rails3. Vide http://www.kickstarter.com/projects/196017994/diaspora-the-personally-controlled-do-it-all-distr
Solicitar a senha antiga para alterar a atual é uma boa prática, ja que uma pessoa má intencionada pode se aproveitar de uma sessão ainda aberta. É bem óbvio, mas muitos não se preocupam com a questão.
Quem utiliza o framework Ruby on Rails e o plugin Authlogic para gerenciar autenticação pode se valer do seguinte:
class User < ActiveRecord::Base
attr_accessor :old_password
...
protected
def old_password_valid?
errors.add(:old_password, "não confere com a senha atual!") unless self.valid_password?(self.old_password)
end
validate :old_password_valid?
end
Este código também verifica se existe um perishable token, usado para funcionalidades como o "Esqueci minha Senha". Neste caso a validação não será executada.
Vamos preencher uma lista com ítens vindos de uma requisição AJAX com dados voltando no formato JSON. Aqui só vou cobrir a parte client-side.
Primeiro vamos definir um campo de texto para entrar com a busca. Repare que logo abaixo temos um “container” que servirá como local para exibição dos ítens.
Em seguida, vamos associar o evento keypress com o input e verificar se o tamanho da entrada é maior que 1 caracter, só pra não ficar enviando requisições vazias… e depois é só iterar na lista e anexar os ítens no container.
$('#search_terms').keypress(function() {
if ($(this).val().length > 1) {
$.getJSON('/controller/action', {search: $(this).val()}, function(r) {
var container = $('#container');
container.html("");
for (var i = 0; i < r.length; i++) {
container.append('
'+r[i].title+'
');
}
})
}
});
Neste exemplo o retorno esperado do script é no formato JSON, e espera um vetor de hashes com as chaves id e title, por exemplo:
[{"title":"Titulo do artigo","id":1},{"title":"Outro titulo","id":2}]
Voo tranquilo num EMBRAER 190 da Azul Linhas Aéreas Brasileiras.
Ótimo espaço entre os bancos e excelente serviço de bordo.
É uma daquelas empresas que eu quero que dê certo, pois investe na indústria nacional na escolha da frota e a concorrência no setor só vem a acrescentar.
As vezes precisamos que um aplicativo web acesse a impressora local do usuário para imprimir texto crú, muitas vezes com comandos de formatação de uma impressora matricial… e sabemos que aqui os bytes contam…
Esta applet faz justamente isso, acessa uma URL remota e envia o conteúdo para impressora local identificada no param printer_name.
Não esquecer de incluir no grant do java.policy:
grant {
...
permission java.lang.RuntimePermission "queuePrintJob";
...
}