Index: addresses.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/addresses/addresses.inc,v retrieving revision 1.66 diff -u -p -r1.66 addresses.inc --- addresses.inc 21 Sep 2010 01:43:32 -0000 1.66 +++ addresses.inc 5 Nov 2010 19:48:12 -0000 @@ -741,13 +741,13 @@ function theme_addresses_is_primary($afi * A formatted aname field. */ function theme_addresses_aname($afields, $format = 'plain') { - if (!empty($afields['aname'])) { + if (!empty($afields['aname'])) { switch ($format) { case 'plain': return check_plain($afields['aname']); case 'hcard': - return ''. theme('placeholder', $afields['aname']) .''; + return '
'. t('Address Name') .':
'. $afields['aname'] .'
'; } } @@ -950,7 +950,7 @@ function theme_addresses_address_singlel // Add the country if (!empty($afields['country'])) { - $output .= ', '. $afields['country']; + $output .= ', '. drupal_strtoupper($afields['country']); } return $output; Index: addresses.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/addresses/addresses.module,v retrieving revision 1.75 diff -u -p -r1.75 addresses.module --- addresses.module 16 Sep 2010 20:56:42 -0000 1.75 +++ addresses.module 5 Nov 2010 19:48:12 -0000 @@ -27,7 +27,7 @@ function addresses_addressesfieldapi($op $items['is_primary'] = array( 'type' => 'int', 'size' => 'tiny', - 'title' => t('Primary Address Checkbox'), + 'title' => t('Primary Address'), 'description' => t('Mark it as the primary address or not (default is not)'), 'default' => 0, 'display' => ADDRESSES_FIELD_NONE, @@ -393,7 +393,7 @@ function addresses_theme() { 'file' => 'addresses.settings.inc', ), // Shows addresses using a single line - 'addresses_address_singleline' => array( + 'addresses_singleline' => array( 'arguments' => array('addresses'), 'file' => 'addresses.inc', ), Index: addresses_cck/addresses_cck.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/addresses/addresses_cck/addresses_cck.inc,v retrieving revision 1.5 diff -u -p -r1.5 addresses_cck.inc --- addresses_cck/addresses_cck.inc 17 Jul 2010 23:03:19 -0000 1.5 +++ addresses_cck/addresses_cck.inc 5 Nov 2010 19:48:12 -0000 @@ -22,10 +22,47 @@ function theme_addresses_cck_formatter_d * Show the Address using the Single Line view. * @ingroup themable */ -function theme_addresses_cck_formatter_single_line($element) { +function theme_addresses_cck_formatter_singleline($element) { // Include the important .inc file module_load_include('inc', 'addresses'); // Print the address using the one-line only theme return theme('addresses_address_singleline', $element['#item']); } + +/** + * Show City and Address Name in one line. + * @ingroup themable + */ +function theme_addresses_cck_formatter_city_aname($element) { + return $element['#item']['city'] . ': ' . $element['#item']['aname']; +} + +/** + * Show a single field of the address. + * @ingroup themable + */ +function theme_addresses_cck_formatter_field($element) { + switch ($element['#formatter']) { + case 'province_code': + return drupal_strtoupper($element['#item']['province']); + case 'province_name': + $provinces = _addresses_province_get($element['#item']['country']); + return $provinces[$element['#item']['province']]; + case 'country_code2': + return drupal_strtoupper($element['#item']['country']); + case 'country_code3': + $country_code3 = _addresses_country_get_code3(); + return drupal_strtoupper($country_code3[$element['#item']['country']]); + case 'country_name': + $countries = _addresses_country_get(); + return $countries[$element['#item']['country']]; + default: + // NOTE: This only works for plain... I'm not sure how to do the hcard/vcard. + if (strstr($element['#formatter'], '_plain')) { + return $element['#item'][substr($element['#formatter'], 0, -6)]; + } else { + return false; + } + } +} Index: addresses_cck/addresses_cck.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/addresses/addresses_cck/addresses_cck.module,v retrieving revision 1.22 diff -u -p -r1.22 addresses_cck.module --- addresses_cck/addresses_cck.module 5 Nov 2010 17:22:56 -0000 1.22 +++ addresses_cck/addresses_cck.module 5 Nov 2010 19:48:12 -0000 @@ -48,7 +48,7 @@ function addresses_cck_field_info() { } /** - * Implementation of hook_formatter_info(). + * Implementation of hook_field_formatter_info(). * * Its a CCK hook to declare information about a formatter. * @@ -65,27 +65,22 @@ function addresses_cck_field_formatter_i 'multiple values' => CONTENT_HANDLE_CORE, 'field types' => array('addresses_cck'), ); - $formatters = array( - 'default' => array( - 'label' => t('Default'), - 'arguments' => array('element'), - 'multiple values' => CONTENT_HANDLE_CORE, - 'field types' => array('addresses_cck'), - ), - 'single_line' => array( - 'label' => t('Single Line'), - 'arguments' => array('element'), - 'multiple values' => CONTENT_HANDLE_CORE, - 'field types' => array('addresses_cck'), - ), - ); + $formatters = array(); + $formatters['default'] = array( + 'label' => t('Default'), + ) + $default; + $formatters['singleline'] = array( + 'label' => t('Single Line') + ) + $default; + $formatters['city_aname'] = array( + 'label' => t('City and Address name') + ) + $default; $afields = module_invoke_all('addressesfieldapi', 'fields'); foreach ($afields as $ftype => $field) { if (!empty($field['theme'])) { foreach ($field['theme'] as $theme => $description) { - $formatters['addresses_field_'. $theme] = $default; - $formatters['addresses_field_'. $theme]['label'] = $description; + $formatters["{$ftype}_$theme"] = array('label' => $description) + $default; } } } @@ -168,20 +163,35 @@ function addresses_cck_field_settings($o $cck_default = content_views_field_views_data($field); $data[$table_alias]['table'] = $cck_default[$table_alias]['table']; unset($cck_default[$table_alias]['table']); + $litmus = true; $cck_default = array_shift($cck_default[$table_alias]); + // NOTE: It would be better to determine this in the loop based on the table field properties rather than forcing them to always be strings. + $cck_default['filter']['handler'] = 'views_handler_filter_string'; + $ftypes = module_invoke_all('addressesfieldapi', 'fields'); foreach ($ftypes as $ftype => $field_data) { $field_cck = $cck_default; if (isset($field_data['title'])) { $field_cck['title'] .= ' '. $field_data['title']; } + + // Adding in the field to the filter array $field_cck['filter']['field'] = $field['field_name'] .'_'. $ftype; -// $field_cck['filter']['title'] .= ' '. $field_data['title']; + + // Tweaked to include the short title to distinguish multiple addresses in the same node when picking filters. $field_cck['filter']['title'] = $cck_default['title short'] . ': ' . $field_cck['filter']['title'] . ' '. $field_data['title']; // unset($field_cck['field']['additional fields']); + + // NOTE: This is crude, but accomplishes what we want. + if ($litmus) { + $litmus = false; + } else { + unset($field_cck['field']); + } + $data[$table_alias][$field['field_name'] .'_'. $ftype] = $field_cck; } @@ -222,18 +232,36 @@ function addresses_cck_geocode_handlers_ * Implementation of hook_theme(). */ function addresses_cck_theme() { - return array( - // Shows address in the default view: Multilines - 'addresses_cck_formatter_default' => array( - 'arguments' => array('element'), - 'file' => 'addresses_cck.inc', - ), - // Shows address in only one line - 'addresses_cck_formatter_single_line' => array( - 'arguments' => array('element'), - 'file' => 'addresses_cck.inc', - ), + // Add the CCS + drupal_add_css(drupal_get_path('module', 'addresses') .'/addresses.css'); + + $default = array( + 'arguments' => array('element'), + 'file' => 'addresses_cck.inc', ); + + $theme = array(); + + // Shows address in the default view: Multilines + $theme['addresses_cck_formatter_default'] = $default; + + // Shows address in only one line + $theme['addresses_cck_formatter_singleline'] = $default; + + // Shows city and aname in one line + $theme['addresses_cck_formatter_city_aname'] = $default; + + // Shows a single field + $afields = module_invoke_all('addressesfieldapi', 'fields'); + foreach ($afields as $ftype => $field) { + if (!empty($field['theme'])) { + foreach (array_keys($field['theme']) as $theme_name) { + $theme["addresses_cck_formatter_{$ftype}_$theme_name"] = array('function' => 'theme_addresses_cck_formatter_field') + $default; + } + } + } + + return $theme; } /**