Same name and namespace in other branches
  1. 8.x-1.x fitvids.module \fitvids_page_attachments() 1 comment

Implements hook_page_attachments() to insert JavaScript to the appropriate scope/region of the page.

File

./fitvids.module, line 51

Code

function fitvids_page_attachments(array &$page) {
    // Get config variables
    $config = \Drupal::config('fitvids.settings');
    $selectors = $config->get('selectors');
    $custom_vendors = $config->get('custom_vendors');
    $ignore_selectors = $config->get('ignore_selectors');
    // Get video containers
    $selectors_for_js = implode(',', explode(PHP_EOL, $selectors));
    $custom_vendors_for_js = [];
    $custom_vendors_for_js[] = 'iframe[src^="https://youtu.be"]';
    // Get custom vendor iframes
    if (strlen(trim($custom_vendors))) {
        foreach (explode(PHP_EOL, $custom_vendors) as $value) {
            $custom_vendors_for_js[] = 'iframe[src^="' . trim($value) . '"]';
        }
        $custom_vendors_for_js = implode(',', $custom_vendors_for_js);
    }
    // Get ignored containers
    $ignore_selectors_for_js = implode(',', explode(PHP_EOL, $ignore_selectors));
    // Export settings
    $page['#attached']['drupalSettings']['fitvids']['selectors'] = $selectors_for_js;
    $page['#attached']['drupalSettings']['fitvids']['custom_vendors'] = $custom_vendors_for_js;
    $page['#attached']['drupalSettings']['fitvids']['ignore_selectors'] = $ignore_selectors_for_js;
    // Attach libraries
    $page['#attached']['library'][] = 'fitvids/fitvids';
    $page['#attached']['library'][] = 'fitvids/init';
}