Implements hook_ajax_render_alter().
1 call to advagg_ajax_render_alter()
- advagg_admin_settings_form in ./
advagg.admin.inc - Form builder; Configure advagg settings.
2 string references to 'advagg_ajax_render_alter'
- advagg.module in ./
advagg.module - Advanced CSS/JS aggregation module.
- advagg_admin_settings_form in ./
advagg.admin.inc - Form builder; Configure advagg settings.
File
-
./
advagg.module, line 1128
Code
function advagg_ajax_render_alter(&$commands) {
// Do not run hook if AdvAgg is disabled.
if (!advagg_enabled()) {
return;
}
// Do not run hook if advagg_ajax_render_alter is FALSE.
if (!variable_get('advagg_ajax_render_alter', ADVAGG_AJAX_RENDER_ALTER)) {
return;
}
// Conditionally adds the default Drupal/jQuery libraries to the page.
// @see http://drupal.org/node/1279226
if (function_exists('drupal_add_js_page_defaults')) {
drupal_add_js_page_defaults();
}
// Get Core JS.
list(, $core_scripts_header, $core_scripts_footer, $items, $settings) = advagg_build_ajax_js_css();
// Get AdvAgg JS.
$scripts_header = $scripts_footer = '';
if (!empty($items['js'])) {
$scripts_footer_array = advagg_get_js('footer', $items['js'], TRUE);
// Function advagg_pre_render_scripts() gets called here.
$scripts_footer = drupal_render($scripts_footer_array);
$scripts_header_array = advagg_get_js('header', $items['js'], TRUE);
// Function advagg_pre_render_scripts() gets called here.
$scripts_header = drupal_render($scripts_header_array);
}
// Remove core JS.
foreach ($commands as $key => $values) {
// Skip if not an array or not a command.
if (!is_array($values) || empty($values['command'])) {
continue;
}
if ($values['command'] === 'settings' && is_array($values['settings']) && !empty($values['merge'])) {
// Remove JS settings.
unset($commands[$key]);
continue;
}
if ($values['command'] === 'insert' && is_null($values['settings']) && $values['method'] === 'prepend' && $values['data'] == $core_scripts_header) {
// Remove JS header.
unset($commands[$key]);
continue;
}
if ($values['command'] === 'insert' && is_null($values['settings']) && $values['method'] === 'append' && $values['data'] == $core_scripts_footer) {
// Remove JS footer.
unset($commands[$key]);
continue;
}
}
// Add in AdvAgg JS.
$extra_commands = array();
if (!empty($scripts_header)) {
$extra_commands[] = ajax_command_prepend('head', $scripts_header);
}
if (!empty($scripts_footer)) {
$extra_commands[] = ajax_command_append('body', $scripts_footer);
}
if (!empty($extra_commands)) {
$commands = array_merge($extra_commands, $commands);
}
if (!empty($settings)) {
array_unshift($commands, ajax_command_settings(advagg_cleanup_settings_array(drupal_array_merge_deep_array(array_filter($settings['data'], 'is_array'))), TRUE));
}
}