Index: includes/i18nviews.views.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/i18nviews/includes/i18nviews.views.inc,v retrieving revision 1.1.2.1 diff -u -p -r1.1.2.1 i18nviews.views.inc --- includes/i18nviews.views.inc 14 Jun 2010 03:15:07 -0000 1.1.2.1 +++ includes/i18nviews.views.inc 26 Jul 2010 20:46:22 -0000 @@ -25,9 +25,7 @@ function i18nviews_views_handlers() { 'path' => drupal_get_path('module', 'i18nviews') . '/includes', ), 'handlers' => array( - 'content_negotiation_filter_handler' => array( - 'parent' => 'views_handler_filter', - ), + // field handlers 'i18nviews_handler_field_taxonomy' => array( 'parent' => 'views_handler_field_taxonomy', ), @@ -37,9 +35,23 @@ function i18nviews_views_handlers() { 'i18nviews_handler_field_term_node_tid' => array( 'parent' => 'views_handler_field_term_node_tid', ), + 'i18nviews_handler_field_term_language' => array( + 'parent' => 'views_handler_field_taxonomy', + ), + // argument handlers + 'i18nviews_handler_argument_term_language' => array( + 'parent' => 'views_handler_argument', + ), 'i18nviews_handler_argument_term_node_tid' => array( 'parent' => 'views_handler_argument_term_node_tid', ), + // filters + 'content_negotiation_filter_handler' => array( + 'parent' => 'views_handler_filter', + ), + 'i18nviews_handler_filter_term_language' => array( + 'parent' => 'views_handler_filter_in_operator', + ), 'i18nviews_handler_filter_term_node_tid' => array( 'parent' => 'views_handler_filter_term_node_tid', ), @@ -57,6 +69,23 @@ function i18nviews_views_data_alter(&$da $data['term_node']['tid']['field']['handler'] = 'i18nviews_handler_field_term_node_tid'; $data['term_node']['tid']['argument']['handler'] = 'i18nviews_handler_argument_term_node_tid'; $data['term_node']['tid']['filter']['handler'] = 'i18nviews_handler_filter_term_node_tid'; + + // Add translation information to the term_data table. + $data['term_data']['language'] = array( + 'group' => t('Term translation'), + 'title' => t('Language'), + 'help' => t('The language the term is in.'), + 'field' => array( + 'handler' => 'i18nviews_handler_field_term_language', + 'click sortable' => TRUE, + ), + 'filter' => array( + 'handler' => 'i18nviews_handler_filter_term_language', + ), + 'argument' => array( + 'handler' => 'i18nviews_handler_argument_term_language', + ), + ); } /** Index: includes/i18nviews_handler_argument_term_language.inc =================================================================== RCS file: includes/i18nviews_handler_argument_term_language.inc diff -N includes/i18nviews_handler_argument_term_language.inc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ includes/i18nviews_handler_argument_term_language.inc 26 Jul 2010 20:46:22 -0000 @@ -0,0 +1,32 @@ +term_language($data->{$this->name_alias}); + } + + /** + * Override the behavior of title(). Get the user friendly version of the + * node type. + */ + function title() { + return $this->term_language($this->argument); + } + + function term_language($langcode) { + $languages = locale_language_list(); + return isset($languages[$langcode]) ? $languages[$langcode] : t('Unknown language'); + } +} Index: includes/i18nviews_handler_field_term_language.inc =================================================================== RCS file: includes/i18nviews_handler_field_term_language.inc diff -N includes/i18nviews_handler_field_term_language.inc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ includes/i18nviews_handler_field_term_language.inc 26 Jul 2010 20:46:22 -0000 @@ -0,0 +1,13 @@ +{$this->field_alias}]) ? $languages[$values->{$this->field_alias}] : ''; + return $this->render_link($value, $values); + } +} Index: includes/i18nviews_handler_filter_term_language.inc =================================================================== RCS file: includes/i18nviews_handler_filter_term_language.inc diff -N includes/i18nviews_handler_filter_term_language.inc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ includes/i18nviews_handler_filter_term_language.inc 26 Jul 2010 20:46:22 -0000 @@ -0,0 +1,16 @@ +value_options)) { + $this->value_title = t('Language'); + $languages = array('***CURRENT_LANGUAGE***' => t("Current user's language"), '***DEFAULT_LANGUAGE***' => t("Default site language"), '***NO_LANGUAGE***' => t('No language')); + $languages = array_merge($languages, locale_language_list()); + $this->value_options = $languages; + } + } +}