linkicon-8.x-1.x-dev/linkicon.module

linkicon.module
<?php

/**
 * @file
 * A link field formatter to create icon classes based on predefined titles.
 */

use Drupal\Core\Form\FormStateInterface;
use Drupal\linkicon\LinkIconManagerInterface;

/**
 * Provides a convenient shortcut for procedural hooks.
 *
 * @return \Drupal\linkicon\LinkIconManager
 *   The Linkicon manager class instance.
 */
// @codingStandardsIgnoreStart
function linkicon() {
  static $manager;

  if (!isset($manager)) {
    $manager = \Drupal::service('linkicon.manager');
  }

  return $manager;
}
// @codingStandardsIgnoreEnd

/**
 * Implements hook_theme().
 */
function linkicon_theme() {
  return [
    'linkicon' => [
      'render element' => 'element',
      'file' => 'linkicon.theme.inc',
    ],
    'linkicon_item' => [
      'render element' => 'element',
      'file' => 'linkicon.theme.inc',
    ],
  ];
}

/**
 * Implements hook_library_info_build().
 */
function linkicon_library_info_build() {
  return linkicon()->libraryInfoBuild();
}

/**
 * Implements hook_field_info_alter().
 */
function linkicon_field_info_alter(&$info) {
  if (isset($info['link'])) {
    $info['link']['class'] = '\Drupal\linkicon\LinkIconItem';
  }
}

/**
 * Implements hook_preprocess_field().
 */
function linkicon_preprocess_field(array &$variables) {
  $element = $variables['element'];
  if (!$variables['label_hidden'] && isset($variables['title_attributes'])) {
    $config = isset($element[0], $element[0]['#config']) ? $element[0]['#config'] : [];
    if (!empty($config['label_class'])) {
      $variables['title_attributes']['class'][] = trim($config['label_class']);
    }
  }
}

/**
 * Implements hook_field_widget_single_element_WIDGET_TYPE_form_alter().
 */
function linkicon_field_widget_single_element_link_default_form_alter(&$element, FormStateInterface $form_state, $context) {
  if (isset($element['uri']) && isset($element['title'])) {
    $items = $context['items'];
    // @todo drop 'predefined' for the new integer: LINKICON_PREDEFINED.
    $predefined = $items->getSetting('title') === LinkIconManagerInterface::LINKICON_PREDEFINED || $items->getSetting('title') === 'predefined';
    if ($predefined && ($title_predefined = $items->getSetting('title_predefined')) !== NULL) {
      $options = linkicon()->extractAllowedValues($title_predefined);
      $element['title']['#type'] = 'select';
      $element['title']['#options'] = $options;
      $element['title']['#empty_option'] = t('- Select -');
      $element['title']['#access'] = TRUE;
      $element['#element_validate'] = ['\Drupal\linkicon\LinkIconItem::elementValidateLinkIcon'];
    }
  }
}

/**
 * Implements hook_help().
 */
function linkicon_help($route_name) {
  if ($route_name == 'help.page.linkicon') {
    $output = file_get_contents(dirname(__FILE__) . '/README.md');

    if (function_exists('blazy')) {
      $blazy = blazy();
      if (method_exists($blazy, 'markdown')) {
        return $blazy->markdown($output);
      }
    }

    return '<pre>' . $output . '</pre>';
  }
  return '';
}

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

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