Same filename in other branches
Advanced aggregation js cdn library module.
Fichier
-
advagg_js_cdn/
advagg_js_cdn.module
View source
<?php
/**
* @file
* Advanced aggregation js cdn library module.
*
*/
/**
* Default value to see if jquery should be grabbed from the Google CDN.
*/
define('ADVAGG_JS_CDN_JQUERY', TRUE);
/**
* Default value to see if jquery-ui should be grabbed from the Google CDN.
*/
define('ADVAGG_JS_CDN_JQUERY_UI', TRUE);
/**
* Default value to see if SWFObject should be grabbed from the Google CDN.
*/
define('ADVAGG_JS_CDN_SWFOBJECT', TRUE);
/**
* Implements hook_advagg_js_pre_alter().
*/
function advagg_js_cdn_advagg_js_pre_alter(&$javascript, $preprocess_js, $public_downloads, $scope) {
// Exit early if we are not going to CDN any code.
$cdn_jquery = variable_get('advagg_js_cdn_jquery', ADVAGG_JS_CDN_JQUERY);
$cdn_jquery_ui = variable_get('advagg_js_cdn_jquery_ui', ADVAGG_JS_CDN_JQUERY_UI);
$cdn_swfobject = variable_get('advagg_js_cdn_swfobject', ADVAGG_JS_CDN_SWFOBJECT);
if (!$cdn_jquery && !$cdn_jquery_ui && !$cdn_swfobject) {
return FALSE;
}
// Set filepaths/versions
$jquery_version = variable_get('advagg_js_cdn_jquery_version', '1.2.6');
$jquery_filepath = 'misc/jquery.js';
if (module_exists('jquery_update') && variable_get('jquery_update_replace', TRUE)) {
// jquery_update_get_version hits disk and doesn't get cached.
// advagg_js_cdn_advagg_js_pre_alter will run mutiple times per request so
// caching the value of $jquery_update_version here.
static $jquery_update_version;
if (empty($jquery_update_version)) {
$jquery_update_version = variable_get('advagg_js_cdn_jquery_update_version', jquery_update_get_version());
}
$jquery_update_filepath = drupal_get_path('module', 'jquery_update');
}
if (module_exists('jquery_ui')) {
// jquery_ui_get_version hits disk and doesn't get cached.
// advagg_js_cdn_advagg_js_pre_alter will run mutiple times per request so
// caching the value of jquery_ui_get_version here.
static $jquery_ui_version;
if (empty($jquery_ui_version)) {
$jquery_ui_version = jquery_ui_get_version();
}
$jquery_ui_filepath = advagg_js_cdn_get_jquery_ui_filename();
}
if (module_exists('swftools')) {
$swfobject_version = variable_get('advagg_js_cdn_swfobject_version', '2.2');
if (function_exists('swftools_get_player_path')) {
$swfobject_filepath = swftools_get_player_path() . '/swfobject2/swfobject.js';
}
elseif (function_exists('swftools_get_library')) {
$swfobject_filepath = swftools_get_library('swfobject') . '/swfobject.js';
}
}
// http or https.
$schema = advagg_get_server_schema();
foreach ($javascript as $type => $data) {
// Skip inline and setting js.
if (!$data || $type == 'setting' || $type == 'inline') {
continue;
}
// Search and replace.
foreach ($data as $path => $info) {
// jquery.js
if ($cdn_jquery) {
if (isset($jquery_update_filepath) && ($path == $jquery_update_filepath . '/replace/jquery.min.js' || $path == $jquery_filepath . '/replace/jquery.js')) {
$info['preprocess'] = FALSE;
$javascript['external'][$schema . '://ajax.googleapis.com/ajax/libs/jquery/' . $jquery_update_version . '/jquery.min.js'] = $info;
unset($javascript[$type][$path]);
}
elseif ($path == $jquery_filepath) {
$info['preprocess'] = FALSE;
$javascript['external'][$schema . '://ajax.googleapis.com/ajax/libs/jquery/' . $jquery_version . '/jquery.min.js'] = $info;
unset($javascript[$type][$path]);
}
}
// jquery-ui.js
if ($cdn_jquery_ui) {
if (isset($jquery_ui_filepath) && isset($jquery_ui_version) && $path == $jquery_ui_filepath) {
$info['preprocess'] = FALSE;
$javascript['external'][$schema . '://ajax.googleapis.com/ajax/libs/jqueryui/' . $jquery_ui_version . '/jquery-ui.min.js'] = $info;
unset($javascript[$type][$path]);
}
}
// swfobject.js
if ($cdn_swfobject) {
if (isset($swfobject_filepath) && $path == $swfobject_filepath) {
$info['preprocess'] = FALSE;
$javascript['external'][$schema . '://ajax.googleapis.com/ajax/libs/swfobject/' . $swfobject_version . '/swfobject.js'] = $info;
unset($javascript[$type][$path]);
}
}
}
}
}
/**
* Get the path for the jquery-ui.js file.
*
* @param string $file
* filename.
*/
function advagg_js_cdn_get_jquery_ui_filename($file = 'jquery-ui') {
$jquery_ui_path_const = 'JQUERY_UI_PATH';
if (!defined($jquery_ui_path_const)) {
if (!function_exists('jquery_ui_get_path')) {
return FALSE;
}
$jquery_ui_path = jquery_ui_get_path();
if ($jquery_ui_path === FALSE) {
return FALSE;
}
}
else {
$jquery_ui_path = constant($jquery_ui_path_const);
}
$jquery_ui_path .= '/ui';
$compression = variable_get('jquery_update_compression_type', 'mini');
switch ($compression) {
case 'none':
$file_path = "{$file}.js";
break;
case 'pack':
$file_path = "packed/{$file}.packed.js";
break;
case 'mini':
default:
$file_path = "minified/{$file}.min.js";
break;
}
$js_path = $jquery_ui_path . '/' . $file_path;
return $js_path;
}
Functions
Titre | Deprecated | Résumé |
---|---|---|
advagg_js_cdn_advagg_js_pre_alter | Implements hook_advagg_js_pre_alter(). | |
advagg_js_cdn_get_jquery_ui_filename | Get the path for the jquery-ui.js file. |
Constants
Titre | Deprecated | Résumé |
---|---|---|
ADVAGG_JS_CDN_JQUERY | Default value to see if jquery should be grabbed from the Google CDN. | |
ADVAGG_JS_CDN_JQUERY_UI | Default value to see if jquery-ui should be grabbed from the Google CDN. | |
ADVAGG_JS_CDN_SWFOBJECT | Default value to see if SWFObject should be grabbed from the Google CDN. |