{ Wilker-Dev: Blog }
May 7, 2010

[Rails Plugin] Mongoid Taggable: criando tags para documentos mongoid

Após certa luta eu ontem criei um novo plugin para Rails, o mongoid_taggable. Traduzi o meu README pra BR aqui:

Mongoid Taggable

Mongoid Taggable provê uma maneira simples para criar documentos com tags.

Instalação

Basta apenas instala-lo como um plugin para Rails:

script/plugin install git://github.com/wilkerlucio/mongoid_taggable.git

Uso Básico

Para ativar as tags em um documento basta incluir o módulo Mongoid::Taggable:

No seu formulário:

Nesse caso, seu campo de texto deve receber uma lista de tags separadas por vírgula (abaixo nesse documento você verá como trocar o separador padrão.

Então seu documento terá as propriedades tags e tags_array. A propriedades tags você deve usar como uma string com as tags separadas por vírgula, o tags_array é um array de tags, essas duas propriedades são sincronizadas automaticamente.

Indexando Tags

Essa biblioteca irá criar automaticamente um índice das tags após salvar o documento, esse índice é bastante útil para ter uma lista de todas as tags usadas nos documentos ou para criar um tag cloud. Veja o seguinte exemplo para entender como usar isso:

Se você não for usar esse recurso, é bom desativar para melhorar a performance:

Mudando o separador padrão

Para alterar o separador padrão você precisa apenas chamar o método tags_separator na sua classe:

Filed under // development  mongoid  plugin  rails  ruby  tags  // 0 Comments
May 5, 2010

jQuery MultiSelect

Screen_shot_2010-05-05_at_5

Estava trabalhando num projeto da empresa e precisamos de um input para tags, eu antigamente usada um plugin autocomplete para jquery, mas decidi procurar algo mais legal dessa vez. Depois de dar umas olhadas eu gostei bastante do proprio esquema do Posterous, olhei o fonte e descobri que ele estava usando o Proto!MultiSelect. Muito legal, mas nós estamos utilizando jQuery e não temos intenção de colocar o Prototype junto pra rodar, então eu procurei soluções em outros plugins de jQuery mesmo. Até achar o FCBKComplete, ele até é legal a primeira vista, mas não gostei porque ele perde o foco no cursor quando você seleciona uma opção, e ele não deixa inserir opções que não estejam previamente definidas. Tentei até olhar o fonte para mexer, mas vi rapidamente que não valeria a pena, então decidi por a mão na massa e criar o meu próprio plugin para isso.

Como resultado estou lançando agora o jQuery MultiSelect. Ele tem suporte a autocomplete e adição inline, separador customizado e vários atalhos legais :)
O fonte pode ser encontrado no github, e foi programado usando CoffeeScript. Ta ai mais um plugin para quem quiser ;)
Filed under // development  javascript  jquery  plugin  // 0 Comments
October 9, 2009

Calendar Iterator, criando calendários para Rails

Eu estava aqui trabalhando num projeto em Rails, e surgiu a nescessidade de usar um calendário no site. Bom, como tudo no Rails eu decidi procurar algum plugin para isso, e encontrei o Calendar Helper, foi uma surpresa pois esse foi o único que eu encontrei, tentei utiliza-lo, precisei fazer algumas modificações no mesmo, mas fui precisando de mais e mais modificações, até eu decidir que esse plugin não era o correto pra mim, eu precisava de algo mais customizavel e simples. Então decidi criar o meu próprio, o Calendar Iterator.

A idéia é bastante simples, no lugar gerar o calendário inteiro (tabela, headers...) eu decidi simplesmente gerar os dias pertinentes ao calendário do mês atual, dessa forma o resto é facilmente customizável.

Veja alguns exemplos de uso:

# criando um calendário simples<table>  <tbody>    <% calendar_iterate do |d| %>      <%= d %>    <% end %>  </tbody></table># usando links nos dias do calendário<table>  <tbody>    <% calendar_iterate do |d| %>      <%= link_to d, events_path(:day => d.mday) %>    <% end %>  </tbody></table># trocando a data do calendário (se você não preencher algum parâmetro, o ano/mês atual serão utilizados)<table>  <tbody>    <% calendar_iterate :month => 6, :year => 2009 do |d| %>      <%= d %>    <% end %>  </tbody></table># usando uma versão totalmente customizada das tags <tr> e <td><table>  <tbody>    <% calendar_iterate.each_week do |w| %>    <tr class="some_class">      <% w.each do |d| %>        <td class="cell_class"><%= d %></td>      <% end %>    </tr>    <% end %>  </tbody></table>

Então é isso, o código do projeto está no Github, e pode ser visto aqui.

Para instalar o Calendar Iterator na sua aplicação execute o seguinte comando:

script/plugin install git://github.com/wilkerlucio/calendar_iterator.git

Filed under // plugin  rails  // 0 Comments