Quantcast
Channel: Issues for Drupal core
Viewing all 294759 articles
Browse latest View live

Trigger a JavaScript deprecation error for dialogClass in forked dialog.js

$
0
0

Problem/Motivation

Follow up from #3296098: Removal :tabbable usage in dialog.js from @catch

figure out what to do with dialogClass

This was deprecated in jQuery UI, but was still in use in various places in core.

The original issue added a PHP deprecation to 10.3, but not a JavaScript deprecation, we should try to add a js deprecation to 10.3.x

Steps to reproduce

N/A

Proposed resolution

TBD

Remaining tasks

Decide what to do
Implement it
Review

User interface changes

N/A

API changes

TBD

Data model changes

TBD

Release notes snippet

TBD


Use attributes instead of query string in PathProcessorFiles and stop replacing query string in RouteProvider::getRouteCollectionForRequest()

$
0
0

Problem/Motivation

Follow-up from #3085360: RouteProvider::getRouteCollectionForRequest() can poison query string of next request.

PathProcessorFiles takes the filename out of the URL and puts it into a $request->query (so that the path looked up for routing is system/files instead of the whole path, but this means the caching in RouteProvider::getRouteCollectionForRequest() has to store and restore the query parameters, which in turn led to caching bugs.

Instead of this, we could store the filename in $request->attributes so it doesn't override information from the request, and in RouteProvider::getRouteCollectionForRequest() trigger a deprecation if the query string changes after incoming path processing has run.

Steps to reproduce

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

CKEditor 5 toolbar items of multi-value field (typically Paragraphs) overflowing on narrow viewports and overlapping with node form's sidebar on wide viewports

$
0
0

Problem/Motivation

the toolbar items of ckeditor 5 is overlapping with the sidebar on the node form when it's being used in a multi-value field (or whenever the editor is being embedded in a table element?) and there are many toolbar items.

Steps to reproduce

1. Do a Drupal clean install. (I use https://simplytest.me/)
2. Navigate to a content type and create a field using ckeditor 5 and allow unlimited value.
3. Move the field to the top on the form display of the content type.
4. Add more items to the ckeditor.
5. Go to the create page of the content type and resize the browser down to around 1000px (depends on the number of the toolbar items)
6. See the overlapping issue.

Proposed resolution

https://github.com/ckeditor/ckeditor5/issues/11334→ points out this is because when CK5 is inside an element that can dynamically change width to accommodate the contents, then the editor is unable to determine if there are excess toolbar elements that need to be collapsed. To work around this for the most-common tabledrag scenario, we use JS to calculate the available width for CKEditor 5 then set a max width on the table cell, which results in a fixed width that CKEditor 5 can use to determine if the collapse ... is needed. This custom logic would retrigger any time the viewport resizes.

Access policies should be marked as final to encourage decorating

$
0
0

Problem/Motivation

I've started porting Group's old policies to the new Access Policy API and realized that it would be a BC break to make them use the new core interfaces because someone might have extended my policies' classes and swapped them out in the service definitions. So I would be breaking their code and therefore have come up with an alternative (temporary) solution before I tag a new major release where I switch to core's API.

However, this has got me thinking. Extending an access policy, which is a tagged service, is actually something we should discourage, if not make impossible. We've had the issue before with the entity type handlers where only one module could ever swap out a handler because they were essentially all extending the same class and changing the same plugin definition entry. This made it so it was really hard if not impossible for multiple entity access modules to work together.

Group has fixed this problem by using a services-based handler system that was built with decorating in mind. Given how small the interface for an access policy is, I would also advocate for us changing the two access policy classes in core to final before we release it with 10.3. Or at the very least make them final in 11.0.

Keep in mind, you should never swap out an access policy with an extended class in contrib code because then we go back to the dark ages of incompatible access modules. Now is the chance to create a better ecosystem because the API is new. So contrib will always have to opt for decorators, or access policies of their own that make good use of the build and alter phase.

Project code, can still swap out the original class by decorating it with a high priority and then not calling the parent. So that avenue is still available when marking access policies as final, it's just far more clear from the code that this is not encouraged.

I intend to go into much more detail on this subject at DrupalCon Barcelona, but given the time issue I feel like we should probably tackle this before D10.3 or, less preferably, D11.

Steps to reproduce

N/A

Proposed resolution

Mark access policies as final and document this so contrib follows suit.

Remaining tasks

Mark the two policies in core as final.

User interface changes

N/A

API changes

Two policies in core become final.

Data model changes

N/A

Release notes snippet

N/A

Add validation constraints to core.menu.schema.yml

$
0
0

Problem/Motivation

core.menu.static_menu_link_overrides has 3 property path that are not yet validatable:

./vendor/bin/drush config:inspect --filter-keys=core.menu.static_menu_link_overrides --detail --list-constraints
➜  🤖 Analyzing…

 Legend for Data: 
  ✅❓  → Correct primitive type, detailed validation impossible.
  ✅✅  → Correct primitive type, passed all validation constraints.
 -------------------------------------------------------------------------------- --------- ------------- ------ -------------------------------------------- 
  Key                                                                              Status    Validatable   Data   Validation constraints                      
 -------------------------------------------------------------------------------- --------- ------------- ------ -------------------------------------------- 
  core.menu.static_menu_link_overrides                                             Correct   70%           ✅❓   ValidKeys: '<infer>'                        
                                                                                                                  LangcodeRequiredIfTranslatableValues: null  
   core.menu.static_menu_link_overrides:                                           Correct   Validatable   ✅✅   ValidKeys: '<infer>'                        
                                                                                                                  LangcodeRequiredIfTranslatableValues: null  
   core.menu.static_menu_link_overrides:_core                                      Correct   Validatable   ✅✅   ValidKeys:                                  
                                                                                                                    - default_config_hash                     
   core.menu.static_menu_link_overrides:_core.default_config_hash                  Correct   Validatable   ✅✅   NotNull: {  }                               
                                                                                                                  Regex: '/^[a-zA-Z0-9\-_]+$/'                
                                                                                                                  Length: 43                                  
                                                                                                                  ↣ PrimitiveType: {  }                       
   core.menu.static_menu_link_overrides:definitions                                Correct   NOT           ✅❓   ⚠️  @todo Add validation constraints here   
   core.menu.static_menu_link_overrides:definitions.contact__site_page             Correct   Validatable   ✅✅   ValidKeys: '<infer>'                        
   core.menu.static_menu_link_overrides:definitions.contact__site_page.enabled     Correct   Validatable   ✅✅   ↣ PrimitiveType: {  }                       
   core.menu.static_menu_link_overrides:definitions.contact__site_page.expanded    Correct   Validatable   ✅✅   ↣ PrimitiveType: {  }                       
   core.menu.static_menu_link_overrides:definitions.contact__site_page.menu_name   Correct   NOT           ✅❓   ⚠️  @todo Add validation constraints here   
   core.menu.static_menu_link_overrides:definitions.contact__site_page.parent      Correct   NOT           ✅❓   ⚠️  @todo Add validation constraints here   
   core.menu.static_menu_link_overrides:definitions.contact__site_page.weight      Correct   Validatable   ✅✅   Range:                                      
                                                                                                                    min: -2147483648                          
                                                                                                                    max: 2147483647                           
                                                                                                                  FullyValidatable: null                      
                                                                                                                  ↣ PrimitiveType: {  }                       
 -------------------------------------------------------------------------------- --------- ------------- ------ -------------------------------------------- 

Steps to reproduce

  1. Get a local git clone of Drupal core 11.x.
  2. composer require drupal/config_inspector— or manually install https://www.drupal.org/project/config_inspector/releases/2.1.5 or newer (which supports Drupal 11!)
  3. composer require drush/drush
  4. vendor/bin/drush config:inspect --filter-keys=core.menu.static_menu_link_overrides --detail --list-constraints

Proposed resolution

Add validation constraints to:

  1. definitions
  2. menu_name
  3. parent

For examples, search *.schema.yml files for the string constraints:😊

Reach out to @borisson_ or @wimleers in the #distributions-and-recipes.

Remaining tasks

User interface changes

None.

API changes

Data model changes

More validation 🚀

Release notes snippet

None.

Follow-up for jQuery val replacement

$
0
0

The eslint rules used in #3239134: Refactor (if feasible) uses of the jQuery val function to use VanillaJS is not catching all usage of .val() it is still used in the following files:

core/misc/states.es6.js
        return this.val() === '';
          return this.filter(':checked').val() || false;
        return this.val();
          return this.filter(':checked').val() || false;
        return this.val();

core/modules/ckeditor/js/models/Model.es6.js
        this.get('$textarea').val(

core/modules/color/preview.es6.js
          form.find('.color-palette input[name="palette[base]"]').val(),
          form.find('.color-palette input[name="palette[text]"]').val(),
          form.find('.color-palette input[name="palette[link]"]').val(),
            .val(),
            .val(),

core/modules/filter/filter.filter_html.admin.es6.js
        this.$allowedHTMLFormItem.val(
        this.$allowedHTMLFormItem.val(this._generateSetting(this.userTags));

// This one is a legitimate use
core/modules/quickedit/js/views/EditorView.es6.js
            .val(value);

core/themes/claro/js/vertical-tabs.es6.js
        .val(this.details.attr('id'));

We should also open an issue in the upstream project.

Provide BC for ImageStyleDownloadController

$
0
0

Problem/Motivation

Multiple contrib modules are broken since ImageStyleDownloadController::deliver() now takes a string of the expected scheme for derivatives as a required parameter

Steps to reproduce

AVIF: #3450240: Drupal 10.3 compatibility
Stage File Proxy: #3450243: Drupal 10.3 compatibility
WebP: Probably also broken

Proposed resolution

Provide default value and throw a deprecation error.

public function deliver(Request $request, $scheme, ImageStyleInterface $image_style, ?string $required_derivative_scheme = null) {
  if ($required_derivative_scheme === NULL) {
    // @todo throw a deprecation.
    $required_derivative_scheme = $scheme;
  }
  // ...
}

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

The theme must be passed as a query argument

$
0
0

Problem/Motivation

After upgrading to 10.1.4 I see a lot of these in the log:

Symfony\Component\HttpKernel\Exception\BadRequestHttpException: The theme must be passed as a query argument in Drupal\system\Controller\AssetControllerBase->deliver() (line 132 of /code/web/core/modules/system/src/Controller/AssetControllerBase.php).

Location example: `/sites/default/files/css/css_7VJXFvsp6VhorXdjf7yy8BAcdfZtbhl2-05k-DsnaA0.css`

All the entries are on css asset files


Limit number of searches by IP

$
0
0

Problem/Motivation

Drupal 10.2.6
Rocky Linux 9.3
Apache 2.4.57
PHP 8.3.6

Hello!!
For some time now I have been experiencing attacks on my site through searches in Drupal. A lot of lookups with strange code and symbols are performed simultaneously from an IP until the server is out of memory and without service. Would there be a way to limit the number of searches that can be performed from the same IP during a period of time, or how could I solve this problem?

Thanks in advance!!

Steps to reproduce

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

[PP-1] Convert test annotation to attributes in Drupal/Test/Component

$
0
0

Problem/Motivation

Please DO NOT change the MR here manually. The intent here is to develop a Rector script to automatically do the conversions. The script itself is currently being developed at https://github.com/mondrake/d8-unit/blob/test-rector/rector.php

We need first to find out all the blockers for such automation to happen.

Blocked by:

Steps to reproduce

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

Evaluate making DynamicPageCacheSubscriber::onResponse() run after RouteAccessResponseSubscriber::onRespond(), to take into account route access cacheability

$
0
0

Problem/Motivation

Discovered in #2869426.

See #2869426-28: EntityResource should add _entity_access requirement to REST routes, #2869426-29: EntityResource should add _entity_access requirement to REST routes and #2869426-83: EntityResource should add _entity_access requirement to REST routes in particular.

#29:

I could be wrong, but I remember that we once discussed that it is by design that route access cacheability is *not* considered by dynamic page cache because dynamic page cache runs *after* route access checking.

But maybe I misunderstood something here.

To my surprise 😲 and fear 😱, this was NEVER DISCUSSED! Zero mentions of route access. #2429617-219: Make D8 2x as fast: Dynamic Page Cache: context-dependent page caching (for *all* users!) mentions it. But doesn't dive in deeper. So I instead looked at every occurrence of access. Again nothing mentioned.

But I think @Berdir is right. It's just unfortunate that despite Dynamic Page Cache having such detailed test coverage, this is not something that is explicitly tested. (If it were, then the change made to \Drupal\Core\EventSubscriber\RouteAccessResponseSubscriber::getSubscribedEvents() should trigger a test failure.)

And I think the reason this is only coming up now and not months or years ago, is that the REST module's responses are atypical. Unlike pretty much all other responses, the controller in question (\Drupal\rest\Plugin\rest\resource\EntityResource::get()) has been:

  1. Doing its own route/response-level access checking.
  2. Significantly varying the contents of the response based on that access checking.

(The closest analogies are block and entity rendering, but those are not route/response-level, they're intra-response-level.)

Proposed resolution

TBD

Remaining tasks

Investigate & discuss.

User interface changes

None.

API changes

None.

Data model changes

Yes: Dynamic Page Cache would vary not just by the Response's cacheability, but also by the route access result's cacheability.

Cache bin names should be set from service tags, not the service name

$
0
0

Problem/Motivation

Cache bin service naming is hardwired in Drupal and ListCacheBinsPass classes. This is weird and highly unusual, might be called an antipattern.

Also, RenderCache presumes every cache bin service is defined with factory: ['@cache_factory', 'get'].

Steps to reproduce

Proposed resolution

  1. Add the name of the bin to the cache.bin tag. This makes it possible to drop any presumptions on the service naming.
  2. Add a cache_factory_delegated service which allows getting any cache service. Drupal::cache becomes return static::getContainer()->get('cache_factory_delegated')->get($bin);. RenderCache similarly.

The necessary code is minimal because ListCacheBinsPass already exists. Not counting the BC layer, it requires three new lines of code there. The new DelegatedCacheFactory contains a single line of code of logic the rest is comments etc.

Remaining tasks

Review.

User interface changes

None.

API changes

Cache bins must now include a bin specified in the service tag.

Data model changes

None.

Release notes snippet

CR drafted.

Remove dependency on hardcoded classes in views template

$
0
0

In core drupal the view.views.html.twig contains the following:

  {% if rows -%}
    {{ rows }}
  {% elseif empty -%}
    {{ empty }}
  {% endif %}
  {{ pager }}

And in Olivero and other theme implementations we typically have

  {% if rows %}
    <div class="view-content">
      {{ rows }}
    </div>
  {% elseif empty %}
    <div class="view-empty">
      {{ empty }}
    </div>
  {% endif %}

Here we can see that the classes view-content and view-empty are hardcoded in the twig template.

This assumes that all views and view styles use the same markup, but we can see modules like view infinite scroll also inject a container, so I think it would be useful if this hardcoded dependency was removed. e.g. we could also add a row or other row container class(es).

Undefined offset 1 in the MenuParentFormSelector.php

$
0
0

I have this fatal error on one of my sites when trying to call the core/lib/Drupal/Core/Menu/MenuParentFormSelector.php::parentSelectElement() method with an empty $menu_parent argument.

Make Block config entities fully validatable

$
0
0

Problem/Motivation

Blocks are some of the most widely used config entities. They should be validatable. This would be very valuable for the Recipes Initiative, especially now that Recipes uses config validation (see #3405328: [meta] Make recipes safer to use in the real world by supporting config validation and rolling back a broken recipe for details).

Proposed resolution

This can easily become a huge scope, so limit the scope to be reviewable:

  1. Make block.block.* validatable.
  2. Introduce type: block.settings.block_content:* to fix the accidental leftovers from when content blocks ("custom blocks" in Drupal 7) were split out — see #5
  3. Make one concrete block plugin with settings fully validatable: the search block (type: block.settings.search_form_block)
  4. .

  5. Open blockers for essential problems that are out of scope:
    1. ✅ Reduction by 11 LoC in this MR: #3426309: Add config validation for weights (blocks, filters, etc. all use weights)
    2. ✅ Reduction by 1 file/11 LoC in this MR: #3426324: ExistsConstraintValidator should ignore NULL values and treat `core` as a valid module
  6. Open follow-ups for non-essential problems encountered along the way — see under "remaining tasks"

Remaining tasks

  1. ✅ Implement proposed solution
  2. ✅ Get tests passing
  3. ✅ Search module must provide update path for search_form_block blocks'page_id setting
  4. Explicit test coverage for each top-level property of a Block config entity in BlockValidationTest.

Follow-ups:

  1. #3426278: [PP-1] Deprecate unused `provider` exported property from Block config entities
  2. #3426279: [PP-1] Deprecate `null` as valid `weight` for Block config entities
  3. #3426302: [PP-1] Deprecate and remove `status` and `info` settings from `block_content` blocks

User interface changes

None.

API changes

None.

Data model changes

None.

Release notes snippet

TBD


Optimize test order when --directory is used

$
0
0

Problem/Motivation

Follow-up from #3449743: Try to optimize test ordering when run-tests.sh is used with a mixture of test types which wasn't enough.

When gitlab runs contrib tests, we want to run the slowest tests first, currently, slowest tests are run last.

Steps to reproduce

Before:

php ./core/scripts/run-tests.sh --sqlite 'sites/default/files/.sqlite' --directory modules/contrib/paragraphs

Drupal test run
---------------

Tests to be run:
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsClientsideButtonsClaroTest
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsStableEditPerspectivesUiTest
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsAddWidgetTest
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsClientsideButtonsTest
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsEntityReferenceWarningTest
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsWidgetElementsTest
  - Drupal\Tests\paragraphs\Kernel\migrate\FieldCollectionTypeSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphsItemRevisionSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\FieldCollectionItemSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphsFieldMigrationTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphsItemSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\FieldCollectionItemRevisionSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphsTypeSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphContentMigrationTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphsTypeMigrationTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsCompositeRelationshipTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsBehaviorPluginsTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsTypeHasEnabledBehaviorPluginTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsCollapsedSummaryTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsIsChangedTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsLangcodeChangeTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsEntityMethodsTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsAccessTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsReplicateTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsSummaryFormatterTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsTypesTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsTranslationTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsPreviewTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsFieldGroupTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsWidgetButtonsTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsConfigTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsInlineEntityFormTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsUiTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsAdministrationTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsAddModesTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsContactTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsAccessTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsEditModesTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsLegacyContentModerationTranslationsTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsEntityTranslationWithNonTranslatableParagraphs
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsSummaryFormatterTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsTypesTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsTranslationTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsPreviewTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsTranslationsTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsFieldGroupTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsWidgetButtonsTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsConfigTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsDragAndDropModeTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsInlineEntityFormTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsUiTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsAdministrationTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsAddModesTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsContentModerationTranslationsTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsAlterByTypeTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsContactTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsAccessTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsReplicateEnableTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsBehaviorsTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsEditModesTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsDuplicateFeatureTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsEntityTranslationWithNonTranslatableParagraphs
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsHeaderActionsTest
  - Drupal\Tests\paragraphs\Functional\Migrate\MigrateUiParagraphsTest
  - Drupal\Tests\paragraphs\Functional\ParagraphsWidgetButtonsTest
  - Drupal\Tests\paragraphs\Functional\ParagraphsUiTest
  - Drupal\Tests\paragraphs\Functional\ParagraphsBehaviorsTest
  - Drupal\Tests\paragraphs\Functional\ParagraphsUninstallTest
  - Drupal\Tests\paragraphs\Unit\migrate\FieldCollectionsFieldInstanceSettingsTest
  - Drupal\Tests\paragraphs\Unit\migrate\ParagraphsFieldInstanceSettingsTest
  - Drupal\Tests\paragraphs\Unit\migrate\ParagraphsProcessOnValueTest
  - Drupal\Tests\paragraphs\Unit\migrate\ParagraphsFieldSettingsTest
  - Drupal\Tests\paragraphs\Unit\migrate\MigrationPluginsAltererTest
  - Drupal\Tests\paragraphs\Unit\migrate\FieldCollectionFieldSettingsTest
  - Drupal\Tests\paragraphs_demo\Functional\ParagraphsDemoTest
  - Drupal\Tests\paragraphs_type_permissions\Functional\ParagraphsTypePermissionsTest
  - Drupal\Tests\paragraphs_library\FunctionalJavascript\ParagraphsContentModerationTest
  - Drupal\Tests\paragraphs_library\FunctionalJavascript\ParagraphsLibraryItemEntityBrowserTest
  - Drupal\Tests\paragraphs_library\Functional\ParagraphsLibraryTest
  - Drupal\Tests\paragraphs_library\Functional\ParagraphsLibraryItemTranslationTest
  - Drupal\Tests\paragraphs_library\Functional\ParagraphsLibraryItemTest
  - Drupal\Tests\paragraphs_library\Functional\MultilingualBehaviorTest

After:

- Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsAddWidgetTest
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsClientsideButtonsClaroTest
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsClientsideButtonsTest
  - Drupal\Tests\paragraphs_library\FunctionalJavascript\ParagraphsContentModerationTest
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsEntityReferenceWarningTest
  - Drupal\Tests\paragraphs_library\FunctionalJavascript\ParagraphsLibraryItemEntityBrowserTest
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsStableEditPerspectivesUiTest
  - Drupal\Tests\paragraphs\FunctionalJavascript\ParagraphsWidgetElementsTest
  - Drupal\Tests\paragraphs\Functional\Migrate\MigrateUiParagraphsTest
  - Drupal\Tests\paragraphs_library\Functional\MultilingualBehaviorTest
  - Drupal\Tests\paragraphs\Functional\ParagraphsBehaviorsTest
  - Drupal\Tests\paragraphs_demo\Functional\ParagraphsDemoTest
  - Drupal\Tests\paragraphs_library\Functional\ParagraphsLibraryItemTest
  - Drupal\Tests\paragraphs_library\Functional\ParagraphsLibraryItemTranslationTest
  - Drupal\Tests\paragraphs_library\Functional\ParagraphsLibraryTest
  - Drupal\Tests\paragraphs_type_permissions\Functional\ParagraphsTypePermissionsTest
  - Drupal\Tests\paragraphs\Functional\ParagraphsUiTest
  - Drupal\Tests\paragraphs\Functional\ParagraphsUninstallTest
  - Drupal\Tests\paragraphs\Functional\ParagraphsWidgetButtonsTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsAccessTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsAddModesTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsAdministrationTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsConfigTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsContactTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsEditModesTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsEntityTranslationWithNonTranslatableParagraphs
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsFieldGroupTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsInlineEntityFormTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsLegacyContentModerationTranslationsTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsPreviewTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsSummaryFormatterTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsTranslationTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsTypesTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsUiTest
  - Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsWidgetButtonsTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsAccessTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsAddModesTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsAdministrationTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsAlterByTypeTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsBehaviorsTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsConfigTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsContactTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsContentModerationTranslationsTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsDragAndDropModeTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsDuplicateFeatureTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsEditModesTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsEntityTranslationWithNonTranslatableParagraphs
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsFieldGroupTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsHeaderActionsTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsInlineEntityFormTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsPreviewTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsReplicateEnableTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsSummaryFormatterTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsTranslationTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsTranslationsTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsTypesTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsUiTest
  - Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsWidgetButtonsTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsAccessTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsBehaviorPluginsTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsCollapsedSummaryTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsCompositeRelationshipTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsEntityMethodsTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsIsChangedTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsLangcodeChangeTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsReplicateTest
  - Drupal\Tests\paragraphs\Kernel\ParagraphsTypeHasEnabledBehaviorPluginTest
  - Drupal\Tests\paragraphs\Kernel\migrate\FieldCollectionItemRevisionSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\FieldCollectionItemSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\FieldCollectionTypeSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphContentMigrationTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphsFieldMigrationTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphsItemRevisionSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphsItemSourceTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphsTypeMigrationTest
  - Drupal\Tests\paragraphs\Kernel\migrate\ParagraphsTypeSourceTest
  - Drupal\Tests\paragraphs\Unit\migrate\FieldCollectionFieldSettingsTest
  - Drupal\Tests\paragraphs\Unit\migrate\FieldCollectionsFieldInstanceSettingsTest
  - Drupal\Tests\paragraphs\Unit\migrate\MigrationPluginsAltererTest
  - Drupal\Tests\paragraphs\Unit\migrate\ParagraphsFieldInstanceSettingsTest
  - Drupal\Tests\paragraphs\Unit\migrate\ParagraphsFieldSettingsTest
  - Drupal\Tests\paragraphs\Unit\migrate\ParagraphsProcessOnValueTest

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

Triage core feature requests, plans, and tasks for inclusion on the ideas queue

$
0
0

The project has accrued many feature requests, plans, and tasks over time. Some of them may be ideas which would be better discussed in the ideas queue.

  • List worthy looking issues from the core queue that should probably be in the ideas queue below in the issue summary. If an issue needs the signoff of a product manager or of a framework manager, the issue is probably a candidate. Tip - look for issues with those tags. But there are other kinds of issues that are not ordinary feature requests. We are looking for those too. For example: "Add module X to core."
  • Debate.
  • Move some to the ideas queue.

Views hardcodes exposed filter block form ID's which breaks AJAX when the same form is shown multiple times on one page

$
0
0

Problem/Motivation

When an exposed filter is placed twice on the same page it gets the same html identifier. Every instance of this form needs a unique id.

Proposed resolution

Use Html::getUniqueId() to generate the ID.

Remaining tasks

Review

User interface changes

None

Release notes snippet

When using drupalGet(), provide an associative array for $headers

$
0
0

Problem/Motivation

I noticed this while working on https://www.drupal.org/project/admin_toolbar/issues/3407845, where a test in the newly set-up CI fails. This is because the test just extends ToolbarAdminMenuTest, where drupalGet is called thusly:

$this->drupalGet('toolbar/subtrees/' . $subtrees_hash, ['query' => [MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax']], ['X-Requested-With: XMLHttpRequest']);

Resulting in this pipeline-error:

TypeError: Behat\Mink\Session::setRequestHeader(): Argument #1 ($name) must be of type string, int given, called in /builds/issue/admin_toolbar-3407845/web/core/tests/Drupal/Tests/UiHelperTrait.php on line 235

As the documentation for drupalGet() states:

An array containing additional HTTP request headers, the array keys are the header names and the array values the header values.

So in the above case it would be

$this->drupalGet('toolbar/subtrees/' . $subtrees_hash, ['query' => [MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax']], ['X-Requested-With' => 'XMLHttpRequest']);

Proposed resolution

Try and find all spots in the code where drupalGet() is called with headers where only one string per header instead of a key-value pair is used, and split them up.

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

[meta] Release Drupal 11 in 2024

$
0
0
Viewing all 294759 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>