Edição de rich text com Infragistics editor de HTML no jQuery e no ASP.NET MVC
Junto com todos os recursos interessantes introduzidos para o NetAdvantage para a versão jQuery 11.2 (leia-se: nova grade hierárquica, árvore, controles de combinação) e CTP Charting com Motion Framework - não é tão surpreendente que alguns controles não tenham recebido toda a sua parcela de destaque.
Junto com todos os recursos interessantes introduzidos para o NetAdvantage para a versão jQuery 11.2 (leia-se: nova grade hierárquica, árvore, controles de combinação) e CTP Charting com Motion Framework - não é tão surpreendente que alguns controles não tenham recebido toda a sua parcela de destaque.
Estou falando sobre o controle do Editor HTML baseado em jQuery e que implementa WYSIWYG. WYSIWYG significa 'o que você vê é o que você obtém' (leia sobre isso na Wikipedia), que é exatamente o que em sua essência esse controle deve fornecer. Transformando os colchetes angulares de abertura e fechamento ( "<" e ">") em HTML equivalente – "<"/">". Esse é apenas um exemplo, mas é o que o editor do meu blog também faz, para que possam ser apresentados adequadamente pelo navegador e não apenas - alguns servidores bloqueiam esse conteúdo como ameaça potencial. Mesmo que você não tenha notado, esse tipo de funcionalidade é oferecido praticamente em qualquer lugar em que o conteúdo gerado pelo usuário seja suportado - como este blog, os comentários, fóruns, etc.
E agora você pode fornecer aos seus usuários esse tipo de funcionalidade usando o widget igHtmlEditor e muito mais!
Aqui deve ser mencionado que o Editor HTML é CTP (Community Technology Preview), o que significa que ainda está no estágio beta de seu desenvolvimento. Por esse motivo, até seu lançamento oficial, nada é definitivo, mas, novamente, também não há razão para não experimentá-lo e conhecer o controle com antecedência. Também é aconselhável se você usar a versão mais recente do serviço.
Começando
O widget é construído sobre a interface do usuário do jQuery, portanto, como acontece com outros controles do NetAdvantage para jQuery, você precisará primeiro do jQuery e, em seguida, da interface do usuário do jQuery adicionada à sua página. O script para o igHtmlEditor, no entanto, não está incluído no arquivo "ig.ui.min.js" padrão, mas sim em seu próprio "ig.ui.htmleditor.min.js". Este último é, na verdade, o único arquivo de script necessário para incluir após os do jQuery.
Os estilos padrão, com os quais você já deve estar familiarizado, também são necessários. Mais uma vez, vou encorajá-lo a verificar nosso Guia de Implantação, onde você pode ler exatamente como encontrar e gerenciar os recursos necessários.
É claro que fornecerei um código combinado que você pode usar como referência (supondo que você tenha as pastas 'Scripts' e 'themes' por padrão) e adicionar o igHtmlEditor à página é o mais trivial possível - um elemento HTML DIV como contêiner e uma linha de script para criar uma nova instância do widget em JavaScript e é tão fácil de ASP.NET MVC. Trechos de código combinados para ambos:
<!-- ## Javascript/HTML ## --> <!-- CSS --> <link href="../../themes/min/ig/jquery.ui.custom.min.css" rel="stylesheet" type="text/css" /> <link href="../../themes/base/ig.ui.min.css")" rel="stylesheet" type="text/css" /> <!-- Scripts --> <script src="../Scripts/jquery.min.js"></script> <script src="../Scripts/jquery-ui.min.js"></script> <script src="../Scripts/ig.ui.htmleditor.min.js"></script> <!-- in the body of the document: --> <div id="HtmlEditor1"></div> <!-- initialize the editor on document ready: --> <script type="text/javascript"> $(document).ready(function () { $("#HtmlEditor1").igHtmlEditor(); }); </script> <!--## ASP.NET MVC ##--> <!-- CSS --> <link href="@Url.Content("~/Content/themes/min/ig/jquery.ui.custom.min.css")" rel="stylesheet" type="text/css" /> <link href="@Url.Content("~/Content/themes/base/ig.ui.min.css")" rel="stylesheet" type="text/css" /> <!-- Scripts --> <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/ig.ui.htmleditor.min.js")" type="text/javascript"></script> <!-- in your View: --> @using Infragistics.Web.Mvc @( Html.Infragistics().HtmlEditor().Render() )
Recursos, recursos, recursos!
Mesmo que não esteja concluído, o widget jQuery Html Editor possui uma impressionante variedade de recursos. Em sua implementação atual, quase todos eles são fornecidos sem a necessidade de personalização adicional, portanto, do ponto de vista do desenvolvedor, não há muitas coisas que você precise definir e os usuários sempre recebem um punhado. Quase tudo o que o usuário tem acesso está localizado em uma área da barra de ferramentas na parte superior e as opções são agrupadas ordenadamente em conjuntos relevantes.
A melhor parte é que entre elas podem ser encontradas ferramentas para formatação de rich text que quase qualquer usuário reconheceria imediatamente e se sentiria confortável em usar. Uma experiência de edição abrangente reconhecida apenas após uma demonstração visual:

