This is a followup of #2988431: [Meta] Accessibility plan for Media Library Widget

Problem/Motivation

‘Add media’ in widget should be a button, not a link. It could use more information that this opens a dialog to select media items.

Proposed resolution

Change the media library widget open element from a link to a button.

Remaining tasks

N/A

User interface changes

Improved semantics for assistive tech users.

API changes

none

Data model changes

none

Release notes snippet

N/A

Comments

seanB created an issue. See original summary.

seanb’s picture

Status: Active » Needs review
StatusFileSize
new32.05 KB

Here is a first patch.

1. Changed the media library open element from a link to a button. To do that, I found some issues with the way the library state was used and passed, so had to fix that too (pretty happy about this).
2. Changed the title of the media library for clarity.
3. Added progress messages to AJAX buttons in the widget so the widget AJAX action can benefit from #2973140: Convey AJAX progress messages to assistive technology. when it lands.
4. Added announcement when the widget selection is updated.
5. The open button is currently still removed when the maximum number of items reached. I tried having a disabled button, but these don't allow focus. Disabled buttons are also problematic for accesibility as far as I found. As long as adding items is allowed this patch keeps focus on the open button. When the open button is removed the focus is set to the remove button of the first media item. The announcement also mentions the maximum number of allowed items is reached. Hopefully this is clear enough.

Status: Needs review » Needs work

The last submitted patch, 2: 3035316-2.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

seanb’s picture

Status: Needs work » Needs review
StatusFileSize
new1.78 KB
new33.83 KB

Found a related issue that causes the upload form to break #2504115: AJAX forms should submit to $form['#action'] instead of <current> when the add form is loaded via an AJAX callback.
The attached patch should fix this.

andrewmacpherson’s picture

This issue has a broad title, and is a spin-off from a review issue with a similar broad title, to fix some of the issues found there.

Manual accessibility testing is time consuming, and having an issue where points 1-5 here relate to points A1-A2 and A11-A13 on the parent is just going to hold up accessibility review. There's a good chance reviewers will get lost, or confused about what's been addressed.

Can we give this a specific title about what it is fixing? Also narrow the scope and use separate child issues for the parent.

andrewmacpherson’s picture

Issue tags: +accessibility

Also, please tag the spin-off issues from the parent, otherwise the implementation won't get the attention people who want to contribute to accessibility.

andrewmacpherson’s picture

Issue tags: -accessibility +Accessibility

I'm getting lost already, keeping track of the numbers when jumping between the problem and resolution lists,

Please separate this into 5 issues. None of them are remotely related to each other, and they a mix of major and minor. There are possible quick-wins, and some which will require a bigger manual testing effort across multiple assistive tech or input modalities.

andrewmacpherson’s picture

Issue tags: +Needs issue rescope
andrewmacpherson’s picture

andrewmacpherson’s picture

Issue summary: View changes

I think we can treat #3016807: Improve refocus on submit buttons of Media Library Widget modals as the issue for "After selecting items from the library the focus shifts to the save button of the parent form. I would expect to be back in the widget to verify my selection". There's already plenty analysis there.

andrewmacpherson’s picture

Title: Improve accessibility of media library widget » ‘Add media’ in MediaLibraryWidget should be a button, not a link
Issue summary: View changes
Issue tags: -Needs issue rescope

Filed #3035446: Inform assistive tech users about the outcome of using the MediaLibraryWidget dialog to address "The text 5 items remaining is part of the element description but below the add button. After changing the selection the number of remaining items are not communicated to the user."

Which leaves this issue as "‘Add media’ in widget should be a button, not a link".

seanb’s picture

StatusFileSize
new16.4 KB
new20.76 KB

Thanks @andrewmacpherson. Attached a new patch with just to changes to add a button instead of a link. Since the media library is now no longer opened via a URL I needed to make extra changes to make sure the MediaLibraryState object can be passed around to various parts of the library. I think this it's a good thing we found this.

Update: To be more specific, the media add form and the view in the media library were fetching the state from the request instead of getting it passed from the media library UI builder. I consider this to be a bug we uncovered and fixed to implement this issue.

