task: #3611267 Require Drupal ^11.4 || ^12 on the new 2.1.x branch

Summary

Per the branch-split plan agreed in #3597892 comment #9: a new 2.1.x branch was cut off the current 2.0.x HEAD (40b26098, which already includes the Drupal 11/12 Project Update Bot compatibility fixes from MR !10 (merged), the draft-revision fix from MR !11 (merged), and the fully-green gated CI from MR !12 (merged)). This MR narrows 2.1.x to require Drupal ^11.4 || ^12 only, so 2.1.x becomes the forward-looking development line while 2.0.x keeps supporting older core versions (see the companion MR targeting 2.0.x).

Changes

  • entityqueue_form_widget.info.yml: core_version_requirement: ^11.4 || ^12
  • composer.json: "drupal/core": "^11.4 || ^12"
  • tests/modules/entityqueue_form_widget_test/entityqueue_form_widget_test.info.yml: core_version_requirement: ^11.4 || ^12 (the test module declares its own requirement, aligned to match)
  • .gitlab-ci.yml: pins the composer job's DRUPAL_CORE to the released 11.4.3. The gitlab_templates default-ref currently resolves CORE_STABLE to 11.3.12, below this branch's new ^11.4 || ^12 requirement, which made the phpunit job fail with Unable to install modules: module 'entityqueue_form_widget' is incompatible with this version of Drupal core. Pinning DRUPAL_CORE on the composer job (consumed by phpunit via needs/dotenv) fixes this without opting into the deprecated _TARGET_CORE variable.

OOP hook conversion (2.1.x only)

src/Hook/EntityqueueFormWidgetHooks.php now carries every hook implementation and helper as an OOP #[Hook] class (DI of current_user, entity_type.manager, database), and entityqueue_form_widget.module has been removed — per the maintainer's direction that 2.1.x drops the legacy procedural hooks file entirely. 2.0.x keeps the #[LegacyHook] .module pattern, since it still supports Drupal core versions where the file-less OOP-only hook style isn't required. phpstan.neon had its entityqueue_form_widget.module path entry removed to match. The submit callback uses a static bridge ([static::class, 'nodeFormSubmit']) that stays serializable in the form cache and delegates to the instantiated hook service's doNodeFormSubmit().

Drupal core 11.4 test fixes

Drupal core 11.4 changed the testing profile's optional node.body field storage from text_with_summary to text_long. The test module's own field.storage.node.body, the two field.field.node.*.body field instances, and the two core.entity_form_display.node.*.default form displays were still declaring/expecting text_with_summary, which is a storage/instance type mismatch — installing the test config on core 11.4 threw a fatal Property summary is unknown on node/add. Fixed by aligning the test module's body field config to text_long (matching what core 11.4's testing profile actually provides), including switching the form widget to text_textarea and dropping the now-invalid summary_rows setting.

Both FunctionalJavascript tests pass locally against a clean Drupal core 11.4.4 install (2 tests, 12 assertions), phpstan reports no errors, and phpcs is clean.

Issue

https://www.drupal.org/project/entityqueue_form_widget/issues/3611267

Parent plan: https://www.drupal.org/project/entityqueue_form_widget/issues/3597892#comment-16693254

AI disclosure

AI-Generated: Yes (Used Claude Code to create the 2.1.x branch, bump the core version requirement across the module info file, composer.json, and the test module's info file, convert the procedural hooks in entityqueue_form_widget.module into the OOP EntityqueueFormWidgetHooks class and remove the .module file, and fix the FunctionalJavascript tests against the Drupal core 11.4 testing profile's text_long node.body field.)

Checkpoints

  • File an issue about this project
  • Addition/Change/Update/Fix to this project
  • Testing to ensure no regression
  • Automated unit/functional testing coverage
  • Developer Documentation support on feature change/addition
  • User Guide Documentation support on feature change/addition
  • UX/UI designer responsibilities
  • Accessibility and Readability
  • Reviewed by a human
  • Code review by maintainers
  • Full testing and approval
  • Credit contributors
  • Review with the product owner
  • Update Release Notes
  • Release
Edited by Rajab Natshah

Merge request reports

Loading