Use la barra de herramientas de etiquetas rápidas en cualquier área de texto

2

leyendo los quicktags.dev.js que veo en los comentarios

 * Run quicktags(settings) to initialize it, where settings is an object containing up to 3 properties:
 * settings = {
 *   id : 'my_id',          the HTML ID of the textarea, required
 *   buttons: ''            Comma separated list of the names of the default buttons to show. Optional.
 *                          Current list of default button names: 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close';
 * }
 *
 * The settings can also be a string quicktags_id.
 *
 * quicktags_id string The ID of the textarea that will be the editor canvas
 * buttons string Comma separated list of the default buttons names that will be shown in that instance.

que parece que debería ser capaz de llamar a las funciones javascript quicktags (), pasarle al menos el ID de un área de texto y debería crear el editor de etiquetas rápidas creado justo antes de cualquier área de texto. (Estoy trabajando en un metabox).

sin embargo, si pongo lo siguiente en mi código:

try { quicktags( '_repeating_textareas_meta[repeating_textareas][0][textarea]'); } catch(e){}

que esencialmente copié del bit de javascript que WP tiene en la fuente y agregué la identificación de mi metabox.

imprime el div donde la barra de herramientas de etiquetas rápidas debería estar pero no hace ningún botón

<div id="qt__repeating_textareas_meta[repeating_textareas][0][textarea]_toolbar" class="quicktags-toolbar"></div> 

console.log no muestra ningún error. y juro que esta vez he deshecho toda posible manipulación del código fuente.

EDIT:

he aislado el problema hasta donde aparece el script en la fuente ... el uso de la función de Fred Rocha funciona muy bien (y muy parecido a lo que anticipé) si se ejecuta en admin_print_footer_scripts pero no en after_wp_tiny_mce ... da como resultado La misma barra de herramientas vacía que estaba recibiendo.

otras partes de mi complemento jquery deben ejecutarse después de que se hayan inicializado las configuraciones de tinymce (ya que tomo prestadas las configuraciones existentes), ¿por qué funcionaría correctamente en un gancho pero no en un gancho posterior?

    
pregunta helgatheviking 09.03.2012 - 06:07

2 respuestas

4

Me he topado con este mismo problema y conseguí que las etiquetas rápidas funcionaran.

Aquí está el código para agregar a functions.php:

<?php
add_action('admin_print_footer_scripts','my_admin_print_footer_scripts');
function my_admin_print_footer_scripts()
{
?>
<script type="text/javascript">/* <![CDATA[ */

    var id = "myID"; // this is your metabox's textarea id

    settings = {
        id : id,
        buttons: 'strong,em,link' 
    }

    quicktags(settings);

/* ]]> */</script>
<?php } ?>

Este es el código básico que debería hacer que funcionen las etiquetas rápidas.

En caso de que quieras revisar todos los Metaboxes (Verve) y asignar una barra de herramientas, el siguiente código podría hacer el truco:

add_action('admin_print_footer_scripts','my_admin_print_footer_scripts');
function my_admin_print_footer_scripts()
{
    ?><script type="text/javascript">/* <![CDATA[ */
    jQuery(function($)
    {
        var i = 1;
        $('.verve_meta_box_content textarea').each(function(e)
    {
        var id = $(this).attr('id');
            if (!id)
    {
        id = 'customEditor-' + i++;
        $(this).attr('id',id);
        }

            settings = {
                id : id,
                buttons: 'strong,em,link' // Comma separated list of the names of the default buttons to show. Optional.
            }

            quicktags(settings);
         });

  });
/* ]]> */</script>
<?php } ?>

Además, para mantener los saltos de línea en el extremo delantero, asegúrese de usar el filtro "the_content" al generar el contenido del área de texto, como sigue:

// schedule is the slug of the custom meta field
$schedule_juice = get_post_meta($current_post_ID, "schedule", false);
// preserve line breaks     
$content = apply_filters('the_content', $schedule_juice[0]);
echo $content; 

La prioridad con la que se llamó al método my_admin_print_footer_scripts fue el problema del bloqueo.

¡Buena suerte!

    
respondido por el Fred Rocha 27.03.2012 - 00:53
0

He podido mostrar el script de etiqueta rápida de Alex King en mi formulario de comentarios.

He documentado los pasos y código aquí .

add_filter( 'comment_form_defaults', 'pc_comment_form_args' );

function pc_comment_form_args( $args ) { 
$args['comment_field'] = '<p class="comment-form-comment">' .
                         '<label for="comment">Comment</label>' .
                         '<script type="text/javascript">edToolbar("comment");</script>' .
                         '<textarea id="comment" name="comment" cols="45" rows="8" aria-required="true">' .
                         '</textarea>' .
                         '</p>';
 return $args;
 }

Simplemente descargue y ponga en cola la secuencia de comandos QuickTag de Alex Kings. :-)

    
respondido por el S-B 08.11.2013 - 08:11

Lea otras preguntas en las etiquetas