Here we go.
Para abrir bem este blog, vamos falar de algo que qualquer programador web, se nunca precisou, certamente irá precisar um dia: um "editor rico" para textos em seu site.
Como assim? Imagine: você está escrevendo uma ferramenta de blog, de edição de notícias ou alguma coisa assim. Seus visitantes internautas vão querer pôr links, figuras, mudar a cor ou fonte do texto, etc. É disso que eu falo. Agora que estamos melhor situados, prossigamos.
Infelizmente a Microsoft parece ignorar o apelo forte de incluir este componente no pacote asp.net ou ajax toolkit.
Foi em uma situação desta que precisei "googlar" a internet. Queria uma ferramenta que não somente fizesse este papel de "word para a web" mas que eu pudesse integrar em um site asp.net e programar sobre usando C#. Achei várias, testei algumas, mas quem se saiu melhor mesmo foi o FCKEditor (http://www.fckeditor.net), seja pelo bom resultado, testado por mim no Internet Explorer 7, Internet Explorer 6 e no Mozilla Firefox (compreendendo assim algo em torno de 95% da internet, e não tenho fonte oficial para este número), seja pelo preço = freeware.
No quisito ASP.NET, este também é perfeito. No site oficial encontram-se links para ferramentas de interface para várias linguagens server-side, inclusive com um wiki (http://wiki.fckeditor.net) suficientemente bom. Mas neste mundo nem tudo é perfeito. Seguindo as instruções do wiki, criei um site asp.net, carreguei a dll para o diretório /bin e os arquivos do FCKEditor propriamente na pasta /FCKEditor. Nesta última pasta, editei o arquivo fckconfig.js para especificar que estarei utilizando asp.net. Criei a pasta para os uploads de imagens e swf's para as edições. Inclui as chaves no web.config para a dll saber quais folders tem o quê. Inclui na diretiva @Page ValidateRequest="false". O-ou: nada bom isso, estamos intencionalmente abrindo brechas de segurança desabilitando validações built-in do asp.net para Cross-site-scripts (XSS) e afins. Em teoria isto é tudo. Rodar o site: F5. Sucesso!
Agora que sabemos que funciona, vamos para a parte divertida da brincadeira: personalizar. Primeiro setar o valor inicial do editor: fácil, fckeditor1.value. Depois, receber o valor postado pelo internauta: fácil, ler fckeditor1.value. Terceiro: configurar pastas de arquivos de imagens e flash diferentes para cada usuário ou grupo. Não posso dizer que é difícil, mas aí comecei a achar informações desencontradas. Segundo o wiki, bastava setar um valor na sessão do usuário, mas assim não funcionou. Analisei o código fonte da dll (disponível via SourceForge), a lógica está perfeita. Depois de googlar mais um tanto, descobri que por padrão a ferramenta de upload e inclusão de arquivos não fica ligada a sessão do usuário (???) e que isto deve ser mudado no config do editor. Agora sim. Mas ainda não está bom, meu site continua exposto a ataques. Resolvi analisar o config. Surpresa! O FCKEditor é customizável de uma forma incrível! Tudo lá, esperando uma leitura com atenção. Foi lá também que descobri uma chave HtmlEncodeOutput com valor padrão false. Alterei este valor para true, exclui o validaterequest=false da minha página e tudo correu bem, bastando um Server.HTMLDecode na função que recebe o postback para ter novamente o HTML "utilizável". Finish, sem abrir mão da segurança.
Não detalhei muito as etapas, mas como "brinde" deixo o meu site de exemplo no SkyDrive (link na home do meu Space), pasta Componentes.NET.
Resumindo: o FCKEditor excelente editor Rich Text integrável com asp.net, altamente customizável, e ainda é free, mas precisa de uns ajustes fáceis para ficar melhor ainda.
Até a próxima. Abraços!
Nenhum comentário:
Postar um comentário