diff -u b/jquery_update.module b/jquery_update.module --- b/jquery_update.module +++ b/jquery_update.module @@ -75,25 +75,21 @@ * Implements hook_library_alter(). */ function jquery_update_library_alter(&$javascript, $module) { - global $theme; - $path = drupal_get_path('module', 'jquery_update'); $version = variable_get('jquery_update_jquery_version', '1.10'); // Modified System Library. - if ($module === 'system' && $version) { + if ($module === 'system') { // Make sure we inject either the minified or uncompressed version as desired. $min = variable_get('jquery_update_compression_type', 'min') == 'none' ? '' : '.min'; $cdn = variable_get('jquery_update_jquery_cdn', 'none'); // Replace jQuery with the alternative version. - $theme_version = theme_get_setting('jquery_update_version', $theme); - if ($theme_version) { - if (version_compare($version, $theme_version, '!=')) { - $version = $theme_version; - } + $theme_version = theme_get_setting('jquery_update_jquery_version'); + if ($theme_version && version_compare($version, $theme_version, '!=')) { + $version = $theme_version; } // If the ajax version is set then that one always win. if (!empty($_POST['ajax_page_state']['jquery_version'])) { @@ -184,7 +180,7 @@ ); $themes = list_themes(); - $header = array(t('Theme'), t('Status'), t('jQuery version'), t('')); + $header = array(t('Theme'), t('Status'), t('jQuery version'), ''); $rows = array(); $themes_collapsed = TRUE; // Go through all themes. @@ -196,7 +192,7 @@ continue; } // Retrieve the version jQuery for this theme. - $theme_version = theme_get_setting('jquery_update_version', $theme_name); + $theme_version = theme_get_setting('jquery_update_jquery_version', $theme_name); if (empty($theme_version)) { $theme_version = $default_version; } @@ -215,7 +211,7 @@ )), ); } - + $form['version_options']['themes'] = array( '#type' => 'fieldset', '#title' => t('Theme specific versions'), @@ -223,8 +219,9 @@ '#collapsed' => $themes_collapsed, ); $form['version_options']['themes']['overrides'] = array( - '#type' => 'markup', - '#markup' => theme('table', array('header' => $header, 'rows' => $rows)), + '#theme' => 'table', + '#header' => $header, + '#rows' => $rows, ); $form['jquery_update_compression_type'] = array( @@ -272,29 +269,23 @@ // global theme settings page return; } - $theme_name = $form_state['build_info']['args'][0]; - $themes = list_themes(); + $theme_key = $form_state['build_info']['args'][0]; $default_version = variable_get('jquery_update_jquery_version', '1.10'); - $theme_version = theme_get_setting('jquery_update_version', $theme_name); + $theme_version = theme_get_setting('jquery_update_jquery_version', $theme_key); - $form_key = $theme_name . '_jquery_update'; - $form['options_settings'][$form_key] = array( + $form['jquery_update'] = array( '#type' => 'fieldset', '#title' => t('jQuery Update'), ); - $form['options_settings'][$form_key]['jquery_update_version'] = array( + $form['jquery_update']['jquery_update_jquery_version'] = array( '#type' => 'select', - '#title' => t('jQuery version for theme %theme_name', array( - '%theme_name' => $themes[$theme_name]->info['name'], - )), + '#title' => t('Theme specific jQuery version'), '#options' => array( '' => t('Site wide default (!version)', array('!version' => $default_version)), ) + jquery_update_get_versions(), '#default_value' => $theme_version, - '#description' => t('Optionally select a different version of jQuery to use for pages that are rendered using the %theme_name theme.', array( - '%theme_name' => $themes[$theme_name]->info['name'], - )), + '#description' => t('Optionally select a different version of jQuery to use for pages that are rendered using this theme.'), ); } @@ -304,13 +295,11 @@ * @return array The available jQuery versions */ function jquery_update_get_versions() { - return array( - '1.5' => '1.5', - '1.7' => '1.7', - '1.8' => '1.8', - '1.9' => '1.9', - '1.10' => '1.10', - ); + $versions = &drupal_static(__FUNCTION__); + if (!$versions) { + $versions = drupal_map_assoc(array('1.5', '1.7', '1.8', '1.9', '1.10')); + } + return $versions; } /** only in patch2: unchanged: --- a/jquery_update.install +++ b/jquery_update.install @@ -47,3 +47,21 @@ function jquery_update_update_7000() { // Restore the default version of jQuery. variable_del('jquery_update_jquery_version'); } + +/** + * Keep a previously configured jquery version for the admin theme. + * @see https://www.drupal.org/node/1969244 + */ +function jquery_update_update_7001() { + $admin_theme_key = variable_get('admin_theme', FALSE); + $admin_version = variable_get('jquery_update_jquery_admin_version', FALSE); + if (!$admin_theme_key || !$admin_version) { + return; + } + $theme_settings = variable_get('theme_' . $admin_theme_key . '_settings', FALSE); + if (!isset($theme_settings['jquery_update_jquery_version'])) { + $theme_settings['jquery_update_jquery_version'] = $admin_version; + variable_set('theme_' . $admin_theme_key . '_settings', $theme_settings); + variable_del('jquery_update_jquery_admin_version'); + } +}