[РЕШЕНО] jQuery Update 6.x-2.x не работают некоторые элементы

Главные вкладки

Аватар пользователя demarko demarko 6 июня 2010 в 21:08

Здравствуйте уважаемые друпаловоды!

Бьюсь уже целый день над одной проблемой связанной с модулем jquery_update

Он обновляет jQuery в друпале до версии 1.3.2.

Проблема в том что на странице добавления материала с этим обновлением не работают вкладки, возможно и другие.

Очень нужна именно эта версия jQuery 1.3.x

Читал про версию 1.4.x но до нее мне еще далеко, эту бы установить(

Расскажите кто как спасался или только у меня проблемы такие?

Комментарии

Аватар пользователя demarko demarko 6 июня 2010 в 21:27

Stan.Ezersky wrote:
Никаких проблем с работающим модулем нет, по крайней мере, не обнаружил на десятке работающих сайтов

Именно с этой версией 6.x-2.0-alpha1 ???

Аватар пользователя demarko demarko 6 июня 2010 в 22:12

Все равно не работает!)

Ставлю 6.x-2.x-dev та же история) все работает кроме полей так называемых "collapsing/expanding fieldsets"

Переключал тему на GARLAND все тоже самое, стоит Drupal 6.17

Аватар пользователя demarko demarko 6 июня 2010 в 22:23

В принципе мне нужно обновление для одного модуля - fancybox. Предполагаю что можно попробовать править модуль jquery_update - сделать раздельную загрузку на разных страница старой и новой версии.

Не подскажите будут ли проблемы если включить оптимизацию js в разделе производительность?

И еще) может знаете какой модуль на подобии fancybox (чем он мне понравился он аккуратнее LightBox2) но не требующий новую библиотеку?

Аватар пользователя demarko demarko 6 июня 2010 в 22:50

Вообще на данной странице если посмотреть через firebug выводит вот что

/sites/default/modules/jquery_update/replace/jquery.min.js?0:19
Uncaught Syntax error, unrecognized expression: [type="checkbox"]

Нашел какую то заплатку но это для 7ки по моему - http://drupal.org/node/350275#comment-1218848 - как я понял она решает какую-то похожую проблему...

Аватар пользователя worona worona 7 июня 2010 в 1:46

"demarko" wrote:
Он обновляет jQuery в друпале до версии 1.3.2.

А с чего вы взяли, что этот модуль вам обновляет до версии 1.3.2.

Аватар пользователя Sinkora Sinkora 7 июня 2010 в 2:09

Quote:
This module facilitates an upgrade of jQuery in Drupal core and allows other contrib modules to rely on a newer jQuery version.

Т.е. модуль облегчает обновление JQuery для Друпала и других модулей.

Но в чем проблема вручную загрузить новую версию JQuery и не использовать лишний модуль? Вот именно это мне не понятно...

Аватар пользователя demarko demarko 7 июня 2010 в 20:01

Sinkora wrote:
Quote:
This module facilitates an upgrade of jQuery in Drupal core and allows other contrib modules to rely on a newer jQuery version.

Т.е. модуль облегчает обновление JQuery для Друпала и других модулей.

Но в чем проблема вручную загрузить новую версию JQuery и не использовать лишний модуль? Вот именно это мне не понятно...

Ну на сколько я понимаю это интеграция библиотеки jQuery и Drupal, там же не только библиотека а и вспомогательные файлы есть которые как раз и делают привязку к Drupal.

Аватар пользователя Sinkora Sinkora 7 июня 2010 в 20:23

"demarko" wrote:
Ну на сколько я понимаю это интеграция библиотеки jQuery и Drupal, там же не только библиотека а и вспомогательные файлы есть которые как раз и делают привязку к Drupal.

Я так и подозревал...

Аватар пользователя demarko demarko 7 июня 2010 в 23:24

Вроде решил проблему:

Нужно заменить функцию

jquery_update_jquery_path()

На эту

function jquery_update_jquery_path() {
  $jquery_file = preg_match('/(admin|edit|add)/', request_uri()) ?
  array('none' => JQUERY_ORIGINAL_PATH.'/'.'jquery.js', 'min' => JQUERY_ORIGINAL_PATH.'/'.'jquery.min.js'):
  array('none' => JQUERY_UPDATE_REPLACE_PATH.'/'.'jquery.js', 'min' => JQUERY_UPDATE_REPLACE_PATH.'/'.'jquery.min.js');
 
  return $jquery_file[variable_get('jquery_update_compression_type', 'min')];

}

И эту

jquery_update_preprocess_page(&$variables)

На эту

/**
 * Implementation of moduleName_preprocess_hook().
 *
 * Replace Drupal core's jquery.js with the new one from jQuery Update module.
 */

function jquery_update_preprocess_page(&$variables) {
  // Only do this for pages that have JavaScript on them.
  if (!empty($variables['scripts'])) {

    // Perform the logic if either jQuery Update's jquery.js is newer than core's.
    if (variable_get('jquery_update_replace', TRUE)) {
      // Get an array of all the JavaScript files loaded by Drupal on this page.
      $scripts = drupal_add_js();

      // Replace jquery.js first.
      $new_jquery = array(jquery_update_jquery_path() => $scripts['core']['misc/jquery.js']);
      $scripts['core'] = array_merge($new_jquery, $scripts['core']);
          if (!preg_match('/(admin|edit|add)/', request_uri())):
                unset($scripts['core']['misc/jquery.js']);
          endif;

      // Loop through each of the required replacements.
      foreach (jquery_update_get_replacements() as $type => $replacements) {
        foreach ($replacements as $find => $replace) {
          // If the file to replace is loaded on this page...
          if (isset($scripts[$type][$find])) {
            // Create a new entry for the replacement file, and unset the original one.
            $replace = JQUERY_UPDATE_REPLACE_PATH .'/'. $replace;
            $scripts[$type][$replace] = $scripts[$type][$find];
            unset($scripts[$type][$find]);
          }
        }
      }

      $variables['scripts'] = drupal_get_js('header', $scripts);
    }
  }
}

Stan.Ezersky отдельное спасибо за пост (jQuery 1.4.2 для фронтенда сайта)