Tudo na captura de tela (bem, exceto a largura do controle que alterei para caber nesta página) é como o widget o cria por padrão - fontes e tamanhos, negrito e itálico, sublinhado e tachado, opções de alinhamento de texto, listas e marcadores, controle de recuo, etc. Além das ferramentas na parte superior, o controle também exibe convenientemente o caminho completo do DOM atual e o usuário pode clicar em cada elemento da árvore DOM para ter seu conteúdo destacado na área de edição. Isso é muito legal quando o usuário precisa estar ciente de como sua entrada está sendo tratada nos bastidores, mas se isso não for suficiente, bem, o widget fornece funcionalidade para alternar entre o 'design' padrão e a visualização de origem com o clique de um botão:

Essa é a fonte das fontes demonstradas na captura de tela anterior e você também pode vê-las sendo aplicadas como estilos aos contêineres.
Além disso, também havia texto copiado, que estava lá para mostrar que o Editor vem com suporte à área de transferência para todas as operações comuns - recortar, copiar e colar. E não são apenas estilos de texto diferentes sendo preservados dentro da área de edição – você pode colar rich text e sua formatação permanecerá do jeito que você viu originalmente. Você pode muito bem copiar de uma página da web e colar no editor, mas isso não parece tão impressionante, considerando que é tudo baseado em HTML. O que você realmente pode fazer é copiar do MS Word , sim, você pode e fica assim:

Além disso, o usuário tem uma maneira fácil de inserir conteúdo, além de colá-lo. A barra de ferramentas oferece caixas de diálogo para inserir imagens e links:

Há mais uma caixa de diálogo disponível, e ela permite que o usuário adicione o elemento da tabela HTML com pouco ou nenhum esforço e defina o número de colunas e linhas de forma natural, arrastando o ponteiro para o tamanho desejado:

Na barra de ferramentas também podem ser encontrados botões para remover ou adicionar novas linhas e colunas com um clique.
Personalização
Quando mencionado, não há muito que você precise definir na visão dos desenvolvedores, isso não significa que o widget não possa ser personalizado para atender às suas necessidades. Ao configurar o controle, você tem permissão para definir os itens da barra de ferramentas a serem apresentados aos usuários. O padrão é, obviamente, "all", mas a propriedade activeToolbars permite que um conjunto personalizado de barras de ferramentas seja definido. A propriedade aceita uma única string contendo os nomes das barras de ferramentas a serem usadas e aqui está uma lista dos padrões:
- fontProperties
- textFormat
- textAlign
- textIndent
- mesa
- source
Mas certamente você não está enganado, é aqui que a personalização pára – existe, é claro, uma opção para adicionar sua própria barra de ferramentas. Todas as barras de ferramentas contêm elementos de botão e combinação, ou seja, igButton e igCombo, que podem ser adicionados como itens à sua barra de ferramentas personalizada. O igButton é a nossa versão estilizada do botão jQuery UI e o igCombo faz parte do nosso produto NetAdvantage for jQuery.
Por exemplo, vamos adicionar um botão que vincularia à Infragistics página inicial da barra de ferramentas e adicionei um belo logotipo a ele para garantir. Aqui está o snippet para adicionar o seu próprio à propriedade 'toolbars' junto com a configuração dos ativos em JavaScript e ASP.NET MVC 3 com encadeamento e sintaxe Razor:
<!-- ## In Javascript ## --> <script type="text/javascript"> $(document).ready(function () { $("#HtmlEditor1").igHtmlEditor({ width: '750', toolbars: [ { name: 'custom', items: [ { type: 'igButton', link: { href: 'http://pt-br.infragistics.com', target: '_blank' } }] }], activeToolbars: 'fontProperties textFormat textIndent source custom' }); }); </script> <!-- ## In ASP.NET MVC ## --> @( Html.Infragistics().HtmlEditor() .Width("750") .Toolbars(toolbars => { toolbars.AddToolbar().Name("custom").Items(items => { items.AddIgButtonItem() .Link(link => { link.Href("http://pt-br.infragistics.com").Target("_blank"); }); }); }) .ActiveToolbars("fontProperties textFormat textIndent source custom") .Render() )
O seu será adicionado automaticamente, porque as barras de ferramentas ativas padrão são 'todas', mas é claro que você pode nomeá-lo e incluí-lo na lista a ser usada como visto acima. E o mesmo método pode ser usado para adicionar igCombo (s) ou apenas mais botões. Aqui está como o resultado do código acima pode parecer (observe que o último botão é nossa adição de barra de ferramentas personalizada e clicar nele abre a página inicial do Infragistics em uma nova guia/janela):

Conclusão
O jQuery HTML Editor fornece formatação de rich text orientada por scripts puros do lado do cliente e definiu o curso para oferecer uma combinação de recursos familiares e bastante instintivos e o objetivo final é fornecer ao usuário uma experiência incrível e um conjunto de ferramentas abrangente. E a capacidade de criar seu próprio conjunto de ferramentas e adicioná-lo à barra de ferramentas significa que esse controle pode ser tão personalizável quanto você estiver disposto a torná-lo. E, como é esperado, ele pode ser estilizado com o jQuery Themeroller e você também pode encontrar instruções sobre isso no Guia de Implantação vinculado acima.
Você pode visitar nossos Exemplos Online do NetAdvantage para jQuery e também pode baixar o projeto de demonstração para este blog, que contém um projeto MVC3 APS.NET com implementações somente Razor e jQuery.