diff --git a/js/plugins/media.views.js b/js/plugins/media.views.js index 1ea444065c0521b6ffaf8b7f9ffea23fc03b9558..f3816f178d13811dca89134f0b3c4d1bb835698f 100644 --- a/js/plugins/media.views.js +++ b/js/plugins/media.views.js @@ -93,7 +93,7 @@ Drupal.media.browser.views.select = function(view) { Drupal.media.browser.selectMedia([]); // Reset all 'selected'-status. - $('.view-content .media-item', view).removeClass('selected'); + $('.view-content .media-item', view).removeClass('selected').parent().attr('aria-checked', 'false'); } /** @@ -140,16 +140,15 @@ Drupal.media.browser.views.setup = function(view) { }); - // Catch the click on a media item - $('.view-content .media-item', view).bind('click', function () { + function onSelectMediaItem() { var fid = $(this).closest('.media-item[data-fid]').data('fid'), selectedFiles = new Array(); // Remove all currently selected files - $('.view-content .media-item', view).removeClass('selected'); + $('.view-content .media-item', view).removeClass('selected').parent().attr('aria-checked', 'false'); // Mark it as selected - $(this).addClass('selected'); + $(this).addClass('selected').parent().attr('aria-checked', 'true'); // Multiselect! if (Drupal.settings.media.browser.params.multiselect) { @@ -160,7 +159,7 @@ Drupal.media.browser.views.setup = function(view) { // If the current file exists in the list of already selected // files, we deselect instead of selecting if (currentFid == fid) { - $(this).removeClass('selected'); + $(this).removeClass('selected').parent().attr('aria-checked', 'false'); // If we change the fid, the later matching won't // add it back again because it can't find it. fid = NaN; @@ -173,7 +172,7 @@ Drupal.media.browser.views.setup = function(view) { selectedFiles.push(Drupal.media.browser.selectedMedia[index]); // Mark it as selected - $('.view-content *[data-fid=' + currentFid + '].media-item', view).addClass('selected'); + $('.view-content *[data-fid=' + currentFid + '].media-item', view).addClass('selected').parent().attr('aria-checked', 'true'); } } } @@ -194,6 +193,15 @@ Drupal.media.browser.views.setup = function(view) { } } Drupal.media.browser.selectMedia(selectedFiles); + } + + // Catch the click or space bar press on a media item. + $('.view-content .media-item', view).bind('click', onSelectMediaItem); + $('.view-content .media-item', view).parent().bind('keydown', function (evt) { + if (evt.which == 32 || evt.which == 13) { + onSelectMediaItem.call($('.media-item', this).get(0), evt); + return false; + } }); // Add the processed class, so we dont accidentally process the same element twice.. diff --git a/media-views-view-media-browser.tpl.php b/media-views-view-media-browser.tpl.php index b37f0cf52e568472ee734940e0db0cfcfcbceda3..feb0a2b1284ac58abd24fbd56868d5609db9493f 100644 --- a/media-views-view-media-browser.tpl.php +++ b/media-views-view-media-browser.tpl.php @@ -13,7 +13,7 @@
$row): ?> -
  • +
  • preview; ?>
  • diff --git a/media.views.inc b/media.views.inc index 9640dde2c0b1bb2fab75169bea3cdfaf65929e94..5fd2c02f2001fde097c56810f3ef12ce535d680d 100644 --- a/media.views.inc +++ b/media.views.inc @@ -98,6 +98,7 @@ function template_preprocess_media_views_view_media_browser(&$vars) { drupal_add_js(array('media' => array('files' => array_values($files))), 'setting'); // Add the browser parameters to the settings and that this display exists. + $params = media_get_browser_params(); drupal_add_js(array( 'media' => array( 'browser' => array( @@ -126,6 +127,7 @@ function template_preprocess_media_views_view_media_browser(&$vars) { $vars['wrapper_suffix'] = '
    '; $vars['list_type_prefix'] = '<' . $handler->options['type'] . ' id="media-browser-library-list" class="' . implode(' ', $class) . '">'; $vars['list_type_suffix'] = 'options['type'] . '>'; + $vars['aria_role'] = $params['multiselect'] ? 'checkbox' : 'radio'; // Run theming variables through a standard Views preprocess function. template_preprocess_views_view_unformatted($vars);