diff --git a/media_gallery.fields.inc b/media_gallery.fields.inc index f172915..ce6229f 100644 --- a/media_gallery.fields.inc +++ b/media_gallery.fields.inc @@ -13,7 +13,7 @@ function media_gallery_field_formatter_info() { return array( 'media_gallery' => array( 'label' => t('Gallery media'), - 'field types' => array('media'), + 'field types' => array('media', 'file'), 'settings' => array('file_view_mode' => 'media_gallery_thumbnail'), ), ); @@ -88,7 +88,12 @@ function media_gallery_field_formatter_view($entity_type, $entity, $field, $inst // Prepare the referenced file entities for viewing. $files = array(); - foreach ($items as $delta => $item) { + foreach ($items as $delta => &$item) { + // Since media gallery supports both the file field and the media field (for backward compatibility), + // this might be empty. + if (empty($item['file'])) { + $item['file'] = file_load($item['fid']); + } $file = $item['file']; // Pass along formatter reference field values from the gallery to the file. @@ -107,6 +112,7 @@ function media_gallery_field_formatter_view($entity_type, $entity, $field, $inst $files[$file->fid] = $file; } + unset($item); field_attach_prepare_view('file', $files, $file_view_mode); entity_prepare_view('file', $files); diff --git a/media_gallery.info b/media_gallery.info index c7b045c..c21ef79 100644 --- a/media_gallery.info +++ b/media_gallery.info @@ -5,7 +5,7 @@ package = Media dependencies[] = list dependencies[] = number -dependencies[] = media (<1.99) +dependencies[] = media dependencies[] = taxonomy dependencies[] = multiform diff --git a/media_gallery.install b/media_gallery.install index a633d63..d636857 100644 --- a/media_gallery.install +++ b/media_gallery.install @@ -177,13 +177,17 @@ function media_gallery_schema() { * Returns definitions for fields this module both creates and deletes. */ function _media_gallery_controlled_fields() { + $media_type = 'media'; + if (_media_gallery_media_version() == '2.x') { + $media_type = 'file'; + } $fields = array( // The media items that make up the gallery. 'media_gallery_media' => array( 'field_name' => 'media_gallery_media', 'cardinality' => FIELD_CARDINALITY_UNLIMITED, 'locked' => TRUE, - 'type' => 'media', + 'type' => $media_type, ), // The gallery description. 'media_gallery_description' => array( diff --git a/media_gallery.module b/media_gallery.module index 3cfd909..ac8e55d 100644 --- a/media_gallery.module +++ b/media_gallery.module @@ -133,6 +133,19 @@ function media_gallery_menu() { } /** + * Returns the version of the media module + */ +function _media_gallery_media_version() { + $media_info = system_get_info('module', 'media'); + if (strpos($media_info['version'], '7.x-2') === 0) { + return '2.x'; + } + else { + return '1.x'; + } +} + +/** * Implements hook_menu_alter(). */ function media_gallery_menu_alter(&$items) { @@ -849,9 +862,13 @@ function media_gallery_form($node, $form_state) { * Implements hook_form_alter(). */ function media_gallery_form_alter(&$form, &$form_state, $form_id) { - if (strpos($form_id, 'media_edit') === 0) { + $media_form_id = 'media_edit'; + if (_media_gallery_media_version() == '2.x') { + $media_form_id = 'file_entity_edit'; + } + if (strpos($form_id, $media_form_id) === 0) { // Act on both the regular and multiform versions of the edit form. - if ($form_id === 'media_edit' || preg_match('/^media_edit_[0-9]+$/', $form_id)) { + if ($form_id === $media_form_id || preg_match('/^'.$media_form_id.'_[0-9]+$/', $form_id)) { // Prepopulate the media_edit form with our best guess at the image title. if (!empty($form['media_title']) && empty($form['media_title'][LANGUAGE_NONE][0]['value']['#default_value'])) { $fid = $form['fid']['#value']; @@ -976,6 +993,17 @@ function media_gallery_form_media_gallery_node_form_alter(&$form, &$form_state) * Implements hook_form_FORM_ID_alter(). */ function media_gallery_form_media_edit_alter(&$form, &$form_state) { + _media_gallery_media_form_alter($form, $form_state, 'media'); +} + +/** + * Implements hook_form_FORM_ID_alter(). + */ +function media_gallery_form_file_entity_edit_alter(&$form, &$form_state) { + _media_gallery_media_form_alter($form, $form_state, 'file_entity'); +} + +function _media_gallery_media_form_alter(&$form, &$form_state, $type) { // Adjust the media edit form when it is shown within a gallery context. if (isset($form_state['media_gallery']['gallery'])) { // Remove the Delete button, since media entities can't be deleted when they @@ -992,9 +1020,9 @@ function media_gallery_form_media_edit_alter(&$form, &$form_state) { // Make sure to add this for the form-level submit handlers and also for the // button-level submit handlers of the "Save" button, in case those are // being used. - $form['#submit'][] = 'media_gallery_media_edit_submit'; + $form['#submit'][] = 'media_gallery_'.$type.'_edit_submit'; if (isset($form['actions']['submit']['#submit'])) { - $form['actions']['submit']['#submit'][] = 'media_gallery_media_edit_submit'; + $form['actions']['submit']['#submit'][] = 'media_gallery_'.$type.'_edit_submit'; } } // On the media gallery multiedit page, add a "Remove" checkbox to each item. @@ -1002,6 +1030,7 @@ function media_gallery_form_media_edit_alter(&$form, &$form_state) { _media_gallery_add_remove_checkbox($form, $form_state, $node); } } + /** * Add a "remove" checkbox to the media edit form. @@ -1059,6 +1088,10 @@ function media_gallery_media_edit_submit($form, &$form_state) { $form_state['redirect'] = 'media-gallery/detail/' . $form_state['media_gallery']['gallery']->nid . '/' . $form_state['values']['fid']; } +function media_gallery_file_entity_edit_submit($form, &$form_state) { + media_gallery_media_edit_submit($form, $form_state); +} + /** * Implements hook_field_attach_form(). */ diff --git a/media_gallery.pages.inc b/media_gallery.pages.inc index 38325ad..bd27ad8 100644 --- a/media_gallery.pages.inc +++ b/media_gallery.pages.inc @@ -282,8 +282,8 @@ function media_gallery_add_images($node) { if (empty($existing_fids[$fid])) { $file = Array(); $file['fid'] = $fid; - $file['title'] = null; - $file['data'] = ''; + $file['display'] = 1; + $file['description'] = ''; $items[] = $file; } } @@ -390,8 +390,13 @@ function media_gallery_media_page_multiedit($node) { // how to integrate that properly with the Multiform module. module_load_include('inc', 'media', 'includes/media.pages'); - // Build and process the form. - $form = media_page_multiedit($files); + if (_media_gallery_media_version() == '1.x') { + // Build and process the form. + $form = media_page_multiedit($files); + } + else { + $form = media_file_page_edit_multiple($files); + } // Override the page title set by media_page_multiedit() and return the form. drupal_set_title(t('Edit media for @title', array('@type' => $node->type, '@title' => $node->title)), PASS_THROUGH);