diff --git a/includes/MediaEntityTranslationHandler.inc b/includes/MediaEntityTranslationHandler.inc new file mode 100644 index 0000000..4ceccc8 --- /dev/null +++ b/includes/MediaEntityTranslationHandler.inc @@ -0,0 +1,58 @@ +getPathScheme() == 'media') { + $language = $GLOBALS[LANGUAGE_TYPE_CONTENT]; + $form_langcode = $this->getFormLanguage(); + $source_langcode = $this->getSourceLanguage(); + $translations = $this->getTranslations(); + + // If a translation in the current content language is missing we display + // a link to create it, unless we are not already doing it. + if ($language->language != $form_langcode && empty($source_langcode) && !isset($translations->data[$language->language])) { + $link = array( + 'title' => t('Add @language translation', array('@language' => $language->name)), + 'href' => $this->getEditPath() . '/add/' . $form_langcode . '/' . $language->language, + 'localized_options' => array('attributes' => array('class' => array('ctools-use-modal'))), + ); + $form['media_add_translation'] = array( + '#theme' => 'menu_local_action', + '#link' => $link, + '#weight' => -110, + '#prefix' => '', + ); + } + + // Hide unsupported elements. + $form['source_language']['#access'] = FALSE; + if (isset($form['actions']['delete_translation'])) { + $form['actions']['delete_translation']['#access'] = FALSE; + } + } + } +} diff --git a/media.info b/media.info index 8cba8d3..ad5bf37 100644 --- a/media.info +++ b/media.info @@ -10,6 +10,7 @@ files[] = includes/MediaBrowserPluginInterface.inc files[] = includes/MediaBrowserPlugin.inc files[] = includes/MediaBrowserUpload.inc files[] = includes/MediaBrowserView.inc +files[] = includes/MediaEntityTranslationHandler.inc files[] = includes/media_views_plugin_display_media_browser.inc files[] = includes/media_views_plugin_style_media_browser.inc files[] = tests/media.test diff --git a/media.module b/media.module index 4ef9f00..339fe43 100644 --- a/media.module +++ b/media.module @@ -85,6 +85,11 @@ function media_entity_info_alter(&$entity_info) { $entity_info['file']['view modes']['media_small'] = array('label' => t('Small'), 'custom settings' => TRUE); $entity_info['file']['view modes']['media_large'] = array('label' => t('Large'), 'custom settings' => TRUE); $entity_info['file']['view modes']['media_original'] = array('label' => t('Original'), 'custom settings' => TRUE); + + if (module_exists('entity_translation')) { + $entity_info['file']['translation']['entity_translation']['class'] = 'MediaEntityTranslationHandler'; + $entity_info['file']['translation']['entity_translation']['path schemes']['media'] = array('edit path' => 'media/%file/edit/%ctools_js'); + } } /**