Commit 00613c90 authored by catch's avatar catch

Issue #1770172 by netsensei, webflo, sun, linclark: Convert email module...

Issue #1770172 by netsensei, webflo, sun, linclark: Convert email module widgets and formatters to Plugin system.
parent 6a56a907
......@@ -4,4 +4,3 @@ package = Core
version = VERSION
core = 8.x
dependencies[] = field
dependencies[] = text
......@@ -27,72 +27,32 @@ function email_field_info() {
'label' => t('E-mail'),
'description' => t('This field stores an e-mail address in the database.'),
'default_widget' => 'email_default',
'default_formatter' => 'text_plain',
'default_formatter' => 'email_mailto',
),
);
}
/**
* Implements hook_field_is_empty().
*/
function email_field_is_empty($item, $field) {
return !isset($item['value']) || $item['value'] === '';
}
/**
* Implements hook_field_widget_info().
*/
function email_field_widget_info() {
return array(
'email_default' => array(
'label' => t('E-mail'),
'field types' => array('email'),
),
);
}
/**
* Implements hook_field_widget_form().
* Implements hook_field_info_alter().
*/
function email_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
$element['value'] = $element + array(
'#type' => 'email',
'#default_value' => isset($items[$delta]['value']) ? $items[$delta]['value'] : NULL,
);
return $element;
function email_field_info_alter(&$info) {
if (module_exists('text')) {
$info['email']['default_formatter'] = 'text_plain';
}
}
/**
* Implements hook_field_formatter_info().
* Implements hook_field_is_empty().
*/
function email_field_formatter_info() {
return array(
'email_mailto' => array(
'label' => t('Mailto link'),
'field types' => array('email'),
),
);
function email_field_is_empty($item, $field) {
return !isset($item['value']) || $item['value'] === '';
}
/**
* Implements hook_field_formatter_info_alter().
*/
function email_field_formatter_info_alter(&$info) {
$info['text_plain']['field types'][] = 'email';
}
/**
* Implements hook_field_formatter_view().
*/
function email_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#type' => 'link',
'#title' => $item['value'],
'#href' => 'mailto:' . $item['value'],
);
if (isset($info['text_plain'])) {
$info['text_plain']['field_types'][] = 'email';
}
return $element;
}
<?php
/**
* @file
* Definition of Drupal\email\Plugin\field\formatter\MailToFormatter.
*/
namespace Drupal\email\Plugin\field\formatter;
use Drupal\Core\Annotation\Plugin;
use Drupal\Core\Annotation\Translation;
use Drupal\field\Plugin\Type\Formatter\FormatterBase;
use Drupal\Core\Entity\EntityInterface;
/**
* Plugin implementation of the 'email_mailto' formatter.
*
* @Plugin(
* id = "email_mailto",
* module = "email",
* label = @Translation("Email"),
* field_types = {
* "email"
* }
* )
*/
class MailToFormatter extends FormatterBase {
/**
* Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::viewElements().
*/
public function viewElements(EntityInterface $entity, $langcode, array $items) {
$elements = array();
foreach ($items as $delta => $item) {
$elements[$delta] = array(
'#type' => 'link',
'#title' => $item['value'],
'#href' => 'mailto:' . $item['value'],
);
}
return $elements;
}
}
<?php
/**
* @file
* Definition of Drupal\email\Plugin\field\widget\EmailDefaultWidget.
*/
namespace Drupal\email\Plugin\field\widget;
use Drupal\Core\Annotation\Plugin;
use Drupal\Core\Annotation\Translation;
use Drupal\field\Plugin\Type\Widget\WidgetBase;
/**
* Plugin implementation of the 'email_default' widget.
*
* @Plugin(
* id = "email_default",
* module = "email",
* label = @Translation("E-mail"),
* field_types = {
* "email"
* }
* )
*/
class EmailDefaultWidget extends WidgetBase {
/**
* Implements Drupal\field\Plugin\Type\Widget\WidgetInterface::formElement().
*/
public function formElement(array $items, $delta, array $element, $langcode, array &$form, array &$form_state) {
$element['value'] = $element + array(
'#type' => 'email',
'#default_value' => isset($items[$delta]['value']) ? $items[$delta]['value'] : NULL,
);
return $element;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment