Vous feriez mieux de faire cela au niveau du module, plutôt qu'au niveau du thème, car le JS ne prendra pas effet pour les pages d’administration (à moins que vous utilisiez bien sûr le même thème pour les deux).
Voici un petit module pour fournir cette fonctionnalité à l’ensemble du système:
Fichier: auto_upload.info
name = Auto Upload
description = Removes the need for users to press the 'Upload' button for AJAX file uploads.
core = 7.x
dependencies[] = file
Fichier: auto_upload.js:
(function ($) {
Drupal.behaviors.autoUpload = {
attach: function (context, settings) {
$('form', context).delegate('input.form-file', 'change', function() {
$(this).next('input[type="submit"]').mousedown();
});
}
};
})(jQuery);
Fichier: auto_upload.module
function auto_upload_init() {
drupal_add_js(drupal_get_path('module', 'auto_upload') . '/auto_upload.js');
}
Une fois que vous avez installé le module, toutes les entrées de fichier AJAX (c'est-à-dire celles qui possèdent un bouton «Mise à jour») seront affectées… vous n'aurez plus besoin d'appuyer sur le bouton «Télécharger» après avoir sélectionné le fichier. .
En utilisant cette delegate()
méthode, cela fonctionnera également parfaitement pour les champs de fichier autorisant plusieurs téléchargements, ainsi que pour les champs chargés dans la page à la suite d'une demande AJAX.
J'ai testé ça sous Chrome, Safari et Firefox et ça marche un plaisir :)
Note de bas de page : Dans le cas (probablement très peu probable) que votre site utilise jQuery 1.7, vous devez utiliser la on()
méthode, qui a été remplacée delegate()
.
UPDATE J'ai créé un projet de sandbox pour ce module.
delegate()
été ajouté à la version 1.4.2 et Drupal 7 est livré avec la version 1.4.4. Je suis sûr que tout va bien sur quelques vieux sites avec le stock jQuery installéSi vous êtes dans cette situation, essayez d’utiliser le module AutoUpload .
Il est actuellement disponible pour D6 et D7
la source
Drupal 6
Essayez quelque chose comme ceci dans votre document jQuery prêt
Collez le texte suivant dans page.tpl ou node.tpl
Je ne connais aucune méthode Drupal pour y parvenir.
violon
la source
.ahah-processed
est un nom de classe Drupal 6, et laclick()
méthode n'appelle pas un clic sur ces boutons pour une raison quelconque; vous devez utiliser à lamousedown()
place :)Vous pouvez y arriver en utilisant
on()
.delegate()
a été déconseillé.la source
Jetez un coup d'œil au module d' intégration Plupload .
la source
Si vous utilisez le champ de téléchargement de fichier sur le formulaire AJAX - après sa soumission, vous risquez de perdre la fonctionnalité de téléchargement automatique (voir https://drupal.stackexchange.com/a/31453/7313 ).
Pour réparer - utilisez ce script
la source