If a module defines a new contextual likes in a *.links.contextual.yml file they are not available unless 1 of these things happens:

  1. The user's permissions change
  2. The user opens a new browser session
  3. The user logs out and in.

This is because the contextual links are cached on the client-side and the cache is not cleared unless the hash created by the user's permissions hash changes.

I found while working on #2753941: [Experimental] Create Outside In module MVP to provide block configuration in Off-Canvas tray and expand site edit mode which creates a new contextual link.

This could be fixed by a relying on a hash of current modules installed in addition to permissions.

CommentFileSizeAuthor
#80 2773591-80.patch5.82 KBsteyep
#74 interdiff_73-74.txt2.66 KBsourabhjain
#74 2773591-74.patch5.82 KBsourabhjain
#73 2773591-73.patch5.55 KBion.macaria
#71 2773591-71.patch8.11 KB_utsavsharma
#71 interdiff_70-71.txt793 bytes_utsavsharma
#70 2773591-70.patch8.11 KBion.macaria
#69 2773591-69.patch0 bytesion.macaria
#66 drupal-95x-2773591-66-new-contextual-links.patch5.48 KBjames.williams
#61 2773591-61.patch3.97 KBsmustgrave
#61 2773591-61-tests-only.patch1.05 KBsmustgrave
#61 interdiff-58-61.txt3.28 KBsmustgrave
#58 2773591-58.patch5.78 KBsmustgrave
#58 interdiff-54-58.txt501 bytessmustgrave
#54 2773591-54-D10.patch5.63 KBsmustgrave
#54 2773591-54.patch8.11 KBsmustgrave
#54 interdiff-51-54.txt0 bytessmustgrave
#51 2773591-51.patch8.02 KBsmustgrave
#51 interdiff-43-51.txt5.15 KBsmustgrave
#48 interdiff_43-48.txt619 bytessourabhjain
#48 2773591-48.patch8.11 KBsourabhjain
#43 interdiff-42-43.txt959 bytesmarcvangend
#43 2773591-43.patch8.14 KBmarcvangend
#42 2773591-42.patch8.09 KBkarishmaamin
#41 2773591-41.patch9.49 KBsmustgrave
#40 2773591-40.patch9.53 KBsmustgrave
#38 reroll_diff_2773591_21-38.txt5.07 KBankithashetty
#38 2773591-38.patch7.29 KBankithashetty
#21 2773591-21.patch6.73 KBtedbow
#21 interdiff-2773591-18-19.txt3.84 KBtedbow
#18 drupal-2773591-18-new-contextual-links.patch2.87 KBpk188
#13 interdiff-2773591-7-13.txt1.32 KBjames.williams
#13 drupal-2773591-13-new-contextual-links.patch2.98 KBjames.williams
#7 drupal-2773591-7-new-contextual-links.patch2.84 KBsweetchuck

Issue fork drupal-2773591

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

tedbow created an issue. See original summary.

dawehner’s picture

The alternative I could like to propose is to calculate a hash of all contextual links and send this along when the contextual links are rendered. This also fixes the problem that clearing the cache when changing the YML file, doesn't cause the new links to appear.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.0-beta1 was released on August 3, 2016, which means new developments and disruptive changes should now be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

xjm’s picture

The user opens a new browser session
The user logs out and in.

With the Outside In patch, neither of these is sufficient for me to get the contextual links to work. It only works if (as @effulgentsia suggested), I enable the module, do a full site cache clear through the UI, and THEN open a new browser session and log in again.

I am also not sure this is true of all contextual links. Using these steps:

  1. Install minimal through the UI with this patch applied, 8.2.x HEAD.
  2. Enable contextual (and optionally toolbar).
  3. Return to the frontpage. Contextual links are available on the blocks immediately.
  4. Install the Menu UI and the modules it depends on.
  5. Return to the frontpage. Contextual links for editing menus are available immediately.
  6. Install Outside In (and toolbar if you did not already). No contextual links for the module and no sidebar possible.

