En esta entrada vamos a añadir una librería WYSIWYG de jQuery a nuestro proyecto. Lo añadiremos al textarea de la edición de posts y al de creación de posts.
He estado mirando por Internet y la librería jQuery que más me ha convencido ha sido una llamada Trumbowyg.
Primero de todo tenemos que descargarla, lo haremos a través de npm:
| 1 | npm install trumbowyg --save | 
Ahora vamos a añadir una clase CSS que sea común para los dos textarea ( includes/form-submit-post.blade.php y post_edit.blade.php ), en mi caso, le he puesto textarea-wysiwyg, pero puedes poner lo que quieras:
| 1 2 3 | ...     <textarea class="textarea-wysiwyg" id="body" name="body">{{ old('body') }}</textarea> ... | 
| 1 2 3 | ...         <p>{{ Form::textarea('body', old('body'), ['class' => 'textarea-wysiwyg']) }}</p> ... | 
Ok, una vez descargada la librería y añadida la clase, tenemos que añadir la librería a nuestro JavaScript base y después el SCSS del plugin a nuestro archivo SCSS.
Abrimos el app.js y añadimos estas líneas:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | ... require('trumbowyg'); $(document).ready(function(){ ...   $('.textarea-wysiwyg').trumbowyg({     btns: ['strong', 'em', '|', 'link'],     autogrow: true,     svgPath: '/icons/trumbowyg-icons.svg'   }); }); | 
En la propiedad btns puedes añadir las que quieras y con el svgPath también, puedes poner los iconos donde quieras yo los he puesto ahí.
Vamos al archivo app.scss y añadimos la siguiente línea:
| 1 2 3 | ... @import "node_modules/trumbowyg/dist/ui/sass/trumbowyg"; | 
Ahora debemos compilarlos:
| 1 | npm run dev | 
Y ya estaría:

Falta una última cosa, lo que pasa es que a la hora de ver el post, no veremos el HTML renderizado veremos los tags HTML tal cual se guardan en la base de datos. Para forzar a que se renderice el código deberemos modificar en post.blade.php la línea que muestra el body del post:
| 1 | {!! $post->body !!} | 
-
