Newer
Older
<?php
/**
* @file nodequeue.views.inc
* Provides support for the Views module.
*
* This implementation is almost entirely based around a relationship
* which is stapled to the 'node' table via hook_views_data_alter.
*
* The relationship allows you to define 0 or more queues that join the
* queue tables, limiting the join to just the queues selected. Once
* the queues are joined in, the queue fields will show up, and they
* have the usual array of arguments, sorts, fields and filters; since
* the real legwork is done by the relationship, most of these are
* really quite simple.
*/
/**
Ezra Barnett Gildesgame
committed
* Implements hook_views_data().
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
*/
function nodequeue_views_data() {
$data = array();
// ----------------------------------------------------------------
// nodequeue_nodes table
$data['nodequeue_nodes']['table']['group'] = t('Nodequeue');
// The nodequeue_nodes table is how nodequeue connects to the
// rest of the world, but we will only join it in via relationship.
// position
$data['nodequeue_nodes']['position'] = array(
'title' => t('Position'),
'help' => t('The position of the node within a queue.'),
'field' => array(
'handler' => 'views_handler_field_numeric',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_numeric',
),
'argument' => array(
'handler' => 'views_handler_argument_numeric',
),
);
// timestamp
$data['nodequeue_nodes']['timestamp'] = array(
'title' => t('Added date'),
'help' => t('The date the node was added to a queue.'),
'field' => array(
'handler' => 'views_handler_field_date',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort_date',
),
'filter' => array(
'handler' => 'views_handler_filter_date',
),
);
$data['nodequeue_nodes']['qid'] = array(
'title' => t('Queue ID'),
'help' => t('The ID of the queue the node belongs to.'),
'field' => array(
'handler' => 'views_handler_field_numeric',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'argument' => array(
'handler' => 'views_handler_argument_numeric',
'name field' => 'title',
'name table' => 'nodequeue_queue',
'empty field name' => t('No queue'),
),
);
$data['nodequeue_nodes']['sqid'] = array(
'title' => t('Subqueue ID'),
'help' => t('The ID of the subqueue the node belongs to.'),
'field' => array(
'handler' => 'views_handler_field_numeric',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'argument' => array(
'handler' => 'views_handler_argument_numeric',
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
'name field' => 'title',
'name table' => 'nodequeue_subqueue',
'empty field name' => t('No queue'),
),
);
// specialized is null/is not null filter
$data['nodequeue_nodes']['in_queue'] = array(
'title' => t('In queue'),
'help' => t('Filter to ensure a node IS or IS NOT in the related queue'),
'filter' => array(
'handler' => 'nodequeue_handler_filter_in_queue',
'label' => t('In queue'),
),
);
// ----------------------------------------------------------------
// nodequeue_queue table
$data['nodequeue_queue']['table']['group'] = t('Nodequeue');
// For use with the relationship.
$data['nodequeue_queue']['table']['join'] = array(
'nodequeue_nodes' => array(
'left_field' => 'qid',
'field' => 'qid',
),
);
$data['nodequeue_queue']['title'] = array(
Ezra Barnett Gildesgame
committed
'title' => t('Queue title'),
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
'help' => t('The title of the nodequeue.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
// ----------------------------------------------------------------
// nodequeue_subqueue table
$data['nodequeue_subqueue']['table']['group'] = t('Nodequeue');
// For use with the relationship.
$data['nodequeue_subqueue']['table']['join'] = array(
'nodequeue_nodes' => array(
'left_field' => 'sqid',
'field' => 'sqid',
),
);
Ezra Barnett Gildesgame
committed
$data['nodequeue_subqueue']['title'] = array(
'title' => t('Subqueue title'),
'help' => t('The title of the subqueue.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
$data['nodequeue_subqueue']['reference'] = array(
'title' => t('Subqueue reference'),
'help' => t('The reference that defines a subqueue; what this actually is depends upon the type of subqueue, but is a taxonomy tid for smartqueue taxonomy, or a uid for authorview.'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
);
Ezra Barnett Gildesgame
committed
return $data;
}
/**
Ezra Barnett Gildesgame
committed
* Implements hook_views_data_alter().
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
*/
function nodequeue_views_data_alter(&$data) {
// queue relationship
$data['node']['nodequeue_rel'] = array(
'group' => t('Nodequeue'),
'title' => t('Queue'),
'help' => t('Create a relationship to a nodequeue.'),
'real field' => 'nid',
'relationship' => array(
'handler' => 'nodequeue_handler_relationship_nodequeue',
'base' => 'nodequeue_nodes',
'field' => 'nid',
'label' => t('queue'),
),
);
// links
$data['node']['nodequeue_links'] = array(
'group' => t('Nodequeue'),
'title' => t('Add/remove links'),
'help' => t('Display add/remove links for all eligible nodequeues. Note that this performs a node_load so could add many extra queries to a view.'),
'real field' => 'nid',
'field' => array(
'handler' => 'nodequeue_handler_field_links',
),
);
$data['node']['nodequeue_queue_tab'] = array(
'group' => t('Nodequeue'),
'title' => t('Link to tab'),
'help' => t('Display add/remove links for all eligible nodequeues. Note that this performs a node_load so could add many extra queries to a view.'),
'real field' => 'nid',
'field' => array(
'handler' => 'nodequeue_handler_field_queue_tab',
),
);
// all queues
$data['node']['nodequeue_all_queues'] = array(
'group' => t('Nodequeue'),
'title' => t('All queues'),
'help' => t('Display all queues a node is a member of.'),
'real field' => 'nid',
'field' => array(
'handler' => 'nodequeue_handler_field_all_queues',
),
);
// all subqueues
$data['node']['nodequeue_all_subqueues'] = array(
'group' => t('Nodequeue'),
'title' => t('All subqueues'),
'help' => t('Display all subqueues a node is a member of.'),
'real field' => 'nid',
'field' => array(
'handler' => 'nodequeue_handler_field_all_subqueues',
),
);
}