dmsAutoComplete versão 1.3

Após alguns meses de atraso devido a coisas mil (PHPDF Roadshow, BlogBlogs…) tive tempo de voltar ao meu script de autocomplete para a manutenção rotineira dele.

O primeiro passo que tomei foi re-organizar meu gerenciador de projetos pois ela havia sido “vandalizado” por robôs spammers que bagunçaram tudo, mas graças ao conceito de “history” consegui corrigir tudo.

O que mudou?

Esta versão é um marco muito legal para o projeto, IMHO, pois ele é quase que 100% composto de alterações, requisitadas e as vezes até realizadas por usuários do script de vários cantos do planeta. Embora no corte final o código submetido tenha sido em grande parte re-escrito, acredito que devo algo aos que contribuiram e vou mencionar seus nomes aqui neste post e listas as contribuições no script. Estas contribuições eu recebi por email e tinha em meu registro, então se eu esqueci de alguém, manifeste-se e darei o justo crédito.

Bug #1: Erro com acentos

Alguns usuários reportaram que ao fazer buscas com acentos nenhum resultado era retornado. Isto ocorria devido à problemas de codificação no lado PHP do script, e um simples utf8_decode resolveu este problema. O Marcus Ellend (www.uniqa.com.br ) contribuiu com esta solução de forma muito similar usando o encode no texto comparado, mas preferi manter o decode no texto que é enviado.

Bug #2: DIV cobre SELECTs

Este erro ocorre apenas no IE, antes da versão 7. Quando o DIV é chamado com um SELECT logo abaixo, o SELECT fica sobre o DIV. Para isso o script executa uma rotina simples que esconde todos SELECTS da pagina. Para que isso não afete soluções que não sofrem deste problema, esta rotina só é executada se a propriedade hideSelects estiver setada para true. Mais uma vez neste bug recebi o apoio do Marcus, apenas adaptando o código submetido para usar a propriedade acima.

Melhoria #1: Tamanho mínimo

Esta sugestão venho do outro lado do Atlântico, enviada pelo Simon Franz (www.tanzmusik-online.de ) sa Alemanha (aah, a globalização). Sua solução pedia que o script apenas começasse a “chutar” valores depois de 3 ou 4 letras digitadas, por isso adaptei uma propriedade, chamada minLength que define qual deve ser este número, sendo necessário apenas alterar seu valor padrão de “1” para o valor desejado.

Melhoria #2: Limpar (ou não) campo após escolha

Esta melhoria foi recomendada por várias pessoas e embora dependesse de apenas comentar-se uma linha, decidi implementar ela de uma forma mais limpa, usando a propriedade cleanField. se esta propriedade for setara para verdadeiro (valor padrão) o texto do campo será limpo após a seleção, caso não, o valor permanece no campo.

Melhoria #3: Compatibilidade com PHP4

Embora o exemplo seja apenas uma dica de utilização percebo que muitas pessoas se baseiam nele para seus scripts e muitos ainda usam PHP4, portanto ficavam sem rumo quando o script não retornava nada, devido ao uso de funções do PHP5. Recebi algumas sugestões para esta solução, do Marcus e do Jon Bernhardt (www.wobblymusic.com ) que co seu ultimo contato me estimulou a fazer a atualização do script. Com estas soluções em mãos optei por usar um truque chamado class_exists para verificar se a classe de DOMDocument esta presente, e caso não esteja, utilizar a criação do XML “na mão”. Desta forma o script se adapta ao servidor e os problemas de versão doPHP desaparecem.

Bem, estas são as melhorias, espero que possam ajudar a todos que usam o script hoje em dia, e obrigado a todos que enviaram sugestões. Estou iniciando na página do meu gerênciador de projetos a documentação do script, para poder dar mais auxílio a todos.

comments powered by Disqus

Related Posts

Review: A Arte das Comunidades Virtuais - Jono Bacon

Review: A Arte das Comunidades Virtuais - Jono Bacon

  • July 5, 2010

Devo confessar que Jono Bacon me pegou de surpresa, ao acompanhar o processo de criação do livro jamais imaginei que teria em mãos um material tão útil para quem lida com comunidades virtuais no dia a dia.

Read More
strtotime() - Pode ajudar?

strtotime() - Pode ajudar?

  • August 3, 2006

Volta e meia recebo emails onde vejo perguntas de “Como somar X dias a uma data?”, “Como descubro quando é a próxima quinta?”, e muitas outras assim. Me assuto ao ver respostas enormes com códigos que fazem de tudo, até calcular dias levando em conta um algoritmo maluco q determina ano bisexto… não entendo porque complicar tanto.

A função strtotime() esta ai para isso, nesse posto vou apresentar ela e mostrar casos simples de uso onde ela é muito eficaz. Além de verificar a performance da função utilizando um benchmark simples.

Read More
php|tek09: Dia #1

php|tek09: Dia #1

  • May 20, 2009

Dia de tutoriais na php|tek! O dia começou com um café da manha regado a PHP onde pude falar com muitas pessoas do dia anterior e conhecer o Matthew Weier O’Phinney.

Read More