jquery_scrollup-8.x-1.0/jquery_scrollup.module

jquery_scrollup.module
<?php

/**
 * Implements hook_page_attachments().
 */
function jquery_scrollup_page_attachments(array &$attachments) {
  $settings = \Drupal::config('jquery_scrollup.settings')->get();

  // Alter configuration settings.
  \Drupal::moduleHandler()->alter('jquery_scrollup_js_settings', $settings);

  if ($settings['preventOnMobile'] && (is_mobile())) {
    return FALSE;
  }
  if ($settings['preventOnAdminPages'] && (is_adminpage())) {
    return FALSE;
  }
  if ($settings['preventOnFrontPage'] && (\Drupal::service('path.matcher')
      ->isFrontPage())
  ) {
    return FALSE;
  }

  // If here: we know we have to include the jquery_scrollup.
  $attachments['#attached']['library'][] = 'jquery_scrollup/jquery_scrollup';
  $attachments['#attached']['drupalSettings']['jquery_scrollup'] = $settings;
  $attachments['#cache']['tags'] = ['jquery_scrollup'];

  $style = $style_icon = $style_hover = $style_icon_hover = '';
  switch ($settings['buttonType']) {
    case 'icon':
      $style_icon .= !empty($settings['buttonColor']) ? "background-color: ${settings['buttonColor']}; " : '';
      $style_icon_hover .= !empty($settings['buttonColorHover']) ? "background-color: ${settings['buttonColorHover']}; " : '';
      $style .= !empty($settings['buttonBgColor']) ? "background-color: ${settings['buttonBgColor']}; " : '';
      $style_hover .= !empty($settings['buttonBgColorHover']) ? "background-color: ${settings['buttonBgColorHover']}; " : '';
      break;
    case 'pill':
      $style .= !empty($settings['buttonColor']) ? "color: ${settings['buttonColor']}; " : '';
      $style .= !empty($settings['buttonBgColor']) ? "background-color: ${settings['buttonBgColor']}; " : '';
      $style_hover .= !empty($settings['buttonColorHover']) ? "color: ${settings['buttonColorHover']}; " : '';
      $style_hover .= !empty($settings['buttonBgColorHover']) ? "background-color: ${settings['buttonBgColorHover']}; " : '';
      break;
    case 'tab':
      $style .= !empty($settings['buttonColor']) ? "color: ${settings['buttonColor']}; " : '';
      $style .= !empty($settings['buttonBgColor']) ? "background: ${settings['buttonBgColor']}; " : '';
      $style_hover .= !empty($settings['buttonColorHover']) ? "color: ${settings['buttonColorHover']}; " : '';
      $style_hover .= !empty($settings['buttonBgColorHover']) ? "background: ${settings['buttonBgColorHover']}; " : '';
      break;
    default:
      break;
  }


  // Add some custom CSS depending on configurations.
  if (!empty($style)) {
    $attachments['#attached']['html_head'][] = [
      [
        '#tag' => 'style',
        '#value' => "#scrollUp { $style }",
      ],
      'style',
    ];
  }
  if (!empty($style_hover)) {
    $attachments['#attached']['html_head'][] = [
      [
        '#tag' => 'style',
        '#value' => '#scrollUp:hover {' . $style_hover . '}',
      ],
      'style_hover',
    ];
  }
  if (!empty($style_icon)) {
    $attachments['#attached']['html_head'][] = [
      [
        '#tag' => 'style',
        '#value' => "#scrollUp:after { $style_icon }",
      ],
      'style_icon',
    ];
  }
  if (!empty($style_icon_hover)) {
    $attachments['#attached']['html_head'][] = [
      [
        '#tag' => 'style',
        '#value' => "#scrollUp:hover:after { $style_icon_hover }",
      ],
      'style_icon_hover',
    ];
  }

  return TRUE;
}

/**
 * Check if mobile or touch device with PHP so javascript and css isn't
 * included in that case.
 */
function is_mobile() {
  // Check for mobile device using Browscap module if it is available.
  if (\Drupal::moduleHandler()->moduleExists('browscap')) {
    $browser = \Drupal::service('browscap')->getBrowser();
    if (isset($browser['ismobiledevice']) && $browser['ismobiledevice'] == 1) {
      return TRUE;
    }
  }

  if (isset($_SERVER["HTTP_X_WAP_PROFILE"])) {
    return TRUE;
  }
  if (isset($_SERVER["HTTP_ACCEPT"]) && preg_match("/wap\.|\.wap/i", $_SERVER["HTTP_ACCEPT"])) {
    return TRUE;
  }
  if (isset($_SERVER["HTTP_USER_AGENT"])) {
    $user_agents = [
      "midp",
      "j2me",
      "iphone",
      "avantg",
      "docomo",
      "novarra",
      "palmos",
      "palmsource",
      "240x320",
      "opwv",
      "chtml",
      "pda",
      "windows\ ce",
      "mmp\/",
      "blackberry",
      "mib\/",
      "symbian",
      "wireless",
      "nokia",
      "hand",
      "mobi",
      "phone",
      "cdm",
      "up\.b",
      "audio",
      "sie\-",
      "sec\-",
      "samsung",
      "htc",
      "mot\-",
      "mitsu",
      "sagem",
      "sony",
      "alcatel",
      "lg",
      "erics",
      "vx",
      "^nec",
      "philips",
      "mmm",
      "xx",
      "panasonic",
      "sharp",
      "wap",
      "sch",
      "rover",
      "pocket",
      "benq",
      "java",
      "pt",
      "pg",
      "vox",
      "amoi",
      "bird",
      "compal",
      "kg",
      "voda",
      "sany",
      "kdd",
      "dbt",
      "sendo",
      "sgh",
      "gradi",
      "jb",
      "\d\d\di",
      "moto",
      "ipad",
      "android",
      "ipod",
      "webos",
    ];

    foreach ($user_agents as $user_string) {
      if (preg_match("/" . $user_string . "/i", strtolower($_SERVER["HTTP_USER_AGENT"]))) {
        return TRUE;
      }
    }
  }
  return FALSE;
}

/**
 * Check if page viewed is in admin section or a node/edit for possible option
 * to not include javascript and css in that case.
 */
function is_adminpage() {
  $route = \Drupal::routeMatch()->getRouteObject();
  $is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);

  // Alter for admin prevent check.
  \Drupal::moduleHandler()->alter('jquery_scrollup_admin_prevent', $is_admin);

  return $is_admin;
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc