JS, yönetici sayfaları için geçerli olmayacağından, tema seviyesi yerine modül düzeyinde yapmaktan daha iyi olurdu (elbette her ikisi için de aynı temayı kullanmıyorsanız).
Sistem genelinde bu işlevselliği sağlamak için küçük bir modül:
Dosya: 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
Dosya: 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);
Dosya: auto_upload.module
function auto_upload_init() {
drupal_add_js(drupal_get_path('module', 'auto_upload') . '/auto_upload.js');
}
Modülü kurduğunuzda, AJAX-ified olan tüm dosya girişleri (yani 'Güncelle' düğmesine sahip olanlar) etkilenir ... dosyayı seçtikten sonra 'Yükle' düğmesine basmanız gerekmez. .
Bu, delegate()
yöntemi kullanarak, birden fazla yüklemeye izin veren dosya alanları ve ayrıca AJAX isteğinin sonucu olarak sayfaya yüklenen alanlar için de mükemmel şekilde çalışacaktır.
Bunu Chrome, Safari ve Firefox'ta test ettim ve bu bir zevk çalışıyor :)
Dipnot : Sitenizin jQuery 1.7 kullandığı (muhtemelen çok olası olmayan) etkinlikte, yerine geçen on()
yöntemi kullanmanız gerekir delegate()
.
GÜNCELLEME Bu modül için bir sanal proje oluşturdum .