function async_js_js_alter in Asynchronous JavaScript 8
Same name and namespace in other branches
- 7 async_js.module \async_js_js_alter()
Implements hook_js_alter().
See also
File
- ./
async_js.module, line 62 - Queue JavaScript files to be loaded asynchronously.
Code
function async_js_js_alter(&$javascript) {
// Add any scripts to be loaded asynchronously.
foreach ($javascript as $key => $script) {
if (!empty($script['async_js'])) {
async_js_add_js($script['data'], $script);
unset($javascript[$key]);
}
}
// Retrieve all scripts to be loaded asynchronously.
$async_js = async_js_add_js();
if (!empty($async_js)) {
// Process dependencies.
$async_js = _async_js_process_dependencies($async_js);
// Build file URLs.
$async_js = _async_js_build_urls($async_js);
// Initialize settings array.
$settings = array();
$javascript['settings']['data'][]['async_js'] =& $settings;
// Add settings for each script.
foreach ($async_js as $script) {
// Prep $script for JavaScript.
$script = array(
'data' => $script['data'],
// Use an array of callbacks, even if only given a string.
'callbacks' => (array) $script['async_callback'],
'fade' => $script['async_fade'],
'container' => $script['async_container'],
'dependencies' => $script['async_dependencies'],
'dependents' => $script['async_dependents'],
'queued' => FALSE,
'loaded' => FALSE,
);
// Add file to script list.
$settings['javascript'][$script['data']] = $script;
}
// Add additional settings.
$settings['timeout'] = variable_get('async_js_timeout', 1000);
$settings['finalCallback'] = variable_get('async_js_final_callback', '');
// Add our own script.
$data = drupal_get_path('module', 'async_js') . '/async_js.js';
$javascript[$data] = drupal_js_defaults($data);
}
}