Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 38 |
| TelephoneLinkFormatter | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
72 | |
0.00% |
0 / 38 |
| defaultSettings | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| settingsForm | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
| settingsSummary | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 10 |
|||
| viewElements | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 17 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\telephone\Plugin\Field\FieldFormatter\TelephoneLinkFormatter. | |
| */ | |
| namespace Drupal\telephone\Plugin\Field\FieldFormatter; | |
| use Drupal\Core\Field\FormatterBase; | |
| use Drupal\Core\Field\FieldItemListInterface; | |
| use Drupal\Core\Form\FormStateInterface; | |
| use Drupal\Core\Url; | |
| /** | |
| * Plugin implementation of the 'telephone_link' formatter. | |
| * | |
| * @FieldFormatter( | |
| * id = "telephone_link", | |
| * label = @Translation("Telephone link"), | |
| * field_types = { | |
| * "telephone" | |
| * } | |
| * ) | |
| */ | |
| class TelephoneLinkFormatter extends FormatterBase { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function defaultSettings() { | |
| return array( | |
| 'title' => '', | |
| ) + parent::defaultSettings(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function settingsForm(array $form, FormStateInterface $form_state) { | |
| $elements['title'] = array( | |
| '#type' => 'textfield', | |
| '#title' => t('Title to replace basic numeric telephone number display'), | |
| '#default_value' => $this->getSetting('title'), | |
| ); | |
| return $elements; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function settingsSummary() { | |
| $summary = array(); | |
| $settings = $this->getSettings(); | |
| if (!empty($settings['title'])) { | |
| $summary[] = t('Link using text: @title', array('@title' => $settings['title'])); | |
| } | |
| else { | |
| $summary[] = t('Link using provided telephone number.'); | |
| } | |
| return $summary; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function viewElements(FieldItemListInterface $items, $langcode) { | |
| $element = array(); | |
| $title_setting = $this->getSetting('title'); | |
| foreach ($items as $delta => $item) { | |
| // Render each element as link. | |
| $element[$delta] = array( | |
| '#type' => 'link', | |
| // Use custom title if available, otherwise use the telephone number | |
| // itself as title. | |
| '#title' => $title_setting ?: $item->value, | |
| // Prepend 'tel:' to the telephone number. | |
| '#url' => Url::fromUri('tel:' . rawurlencode(preg_replace('/\s+/', '', $item->value))), | |
| '#options' => array('external' => TRUE), | |
| ); | |
| if (!empty($item->_attributes)) { | |
| $element[$delta]['#options'] += array('attributes' => array()); | |
| $element[$delta]['#options']['attributes'] += $item->_attributes; | |
| // Unset field item attributes since they have been included in the | |
| // formatter output and should not be rendered in the field template. | |
| unset($item->_attributes); | |
| } | |
| } | |
| return $element; | |
| } | |
| } |