Как я могу использовать jQuery 1.7 без проблем на страницах администратора?

11

Кто-нибудь успешно запускает jQuery 1.7? Я использую на своих страницах компонент jQuery, для которого требуется jQuery 1.7 или более поздняя версия. Эта версия вызывает некоторые нежелательные побочные эффекты в пользовательском интерфейсе администратора, такие как отмеченные флажки, которые не показывают дополнительные элементы управления, когда они доступны, или виджет поля неактивен.

Мне было интересно, есть ли решение, которое позволило бы мне легко работать с jQuery 1.7.

Я видел этот ответ, прежде чем спрашивать. Насколько я понимаю, есть две отдельные проблемы: обновление src из jQuery до 1.7.x и обновление javascript, используемого администратором. Я попытался использовать последний моментальный снимок разработки jquery_update и применить исправление , но это не решает вышеупомянутые проблемы с пользовательским интерфейсом.

Артур
источник
Политика в значительной степени диктует, что обновление версий Drupal не должно нарушать ничего, что зависит от jQuery, поэтому версия остается согласованной.
mpdonadio
Технически, эта проблема - двойка drupal.stackexchange.com/a/41394/809 Также я немного предвзят, но другой вопрос имеет лучший ответ.
Эрикдуран

Ответы:

11

Я хотел бы взглянуть на совет Клайва по выполнению этого вручную здесь:

Как мне обновить jQuery до последней версии, которую я могу скачать?

и добавьте немного интеллекта в скрипт, чтобы не делать этого на страницах администратора, например:

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

Вы также должны сделать это на node/#/addи node/#/editстраницы и т.д. , с тем , чтобы не нарушить ничего «ядро» там, или, если вы хотите, погружение в Друпал ядра и довести все остальное до 1,7 , а также.

В зависимости от того, какую версию Drupal вы используете, это также может работать:

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

где вы можете установить «ВАШЕ СОСТОЯНИЕ ЗДЕСЬ» на те страницы, на которых вы хотите создать новый jquery, например, arg(0)!='admin'и т. д.

Jimajamma
источник
Спасибо, Джимаджамма, я не использовал твой код, но твой ответ поставил меня на правильный путь. Я нашел хороший патч, который добавляет пользовательский интерфейс на экран конфигурации jquery_update, который позволяет вам использовать разные версии jQuery для администратора. drupal.org/node/1524944 . Работает хорошо до сих пор.
Артур
2
Имейте в виду, что у ctools тоже была история взлома с обновлениями jquery. Возможно, вам придется настроить патч для учета этого.
mpdonadio
Спасибо за указание на это. У вас есть идея, что будет лучшим способом проверить это?
Артур
3
+1 Хороший простой способ получить список всех страниц администратора, которые не имеют «admin» в URL:$pages = module_invoke_all('admin_paths');
Clive
1
@Clive, это ловит ctools AJAX URL? Например, когда вы используете виджет ctools на «нормальной» странице?
mpdonadio
2

Обновление jQuery теперь позволяет включать разные версии jQuery для внешнего и внутреннего интерфейса. Загрузите последнюю версию для разработчиков, и вы готовы к работе: 1.5 в бэкэнде, так что он работает с пользовательским интерфейсом Views, и 1.7 или 1.8 в веб-интерфейсе для дополнительной пользы jQuery.

Renee
источник