TinyMCE Plugin CodeMirror editor de código fuente avanzado

Fecha Publicación:       18 de Enero de 2020
Fecha Modificación:       19 de Enero de 2020

El editor wysiwyg de TinyMCE viene con un editor fuente HTML muy básico. Este complemento para TinyMCE hace que la edición del código fuente HTML sea una experiencia más agradable , se basa en el excelente editor de código CodeMirror, desarrollado por Marijn Haverbeke.

Este complemento ofrece la siguiente funcionalidad:

  • Resaltado de sintaxis de código HTML, Javascript y PHP.
  • Línea de números.
  • Destacando la línea que se está editando actualmente.
  • Sangrado automático.
  • Muchos niveles de deshacer / rehacer.
  • Buscar / reemplazar funcionalidad.
  • etc,etc.


Instalación:


Paso 1 :

1.- Descargue e instale TinyMCE 4 o TinyMCE 5 (> = 5.0.4) y asegúrese de que se ejecute correctamente con la configuración predeterminada

2.- Vaya a este enlace de github y descargue:  https://github.com/christiaan/tinymce-codemirror

3.- Descomprima y saldra la carpeta "tinymce-codemirror-master" entre a la carpeta "plugins"   entre a la carpeta "codemirror"  y deve tener los siguientes archivos:

  • codemirror         (borrarla)
  • codemirror-4.8   
    Cambie el nombre de la carpeta llamada 'codemirror-4.x' a solo "codemirror".
  • langs
    Aqui esta el lenguaje , pero no se encuentra el archivo es.js, pero esta el archivo es_ES.js  copialo y cambiale de nombre y le pones es.js.       


Entonces quedaria la carpera "codemirror" con 2 carpetas y algunos archivos como este:

  • codemirror  (carpeta)
  • langs  (carpeta)
  • plugin.js
  • plugin.min.js
  • source.html


4.- Copie la carpeta "codemirror" del numeral 3. con todo su contenido (codemirror ,langs ,plugin.js ,plugin.min.js ,source.html)  a la carpeta de su proyecto    /tinymcexxx/plugins/ ahora su tynymce tendra el plugin codemirror.


Paso 2:

Agregar a tu codigo:

Si lo pones asi el codemirror  en el plugins no te funcionara 
plugins:
[    "codemirror",

ASI NO FUNCIONA
plugins: 
    [
	"codemirror",
        "fontawesome noneditable",
	"codesample code image link imagetools textcolor",
	" noneditable  advlist autolink lists link charmap print preview anchor",
	"searchreplace visualblocks code fullscreen wordcount",
	 "template colorpicker  help",			
	"insertdatetime media table contextmenu paste "		
   ],

Deves ponerlo asi el codemirror en el plugins:

plugins: 
    [
	"fontawesome noneditable",
	"codesample code image link imagetools textcolor",
	" noneditable  advlist autolink lists link charmap print preview anchor",
	"searchreplace visualblocks code fullscreen wordcount",
		"template colorpicker  help","codemirror",	
	"insertdatetime media table contextmenu paste "		
   ],

  codemirror: {

indentOnInit: true, 
// Con la opción indentOnInit, le indica al editor 
//de Código fuente que sangre todo el código cuando se abra el editor,
//Esto puede ser lento para documentos grandes.
 fullscreen: true,   // Default setting is false
 path: '/webadmin/tinymce/tinymce_4_9_2/plugins/codemirror/codemirror', 
// Path to CodeMirror distribution
 config: {           // CodeMirror config object
          mode: 'application/x-httpd-php',
           lineNumbers: true
         },
 width: 800,         // Default value is 800
 height: 600,        // Default value is 550
 jsFiles: [          // Additional JS files to load
	'mode/clike/clike.js',
	'mode/php/php.js'   // este es el que pinta 
],		  
  cssFiles: [
    'theme/neat.css',
   'theme/elegant.css'
	]
},

 

Configuration

Additional configuration options

You can modify the behaviour of the codemirror plugin, by adding a codemirror object to the TinyMCE configuration.

indentOnInit: boolean (false) CodeMirror automatically indents code. With the indentOnInit option, you tell the Source Code editor to indent all code when the editor opens. This might be slow for large documents.

fullscreen boolean (false) Whether to load the tinymce plugin and codemirror in full screen mode.

width: int (800) Codemirror window width

height: int (550) Codemirror window height

saveCursorPosition: boolean (true) Insert caret marker

path: string (codemirror) You might already have CodeMirror hosted elsewhere (outside TinyMCE). In that case, you can reuse that CodeMirror instance, by overriding the default path. For example:

path: 'http://www.mysite.com/tools/codemirror-x.y'

config: Object CodeMirror configuration object, which is passed on to the CodeMirror instance. Check http://codemirror.net/doc/manual.html for available configuration options.

disableFilesMerge: When set to true, disables default set of jsFiles and cssFiles. This is usable when you have custom prebuilt codemirror, that can be passed to jsFiles and cssFiles. For example:

path: '/assets/js/codemirror/',
disableFilesMerge: true,
jsFiles: [
   'codemirror.custom.min.js'
],
cssFiles: [
   'codemirror.custom.min.css'
]

jsFiles: Array Array of CodeMirror Javascript files you want to (additionally) load. For example:

jsFiles: [
   'mode/clike/clike.js',
   'mode/php/php.js'
]

The following Javascript files are always loaded: lib/codemirror.js, addon/edit/matchbrackets.js, mode/xml/xml.js, mode/javascript/javascript.js, mode/css/css.js, mode/htmlmixed/htmlmixed.js, addon/dialog/dialog.js, addon/search/searchcursor.js, addon/search/search.js, addon/selection/active-line.js.

cssFiles: Array Array of CodeMirror CSS files you want to (additionally) load. For example:

cssFiles: [
   'theme/neat.css',
   'theme/elegant.css'
]

The following CSS files are always loaded: lib/codemirror.css, addon/dialog/dialog.css.

Config example:

tinymce.init({
  selector: '#html',
  plugins: 'codemirror',
  toolbar: 'undo redo | styleselect | bold italic | 
alignleft aligncenter alignright alignjustify | 
bullist numlist outdent indent | code',
  codemirror: {
    indentOnInit: true, // Whether or not to indent code on init.
    fullscreen: true,   // Default setting is false
    path: 'CodeMirror', // Path to CodeMirror distribution
    config: {           // CodeMirror config object
       mode: 'application/x-httpd-php',
       lineNumbers: false
    },
    width: 800,         // Default value is 800
    height: 600,        // Default value is 550
    saveCursorPosition: true,    // Insert caret marker
    jsFiles: [          // Additional JS files to load
       'mode/clike/clike.js',
       'mode/php/php.js'
    ]
  }
});