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

address.module
<?php

/**
 * @file
 * Provides functionality for handling postal addresses.
 */

use Drupal\address\AddressInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Field\FieldTypeCategoryManagerInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;

/**
 * Implements hook_theme().
 */
function address_theme() {
  return [
    'address_plain' => [
      'variables' => [
        'given_name' => '',
        'additional_name' => '',
        'family_name' => '',
        'organization' => '',
        'address_line1' => '',
        'address_line2' => '',
        'address_line3' => '',
        'postal_code' => '',
        'sorting_code' => '',
        'dependent_locality' => [],
        'locality' => [],
        'administrative_area' => [],
        'country' => [],
        'address' => NULL,
        'view_mode' => '',
      ],
    ],
  ];
}

/**
 * Implements hook_theme_suggestions_HOOK().
 */
function address_theme_suggestions_address_plain(array $variables) {
  $suggestions = [];
  if (!empty($variables['address']) && $variables['address'] instanceof AddressInterface) {
    $original = $variables['theme_hook_original'] . '__';
    $field = $variables['address']->getFieldDefinition();
    $entity_type_id = $field->getTargetEntityTypeId();
    $bundle = $field->getTargetBundle();
    $sanitized_view_mode = strtr($variables['view_mode'], '.', '_');

    $suggestions[] = $original . $entity_type_id . '__' . $sanitized_view_mode;
    $suggestions[] = $original . $entity_type_id . '__' . $bundle;
    $suggestions[] = $original . $entity_type_id . '__' . $bundle . '__' . $sanitized_view_mode;
    $suggestions[] = $original . $field->getName();
    $suggestions[] = $original . $entity_type_id . '__' . $field->getName();
    $suggestions[] = $original . $entity_type_id . '__' . $field->getName() . '__' . $bundle;
  }

  return $suggestions;
}

/**
 * Updates the given entity's field for the RC1 changes.
 *
 * @param \Drupal\Core\Entity\EntityInterface $entity
 *   The entity.
 * @param string $field_name
 *   The name of the field to update.
 */
function _address_update_entity(EntityInterface $entity, $field_name) {
  $update_helper = '\CommerceGuys\Addressing\UpdateHelper';
  foreach ($entity->{$field_name} as $address) {
    $names = $update_helper::splitRecipient($address->given_name, $address->country_code);
    $address->given_name = $names['givenName'];
    $address->family_name = $names['familyName'];
    // Now update the subdivisions.
    $address->administrative_area = $update_helper::updateSubdivision($address->administrative_area);
    $address->locality = $update_helper::updateSubdivision($address->locality);
    $address->dependent_locality = $update_helper::updateSubdivision($address->dependent_locality);
  }
}

/**
 * Implements hook_module_implements_alter() for hook_tokens.
 */
function address_module_implements_alter(&$implementations, $hook) {
  if ($hook == 'tokens') {
    $group = $implementations['address'];
    unset($implementations['address']);
    $implementations['address'] = $group;
  }
}

/**
 * Implements hook_field_info_alter().
 *
 * @todo Remove once minimum version supported is at least 10.2.0.
 */
function address_field_info_alter(&$info) {
  // Allow module to work with versions of older versions of Drupal.
  if (\version_compare(\Drupal::VERSION, '10.1.9999', '<')) {
    $info['address']['category'] = new TranslatableMarkup("Address");
    $info['address_country']['category'] = new TranslatableMarkup("Address");
    $info['address_zone']['category'] = new TranslatableMarkup("Address");
  }
}

/**
 * Implements hook_field_type_category_info_alter().
 */
function address_field_type_category_info_alter(&$definitions) {
  $definitions[FieldTypeCategoryManagerInterface::FALLBACK_CATEGORY]['libraries'][] = 'address/field-icon';
}

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

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