first commit
[step2_drupal.git] / casetracker / casetracker.views.inc
blob3b184a430a22c4f25eda4936062266f7a65cd0a7
1 <?php
2 // $Id: casetracker.views.inc,v 1.3.2.1 2009/03/02 15:59:54 jmiccolis Exp $
4 /**
5  * Implementation of hook_views_data().
6  */
7 function casetracker_views_data() {
8   $data = array();
9   $tables = array('casetracker_case', 'casetracker_case_states',);
10   foreach ($tables as $table) {
11     $function = "casetracker_views_data_$table";
12     $data += $function();
13   }
14   return $data;
17 // ---------- Table casetracker_case
18 function casetracker_views_data_casetracker_case() {
19   $data['casetracker_case']['table']['group']  = t('Case Tracker');
20   $data['casetracker_case']['table']['join'] = array(
21     'node' => array(
22       'left_field' => 'vid',
23       'field' => 'vid',
24     ),
25   );
26   $data['casetracker_case']['pid'] = array(
27     'title' => t('Project'),
28     'field' => array(
29       'handler'    => 'casetracker_views_handler_field_project_name',
30       'help'       => t('Display the name of the Case Tracker project.'),
31       'click sortable' => TRUE,
32     ),
33     'filter' => array(
34       'handler' => 'casetracker_views_handler_filter_project_options',
35       'help' => t('Filter Case Tracker cases by their project.'),
36     ),
37     'relationship' => array(
38       'handler' => 'views_handler_relationship',
39       'base' => 'node',
40       'field' => 'nid',
41       'label' => t('project'),
42     ),
43   );
44   $data['casetracker_case']['assign_to'] = array(
45     'title' => t('Assigned to'),
46     'field' => array(
47       'handler' => 'casetracker_views_handler_field_user_name',
48       'help' => t('Display the user name the case has been assigned to.'),
49       'click sortable' => TRUE,
50     ),
51     'filter' => array(
52       'handler' => 'casetracker_views_handler_filter_user_options',
53       'help' => t('Filter Case Tracker cases by the assigned user.'),
54     ),
55   );
56   $data['casetracker_case']['case_priority_id'] = array(
57     'title' => t('Case priority'),
58     'field' => array(
59       'handler' => 'casetracker_views_handler_field_priority_name',
60       'help' => t('Display the priority of the case.'),
61       'click sortable' => TRUE,
62     ),
63     'filter'  => array(
64       'handler' => 'casetracker_views_handler_filter_priority_options',
65       'help' => t('Filter Case Tracker cases by priority.'),
66     ),
67     'sort' => array(
68       'handler' => 'views_handler_sort',
69       'help' => t('Sort by Case Tracker priority.'),
70     ),
71     'argument' => array(
72       'handler' => 'casetracker_views_handler_argument_priority',
73       'help' => t('The Case Tracker priority ID.'),
74     ),
75   );
76   $data['casetracker_case']['case_status_id'] = array(
77     'title' => t('Case status'),
78     'field' => array(
79       'handler' => 'casetracker_views_handler_field_status_name',
80       'help' => t('Display the status of the case.'),
81       'click sortable' => TRUE,
82     ),
83     'filter' => array(
84       'handler' => 'casetracker_views_handler_filter_status_options',
85       'help' => t('Filter Case Tracker cases by status.'),
86     ),
87     'sort' => array(
88       'handler' => 'views_handler_sort',
89       'help' => t('Sort by Case Tracker status.'),
90     ),
91     'argument' => array(
92       'handler' => 'casetracker_views_handler_argument_status',
93       'help' => t('The Case Tracker status ID.'),
94     ),
95   );
96   $data['casetracker_case']['case_type_id'] = array(
97     'title' => t('Case type'),
98     'field' => array(
99       'handler' => 'casetracker_views_handler_field_type_name',
100       'help' => t('Display the type of the case.'),
101       'click sortable' => TRUE,
102     ),
103     'filter' => array(
104       'handler' => 'casetracker_views_handler_filter_type_options',
105       'help' => t('Filter Case Tracker cases by type.'),
106     ),
107     'argument' => array(
108       'handler' => 'casetracker_views_handler_argument_type',
109       'help' => t('The Case Tracker type ID.'),
110     ),
111   );
112   $data['casetracker_case']['case_count'] = array(
113     'title' => t('Project: Case count'),
114     'field' => array(
115       'field'      => 'pid',
116       'handler'    => 'casetracker_views_handler_field_case_count',
117       'help'       => t('Provides a count and link to the cases in a given project.'),
118     ),
119   );
121   return $data;
124 function casetracker_views_data_casetracker_case_states() {
125   $data['casetracker_case_states']['table']['group']  = t('Case Tracker');
126   $data['casetracker_case_states']['table']['join'] = array(
127     'node' => array(
128       'left_table' => 'casetracker_case',
129       'left_field' => 'case_status_id',
130       'field' => 'csid',
131     ),
132   );
133   $data['casetracker_case_states']['case_state_name'] = array(
134     'title' => t('Case Tracker: State Name'),
135     'sort' => array(
136       'handler' => 'views_handler_sort',
137       'help' => t('Sort by Case Tracker state name.'),
138     ),
139   );
141   return $data;
145  * Implementation of hook_views_data_alter().
146  */
147 function casetracker_views_data_alter(&$data) {
148   $data['node']['case'] = array(
149     'title' => t('Case Tracker case'),
150     'help' => t('Whether the node is a casetracker case'),
151     'filter' => array(
152       'handler' => 'casetracker_views_handler_filter_case',
153     ),
154   );
155   $data['node']['project'] = array(
156     'title' => t('Case Tracker project'),
157     'help' => t('Whether the node is a casetracker project'),
158     'filter' => array(
159       'handler' => 'casetracker_views_handler_filter_project',
160     ),
161   );
165  * Implementation of hook_views_handlers().
166  */
167 function casetracker_views_handlers() {
168   return array(
169     'info' => array(
170       'path' => drupal_get_path('module', 'casetracker') .'/includes',
171     ),
172     'handlers' => array(
173       // ---------- Fields ----------
174       // fields: casetracker_case
175       'casetracker_views_handler_field_project_name' => array(
176         'parent' => 'views_handler_field',
177       ),
178       'casetracker_views_handler_field_user_name' => array(
179         'parent' => 'views_handler_field',
180       ),
181       'casetracker_views_handler_field_priority_name' => array(
182         'parent' => 'views_handler_field',
183       ),
184       'casetracker_views_handler_field_status_name' => array(
185         'parent' => 'views_handler_field',
186       ),
187       'casetracker_views_handler_field_type_name' => array(
188         'parent' => 'views_handler_field',
189       ),
190       'casetracker_views_handler_field_case_count' => array(
191         'parent' => 'views_handler_field',
192       ),
194       // ---------- Filters ----------
195       // filters: casetracker_case
196       'casetracker_views_handler_filter_user_options' => array(
197         'parent' => 'views_handler_filter_many_to_one',
198       ),
199       'casetracker_views_handler_filter_priority_options' => array(
200         'parent' => 'views_handler_filter_many_to_one',
201       ),
202       'casetracker_views_handler_filter_status_options' => array(
203         'parent' => 'views_handler_filter_many_to_one',
204       ),
205       'casetracker_views_handler_filter_type_options' => array(
206         'parent' => 'views_handler_filter_many_to_one',
207       ),
208       'casetracker_views_handler_filter_project_options' => array(
209         'parent' => 'views_handler_filter_many_to_one',
210       ),
212       // arguments: casetracker_case
213       'casetracker_views_handler_argument_status' => array(
214         'parent' => 'views_handler_argument_numeric',
215       ),
216       'casetracker_views_handler_argument_priority' => array(
217         'parent' => 'views_handler_argument_numeric',
218       ),
219       'casetracker_views_handler_argument_type' => array(
220         'parent' => 'views_handler_argument_numeric',
221       ),
223       // filters: casetracker_project
224       'casetracker_views_handler_filter_project_published' => array(
225         'parent' => 'views_handler_filter_equality',
226       ),
228       // filters: node-type
229       'casetracker_views_handler_filter_case' => array(
230         'parent' => 'views_handler_filter',
231       ),
232       'casetracker_views_handler_filter_project' => array(
233         'parent' => 'views_handler_filter',
234       )
235     ),
236   );