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
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
|
<?php
// $Id$
/**
* @file
* Provide views data for video.module.
*/
module_load_include('inc', 'content', '/includes/views/content.views');
/**
* Implementation of hook_views_handlers().
*/
function video_views_handlers() {
return array(
'info' => array(
'path' => drupal_get_path('module', 'video') . '/views',
),
'handlers' => array(
// field handlers
'video_views_handler_field_data' => array(
'parent' => 'content_handler_field',
),
),
);
}
/**
* Implementation of hook_views_data()
*/
function video_views_data() {
$data = array();
$data['video']['table']['group'] = t('Video');
$widgets = array('videoftp_widget', 'uploadfield_widget');
foreach (field_info_fields () as $field) {
if ($field['module'] == 'filefield' && isset($field['widget']['type']) && in_array($field['widget']['type'], $widgets)) {
$views_data = content_views_field_views_data($field);
$table_alias = content_views_tablename($field);
$db_info = content_database_info($field);
$title = t('@label (!name) thumbnail', array('@label' => t($field['widget']['label']), '!name' => $field['field_name']));
$types = array();
foreach (content_types () as $type) {
if (isset($type['fields'][$field['field_name']])) {
// TODO : run check_plain here instead of on the imploded string below ?
$types[] = $type['name'];
}
}
$additional_fields = array();
foreach ($db_info['columns'] as $column => $attributes) {
// Select explicitly enabled field columns.
if (!empty($attributes['views'])) {
$db_columns[$column] = $attributes;
}
// Ensure all columns are retrieved.
$additional_fields[$attributes['column']] = $attributes['column'];
}
$data[$table_alias][$field['field_name'] . '_thumbnail'] = array(
'group' => t('Video'),
'title' => $title,
// 'help' => t($field_types[$field['type']]['label']) .' - '. t('Appears in: @types', array('@types' => implode(', ', $types))),
// #931616
'help' => t('Appears in: @types', array('@types' => implode(', ', $types))),
);
$data[$table_alias][$field['field_name'] . '_thumbnail']['field'] = array(
'title' => $title,
'field' => $db_info['columns']['data']['column'],
'table' => $db_info['table'],
'handler' => 'video_views_handler_field_data',
'click sortable' => FALSE,
'content_field_name' => $field['field_name'],
'additional fields' => $additional_fields,
'access callback' => 'content_access',
'access arguments' => array('view', $field),
);
}
}
return $data;
}
|