diff --git a/addressfield.info b/addressfield.info index 445603f..ca6e60c 100644 --- a/addressfield.info +++ b/addressfield.info @@ -8,3 +8,4 @@ dependencies[] = ctools files[] = addressfield.migrate.inc files[] = views/addressfield_views_handler_field_country.inc files[] = views/addressfield_views_handler_filter_country.inc +files[] = views/addressfield_views_handler_filter_administrative_area.inc diff --git a/views/addressfield.views.inc b/views/addressfield.views.inc index 9be1637..e4c48a8 100644 --- a/views/addressfield.views.inc +++ b/views/addressfield.views.inc @@ -22,6 +22,20 @@ function addressfield_field_views_data($field) { $data[$table_name][$column_real_name]['filter']['handler'] = 'addressfield_views_handler_filter_country'; } } + + // Add a handler for administrative area. + foreach ($field['storage']['details']['sql'] as $type => $tables) { + foreach ($tables as $table_name => $columns) { + if (!isset($columns['administrative_area'])) { + continue; + } + $column_real_name = $columns['administrative_area']; + if (!isset($data[$table_name][$column_real_name]['filter'])) { + continue; + } + $data[$table_name][$column_real_name]['filter']['handler'] = 'addressfield_views_handler_filter_administrative_area'; + } + } // Only expose these components as Views field handlers. $implemented = array( diff --git a/views/addressfield_views_handler_filter_administrative_area.inc b/views/addressfield_views_handler_filter_administrative_area.inc new file mode 100644 index 0000000..baea7f4 --- /dev/null +++ b/views/addressfield_views_handler_filter_administrative_area.inc @@ -0,0 +1,60 @@ +value_title = t('Administrative Area'); + $field = field_info_field($this->definition['field_name']); + $this->value_options = array( + 'AL' => t('Alabama'), + 'AK' => t('Alaska'), + 'AZ' => t('Arizona'), + 'AR' => t('Arkansas'), + 'CA' => t('California'), + 'CO' => t('Colorado'), + 'CT' => t('Connecticut'), + 'DE' => t('Delaware'), + 'FL' => t('Florida'), + 'GA' => t('Georgia'), + 'HI' => t('Hawaii'), + 'ID' => t('Idaho'), + 'IL' => t('Illinois'), + 'IN' => t('Indiana'), + 'IA' => t('Iowa'), + 'KS' => t('Kansas'), + 'KY' => t('Kentucky'), + 'LA' => t('Louisiana'), + 'ME' => t('Maine'), + 'MD' => t('Maryland'), + 'MA' => t('Massachusetts'), + 'MI' => t('Michigan'), + 'MN' => t('Minnesota'), + 'MS' => t('Mississippi'), + 'MO' => t('Missouri'), + 'MT' => t('Montana'), + 'NE' => t('Nebraska'), + 'NV' => t('Nevada'), + 'NH' => t('New Hampshire'), + 'NJ' => t('New Jersey'), + 'NM' => t('New Mexico'), + 'NY' => t('New York'), + 'NC' => t('North Carolina'), + 'ND' => t('North Dakota'), + 'OH' => t('Ohio'), + 'OK' => t('Oklahoma'), + 'OR' => t('Oregon'), + 'PA' => t('Pennsylvania'), + 'RI' => t('Rhode Island'), + 'SC' => t('South Carolina'), + 'SD' => t('South Dakota'), + 'TN' => t('Tennessee'), + 'TX' => t('Texas'), + 'UT' => t('Utah'), + 'VT' => t('Vermont'), + 'VA' => t('Virginia'), + 'WA' => t('Washington'), + 'WV' => t('West Virginia'), + 'WI' => t('Wisconsin'), + 'WY' => t('Wyoming'), + 'DC' => t('District of Columbia'), + ); + } +} \ No newline at end of file