Dec-07 19

Formatação de textos HTML, com editor WYSIWYG

Enviado por: Thales RB. .     10 comentários.     Categorias: Aprendendo PHP, Blogs, HTML-CSS, Javascript, Scripts

Para quem oferece algum sistema, onde qualquer pessoa possa enviar textos é interessante, ter um editor para formatação de textos, já que não é qualquer um que sabe comandos HTML para formatar o texto. E o seu uso é recomendado para não permitir que qualquer comando HTML possa ser usado, já que alguns comandos poderiam arruinar o seu Layout

Para fazer isso existem dois tipo de editores:

WYSIWYG(What You See Is What You Get), que é um editor visual ou seja ao usa-lo você já verá o texto formatado, igual o word, g-mail, wordpress, etc.

BBCODE(Bulletin Board Code), que é uma simples função para substituir caracteres, ex: a tag <b></b> ficará [b][/b], como o seu nome diz ele foi criado para fóruns, onde é encontrado comumente, para criar um editor desse é preciso saber bastante programação, já que é preciso, substituir todos os caracteres, e bloquear o uso de outros comandos html.

Usando um WYSIWYG

Os editores desse tipo, são de uso mais facil, pois são feitos com Javascript, e podem ser usados com qualquer tipo de sistema, PHP, ASP, etc.

Quando eu estive procurando por isso, achei um monte de editores assim, mas não consegui usar ou adaptar ao que eu queria quase nenhum.

O unico que eu me dei bem foi o TinyMCE. Veja aqui um exemplo dele Para usa-lo é bem simple, com o download dele em alguma pasta do seu sistema, e adicione o seguinte no arquivoirá usa-lo

<script type=”text/javascript” src=”pasta_onde_esta_os_arquivos/tinymce/tiny_mce.js”></script>

<script language="javascript" type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced",
plugins : "safari,spellchecker,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,pagebreak,imagemanager,filemanager",
theme_advanced_buttons1_add_before : "save,newdocument,separator",
theme_advanced_buttons1_add : "fontselect,fontsizeselect",
theme_advanced_buttons2_add : "separator,insertdate,inserttime,preview,separator,forecolor,backcolor",
theme_advanced_buttons2_add_before: "cut,copy,paste,pastetext,pasteword,separator,search,replace,separator",
theme_advanced_buttons3_add_before : "tablecontrols,separator",
theme_advanced_buttons3_add : "emotions,iespell,media,advhr,separator,print,separator,ltr,rtl,separator,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,spellchecker,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
content_css : "/example_data/example_full.css",
plugin_insertdate_dateFormat : "%Y-%m-%d",
plugin_insertdate_timeFormat : "%H:%M:%S",
external_link_list_url : "example_data/example_link_list.js",
external_image_list_url : "example_data/example_image_list.js",
flash_external_list_url : "example_data/example_flash_list.js",
template_external_list_url : "example_data/example_template_list.js",
theme_advanced_resize_horizontal : false,
theme_advanced_resizing : true,
apply_source_formatting : true,
spellchecker_languages : "+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv"
});
</script>

Esse segundo javascript serve para formatar a exibição, no caso aqui ele irá aparecer todas as opções, mas como ele usa um esquema de plugins, cada botão é um plugin, então é possiveo formatar isso.

Como pode ser visto ele tem theme_advanced_buttonsX_add e na frente de cada uma tem os botões que seram mostrados, ou seja é só deletar o nome do botão para remove-lo. E se não for usar um botão pode remover a sua pasta dentro do tinymce para ficar mais leve.

Adicionando esses scripts ele irá adicionar o editor em todas as textareas que houver na página.

Compartilhe nos Sites Sociais: Adicionar esta notcia no Linkk Adicionar esta notcia no Rec6 Adicionar esta notcia no Ueba
Nimbus
Comment on December 24th, 2007.

Quando se trata de editores WYSIWYG para páginas web o site http://www.htmlarea.com/ é uma ótima referência. Lá você encontra vários editores.

Comment on December 24th, 2007.

