diff --git a/i18nviews.info b/i18nviews.info index 6cff3bc..a4712a5 100644 --- a/i18nviews.info +++ b/i18nviews.info @@ -11,15 +11,18 @@ files[] = i18nviews.inc files[] = i18nviews.i18n.inc ; Handlers, Plugins +files[] = includes/i18nviews_handler_argument_node_type.inc files[] = includes/i18nviews_handler_argument_taxonomy_index_tid.inc files[] = includes/i18nviews_handler_argument_taxonomy_term_name.inc files[] = includes/i18nviews_handler_argument_taxonomy_term_language.inc files[] = includes/i18nviews_handler_argument_term_node_tid_depth.inc +files[] = includes/i18nviews_handler_field_node_type.inc files[] = includes/i18nviews_handler_field_taxonomy_term_description.inc files[] = includes/i18nviews_handler_field_taxonomy_term_language.inc files[] = includes/i18nviews_handler_field_taxonomy_term_name.inc files[] = includes/i18nviews_handler_field_term_node_tid.inc files[] = includes/i18nviews_handler_filter_field_list.inc +files[] = includes/i18nviews_handler_filter_node_type.inc files[] = includes/i18nviews_handler_filter_taxonomy_index_tid.inc files[] = includes/i18nviews_handler_filter_taxonomy_term_name.inc files[] = includes/i18nviews_handler_filter_taxonomy_term_language.inc diff --git a/includes/i18nviews.views.inc b/includes/i18nviews.views.inc index 364687a..a8e2e6b 100644 --- a/includes/i18nviews.views.inc +++ b/includes/i18nviews.views.inc @@ -7,6 +7,30 @@ function i18nviews_views_data_alter(&$data) { if (module_exists('i18n_taxonomy')) { i18nviews_views_data_alter_i18n_taxonomy($data); } + + if (module_exists('i18n_node')) { + // Content type + $data['node']['type_i18n'] = array( + 'title' => t('Type (translated)'), + 'help' => t('The translated content type (for example, "blog entry", "forum post", "story", etc).'), + 'field' => array( + 'handler' => 'i18nviews_handler_field_node_type', + 'click sortable' => TRUE, + 'real field' => 'type', + ), + 'sort' => array( + 'handler' => 'views_handler_sort', + ), + 'filter' => array( + 'handler' => 'i18nviews_handler_filter_node_type', + 'real field' => 'type', + ), + 'argument' => array( + 'handler' => 'i18nviews_handler_argument_node_type', + 'real field' => 'type', + ), + ); + } } /** diff --git a/includes/i18nviews_handler_argument_node_type.inc b/includes/i18nviews_handler_argument_node_type.inc new file mode 100644 index 0000000..74701ff --- /dev/null +++ b/includes/i18nviews_handler_argument_node_type.inc @@ -0,0 +1,19 @@ +options['machine_name'] != 1 && $data !== NULL && $data !== '') { + return $this->sanitize_value(i18n_node_type_name($data, node_type_get_name($data))); + } + return $this->sanitize_value($data); + } +} diff --git a/includes/i18nviews_handler_filter_node_type.inc b/includes/i18nviews_handler_filter_node_type.inc new file mode 100644 index 0000000..8005921 --- /dev/null +++ b/includes/i18nviews_handler_filter_node_type.inc @@ -0,0 +1,29 @@ +value_options)) { + $this->value_title = t('Content types'); + $types = node_type_get_types(); + $options = array(); + foreach ($types as $type => $info) { + $options[$type] = i18n_node_type_name($type, $info->name); + } + asort($options); + $this->value_options = $options; + } + } +}