web-dev-qa-db-fra.com

Manipulation du contenu multimédia

D'accord. Je vais essayer d’expliquer cela du mieux que je peux, si nu avec moi. Quoi qu'il en soit, j'essaie d'inclure le programme de téléchargement de média par défaut dans mon plugin.

Actuellement, j'ai réussi à utiliser le filtre attachment_fields_to_edit pour masquer la plupart des champs de saisie, en ne laissant que les champs de titre et de texte de remplacement, à côté d'un bouton d'envoi personnalisé. Lorsque vous cliquez dessus, ce bouton récupère l'URL des images et le place dans une div sur la page parente.

Quoi qu'il en soit, voici mon problème. Tout ce qui concerne le programme de téléchargement lui-même fonctionne comme je le souhaite, mais actuellement le filtre s’applique au programme de téléchargement de média dans les publications, les pages, la bibliothèque multimédia, etc. Je souhaite uniquement que les champs alternatifs et le bouton personnalisé soient affichés dans mon plugin mais pas ailleurs.

J'ai tout essayé, mais je ne peux pas le faire fonctionner. J'ai réussi à appliquer ma propre requête à l'URL media-upload.php, ce qui m'a permis de faire en sorte que les champs alternatifs ne s'affichent que dans mon plug-in, dans l'onglet "Bibliothèque" de thickbox. Wordpress utilise un fichier alternatif pour télécharger l'image. async-upload.php.

Voici la fonction entière: http://Pastebin.com/5vpecMvL

Quelques informations sur les différentes fonctions: riva_slider_pro_info() est une fonction qui renvoie un tableau de valeurs. riva_slider_pro_uri( $search ) obtient $ _SERVER ['REQUEST_URI'] et la stocke dans une variable, recherche le paramètre $ search et renvoie true ou false.

Dans l'onglet "libary" de l'éditeur de média mediabox épais, il renvoie true car j'ai transmis une requête supplémentaire à l'URL media-upload.php (par exemple, "media-upload.php? Post_id = 0 $ slideshow = true & type = image & TB_iframe = 1 '). MAIS, il renvoie false après que l’utilisateur vient de télécharger une nouvelle image dans la même boîte, car il utilise plutôt le fichier async-upload.php. Je ne sais pas comment je pourrais transmettre la requête sur cette URL, s'il serait possible de la faire fonctionner de cette façon.

Je réalise que cela peut être difficile à suivre, mais j'ai fait de mon mieux pour l'expliquer. Je tire littéralement mes cheveux sur celui-ci et j'ai passé une quantité ridicule de temps à essayer de le comprendre. Appréciez vos commentaires ou suggestions, ou idéalement une solution! Merci d'avance.

4
Matthew Ruddy

ce que j’ai fini par faire, c’était de lancer la heavybox chargée manuellement via un événement jQuery click. puis avec setInterval, j'ai pu cacher les morceaux que je voulais.

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

  $('.specialclass').click(function() { 
       //get post id from somewhere (for me this was the row column
    string = $(this).parents('tr.type-portfolio').attr('id'); 
    if(/post-(\d+)/.exec(string)[1]) post_id = parseInt(/post-(\d+)/.exec(string)[1], 10);

    tbframe_interval = setInterval(function() {

       //remove url, alignment and size fields- auto set to null, none and full respectively                        
       $('#TB_iframeContent').contents().find('.url').hide().find('input').val('');
       $('#TB_iframeContent').contents().find('.align').hide().find('input:radio').filter('[value="none"]').attr('checked', true);
       $('#TB_iframeContent').contents().find('.image-size').hide().find('input:radio').filter('[value="full"]').attr('checked', true);

    }, 2000);

    if(post_id) tb_show('', 'media-upload.php?post_id='+post_id+'&type=image&tab=library&TB_iframe=true'); //tab sets the opened TB window to show library by default

    return false;
   });
});
1
helgatheviking