The actual code changes to fix the bugs are:

  1. +++ b/core/modules/media_library/src/Form/AddFormBase.php
    
    @@ -418,7 +418,7 @@ public function updateWidget(array &$form, FormStateInterface $form_state) {
    -    $state = MediaLibraryState::fromRequest($this->getRequest());
    +    $state = $form_state->get('media_library_state');
    
  2. +++ b/core/modules/media_library/src/MediaLibraryUiBuilder.php
    
    @@ -292,6 +300,12 @@ protected function buildMediaLibraryView(MediaLibraryState $state) {
    +    // Make sure the state parameters are set in the request so the view can
    +    // pass the parameters along in the pager, filters etc.
    +    $request = $view_executable->getRequest();
    +    $request->query->add($state->all());
    +    $view_executable->setRequest($request);
    
  3. +++ b/core/modules/media_library/src/Plugin/views/field/MediaLibrarySelectForm.php
    
    @@ -53,6 +53,9 @@ public function viewsForm(array &$form, FormStateInterface $form_state) {
    +    // Add the view to the form state.
    +    $form_state->set('view', $this->view);
    ...
    @@ -83,7 +86,7 @@ public function viewsForm(array &$form, FormStateInterface $form_state) {
    -    $query = \Drupal::request()->query->all();
    +    $query = $this->view->getRequest()->query->all();
    ...
    @@ -120,7 +123,7 @@ public static function updateWidget(array &$form, FormStateInterface $form_state
    -    $opener_id = MediaLibraryState::fromRequest(\Drupal::request())->getOpenerId();
    +    $opener_id = MediaLibraryState::fromRequest($form_state->get('view')->getRequest())->getOpenerId();
    
phenaproxima’s picture

  1. +++ b/core/modules/media_library/media_library.module
    @@ -67,23 +67,6 @@ function media_library_theme() {
    -    if ($view->current_display === 'widget') {
    -      $query = MediaLibraryState::fromRequest(\Drupal::request())->all();
    -      // If the current query contains any parameters we use to contextually
    -      // filter the view, ensure they persist across AJAX rebuilds.
    -      // The ajax_path is shared for all AJAX views on the page, but our query
    -      // parameters are prefixed and should not interfere with any other views.
    -      // @todo Rework or remove this in https://www.drupal.org/node/2983451
    -      if (!empty($query)) {
    -        $ajax_path = &$output['#attached']['drupalSettings']['views']['ajax_path'];
    -        $parsed_url = UrlHelper::parse($ajax_path);
    -        $query = array_merge($query, $parsed_url['query']);
    -        $ajax_path = $parsed_url['path'] . '?' . UrlHelper::buildQuery($query);
    -        if (isset($query['media_library_remaining'])) {
    -          $output['#attached']['drupalSettings']['media_library']['selection_remaining'] = (int) $query['media_library_remaining'];
    -        }
    -      }
    -    }
    

    It turns out this is dead code which should have been removed when we added vertical tabs to the media library. Keeping it here breaks this patch anyway, so I'm glad this is getting cleaned up now.

  2. +++ b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
    @@ -281,7 +283,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
    +        'library' => ['media_library/widget', 'core/drupal.dialog.ajax'],
    

    I get the feeling that the media_library/widget library should declare an outright dependency on core/drupal.dialog.ajax; I'm not sure under what circumstances it wouldn't need it. On the other hand, if we do that, we'll also need post-update hook in order to ensure that the library definition is refreshed. So maybe that is out of scope for now, and can be done in a follow-up (linked in the code here).

  3. +++ b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
    @@ -388,23 +390,29 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
    +      // Prevent errors from opening the library.
    +      '#limit_validation_errors' => [],
    

    This comment is wacky :) It should say "Allow the media library to be opened even if there are form errors."

  4. +++ b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
    @@ -481,7 +491,9 @@ public static function updateWidget(array $form, FormStateInterface $form_state)
    -    return $element;
    +
    +    return (new AjaxResponse())
    +      ->addCommand(new ReplaceCommand("#$wrapper_id", $element));
    

    Why is this needed? Couldn't we still just return $element, as long as the #ajax wrapper is set elsewhere?

  5. +++ b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
    @@ -519,6 +531,26 @@ public static function removeItem(array $form, FormStateInterface $form_state) {
    +    $library_ui = \Drupal::service('media_library.ui_builder')->buildUi($triggering_element['#media_library_state']);
    

    The service should be injected.

  6. +++ b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php
    @@ -519,6 +531,26 @@ public static function removeItem(array $form, FormStateInterface $form_state) {
    +      ->addCommand(new InvokeCommand("#drupal-modal", 'focus'));
    

    This line could use a comment. Also, is there any constant somewhere that refers to #drupal-modal, so that we don't need to hard-code it here?

  7. +++ b/core/modules/media_library/src/Plugin/views/field/MediaLibrarySelectForm.php
    @@ -53,6 +53,9 @@ public function viewsForm(array &$form, FormStateInterface $form_state) {
    +    // Add the view to the form state.
    +    $form_state->set('view', $this->view);
    

    I think this comment needs to be expanded, at least with a @see so we know where it's being used, and how.

andrewmacpherson’s picture

Issue summary: View changes

#12 - right, that all sounds like a big job which has benefits outside of a11y.

As far as the a11y triage, this one is a should-have rather than a must have. Confusion between links and buttons is a frustration for lots of assistive tech users, but not a brick-wall barrier. Many screen reader users are accustomed to the fact that developers use links and buttons interchangeably.

If it's too difficult to change this to a proper HTML <button>, another option is to use <a role="button"> but then it needs an extra keypress handler so it responds to the spacebar as expected. A HTML <button> is still preferred; the first rule of ARIA is don't use ARIA.

Updating issue summary, and parent issue with a11y should-have triage.

andrewmacpherson’s picture

Also re. #12:

I needed to make extra changes to make sure the MediaLibraryState object can be passed around to various parts of the library. I think this it's a good thing we found this.

If you need to rescope the issue as an architectural change for robustness, that's ok. The button-vs-link issue can be called the initial use-case which needs it.

seanb’s picture

#12 - right, that all sounds like a big job which has benefits outside of a11y.

It actually wasn't that big of a change. There were 2 places using the request object directly to get the MediaLibraryState instead of getting it passed from the media library. I wouldn't call it an architectural change, more like a bug we uncovered by doing this.

I'll update my comment to better reflect this.

seanb’s picture

Assigned: Unassigned » seanb
Status: Needs review » Needs work

NW for #13.

seanb’s picture

Status: Needs work » Needs review
StatusFileSize
new5.09 KB
new20.17 KB

#13
1. Turns out I was wrong and we still need this code when filtering and sorting the view. Sorry about that.
2. Fixed. Do we really need a post update, we already added a bunch of library changes without that?
3. Fixed.
4. Fixed. In a previous patch the announcement and focus were also set here, but those are other issues now.
5. This is a static method.
6. Fixed.
7. Fixed.

Status: Needs review » Needs work

The last submitted patch, 18: 3035316-18.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

seanb’s picture

Status: Needs work » Needs review
Issue tags: +Needs accessibility review
StatusFileSize
new2.91 KB
new24.34 KB

Fixed the tests added in #2996029: Add oEmbed support to the media library. Also implemented a better fix for #2805219: Some dialogs do not receive focus when opened on the open button now I actually know what the problem was.

andrewmacpherson’s picture

Also implemented a better fix for #2805219: Some dialogs do not receive focus when opened on the open button now I actually know what the problem was.

Can you please explain this? There are a bunch of other dialogs that need fixing too - please comment at [#1805219].

Also, both of those changes seem out of scope for this issue.

Update: sorry, I understand what the test fixes are about now.

andrewmacpherson’s picture

andrewmacpherson’s picture

StatusFileSize
new5.46 KB

Patch #20 affects a couple of files in Layout Builder module, which surely isn't right.
The interdiff in #20 isn't right. Here's what I get by comparing #18 and #20.

seanb’s picture

StatusFileSize
new989 bytes
new21.76 KB

I forgot to pull the latest 8.7.x changes in my branch before creating 3035316-20.patch. Sorry about that. Rerolled and made sure I didn't forget this time. New patch attached.

Can you please explain this? There are a bunch of other dialogs that need fixing too - please comment at [#1805219]

I think you mean #2805219: Some dialogs do not receive focus when opened? Also left a comment there, but just to be clear. Here is a copy of that comment:

-------------------------

Just found out what the problem was for the media library. By default, jQuery UI dialog moves the focus to the first tabbable element in the dialog, which is good.
In core/misc/ajax.js however, we have code to move the focus to the element that triggered an AJAX request.

    // If the focus hasn't be changed by the ajax commands, try to refocus the
    // triggering element or one of its parents if that element does not exist
    // anymore.
    if (
      !focusChanged &&
      this.element &&
      !$(this.element).data('disable-refocus')
    ) {
      ...
    }

So, in order to fix this problem, elements triggering a dialog need to set the data attribute data-disable-refocus to true.

We could also change core/misc/ajax.js to skip refocus when a dialog is opened, but there is a good chance this could break implementations already working around this problem. For now I've at least added the data attribute to the patch changing the media library open button in #3035316: ‘Add media’ in MediaLibraryWidget should be a button, not a link. We should probably continue the discussion here to see if there is a generic way to fix this without breaking existing implementations.

andrewmacpherson’s picture

StatusFileSize
new21.16 KB
new21.16 KB

This patch updates #20.

The exact way I did it was:

git apply --3way 3035316-20.patch
git reset core/modules/layout_builder
git checkout core/modules/layout_builder

The last submitted patch, 25: 3035316-24.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

Status: Needs review » Needs work

The last submitted patch, 25: 3035316-24.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

The last submitted patch, 25: 3035316-24.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

seanb’s picture

Status: Needs work » Needs review

Think we cross-posted. #24 seems to be green, back to needs review for that one.

phenaproxima’s picture

+++ b/core/modules/media_library/media_library.module
@@ -69,8 +69,8 @@ function media_library_theme() {
+    if (strpos($view->current_display, 'widget') === 0) {

Nice future-proofing. :)

Can't find anything else glaringly wrong with the code in this patch. Once accessibility review is complete, this is RTBC.

andrewmacpherson’s picture

Status: Needs review » Needs work

I'm having trouble applying this patch for manual testing...

None of the patches from #24 or #25 apply now.
I've lost track of exactly which patch is which, so I've assumed that @seanb's patch from #24 is the best one.
It's currently green, but fails to apply on my machine, and I currently get a 403 access denied when I try to requeue tests here.
I got confused looking at git *.rej trying to re-roll it.

I'll have to come back to this later. Can one of you try a re-roll if needed?

+  /**
+   * AJAX callback to open the widget when the selection changes.

I don't think this makes sense. Isn't it a "callback to open the widget when the button is pressed"?

oknate’s picture

StatusFileSize
new695 bytes
new17.92 KB

Rerolling #24. There was one conflict in MediaLibraryTest around line 489. I think #24 was adding an extra assertWaitOnAjaxRequest() (which I kept).

$page->find('css', '.ui-dialog-titlebar-close')->click();
    $assert_session->assertWaitOnAjaxRequest();
    $assert_session->elementExists('css', '.media-library-open-button[name^="field_unlimited_media"]')->click();
    $assert_session->assertWaitOnAjaxRequest();

I think testbot is out of commission today, FYI. Also, I was just re-rolling and adding text change based on #31. I haven't tested the patch.

seanb’s picture

Status: Needs work » Needs review
StatusFileSize
new0 bytes
new18.41 KB

Another reroll for #24. Also fixed the nit from #31.

Not sure what happened with with the reroll in #32, but the quickest way for me to fix it was to start from the last working patch. Sorry!

rainbreaw’s picture

seanB and phenaproxima showed this one to me on a google hangout today for accessibility review, as well. In this patch, the code is using input type="submit" (which is a native HTML button), and behaving as expected.

We discussed the relationship of this issue to #3016807: Improve refocus on submit buttons of Media Library Widget modals. #3016807: Improve refocus on submit buttons of Media Library Widget modals is, in essence, blocked by this issue unless doing a workaround with a fake item, which increases the priority of this item.

Version: 8.7.x-dev » 8.8.x-dev

Drupal 8.7.0-alpha1 will be released the week of March 11, 2019, which means new developments and disruptive changes should now be targeted against the 8.8.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

phenaproxima’s picture

Issue tags: +blocker

This now officially blocks #3016807: Improve refocus on submit buttons of Media Library Widget modals, so I'm escalating it to the same priority.

phenaproxima’s picture

Priority: Normal » Major
  1. +++ b/core/modules/media_library/src/Form/AddFormBase.php
    @@ -420,7 +420,7 @@ public function updateWidget(array &$form, FormStateInterface $form_state) {
    -    $state = MediaLibraryState::fromRequest($this->getRequest());
    +    $state = $form_state->get('media_library_state');
    

    After this change, I think AddFormBase.php will no longer need to use the MediaLibraryState class, so can we remove the use statement?

Looks correct to me otherwise. Now that we have run this through an accessibility review, RTBC once this is fixed.

seanb’s picture

Issue tags: -Needs accessibility review
StatusFileSize
new1.33 KB
new18.63 KB

Ran the code check and removed some use statements that were no longer needed.

phenaproxima’s picture

Status: Needs review » Reviewed & tested by the community
Issue tags: +backport

Nice.

Tagging for backport to 8.7.x since this is a major accessibility improvement in an experimental module, and therefore may be eligible to land in alpha.

alexpott’s picture

Version: 8.8.x-dev » 8.7.x-dev
Status: Reviewed & tested by the community » Fixed

Committed and pushed 58d6b44288 to 8.8.x and 379e676d9b to 8.7.x. Thanks!

This looks like a good change and unblocks more media library work - go team :)

Credited @phenaproxima for code review and @rainbreaw for jumping on a call to discuss accessibility - thanks!

  • alexpott committed 58d6b44 on 8.8.x
    Issue #3035316 by seanB, andrewmacpherson, oknate, phenaproxima,...

  • alexpott committed 379e676 on 8.7.x
    Issue #3035316 by seanB, andrewmacpherson, oknate, phenaproxima,...
phenaproxima’s picture

Issue summary: View changes

  • alexpott committed 1e0ad95 on 8.8.x
    Revert "Issue #3035316 by seanB, andrewmacpherson, oknate, phenaproxima...

  • alexpott committed ed1be66 on 8.7.x
    Revert "Issue #3035316 by seanB, andrewmacpherson, oknate, phenaproxima...
alexpott’s picture

Status: Fixed » Needs work

@phenaproxima asked for a revert as an AJAX bug has been found.

phenaproxima’s picture

Issue tags: +Needs tests

Tagging for tests and a fail patch.

seanb’s picture

Status: Needs work » Needs review
Issue tags: -Needs tests
StatusFileSize
new8.28 KB
new22.01 KB
new25.75 KB

Attached is a fix for the issue. The cause is this is #2504115: AJAX forms should submit to $form['#action'] instead of <current> but there are ways to work around that problem. Please review!

phenaproxima’s picture

  1. +++ b/core/modules/media_library/src/Form/AddFormBase.php
    @@ -114,6 +115,13 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    +    // Since the media library can be loaded via AJAX, we force the action URL
    +    // of the add form to the media library controller so we now for sure the
    +    // form is actually on the page.
    +    $form['#action'] = Url::fromRoute('media_library.ui', [], [
    +      'query' => $form_state->get('media_library_state')->all(),
    +    ])->toString();
    

    This comment is a bit confusing. I would suggest we rephrase it thusly: "The media library is loaded via AJAX, which means that the form action URL defaults to the current URL. However, to add media, we always need to submit the form to the media library URL, not whatever the current URL may be."

  2. +++ b/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php
    @@ -628,18 +629,23 @@ public function testWidgetUpload() {
    +    // Assert the upload form is not visible for default tab type_three without
    +    // the proper permissions.
    +    $assert_session->fieldNotExists('files[upload][]');
    +    $assert_session->pageTextNotContains('Maximum 2 files.');
    

    Wouldn't $assert_session->elementNotExists('css', 'media-library-add-form-selector') be a little more robust here?

  3. +++ b/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php
    @@ -628,18 +629,23 @@ public function testWidgetUpload() {
    +    // Assert the upload form is not visible for the non-file based media type
    +    // type_one.
    +    $page->clickLink('Type One');
    +    $assert_session->assertWaitOnAjaxRequest();
    +    $assert_session->fieldNotExists('files[upload][]');
    

    Same here?

seanb’s picture

StatusFileSize
new6.4 KB
new27.61 KB

Fixed #49.

Also noticed a new issue with the solution introduced in #48. Since we are now using the media library state to create the #action URL, we must validate the presence there as well (not in getMediaType() like before). To fix this, I've added a new getMediaLibraryState() method to the form that can now be called instead of using $form_state->get('media_library_state') directly.

The fail patch is still 3035316-48-test-only.patch. The attached patch fixes the state validation issue introduced in #48.

The last submitted patch, 48: 3035316-48-test-only.patch, failed testing. View results

The last submitted patch, 48: 3035316-48.patch, failed testing. View results

phenaproxima’s picture

+++ b/core/modules/media_library/src/Form/AddFormBase.php
@@ -431,6 +434,23 @@ public function updateWidget(array &$form, FormStateInterface $form_state) {
+  /**
+   * Get the media library state from the form state.
+   *
+   * @param \Drupal\Core\Form\FormStateInterface $form_state
+   *   The current form state.
+   *
+   * @return \Drupal\media_library\MediaLibraryState
+   *   The media library state.
+   */
+  protected function getMediaLibraryState(FormStateInterface $form_state) {

This needs a @throws clause to explain why the InvalidArgumentException is thrown.

My only other question here is this: I don't quite see how the tests are covering the regression we are trying to fix since this got reverted. As I understand it, the problem would manifest if you open the media library and immediately try to add media, without changing to another tab. Are our tests actually testing that interaction? I imagine that they are not, because if they were, we would presumably have caught this bug before the initial commit.

seanb’s picture

StatusFileSize
new1.02 KB
new27.96 KB

Added @throws to the doc blocks (getMediaType() also needed it).

+++ b/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php
@@ -662,12 +668,10 @@ public function testWidgetUpload() {
     // Assert we can upload a file to media type three.
-    $page->clickLink('Type Three');
-    $assert_session->assertWaitOnAjaxRequest();
     $assert_session->elementExists('css', '.media-library-add-form--without-input');
     $assert_session->elementNotExists('css', '.media-library-add-form--with-input');
     $page->attachFileToField('Add files', $this->container->get('file_system')->realpath($png_image->uri));

This is the part that removes the click on a tab before uploading, which caused 3035316-48-test-only.patch to fail.

phenaproxima’s picture

Status: Needs review » Reviewed & tested by the community

Okay. I feel pretty confident about this. The fail patch makes sense; @seanB showed me where we are changing the tests to ensure that an upload works even if you have not changed tabs (which is what manifested the AJAX bug we have subsequently fixed). Sean also tells me that we test what happens if, after that initial upload, you click to another tab and add more media (it's the part preceded by the comment Verify we can only upload the files allowed by the media type.).

RTBC when green.

alexpott’s picture

Status: Reviewed & tested by the community » Needs work
+++ b/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php
@@ -658,16 +663,15 @@ public function testWidgetUpload() {
     // Assert we can upload a file to media type three.

I think it is worth adding a comment that we are testing uploading from the initial media library form before clicking on any tab. It'd be pretty easy to add this click back in and lose this test coverage.

seanb’s picture

Status: Needs work » Needs review
StatusFileSize
new962 bytes
new28.03 KB

Changed the comment to make it clear we are testing the default tab.

phenaproxima’s picture

Status: Needs review » Reviewed & tested by the community
StatusFileSize
new124.91 KB

Make it so!

alexpott’s picture

Status: Reviewed & tested by the community » Fixed

Committed and pushed 05fa218275 to 8.8.x and b159f8162e to 8.7.x. Thanks!

Thanks for addressing the regression so quickly and new test coverage ftw.

  • alexpott committed 05fa218 on 8.8.x
    Issue #3035316 by seanB, andrewmacpherson, oknate, phenaproxima,...

  • alexpott committed b159f81 on 8.7.x
    Issue #3035316 by seanB, andrewmacpherson, oknate, phenaproxima,...

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

sam152’s picture

For the benefit of any watchers, I've filed a follow-up bug which I believe was caused by this #3094059: The media library widget "Add media" button incorrectly submits form handlers of forms it is embedded in.