You are here

function advagg_font_page_alter in Advanced CSS/JS Aggregation 7.2

Implements hook_page_alter().

File

advagg_font/advagg_font.module, line 62
Advanced aggregation font module.

Code

function advagg_font_page_alter() {

  // Skip if advagg is disabled.
  if (!advagg_enabled()) {
    return;
  }
  $advagg_font_ffo = variable_get('advagg_font_fontfaceobserver', ADVAGG_FONT_FONTFACEOBSERVER);

  // Fontface Observer is disabled.
  if (empty($advagg_font_ffo)) {
    return;
  }

  // Add settings.
  drupal_add_js(array(
    'advagg_font' => array(),
    'advagg_font_storage' => variable_get('advagg_font_storage', ADVAGG_FONT_STORAGE),
    'advagg_font_cookie' => variable_get('advagg_font_cookie', ADVAGG_FONT_COOKIE),
    'advagg_font_no_fout' => variable_get('advagg_font_no_fout', ADVAGG_FONT_NO_FOUT),
  ), array(
    'type' => 'setting',
  ));

  // Add inline script for reading the cookies and adding the fonts already
  // loaded to the html class.
  if (variable_get('advagg_font_cookie', ADVAGG_FONT_COOKIE) || variable_get('advagg_font_storage', ADVAGG_FONT_STORAGE)) {
    $inline_script_min = 'for(var fonts=document.cookie.split("advaggf"),i=0;i<fonts.length;i++){var font=fonts[i].split("="),pos=font[0].indexOf("ont_");-1!==pos&&(window.document.documentElement.className+=" "+font[0].substr(4).replace(/[^a-zA-Z0-9\\-]/g,""))}if(void 0!==Storage){fonts=JSON.parse(localStorage.getItem("advagg_fonts"));var current_time=(new Date).getTime();for(var key in fonts)fonts[key]>=current_time&&(window.document.documentElement.className+=" "+key.replace(/[^a-zA-Z0-9\\-]/g,""))}';
    drupal_add_js($inline_script_min, array(
      'type' => 'inline',
      'group' => JS_LIBRARY - 1,
      'weight' => -50000,
      'scope' => 'above_css',
      'scope_lock' => TRUE,
      'movable' => FALSE,
      'no_defer' => TRUE,
    ));
  }

  // Get library data for fontfaceobserver.
  $library = advagg_get_library('fontfaceobserver', 'advagg_font');

  // If libraries_load() does not exist load library externally.
  if (!is_callable('libraries_load')) {
    $advagg_font_ffo = 6;
  }

  // Add fontfaceobserver.js.
  if ($advagg_font_ffo != 6 && empty($library['installed'])) {

    // The fontfaceobserver library is not installed; use external variant.
    $advagg_font_ffo = 6;
  }
  if ($advagg_font_ffo == 6) {

    // Use the external variant.
    foreach ($library['variants']['external']['files']['js'] as $data => $options) {
      drupal_add_js($data, $options);
    }
  }
  else {

    // Load the fontfaceobserver library.
    if ($advagg_font_ffo == 2) {

      // Use the inline variant.
      libraries_load('fontfaceobserver', 'inline');
    }
    else {
      libraries_load('fontfaceobserver');
    }
  }

  // Add advagg_font.js; sets cookie and changes the class of the top level
  // element once a font has been downloaded.
  $file_path = drupal_get_path('module', 'advagg_font') . '/advagg_font.js';
  drupal_add_js($file_path, array(
    'async' => TRUE,
    'defer' => TRUE,
  ));
}