You are here

noscript_tag.module in Noscript Tag 8

Same filename and directory in other branches
  1. 7 noscript_tag.module

Adds functionality to display noscript tag when javascript is disabled.

File

noscript_tag.module
View source
<?php

/**
 * @file
 * Adds functionality to display noscript tag when javascript is disabled.
 */
use Drupal\Core\Url;
use Drupal\Core\Link;
use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function noscript_tag_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {

    // Main module help for the noscript module.
    case 'help.page.noscript_tag':

      // Configuration page link generation.
      $noscript_tag_route = Url::fromRoute('noscript_tag.settings');
      $configure_link = Link::fromTextAndUrl(t('Manage noscript tag setting'), $noscript_tag_route);
      $configure_settings = $configure_link
        ->toRenderable();
      $configure_settings = render($configure_settings);

      // Permissions page link.
      $options = [
        'fragment' => 'module-noscript_tag',
      ];
      $permissions_route = Url::fromRoute('user.admin_permissions', [], $options);
      $permissions_link = Link::fromTextAndUrl(t('here'), $permissions_route);
      $permissions_settings = $permissions_link
        ->toRenderable();
      $permissions_settings = render($permissions_settings);

      // Manage noscript tag setting.
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('This module displays noscript tag when javascript is disabled in users browser.') . '</p>';
      $output .= '<p>' . t('Site admin can configure what content to be displayed in the noscript tag.') . '</p>';
      $output .= '<p>' . t('Site admin can @manage-noscript-tag.', [
        '@manage-noscript-tag' => $configure_settings,
      ]) . '</p>';
      $output .= '<p>' . t('The noscript tag will be displayed only to user roles who have permission to view the noscript tag. You can configure the permissions @manage-noscript-tag-permissions.', [
        '@manage-noscript-tag-permissions' => $permissions_settings,
      ]) . '</p>';
      return $output;
  }
}

/**
 * Implements hook_page_attachments().
 */
function noscript_tag_page_attachments(array &$attachments) {

  // If the user has view permission, Add CSS.
  if (\Drupal::currentUser()
    ->hasPermission('view noscript tag')) {

    // Add css.
    $attachments['#attached']['library'][] = 'noscript_tag/noscript_tag';
  }
}

/**
 * Implements hook_page_top().
 */
function noscript_tag_page_top(array &$page_top) {

  // If the user has view permission, Append the noscript HTML to page Top.
  if (\Drupal::currentUser()
    ->hasPermission('view noscript tag')) {

    // Get config.
    $noscript_tag_config = \Drupal::config('noscript_tag.settings');

    // Get value from config.
    $noscript_tag_value = $noscript_tag_config
      ->get('noscript_tag_value');

    // Get format from config.
    $noscript_tag_format = $noscript_tag_config
      ->get('noscript_tag_format');

    // Format Markup.
    $markup = check_markup($noscript_tag_value, $noscript_tag_format);

    // Add html to page top.
    $page_top = [
      'noscript_tag' => [
        '#type' => 'html_tag',
        '#tag' => 'p',
        '#noscript' => TRUE,
        '#value' => $markup,
      ],
    ];
  }
}