bs_lib-8.x-1.0-alpha3/bs_lib.install

bs_lib.install
<?php

/**
 * @file
 * Installation and update functions for the BS Lib module.
 */

/**
 * Implements hook_requirements().
 */
function bs_lib_requirements($phase) {
  $requirements = [];

  if ($phase != 'runtime') {
    return $requirements;
  }

  // Check that Bootstrap library exist and it is of correct type.

  // Bootstrap 4 library check.
  $severity = REQUIREMENT_OK;
  $value = t('Installed');
  $description = '';
  if (!bs_lib_library_resource_exist('bootstrap', 'dist/js/bootstrap.min.js')) {
    $severity = REQUIREMENT_ERROR;
    $value = t('Not installed');
    $description = t('The <a href=":url">Bootstrap 4 library</a> should be installed in <strong>/libraries</strong> folder. See README.md in bs_lib module for additional instructions.', [':url' => 'https://github.com/twbs/bootstrap/releases']);
  }
  else {
    // Check that library type is source code and not distribution.
    if (!bs_lib_library_resource_exist('bootstrap', 'js/dist/alert.js')) {
      $severity = REQUIREMENT_ERROR;
      $value = t('Installed but type is not a source code');
      $description = t('The <a href=":url">Bootstrap 4 library</a> is installed in <strong>/libraries</strong> folder. However the type of library is wrong, please make sure to download source code version of a library. See README.md in <em>bs_lib</em> module for additional instructions.', [':url' => 'https://github.com/twbs/bootstrap/releases']);
    }
  }
  $requirements['bs_lib_library'] = [
    'title' => t('BS Lib: Bootstrap 4 library'),
    'description' => $description,
    'severity' => $severity,
    'value' => $value,
  ];

  // Check that Popper.js library exist.
  if (!bs_lib_library_resource_exist('popper', 'dist/umd/popper.min.js')) {
    $requirements['bs_lib_popper_library'] = [
      'title' => t('BS Lib: Popper.js library'),
      'description' => t('The <a href=":url">Popper.js library</a> should be installed in <strong>/libraries</strong> folder. See README.md in bs_lib module for additional instructions.', [':url' => 'https://github.com/FezVrasta/popper.js/releases']),
      'severity' => REQUIREMENT_ERROR,
      'value' => t('Not installed'),
    ];
  }
  else {
    $requirements['bs_lib_popper_library'] = [
      'title' => t('BS Lib: Popper.js library'),
      'description' => '',
      'severity' => REQUIREMENT_OK,
      'value' => t('Installed'),
    ];
  }

  // Check that Jasny Bootstrap library exist.
  if (!bs_lib_library_resource_exist('jasny-bootstrap', 'js/offcanvas.js')) {
    $requirements['bs_lib_jasny_bootstrap_library'] = [
      'title' => t('BS Lib: Jasny Bootstrap library'),
      'description' => t('The <a href=":url">Jasny Bootstrap library</a> should be installed in <strong>/libraries</strong> folder. You will not be able to use offcanvas navigation bar feature. See README.md in bs_lib module for additional instructions.', [':url' => 'https://github.com/jasny/bootstrap/releases/']),
      'severity' => REQUIREMENT_WARNING,
      'value' => t('Not installed'),
    ];
  }
  else {
    $requirements['bs_lib_jasny_bootstrap_library'] = [
      'title' => t('BS Lib: Jasny Bootstrap library'),
      'description' => '',
      'severity' => REQUIREMENT_OK,
      'value' => t('Installed'),
    ];
  }

  return $requirements;
}

/**
 * Check does resource exist in a given library.
 *
 * @param string $name
 *   Library name.
 * @param string $resource_path
 *   Resource path in a library.
 *
 * @return bool true if the resource exist and is a regular file, false
 *   otherwise.
 */
function bs_lib_library_resource_exist($name, $resource_path) {
  if (\Drupal::hasService('library.libraries_directory_file_finder')) {
    /** @var \Drupal\Core\Asset\LibrariesDirectoryFileFinder $library_file_finder */
    $library_file_finder = \Drupal::service('library.libraries_directory_file_finder');
    $path = $library_file_finder->find($name . '/' . $resource_path);
  }
  // @todo remove libraries support once we require Drupal Core 8.9+.
  elseif (\Drupal::moduleHandler()->moduleExists('libraries')) {
    $path = libraries_get_path($name) . '/' . $resource_path;
  }
  else {
    $path =  DRUPAL_ROOT . "/libraries/$name/$resource_path";
  }

  return is_file($path);
}

/**
 * Add new bs_lib.settings anchor_scroll to active configuration.
 */
function bs_lib_update_8001() {
  $config_factory = \Drupal::configFactory();
  $config = $config_factory->getEditable('bs_lib.settings');
  $config->set('anchor_scroll', [
    'enable' => FALSE,
    'offset' => 10,
    'exclude_links' => ['[href="#"]', '.visually-hidden', '.bs-lib-scroll-to-top'],
    'fixed_elements' => ['.toolbar-bar', '.toolbar-tray.is-active.toolbar-tray-horizontal'],
  ]);
  $config->save(TRUE);
}

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

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