Cómo agregar el método abreviado de teclado TinyMCE

4

La documentación más completa que puedo encontrar sobre cómo agregar un nuevo método abreviado de teclado a TinyMC está en esta página: enlace

Implica agregar este código al archivo fuente principal de TinyMCE, tiny_mce_src.js (y luego volver a comprimir):

t.addShortcut([keyboard command], [shortcut name], [command name]);

¿Hay alguna forma de agregar un atajo sin hackear el núcleo / TinyMCE?

  

Actualización: Específicamente, quiero agregar accesos directos para aplicar h2 / h3 / h4 u otras acciones del botón TinyMCE al texto seleccionado en TinyMCE.

    
pregunta supertrue 10.11.2011 - 18:28

2 respuestas

2

La última vez que agregué un atajo de teclado, estaba usando jQuery. Eche un vistazo al complemento jquery.hotkeys que le permite habilitar los atajos de teclado con un simple revestimiento :

$(document).bind('keydown', 'ctrl+a', fn);

actualizacion

si desea comprobar si el editor de TinyMCE está activo y tiene un texto seleccionado, aquí están las funciones que necesita:

function isTinyMCEactive(){ //check if editor is active
    is_tinyMCE_active = false;
    if (typeof(tinyMCE) != "undefined") {
        if (tinyMCE.activeEditor == null || tinyMCE.activeEditor.isHidden() != false) {
            is_tinyMCE_active = true;
        }
    }
    return is_tinyMCE_active;
}

function tinyMCEhotkeys(tag){
    if (isTinyMCEactive()){
        var selected_content = '';
        selected_content = tinyMCE.activeEditor.selection.getContent();
        if (selected_content != '' || selected_content != null){ //check if editor has selection
            tinyMCE.activeEditor.execCommand("mceInsertContent", 0, '<' + tag + '>' + selected_content + '</' + tag + '>');
        }
    }
}

ahora, una vez que tenga estas funciones, el resto es fácil:

$(document).bind('keydown', 'ctrl+1', tinyMCEhotkeys('h1'));
$(document).bind('keydown', 'ctrl+2', tinyMCEhotkeys('h2'));
$(document).bind('keydown', 'ctrl+3', tinyMCEhotkeys('h3'));
$(document).bind('keydown', 'ctrl+4', tinyMCEhotkeys('h4'));
    
respondido por el Bainternet 10.11.2011 - 21:57
1

Tuve este problema. Y lo resolví. Espero que todavía ayude (alguien) #Threadnecro

en functions.php agrego un plugin tinyMCE:

function mce_button_js( $plugin_array ) {
  $plugin_array['notes'] = get_template_directory_uri() . '/js/tinymce.js';
  return $plugin_array;
}
add_filter( 'mce_external_plugins', 'mce_button_js' );

el archivo /js/tinymce.js tiene:

(function() {
  tinymce.create('tinymce.plugins.Notes', {
    init: function(ed, url) {
      ed.addButton('code', {
        title: 'Code',
        cmd: 'code'
      });

      // here I add the shortcut.
      ed.addShortcut('ctrl+k', 'description', 'code');
      ed.addCommand('code', function() {
        var selected_text = ed.selection.getContent(),
          $node = jQuery(ed.selection.getStart()),
          return_text = '';

        if (selected_text !== "") {
          return_text = '<code>' + selected_text + '</code>';
        }
        ed.execCommand('mceInsertContent', 0, return_text);
      });
    }
  });
  // Register plugin
  tinymce.PluginManager.add('notes', tinymce.plugins.Notes);
})();

Esto agrega un botón de código al editor wysiwyg . Y asigna ctrl+k como tecla de acceso rápido para esa acción.

Fuentes

respondido por el janw 20.10.2013 - 18:02

Lea otras preguntas en las etiquetas