Index: i18nviews/includes/i18nviews.views.inc =================================================================== RCS file: /cvs/drupal/contributions/modules/i18nviews/includes/i18nviews.views.inc,v retrieving revision 1.1.4.1 diff -u -r1.1.4.1 i18nviews.views.inc --- i18nviews/includes/i18nviews.views.inc 20 Jul 2010 17:16:39 -0000 1.1.4.1 +++ i18nviews/includes/i18nviews.views.inc 22 Jul 2010 07:50:53 -0000 @@ -13,6 +13,29 @@ } /** + * Implementation of hook_views_data_alter(). + */ +function i18nviews_views_data_alter(&$data) { + // Add translation information to the term_data table. + // Language field + $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', + ), + ); +} + +/** * Implementation of hook_views_handlers */ function i18nviews_views_handlers() { @@ -21,6 +44,15 @@ 'path' => drupal_get_path('module', 'i18nviews') . '/includes', ), 'handlers' => array( + 'i18nviews_handler_field_term_language' => array( + 'parent' => 'views_handler_field_taxonomy', + ), + 'i18nviews_handler_filter_term_language' => array( + 'parent' => 'views_handler_filter_in_operator', + ), + 'i18nviews_handler_argument_term_language' => array( + 'parent' => 'views_handler_argument', + ), 'content_negotiation_filter_handler' => array( 'parent' => 'views_handler_filter', 'file' => 'includes/content_negotiation_filter_handler.inc' 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 2 Jul 2010 13:09:47 -0000 @@ -0,0 +1,33 @@ +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 2 Jul 2010 13:09:47 -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 2 Jul 2010 13:09:47 -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; + } + } +}