1 | <?php |
---|
2 | |
---|
3 | /** |
---|
4 | * @file |
---|
5 | * Declare new node and node_revisions fields and filters. |
---|
6 | */ |
---|
7 | |
---|
8 | /** |
---|
9 | * Implementation of hook_views_data(). |
---|
10 | * |
---|
11 | * Ommitted, we're altering existing groups, not creating a new one. |
---|
12 | * |
---|
13 | function revisioning_views_data() { |
---|
14 | } |
---|
15 | */ |
---|
16 | |
---|
17 | /** |
---|
18 | * Implementation of hook_views_data_alter(). |
---|
19 | * |
---|
20 | * We define a pseudo-field 'state' (values: pending, current, archived) for |
---|
21 | * both node and node_revisions tables. |
---|
22 | */ |
---|
23 | function revisioning_views_data_alter(&$data) { |
---|
24 | |
---|
25 | $data['node']['last_editor'] = array( |
---|
26 | 'title' => t('Last edited by'), |
---|
27 | 'help' => t('The name of the user who last edited this content.'), |
---|
28 | 'field' => array( |
---|
29 | 'handler' => 'revisioning_handler_field_node_last_editor', |
---|
30 | 'click sortable' => TRUE |
---|
31 | ), |
---|
32 | /* See WhoWhatWhen for sort ideas |
---|
33 | 'filter' => array( |
---|
34 | 'handler' => 'revisioning_handler_filter_node_last_editor', |
---|
35 | ), |
---|
36 | 'sort' => array( |
---|
37 | 'handler' => 'revisioning_handler_sort_node_last_editor', |
---|
38 | ),*/ |
---|
39 | ); |
---|
40 | $data['node']['state'] = array( |
---|
41 | 'title' => t('State'), |
---|
42 | 'help' => t('One of: pending, current, archived'), |
---|
43 | 'field' => array( |
---|
44 | 'handler' => 'revisioning_handler_field_node_state', |
---|
45 | 'click sortable' => TRUE, |
---|
46 | ), |
---|
47 | 'filter' => array( |
---|
48 | 'handler' => 'revisioning_handler_filter_node_state', |
---|
49 | ) |
---|
50 | // Cannot support sort as 'state' cannot be expressed as ORDER BY clause |
---|
51 | ); |
---|
52 | $data['node']['number_of_revisions'] = array( |
---|
53 | 'title' => t('Revisions'), |
---|
54 | 'help' => t('Number of revisions.'), |
---|
55 | 'field' => array( |
---|
56 | 'handler' => 'revisioning_handler_field_node_number_of_revisions', |
---|
57 | 'click sortable' => TRUE, |
---|
58 | ), |
---|
59 | 'filter' => array( |
---|
60 | 'handler' => 'revisioning_handler_filter_node_number_of_revisions', |
---|
61 | ), |
---|
62 | // Cannot support sort as 'number of revisions' cannot be expressed as ORDER BY clause |
---|
63 | ); |
---|
64 | $data['node']['revision_moderation'] = array( |
---|
65 | 'title' => t('Revision moderation'), |
---|
66 | 'help' => t('Whether the node is subject to revision moderation.'), |
---|
67 | 'field' => array( |
---|
68 | 'handler' => 'revisioning_handler_field_node_revision_moderation', |
---|
69 | 'click sortable' => TRUE, |
---|
70 | ), |
---|
71 | 'filter' => array( |
---|
72 | 'handler' => 'revisioning_handler_filter_node_revision_moderation', |
---|
73 | ), |
---|
74 | // Cannot support sort as this flag cannot be expressed as ORDER BY clause |
---|
75 | ); |
---|
76 | $data['node_revisions']['latest'] = array( |
---|
77 | 'title' => t('Latest revision'), |
---|
78 | 'help' => t('Include only the most recent revision of a node.'), |
---|
79 | 'filter' => array( |
---|
80 | 'handler' => 'revisioning_handler_filter_revision_latest', |
---|
81 | ) |
---|
82 | // Cannot support sort as 'latest' cannot be expressed as ORDER BY clause |
---|
83 | ); |
---|
84 | $data['node_revisions']['title']['help'] = t('The title of the revision.'); |
---|
85 | $data['node_revisions']['state'] = array( |
---|
86 | 'title' => t('State'), |
---|
87 | 'help' => t('One of: pending, current, archived'), |
---|
88 | 'field' => array( |
---|
89 | 'handler' => 'revisioning_handler_field_revision_state', |
---|
90 | 'click sortable' => TRUE, |
---|
91 | ), |
---|
92 | 'filter' => array( |
---|
93 | 'handler' => 'revisioning_handler_filter_revision_state', |
---|
94 | ) |
---|
95 | // Cannot support sort as 'state' cannot be expressed as ORDER BY clause |
---|
96 | ); |
---|
97 | } |
---|
98 | |
---|
99 | /** |
---|
100 | * Implementation of hook_views_handlers(). |
---|
101 | * |
---|
102 | * Register all of the handlers (fields and filters) used in Revisioning views. |
---|
103 | */ |
---|
104 | function revisioning_views_handlers() { |
---|
105 | return array( |
---|
106 | 'info' => array( |
---|
107 | 'path' => drupal_get_path('module', 'revisioning') .'/views', |
---|
108 | ), |
---|
109 | 'handlers' => array( |
---|
110 | 'revisioning_handler_field_node_state' => array('parent' => 'views_handler_field'), |
---|
111 | 'revisioning_handler_field_node_last_editor' => array('parent' => 'views_handler_field'), |
---|
112 | 'revisioning_handler_field_revision_state' => array('parent' => 'views_handler_field'), |
---|
113 | 'revisioning_handler_field_node_number_of_revisions' => array('parent' => 'views_handler_field'), |
---|
114 | 'revisioning_handler_field_node_revision_moderation' => array('parent' => 'views_handler_field'), |
---|
115 | 'revisioning_handler_filter_node_state' => array('parent' => 'views_handler_filter_in_operator'), |
---|
116 | 'revisioning_handler_filter_node_number_of_revisions' => array('parent' => 'views_handler_filter_numeric'), |
---|
117 | 'revisioning_handler_filter_node_revision_moderation' => array('parent' => 'views_handler_filter_in_operator'), |
---|
118 | 'revisioning_handler_filter_revision_state' => array('parent' => 'views_handler_filter_in_operator'), |
---|
119 | 'revisioning_handler_filter_revision_latest' => array('parent' => 'views_handler_filter_boolean_operator'), |
---|
120 | ) |
---|
121 | ); |
---|
122 | } |
---|