diff --git a/jquery_update.admin.inc b/jquery_update.admin.inc new file mode 100644 index 0000000000000000000000000000000000000000..35116d098148c53e5a9a12a6f6b32eb8cd05601c --- /dev/null +++ b/jquery_update.admin.inc @@ -0,0 +1,209 @@ +<?php + +/** + * @file + * Provides the administration settings for jQuery Update. + */ + +/** + * Admin settings menu callback. + * + * @see jquery_update_menu() + */ +function jquery_update_settings_form() { + // Vertical Tabs. + $form['jquery_update'] = array( + '#type' => 'vertical_tabs', + '#weight' => 99, + ); + + // Provide the form item to choose which jQuery version to use. + $default_version = variable_get('jquery_update_jquery_version', '1.10'); + $version_options = jquery_update_get_version_options(FALSE); + $form['jquery_update_jquery_version'] = array( + '#type' => 'select', + '#title' => t('Default jQuery version'), + '#options' => $version_options, + '#default_value' => $default_version, + '#description' => t('Select which version of jQuery to use on the site.'), + ); + + // Theme-specific override version + $themes = list_themes(); + $theme_default = variable_get('theme_default', FALSE); + $admin_theme = variable_get('admin_theme', FALSE); + $header = array(t('Theme'), t('jQuery version'), t('Operations')); + $rows = array(); + // Go through all themes. + foreach ($themes as $theme_key => $theme) { + // Skip disabled themes, but only if they are not configured as admin + // theme. This is an inconsistency in drupal core, that you can select a + // disabled theme as admin theme. + if (!$theme->status && $theme_key !== $admin_theme) { + continue; + } + + // Retrieve the version jQuery for this theme. + $theme_version = theme_get_setting('jquery_update_jquery_version', $theme_key); + + // Replace or modify the version name to be displayed. + if (empty($theme_version)) { + $theme_version = t('Site Default'); + } + elseif (in_array($theme_version, array_keys($version_options))) { + $theme_version = $version_options[$theme_version]; + } + else { + $theme_version .= ' (' . t('unknown version') . ')'; + } + + // Provide additional information for default and admin themes. + $theme_name = $theme->info['name']; + if ($theme_key === $theme_default && ($theme_key === $admin_theme || empty($admin_theme))) { + $theme_name .= ' (' . t('default/admin theme') . ')'; + } + elseif ($theme_key === $theme_default) { + $theme_name .= ' (' . t('default theme') . ')'; + } + elseif ($theme_key === $admin_theme) { + $theme_name .= ' (' . t('admin theme') . ')'; + } + + // Construct the table row. + $rows[] = array( + $theme_name, + $theme_version, + l(t('Configure'), 'admin/appearance/settings/' . $theme_key, array( + 'attributes' => array( + 'class' => array( + 'module-link', + 'module-link-configure', + ), + ), + 'query' => drupal_get_destination(), + 'fragment' => 'edit-jquery-update', + )), + ); + } + + $form['themes'] = array( + '#type' => 'fieldset', + '#title' => t('Theme Overrides'), + '#description' => t('You can override the default jQuery version above on each themes settings page. This is useful for administrative based themes.'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#tree' => TRUE, + '#weight' => -2, + '#group' => 'jquery_update', + ); + $form['themes']['overrides'] = array( + '#theme' => 'table', + '#header' => $header, + '#rows' => $rows, + ); + + + $form['performance'] = array( + '#type' => 'fieldset', + '#title' => t('Performance'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#tree' => TRUE, + '#weight' => -1, + '#group' => 'jquery_update', + '#description' => t('Modify how jQuery is loaded to increase download and render performance.') + ); + + $form['performance']['jquery_update_compression_type'] = array( + '#type' => 'radios', + '#title' => t('jQuery compression level'), + '#options' => array( + 'min' => t('Production (minified)'), + 'none' => t('Development (uncompressed)'), + ), + // Do not show this field if jQuery version is default + '#states' => array( + 'invisible' => array( + ':input[name=jquery_update_jquery_version]' => array('value' => "default"), + ), + ), + '#default_value' => variable_get('jquery_update_compression_type', 'min'), + ); + $form['performance']['jquery_update_jquery_cdn'] = array( + '#type' => 'select', + '#title' => t('jQuery and jQuery UI CDN'), + '#options' => array( + 'none' => t('None'), + 'google' => t('Google'), + 'microsoft' => t('Microsoft'), + 'jquery' => t('jQuery'), + ), + // Do not show this field if jQuery version is default + '#states' => array( + 'invisible' => array( + ':input[name=jquery_update_jquery_version]' => array('value' => "default"), + ), + ), + '#default_value' => variable_get('jquery_update_jquery_cdn', 'none'), + '#description' => t('Use jQuery and jQuery UI from a CDN. If the CDN is not available the local version of jQuery and jQuery UI will be used.'), + ); + + $form['jquery_migrate'] = array( + '#type' => 'fieldset', + '#title' => t('jQuery Migrate'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#tree' => TRUE, + '#group' => 'jquery_update', + '#description' => t('<a href="!url">jQuery Migrate</a> can be used to detect and restore APIs or features that have been deprecated in jQuery and removed as of version 1.9 or higher.', array( + '!url' => 'http://github.com/jquery/jquery-migrate/#readme', + )), + ); + + $form['jquery_migrate']['jquery_update_jquery_migrate_enable'] = array( + '#type' => 'checkbox', + '#title' => t('Enable jQuery Migrate Plugin'), + '#default_value' => variable_get('jquery_update_jquery_migrate_enable', FALSE), + '#description' => t('Even if jQuery Migrate is enabled, it will not be loaded if the current page\'s jQuery version is lower than 1.9.'), + ); + + $jquery_migrate_states = array( + 'visible' => array( + ':input[name="jquery_update_jquery_migrate_enable"]' => array('checked' => TRUE), + ), + ); + $form['jquery_migrate']['jquery_update_jquery_migrate_cdn'] = array( + '#type' => 'select', + '#title' => t('jQuery Migrate CDN'), + '#options' => array( + 'none' => t('None'), + 'jquery' => t('jQuery'), + ), + '#default_value' => variable_get('jquery_update_jquery_migrate_cdn', 'none'), + '#description' => t('Load the jQuery Migrate plugin using a CDN. If the CDN is not available the local module version of the plugin will be used instead.'), + '#states' => $jquery_migrate_states, + ); + + $jquery_migrate_api_url = 'https://github.com/jquery/jquery-migrate/#migrate-plugin-api'; + $form['jquery_migrate']['jquery_update_jquery_migrate_warnings'] = array( + '#type' => 'checkbox', + '#title' => t('Console warnings'), + '#default_value' => variable_get('jquery_update_jquery_migrate_warnings', FALSE), + '#description' => t('Toggle the <a href="!url">generation of console warnings</a> when using the debug version of jQuery Migrate.', array( + '!url' => $jquery_migrate_api_url, + )), + '#states' => $jquery_migrate_states, + ); + + $form['jquery_migrate']['jquery_update_jquery_migrate_trace'] = array( + '#type' => 'checkbox', + '#title' => t('Console trace'), + '#default_value' => variable_get('jquery_update_jquery_migrate_trace', FALSE), + '#description' => t('Toggle the <a href="!url">generation of console trace messages</a> when using the debug version of jQuery Migrate.', array( + '!url' => $jquery_migrate_api_url, + )), + '#states' => $jquery_migrate_states, + ); + + return system_settings_form($form); +} \ No newline at end of file diff --git a/jquery_update.info b/jquery_update.info index ff5e239dd4b5636ab38f090b70e9fdd69d3feabb..a370ad9a5ce3d946cc007b4d5740b1870565ec5e 100644 --- a/jquery_update.info +++ b/jquery_update.info @@ -2,7 +2,5 @@ name = jQuery Update description = Update jQuery and jQuery UI to a more recent version. package = User interface core = 7.x -files[] = jquery_update.module -files[] = jquery_update.install configure = admin/config/development/jquery_update diff --git a/jquery_update.module b/jquery_update.module index 813f4c18894bed2cccf1e9199c020aed4c6a71e3..1e3e47631d0df31b20a3830d6d6d49dff0352535 100644 --- a/jquery_update.module +++ b/jquery_update.module @@ -174,201 +174,17 @@ function jquery_update_library_alter(&$javascript, $module) { */ function jquery_update_menu() { $items['admin/config/development/jquery_update'] = array( - 'title' => 'jQuery update', + 'title' => 'jQuery Update', 'description' => 'Configure settings related to the jQuery upgrade, the library path and compression.', 'page callback' => 'drupal_get_form', 'page arguments' => array('jquery_update_settings_form'), 'access arguments' => array('administer site configuration'), + 'file' => 'jquery_update.admin.inc', ); return $items; } -/** - * Admin settings menu callback. - * - * @see jquery_update_menu() - */ -function jquery_update_settings_form() { - $form['version_options'] = array( - '#type' => 'fieldset', - '#title' => t('Version options'), - ); - - $default_version = variable_get('jquery_update_jquery_version', '1.10'); - $version_options = jquery_update_get_version_options(FALSE); - $form['version_options']['jquery_update_jquery_version'] = array( - '#type' => 'select', - '#title' => t('Site default jQuery version'), - '#options' => $version_options, - '#default_value' => $default_version, - '#description' => t('Select which version of jQuery to use on the site.'), - ); - - $themes = list_themes(); - $theme_default = variable_get('theme_default', FALSE); - $admin_theme = variable_get('admin_theme', FALSE); - $header = array(t('Theme'), t('jQuery version'), t('Operations')); - $rows = array(); - $themes_collapsed = TRUE; - // Go through all themes. - foreach ($themes as $theme_key => $theme) { - // Skip disabled themes, but only if they are not configured as admin - // theme. This is an inconsistency in drupal core, that you can select a - // disabled theme as admin theme. - if (!$theme->status && $theme_key !== $admin_theme) { - continue; - } - - // Retrieve the version jQuery for this theme. - $theme_version = theme_get_setting('jquery_update_jquery_version', $theme_key); - // Do not collapse the fieldset if a theme has set a jQuery version. - if ($theme_version) { - $themes_collapsed = FALSE; - } - - // Replace or modify the version name to be displayed. - if (empty($theme_version)) { - $theme_version = t('Site Default'); - } - elseif (in_array($theme_version, array_keys($version_options))) { - $theme_version = $version_options[$theme_version]; - } - else { - $theme_version .= ' (' . t('unknown version') . ')'; - } - - // Provide additional information for default and admin themes. - $theme_name = $theme->info['name']; - if ($theme_key === $theme_default && ($theme_key === $admin_theme || empty($admin_theme))) { - $theme_name .= ' (' . t('default/admin theme') . ')'; - } - elseif ($theme_key === $theme_default) { - $theme_name .= ' (' . t('default theme') . ')'; - } - elseif ($theme_key === $admin_theme) { - $theme_name .= ' (' . t('admin theme') . ')'; - } - - // Construct the table row. - $rows[] = array( - $theme_name, - $theme_version, - l(t('Configure'), 'admin/appearance/settings/' . $theme_key, array( - 'attributes' => array( - 'class' => array( - 'module-link', - 'module-link-configure', - ), - ), - 'query' => drupal_get_destination(), - 'fragment' => 'edit-jquery-update', - )), - ); - } - - $form['version_options']['themes'] = array( - '#type' => 'fieldset', - '#title' => t('Theme specific versions'), - '#description' => t('You can override the default jQuery version above on each themes settings page. This is useful for administrative based themes.'), - '#collapsible' => TRUE, - '#collapsed' => $themes_collapsed, - ); - $form['version_options']['themes']['overrides'] = array( - '#theme' => 'table', - '#header' => $header, - '#rows' => $rows, - ); - - $form['jquery_update_compression_type'] = array( - '#type' => 'radios', - '#title' => t('jQuery compression level'), - '#options' => array( - 'min' => t('Production (minified)'), - 'none' => t('Development (uncompressed)'), - ), - // Do not show this field if jQuery version is default - '#states' => array( - 'invisible' => array( - ':input[name=jquery_update_jquery_version]' => array('value' => "default"), - ), - ), - '#default_value' => variable_get('jquery_update_compression_type', 'min'), - ); - $form['jquery_update_jquery_cdn'] = array( - '#type' => 'select', - '#title' => t('jQuery and jQuery UI CDN'), - '#options' => array( - 'none' => t('None'), - 'google' => t('Google'), - 'microsoft' => t('Microsoft'), - 'jquery' => t('jQuery'), - ), - // Do not show this field if jQuery version is default - '#states' => array( - 'invisible' => array( - ':input[name=jquery_update_jquery_version]' => array('value' => "default"), - ), - ), - '#default_value' => variable_get('jquery_update_jquery_cdn', 'none'), - '#description' => t('Use jQuery and jQuery UI from a CDN. If the CDN is not available the local version of jQuery and jQuery UI will be used.'), - ); - - $form['jquery_migrate'] = array( - '#type' => 'fieldset', - '#title' => t('jQuery Migrate'), - ); - - $form['jquery_migrate']['jquery_update_jquery_migrate_enable'] = array( - '#type' => 'checkbox', - '#title' => t('Enable jQuery Migrate Plugin'), - '#default_value' => variable_get('jquery_update_jquery_migrate_enable', FALSE), - '#description' => t('Use the <a href="!url">jQuery Migrate</a> plugin for enhanced compatibility. jQuery Migrate can be used to detect and restore jQuery APIs or features that have been deprecated and removed as of jQuery version 1.9 or higher.<br /><strong>Note:</strong> Even if jQuery Migrate is enabled, it will not be loaded if the current page\'s jQuery version is lower than 1.9.', array( - '!url' => 'http://github.com/jquery/jquery-migrate/#readme', - )), - ); - - $jquery_migrate_states = array( - 'visible' => array( - ':input[name="jquery_update_jquery_migrate_enable"]' => array('checked' => TRUE), - ), - ); - $form['jquery_migrate']['jquery_update_jquery_migrate_cdn'] = array( - '#type' => 'select', - '#title' => t('jQuery Migrate CDN'), - '#options' => array( - 'none' => t('None'), - 'jquery' => t('jQuery'), - ), - '#default_value' => variable_get('jquery_update_jquery_migrate_cdn', 'none'), - '#description' => t('Load the jQuery Migrate plugin using a CDN. If the CDN is not available the local module version of the plugin will be used instead.'), - '#states' => $jquery_migrate_states, - ); - - $jquery_migrate_api_url = 'https://github.com/jquery/jquery-migrate/#migrate-plugin-api'; - $form['jquery_migrate']['jquery_update_jquery_migrate_warnings'] = array( - '#type' => 'checkbox', - '#title' => t('Enable console warnings'), - '#default_value' => variable_get('jquery_update_jquery_migrate_warnings', FALSE), - '#description' => t('Toggle the <a href="!url">generation of console warnings</a> when using the debug version of jQuery Migrate.', array( - '!url' => $jquery_migrate_api_url, - )), - '#states' => $jquery_migrate_states, - ); - - $form['jquery_migrate']['jquery_update_jquery_migrate_trace'] = array( - '#type' => 'checkbox', - '#title' => t('Enable console trace'), - '#default_value' => variable_get('jquery_update_jquery_migrate_trace', FALSE), - '#description' => t('Toggle the <a href="!url">generation of console trace messages</a> when using the debug version of jQuery Migrate.', array( - '!url' => $jquery_migrate_api_url, - )), - '#states' => $jquery_migrate_states, - ); - - return system_settings_form($form); -} - /** * Implements hook_form_FORM_ID_alter(). */