array( 'left_field' => 'nid', 'field' => 'field_quote_for_project_nid', ), ); $data['content_type_quote']['nid'] = array( 'title' => t('Quote'), 'help' => t('Quotes on Project.'), 'relationship' => array( 'base' => 'node', 'field' => 'nid', 'handler' => 'views_handler_relationship', 'label' => t('Quotes on Project'), ), 'field' => array( 'handler' => 'webble_handler_field_message_link', 'label' => t('Messages about this project from current user'), ), ); $data['content_type_quote']['field_price_value'] = array( 'title' => t('Quote Price'), 'help' => t('Quote price.'), 'field' => array( 'handler' => 'views_handler_field_numeric', 'click sortable' => TRUE, ), ); $data['pm_node']['table']['group'] = t('Webble'); $data['pm_node']['table']['join'] = array( //...to the node table 'node' => array( 'left_field' => 'nid', 'field' => 'nid', 'type' => 'INNER', ), 'pm_index' => array( 'left_field' => 'thread_id', 'field' => 'thread_id', 'type' => 'INNER', ), ); $data['pm_index']['table']['group'] = t('Webble'); $data['pm_index']['table']['join'] = array( 'pm_node' => array( 'left_field' => 'thread_id', 'field' => 'thread_id', 'type' => 'INNER', ), 'node' => array( 'left_table' => 'pm_node', 'left_field' => 'thread_id', 'field' => 'thread_id', 'type' => 'INNER', ), ); $data['pm_node']['nid'] = array( 'title' => t('Messages'), 'help' => t('Messages on Project.'), 'field' => array( 'handler' => 'webble_handler_field_message_count', 'label' => t('Number of message threads linked to this project'), ), 'filter' => array( 'handler' => 'webble_handler_filter_messages', 'type' => 'yes-no', ), ); $data['pm_index']['uid'] = array( 'title' => t('Messages Filter'), 'help' => t('Filter projects for messages by user.'), 'filter' => array( 'handler' => 'webble_handler_filter_messages', 'type' => 'yes-no', ), ); $data['node']['uid_quote'] = array( 'real field' => 'uid', 'title' => t('Current User Quotes'), 'help' => t('Filter the view to the currently logged in user\'s quotes.'), 'filter' => array( 'handler' => 'webble_handler_filter_quote', 'type' => 'yes-no', ), /* 'sort' => array( 'handler' => 'webble_handler_sort_quote', */ ); return $data; } /** * Implementation of hook_views_handlers(). */ function webble_views_handlers() { return array( 'info' => array( 'path' => drupal_get_path('module', 'webble') .'/includes', ), 'handlers' => array( 'webble_handler_filter_quote' => array( 'parent' => 'views_handler_filter_boolean_operator', ), 'webble_handler_filter_messages' => array( 'parent' => 'views_handler_filter_boolean_operator', ), 'webble_handler_sort_quote' => array( 'parent' => 'views_handler_sort', ), 'webble_handler_field_message_link' => array( 'parent' => 'views_handler_field', ), 'webble_handler_field_message_count' => array( 'parent' => 'views_handler_field', ), ), ); }