web-dev-qa-db-fra.com

Utiliser la barre d’outils quicktags sur n’importe quelle zone de texte

en lisant le quicktags.dev.js que je vois dans les commentaires

 * 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.

il me semble que je devrais pouvoir appeler les fonctions javascript quicktags (), lui transmettre au moins l'ID d'une zone de texte et obtenir l'éditeur Quicktags créé juste avant toute textarea. (je travaille dans un metabox).

cependant, si je mets ce qui suit dans mon code:

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

que j’ai essentiellement copié du bit de javascript que WP l’a dans le code source et que j’ai ajouté mon identifiant de metabox.

il affiche le div où la barre d'outils quicktags devrait être mais ne crée aucun bouton

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

console.log ne montre aucune erreur. et je jure que cette fois-ci, j'ai annulé toutes les falsifications potentielles du code source.

EDIT:

j'ai isolé le problème jusqu'à l'endroit où le script apparaît dans la source ... en utilisant la fonction de Fred Rocha fonctionne très bien (et comme je l'avais prévu) s'il fonctionne sur les scripts admin_print_footer_script mais pas sur after_wp_tiny_mce ... il en résulte le même vide barre d'outils je devenais.

les autres parties de mon plugin jquery doivent être exécutées après l’initialisation des paramètres de tinymce (étant donné que j’emprunte directement les paramètres existants), pourquoi fonctionnerait-il correctement avec un hook, mais pas avec un hook plus récent?

2
helgatheviking

Je suis tombé par hasard sur le même problème et j'ai mis les balises rapides au travail.

Voici le code à ajouter à 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 } ?>

C’est le code de base sur lequel les quicktags devraient fonctionner.

Si vous souhaitez parcourir tous les métaboxes (Verve) et attribuer une barre d'outils, le code suivant peut faire l'affaire:

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 } ?>

De plus, afin de conserver les sauts de ligne sur votre front-end, assurez-vous d'utiliser le filtre "the_content" lors de la sortie du contenu textarea, comme suit:

// 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 priorité avec laquelle la méthode my_admin_print_footer_scripts était appelée était le problème de blocage.

Bonne chance!

4
Fred Rocha

J'ai pu afficher le script quicktag d'Alex King dans mon formulaire de commentaire.

J'ai documenté les étapes et le code ici .

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;
 }

Téléchargez et mettez en file d'attente le script Alex Kings QuickTag. :-)

0
S-B