Note that I tried it both with and without Toolbar enabled at the start, just in case.

So I do not think this is a core bug. Thus far it appears to only happen with Outside In.

effulgentsia’s picture

I tried a different variation of #4 (all of the following steps except #1 done through UI, not Drush):

  1. In standard.info.yml, comment out the views_ui dependency.
  2. Install Standard.
  3. Add the Who's Online block (which is a View) to the left sidebar.
  4. Go to the homepage, and notice that the Who's Online block only contains the "Configure Block" contextual link.
  5. Enable Views UI module.
  6. Go back to homepage, and notice that the Who's Online block still only contains the "Configure Block" contextual link, and does not contain the "Edit View" link that it now should have thanks to Views UI module.
  7. "Clear all caches" via /admin/config/development/performance.
  8. Go back to homepage, and notice that the Who's Online block now contains the "Configure Block" contextual link and the "Edit View" link.

So yes, #4's conclusion seems correct that Outside In is behaving differently, because a cache clear alone isn't enough, like it is with Views UI. And instead, Outside In seems to also require some client-side invalidation (per #2753941-193: [Experimental] Create Outside In module MVP to provide block configuration in Off-Canvas tray and expand site edit mode), which Views UI does not seem to require.

dawehner’s picture

Here is a way of reproducing that I stumble and get smad (sad and mad) about all the time.

  • Write a new custom module ✓
  • Install it ✓
  • Decide to expose contextual links ✓
  • Goto the browser page to see whether contextual links are enabled ✓
  • Now enter something into a links.contextual.yml file ✓
  • drush cr ✓
  • Goto the page, nothing apppears
  • drush cr ✓
  • Goto the page, nothing happens
  • Remember to use window.sessionStorage.clear()

While there might be some weird problem of the outside in module.

To be honest I somehow cannot believe that views_ui actually is able to fix that problem :)

sweetchuck’s picture

Issue tags: +Drupalaton
StatusFileSize
new2.84 KB

This is what I have done so far. I am not sure about this is the right direction

dawehner’s picture

@Sweetchuck
This is looking great. I would argue that we maybe still want to vary to links in cache, also when the permissions change.

effulgentsia’s picture

In addition to the client-side work in #7, there's also the problem that ContextualLinkManager::getContextualLinkPluginsByGroup() calls $this->cacheBackend->set() without passing $this->cacheTags. As a result, when clearCachedDefinitions() is called, such as during module install, these cache entries aren't cleared. Additionally, ContextualLinkManager should probably also extend clearCachedDefinitions() to also clear its local properties, such as $this->pluginsByGroup.

wim leers’s picture

Issue summary: View changes
Issue tags: +Needs tests, +Needs JavaScript testing

The correct solution is already listed in the IS:

This could be fixed by a relying on a hash of current modules installed in addition to permissions.

That would solve the reported problem.


However, @dawehner is right that his proposed solution in #2 would go even further: it'd also fix the problem of modules having updated their set of contextual links and those changes not being reflected for end users.

So, the patch in #7 is correct in that respect. But it sadly also removes the checking of permissionsHash, which is absolutely incorrect. @dawehner also pointed this out in #8, but he seems to think it's more optional than it is. It's essential.

This shows that we really want JS test coverage of this, which we now can, because we now have JS tests that can use window.sessionStorage! :)

wim leers’s picture

Status: Active » Needs work

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.0-alpha1 will be released the week of January 30, 2017, which means new developments and disruptive changes should now be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

james.williams’s picture

Status: Needs work » Needs review
StatusFileSize
new2.98 KB
new1.32 KB

Here's a patch that checks both the permissions hash, and the hash of contextual link plugins, as that was fairly easy to put together. It doesn't go as far as checking a hash of links themselves, sorry.

I've assumed it's ok to just deal with the permissions and plugins hashes separately rather than sticking them somewhere together.

