Problem/Motivation

#3222947: Decide whether to move Quick Edit to contrib Is leaning towards "yes, let's remove it."

This is the issue to remove the Quick Edit Module in 10.0.x.
The issue for deprecating the Quick Edit Module in 9.5.x can be found here: #3270434: Mark Quick Edit deprecated

Steps to reproduce

n/a

Proposed resolution

Try to remove Quick Edit and see what happens.
Fix any problems that may rear ugly heads.

Remaining tasks

Currently postponed on

Related work.

Refer to the tracking issue for removing Quick Edit #3274155: [Meta] Tasks to remove Quick Edit from core and move to contrib

Release notes snippet

Quick Edit has been removed from core. You should add a dependency on the contributed Quick Edit module if you want to keep using this functionality. For more information, see the recommendations for handling deprecated core modules and themes.

Issue fork drupal-3227033

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

dww created an issue. See original summary.

xjm made their first commit to this issue’s fork.

xjm’s picture

🔥

xjm’s picture

Here's a list of QuickEdit integration tests in the namespaces of other modules:

core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderQuickEditTest.php
core/modules/layout_builder/tests/src/Functional/LayoutBuilderQuickEditTest.php
core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php
core/modules/inline_form_errors/tests/src/FunctionalJavascript/FormErrorHandlerQuickEditTest.php
core/modules/field/tests/modules/field_plugins_test/src/Plugin/Field/FieldFormatter/TestTextTrimmedFormatter.php
core/modules/image/tests/modules/image_module_test/src/Plugin/Field/FieldFormatter/DummyImageFormatter.php
core/modules/image/tests/src/FunctionalJavascript/QuickEditImageEditorTestTrait.php
core/modules/image/tests/src/FunctionalJavascript/QuickEditImageTest.php
core/modules/image/tests/src/Functional/QuickEditImageControllerTest.php
core/modules/system/tests/src/Functional/UpdateSystem/UpdatePathTestBaseFilledTest.php
core/modules/settings_tray/tests/src/FunctionalJavascript/QuickEditIntegrationTest.php
core/modules/settings_tray/tests/src/FunctionalJavascript/SettingsTrayBlockFormTest.php
core/modules/settings_tray/tests/src/FunctionalJavascript/SettingsTrayTestBase.php
core/modules/node/tests/src/Functional/NodeDisplayConfigurableTest.php
core/modules/editor/tests/src/Functional/QuickEditIntegrationLoadingTest.php
core/modules/editor/tests/src/Kernel/QuickEditIntegrationTest.php
core/modules/media/tests/src/Kernel/MediaEmbedFilterDisabledIntegrationsTest.php

Some of them can be removed wholesale; others might needs specific methods removed.

xjm’s picture

Here are the remaining references in tests after blindly removing those that are explicitly labeled as QuickEdit integration tests:

core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php
core/modules/field/tests/modules/field_plugins_test/src/Plugin/Field/FieldFormatter/TestTextTrimmedFormatter.php
core/modules/image/tests/modules/image_module_test/src/Plugin/Field/FieldFormatter/DummyImageFormatter.php
core/modules/system/tests/src/Functional/UpdateSystem/UpdatePathTestBaseFilledTest.php
core/modules/settings_tray/tests/src/FunctionalJavascript/SettingsTrayBlockFormTest.php
core/modules/settings_tray/tests/src/FunctionalJavascript/SettingsTrayTestBase.php
core/modules/node/tests/src/Functional/NodeDisplayConfigurableTest.php
core/modules/media/tests/src/Kernel/MediaEmbedFilterDisabledIntegrationsTest.php
xjm’s picture

Non-test references remaining:

core/misc/cspell/dictionary.txt
core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/BasicStringFormatter.php
core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/StringFormatter.php
core/modules/layout_builder/layout_builder.module
core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php
core/modules/layout_builder/src/QuickEditIntegration.php
core/modules/comment/src/Plugin/Field/FieldFormatter/CommentDefaultFormatter.php
core/modules/comment/src/Plugin/Field/FieldFormatter/CommentPermalinkFormatter.php
core/modules/ckeditor/css/ckeditor.css
core/modules/image/image.routing.yml
core/modules/image/css/editors/image.css
core/modules/image/css/editors/image.theme.css
core/modules/image/js/editors/image.es6.js
core/modules/image/js/editors/image.js
core/modules/image/js/theme.js
core/modules/image/js/theme.es6.js
core/modules/image/image.libraries.yml
core/modules/image/src/Plugin/InPlaceEditor/Image.php
core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatter.php
core/modules/image/src/Controller/QuickEditImageController.php
core/modules/settings_tray/js/settings_tray.es6.js
core/modules/settings_tray/js/settings_tray.js
core/modules/text/src/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php
core/modules/text/src/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php
core/modules/editor/editor.routing.yml
core/modules/editor/editor.module
core/modules/editor/js/editor.formattedTextEditor.js
core/modules/editor/js/editor.formattedTextEditor.es6.js
core/modules/editor/editor.libraries.yml
core/modules/editor/src/Plugin/InPlaceEditor/Editor.php
core/modules/media/src/Plugin/Filter/MediaEmbed.php
core/themes/stable/css/quickedit/quickedit.module.css
core/themes/stable/css/quickedit/quickedit.theme.css
core/themes/stable/css/quickedit/quickedit.icons.theme.css
core/themes/stable/css/ckeditor/ckeditor.css
core/themes/stable/css/image/editors/image.css
core/themes/stable/css/image/editors/image.theme.css
core/themes/stable/stable.info.yml
core/themes/stable9/css/quickedit/quickedit.module.css
core/themes/stable9/css/quickedit/quickedit.theme.css
core/themes/stable9/css/quickedit/quickedit.icons.theme.css
core/themes/stable9/css/ckeditor/ckeditor.css
core/themes/stable9/css/image/editors/image.css
core/themes/stable9/css/image/editors/image.theme.css
core/themes/stable9/stable9.info.yml
core/themes/claro/css/components/quickedit.css
core/themes/claro/css/components/quickedit.pcss.css
core/themes/claro/claro.info.yml
core/themes/seven/css/components/quickedit.css
core/themes/seven/seven.info.yml
xjm’s picture

One comment from @larowlan on the other issue:

One thing we'll need to consider here, is that formatters define quickedit metadata in their annotation.

We'll need to move that to quickedit module in an alter hook - for formatters we know about in core.

But for other formatters from contrib that integrate with quickedit, they may need additional steps.

It looks like we have a similar thing for themes with the quickedit_stylesheets key.

dww’s picture

Holy smokes, that was fast! 😉 I just came here to start and lo, it's already totally in progress. Thanks, @xjm!

xjm’s picture

Issue summary: View changes

I am strongly motivated. 🔥

andypost’s picture

Great job! Looks like #9 could left in core namespace to allow contrib to extend this annotations (panels for example or ctools)

Edit could use @timplunkett review

xjm’s picture

Issue summary: View changes

Updating the remaining tasks.

andypost’s picture

Maybe better use event to find "annotation extensions" (subscribers) instead of hooks

dww’s picture

Assigned: Unassigned » dww

I'll do an initial pass on some of the tests listed in #6 while I juggle some day job stuff. Let's see if I get very far... ;)

dww’s picture

Assigned: dww » Unassigned

Well, poo. ;) See commit message for this:

https://git.drupalcode.org/project/drupal/-/merge_requests/1020/diffs?co...

- This works for most of the themes.
- Fails for stable and stable9.
- There's no longer a way to target what we're looking for.
-- There are no field classes for these themes ($field_classes has to be FALSE).
-- But without the quickedit selectors, there's nothing in the markup to tell fields apart.

NodeDisplayConfigurableTest is trying to do this in assertNodeHtml():
$assert->elementTextContains('css', $created_selector, \Drupal::service('date.formatter')->format($node->getCreatedTime()));

So we need a selector to find exactly where the timestamp is appearing. But without quickedit enabled, the markup for this node in stable and stable9 looks something like this:

<article role="article" about="/drupal-9_1/node/1">
      <footer>
      <article typeof="schema:Person" about="/drupal-9_1/user/2">
  <div class="js-form-item form-item js-form-type-item form-item- js-form-item- form-no-label">
        <h4 class="label">Member for</h4> 24 seconds
        </div>
