From 53ca58fbd93b361c024d52e342678c0efef1d74c Mon Sep 17 00:00:00 2001
From: dkinzer <dtkinzer@gmail.com>
Date: Sun, 13 Mar 2011 15:10:39 -0400
Subject: [PATCH] Issue #324331-28: Makes addresses fields sortable in views.

---
 addresses_cck/addresses_cck.module |   26 +++++++++++++++++++++++++-
 1 files changed, 25 insertions(+), 1 deletions(-)
 mode change 100644 => 100755 addresses_cck/addresses_cck.module

diff --git a/addresses_cck/addresses_cck.module b/addresses_cck/addresses_cck.module
old mode 100644
new mode 100755
index 9c9538c..88bec66
--- a/addresses_cck/addresses_cck.module
+++ b/addresses_cck/addresses_cck.module
@@ -157,7 +157,13 @@ function addresses_cck_field_settings($op, $field) {
     case 'database columns':
       // Return the table similar to those set on hook_schema.
       // It describes each database field that will be stored.
-      return module_invoke_all('addressesfieldapi', 'fields');
+      $columns = module_invoke_all('addressesfieldapi', 'fields');
+
+      //Make columns sortable;
+      foreach ($columns as $key => $column) {
+        $columnns[$key][$column]['sortable'] = TRUE;
+      }
+      return $columns;
 
     case 'views data':
       // Rerebuild the Views integration, since the address field is,
@@ -175,6 +181,7 @@ function addresses_cck_field_settings($op, $field) {
         $field_cck = $cck_default;
         if (isset($field_data['title'])) {
           $field_cck['title'] .= ' '. $field_data['title'];
+          $field_cck['title short'] = $field_data['title'];
         }
         $field_cck['filter']['field'] = $field['field_name'] .'_'. $ftype;
 //        $field_cck['filter']['title'] .= ' '. $field_data['title'];
@@ -182,6 +189,23 @@ function addresses_cck_field_settings($op, $field) {
 
 //         unset($field_cck['field']['additional fields']);
         $data[$table_alias][$field['field_name'] .'_'. $ftype] = $field_cck;
+        
+        //Move fields to Addresses Group to make it easier to find them in the Viewws GUI.
+        $data[$table_alias][$field['field_name'] .'_'. $ftype]['group'] = 'Addresses';
+
+        //Make sortable;
+        $data[$table_alias][$field['field_name'] .'_'. $ftype]['sort'] = array(
+          'field' => $field['field_name'] .'_'. $ftype,
+          'tablename' => $db_info['table'],
+          'handler' => 'content_handler_sort',
+          'content_field_name' => $field['field_name'] .'_'. $ftype,
+          'allow_empty' => TRUE,
+        );
+
+        //If you are making a column sortable then you'll want to know what you are sorting by.
+        $data[$table_alias][$field['field_name'] .'_'. $ftype]['field']['title'] = $db_info['columns'][$ftype]['title'];
+        
+        unset($data[$table_alias][$field['field_name'] .'_'. $ftype]['argument']['additional fields']);
       }
 
       return $data;
-- 
1.7.3

