Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
// $Id$
/**
* @file
*
* Provide views data and handlers for translation.module
*/
/**
* @defgroup views_translation_module taxonomy.module handlers
*
* @{
*/
/**
* Implementation of hook_views_data_alter().
*
* Add translation information to the node table.
*/
function translation_views_data_alter(&$data) {
// Joins
$data['node']['table']['join']['node'] = array(
'left_field' => 'tnid',
'field' => 'tnid',
);
// Language field
$data['node']['language'] = array(
'group' => t('Node translation'),
'title' => t('Language'),
'help' => t('The language the content is in.'),
'field' => array(
'handler' => 'views_handler_field_node_language',
'click sortable' => TRUE,
),
'filter' => array(
'handler' => 'views_handler_filter_node_language',
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
),
'argument' => array(
'handler' => 'views_handler_argument_node_language',
),
);
// The translation ID (nid of the "source" translation)
$data['node']['tnid'] = array(
'group' => t('Node translation'),
'title' => t('Translation set node ID'),
'help' => t('The ID of the translation set the content belongs to.'),
'field' => array(
'handler' => 'views_handler_field_node',
'click sortable' => TRUE,
),
'filter' => array(
'handler' => 'views_handler_filter_node_tnid',
),
'argument' => array(
'handler' => 'views_handler_argument_node_tnid',
'parent' => 'views_handler_argument_numeric', // make sure parent is included
'name field' => 'title', // the field to display in the summary.
'numeric' => TRUE,
'validate type' => 'tnid',
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'relationship' => array(
'title' => t('Source translation'),
'help' => t('The source that this content was translated from.'),
'base' => 'node',
'base field' => 'nid',
'handler' => 'views_handler_relationship_translation',
'label' => t('Source translation'),
),
);
// The source translation.
$data['node']['translation'] = array(
'group' => t('Node translation'),
'title' => t('Translations'),
'help' => t('Versions of content in different languages.'),
'relationship' => array(
'title' => t('Translations'),
'help' => t('Versions of content in different languages.'),
'base' => 'node',
'base field' => 'tnid',
'relationship table' => 'node',
'relationship field' => 'nid',
'handler' => 'views_handler_relationship_translation',
'label' => t('Translations'),
),
);
// Translation status
$data['node']['translate'] = array(
'group' => t('Node translation'),
'title' => t('Translation status'),
'help' => t('The translation status of the node--whether or not the translation needs to be updated.'),
'field' => array(
'handler' => 'views_handler_field_boolean',
'click sortable' => TRUE,
),
'filter' => array(
'handler' => 'views_handler_filter_boolean_operator',
'label' => t('Published'),
'type' => 'yes-no',
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
),
'sort' => array(
'handler' => 'views_handler_sort',
),
);
}
/**
* Implementation of hook_views_handlers() to register all of the basic handlers
* views uses.
*/
function translation_views_handlers() {
return array(
'info' => array(
'path' => drupal_get_path('module', 'views') . '/modules/translation',
),
'handlers' => array(
// field handlers
'views_handler_field_node_language' => array(
'parent' => 'views_handler_field_node',
),
'views_handler_field_node_tnid' => array(
'parent' => 'views_handler_field_node',
),
'views_handler_field_node_translation_link' => array(
'parent' => 'views_handler_field',
),
// argument handlers
'views_handler_argument_node_language' => array(
'parent' => 'views_handler_argument',
),
'views_handler_argument_node_tnid' => array(
'parent' => 'views_handler_argument',
),
// filters
'views_handler_filter_node_language' => array(
'parent' => 'views_handler_filter_in_operator',
),
// relationships
'views_handler_relationship_translation' => array(
'parent' => 'views_handler_relationship',
),
),
);
}
/**
* @}
*/