</article>
      <div>
        Submitted by <span><a title="View user profile." href="/drupal-9_1/user/2" lang="" about="/drupal-9_1/user/2" typeof="schema:Person" property="schema:name" datatype="">eMHCSGYOuJAkD2</a></span>
 on <span>Fri, 08/06/2021 - 11:09</span>
      </div>
    </footer>
  <div>
            <div><p>vJUMtKdL7e4hG5MdElsfGh0ucpCuPhDY</p>
</div>
  </div>
</article>

I'm not sure how we're supposed to find this needle: <span>Fri, 08/06/2021 - 11:09</span> in that haystack, without any classes or anything to distinguish it from every other span.

Also, MediaEmbedFilterDisabledIntegrationsTest is now a kernel test with a data provider that provides a single case. Not sure if we should refactor that, or leave the provider plumbing in place.

dww’s picture

core/modules/system/tests/src/Functional/UpdateSystem/UpdatePathTestBaseFilledTest.php is a mess to change, since the filled DB dump from 9.0.0 has quickedit enabled. We need a more careful removal with a stub module for deprecation, etc. As it is, the test immediately fails like so:

      <h3 id="error">Errors found</h3>
              <details class="system-status-report__entry system-status-report__entry--error color-error" open>
                    <summary class="system-status-report__status-title system-status-report__status-icon system-status-report__status-icon--error" role="button">
                        Missing or invalid module
          </summary>
          <div class="system-status-report__entry__value">
            The following module is marked as installed in the core.extension configuration, but it is missing:<div class="item-list"><ul><li>quickedit</li></ul></div>Review the <a href="https://www.drupal.org/docs/8/update/troubleshooting-database-updates"> suggestions for resolving this incompatibility</a> to repair your installation, and then re-run update.php.
                      </div>
        </details>
dww’s picture

A bunch of the test fails at https://www.drupal.org/pift-ci-job/2141379 are the same problem as #16. If we completely remove quickedit like this, none of our update tests can work, since they all explode on the requirements check, there is no 'Continue' button at update.php, and doom ensues... ;)

Not sure if it's worth doing the stub deprecation shell dance in this issue, or what. I await @xjm's feedback before doing much else with this.

andypost’s picture

longwave made their first commit to this issue’s fork.

longwave’s picture

@dww I think we only need a stub quickedit.info.yml marked "obsolete" for some of the tests to pass, so I added that for now.

xjm’s picture

Re: #20, leaving an obsolete stub in that uninstalls itself is the best practice anyway from moving anything from core; I just wanted to see what would break if the entire module were actually not present to surface other things that will need a fix. (We will need to make updated upgrade path tests again in 10.0.x development for multiple modules and deprecations, not just this one.)

xjm’s picture

For things like #15, those tests should not be coupled to QuickEdit in the first place. We will need to rewrite them in 9.3.x (and spin off separate issues for them eventually).

dww’s picture

Re: #22: Absolutely agree. Only documenting the pain points as I found them. ;) Using quickedit selectors like this was always a hack in stable tests. But we've got to pay off that technical debt now, somehow. Should we spin off a separate issue for that right now and get started?

xjm’s picture

Status: Active » Needs work

@dww, Yep, good idea I think.

Setting a better issue status.

dww’s picture

Issue summary: View changes
xjm’s picture

Priority: Normal » Major
Issue tags: +Drupal 10
xjm’s picture

xjm’s picture

xjm’s picture

Oops, my force-push also ate the commits to remove QuickEdit from the test formatter annotation and test image formatter. Those two things should probably get their own issue as well (one issue for both seems fine).

Spokje made their first commit to this issue’s fork.

spokje’s picture

This is an issue to do a trial run of removing it, and see what breaks.

Looking at https://www.drupal.org/pift-ci-job/2165728, me thinks the introduction of a required lifecycle_link for deprecated and obsolete lifecycle states in #3225812: Add lifecycle_link key to info.yml files breaks (almost) every test know to man- and TestBot-kind. ;)

Since this is an [Investigation] issue, I think it's OK to add a not yet existing URL (https://www.drupal.org/about/core/policies/core-change-policies/deprecated-and-obsolete-modules-and-themes#s-quickedit)?

spokje’s picture

Oops, my force-push also ate the commits to remove QuickEdit from the test formatter annotation and test image formatter. Those two things should probably get their own issue as well (one issue for both seems fine).

Opened #3231071: Remove QuickEdit from the test formatter annotation and test image formatter. for that.

spokje’s picture

Besides:

I think we're done here for now?

Wim Leers made their first commit to this issue’s fork.

wim leers’s picture

dww’s picture

To be clear, the actual plan here would be to mark quickedit deprecated in 9.3.0 and actually remove it in D10, right?

Now that our investigation is complete (🎉) should we turn this into the D10 issue to do the removal that the MR now implements?

dww’s picture

p.s. Should we open an unpublished CR about this now so the lifecycle_link has a real nid to point to?

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.

spokje’s picture

With the addition of CKEditor5 in #3231364: Add CKEditor 5 module to Drupal core a new QuickEdit integrationtest was added: \Drupal\Tests\ckeditor5\FunctionalJavascript\QuickEditIntegrationTest.

This has to be moved into QuickEdit's test namespace to facilitate the core removal along the lines of #3228634: Move tests for integrations between QuickEdit and other modules into QuickEdit so that it can more easily be moved into contrib where the other QuickEdit related test classes were moved.

Opened #3252214: Move tests for integrations between QuickEdit and CKEditor5 into QuickEdit so that it can more easily be moved into contrib for that.

spokje’s picture

spokje’s picture

Title: [Investigation] Try removing quickedit from core » [PP-1] [Investigation] Try removing quickedit from core
spokje’s picture

Title: [PP-1] [Investigation] Try removing quickedit from core » [Investigation] Try removing quickedit from core
Assigned: Unassigned » spokje
Status: Postponed » Needs work
spokje’s picture

p.s. Should we open an unpublished CR about this now so the lifecycle_link has a real nid to point to?

Thus spoketh @dww in #39

Looking at the already obsolete Core modules simpletest and entity_reference, the lifecycle_link points to an anchor on https://www.drupal.org/about/core/policies/core-change-policies/deprecated-and-obsolete-modules-and-themes.
I _think_ by the time we launch Drupal 10, an entry should be made there.

Until then I think linking to a CR is indeed the way to go. I've started an unpublished one here: https://www.drupal.org/node/3252839

Maybe a follow-up is needed to change the lifecycle_link from pointing to the CR to https://www.drupal.org/about/core/policies/core-change-policies/deprecat... should be created?

Also a follow-up to move QuickEdit into a Contrib Module should be created, me thinks.

For both follow-ups I'm unsure if they should be children of this issue or of the parent issue #3228986: [Meta] Tasks to deprecate Quick Edit.
Any advice on that would be most welcome.

spokje’s picture

[Removed double post]

spokje’s picture

StatusFileSize
new503.59 KB

Since we missed the 9.3-boat, here's a patch against 9.4.x

spokje’s picture

Assigned: spokje » Unassigned
Status: Needs work » Needs review
spokje’s picture

StatusFileSize
new503.61 KB

Reroll of patch #47

catch’s picture

Title: [Investigation] Try removing quickedit from core » Remove quickedit from core
Version: 9.4.x-dev » 10.0.x-dev

I think we can use this issue for the actual removal of quickedit from core now.

However seems like we probably need a 9.4.x to mark it deprecated still? Or is there one around somewhere.

spokje’s picture

StatusFileSize
new499.67 KB

However seems like we probably need a 9.4.x to mark it deprecated still? Or is there one around somewhere.

Sense = made.

So here's a patch for the removal and making the module obsolete in 10.0.x

spokje’s picture

StatusFileSize
new399 bytes

And a deprecation patch for 9.4.x.

Both CRs could do with some people with Big Brains looking at it.

Also we need to have the Contributed Module quickedit in place so we can link to it in both CRs, I presume?

catch’s picture

Yes I think the order is:

1. Contrib module quickedit
2. Deprecation in 9
3. Removal in 10

Steps 2 and 3 can be combined if both bits are ready.

Status: Needs review » Needs work

The last submitted patch, 52: 3227033-9.4.x-deprecated-52.patch, failed testing. View results

spokje’s picture

So, for the ignorant amongst us *raises hand* how does one create a contrib module?

- I imagine naming it "quickedit" would clash with the 9.4.x release which still has a "quickedit" module in core (although deprecated by then)?
- If one creates a Contrib Module, I suppose you're immediately the maintainer, which in this case should be @gaurav.kapoor (See #3228986-4: [Meta] Tasks to deprecate Quick Edit?

