From 7b215ad5db52e38a0fff85db561bcc57a8d235f7 Mon Sep 17 00:00:00 2001
From: Jakob Perry <japerry@45640.no-reply.drupal.org>
Date: Tue, 9 Aug 2016 13:50:51 -0700
Subject: [PATCH] 2398093-omega4-backports-2.patch

---
 omega/includes/assets.inc                          |  6 +++++
 omega/includes/assets/assets.inc                   |  2 +-
 omega/includes/assets/assets.settings.inc          | 11 --------
 omega/includes/compatibility/compatibility.inc     |  8 +++---
 .../compatibility/compatibility.settings.inc       | 29 +++-------------------
 .../includes/development/development.settings.inc  | 10 --------
 omega/template.php                                 | 18 ++++++++++++--
 7 files changed, 31 insertions(+), 53 deletions(-)

diff --git a/omega/includes/assets.inc b/omega/includes/assets.inc
index d430ac2..f17c599 100644
--- a/omega/includes/assets.inc
+++ b/omega/includes/assets.inc
@@ -63,6 +63,12 @@ function omega_assets_prepare_regex(array $paths) {
           break;
         }
       }
+
+      if (empty($tokens[$namespace]) && function_exists('libraries_get_path')) {
+        if ($directory = libraries_get_path($namespace)) {
+          $tokens[$namespace] = preg_quote($directory, '/');
+        }
+      }
     }
 
     // Escape any regex characters and replace tokens and wildcards.
diff --git a/omega/includes/assets/assets.inc b/omega/includes/assets/assets.inc
index 5b57386..bd61645 100644
--- a/omega/includes/assets/assets.inc
+++ b/omega/includes/assets/assets.inc
@@ -19,7 +19,7 @@ function omega_extension_assets_theme_registry_alter(&$registry) {
           'path' => $info['path'],
         );
 
-        if (isset($settings[$library]['variant']) && $variant = $settings[$library]['variant']) {
+        if (isset($settings[$library]['variant']) && ($variant = $settings[$library]['variant']) && isset($info['variants'][$variant])) {
           $files = _omega_extension_assets_prepare_library_files($library, $info, $info['variants'][$variant]['files']);
           $registry['html']['libraries'][$library]['attached'] = $files;
         }
diff --git a/omega/includes/assets/assets.settings.inc b/omega/includes/assets/assets.settings.inc
index e0cb2ce..f59cde9 100644
--- a/omega/includes/assets/assets.settings.inc
+++ b/omega/includes/assets/assets.settings.inc
@@ -224,15 +224,4 @@ function omega_extension_assets_theme_settings_form_submit($form, &$form_state)
     $exclude = array_filter(array_map('trim', explode("\n", $values[$item])));
     form_set_value(array('#parents' => array($item)), $exclude, $form_state);
   }
-
-  if (!empty($form_state['values']['omega_libraries'])) {
-    $values = &$form_state['values']['omega_libraries'];
-
-    foreach ($values as &$settings) {
-      if (isset($settings['variant']) && $settings['variant'] == '_default') {
-        // Unset the 'variant' option if it is the default option.
-        unset($settings['variant']);
-      }
-    }
-  }
 }
