diff --git a/addressfield_phone.info b/addressfield_phone.info index b3251a4..72db7f5 100644 --- a/addressfield_phone.info +++ b/addressfield_phone.info @@ -5,3 +5,6 @@ package = Fields dependencies[] = ctools dependencies[] = addressfield + +; Views FIELD handlers +files[] = views/handlers/addressfield_phone_handler_field_address_phone_nr.inc \ No newline at end of file diff --git a/addressfield_phone.module b/addressfield_phone.module index 4ea020f..826834a 100644 --- a/addressfield_phone.module +++ b/addressfield_phone.module @@ -124,3 +124,12 @@ function _addressfield_phone_render_address($format) { return $format; } +/** + * Implements hook_views_api(). + */ +function addressfield_phone_views_api() { + return array( + 'api' => 3, + 'path' => drupal_get_path('module', 'addressfield_phone') . '/views', + ); +} diff --git a/views/addressfield_phone.views.inc b/views/addressfield_phone.views.inc new file mode 100644 index 0000000..a0ec738 --- /dev/null +++ b/views/addressfield_phone.views.inc @@ -0,0 +1,29 @@ + $table) { + $field_name = $field['field_name']; + $field_title = $result[$table_name][$field_name]['title']; + $group = $result[$table_name][$field_name]['group']; + $title = $field_title . ' - Address PHONE numbers'; + $help = $result[$table_name][$field_name . '_data']['help'] . '. + Address field PHONE numbers from ' . $field_name . + ' field : phone_number, phone_number_extension, + mobile_number, fax_number'; + $result[$table_name]['table']['group'] = t('Address Phones'); + $result[$table_name][$field_name . '_data'] = array( + 'group' => $group, + 'title' => $title, + 'help' => $help, + 'field' => array( + 'handler' => 'addressfield_phone_handler_field_address_phone_nr', + 'click sortable' => TRUE, + ) + ); + } + } // if +} diff --git a/views/handlers/addressfield_phone_handler_field_address_phone_nr.inc b/views/handlers/addressfield_phone_handler_field_address_phone_nr.inc new file mode 100644 index 0000000..a237417 --- /dev/null +++ b/views/handlers/addressfield_phone_handler_field_address_phone_nr.inc @@ -0,0 +1,70 @@ + 3, 'bool' => TRUE); + + return $options; + } + + /** + * Link to Addressfiels phone fileld option form. + */ + public function options_form(&$form, &$form_state) { + $form['selected_phone_type'] = array( + '#type' => 'select', + '#title' => t('Phone nr type'), + '#options' => array( + 1 => t('phone_number'), + 2 => t('phone_number_extension'), + 3 => t('mobile_number'), + 4 => t('fax_number'), + ), + '#default_value' => $this->options['selected_phone_type'], + '#description' => t('Address field contain phone numbers. Have to select one from them.'), + ); + + parent::options_form($form, $form_state); + } + + /** + * Render the addresfields phone field. + */ + public function render($values) { + $phoneNrs = unserialize($this->get_value($values)); + $phone_number = $phoneNrs['phone_number']; + $phone_number_extension = $phoneNrs['phone_number_extension']; + $mobile_number = $phoneNrs['mobile_number']; + $fax_number = $phoneNrs['fax_number']; + switch ($this->options['selected_phone_type']) { + case 1: + return $phone_number; + break; + case 2: + return $phone_number_extension; + break; + case 3: + return $mobile_number; + break; + case 4: + return $fax_number; + break; + } + } + +}