international_phone.module in International Phone Field 7.2
Same filename and directory in other branches
Defines a field for attaching international phone fields to entities.
File
international_phone.moduleView source
<?php
/**
* @file
* Defines a field for attaching international phone fields to entities.
*/
/**
* Implements hook_field_info().
*/
function international_phone_field_info() {
return array(
'international_phone' => array(
'label' => t('International Phone'),
'instance_settings' => array(
'international_phone_country_code' => 0,
'international_phone_default_country_code' => '1',
'international_phone_int_max_length' => 15,
),
'default_formatter' => 'international_phone',
'default_widget' => 'international_phone_textfield',
'property_type' => 'text',
),
);
}
/**
* Implements hook_field_is_empty().
*/
function international_phone_field_is_empty($item, $field) {
return empty($item['value']);
}
/**
* Implements hook_field_formatter_info().
*/
function international_phone_field_formatter_info() {
return array(
'international_phone' => array(
'label' => t('Default'),
'field types' => array(
'international_phone',
),
),
);
}
/**
* Implements hook_field_formatter_view().
*/
function international_phone_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
foreach ($items as $delta => $item) {
$text = '';
if (isset($item['value'])) {
$text = check_plain($item['value']);
// iPhone Support.
if (strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== FALSE) {
$text = '<a href="tel:' . $text . '">' . $text . '</a>';
}
}
$element[$delta]['#markup'] = $text;
$element['#attached']['libraries_load'][] = array(
'intl-tel-input',
);
$element['#attached']['js'][] = array(
'type' => 'setting',
'data' => array(
'internationalPhone' => array(
'utilsScriptPath' => libraries_get_path('intl-tel-input') . '/build/js/utils.js',
'defaultCountryCode' => $instance->settings->international_phone_default_country_code,
),
),
);
$element['#attached']['js'][] = array(
'type' => 'file',
'data' => drupal_get_path('module', 'international_phone') . '/js/international_phone.js',
);
}
return $element;
}
/**
* Implements hook_field_widget_info().
*/
function international_phone_field_widget_info() {
return array(
'international_phone_textfield' => array(
'label' => t('Text field'),
'field types' => array(
'international_phone',
),
),
);
}
/**
* Implements hook_field_widget_form().
*/
function international_phone_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
$element['value'] = array(
'#type' => 'textfield',
'#title' => check_plain($element['#title']),
'#description' => check_plain($element['#description']),
'#default_value' => isset($items[$delta]['value']) ? $items[$delta]['value'] : '',
'#required' => $element['#required'],
'#size' => 17,
'#attributes' => array(
'class' => array(
'international_phone-number',
),
),
'#attached' => array(
'libraries_load' => array(
array(
'intl-tel-input',
),
),
'js' => array(
array(
'type' => 'setting',
'data' => array(
'internationalPhone' => array(
'utilsScriptPath' => libraries_get_path('intl-tel-input') . '/build/js/utils.js',
'defaultCountryCode' => $instance->settings->international_phone_default_country_code,
),
),
),
array(
'type' => 'file',
'data' => drupal_get_path('module', 'international_phone') . '/js/international_phone.js',
),
),
),
);
return $element;
}
/**
* Implements hook_libraries_info().
*/
function international_phone_libraries_info() {
$libraries['intl-tel-input'] = array(
'name' => 'International Phone Input',
'vendor url' => 'https://github.com/jackocnr/intl-tel-input',
'download url' => 'https://github.com/jackocnr/intl-tel-input/archive/v9.2.0.tar.gz',
'version arguments' => array(
'file' => 'package.json',
'pattern' => '/"version": "(\\d+\\.\\d+\\.\\d+)"/',
// 9.2.0
'lines' => 7,
),
'files' => array(
'css' => array(
'build/css/intlTelInput.css',
),
'js' => array(
'build/js/intlTelInput.js',
),
),
'variants' => array(
'minified' => array(
'files' => array(
'js' => array(
'build/js/intlTelInput.min.js',
),
),
),
),
);
return $libraries;
}
Functions
Name | Description |
---|---|
international_phone_field_formatter_info | Implements hook_field_formatter_info(). |
international_phone_field_formatter_view | Implements hook_field_formatter_view(). |
international_phone_field_info | Implements hook_field_info(). |
international_phone_field_is_empty | Implements hook_field_is_empty(). |
international_phone_field_widget_form | Implements hook_field_widget_form(). |
international_phone_field_widget_info | Implements hook_field_widget_info(). |
international_phone_libraries_info | Implements hook_libraries_info(). |