Bagaimana saya bisa menggunakan jQuery 1.7 tanpa mengalami masalah di halaman admin?

11

Adakah yang berhasil menjalankan jQuery 1.7? Saya menggunakan komponen jQuery di halaman saya yang membutuhkan jQuery 1.7 atau lebih baru. Versi ini menyebabkan beberapa efek samping yang tidak diinginkan di UI admin, seperti kotak centang yang dicentang yang tidak mengungkapkan kontrol tambahan saat tersedia, atau widget bidang tidak aktif.

Saya bertanya-tanya apakah ada solusi yang bisa membuat saya mudah bekerja dengan jQuery 1.7.

Saya melihat jawaban ini sebelum bertanya. Sejauh yang saya mengerti, ada 2 masalah terpisah: memperbarui src dari jQuery ke 1.7.x, dan memperbarui javascript yang digunakan oleh admin. Saya mencoba menggunakan snapshot pengembangan jquery_update terbaru, dan menerapkan tambalan , tetapi itu tidak menyelesaikan masalah yang disebutkan di atas dengan UI.

Artur
sumber
Kebijakan cukup banyak menentukan bahwa memutakhirkan versi Drupal tidak boleh merusak apa pun yang bergantung pada jQuery, sehingga versi tetap konsisten.
mpdonadio
Secara teknis masalah ini adalah tiruan dari drupal.stackexchange.com/a/41394/809 Juga saya sedikit bias tetapi pertanyaan lain memiliki jawaban yang lebih baik.
ericduran

Jawaban:

11

Saya akan melihat saran Clive untuk melakukannya secara manual di sini:

Bagaimana cara saya memperbarui jQuery ke versi terbaru yang dapat saya unduh?

dan menambahkan lebih banyak kecerdasan ke dalam skrip untuk tidak melakukannya di halaman admin, misalnya:

if (arg(0)=='admin') {
  return;
}

Anda juga harus melakukannya di halaman node/#/adddan node/#/editlain-lain agar tidak mengganggu "inti" apa pun di sana, atau, jika Anda mau, terjun ke inti drupal dan membawa semuanya hingga 1,7 juga.

Bergantung pada versi Drupal apa yang Anda jalankan, ini mungkin juga berfungsi:

function YOURTHEME_preprocess_page(&$vars) {
  if (YOUR CONDITION HERE) {
    $scripts = drupal_add_js('PATH TO YOUR JQUERY FILE');
    unset($scripts['core']['PATH TO DRUPAL JQUERY FILE']);
    $variables['scripts'] = drupal_get_js('header', $scripts);
  }
}

di mana Anda dapat mengatur "KONDISI ANDA DI SINI" menjadi halaman apa pun yang Anda inginkan pada jquery baru, misalnya, arg(0)!='admin'dll.

Jimajamma
sumber
Terima kasih Jimajamma, saya tidak menggunakan kode Anda, tetapi jawaban Anda menempatkan saya di jalur yang benar. Saya menemukan tambalan yang bagus yang menambahkan UI ke layar konfigurasi jquery_update, yang memungkinkan Anda untuk menggunakan berbagai versi jQuery untuk admin. drupal.org/node/1524944 . Bekerja dengan baik sejauh ini.
Artur
2
Perlu diingat bahwa ctools juga memiliki riwayat pemecahan, dengan pembaruan jquery. Anda mungkin perlu menyesuaikan tambalan ke akun untuk ini.
mpdonadio
Terima kasih telah menunjukkan ini. Apakah Anda punya ide apa cara terbaik untuk mengujinya?
Artur
3
+1 Cara sederhana yang bagus untuk mendapatkan daftar semua halaman admin yang tidak memiliki 'admin' di url adalah:$pages = module_invoke_all('admin_paths');
Clive
1
@Clive, apakah ini menangkap URL AJAX ctools? Seperti saat Anda menggunakan widget ctools di halaman "normal"?
mpdonadio
2

Pembaruan jQuery sekarang memiliki kemampuan untuk mengaktifkan versi jQuery yang berbeda untuk front-end dan back-end. Unduh versi dev terbaru dan Anda dapat melakukannya: 1,5 di backend, sehingga bekerja dengan Tampilan UI, dan 1,7 atau 1,8 di frontend, untuk kebaikan jQuery tambahan.

Renee
sumber