web-dev-qa-db-fra.com

Gestionnaire de médias sélection multiple

Je créais un plugin, et sa partie devrait en ajoutant des fichiers à des messages personnalisés. J'ai réussi à faire en sorte que le script fonctionne, mais après quelques modifications, pour améliorer son apparence et son fonctionnement, il ne permet d'ajouter qu'un seul fichier, aucun autre fichier n'est autorisé. Pouvez-vous m'aider s'il vous plaît?

jQuery(document).ready(function($){
var custom_uploader;
$('#songbook_addfile_button').click(function(e) {
e.preventDefault();
//If the uploader object has already been created, reopen the dialog
if (custom_uploader) {
    custom_uploader.open();
    return;
}
//Extend the wp.media object
custom_uploader = wp.media.frames.file_frame = wp.media({
    title:"blemblem",
    button: {
        text:"blemblem"
    },
    multiple: true
});
custom_uploader.on('select', function() {
        var selection = custom_uploader.state().get('selection');
        selection.map( function( attachment ) {
        attachment = attachment.toJSON();
        extension = extension(attachment.url).replace('.','');
        alert(extension);
    //...one commented line, that was to add files into HTML structure - works     perfect, but only once
        });
    });
    custom_uploader.open();
    });
    });

et le seul à obtenir l'extension à partir d'une URL est la suivante:

function extension(url) {
var ext=(url = url.substr(1 + url.lastIndexOf("/")).split('?')    [0]).substr(url.lastIndexOf("."));
return ext;
};

Lorsque vous cliquez sur le bouton Ouvrir le gestionnaire de média, celui-ci s'ouvre.

lorsque vous en sélectionnez un et cliquez sur ajouter un média, son ajout (ou dans ce code alerté)

quand plus de fichiers sont sélectionnés, il ne faut que le premier

après avoir ajouté le premier fichier, il s'ouvre au clic, mais n’ajoutez aucun fichier lorsque vous cliquez sur le bouton Ajouter un gestionnaire.

S'il vous plaît, pouvez-vous me montrer la bonne voie à suivre? Je vous remercie

3
user1980807

J'ai un peu modifié votre code et la alert() est exécutée pour chaque élément sélectionné. Notez que dans votre code, vous exécutez trop tôt une return qui empêche le code ci-dessous de s'exécuter après la première exécution. En outre, vous utilisez le même nom pour une fonction et pour une chaîne var, ce qui n’est pas très approprié.

function get_the_extension(url) {
    var ext=(url = url.substr(1 + url.lastIndexOf("/")).split('?')[0]).substr(url.lastIndexOf("."));
    return ext;
}

jQuery(document).ready(function($){

    var custom_uploader;
    $('#songbook_addfile_button').click(function(e) {
        e.preventDefault();
        //If the uploader object has already been created, reopen the dialog
        if (custom_uploader) {
            custom_uploader.open();
        }
        //Extend the wp.media object
        custom_uploader = wp.media.frames.file_frame = wp.media({
            title:"blemblem",
            button: {
                text:"blemblem"
            },
            multiple: true
        });
        custom_uploader.on('select', function() {
            var selection = custom_uploader.state().get('selection');
            selection.map( function( attachment ) {
                attachment = attachment.toJSON();
                var the_extension = get_the_extension(attachment.url).replace('.','');
                    alert(the_extension);
                    //...one commented line, that was to add files into HTML structure - works     perfect, but only once
            });
        });
        custom_uploader.open();
    });
});
1
cybmeta