diff --git modules/media_views/includes/views_handler_field_file_display.inc modules/media_views/includes/views_handler_field_file_display.inc new file mode 100644 index 0000000..71d2005 --- /dev/null +++ modules/media_views/includes/views_handler_field_file_display.inc @@ -0,0 +1,37 @@ + 'default'); + return $options; + } + + /** + * Provide display options. + */ + function options_form(&$form, &$form_state) { + $entity_info = entity_get_info('file'); + $view_modes = array(); + foreach ($entity_info['view modes'] as $view_mode => $view_mode_settings) { + $view_modes[$view_mode] = t($view_mode_settings['label']); + } + $form['file_display'] = array( + '#title' => t('View mode'), + '#description' => t("Define the view mode to display the media asset."), + '#type' => 'select', + '#default_value' => $this->options['file_display_view_mode'], + '#options' => $view_modes, + ); + + parent::options_form($form, $form_state); + } + + function render($values) { + $display = file_view_file(file_load($this->get_value($values)), $this->options['file_display_view_mode']); + return $this->render_link(drupal_render($display), $values); + } +} diff --git modules/media_views/includes/views_plugin_display_media_views.inc modules/media_views/includes/views_plugin_display_media_views.inc index f065cf3..8311050 100644 --- modules/media_views/includes/views_plugin_display_media_views.inc +++ modules/media_views/includes/views_plugin_display_media_views.inc @@ -80,7 +80,7 @@ class media_views_plugin_display extends views_plugin_display_page { switch ($form_state['section']) { case 'path': $form['path']['#description'] = t('This path gets passed to the media browser. We use the view name and display id to avoid collisions'); - $form['path']['#default_value'] = 'media/browser/views/'.$this->view->name.'/'.$this->display->id; + $form['path']['#default_value'] = 'media/browser/views/'.$this->view->name.'/'.$this->display->id; } } diff --git modules/media_views/media_views.info modules/media_views/media_views.info index e394c0a..261534d 100644 --- modules/media_views/media_views.info +++ modules/media_views/media_views.info @@ -10,4 +10,5 @@ dependencies[] = file_entity files[] = media_views.views.inc files[] = includes/views_plugin_display_media_views.inc -files[] = includes/views_plugin_style_media_views.inc \ No newline at end of file +files[] = includes/views_plugin_style_media_views.inc +files[] = includes/views_handler_field_file_display.inc \ No newline at end of file diff --git modules/media_views/media_views.module modules/media_views/media_views.module index 5b2b60e..a0a04e7 100644 --- modules/media_views/media_views.module +++ modules/media_views/media_views.module @@ -91,11 +91,11 @@ function media_views_media_browser_plugin_info() { } // We want to use CSS names to make jquery play nice $plugins[drupal_html_class($name . '-' . $display->display_title)] = array( - 'getMediaUrl' => $getMediaUrl, + 'getMediaUrl' => $getMediaUrl, '#weight' => -10, - 'multiselect' => FALSE, - 'title' => $display->display_title, - // 'view' => $display, + 'multiselect' => FALSE, + 'title' => $display->display_title, + // 'view' => $display, ); // Add some parameters to the browser $params['plugins'] = $plugins; @@ -333,4 +333,23 @@ function media_views_get_views_all() { } return $options; +} + +/** + * Implements hook_views_data() + */ +function media_views_views_data() { + $data = array(); + + // File Display + $data['file_managed']['display'] = array( + 'real field' => 'fid', + 'title' => t('Display'), + 'help' => t('Display the file.'), + 'field' => array( + 'handler' => 'views_handler_field_file_display', + 'click sortable' => FALSE, + ), + ); + return $data; } \ No newline at end of file