{"id":27383,"date":"2021-05-14T12:27:00","date_gmt":"2021-05-14T09:27:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27383"},"modified":"2021-10-18T04:14:31","modified_gmt":"2021-10-18T01:14:31","slug":"trix-um-editor-wysiwyg-de-codigo-aberto-para-sites","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/trix-um-editor-wysiwyg-de-codigo-aberto-para-sites\/","title":{"rendered":"Trix &#8211; um editor WYSIWYG de c\u00f3digo aberto para sites"},"content":{"rendered":"<p>Um editor de rich text ou editor WYSIWYG \u00e9 \u00fatil para escrever conte\u00fado descritivo que inclui elementos HTML e imagens. Na tag textarea HTML, n\u00e3o se pode escrever conte\u00fado com tags HTML. \u00c9 por isso que a maioria dos sites usa o editor de HTML WYSIWYG.<\/p>\n<p><a href=\"https:\/\/trix-editor.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Trix<\/a> \u00e9 um editor de rich text de c\u00f3digo aberto da Basecamp. Como \u00e9 usado no Basecamp, milh\u00f5es de pessoas j\u00e1 o usam para escrever seu conte\u00fado. Neste artigo, estudamos como adicionar o editor Trix em seus aplicativos da web.<\/p>\n<h3>Instala\u00e7\u00e3o<\/h3>\n<p>A Trix hospedou seu pacote no <a href=\"https:\/\/github.com\/basecamp\/trix\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a> para que os usu\u00e1rios possam usar facilmente este bom editor em seus aplicativos da web. Para come\u00e7ar, primeiro voc\u00ea precisa incluir os arquivos JS e CSS do Trix. Voc\u00ea pode obter esses arquivos diretamente dentro da pasta dist na p\u00e1gina do <a href=\"https:\/\/github.com\/basecamp\/trix\/tree\/master\/dist\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a>. Ou ent\u00e3o, baixe seu pacote e copie <code>trix.js<\/code>e <code>trix.css<\/code>arquivos.<\/p>\n<p>Voc\u00ea tamb\u00e9m precisa criar 2 arquivos PHP e mais um arquivo JS. Veremos por que e como usar esses arquivos na parte posterior. Sua estrutura de pastas deve ser a seguinte:<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20611-60820e5688ed8.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20611-60820e5688ed8.png\" alt=\"Trix - um editor WYSIWYG de c\u00f3digo aberto para sites\" ><\/a><\/p>\n<p>Em seguida, para adicionar o editor Trix em sua p\u00e1gina da web, escreva o c\u00f3digo abaixo.<\/p>\n<p><strong>index.php<\/strong><\/p>\n<pre><code>&lt;link rel=\"stylesheet\" href=\"css\/trix.css\"&gt;\n&lt;script src=\"js\/trix.js\"&gt;&lt;\/script&gt;\n&lt;script src=\"js\/attachments.js\"&gt;&lt;\/script&gt;\n&lt;form method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input id=\"x\" type=\"hidden\" name=\"content\" value=\"\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;trix-editor input=\"x\"&gt;&lt;\/trix-editor&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>No c\u00f3digo acima, adicionamos arquivos CSS e JS diretamente. Obviamente, voc\u00ea deve seguir as diretrizes de sua estrutura \/ CMS para incluir esses arquivos.<\/p>\n<p>O editor Trix anexa todo o conte\u00fado escrito ao campo oculto que adicionamos acima. E ao enviar o formul\u00e1rio, voc\u00ea deve prosseguir com o campo oculto para obter o conte\u00fado do editor. Basicamente, voc\u00ea obter\u00e1 o conte\u00fado do editor Trix no lado do servidor usando:<\/p>\n<pre><code>&lt;?php\necho $_POST['content']; \/\/here 'content' is the name given to hidden field<\/code><\/pre>\n<p>Da mesma forma, voc\u00ea deseja preencher previamente o editor com o conte\u00fado e, em seguida, passar o conte\u00fado nos atributos de valor do campo oculto. O editor Trix preenche automaticamente o conte\u00fado de um elemento oculto.<\/p>\n<p>Em seguida, execute este arquivo em seu navegador e voc\u00ea dever\u00e1 ver seu editor WYSIWYG na p\u00e1gina.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20611-60820e56c5c4f.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20611-60820e56c5c4f.png\" alt=\"Trix - um editor WYSIWYG de c\u00f3digo aberto para sites\" ><\/a><\/p>\n<h3>Carregar imagem no editor Trix WYSIWYG<\/h3>\n<p>Na documenta\u00e7\u00e3o do GitHub, eles mencionaram sobre o armazenamento de arquivos anexados.<\/p>\n<p>O Trix aceita automaticamente os arquivos arrastados ou colados em um editor e os insere como anexos no documento. Cada anexo \u00e9 considerado pendente at\u00e9 que voc\u00ea o armazene remotamente e forne\u00e7a ao Trix um URL permanente.<\/p>\n<p>Isso significa que voc\u00ea precisa pegar uma imagem do editor, envi\u00e1-la para o servidor, fazer upload das imagens no servidor e retornar ao URL da imagem. Para realizar este processo, iremos escrever c\u00f3digo JS e PHP nas pr\u00f3ximas etapas.<\/p>\n<p>Primeiro, vamos come\u00e7ar com o c\u00f3digo JS. Voc\u00ea criou um <code>attachments.js<\/code>arquivo dentro do diret\u00f3rio &#8216;js&#8217;. Este arquivo JS ter\u00e1 o seguinte c\u00f3digo.<\/p>\n<pre><code>(function() {\n\u00a0\u00a0\u00a0\u00a0var HOST = \"YOUR_DOMAIN_URL\/upload.php\"\n\u00a0\n\u00a0\u00a0\u00a0\u00a0addEventListener(\"trix-attachment-add\", function(event) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (event.attachment.file) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uploadFileAttachment(event.attachment)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0})\n\u00a0\n\u00a0\u00a0\u00a0\u00a0function uploadFileAttachment(attachment) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uploadFile(attachment.file, setProgress, setAttributes)\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function setProgress(progress) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0attachment.setUploadProgress(progress)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function setAttributes(attributes) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0attachment.setAttributes(attributes)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0function uploadFile(file, progressCallback, successCallback) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var formData = createFormData(file)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var xhr = new XMLHttpRequest()\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0xhr.open(\"POST\", HOST, true)\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0xhr.upload.addEventListener(\"progress\", function(event) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var progress = event.loaded \/ event.total * 100\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0progressCallback(progress)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0xhr.addEventListener(\"load\", function(event) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var attributes = {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url: xhr.responseText,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0href: xhr.responseText + \"?content-disposition=attachment\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0successCallback(attributes)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0xhr.send(formData)\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0function createFormData(file) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var data = new FormData()\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0data.append(\"Content-Type\", file.type)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0data.append(\"file\", file)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return data\n\u00a0\u00a0\u00a0\u00a0}\n})();<\/code><\/pre>\n<p>Substitua o espa\u00e7o reservado &#8216;YOUR_DOMAIN_URL&#8217; pelo seu URL real. O que esse c\u00f3digo faz \u00e9 escutar o <code>trix-attachment-add<\/code>evento e enviar um anexo ao <code>upload.php<\/code>arquivo. Ao retornar a resposta do servidor, ele define o URL da imagem permanente nos atributos do editor.<\/p>\n<p>Finalmente, escreva o c\u00f3digo da imagem de upload no <code>upload.php<\/code>arquivo.<\/p>\n<pre><code>&lt;?php\nif (!file_exists('uploads')) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0mkdir('uploads', 0777);\n}\n\u00a0\nmove_uploaded_file($_FILES['file']['tmp_name'], 'uploads\/'.$_FILES['file']['name']);\n\u00a0\necho \"YOUR_DOMAIN_URL\/uploads\/\".$_FILES['file']['name'];<\/code><\/pre>\n<p>Esperamos que voc\u00ea entenda como adicionar o editor Trix WYSIWYG usando PHP em seu site. Gostar\u00edamos de ouvir sua opini\u00e3o na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-instalar-e-usar-o-ckeditor-no-laravel\/\" title=\"Como instalar e usar o CKEditor no Laravel\">Como instalar e usar o CKEditor no Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-instalar-e-usar-o-editor-tinymce-no-laravel\/\" title=\"Como instalar e usar o TinyMCE - Editor de HTML WYSIWYG no Laravel\">Como instalar e usar o TinyMCE &#8211; Editor de HTML WYSIWYG no Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O editor Trix WYSIWYG \u00e9 um projeto de c\u00f3digo aberto criado pelo Basecamp. \u00c9 um editor amplamente utilizado e neste artigo mostramos como adicionar este editor em<\/p>\n","protected":false},"author":1,"featured_media":20612,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[417],"tags":[848],"class_list":["post-27383","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diversos","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27383"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27383\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/20612"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}