Alter the js array.

Paramètres

array $js: JS array.

Fichier

advagg_mod/advagg_mod.module, line 1918

Code

function advagg_mod_js_post_alter(array &$js) {
    if (!module_exists('advagg') || !advagg_enabled()) {
        return;
    }
    // Only add JS if it's actually needed.
    if (variable_get('advagg_mod_js_remove_unused', ADVAGG_MOD_JS_REMOVE_UNUSED)) {
        advagg_mod_remove_js_if_not_used($js);
    }
    // Change sort order so aggregates do not get split up.
    if (variable_get('advagg_mod_js_adjust_sort_external', ADVAGG_MOD_JS_ADJUST_SORT_EXTERNAL) || variable_get('advagg_mod_js_adjust_sort_inline', ADVAGG_MOD_JS_ADJUST_SORT_INLINE) || variable_get('advagg_mod_js_adjust_sort_browsers', ADVAGG_MOD_JS_ADJUST_SORT_BROWSERS)) {
        advagg_mod_sort_css_js($js, 'js');
    }
    // Move JS to the footer.
    advagg_mod_js_move_to_footer($js);
    // Force all JS to be preprocessed.
    if (variable_get('advagg_mod_js_preprocess', ADVAGG_MOD_JS_PREPROCESS)) {
        foreach ($js as &$values) {
            if (!empty($values['preprocess_lock'])) {
                continue;
            }
            $values['preprocess'] = TRUE;
            $values['cache'] = TRUE;
        }
        unset($values);
    }
    // Add the defer or the async tag to JS.
    $jquery_deferred = advagg_mod_js_async_defer($js);
    // Inline JS defer.
    advagg_mod_inline_defer($js, $jquery_deferred);
    // Move all async JS to the header.
    if (variable_get('advagg_mod_js_async_in_header', ADVAGG_MOD_JS_ASYNC_IN_HEADER)) {
        foreach ($js as &$values) {
            // Skip if not file or external.
            if ($values['type'] !== 'file' && $values['type'] !== 'external') {
                continue;
            }
            // Skip if not async.
            if (empty($values['async']) && empty($values['attributes']['async'])) {
                continue;
            }
            // Skip if scope locked.
            if (!empty($values['scope_lock'])) {
                continue;
            }
            // Move to the header with a group of 1000.
            $values['scope'] = 'header';
            $values['group'] = 1000;
        }
        unset($values);
    }
    advagg_mod_prefetch_link($js);
}