diff --git a/email.module b/email.module index 8aaa1fd..5cd51ef 100644 --- a/email.module +++ b/email.module @@ -73,6 +73,9 @@ function email_field_formatter_info() { 'label' => t('Email contact form'), 'description' => t('Display a contact form.'), 'field types' => array('email'), + 'settings' => array( + 'text' => t('Contact person by email'), + ), ), 'email_plain' => array( 'label' => t('Email plain text'), @@ -92,10 +95,50 @@ function email_field_formatter_info() { } /** + * Implements hook_field_formatter_settings_form(). + */ +function email_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) { + $display = $instance['display'][$view_mode]; + $settings = $display['settings']; + + $element = array(); + + if ($display['type'] == 'email_contact') { + $element['text'] = array( + '#title' => t('Link text'), + '#type' => 'textfield', + '#size' => 60, + '#default_value' => $settings['text'], + '#required' => TRUE, + ); + } + + return $element; +} + +/** + * Implements hook_field_formatter_settings_summary(). + */ +function email_field_formatter_settings_summary($field, $instance, $view_mode) { + $display = $instance['display'][$view_mode]; + $settings = $display['settings']; + + $summary = ''; + + if ($display['type'] == 'email_contact') { + $summary = t('Text: @text', array('@text' => $settings['text'])); + } + + return $summary; +} + +/** * Implements hook_field_formatter_view(). */ function email_field_formatter_view($object_type, $object, $field, $instance, $langcode, $items, $display) { $element = array(); + $settings = $display['settings']; + switch ($display['type']) { case 'email_default': foreach ($items as $delta => $item) { @@ -107,7 +150,7 @@ function email_field_formatter_view($object_type, $object, $field, $instance, $l case 'email_contact': $ids = entity_extract_ids($object_type, $object); foreach ($items as $delta => $item) { - $element[$delta] = array('#markup' => l(t('Contact person by email'), 'email/' . $object_type . '/' . $ids[0] . '/' . $instance['field_name'])); + $element[$delta] = array('#markup' => l($settings['text'], 'email/' . $object_type . '/' . $ids[0] . '/' . $instance['field_name'])); // Since email is always sent to first item's email, break after any email address found. break; }