From 22329a401c01eddd258a0ce39a3dccd9438fd506 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Sun, 12 Apr 2015 18:58:12 -0500 Subject: [PATCH] Move jQuery CDN feature to Soil --- CHANGELOG.md | 5 ++-- README.md | 5 ++-- lib/assets.php | 71 +++----------------------------------------------- lib/config.php | 2 +- 4 files changed, 9 insertions(+), 74 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ccd599..bb19603 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,10 @@ ### HEAD +* Move jQuery CDN feature to Soil ([#1422](https://github.com/roots/sage/issues/1422)) +* Bump `gulp-load-plugins` to 0.10.0 ([#1419](https://github.com/roots/sage/issues/1419)) +* Switch from [yargs](https://github.com/bcoe/yargs) to [minimist](https://github.com/substack/minimist) ([#1418](https://github.com/roots/sage/issues/1418)) * Remove `$content_width` ([#1417](https://github.com/roots/sage/issues/1417)) * Lowercase `X-UA-Compatible` ([#1409](https://github.com/roots/sage/issues/1409)) * Remove mention of Google Analytics from the config ([#1384](https://github.com/roots/sage/issues/1384)) -* Switch from [yargs](https://github.com/bcoe/yargs) to [minimist](https://github.com/substack/minimist) -* Bump `gulp-load-plugins` to 0.10.0 ### 8.1.1: March 31st, 2015 * Remove pleeease dependency in favor of vanilla gulp-autoprefixer and gulp-minify-css ([#1402](https://github.com/roots/sage/issues/1402)) diff --git a/README.md b/README.md index 6f21d0c..5eb9fe2 100644 --- a/README.md +++ b/README.md @@ -30,9 +30,6 @@ For more installation notes, refer to the [Install gulp and Bower](#install-gulp * [asset-builder](https://github.com/austinpray/asset-builder) for the JSON file based asset pipeline * [Bootstrap](http://getbootstrap.com/) * [Theme wrapper](https://roots.io/sage/docs/theme-wrapper/) -* [HTML5 Boilerplate](http://html5boilerplate.com/) - * The latest [jQuery](http://jquery.com/) via Google CDN, with a local fallback - * The latest [Modernizr](http://modernizr.com/) build for feature detection * ARIA roles and microformats * Cleaner HTML output of navigation menus * Posts use the [hNews](http://microformats.org/wiki/hnews) microformat @@ -43,6 +40,8 @@ Install the [Soil](https://github.com/roots/soil) plugin to enable additional fe * Cleaner output of `wp_head` and enqueued assets * Root relative URLs * Nice search (`/search/query/`) +* Google CDN jQuery snippet from [HTML5 Boilerplate](http://html5boilerplate.com/) +* Google Analytics snippet from [HTML5 Boilerplate](http://html5boilerplate.com/) ## Installation diff --git a/lib/assets.php b/lib/assets.php index 1e2520a..39acfa7 100644 --- a/lib/assets.php +++ b/lib/assets.php @@ -9,13 +9,8 @@ namespace Roots\Sage\Assets; * 1. /theme/dist/styles/main.css * * Enqueue scripts in the following order: - * 1. Latest jQuery via Google CDN (if enabled in config.php) - * 2. /theme/dist/scripts/modernizr.js - * 3. /theme/dist/scripts/main.js - * - * Google Analytics is loaded after enqueued scripts if: - * - An ID has been defined in config.php - * - You're not logged in as an administrator + * 1. /theme/dist/scripts/modernizr.js + * 2. /theme/dist/scripts/main.js */ class JsonManifest { @@ -70,74 +65,14 @@ function asset_path($filename) { } } -function bower_map_to_cdn($dependency, $fallback) { - static $bower; - - if (empty($bower)) { - $bower_path = get_template_directory() . '/bower.json'; - $bower = new JsonManifest($bower_path); - } - - $templates = [ - 'google' => '//ajax.googleapis.com/ajax/libs/%name%/%version%/%file%' - ]; - - $version = $bower->getPath('dependencies.' . $dependency['name']); - - if (isset($version) && preg_match('/^(\d+\.){2}\d+$/', $version)) { - $search = ['%name%', '%version%', '%file%']; - $replace = [$dependency['name'], $version, $dependency['file']]; - return str_replace($search, $replace, $templates[$dependency['cdn']]); - } else { - return $fallback; - } - -} - function assets() { wp_enqueue_style('sage_css', asset_path('styles/main.css'), false, null); - /** - * Grab Google CDN's latest jQuery with a protocol relative URL; fallback to local if offline - * jQuery & Modernizr load in the footer per HTML5 Boilerplate's recommendation: http://goo.gl/nMGR7P - * If a plugin enqueues jQuery-dependent scripts in the head, jQuery will load in the head to meet the plugin's dependencies - * To explicitly load jQuery in the head, change the last wp_enqueue_script parameter to false - */ - if (!is_admin() && current_theme_supports('jquery-cdn')) { - wp_deregister_script('jquery'); - - wp_register_script('jquery', bower_map_to_cdn([ - 'name' => 'jquery', - 'cdn' => 'google', - 'file' => 'jquery.min.js' - ], asset_path('scripts/jquery.js')), [], null, true); - - add_filter('script_loader_src', __NAMESPACE__ . '\\jquery_local_fallback', 10, 2); - } - if (is_single() && comments_open() && get_option('thread_comments')) { wp_enqueue_script('comment-reply'); } wp_enqueue_script('modernizr', asset_path('scripts/modernizr.js'), [], null, true); - wp_enqueue_script('jquery'); - wp_enqueue_script('sage_js', asset_path('scripts/main.js'), [], null, true); + wp_enqueue_script('sage_js', asset_path('scripts/main.js'), ['jquery'], null, true); } add_action('wp_enqueue_scripts', __NAMESPACE__ . '\\assets', 100); - -// http://wordpress.stackexchange.com/a/12450 -function jquery_local_fallback($src, $handle = null) { - static $add_jquery_fallback = false; - - if ($add_jquery_fallback) { - echo '' . "\n"; - $add_jquery_fallback = false; - } - - if ($handle === 'jquery') { - $add_jquery_fallback = apply_filters('script_loader_src', asset_path('scripts/jquery.js'), 'jquery-fallback'); - } - - return $src; -} -add_action('wp_head', __NAMESPACE__ . '\\jquery_local_fallback'); diff --git a/lib/config.php b/lib/config.php index 80da720..96d77e8 100644 --- a/lib/config.php +++ b/lib/config.php @@ -10,8 +10,8 @@ use Roots\Sage\ConditionalTagCheck; add_theme_support('soil-clean-up'); // Enable clean up from Soil add_theme_support('soil-relative-urls'); // Enable relative URLs from Soil add_theme_support('soil-nice-search'); // Enable nice search from Soil +add_theme_support('soil-jquery-cdn'); // Enable to load jQuery from the Google CDN add_theme_support('bootstrap-gallery'); // Enable Bootstrap's thumbnails component on [gallery] -add_theme_support('jquery-cdn'); // Enable to load jQuery from the Google CDN /** * Configuration values