realmente esse site ai é muito bom, acho q o tinymce eu descobri atravez desse site ai
vlw pela contibuição

Canvas Prints
Comment on April 6th, 2008.

There are a lot of people here. I’ll join you guys. Believe it or not, many people fail in commenting stuff. I’m just trying to say a simple thing – before commenting something, think twice!

Fabricio
Comment on April 10th, 2008.

Estou tentando usar o TinyMCE, mas estou tento problemas em recuperar o texto digitado pelo cliente.

Como eu posso fazer isso? Estou usando aspx. Abraços

Comment on April 11th, 2008.

bem em aspx eu não sei exatamente, pq não manjo nada

mas em php é só usar o GET, pq o que ele adiciona o HTML no seu codigo, ou seja é a mesma coisa que pegar o texto de uma textarea

dá uma olhada no http://tinymce.moxiecode.com/documentation.php que talvez tenha algo para te ajudar

FelipeMartins
Comment on June 12th, 2008.

Thales RB,
bom dia! estou tentando implementar esse script, só que estou tendo 2 problemas, a caixa de texto está ficando muito longa, já tentei de tudo, no meu servido que esta configurado no meu pc roda certo o tamanho da caixa, só que quando eu jogo pra locaweb, a caixa aumenta de tamanho, mas a largura permanece a mesma.

O segundo problema é que quando eu vou postar a notícia ela ta dando espaçamento duplo invez de dar um só.

Gostaria se possivel que vc me desse uma força na resolução desses 2 problemas.
me add no msn pra gente conversar: felipeceleste_m@hotmail.com

Atenciosamente,
Felipe Martins

FelipeMartins
Comment on June 12th, 2008.

Thales RB,

bom dia! estou tentando implementar esse script, só que estou tendo 2 problemas, a caixa de texto está ficando muito longa, já tentei de tudo, no meu servido que esta configurado no meu pc roda certo o tamanho da caixa, só que quando eu jogo pra locaweb, a caixa aumenta de tamanho, mas a largura permanece a mesma.

O segundo problema é que quando eu vou postar a notícia ela ta dando espaçamento duplo invez de dar um só.

Gostaria se possivel que vc me desse uma força na resolução desses 2 problemas.
me add no msn pra gente conversar: felipeceleste_m@hotmail.com

Atenciosamente,
Felipe Martins

Fabricio
Comment on June 12th, 2008.

Thales… eu sei que já faz tempo..rs.. acabei esquecendo de postar aqui o minha solução. Eu tb estava utilizando o GET, porém o valor vinha sempre VAZIO… o que eu não estava fazendo era chamando a função “tinyMCE.Save();” - Se eu não me engano é essa ai…

Já sobre o seu problema Felipe, seria interessante você passar o seu código pra dar uma olhada, porque a utilização dele é bem simples. Se quiser me manda no e-mail que eu “tento” te dar uma força. fbuckeridge@hotmail.com

Abraços

Comment on June 13th, 2008.

Olá Felipe

O tamanho está ligado a tag textarea ou seja para definir o tamanho mude o rows=”XX” cols=”XX”

já o espaçamento duplo eu não tenho ideia do motivo mas deve ser alguma configuração do javascript dele que fica no arquivo tiny_mce.js, dá uma olhada na documentação lá do site que vc deve achar alguma coisa http://tinymce.moxiecode.com/documentation.php

obs: faz uns 4 meses que eu não entro no meu msn, então pode falar comigo por aqui ou pelo fórum

Kimb
Comment on August 31st, 2008.

olá..
não consegui mudar nada com esse

mudei o nome da pasta onde coloquei o tiny,porem como usar?

onde devo colocar isso? no meu form? ou no codigo que vai mostrar?

e quanto a esse codigo que vc colocou logo abaixo do

também deve ser copiado? e se deve, onde coloco ele?

Deixe um comentário

Os campos nome e e-mail são obrigatorios(o e-mail não será exibido), a URL é opcional.

Os comentários podem ter os seguintes comandos:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>