diff --git a/includes/media.fields.inc b/includes/media.fields.inc index 0820fc1..e0c4bbc 100644 --- a/includes/media.fields.inc +++ b/includes/media.fields.inc @@ -392,7 +392,7 @@ function theme_media_widget($variables) { $output = ''; // The "form-media" class is required for proper Ajax functionality. - $output .= '
'; + $output .= '
'; $output .= drupal_render_children($element); $output .= '
'; diff --git a/js/media.js b/js/media.js index 4e7fdd9..f82065b 100644 --- a/js/media.js +++ b/js/media.js @@ -10,23 +10,43 @@ (function ($) { /** - * Attach behaviors to media element browse fields. + * Attach behaviors to media element upload fields. */ Drupal.behaviors.mediaElement = { attach: function (context, settings) { + var $context = $(context); + var elements; + + function initMediaBrowser(selector) { + $context.find(selector) + .once('media-browser-launch') + .siblings('.browse').show() + .siblings('.upload').hide() + .siblings('.attach').hide() + .siblings('.browse').bind('click', {configuration: settings.media.elements[selector]}, Drupal.media.openBrowser); + } + if (settings.media && settings.media.elements) { - $.each(settings.media.elements, function(selector) { - $(selector, context).once('media-browser-launch', function () { - var configuration = settings.media.elements[selector]; - // The user has JavaScript enabled, so display the browse field and hide - // the upload and attach fields which are only used as a fallback in - // case the user is unable to use the media browser. - $(selector, context).children('.browse').show(); - $(selector, context).children('.upload').hide(); - $(selector, context).children('.attach').hide(); - $(selector, context).children('.browse').once().bind('click', {configuration: configuration}, Drupal.media.openBrowser); - }); - }); + elements = settings.media.elements; + Object.keys(elements).forEach(initMediaBrowser); + } + }, + detach: function (context, settings, trigger) { + var $context = $(context); + var elements; + + function removeMediaBrowser(selector) { + $context.find(selector) + .removeOnce('media-browser-launch') + .siblings('.browse').hide() + .siblings('.upload').show() + .siblings('.attach').show() + .siblings('.browse').unbind('click', Drupal.media.openBrowser); + } + + if (trigger === 'unload' && settings.media && settings.media.elements) { + elements = settings.media.elements; + Object.keys(elements).forEach(removeMediaBrowser); } } };