diff --git a/omega/includes/compatibility/compatibility.inc b/omega/includes/compatibility/compatibility.inc
index 92c3c9a..e0c7ec7 100644
--- a/omega/includes/compatibility/compatibility.inc
+++ b/omega/includes/compatibility/compatibility.inc
@@ -87,7 +87,7 @@ function omega_extension_compatibility_preprocess_html(&$variables) {
     $content = array('width=device-width');
 
     // Add the 'initial-scale' property if configured.
-    if ($value = omega_theme_get_setting('omega_viewport_initial_scale')) {
+    if (($value = omega_theme_get_setting('omega_viewport_initial_scale')) && $value != '_default') {
       $content[] = "initial-scale=$value";
     }
 
@@ -99,7 +99,7 @@ function omega_extension_compatibility_preprocess_html(&$variables) {
     else {
       // Set the minimum-scale and maximum-scale properties if specified.
       foreach (array('minimum', 'maximum') as $type) {
-        if ($value = omega_theme_get_setting("omega_viewport_{$type}_scale")) {
+        if (($value = omega_theme_get_setting("omega_viewport_{$type}_scale", '_default')) && $value != '_default') {
           $content[] = "$type-scale=$value";
         }
       }
@@ -148,11 +148,11 @@ function omega_extension_compatibility_preprocess_html(&$variables) {
   // Send X-UA-Compatible HTTP header to force IE to use the most recent
   // rendering engine or use Chrome's frame rendering engine if available.
   if (omega_theme_get_setting('omega_chrome_edge', TRUE)) {
-    $supported = omega_theme_get_setting('omega_internet_explorer_support', FALSE);
+    $supported = omega_theme_get_setting('omega_internet_explorer_support', '_none');
 
     if (drupal_get_http_header('X-UA-Compatible') === NULL) {
       // Only add the header if it hasn't been added before.
-      drupal_add_http_header('X-UA-Compatible', 'IE=edge,chrome=' . ($supported ? 'IE' . $supported : '1'));
+      drupal_add_http_header('X-UA-Compatible', 'IE=edge,chrome=' . ($supported && $supported != '_none' ? 'IE' . $supported : '1'));
     }
   }
 }
diff --git a/omega/includes/compatibility/compatibility.settings.inc b/omega/includes/compatibility/compatibility.settings.inc
index 60fe785..aa127e7 100644
--- a/omega/includes/compatibility/compatibility.settings.inc
+++ b/omega/includes/compatibility/compatibility.settings.inc
@@ -66,7 +66,7 @@ function omega_extension_compatibility_settings_form($element, &$form, $form_sta
     ),
   );
 
-  $options = array('_none' => t('Default'));
+  $options = array('_default' => t('Default'));
   foreach (range(0.1, 10, 0.1) as $value) {
     // Format the value to display with one decimal.
     $value = number_format($value, 1);
@@ -76,7 +76,7 @@ function omega_extension_compatibility_settings_form($element, &$form, $form_sta
   $element['omega_metatags']['viewport_settings']['omega_viewport_initial_scale'] = array(
     '#type' => 'select',
     '#title' => t('Initial scale'),
-    '#default_value' => omega_theme_get_setting('omega_viewport_initial_scale', '_none'),
+    '#default_value' => omega_theme_get_setting('omega_viewport_initial_scale', '_default'),
     '#options' => $options,
     '#description' => t('The initial scaling of the page. Has to be in the range of the minimum- and maximum scale options.'),
   );
@@ -101,7 +101,7 @@ function omega_extension_compatibility_settings_form($element, &$form, $form_sta
   $element['omega_metatags']['viewport_settings']['scaling_settings']['omega_viewport_minimum_scale'] = array(
     '#type' => 'select',
     '#title' => t('Minimum scale'),
-    '#default_value' => omega_theme_get_setting('omega_viewport_minimum_scale', '_none'),
+    '#default_value' => omega_theme_get_setting('omega_viewport_minimum_scale', '_default'),
     '#options' => $options,
     '#description' => t('The minimum allowed scaling of the site.'),
   );
@@ -109,7 +109,7 @@ function omega_extension_compatibility_settings_form($element, &$form, $form_sta
   $element['omega_metatags']['viewport_settings']['scaling_settings']['omega_viewport_maximum_scale'] = array(
     '#type' => 'select',
     '#title' => t('Maximum scale'),
-    '#default_value' => omega_theme_get_setting('omega_viewport_maximum_scale', '_none'),
+    '#default_value' => omega_theme_get_setting('omega_viewport_maximum_scale', '_default'),
     '#options' => $options,
     '#description' => t('The maximum allowed scaling of the site.'),
   );
@@ -145,27 +145,6 @@ function omega_extension_compatibility_settings_form($element, &$form, $form_sta
     ),
   );
 
-  $form['#submit'][] = 'omega_extension_compatibility_settings_form_submit';
-
   return $element;
 }
 
-/**
- * Form submit callback for the compatibility extension.
- */
-function omega_extension_compatibility_settings_form_submit($form, &$form_state) {
-  $values = &$form_state['values'];
-
-  $options = array(
-    'omega_internet_explorer_support',
-    'omega_viewport_initial_scale',
-    'omega_viewport_minimum_scale',
-    'omega_viewport_maximum_scale',
-  );
-
-  foreach ($options as $item) {
-    if ($values[$item] === '_none') {
-      unset($values[$item]);
-    }
-  }
-}
diff --git a/omega/includes/development/development.settings.inc b/omega/includes/development/development.settings.inc
index 77cad0c..a39dfc1 100644
--- a/omega/includes/development/development.settings.inc
+++ b/omega/includes/development/development.settings.inc
@@ -119,16 +119,6 @@ function omega_extension_development_settings_form($element, &$form, $form_state
     );
   }
 
-  $form['#submit'][] = 'omega_extension_development_settings_form_submit';
-
   return $element;
 }
 
-/**
- * Form submit handler for the theme settings form to clean up stale values.
- */
-function omega_extension_development_settings_form_submit($form, &$form_state) {
-  if (empty($form_state['values']['omega_demo_regions'])) {
-    unset($form_state['values']['omega_demo_regions_list']);
-  }
-}
diff --git a/omega/template.php b/omega/template.php
index e1b96d6..e43e63e 100644
--- a/omega/template.php
+++ b/omega/template.php
@@ -15,6 +15,12 @@ foreach (omega_extensions() as $extension => $info) {
   }
 }
 
+// Clear the static element info cache if the 'scripts' element type is missing.
+// @see https://www.drupal.org/node/2351739.
+if (!element_info('scripts')) {
+  drupal_static_reset('element_info');
+}
+
 /**
  * Implements hook_element_info_alter().
  */
@@ -225,6 +231,9 @@ function omega_css_alter(&$css) {
     ),
   );
 
+  // Filter out inactive modules.
+  $overrides = array_intersect_key($overrides, module_list());
+
   // Check if we are on an admin page. Otherwise, we can skip admin CSS.
   $path = current_path();
   $types = path_is_admin($path) ? array('base', 'theme', 'admin') : array('base', 'theme');
@@ -273,7 +282,7 @@ function omega_css_alter(&$css) {
   // Allow themes to specify no-query fallback CSS files.
   require_once "$omega/includes/assets.inc";
   $mapping = omega_assets_generate_mapping($css);
-  $pattern = $GLOBALS['language']->dir == 'rtl' ? '/\.no-query(-rtl)?\.css$/' : '/\.no-query\.css$/';
+  $pattern = $GLOBALS['language']->direction == LANGUAGE_RTL ? '/\.no-query(-rtl)?\.css$/' : '/\.no-query\.css$/';
   foreach (preg_grep($pattern, $mapping) as $key => $fallback) {
     // Don't modify browser settings if they have already been modified.
     if ($css[$key]['browsers']['IE'] === TRUE && $css[$key]['browsers']['!IE'] === TRUE) {
@@ -357,7 +366,12 @@ function omega_form_alter(&$form, &$form_state, $form_id) {
     $form['#attributes']['class'] = explode(' ', $form['#attributes']['class']);
   }
   // Duplicate the form ID as a class so we can reduce specificity in our CSS.
-  $form['#attributes']['class'][] = drupal_clean_css_identifier($form['#id']);
+  if (!empty($form['#id'])) {
+    $form['#attributes']['class'][] = drupal_clean_css_identifier($form['#id']);
+  }
+  else {
+    $form['#attributes']['class'][] = drupal_clean_css_identifier($form_id);
+  }
 }
 
 /**
-- 
2.6.4 (Apple Git-63)