Status: Needs review » Needs work

The last submitted patch, 13: drupal-2773591-13-new-contextual-links.patch, failed testing. View results

james.williams’s picture

Aw, patch needs a re-roll as it was actually made against 8.3.x, sorry!

james.williams’s picture

Issue tags: +Needs reroll
tedbow’s picture

@james.williams thanks for starting work on this again.

We have 2 todo's about this issue in the outside_in module. I wonder if we removed the code, search for "https://www.drupal.org/node/2773591", If the tests would still pass.

Though I wonder in our tests if it is fully covered because I am not sure if we are making request before the module is enabled.

It would be interesting to have 2 patches

1) Just remove code that points to this issue in outside_in. Don't include any changes from above patch. The test should fail(if not we should add test)

2). remove code that points to this issue in outside_in. combined with the patch above. The tests should pass.

pk188’s picture

Status: Needs work » Needs review
Issue tags: -Needs reroll
StatusFileSize
new2.87 KB

Re rolled.

wim leers’s picture

Status: Needs review » Needs work

Still needs tests.

+++ b/core/modules/contextual/contextual.module
@@ -65,7 +66,13 @@ function contextual_page_attachments(array &$page) {
+  $page['#attached']['drupalSettings']['contextual']['linkDefinitionsHash'] = hash('sha256', Settings::getHashSalt() . implode(':', array_keys($cl_definitions)));

Do we really need to salt this?

tedbow’s picture

Assigned: Unassigned » tedbow

Working on a test

tedbow’s picture

Status: Needs work » Needs review
StatusFileSize
new3.84 KB
new6.73 KB

This is not working for me.

Here is test that I think proves it does not work.

I added the check for a contextual link after a module is installed to \Drupal\Tests\contextual\FunctionalJavascript\ContextualLinksTest::testContextualLinksVisibility
I changed a bunch of existing lines in the test because this line was repeated:
$contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button');
Since this is actually checking for the button and not the links and we are now testing for the actual links it would have confusing to leave the variable name.
So I changed it to $contextualButton

In the test I added enabling the new contextual_test module which simply provides a contextual link.
It does not show after the page reloaded.

This confirms what I have seen manually that the link does not show up until I add a new block. The old blocks do not get the link.

Settings to Needs Review for the test to run but probably Needs Work if the test fails and others think the test is correct.

tedbow’s picture

Assigned: tedbow » Unassigned

Status: Needs review » Needs work

The last submitted patch, 21: 2773591-21.patch, failed testing. View results

sardara’s picture

We have in our project a similar issue, but it's caused by the fact that some permissions come from the organic group module.
This leads to:

  • wrong (not updated) links are shown when a user membership change (for example, it becomes a moderator of a group);
  • (less severe, but still applies) when you are logged in as user1 which has a certain role in a group, and then you log out and log in (using the same browser) as user2 which has a different set of permissions in that same group, you will again get an outdated list of links.

A solution might be to swap out the user_permissions_hash_generatorservice to include the og permissions/roles, but that will mess with the cache_context.user.permissions and we don't think it's the proper approach.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.0-alpha1 will be released the week of July 31, 2017, which means new developments and disruptive changes should now be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.0-alpha1 will be released the week of January 17, 2018, which means new developments and disruptive changes should now be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

wim leers’s picture

Let's get this moving forward again. This would remove two @todos from the Settings Tray module and would help the Drupal contrib ecosystem (see #24) too.

wim leers’s picture

Priority: Normal » Major
pfrenssen’s picture

I agree that limiting this use case only to enabling / disabling modules is not enough. A very simple use case we are having in Organic Groups is affected by this:

  1. Visit a group page as non-member of a group: you won't have the contextual links available that allows you to perform actions that a member can (such as adding group content etc.).
  2. Join the group.
  3. The contextual links menu should now show the newly available options, but the old menu is still shown.

Joining and leaving a group are very trivial actions for a user in a site that uses OG. It basically makes the use of contextual links impossible for managing group related stuff.

Neither checking the list of enabled modules, or hashing the set of available contextual menus will solve this case. The ideal solution would be to have a cache context / cache tag like system. But being able to nuke the links from the PHP side would be a good workaround. Also having an event that fires when the hash is calculated would be a good idea, then developers can hook into it if they have any need for customizing the hash generation.

pfrenssen’s picture

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

Drupal 8.6.0-alpha1 will be released the week of July 16, 2018, which means new developments and disruptive changes should now be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

tim.plunkett’s picture

Issue tags: +DrupalWTF

Saw someone else get bit by this again today

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.

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

Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.1.x-dev

Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 9.1.x-dev » 9.2.x-dev

Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

nwom’s picture

#21 looks like it needs a re-roll for both 9.1.x/9.2.x

ankithashetty’s picture

Status: Needs work » Needs review
StatusFileSize
new7.29 KB
new5.07 KB

Re-rolled patch in #21 as suggested in #37... Thanks!

Version: 9.2.x-dev » 9.3.x-dev

Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

smustgrave’s picture

StatusFileSize
new9.53 KB

Updated the es6 file.

smustgrave’s picture

StatusFileSize
new9.49 KB

Typo in patch sorry!

karishmaamin’s picture

StatusFileSize
new8.09 KB

Tried to fix Custom Commands failure in #40

marcvangend’s picture

StatusFileSize
new8.14 KB
new959 bytes

I think this should fix the custom commands failures. At least commit-code-check.sh passes on my local system.

Status: Needs review » Needs work

The last submitted patch, 43: 2773591-43.patch, failed testing. View results

smustgrave’s picture

So we may be seeing this error again. But it’s not consistent as some devs are seeing while others not. Is there a cache table we could check?

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.0-rc1 was released on November 26, 2021, which means new developments and disruptive changes should now be targeted for the 9.4.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

larowlan’s picture

  1. +++ b/core/modules/contextual/contextual.module
    @@ -66,7 +67,13 @@ function contextual_page_attachments(array &$page) {
    +  $cl_manager = \Drupal::service('plugin.manager.menu.contextual_link');
    +  $cl_definitions = $cl_manager->getDefinitions();
    

    I don't think we need the intermediary $cl_manager variable for a single use

  2. +++ b/core/modules/contextual/contextual.module
    @@ -66,7 +67,13 @@ function contextual_page_attachments(array &$page) {
    +  ksort($cl_definitions);
    ...
    +  $page['#attached']['drupalSettings']['contextual']['linkDefinitionsHash'] = hash('sha256', Settings::getHashSalt() . implode(':', array_keys($cl_definitions)));
    

    ubernit, but we don't need the cl_ prefix here in my opinion

  3. +++ b/core/modules/contextual/js/contextual.es6.js
    @@ -21,8 +21,18 @@
    -  if (cachedPermissionsHash !== permissionsHash) {
    -    if (typeof permissionsHash === 'string') {
    +  const cachedDefinitionsHash = storage.getItem(
    +    'Drupal.contextual.linkDefinitionsHash',
    

    We need to retain the old hash too right? For when permissions are changed.

    So I think we need both flavours

  4. +++ b/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php
    @@ -39,13 +39,13 @@ protected function setUp(): void {
    -    $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button');
    -    $this->assertEmpty($contextualLinks);
    +    $contextualButton = $this->assertSession()->waitForElement('css', '.contextual button');
    +    $this->assertEmpty($contextualButton);
    ...
    -    $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button');
    -    $this->assertEmpty($contextualLinks);
    +    $contextualButton = $this->assertSession()->waitForElement('css', '.contextual button');
    +    $this->assertEmpty($contextualButton);
    
    @@ -54,13 +54,33 @@ public function testContextualLinksVisibility() {
    -    $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button');
    -    $this->assertNotEmpty($contextualLinks);
    +    $contextualButton = $this->assertSession()->waitForElement('css', '.contextual button');
    +    $this->assertNotEmpty($contextualButton);
    ...
    -    $contextualLinks = $this->assertSession()->waitForElement('css', '.contextual button');
    -    $this->assertNotEmpty($contextualLinks);
    +    $contextualButton = $this->assertSession()->waitForElement('css', '.contextual button');
    +    $this->assertNotEmpty($contextualButton);
    

    These changes feel out of scope and should probably be done in their own issue

  5. +++ b/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php
    @@ -54,13 +54,33 @@ public function testContextualLinksVisibility() {
    +  protected function assertContextualLinkWithClass($class) {
    +    $contextLink = $this->assertSession()->waitForElement('css', ".contextual-links li.$class a");
    

    This is probably too reliant on the classy base theme, which we're hoping to remove.

    Can we instead assert the link text, rather than the class?

sourabhjain’s picture

StatusFileSize
new8.11 KB
new619 bytes

Resolved the 1st point suggested in #47

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.0-alpha1 was released on May 6, 2022, which means new developments and disruptive changes should now be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

proweb.ua’s picture

#48 works
drupal 9.4.5

smustgrave’s picture

Status: Needs work » Needs review
Issue tags: -Needs tests
StatusFileSize
new5.15 KB
new8.02 KB

Curious at #48 why just fix one issue from #47 when a few more were low hanging

Starting at #43 addressed the bullets in #47

Interdiff had a hard time generating though so may not contain all the changes.

Version: 9.5.x-dev » 10.1.x-dev

Drupal 9.5.0-beta2 and Drupal 10.0.0-beta2 were released on September 29, 2022, which means new developments and disruptive changes should now be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

super_romeo’s picture

Status: Needs review » Needs work

Patch #51 Failed to Apply on D9.5.x.

smustgrave’s picture

StatusFileSize
new0 bytes
new8.11 KB
new5.63 KB

Rerolled for 9.5 + 10.1

smustgrave’s picture

Status: Needs work » Needs review

The last submitted patch, 54: 2773591-54.patch, failed testing. View results

catch’s picture

Status: Needs review » Needs work
+++ b/core/modules/contextual/contextual.module
@@ -66,7 +67,11 @@ function contextual_page_attachments(array &$page) {
   }
 
+  $definitions = \Drupal::service('plugin.manager.menu.contextual_link')->getDefinitions();
+  ksort($definitions);
+
   $page['#attached']['library'][] = 'contextual/drupal.contextual-links';
+  $page['#attached']['drupalSettings']['contextual']['linkDefinitionsHash'] = hash('sha256', Settings::getHashSalt() . implode(':', array_keys($definitions)));
 }

This looks like a good solution, but it needs a comment.

smustgrave’s picture

Status: Needs work » Needs review
StatusFileSize
new501 bytes
new5.78 KB

Added a comment.

larowlan’s picture

Status: Needs review » Needs work
  1. +++ b/core/modules/contextual/contextual.module
    @@ -66,7 +67,13 @@ function contextual_page_attachments(array &$page) {
    +  // Pass a hash of the current contextual link definitions to the javascript
    

    nit: JavaScript

  2. +++ b/core/modules/contextual/contextual.module
    @@ -66,7 +67,13 @@ function contextual_page_attachments(array &$page) {
    +  $page['#attached']['drupalSettings']['contextual']['linkDefinitionsHash'] = hash('sha256', Settings::getHashSalt() . implode(':', array_keys($definitions)));
    

    I don't know if we should be using the hash salt for this, its kind of leaking privileged data, we really only want a hash, doesn't need to be secure

  3. +++ b/core/modules/contextual/js/contextual.js
    @@ -21,17 +21,31 @@
         if (typeof permissionsHash === 'string') {
    

    do we need the equivalent type check for the new hash?

larowlan’s picture

+++ b/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php
@@ -67,6 +67,29 @@ public function testContextualLinksVisibility() {
+  protected function assertContextualLinkWithText(string $text) {
+    $contextLinks = $this->assertSession()->waitForElement('css', ".contextual-links li a");
+    $this->assertNotEmpty($contextLinks);
+    foreach ($contextLinks as $contextLink) {
+      if ($contextLink->getText() === $text) {
+        break;
+      }

this doesn't fail if the link is missing, we need $this->fail() outside the loop

smustgrave’s picture

Status: Needs work » Needs review
StatusFileSize
new3.28 KB
new1.05 KB
new3.97 KB

#59
1 = fixed
2 = removed hash salt
3 = don't think we need it as there is a check before this code

#60
1 = actually showed the tests weren't working and false positive. Updated tests.

tim.plunkett’s picture

+++ b/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php
@@ -67,6 +67,14 @@ public function testContextualLinksVisibility() {
+    drupal_flush_all_caches();

Use $this->resetAll() instead (and maybe a line break after, for readability)

smustgrave’s picture

Status: Needs review » Needs work
Issue tags: +Needs issue summary update

So #61 the tests pass with the cache clear.

Is the original goal to have contextual links appear without a cache clear?

Not sure if the tests or fix need work but should of got red/green

tim.plunkett’s picture

afaik, a cache clear currently doesn't fix the bug in any way, because it's stored in sessionStorage:

while data in localStorage doesn't expire, data in sessionStorage is cleared when the page session ends

I'm not sure how best to ensure that a test is happening within the same page session. But that strikes me as the problem here

socialnicheguru’s picture

Number #54 patch no longer applies to Drupal 9.5.9.

james.williams’s picture

Here's a patch that applies to Drupal 9.5.x; just to assist those of us needing that. It includes the es6.js file and the transpiled version, since both are needed in D9.5 patches as far as I can see.

Version: 10.1.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch, which currently accepts only minor-version allowed changes. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

larowlan’s picture

+++ b/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php
@@ -64,6 +64,14 @@ public function testContextualLinksVisibility() {
+    drupal_flush_all_caches();

Does the comment in #9 help? It might remove the need for this and get you a failing test?

ion.macaria’s picture

StatusFileSize
new0 bytes

I know Drupal 9 is close to the end. But for last months maybe it is necessary for someone:
Drupal 9.5.11 patch.

ion.macaria’s picture

StatusFileSize
new8.11 KB

Update for broken patch:
Core 9.5.11

_utsavsharma’s picture

StatusFileSize
new793 bytes
new8.11 KB

Fixed failures in #70.

johnpitcairn’s picture

Issue summary: View changes
ion.macaria’s picture

StatusFileSize
new5.55 KB

Reroll patch for drupal 10.1.7

sourabhjain’s picture

StatusFileSize
new5.82 KB
new2.66 KB

Fixed the #73 testing failed issue. Please review.

sourabhjain’s picture

Status: Needs work » Needs review
needs-review-queue-bot’s picture

Status: Needs review » Needs work

The Needs Review Queue Bot tested this issue.

While you are making the above changes, we recommend that you convert this patch to a merge request. Merge requests are preferred over patches. Be sure to hide the old patch files as well. (Converting an issue to a merge request without other contributions to the issue will not receive credit.)

sourabhjain’s picture

Status: Needs work » Needs review
smustgrave’s picture

Status: Needs review » Needs work

Was tagged for issue summary which is still needed. Please don't put tickets in review without checking core gates and any open tags.

Now that we are mixing patches and MRs that will need to be cleaned up and noted in the updated issue summary.

steyep’s picture

StatusFileSize
new5.82 KB

I could not get the patch in #74 nor the diff from the MR to apply cleanly in 10.3. I've attached a re-rolled the patch for 10.3

xjm’s picture

Amending attribution.

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.