function async_js_js_alter in Asynchronous JavaScript 7
Same name and namespace in other branches
- 8 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);
  }
}