spokje’s picture

Patch #52 reveals we need at least to solve one more issue: Having a deprecated module with non-deprecated dependency in core leads to a test failure in InstallUninstallTest.

Created issue #3259850: Having a deprecated module with non deprecated dependency leads to test failure in InstallUninstallTest to deal with this.

spokje’s picture

Title: Remove quickedit from core » [PP-1 ]Remove quickedit from core
Status: Needs work » Postponed
spokje’s picture

Title: [PP-1 ]Remove quickedit from core » [PP-1] Remove quickedit from core

Pu tth espac ei nth ewron gplac e :/

catch’s picture

@Spokje

I imagine naming it "quickedit" would clash with the 9.4.x release which still has a "quickedit" module in core (although deprecated by then)?

So this is actually fine given the module will be identical, with a slight wrinkle from #3188544: [policy discussion] Address Composer namespacing issues when extensions move between core and contrib but that is resolvable.

If you have a Drupal 9.4 site, you'll get deprecation warnings, and if you go and download the contrib project, then it'll override your core module and they'll go away (because modules in modules/* or sites/* override those in core/*

If you have a Drupal 10 site, your only option is the contrib module.

catch’s picture

Title: [PP-1] Remove quickedit from core » Remove quickedit from core
Status: Postponed » Needs review
daffie’s picture

Status: Needs review » Needs work
Issue tags: +Needs tests

I think that we should add a test that when the module gets installed that the module is deprecated.

spokje’s picture

Besides the point which @daffie makes above, there's Yet Another Issue with InstallUninstallTest: #3259888: InstallUninstallTest fails on enabling both deprecated and experimental modules at the same time

catch’s picture

I think that we should add a test that when the module gets installed that the module is deprecated.

We have generic tests for the lifecycle key, I don't think we need one for each individual module that we deprecate.

spokje’s picture

I think that we should add a test that when the module gets installed that the module is deprecated.

We have generic tests for the lifecycle key, I don't think we need one for each individual module that we deprecate.

Looks like an attempt at this is being made at #3257127: Trigger a deprecation message when a deprecated module or theme is enabled.

Removing "needs tests" tag since:

1) Test is being made in #3257127: Trigger a deprecation message when a deprecated module or theme is enabled
2) Test seemed to be unneeded according to @catch

spokje’s picture

Issue tags: -Needs tests
spokje’s picture

Title: Remove quickedit from core » [PP-1] Remove quickedit from core
Status: Needs work » Postponed
spokje’s picture

Title: [PP-1] Remove quickedit from core » Remove quickedit from core
Status: Postponed » Needs work

#3259888: InstallUninstallTest fails on enabling both deprecated and experimental modules at the same time was committed, so unpostponing.

Starting a retest on the deprecation D9.4 patch

daffie’s picture

daffie’s picture

Status: Needs review » Reviewed & tested by the community

Looks good to me.

spokje’s picture

So now we have a TestBot-green deprecating patch for 9.4 and a TestBot-green removal/obsolete patch for D10.
According to catch in #53:

Yes I think the order is:

1. Contrib module quickedit
2. Deprecation in 9
3. Removal in 10

Steps 2 and 3 can be combined if both bits are ready.

we're still missing step 1.: A contib quickedit module.

Which leads us (or at least me) back to point #2 in #55:

- If one creates a Contrib Module, I suppose you're immediately the maintainer, which in this case should be @gaurav.kapoor (See #3228986-4: [plan] Move QuickEdit into contrib and remove it from core?

dww’s picture

Re: #72 / #55: Drat. At #3228986-18: [Meta] Tasks to deprecate Quick Edit, @gaurav.kapoor declined.

