diff --git views/filefield.views.inc views/filefield.views.inc index 8bc22ff..f35dc11 100644 --- views/filefield.views.inc +++ views/filefield.views.inc @@ -11,6 +11,27 @@ * @{ */ + +/** + * Implementation of hook_views_data() + */ +function filefield_views_data() { + $data = array(); + + // Extend the files table with an icon field. + $data['files']['icon'] = array( + 'title' => t('Icon'), + 'help' => t('An icon corresponding to the file MIME type.'), + 'real field' => 'filemime', + 'field' => array( + 'handler' => 'filefield_handler_field_icon', + 'click sortable' => FALSE, + ), + ); + + return $data; +} + /** * Implementation of hook_views_handlers(). */ @@ -24,6 +45,9 @@ 'filefield_handler_field_data' => array( 'parent' => 'views_handler_field_node', ), + 'filefield_handler_field_icon' => array( + 'parent' => 'views_handler_field', + ), ), ); } diff --git views/filefield_handler_field_icon.inc views/filefield_handler_field_icon.inc new file mode 0 index 0000000..cecea83 0 --- /dev/null +++ views/filefield_handler_field_icon.inc @@ -0,0 +1,25 @@ +additional_fields['fid'] = 'fid'; + $this->additional_fields['filename'] = 'filename'; + $this->additional_fields['filesize'] = 'filesize'; + } + + function render($values) { + $value = $this->get_value($values); + $pseudo_file = array( + 'fid' => $this->get_value($values, 'fid'), + 'filemime' => $value, + 'filename' => $this->get_value($values, 'filename'), + 'filesize' => $this->get_value($values, 'filesize'), + ); + return theme('filefield_icon', $pseudo_file); + } +}