Jak korzystać z jQuery 1.7 bez problemów na stronach administracyjnych?

11

Czy ktoś z powodzeniem uruchamia jQuery 1.7? Używam komponentu jQuery na moich stronach, który wymaga jQuery 1.7 lub nowszego. Ta wersja powoduje pewne niepożądane skutki uboczne w interfejsie administratora, takie jak zaznaczone pola wyboru, które nie ujawniają dodatkowych kontroli, gdy są dostępne, lub widget pola nie jest aktywny.

Zastanawiałem się, czy istnieje rozwiązanie, które pozwoli mi łatwo pracować z jQuery 1.7.

Zobaczyłem tę odpowiedź, zanim zapytałem. O ile rozumiem, istnieją 2 oddzielne problemy: aktualizacja src jQuery do wersji 1.7.x i aktualizacja javascript używanego przez administratora. Próbowałem użyć najnowszej migawki programistycznej jquery_update i zastosować łatkę , ale to nie rozwiązuje wyżej wymienionych problemów z interfejsem użytkownika.

Artur
źródło
Ta zasada mówi, że aktualizacja wersji Drupala nie powinna naruszać niczego, co opiera się na jQuery, więc wersja pozostaje spójna.
mpdonadio
Technicznie rzecz biorąc, ten problem jest dupesem drupal.stackexchange.com/a/41394/809 Również jestem nieco stronniczy, ale na inne pytanie można znaleźć lepszą odpowiedź.
ericduran

Odpowiedzi:

11

Chciałbym zapoznać się z radą Clive'a dotyczącą robienia tego ręcznie tutaj:

Jak zaktualizować jQuery do najnowszej wersji, którą mogę pobrać?

i dodaj trochę więcej inteligencji do skryptu, aby nie robić tego na stronach administracyjnych, np .:

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

Będziesz musiał to zrobić również na stronach node/#/addi node/#/edititp., Aby nie zakłócać niczego „rdzeniem” tam, lub, jeśli chcesz, zanurz się w rdzeniu Drupala i przenieś wszystko inne do 1.7.

W zależności od używanej wersji Drupala może to również działać:

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);
  }
}

gdzie możesz ustawić „TUTAJ TUTAJ” na dowolne strony, na których chcesz umieścić nową jquery, np. arg(0)!='admin'itp.

Jimajamma
źródło
Dzięki Jimajamma, nie użyłem twojego kodu, ale twoja odpowiedź postawiła mnie na dobrej drodze. Znalazłem fajną łatkę, która dodaje interfejs użytkownika do ekranu konfiguracji jquery_update, który pozwala używać różnych wersji jQuery dla administratora. drupal.org/node/1524944 . Jak dotąd działa dobrze.
Artur
2
Należy pamiętać, że Ctools również przebijały się z aktualizacjami jquery. Konieczne może być dostosowanie łatki, aby uwzględnić to.
mpdonadio
Dzięki za zwrócenie na to uwagi. Czy masz pomysł, jaki byłby najlepszy sposób na przetestowanie tego?
Artur
3
+1 Dobrym prostym sposobem na uzyskanie listy wszystkich stron administracyjnych, które nie mają „admin” w adresie URL jest:$pages = module_invoke_all('admin_paths');
Clive
1
@Clive, czy to łapie ctools URL-e AJAX? Na przykład, gdy używasz widżetu narzędzi na „normalnej” stronie?
mpdonadio
2

Aktualizacja jQuery ma teraz możliwość włączania różnych wersji jQuery dla frontonu i back-endu. Pobierz najnowszą wersję programistyczną i gotowe: 1.5 w backend, więc działa z interfejsem użytkownika Views i 1.7 lub 1.8 w frontend, dla dodatkowej korzyści jQuery.

Renee
źródło