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

[PP-2] Speed up gitlab ci runs

$
0
0

Problem/Motivation

With gitlab ci, overall test runs complete within around 15-18 minutes. However, if one test is individually very slow, this can block the pipeline from completing for sometimes minutes after all other tests have completed. If we can refactor these individual blocking tests, we may be able to get test runs well below 15 minutes. This should also reduce gitlab hosting costs since it will reduce the time that any particular test pod is reserved.

We can also link to gitlab configuration changes from this issue too, but focusing on tests for now since at least a couple will obscure other improvements.

Steps to reproduce

Proposed resolution

Identify bottlenecks in the pipelines and fix them, whether containers, pipeline configuration, or specific long-running tests:

#3387706: Don't make other tests depend on PHPUnit
#3386479: Copy less files around in ComponentsIsolatedBuildTest
#3386458: Add GenericModuleTestBase and use it to test general module things
#3387737: Minimize PHP image size
#3371963: Update Nightwatch to 3.x
#3387117: Enable distributed caching in GitLab Runner
#3388375: Run nightwatch tests in parallel
#3387117: Enable distributed caching in GitLab Runner
#3388365: Distribute @group #slow tests between test runners and mark more tests

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet


Compatibility with/take advantage of code preloading in PHP 7.4

$
0
0

PHP 7.4 ships with opcache preloading - https://wiki.php.net/rfc/preload - which allows a framework to specify a preload file which will:

...load a certain set of PHP files into memory - and make their contents “permanently available” to all subsequent requests that will be served by that server.

