• dmsAutoComplete versão 1.3

    by  • May 29, 2007 • Pessoal/Off-topic

    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.

    About

    Rafael Dohms is a PHP Evangelist, Speaker and contributor. He is a very active member of the PHP Community, having helped create and manage two PHP User Groups in Brazil. He shared the lead of PHPSP for 3 wonderful years making a positive mark on the local market. Developer, gamer and lover of code he also hosts Brazil’s first PHP Podcast: PHPSPCast, as well as contributing to well known projects. He moved to the Netherlands in search of new challenges and is now part of the team at WEBclusive, sharing his passion for quality code and working on new awesome ideas with the team. You can always find him at the nearest Community events, speaking, sharing, talking or just learning from the rest.

    http://doh.ms