I have a lot of contrib modules I (don't) maintain. 😉 I'd be willing to open the project for quickedit, commit the code, mark it "minimally maintained", "seeking co-maintainer", etc, and do the bare minimum to keep it alive for a little while. But I don't use it myself, and have very little incentive to do anything with it. So if anyone else actually wants to maintain this feature, I definitely wouldn't want to get in their way. But if this is the last step blocking this from leaving core, I'm willing to do a little work to keep this moving.

spokje’s picture

dww for president!

Besides the above, I think that realistically, no other new maintainer will stand up any time soon. I also don't expect a lot of issues being created on the new Contrib incarnation of QuickEdit.
Searching for "quickedit" in the issue queue doesn't reveal a lot of activity on the actual module, so it might fit in with @dww's "minimally maintained" approach.

To keep this issue moving forward I would love to see @dww's "shot-in-own-foot" #73 come into fruition and a Contrib version of quickedit to emerge.

dww’s picture

Assigned: Unassigned » dww
Status: Reviewed & tested by the community » Needs work

Hah, thanks. 😉 Okay, no one else is stepping forward, so I'm going to subtree split core/modules/quickedit and push that into a new 1.0.x branch in quickedit (which already exists, and Gabor made me a co-maintainer with Git access). Once I cut a 1.0.0-rc1 or something, I'll re-RTBC here with a link. Stay tuned...

dww’s picture

Assigned: dww » Unassigned
Status: Needs work » Reviewed & tested by the community
spokje’s picture

Thanks @dww!

So I _think_ we're all good for deprecation now.

However there's one thing missing IMHO: We need to transfer all QuickEdit issue in the Core queue to the QuickEdit Contrib queue.
Is that something that deserves it's own issue? (I have no idea how this can be done and who to ping on this).

lauriii’s picture

I think we could just transfer issues from this list manually. There's just one page of issues so it seems easier to move them manually compared to trying to figure out who can do it automatically.

spokje’s picture

Thank @lauriii, moved those in your search query and (weirdly) found (and moved) about 30 more issue on component ''quickedit" by just searching for quickedit on core.

All are now transferred to https://www.drupal.org/project/issues/quickedit?categories=All

@dww: Since I think you're only (minimally) supporting the D9 version (1.x) you might want to close all 7.x issues and update the Module page which still has some D7 information.

catch’s picture

The 10.0.x patch should do a complete removal rather than marking obsolete. We haven't done many of these recently, so I'm not sure we have a clear precedent, but reasoning below:

The obsolete status is for modules like simpletest or entity_reference where it is either a development dependency we want to ensure is uninstalled, or the module itself has been completely gutted, and the only course of action is to uninstall before we remove it. In this case we don't need to give site admins a choice, the module is genuinely obsolete and just needs to be removed cleanly.

For non-development modules where we're offering a contrib version, we don't want to uninstall the module on sites' behalf, they need to take an active decision to install the contrib version or uninstall themselves. If someone updates to 10.0.x without doing that, then the big error that a module is missing from the filesystem is correct.

catch’s picture

Status: Reviewed & tested by the community » Needs work

Also looks like the 10.0.x patch needs a re-roll too.

spokje’s picture

Status: Needs work » Needs review
StatusFileSize
new501.59 KB

New D10 removal patch

catch’s picture

Title: Remove quickedit from core » [PP-1] Remove quickedit from core
------ --------------------------------------------------------------------- 
  Line   core/modules/editor/src/Plugin/InPlaceEditor/Editor.php              
 ------ --------------------------------------------------------------------- 
         Class Drupal\quickedit\Plugin\InPlaceEditorInterface not found.      
         💡 Learn more at https://phpstan.org/user-guide/discovering-symbols  
  18     Class Drupal\quickedit\Plugin\InPlaceEditorInterface not found.      
         💡 Learn more at https://phpstan.org/user-guide/discovering-symbols  
 ------ --------------------------------------------------------------------- 

 ------ --------------------------------------------------------------------- 
  Line   core/modules/image/src/Plugin/InPlaceEditor/Image.php                
 ------ --------------------------------------------------------------------- 
         Class Drupal\quickedit\Plugin\InPlaceEditorBase not found.           
         💡 Learn more at https://phpstan.org/user-guide/discovering-symbols  
  15     Class Drupal\quickedit\Plugin\InPlaceEditorBase not found.           
         💡 Learn more at https://phpstan.org/user-guide/discovering-symbols  
 ------ --------------------------------------------------------------------- 

If we didn't have the quickedit module in contrib, we'd need a core patch to move them to quickedit prior to removal. Now that it's there, I opened #3261096: Include quickedit plugins from editor and image modules, but that'll need to block this issue so that we're not knowingly introducing a regression.

(Also, well done phpstan / I coulda gotten away with it if it weren't for that meddling phpstan).

spokje’s picture

#3261096: Include quickedit plugins from editor and image modules is now PP-2, unsure if this would mean this is now PP-3?

spokje’s picture

StatusFileSize
new547.84 KB

To quote myself:

...unsure if this would mean this is now PP-3?

Not that it matters, because we have (at least) a PP+1 here.
The attached rerolled D10 removal patch will show that it fails on the fixture core/modules/system/tests/fixtures/update/drupal-9.0.0.filled.standard.php.gz having quickedit installed.

I think we need a new drupal-10.0.0.filled.standard.php.gz fixture, without quickedit.
Whilst we're at it, it probably should already have all D9.x updates sucessfully ran, except for the installation a the appropriate DB module.

spokje’s picture

Status: Needs review » Postponed
catch’s picture

spokje’s picture

Title: [PP-1] Remove quickedit from core » [PP-2] Remove quickedit from core

Well, as a bare minimum this issue for the removing D10.x patch needs a fixture that has no quickedit installed.

Since it's about D10 I think we indeed need to postpone it on the issue that @catch mentioned above (#2942096: [policy, no patch] Remove old update hooks prior to each major version (Drupal 10 and later)), since that fixture would be a base for the one needed here.
Maybe in fact more a child-issue that actually commits such a fixture into the 10.0.x-dev branch.

spokje’s picture

Maybe in fact more a child-issue that actually commits such a fixture into the 10.0.x-dev branch.

#3261486: Remove core updates added prior to 9.3.0 and adjust test coverage seems to be just that issue.

spokje’s picture

Title: [PP-2] Remove quickedit from core » [PP-1] Remove quickedit from core
spokje’s picture

StatusFileSize
new547.84 KB

Reroll of the 10.0.x removal patch to see where we stand now that #3261486: Remove core updates added prior to 9.3.0 and adjust test coverage is in.

spokje’s picture

StatusFileSize
new595 bytes
new1.45 MB

Updated the D10.0 removal patch with a drupal-9.3.0.filled.standard.php.gz fixture without the quickedit module being installed.

Interdiff doesn't contain the changes in that fixture, because it's gzipped and would be non-human-readable.

spokje’s picture

StatusFileSize
new1.68 MB

Also needed to create a drupal-9.3.0.bare.standard.php.gz fixture without the quickedit module being installed.

No interdiff, because only that .gz file changed and would be non-human-readable.

mradcliffe’s picture

Title: [PP-1] Remove quickedit from core » Remove quickedit from core
Status: Postponed » Needs review
mradcliffe’s picture

Title: Remove quickedit from core » [PP-1] Remove quickedit from core
Status: Needs review » Postponed

Wait, sorry, I didn't see that #3260995: Split the core 9.4.x quickedit history into a new 1.0.x branch and cut a 1.0.0 release was a child issue of this, and it's noted in that issue summary as blocking.

dww’s picture

Title: [PP-1] Remove quickedit from core » Remove quickedit from core
Status: Postponed » Needs review
Related issues: -#3261486: Remove core updates added prior to 9.3.0 and adjust test coverage

https://www.drupal.org/project/quickedit/releases/1.0.0 is tagged and out. 🎉 I believe that was the only remaining blocker to this moving forward.

dww’s picture

Weird, didn't mean to remove that as related. Restoring.

spokje’s picture

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

https://www.drupal.org/project/quickedit/releases/1.0.0 is tagged and out. 🎉 I believe that was the only remaining blocker to this moving forward.

Thanks @dww for cutting the release and @mradcliffe for unpostponing.

spokje’s picture

StatusFileSize
new483 bytes
new458 bytes

In #3263618-11: Deprecate HAL module and #3263618-10: Deprecate HAL module it was decided to link to https://www.drupal.org/node/3223395 in the lifecycle_link of the deprecated extension.
I've added a new section for quickedit to that page.

Attached patch should comply with the above.

spokje’s picture

Status: Needs work » Needs review
StatusFileSize
new1.68 MB

Reroll of patch in #93

spokje’s picture

Assigned: spokje » Unassigned
daffie’s picture

Status: Needs review » Reviewed & tested by the community

Both the patch for D9.4 and D10 look good to me.
The patch for D9.4 deprecates the module and add a deprecation link.
The patch for D10 removes the module.
For me it is RTBC.

The last submitted patch, 99: 3227033-9.4.x-deprecated-99.patch, failed testing. View results

spokje’s picture

Assigned: Unassigned » spokje
Status: Reviewed & tested by the community » Needs work
catch’s picture

Title: Remove quickedit from core » [PP-1] Remove quickedit from core

All of the 9.4 quickedit tests need to be tagged with @legacy after #3257127: Trigger a deprecation message when a deprecated module or theme is enabled.

Help topics and REST are both enabling all modules, need to filter deprecated ones out, opened #3264435: Help topics and rest don't filter out deprecated modules when testing.

spokje’s picture

StatusFileSize
new5.8 KB
new9.09 KB

This patch should take care of the 16 errors that are caused by running @group quickedit tests, the remaining 2 failures should be fixed when #3264435: Help topics and rest don't filter out deprecated modules when testing lands.

catch’s picture

Status: Needs work » Reviewed & tested by the community

Ready to go again once the other issue has landed.

spokje’s picture

As expected (and predicted by the almighty @catch) 2 failures remain, soon to be solved when #3264435: Help topics and rest don't filter out deprecated modules when testing lands.

spokje’s picture

Title: [PP-1] Remove quickedit from core » Remove quickedit from core

#3264435: Help topics and rest don't filter out deprecated modules when testing was just committed, starting D9.4 deprecation patch retest and expecting it to come back green

spokje’s picture

StatusFileSize
new1.68 MB

Reroll of D10 removal patch

spokje’s picture

Assigned: spokje » Unassigned
spokje’s picture

Title: Remove quickedit from core » [PP-1] Remove quickedit from core
Status: Reviewed & tested by the community » Postponed

Aaaaand back to Postponed, this time on #3264061: Remove deprecated functions from image module


waves at guy pushing boulder uphill whilst running after his own boulder rolling downhill

Hi Sisyphus!

spokje’s picture

catch’s picture

Status: Postponed » Reviewed & tested by the community

That should hopefully have been fixed by #3255887: MediaThumbnailFormatter => Calling ImageFormatter::__construct() without the $file_url_generator argument is deprecated in drupal:9.3.0. I've sent the patch here for retesting now that's in. Tentatively unpostponing again.

spokje’s picture

Title: [PP-1] Remove quickedit from core » Remove quickedit from core
Related issues: -#3264061: Remove deprecated functions from image module
00:03:39.301 ----------------------------------------------------------------------------------------------------
00:03:39.301 
00:03:39.301 Running PHPStan on *all* files.
00:04:52.735 
00:04:52.741  [OK] No errors       

Sees rolling stone suddenly changing direction from downwards to upwards
Well, that was unexpected...

Thanks @catch and @Big Brains behind fixing #3255887: MediaThumbnailFormatter => Calling ImageFormatter::__construct() without the $file_url_generator argument is deprecated in drupal:9.3.0.

Chases upwards rolling stone and passes guy running after boulder going downwards
Hi Sisyphus!

spokje’s picture

Issue tags: +Needs release note

Module and theme removals should always be tagged for the release notes. Thanks!

Thus spoketh @xjm in [#2966859-32]

mstrelan’s picture

Status: Reviewed & tested by the community » Needs work

We still need to remove \Drupal\layout_builder\QuickEditIntegration and refactor it so that quickedit contrib provides the integration with layout builder.

spokje’s picture

We still need to remove \Drupal\layout_builder\QuickEditIntegration and refactor it so that quickedit contrib provides the integration with layout builder.

Ouch, so \Drupal\layout_builder\QuickEditIntegration has:

  • No testcoverage
  • No usage of any classes in the quickedit module
  • Usage of a couple of hooks in the layout_builder.module file
  • Nothing moved to the Contrib quickedit module yet

I'm quite happy for Bigger Brains to step in on this one, I actually think I've never user quickedit nor layout_builder, so even visual testing to see if before and after matches would not work.

mstrelan’s picture

The class is marked as @internal so I guess it doesn't need to be deprecated in 9.4.

Ouch, so \Drupal\layout_builder\QuickEditIntegration has:
No testcoverage

I'm guessing that's what is covered by \Drupal\Tests\quickedit\Functional\LayoutBuilderQuickEditTest which is now in contrib.

Usage of a couple of hooks in the layout_builder.module file

I believe the class and those hooks should be relatively easy to move to quickedit, however there is also \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::getQuickEditSectionComponent which is called from ::getComponent in the same class. Quickedit will need to implement the relevant hook to provide this behaviour.

spokje’s picture

Right, whilst walking away from the boulder at the bottom of the hill to look for my old buddy Sisyphus to check if he has worked with layout_builder and/or quickedit lately, I realized that no matter what or who's going to do this, (Yet Another) new issue will probably come in handy. The patch or plain diff from the MR there could probably be applied on the Contrib quickedit.

So: Once more unto the breach, dear friends, once more...where the breach this time is located at #3264633: Remove \Drupal\layout_builder\QuickEditIntegration and refactor it so that quickedit contrib provides the integration with layout builder

And of course: Nice catch @mstrelan.

spokje’s picture

Title: Remove quickedit from core » [PP-1] Remove quickedit from core
Status: Needs work » Postponed
spokje’s picture

StatusFileSize
new1.24 KB
new1.68 MB
spokje’s picture

StatusFileSize
new1.66 KB
new1.68 MB
dww’s picture

Title: [PP-1] Remove quickedit from core » [PP-2] Remove quickedit from core
mstrelan’s picture

\Drupal\image\Controller\QuickEditImageController is another integration in core that would need to move.

dww’s picture

Title: [PP-2] Remove quickedit from core » [PP-3] Remove quickedit from core
Issue summary: View changes

Re #126: Thanks, another great catch! I opened #3265140: Move QuickEditImageController from image to quickedit as another child issue. $PP++; 😉

spokje’s picture

StatusFileSize
new1.68 MB
new1.47 KB
mglaman’s picture

The PHPStan failure is due to Symfony 6:

 * Rename `RequestStack::getMasterRequest()` to `getMainRequest()`

https://github.com/symfony/symfony/search?q=getMasterRequest

spokje’s picture

Smart thing were said (certainly not by me) in this Slack thread about the PHPStan failure on the D10 patch: https://drupal.slack.com/archives/C014CT1CN1M/p1645198628262459

spokje’s picture

Title: [PP-3] Remove quickedit from core » [PP-4] Remove quickedit from core

This issue is moving backwards faster than a moonwalking MJ...

$PP++ on #3265121: Remove Symfony 4 RequestStack BC shim in 11.0.x which breaks all tests when core/phpstan-baseline.neon is changed in a patch/MR.

spokje’s picture

spokje’s picture

Title: [PP-4] Remove quickedit from core » [PP-3] Remove quickedit from core
spokje’s picture

Issue summary: View changes
catch’s picture

Title: [PP-3] Remove quickedit from core » [PP-2] Remove quickedit from core
spokje’s picture

dww’s picture

Yay, progress! Thanks.

Not a $PP++ moment, but #3265492: Fix inaccuracies in quickedit help topic (after the split from settings_tray) would probably be good to fix before we all completely walk away from QE forever. 😉

dww’s picture

Issue summary: View changes

Started a section on "Related work" (not blockers for this, but stuff we gotta do before we're done). Added #3266476: Ensure that quickedit does not get special core treatment there.

wim leers’s picture

@Spokje: thank you for your hilarious sisyphean commentary along the way — been there, done that, I wasn't as funny :P

mstrelan’s picture

Title: [PP-2] Remove quickedit from core » [PP-3] Remove quickedit from core
dww’s picture

Issue summary: View changes

Agreed on @Spokje's humor!
@mstrelan Good find, thanks! Adding to the list of blockers in the summary.

quietone’s picture

I move #3267258: Remove Quick Edit support from editor.module to a child of the Meta for tracking the steps to remove Quickedit in one place, #3228986: [Meta] Tasks to deprecate Quick Edit.

dww’s picture

Per @xjm @ #3228986-27: [Meta] Tasks to deprecate Quick Edit, I split the 9.4.x deprecation work to #3270434: Mark Quick Edit deprecated. I uploaded 3227033-9.4.x-deprecated-106.patch there and credited @Spokje, so I'm hiding it from here.

Thanks,
-Derek

ressa’s picture

Thanks for working on removing QuickEdit, I am not going to miss it. I never used it, but it often gives false positives in the tests, such as these two WebDriver\Exception\UnknownError: element click intercepted: Element ... is not clickable at point recently:

quietone’s picture

Trying to get this to follow the policy that we've been developing. The parent issue for the removal of a module is to be a Meta that tracks all the removal work. For quickedit that is #3274155: [Meta] Tasks to remove Quick Edit from core and move to contrib, changing parent.

spokje’s picture

Issue summary: View changes
wim leers’s picture

Title: [PP-2] Remove quickedit from core » [PP-2] Remove Quick Edit from core
spokje’s picture

Title: [PP-2] Remove Quick Edit from core » [PP-1] Remove Quick Edit from core
Issue summary: View changes
mstrelan’s picture

Title: [PP-1] Remove Quick Edit from core » Remove Quick Edit from core
Issue summary: View changes
Status: Postponed » Needs work
Issue tags: +Needs issue summary update

This is unblocked now. Needs work / needs IS update because it's not immediately clear what is still outstanding here.

dww’s picture

Title: Remove Quick Edit from core » Remove Quick Edit from core [PP-1]
Status: Needs work » Postponed

First we have to deprecate it in 9.5.x. See #3270434: Mark Quick Edit deprecated. But that's now the only remaining blocker! 🎉

dww’s picture

Title: Remove Quick Edit from core [PP-1] » [PP-1] Remove Quick Edit from core

sorry for the noise, I missed

spokje’s picture

Title: [PP-1] Remove Quick Edit from core » Remove Quick Edit from core
Assigned: Unassigned » spokje
Status: Postponed » Needs work

All blockers (see #147) are in.

As I start pushing the boulder uphill yet again, a guy chasing a boulder thundering downhill shouts at me: "Famous Last Words!"

spokje’s picture

spokje’s picture

Issue summary: View changes
Issue tags: -Needs issue summary update
spokje’s picture

Issue summary: View changes

dww’s picture

Status: Needs work » Needs review

Yay, thanks for getting this one ready! But we still have to mark it deprecated before we can remove it. ;)

But let’s see what the testbot says and treat this as if it needs review. But when it’s about to be RTBC, we PP-1 this one or something?

mstrelan’s picture

Status: Needs review » Needs work

Plenty of references outside of quickedit.module that we can remove in 10.0.x

spokje’s picture

Title: Remove Quick Edit from core » [PP-1] Remove Quick Edit from core
Status: Needs work » Postponed

> Yay, thanks for getting this one ready! But we still have to mark it deprecated before we can remove it. ;)

Yes, but both issues have to be ready at about the same time. Starting with this one gives (at least me) a better overview of what gets in the way of both issues being RTBC. Deleting stuff always shows errors earlier IMHO.

And to prove my case, we have a new postponing issue: #3291018: Move \Drupal\Tests\ckeditor5\Functional\CKEditor5QuickEditLibraryTest to the quickedit namespace/directory

spokje’s picture

Issue summary: View changes
wim leers’s picture

Title: [PP-1] Remove Quick Edit from core » [PP-2] Remove Quick Edit from core

And one more postponing issue discovered while reviewing the one @Spokje just opened: #3291047: Move Quick Edit-specific styling of CKEditor 4 & 5 into Quick Edit module.

spokje’s picture

And one more postponing issue discovered

Erm...thanks?

There's really _nothing_ easy and/or straightforward on the deprecation/removal of this specific module.

catch’s picture

I think it proves that it's a good decision to remove it at least, so much supporting code and test coverage scattered around core for something that's an admin feature.

wim leers’s picture

There's really _nothing_ easy and/or straightforward on the deprecation/removal of this specific module.

💯

I think it proves that it's a good decision to remove it at least, so much supporting code and test coverage scattered around core for something that's an admin feature.

I don't disagree with what you say here, but … I don't agree this is an "admin" feature. It's a content creator/editor feature. That's why it's scattered all over: because it blurs the lines between "back end" and "front end". That blurring requires code and integration tests.

Don't get me wrong: I'm happy to see this removed! The UX was never good enough. (I can say that, because I'm the person who probably worked on this the most. 😅)

spokje’s picture

Title: [PP-2] Remove Quick Edit from core » [PP-1] Remove Quick Edit from core
Issue summary: View changes
catch’s picture

It's a content creator/editor feature

I kind of see these as a subset of admin, although yes it's more of a venn diagram depending on the site.

spokje’s picture

Assigned: spokje » Unassigned
spokje’s picture

Assigned: Unassigned » spokje
catch’s picture

Title: [PP-1] Remove Quick Edit from core » Remove Quick Edit from core
Status: Postponed » Needs work

Last, last, last last, last, last blockers are in (again, again, again again).

wim leers’s picture

🥳 Hopefully the very last round on this one, @Spokje! 🤞

spokje’s picture

Issue summary: View changes

Thank @catch and @Win Leers.

I'll circle back to this one (and the deprecation one) tomorrow.
Off for some beers in the "Rolling Stone" bar with me ol' pal Sisyphus tonight.

spokje’s picture

Issue summary: View changes
Issue tags: -Needs release note

Added release note snippet.

spokje’s picture

FIxtures were changes, so adding tests for different DBs.

spokje’s picture

Issue tags: +10.0.0 release notes
spokje’s picture

Big MR, let's try to break it down:

- Removal of directory core/modules/quickedit.
- Changes in composer.lock and core/composer.json to remove the module.
- Rebuild core/misc/cspell/dictionary.txt since we deleted a lot of files.
- Uninstalled Quick Edit from core/modules/system/tests/fixtures/update/drupal-9.3.0.bare.standard.php.gz
- Uninstalled Quick Edit from core/modules/system/tests/fixtures/update/drupal-9.3.0.filled.standard.php.gz
- Removed Quick Edit from $expected_enabled_modules in core/modules/system/tests/src/Functional/UpdateSystem/UpdatePathTestBaseFilledTest.php
- Removed (P)CSS files from themes that will stay in core (Claro, Olivero, Starterkit, Umami), leave them in the others (Bartik, Classy, Seven, Stable, Stark). Discussed this briefly with @catch, we're doing the same thing here as we decided to do with templates. (See https://www.drupal.org/project/drupal/issues/3264120#comment-14456294)
- Removed Quick Edit from core/MAINTAINERS.txt
- Removed annotations in the plugins \Drupal\Core\Field\Plugin\Field\FieldFormatter\BasicStringFormatter, \Drupal\Core\Field\Plugin\Field\FieldFormatter\StringFormatter, \Drupal\comment\Plugin\Field\FieldFormatter\CommentDefaultFormatter, \Drupal\comment\Plugin\Field\FieldFormatter\CommentPermalinkFormatter, \Drupal\image\Plugin\Field\FieldFormatter\ImageFormatter, \Drupal\responsive_image\Plugin\Field\FieldFormatter\ResponsiveImageFormatter, \Drupal\text\Plugin\Field\FieldFormatter\TextSummaryOrTrimmedFormatter and \Drupal\text\Plugin\Field\FieldFormatter\TextTrimmedFormatter.

spokje’s picture

So by now the remaining references to Quick Edit are:

- CSS and JS in ckeditor5. I have no clue if that should be removed?
- Help topic for Settings Tray. This is OK, the functionality "Quick Edit" is a contained in the Settings Tray module and is different from the Quick Edit module.
- CSS for themes Seven, Stable, Stable9. This is OK, these are all themes that will be deprecated.
- Annotations in the plugins \Drupal\Core\Field\Plugin\Field\FieldFormatter\BasicStringFormatter, \Drupal\Core\Field\Plugin\Field\FieldFormatter\StringFormatter, \Drupal\comment\Plugin\Field\FieldFormatter\CommentDefaultFormatter, \Drupal\comment\Plugin\Field\FieldFormatter\CommentPermalinkFormatter, \Drupal\image\Plugin\Field\FieldFormatter\ImageFormatter, \Drupal\responsive_image\Plugin\Field\FieldFormatter\ResponsiveImageFormatter, \Drupal\text\Plugin\Field\FieldFormatter\TextSummaryOrTrimmedFormatter and \Drupal\text\Plugin\Field\FieldFormatter\TextTrimmedFormatter. I know Core doesn't support Contrib, but if we remove these I think we'll basically cripple Contrib Quick Edit massively.

wim leers’s picture

I thought we had just moved all CSS and JS referencing Quick Edit out of the CKEditor 5 module in the issue I started yesterday? (#3291047: Move Quick Edit-specific styling of CKEditor 4 & 5 into Quick Edit module) :O

Regarding for matters having Quick Edit-related annotations: those can all be moved to the contrib module, the contrib module can then just *alter* those annotations 😊

spokje’s picture

Thanks @Wim Leers:

I thought we had just moved all CSS and JS referencing Quick Edit out of the CKEditor 5 module in the issue I started yesterday?

Me too, but still:
#3292626: Remove core/modules/ckeditor5/css/quickedit.css https://git.drupalcode.org/project/drupal/-/blob/10.0.x/core/modules/cke...
https://git.drupalcode.org/project/drupal/-/blob/10.0.x/core/modules/cke...

Regarding for matters having Quick Edit-related annotations: those can all be moved to the contrib module, the contrib module can then just *alter* those annotations

So you're saying: Nuke them in this issue?

spokje’s picture

Regarding for matters having Quick Edit-related annotations: those can all be moved to the contrib module, the contrib module can then just *alter* those annotations

So you're saying: Nuke them in this issue?

Reread and decided it is indeed an OK for removal of the annotations.

spokje’s picture

Assigned: spokje » Unassigned
Status: Needs work » Needs review
spokje’s picture

Title: Remove Quick Edit from core » [PP-1] Remove Quick Edit from core
Status: Needs review » Postponed
Issue tags: +Needs manual testing

Postponed on #3266476: Ensure that quickedit does not get special core treatment per Slack discussion here: https://drupal.slack.com/archives/C014CT1CN1M/p1655750184381089
Also needs manual testing when that blocker lands (see also Slack discussion)

The main thing we need to do before removing them from 10.0.x is ensure that the composer façade naming for them is fixed, and have someone manually test EACH to confirm downloading the contrib module in D9 and installing it works SEAMLESSLY, and that it then does again if the rm -rf core/modules/foo

spokje’s picture

catch’s picture

Status: Postponed » Needs review

According to @Mixologic #3266476: Ensure that quickedit does not get special core treatment is actually done for quickedit, just the issue was not updated.

So.. I tested the upgrade path from 9.5.x to 10.0.x

First, in 9.5.x, I tried to install quickedit via composer, this does not work:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires drupal/core 9.5.x-dev -> satisfiable by drupal/core[9.5.x-dev].
    - Only one of these can be installed: drupal/quickedit[1.0.0-rc1, 1.0.0, 1.0.1, 1.0.x-dev], drupal/core[9.5.x-dev]. drupal/core replaces drupal/quickedit and thus cannot coexist with it.
    - Root composer.json requires drupal/quickedit ^1.0 -> satisfiable by drupal/quickedit[1.0.0-rc1, 1.0.0, 1.0.1, 1.0.x-dev].

You can also try re-running composer require with an explicit version constraint, e.g. "composer require drupal/quickedit:*" to figure out if any version is installable, or "composer require drupal/quickedit:^2.1" if you know which you need.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

This is because core/composer.json in 9.5.x still specifies quickedit as replaced. We might need to just tell people to wait until updating to 10.0.x to install the contrib module. #3188544: [policy discussion] Address Composer namespacing issues when extensions move between core and contrib will eventually resolve this in all directions.

Then I checkout out 10.0.x and ran composer update.

Because this issue hasn't landed yet, you also can't composer require drupal/quickedit in 10.0.x either for the same package replacement issue, so I applied this MR to arrive in the proper 10.0.x state with no quickedit references in core.

After that composer require drupal/quickedit runs fine:

composer require drupal/quickedit
Using version ^1.0 for drupal/quickedit
./composer.json has been updated
Running composer update drupal/quickedit
> Drupal\Composer\Composer::ensureComposerVersion
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
  - Locking drupal/quickedit (1.0.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing drupal/quickedit (1.0.1): Extracting archive

I hadn't run update.php yet (I forgot, but also this is the correct order to do things anyway). Got a whitescreen hitting the front page, update.php loads fine, ran the one olivero update that was pending, no weird updates to run for quickedit or anything.

I did find #3291700: new subtree split of core Quick Edit into contrib (v2), which looks to me like it might just be quickedit needing a new subtree split update from core since some commits are missing given the contrib project was created so long ago before we knew there'd be another 15 pending issues blocking its removal.

Leaving PP-1 on the update to the contrib module.

spokje’s picture

Title: [PP-1] Remove Quick Edit from core » Remove Quick Edit from core

I think removing [PP-1] from the issue title might make things a bit more clear.

spokje’s picture

Title: Remove Quick Edit from core » [PP-1] Remove Quick Edit from core
Issue summary: View changes
Related issues: +#3291700: new subtree split of core Quick Edit into contrib (v2)

Leaving PP-1 on the update to the contrib module.

Ah, missed that, reverting title and putting this back on postponed, since it is...erm...postponed on #3291700: new subtree split of core Quick Edit into contrib (v2). Adding that to the IS as well.

On a more cheery note:

We might need to just tell people to wait until updating to 10.0.x to install the contrib module. #3188544: [policy discussion] Address Composer namespacing issues when extensions move between core and contrib will eventually resolve this in all directions.

Discussed this briefly with catch on Slack and as a (valid?) workaround we propose:

composer require drupal/quickedit for 10.0.x
composer require drupal/quickedit-quickedit for 9.4.x/9.5.x

spokje’s picture

Status: Needs review » Postponed
spokje’s picture

Title: [PP-1] Remove Quick Edit from core » [PP-2] Remove Quick Edit from core
Issue summary: View changes
spokje’s picture

Title: [PP-2] Remove Quick Edit from core » [PP-1] Remove Quick Edit from core
Issue summary: View changes

#3292626: Remove core/modules/ckeditor5/css/quickedit.css is just sloppy, but not affecting this issue at all.

spokje’s picture

Title: [PP-1] Remove Quick Edit from core » [PP-2] Remove Quick Edit from core
Issue summary: View changes

It seems like this is the final code-blocker: #3292780: Move Quick Edit related Javascript from core/modules/ckeditor5/js/ckeditor5.es6.js::detach() to the Quick Edit module.
#FamousLastWordsThatMostLikelyWillNotBeTrueYetAgain

Since this is a JavaScript issue, I myself tried yesterday to do this myself, and failed in various, spectacular ways.
Somebody with an actual (JavaScript-minded) brain is needed to get that one over the line.

Sisyphus approves this message.

spokje’s picture

spokje’s picture

Note
This MR (against 10.0.x) needs:
- the fixture changes updated
- a separate patch against 10.1.x.

Since fixture changes are tedious work and there are a lot of those floating around in several other issues that are close to being committed, I (=Spokje) have given up on updating the MR until the dust settles a bit and I can do the update in one go.

By the time this issue is actually not being postponed any more it should be quick and easy enough (#FamousLastWords) to create the 10.1.x-patch by me or basically anybody.
The fixture update is a bit more elaborate, but I strongly believe that I since I've figured it out, so can anybody.

If anybody feels inclined to keep the MR up-to-date whilst this issue is still postponed: Please be my guest :)

spokje’s picture

Issue summary: View changes
spokje’s picture

Issue summary: View changes
spokje’s picture

Title: [PP-1] Remove Quick Edit from core » [PP-2] Remove Quick Edit from core
longwave’s picture

Title: [PP-2] Remove Quick Edit from core » Remove Quick Edit from core
Status: Postponed » Needs work
Issue tags: -Needs manual testing

I'm going to be bold and say we can continue moving this forward. I wrote manual test steps in #3303780: Manually test QuickEdit module removal that when combined with the patch in #3291700: new subtree split of core Quick Edit into contrib (v2) mean that I can successfully upgrade from a Quick Edit-enabled Drupal 9.4 to 10.0.x.

@Spokje as the king of fixture rerolling if you want to give this another pass I am happy to review :)

dww’s picture

quickedit 1.0.2 is now out, so I simplified the instructions in #3303780: Manually test QuickEdit module removal and moved them into the summary. I believe we're very close. 🤞 Agreed, if @Spokje is willing to do the fixture reroll, we're all very eager to RTBC this. 😉 If you want someone else to do so, please let us know. Thanks! 🙏

dww’s picture

I tried rebasing !2389 to latest 10.0.x. Hit a number of conflicts. Hope I resolved them all properly. 🤞 I did *not* fix the fixtures, so tests will probably still fail, but at least it's mergable again. 😅

dww’s picture

Is #3303780: Manually test QuickEdit module removal supposed to include applying the latest MR patch from here? It doesn't currently mention that step.

Also, can someone with sufficient powers please close MR!1020? That's against 9.3.x and now dead noise. Thanks!

dww’s picture

The changes here seemed way too big. There were reverted branch merges from @Spokje that are touching a ton of seemingly unrelated files. I tried another more careful interactive rebase, and I think we're in better shape now. Still no re-rolled fixtures, but getting closer. There are a few changes I'm still trying to understand / verify.

dww’s picture

Okay, I've got https://git.drupalcode.org/project/drupal/-/merge_requests/2389/diffs down to 138 changes, from a high of ~275 or something in the previous version. The changes now all only look like removing Quick Edit, so I think this is a lot closer. Curious to hear from @Spokje about why all that other cruft was in there from the various "WiP" and "Round 1.1" commits, etc. Also curious to see what the bot thinks of all this. 😬

catch’s picture

Is #3303780: Manually test QuickEdit module removal supposed to include applying the latest MR patch from here? It doesn't currently mention that step

No it's fine for manual testing to just rm -rf or similar.

longwave’s picture

Similar to my comment over in #3270899: Remove Color module from core I think the remaining thing to do here is leave behind a stub quickedit.install that cleanly uninstalls Quick Edit for anyone who upgrades to Drupal 10 without installing the contrib module.

dww’s picture

Re: #204: Added that step, thanks. Also adding steps for testing what happens if you leave 9.x core QE enabled and try to upgrade to D10 w/o installing contrib.

Re: #205: Per the monster Slack thread, no stubs. 😅 See #3270899-70: Remove Color module from core.

Thanks!
-Derek

ravi.shankar made their first commit to this issue’s fork.

longwave’s picture

Removed a bunch of Quick Edit CSS and images from stable and stable9 that is provided by the module already.

Some things remain that I'm not sure what to do with:

  1. Seven provides extra stylesheets for Quick Edit. As Seven is being removed from core anyway, do we leave them intact for users who are already using Seven and Quick Edit and want to continue that in contrib in Drupal 10?
  2. Settings Tray has some JS to handle Quick Edit. Do we port this to the contrib module (which might be tricky), or just remove it?
  3. Settings Tray also has tests that apparently rely on Quick Edit selectors, yet they aren't failing once Quick Edit has been removed!
longwave’s picture

Re #208.3 the tests triggers a mouseleave event on Quick Edit selectors, but if the selectors don't exist then the code is a no-op so this appears safe to remove.

Out of scope here but once Quick Edit is gone we can (hopefully) remove the skipped test in SettingsTrayBlockFormTest as it's possible the random fail was Quick Edit related.

catch’s picture

Seven provides extra stylesheets for Quick Edit. As Seven is being removed from core anyway, do we leave them intact for users who are already using Seven and Quick Edit and want to continue that in contrib in Drupal 10?

IMO we should just leave that in so that it'll be there in the contrib version.

Settings Tray has some JS to handle Quick Edit. Do we port this to the contrib module (which might be tricky), or just remove it?

I found #2944810: [PP-1] Add tests edit various fields with QuickEdit module when Settings tray is enabled. and #2944145: [PP-1] Settings Tray prevents editing some fields with QuickEdit module which suggest not only is the current logic broken and untested, but that fixing it is dependent on fixing other test coverage. This is extremely tangled, and part of the maintenance burden of supporting conflicting UX patterns between contextual links, quickedit, and settings tray, so I don't think it should block removal. I do think we should open an issue against the contrib module and maybe manually test the behaviour (10.x quickedit and HEAD, 10.x quickedit + this MR) to see whether if and what the regression is. A possible quick fix for the contrib module would be to fork current HEAD's settings_tray.js entirely, and then replace the core version with that, then that would provide parity until we change settings tray in core. I've opened #3304909: Skip contrib Quick Edit's Settings Tray integration test until Settings Tray provides an API to improve integration in #3308867.

dww’s picture

Thanks @catch for the review. Great point about the annotations needing to be altered back in.

Thanks @longwave for #208, related work, and for opening #3304893: Add Quick Edit metadata to core field formatters
#208.1 - Agreed w/ @catch to leave it in Seven until it's moved to contrib.
#208.2 - Ugh. 😅
#208.3 / #209 - Double ugh. 😬 But yay for at least getting this mess out of core. 😂

Re: #210: All sounds good. Thanks for opening #3304909: Skip contrib Quick Edit's Settings Tray integration test until Settings Tray provides an API to improve integration in #3308867.

I reviewed the MR and commits since #203. 2 of the threads can be resolved, but 3 are still open:

  1. Dictionary regeneration.
  2. core/modules/ckeditor5/js/ckeditor5.es6.js references to QE.
  3. The one I just opened about if removing core/themes/stable/images/image/error.svg is the right thing.

Plus the issue of the test failures from the update fixture needing to be rebuilt. 😅

I'm about to go completely offline for 2 weeks, so there's not much more I can do here. I don't think there are any contrib blockers to this moving forward, so I heartily approve of this proceeding without me. 😉 If we need a 1.0.3 release, that can happen after Sep 7th when I'll be back. Also very happy if someone else wants backup commit access to QE contrib, just in case.

Thanks!
-Derek

spokje’s picture

Rerolled with updated fixtures after #3270899: Remove Color module from core landed.

Unsure what to do with the thread in the MR about the generalisation of the comment. Are we OK after we remove the term "Quick Edit" and mention something like "Some modules require the current data to update EditorModel."?

Tried to answer the thread on the removal of stable/images/image/(error|upload).svg from stable.

catch’s picture

"Some modules require the current data to update EditorModel."

Maybe 'Allow modules to update EditorModel by providing the current data' but tbh I don't know what's going on there so I'm just trying to rephrase a sentence.

spokje’s picture

don't know what's going on there so I'm just trying to rephrase a sentence.

In the same boat as you, but at the very least it removes a mention of Quick Edit, so I ran with your suggestion.
Real JS boffins can correct it later, if needed.

catch’s picture

Put a patch up on #3304893: Add Quick Edit metadata to core field formatters. Can't verify the patch on DrupalCI until this issue is committed to core but it's pretty trivial.

Not sure what's going on with the DrupalCI errors here.

spokje’s picture

Not sure what's going on with the DrupalCI errors here.

Rerolled, retested, all OK now.

longwave’s picture

Status: Needs work » Needs review

Added the Stable images back again, they won't harm anything by being there, and there is a tiny chance someone is using them. Let's remove them when we get rid of Stable itself.

xjm’s picture

With the MR applied, the string "quickedit" still appears in the following files:

core/misc/cspell/dictionary.txt
core/modules/settings_tray/js/settings_tray.es6.js
core/modules/settings_tray/js/settings_tray.js
core/themes/seven/css/components/quickedit.css
core/themes/seven/seven.info.yml

We agreed to leave the Seven integration there, but I think the ST thing probably needs to be addressed? We discussed it with the random test fail above, but it's still there in the MR.

Meanwhile, "quick edit" appears in:

core/modules/help_topics/help_topics/core.settings_tray.html.twig
core/modules/settings_tray/js/settings_tray.es6.js
core/modules/settings_tray/tests/src/FunctionalJavascript/SettingsTrayBlockFormTest.php
core/modules/settings_tray/tests/src/FunctionalJavascript/OverriddenConfigurationTest.php
core/modules/settings_tray/settings_tray.links.contextual.yml
core/modules/settings_tray/settings_tray.module
core/themes/seven/css/components/quickedit.css

The Settings Tray help topic (mentioned previously) is still kicking around. So I guess this is blocked on #3264949: Move Quick Edit help topics to contrib Quick Edit module also. But it looks like there's some more mentions to get rid of in ST code especially.

catch’s picture

#3227033: Remove Quick Edit from core is open regarding the settings tray integration and the contrib module, I think we just need to remove that code from the MR here.

xjm’s picture

@catch Is there a different issue you meant to link?

catch’s picture

spokje’s picture

So this Settings Tray "Quick Edit" thing:

I've always left it alone, since it wasn't sharing any code/functionality with the module QE as we're removing it in here.
Basically it's just the name that's the same.

Do I understand we now want remove this also? I'm not against it, but since it doesn't have any code overlap with the current QE module, should it still go there?

AFAIK: The Settings Tray QE doesn't do anything fancy JS/BackBone things, besides the (admittedly) confusing name, wouldn't it be easier to keep?

catch’s picture

@Spokje this is about quickedit-specific code in core/modules/settings_tray/js/settings_tray.js

It was added in commit07d2ae1efd #2782915: Standardize the behavior of links when Outside In editing mode is enabled.

Settings tray is using data-quckedit-entity-id and .quickedit toolbar and etc. to modify what quickedit does (mostly disable stuff) when settings_tray is active. It doesn't break without the change, but there's a usability regression.

The test coverage has been moved to tests/src/FunctionalJavascript/SettingsTrayIntegrationTest.php in the contrib module. If the test fails without the code, that won't happen until this issue is actually committed to 10.x.

#3304909: Skip contrib Quick Edit's Settings Tray integration test until Settings Tray provides an API to improve integration in #3308867 is open to add back that settings_tray fix to quickedit.

However, we still need to essentially revert #2782915: Standardize the behavior of links when Outside In editing mode is enabled from settings_tray.js in order to be able to fully remove quickedit from core.

spokje’s picture

Thanks @catch.

Quick Edit, the module that keeps on giving...

spokje’s picture

So I _think_ I reverted #2782915: Standardize the behavior of links when Outside In editing mode is enabled in the JS. (Looked at https://git.drupalcode.org/project/drupal/-/commit/07d2ae1efd6a141c91111... for inspiration).

Unsure how to handle/interpret the (oncoming) test failure:

1) Drupal\Tests\settings_tray\FunctionalJavascript\SettingsTrayBlockFormTest::testBlocks
Behat\Mink\Exception\ElementHtmlException: Element exists on the page.

/var/www/html/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php:512
/var/www/html/core/modules/system/tests/src/FunctionalJavascript/OffCanvasTestBase.php:91
/var/www/html/core/modules/settings_tray/tests/src/FunctionalJavascript/SettingsTrayBlockFormTest.php:135
/var/www/html/core/modules/settings_tray/tests/src/FunctionalJavascript/SettingsTrayBlockFormTest.php:53
/var/www/html/vendor/phpunit/phpunit/src/Framework/TestResult.php:726

after reading this:

The test coverage has been moved to tests/src/FunctionalJavascript/SettingsTrayIntegrationTest.php in the contrib module. If the test fails without the code, that won't happen until this issue is actually committed to 10.x.

spokje’s picture

Thanks @catch, your JS remarks indeed fixed the failing test.

spokje’s picture

Issue summary: View changes
bbrala’s picture

Issue summary: View changes
bbrala’s picture

Status: Needs review » Reviewed & tested by the community

Ok, so i read through this whole monster. I've applied this patch to 10.0.x. I've search for: quickedit, quick, quick edit. And found only some references in the settings tray. Which are talked about in length in comments from #210. Therefor this seems like we ended up with a clean removal.

#3303780: Manually test QuickEdit module removal has been fixed just a minute ago, that was the last blocked. The issues in the contrib module for the last few parts of missing code/texts have been made and RTBC or close to it.

Id say. Nuke it with fire <3

catch’s picture

Status: Reviewed & tested by the community » Fixed

OK we have a couple of contrib issues to commit but given we know @dww is away for a week or so and he's been quick to commit/release things before, I think we're fine to go ahead here and resolve the contrib issues against the contrib module. We can track them in the parent tasks issue to make sure we know all blockers are fixed maybe.

Committed/pushed to 10.1.x and cherry-picked to 10.0.x, thanks! When we decided to deprecate this module I had no idea it had quite so many tentacles all over core..

  • catch committed 17bbfa4 on 10.0.x
    Issue #3227033 by Spokje, xjm, dww, longwave, Wim Leers, ravi.shankar,...
  • catch committed 11c4474 on 10.1.x
    Issue #3227033 by Spokje, xjm, dww, longwave, Wim Leers, ravi.shankar,...
quietone’s picture

Updated the CR to use alpha7 and published the CR.

wim leers’s picture

Issue summary: View changes

s/QuickEdit/Quick Edit/

Status: Fixed » Closed (fixed)

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