All the functions and classes defined in these files will be available to requests out of the box, exactly like internal entities (e.g. strlen() or Exception). In this way, we may preload entire or partial frameworks, and even the entire application class library. It will also allow for introducing “built-in” functions that will be written in PHP (similar to HHVM's sytemlib).

Notably, this comes with some drawbacks that may not make preloading advisable/possible in certain environments (e.g. shared servers) but is well suited for more "modern" runtime environments such as containers, which generally map to 1 "server" (container) per codebase.

The traded-in flexibility would include the inability to update these files once the server has been started (updating these files on the filesystem will not do anything; A server restart will be required to apply the changes); And also, this approach will not be compatible with servers that host multiple applications, or multiple versions of applications - that would have different implementations for certain classes with the same name - if such classes are preloaded from the codebase of one app, it will conflict with loading the different class implementation from the other app(s).

Akin to Symfony 4.4's compatibility: https://symfony.com/blog/new-in-symfony-4-4-preloading-symfony-applicati...

The proposal would therefore be to ship a preload file which may be optionally included in the site's php ini configuration set; this would be a default-OFF (since it requires manual intervention in the hosting environment) and opt-in ON situation.

As Drupal has much of its core imported from Symfony and already boasts an extensions API, I would imagine extending Symfony's model would be a starting point.

Create the database driver for MySQLi for async queries

$
0
0

Problem/Motivation

Running database queries as async queries lets us run them in parallel instead of sequentially. For pages with multiple "larger" queries this can speed up rendering such a page significantly. The problem is that the 3 by core supported database driver are all PDO drivers which do not support async queries. The PHP MySQLi extension does support async queries.
The other thing we need is PHP 8.1 with the Fiber functionality. Creating a database driver for MySQLi is the first step we need to make to start using async queries in Drupal.

@catch explained it as following:

Let's take something like https://www.drupal.org/dashboard - there's four or five different views on there in blocks.

If you hit a completely cold cache, you have to execute all the views building those blocks, including both the listing query, then rendering the entities within them.

The idea being explored is that for each lazy builder - let's assume we're able to loop over them, you'd render it up until you have to run a views listing query. When it's time to run that query (or whatever appropriate point to delegate to the Fiber), it's done inside a Fiber with a non-blocking query. You then ::suspend() the Fiber and return to the main process, and start the next lazy builder, if that also has to run a views listing query, you'd also run it non blocking and ::suspend(), then you loop over all the lazy builders again to see if the various queries have come back, then render the results for anything that has, then continue polling until everything is rendered.

The page still can't finish rendering until the slowest query is finished, but if you have five slow queries that take 500ms each, then you might be able to run them all at once in the space of 600ms-1s instead of definitely having to run them sequentially in 2.5s. While you're running those simultaneous queries, you can also get on with PHP/CPU-intensive tasks like rendering - assuming we're able to arrange things so that these can be interleaved.

Fibers only allow us to paralellize i/o, not CPU, because there's not any parallel execution at all, so it has to be something like an async MySQL or SOLR query or http request to make any difference, and there has to be something to be getting on with while it's running - either more i/o or something else.

Ideas template

What is the problem to solve?

It is very easy to configure Drupal in such a way that it generates slow database queries, views allows complex joins, sorts, aggregates. Sometimes these queries will be unoptimized, but still run quite quickly on a small dataset or when the database isn't under load, then as sites grow (in size and/or traffic) they start to show problems. We also ship the SQL-based search module in core. Once you add in blocks and layouts, there can be several slow listing queries on a single page.

Equally, Drupal relies a lot of discovery (theme registry, plugins etc.) which tends to be CPU intensive on cache misses and take a long time. And our rendering pipeline, even on only a render cache miss is quite expensive due to the granularity at which we render HTML.

PHP 8.1 added support for Fibers, which allows applications to execute non-blocking operations (like an async MySQL query), and then do something else (execute something else non-blocking, or something CPU intensive) in between firing the query and it being returned. This was previously possible with applications like amphp and reactphp but not in a way that was suitable for Drupal - your application would have to be built around those libraries.

Fibers allows the following:

1. I have a set of things (in Drupal's case, render placeholders are the first and most useful example) that I need to process all together. If one of them executes something asynchronous and suspends a fiber, I can move onto one of the other ones in the meantime. This is #3377570: Add PHP Fibers support to BigPipe and #3383449: Add Fibers support to Drupal\Core\Render\Renderer.

2. I've just fired off something asynchronous, if I've been called within a fiber, I can suspend it, and then when I'm resumed the query/http request etc. might already have been returned. This is what will be added by this issue.

The very, very important thing is that the code in #1 and the code in #2 don't need to explicitly know about each other or have any interdependencies, this way the application can become Fibers-aware cumulatively and any instance of #1 should work with any instance of #2 and vice-versa.

MySQL supports async queries, however PDO does not. We'd therefore add a driver based on MySQLi which does.

Who is this for?

Site builders and developers who want faster websites.

Result: what will be the outcome?

There will be a choice between PDO and MySQLi drivers when running Drupal with a MySQL database. Because we don't currently require mysqli, we can't just switch the current PDO driver over.Very far in the future we might consider deprecating the PDO driver or and moving it to contrib. the MYSQLi driver will probably be experimental to start with.

If the MYSQLi driver is installed, views (and probably search and entity queries) wil execute its query async if called within a fiber and suspend the fiber - this can be automatic without a configuration option. #3379883: [PP-1] Add async query execution support to views

How can we know the desired result is achieved?

Once all the pieces are in place, it should be fairly straightforward to show the performance improvement.

How do we expect this to impact Drupal users (site administrators, developers, or site builders)?

They will get an extra option when installing Drupal, depending on whether they have PDO or mysqli installed or both. Some site admins may want to switch their database driver over (possible by enabling the module then changing the databases array).

What kind of challenges do we expect this to cause with users? Does this break any existing installations / use-cases?

An extra choice on installation if your hosting supports mysqli and pdo, otherwise none. It should not break anything (except for regular bugs) and be transparent otherwise.

Does this add new dependencies to Drupal? If yes, is it available broadly enough or are there other concerns with the dependency?

No hard dependencies, but the MYSQLi driver will depend on the php_mysqli extension.

Is this something users would have to install or is it installed automatically for them?

They'll have to select it unless we eventually deprecate the PDO driver.

Are there reasons to not do this in the pre-existing Mysql module?

We need to continue to support PDO since not all hosting has php_mysqli enabled, so it has to be a new driver. However it might be fine to have both drivers in the same module.

Proposed resolution

Add a new MySQLi database driver.

This would initially be in its own module so it can be experimental. We could probably merge the driver into the main mysql module when it becomes stable.

Prerequisites

Done

  1. #3364706: Refactor transactions
  2. #3265086: Implement statement classes using \Iterator to fix memory usage regression and prevent rewinding
  3. #3256642: Introduce database driver extensions and autoload database drivers' dependencies which makes extending one database driver on another database driver a lot easier.
  4. #3347497: Introduce a FetchModeTrait to allow emulating PDO fetch modes
  5. #3217531: Deprecate usage of Connection::getDriverClass for some classes, and use standard autoloading instead

Remaining tasks

TBD

User interface changes

TBD

API changes

None

Data model changes

None

Release notes snippet

TBD

Add ability to insert Media inline in CKEditor widget

$
0
0

Problem/Motivation

At now Drupal Media entities can be inserted into CKEditor, using Media Library widget, only as block element. So there are no ways to insert inline image (eg small icon image into text), or document (inline link to download file inside text paragraph).

Proposed resolution

Add "Inline" variant to widget align property, and convert CKEditor widget from block to inline, if selected.

Remaining tasks

Discuss the UX, finish the patch.

User interface changes

Added "Inline" option to media align property.

API changes

None.

Data model changes

None.

Release notes snippet

TBD

Integrate codequality reports into Gitlab

$
0
0

Problem/Motivation

Now that Gitlab is running for core its time to clean up how codequality is reported. Currently all code quality steps like esling, phpcs, phpstan, stylelint all al reported as "tests". Which is technically true, but its also possible to output those reports and have them reported in a separate tab. This would also allow showing the problems inline in the merge requests.

See: https://docs.gitlab.com/ee/ci/testing/code_quality.html#implement-a-cust...

Known issues.
We have Gitlab ultimate, so we COULD get inline errors in the mergerequests.

Unfortunately, it is only displayed on the child pipelines, this means no inline help on the MR... :disappointed: I was secretly already dreading if the child pipeline setup was going to make us run into some issues.
There is an open issue (for years) around this. But that doesnt seem to be close. We could have inline error messages in the pipeline, but not if we use childs. (https://gitlab.com/gitlab-org/gitlab/-/issues/215725).

Possible tools per lint step
The tools we use and how they could integrate into gitlab:

eslint

Add the flag --format gitlab

PHP Code Sniffer

No real support, but seems easy enough:
https://github.com/micheh/phpcs-gitlab or https://daniel-r-ness.medium.com/converting-phpcs-output-to-gitlab-codec...

PHPStan

phpstan analyze --error-format=gitlab

stylelint

https://github.com/leon0399/stylelint-formatter-gitlab

Dependency evaluation; all these are dev dependencies that do a single small task of converting tool output to a format GitLab can read, none of this is needed at runtime and will in effect only be executed on GitLab.

micheh/phpcs-gitlab

Release cycle: two releases in 2020, none since; both the plugin and the GitLab output format are stable and seemingly require no maintenance.

Security policy: none

Maintainer: Michel Hunziker https://github.com/micheh

eslint-formatter-gitlab

Release cycle: major releases approximately once a year, follows strict semver and updates when NodeJS is updated.

Security policy: none

Maintainer: Remco Haszing https://gitlab.com/remcohaszing

stylelint-formatter-gitlab

Release cycle: three releases in four years

Security policy: none

Maintainer: Leonid Meleshin https://gitlab.com/leon0399

Steps to reproduce

Run a pipeline, in the childpipeline there is a new Codequality tab. See draft MR for an mr with these changes and some real errors.

Proposed resolution

Add a few packages for the reports and export everything as codequality artifacts.

Remaining tasks

  1. Implement PHPStan report
  2. Implement PHPCS report
  3. Implement eslint report
  4. Implement stylelint report
  5. Decide if the dependencies are ok like this
  6. Follow up to investigate issue where child pipelines do not report codequality to their parents. See: https://gitlab.com/gitlab-org/gitlab/-/issues/215725

User interface changes

Tests tab in gitlab now only shows tests, new tab codequality with codequality issues.

Code quality tab on pipelines showing various code style errors in a summary

Code quality tab on pipelines showing various code style errors in a summary

Code quality tab on pipelines showing various code style errors in a summary

API changes

Data model changes

Release notes snippet

Three new development dependencies provide GitLab-compatible output for PHP CodeSniffer, ESLint and Stylelint.

Upgrade filter system to HTML5

$
0
0

Problem/Motivation

The filter system should be upgraded to HTML5 to match modern standards. All modern browsers now parse HTML5, our themes use an HTML5 doctype and so Drupal should treat HTML input and output the same way.

Steps to reproduce

Currently the filter system parses and outputs XHTML only. This causes PHP warnings when trying to parse modern tags:

>>> use \Drupal\Component\Utility\Html;
>>> Html::normalize("<p><figure><figcaption>Caption</figcaption></figure><video></video></p>");
PHP Warning:  DOMDocument::loadHTML(): Tag figure invalid in Entity, line: 1 in /var/www/html/drupal/core/lib/Drupal/Component/Utility/Html.php on line 289
PHP Warning:  DOMDocument::loadHTML(): Tag figcaption invalid in Entity, line: 1 in /var/www/html/drupal/core/lib/Drupal/Component/Utility/Html.php on line 289
PHP Warning:  DOMDocument::loadHTML(): Tag video invalid in Entity, line: 1 in /var/www/html/drupal/core/lib/Drupal/Component/Utility/Html.php on line 289
=> "<p><figure><figcaption>Caption</figcaption></figure><video></video></p>"

Also, <br /> and <img /> tags are self-closing. In HTML5, these are void elements and should be output simply as <br> and <img>.

Proposed resolution

Use masterminds/html5 instead of DOMDocument to parse and output HTML in the \Drupal\Component\Utility\Html utility class.

Remaining tasks

User interface changes

None

API changes

\Drupal\Component\Utility\Html::load(), \Drupal\Component\Utility\Html::serialize() and \Drupal\Component\Utility\Html::normalize() will parse and output HTML5 instead of XHTML. Input filters or other code that relies on this utility class will also now parse and output HTML5 instead of XHTML.

This does mean there are some minor changes to output, but these should not affect valid HTML documents. The change record contains known examples of output changes that may affect tests: https://www.drupal.org/node/3225468

Data model changes

None

Release notes snippet

The filter system has been upgraded to output HTML5. HTML output will have minor changes in some cases, for more information read the change record.

Use composer and yarn artifacts from parent pipeline

$
0
0

Problem/Motivation

The child pipeline rebuilds the composer and yarn artifacts; we should be able to retrieve them from the parent pipeline.

Steps to reproduce

Proposed resolution

Use needs:pipeline:job: https://docs.gitlab.com/ee/ci/yaml/#needspipelinejob

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

The label "Member for" on user profiles is hardcoded markup that is different from other user fields

$
0
0

When user login, "Member for" label is invisible

Possible solution:


Following instructions for error upon adding the language plug-in do not remedy the issue

$
0
0

Problem/Motivation

I attempted to add the language drop down to the CK editor 5 UI. I got a message telling me that it didn't work and what I needed to do the fix the issue. The fix attempt that I tried did not work.

Steps to reproduce

Steps:
1. Go to https://simplytest.me/
2. In the field Evaluate Drupal Projects, type Drupal
3. Choose Drupal core
4. Accept 10.1.3 (or whatever the latest version offered is) as the default
5. Click Advanced options
6. In the field Add patches on the chosen project, paste https://git.drupalcode.org/project/drupal/-/merge_requests/4656.patch
7. Click Launch sandbox
8. Wait to be redirected to the test instance
9. Enter the admin user name and password
10. Click Extend
11. Under Multilingual, check Content Translation and Language
12. Click Install
13. Wait until the process is done
14. Click Configuration, then Languages
15. Click Add language
16. In the Language name drop-down, choose Custom Language
17. Type tl (that is, lower-case L) for the Language Code and Filipino for the Language Name.
18. Click Add Custom Language
19. Click Configuration, then Text formats and editors
20. On the row for basic HTML, click Configure
21. Drag the Language button into the active toolbar

Result: Warning message
The Language plugin needs another plugin to create <span>, for it to be able to create the following attributes: <span lang dir>. Enable a plugin that supports creating this tag. If none exists, you can configure the Source Editing plugin to support it.

22. Under CKEditor5 plugin settings, click Language
23. In the drop-down, choose Site-configured languages (2)
24. Click Save Configuration

Result: Error message
The Language plugin needs another plugin to create <span>, for it to be able to create the following attributes: <span lang dir>. Enable a plugin that supports creating this tag. If none exists, you can configure the Source Editing plugin to support it.

25. Under CKEditor5 plugin settings, click Source editing
26. Change

<cite> <dl> <dt> <dd> <a hreflang> <blockquote cite> <ul type> <ol start type> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>

to read

<cite> <dl> <dt> <dd> <a hreflang> <blockquote cite> <ul type> <ol start type> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <span lang dir>
27. Click Save Configuration

Expected results:

  • Error message disappears.
  • Source editing setting continues to read:
    <cite> <dl> <dt> <dd> <a hreflang> <blockquote cite> <ul type> <ol start type> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <span lang dir>

Actual results:

  • Error message remains.
  • Source editing setting reads:
    <cite> <dl> <dt> <dd> <a hreflang> <blockquote cite> <ul type> <ol start type> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>

Proposed resolution

Option 1: make the remediation steps work.
Option 2: correct the wording on the error message.

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

Update module should send notifications on Thursdays

$
0
0

Problem/Motivation

I recently set up update status notifications on a D6 site, and realised I was getting the notifications on Tuesdays. Since SAs go out on Wednesdays this means it could be a full week between the SA and the notification.

Currently you can specify the interval for checks/notifications, but not the day of the week (unless you manually change the tracking variable to a timestamp on the day you want).

Seems like it would make more sense to allow choosing the day(s) of the week to get notifications on, as well as forcing a refresh of the data just before sending the notification.

Steps to reproduce

  1. Install a clean site.
  2. Enable update notification emails during installation, configure it for "weekly".
  3. Notice when emails go out.

Proposed resolution

  1. On the Update Manager settings form (/admin/reports/updates/settings), when selecting "Weekly" for the "Check for updates" setting, expose another setting to select which day of the week.
  2. The day should default to Thursday.
  3. Update Manager should always refresh data before sending any notification emails.

Remaining tasks

  1. Confirm that Update Manager is sending emails without refetching data and decide if fixing that should be in scope with the rest of this or split off to a separate issue.
  2. Confirm the right UI text for the new setting.
  3. Implement the feature.
  4. Update summary with After screenshot.
  5. Reviews + refinements.

User interface changes

Before

The existing (10.1.x) Update Manager settings form

After

TBD.

API changes

None.

Data model changes

TBD. New setting in update.settings.yml, probably under the check section.

Release notes snippet

TBD.

[DrupalMedia] Formatting lost when attempting to edit media within a list item in CKEditor 5

$
0
0

Problem/Motivation

Sites with Media Library and CKeditor 4 enabled that upgrade to CKeditor 5 will lose the formatting/placement of any media within an ordered or unordered list. The media becomes a block that splits the list with the media in between two lists. This exists in the Drupal 10.1.2 release.

Steps to reproduce

- Enable CKeditor (4)
- Enable Media Library
- Include the media library and list plugins in your text format
- Create content with media embedded within a list
- Update text format to CKeditor 5
- Attempt to edit the content with media within a list.

Proposed resolution

I believe the issue is that the allowed HTML for CKeditor's Document List support (https://ckeditor.com/docs/ckeditor5/latest/features/lists/document-lists...) does not allow the drupal-media element to be nested within a list. Is there anything in the CKEditor API that would allow drupal-media to be explicitly able to be nested in list item?

Remaining tasks

- TBD

User interface changes

- None

API changes

- None

Data model changes

- None

Release notes snippet

- TBD

Layout Issues with Claro subtheme

$
0
0

I have a rudimentry claro subtheme. This has been created with the sole purpose of avoiding some of the additional gumph that claro seems to add see https://www.drupal.org/project/drupal/issues/3332943

Anyway, recently after updating to 10.1.2, I have noticed another issue with the flex box layout when editing the node. Namely the flex grid seems to stretch beyond the size of the screen (safari os x). This results in making edit dialog boxes very difficult to work with etc.

I can override this by resetting the flexbox in my claro subtheme.

Please see attached screenshots

Display view fields in a language different form the language of the entity they came from

$
0
0

Problem/Motivation

Hello,

This is not an issue or a bug or even a feature request but rather a question/clarification request.

I have a multilingual site with many languages (more than 8) and media entries that are translatable in those languages. Some of the fields on the media entries are not translatable as they are entity references pointing to taxonomy vocabularies that provide categorization for those media entries.

Then there's a view (showing Fields - default translation filter = true and rendering language = content language for selected page) listing those media entries. The goal is to make the editing of those entries easier on the site maintainers as translating a hundreds of entries into 8 languages means editing thousands of entries. The taxonomy vocabularies themselves are translated, the view labels are translated, and the page on which this view is displayed is also translated in all languages. When a media entry does not exist in the current site language the default translation is shown leading to the taxonomy fields being displayed in the language of that default translation. Is there a way to display those fields in the current site language instead of the media entry language?

I am not familiar enough with views underlying mechanics to formulate what i believe i am seeking properly but this is what i currently believe i am trying to achieve: find a way to decouple field rendering language form the language of the entity these fields came from.

thanks in advance for reading this and for any hint anyone might provide

Steps to reproduce

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

Field Groups marked as required are missing red asterisk

$
0
0

Problem/Motivation

When using the field group module, groups that contain required fields are not styled to have the red asterisk to denote that group has required fields. The form-required class is in the mark, but no styles for it.

Steps to reproduce

  1. Added fields to a node that are required
  2. Create fields groups
  3. Ensure the Mark group as required if it contains required fields. option is selected for a group
  4. Observe when creating content that the red asterisk is missing

Proposed resolution

Update the styles to account for this. The core/themes/claro/css/components/form.pcss.css has some styles already for the form-required class, but they are too specific. I would think making this style selector less specific would fix it, but there could create issues if the after pseudo element is intended for other use.

Remaining tasks

  1. As mentioned in comment #58 there is a duplicate * being shown but the main issue is fixed
  2. As mentioned in comment #57 test cover needs to be written

Olivero: Focus outline does not accommodate on long text in primary & secondary navigation

$
0
0

Problem/Motivation

When we tried to access the navigation links through the tabs, we noticed that the focus outline does not fully cover the longer text in both the secondary and primary navigation bars. The issue needs to be fixed in both navigation bars to ensure the focus outline works properly and covers all the text.

Steps to reproduce

1. Set up the Drupal site, moved on Olivero theme Home page.
2. Edit a menu item in the Primary and secondary navigation to a long text that would take up multiple lines.
3. Access the menu link by tab, focus outline on that long menu item will be show the error.

Proposed resolution

Change the focus outline height with something that would account for longer lengths of texts which require a bigger height for focus.

User interface changes

issue image


Errors: The following table(s) do not have a primary key: forum_index

$
0
0

Problem/Motivation

According to Drupal's advice, when we change the default transaction isolation level from "REPEATABLE READ" to READ-COMMITTED for databases, the following error is reported.

Transaction isolation level:READ-COMMITTED
Error:
For this to work correctly, all tables must have a primary key. The following table(s) do not have a primary key: forum_index. See the setting MySQL transaction isolation level page for more information.

Steps to reproduce

Install forum module in Drupal 10.1

Proposed resolution

Add a primary key to the forum_index table

Remaining tasks

Review
Commit

User interface changes

API changes

Data model changes

Release notes snippet

Ajax callbacks on paginated forms with PagerSelectExtender not updating on first callback

$
0
0

Problem/Motivation

If you create a form with a pager, and a table with rows that have Ajax callbacks that alter the form render array, unexpected behavior happens. The issue concerns the behavior of Drupal when using Ajax callbacks in combination with paginated results generated using the Drupal\Core\Database\Query\PagerSelectExtender. Specifically, the problem gets reproduced when an Ajax callback is triggered on the second page of a paginated table. In such cases, the callback may not update the content correctly for the initially clicked row; but, subsequent clicks on the same non-first page work as expected (after the initial Ajax callback).

Steps to reproduce

First, you need to build:

  • Create a query that uses the Drupal\Core\Database\Query\PagerSelectExtender to get paginated results.
  • Use those results to build a table in a Drupal form.
  • For each row in the table, add a callback to alter the table render array rows (the results returned by the query).
  • Add a pager render element in the form.

To reproduce the issue:

  • Go to the form route, and go to any page but the first one.
  • Click on the callback for any row.
  • The row item it should've been altered, won't be altered.
  • Click on another callback.
  • The row will be altered.

You can check this snippet as to how it can be triggered.

You can check the first comment to get a more in-depth explanation of the issue and why it happens.

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

Move the Display modes link from Structure to inside Field UI

$
0
0

Display modes are only relevant in context of the content type or entity you want to apply them to. Yet, they are presented on the top level Structure page:

admin/structure/display-modes/view shows a grouped list of display modes for: Content, Aggregator feed, Custom block, Comment, Taxonomy term, User. Lets remove Display modes as a global link from top level Structure page and make them available in their respective Field UIs.

AnnotatedClassDiscovery::getPluginNamespaces() description is inaccurate and unclear.

$
0
0

Problem/Motivation

AnnotatedClassDiscovery::getPluginNamespaces() description is inaccurate and unclear.

   * Gets an array of PSR-4 namespaces to search for plugin classes.
   *
   * @return string[]

But the caller does this:

    foreach ($this->getPluginNamespaces() as $namespace => $dirs) {

Documentation states "Returns an array of PSR-4 namespaces."

In reality, it returns an associative array with:
Keys representing namespaces.
Values representing directories.

$namespace variable in the loop stores each namespace key.
$dirs variable in the loop stores the associated directory for each namespace.

Steps to reproduce

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

[CKEditor] Update image URL failed after saving

$
0
0

Problem/Motivation

[CKEditor] Update image URL failed after saving

Steps to reproduce

1、Create a node

2、Add a CKEditor paragraph

3、Click "Insert image" button and input URL

4、Save as Published

5、Edit the page and Select the image

6、Click "Insert image" button and Update URL

7、Save the page

8、Check the image

Image not changed

Proposed resolution

Modify the call of ReplaceImageSourceCommand in image.js and add an update to the htmlImgAttributes attribute

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

Viewing all 305944 articles
Browse latest View live


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