Copenhagen
Account created on 9 January 2007, over 18 years ago
#

Merge Requests

More

Recent comments

🇩🇰Denmark ressa Copenhagen

Thanks for working on this @prudloff! It would be really nice to get better Views AJAX caching support.

I guess the expected result after patching is that these:

x-drupal-cache: UNCACHEABLE (no cacheability)
x-drupal-dynamic-cache: UNCACHEABLE (no cacheability)

Change to this?

x-drupal-cache: HIT
x-drupal-dynamic-cache: HIT

To make it clear what to check for after patching, could an "Expected result" be added in the Issue Summary?

🇩🇰Denmark ressa Copenhagen

Add Twig map filter example.

🇩🇰Denmark ressa Copenhagen

It looks like a README has been added, but that the configuration has been moved.

From https://git.drupalcode.org/project/views_ajax_history#installation:

[...] "Advanced" section, select "Views Ajax History" as the pager type.

Correct steps?
Advanced > Other > Use AJAX > AJAX history - Enable Views AJAX history.

🇩🇰Denmark ressa Copenhagen

Connecting related issue.

🇩🇰Denmark ressa Copenhagen

Thanks for the patch @guillaumepacilly, I was also seeing lingering config after uninstalling the module:

$ drush config:export --diff
[...]
--- a/tmp/drush_tmp_1759836396_68e4f8ece9956/views.view.map.yml
+++ b/tmp/drush_tmp_1759836397_68e4f8ed39377/views.view.map.yml
@@ -5037,6 +5037,9 @@ display:
         metatag_display_extender:
           metatags: {  }
           tokenize: false
+        ajax_history:
+          enable_history: false
+          exclude_args: ''
       path: map
       menu:
         type: none

After patching and uninstalling, the Views AJAX History is no longer present in the exported config.

I have create a GitLab MR based on the patch, maybe someone can verify that it works well? Thanks!

🇩🇰Denmark ressa Copenhagen

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

🇩🇰Denmark ressa Copenhagen

Add tip on how to use variables to translate strings inside {% trans %} tags.

🇩🇰Denmark ressa Copenhagen

I was trying to translating strings inside {% trans %} {% plural count %} Twig tags for Facets Summary with this, and failed:

{% trans %}{{ count }} {{ "municipality"|t }}{% plural count %}{{ count }} {{ "municipalities"|t }}{% endtrans %}

With Twig variables, I could translate the strings first, and then use them inside {% trans %} like this:

{% set muni = "municipality"|trans %}
{% set munis = "municipalities"|trans %}
{% trans %}{{ count }} {{muni}}{% plural count %}{{ count }} {{munis}}{% endtrans %}
🇩🇰Denmark ressa Copenhagen

Clarify that the "Deleting a module" should be used when deploying on the server.

🇩🇰Denmark ressa Copenhagen

Thanks @basvredeling, your comment gave me the hint I needed.

I plan to move from Search API Solr to standard Search API with MariaDB and Redis for caching. But when I indexed nodes with Geodata values with the new Standard DB server, I got errors like this:

search_api_db  Warning  An overlong value (more than 255 characters) was encountered while indexing:

MULTIPOLYGON (((10.3634 57.3809,10.3599 57.3815,10.3546 57.3813,10.3546             
57.3790,10.3495 57.3793,10.3468 57.3757,10.3458 57.3760,10.3465 57.3778,10.3461     
57.3785,10.3440 57.3791,10.3440 57.3785,10.3431 57.3774,10.3424 57.3758,10.3414     
57.3758,10.3388 57.3761.

Database search servers currently cannot index such values correctly – the value was therefore trimmed to the allowed length.

Under the index I saw this:

Warning message
Some of the used data types aren't supported by the server's backend. See the data types table to find out which types are supported.

Under "Data types", the supported types were listed (Decimal, String, Date, Boolean, Integer, and Fulltext) and then all the unsupported Search API Solr types ...

The Geodata field was set to use "Storage-only", which works only with Solr:

Data Type: Storage-only
Description: A storage-only field. You can store any string and retrieve it from the index but you can't search through it. No
Supported:
Fallback data type: String

After indexing them as Fulltext instead of strings (the fallback data type for Storage-only), all is well, and there are no errors :)

Now, I just wonder ... should Fallback data type for Storage-only be changed from String to Fulltext?

🇩🇰Denmark ressa Copenhagen

Thanks @berdir for your patience explaining things to me, and a fast and thorough review. I love how I can simplify things, and it was really great for me to be able to use a single settings.redis.php file, and remove the one from DDEV.

I agree with all your suggestions, and have tried to implement them in the README, and look forward to your feedback.

🇩🇰Denmark ressa Copenhagen

Thanks for explaining this, it's crucial to do things in the right order, or the system can end up in Limbo, in a half-way state, with lots of errors. I added a new section in  https://www.drupal.org/docs/updating-drupal/deploying-a-drupal-update#s-... .

🇩🇰Denmark ressa Copenhagen

Add "Deleting a module" section.

🇩🇰Denmark ressa Copenhagen

Add "Create a Sitemap, for example with  Simple XML sitemap ."

🇩🇰Denmark ressa Copenhagen

Thanks @hosterholz! The patch works well, the warnings are gone, and sorting works as expected, using the module with #3550355: PHP 8.4 compatibility for Search API Sorts Widget .

🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen

ressa created an issue. See original summary .

🇩🇰Denmark ressa Copenhagen

Add memory tips.

🇩🇰Denmark ressa Copenhagen

I tried Crawler Rate Limit , and it seems to work really well, so I will use that for now ... #3506542-5: Not always effective, unfortunately

🇩🇰Denmark ressa Copenhagen

I finally tried the  Crawler Rate Limit module, and it's a godsend, and currently the ideal solution to block misbehaving bots with, I think.

Anthropic's ClaudeBot and other bots were aggressively pounding my site with multiple requests per second, and this module got them under control. The module is working really well, and the resource usage dropped a lot, like CPU Usage from ~90% to ~10%. For more see #3506542-5: Not always effective, unfortunately .

🇩🇰Denmark ressa Copenhagen

My experience with the Crawler Rate Limit module, is that it's quite efficient, and currently the ideal solution to block misbehaving bots with.

Anthropic's ClaudeBot and other bots were aggressively pounding my site with multiple requests per second, and this module got it under control. ClaudeBot seem to have more or less discovered the maximum limit, and now only send a request every fifth second or so.

There are methods in the README to check the log files with:
https://git.drupalcode.org/project/crawler_rate_limit#logging-of-rate-li...

I just installed Crawler Rate Limit, and checked my log files for occurrences of " 429 " with the command below. The module is working really well, as it can be seen (truncated string and anonymized IPs) and the resource usage dropped a lot, like CPU Usage from ~90% to ~10%:

$ tail -n 5000 /var/log/apache2/access.log | grep "\" 429 "
*.*.224.151 - - [05/Oct/2025:13:57:57 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:13:58:02 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:02:30 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:02:31 +0200] [...] HTTP/1.1" 429 
*.*.0.15 - - [05/Oct/2025:14:04:01 +0200] [...] HTTP/1.1" 429 
*.*.0.5 - - [05/Oct/2025:14:04:33 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:04:37 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:04:39 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:04:42 +0200] [...] HTTP/1.1" 429 
*.*.0.46 - - [05/Oct/2025:14:07:47 +0200] [...] HTTP/1.1" 429 
*.*.0.29 - - [05/Oct/2025:14:08:19 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:09:55 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:09:56 +0200] [...] HTTP/1.1" 429 
*.*.0.25 - - [05/Oct/2025:14:11:27 +0200] [...] HTTP/1.1" 429 
*.*.0.3 - - [05/Oct/2025:14:11:59 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:12:02 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:12:04 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:12:07 +0200] [...] HTTP/1.1" 429 
*.*.0.6 - - [05/Oct/2025:14:15:08 +0200] [...] HTTP/1.1" 429 
*.*.0.31 - - [05/Oct/2025:14:15:40 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:17:17 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:17:18 +0200] [...] HTTP/1.1" 429 
*.*.0.10 - - [05/Oct/2025:14:18:18 +0200] [...] HTTP/1.1" 429 
*.*.0.15 - - [05/Oct/2025:14:18:50 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:19:19 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:19:20 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:19:24 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:14:19:51 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:14:20:12 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:14:20:19 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:14:20:25 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:14:20:30 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:14:21:02 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:14:21:06 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:14:21:06 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:14:21:37 +0200] [...] HTTP/1.1" 429 
*.*.0.3 - - [05/Oct/2025:14:21:59 +0200] [...] HTTP/1.1" 429 
*.*.224.151 - - [05/Oct/2025:14:22:13 +0200] [...] HTTP/1.1" 429 
*.*.0.53 - - [05/Oct/2025:14:22:31 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:24:46 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:24:47 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:24:51 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:25:01 +0200] [...] HTTP/1.1" 429 
*.*.0.49 - - [05/Oct/2025:14:25:40 +0200] [...] HTTP/1.1" 429 
*.*.0.29 - - [05/Oct/2025:14:26:12 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:12 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:13 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:14 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:14 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:15 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:15 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:16 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:16 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:17 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:17 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:18 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:18 +0200] [...] HTTP/1.1" 429 
*.*.216.85 - - [05/Oct/2025:14:27:23 +0200] [...] HTTP/1.1" 429 
*.*.0.49 - - [05/Oct/2025:14:28:50 +0200] [...] HTTP/1.1" 429 
*.*.0.11 - - [05/Oct/2025:14:29:23 +0200] [...] HTTP/1.1" 429 
*.*.0.43 - - [05/Oct/2025:14:32:31 +0200] [...] HTTP/1.1" 429 
*.*.0.32 - - [05/Oct/2025:14:33:03 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:35:54 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:35:56 +0200] [...] HTTP/1.1" 429 
*.*.0.2 - - [05/Oct/2025:14:36:13 +0200] [...] HTTP/1.1" 429 
*.*.0.70 - - [05/Oct/2025:14:36:45 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:37:58 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:37:59 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:38:02 +0200] [...] HTTP/1.1" 429 
*.*.0.8 - - [05/Oct/2025:14:39:23 +0200] [...] HTTP/1.1" 429 
*.*.0.29 - - [05/Oct/2025:14:39:56 +0200] [...] HTTP/1.1" 429 
*.*.0.18 - - [05/Oct/2025:14:42:37 +0200] [...] HTTP/1.1" 429 
*.*.0.7 - - [05/Oct/2025:14:43:10 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:43:10 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:43:12 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:45:12 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:45:13 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:45:17 +0200] [...] HTTP/1.1" 429 
*.*.0.63 - - [05/Oct/2025:14:46:22 +0200] [...] HTTP/1.1" 429 
*.*.0.55 - - [05/Oct/2025:14:46:54 +0200] [...] HTTP/1.1" 429 
*.*.0.50 - - [05/Oct/2025:14:50:03 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:50:25 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:50:27 +0200] [...] HTTP/1.1" 429 
*.*.207.44 - - [05/Oct/2025:14:50:31 +0200] [...] HTTP/1.1" 429 
*.*.0.8 - - [05/Oct/2025:14:50:35 +0200] [...] HTTP/1.1" 429 
*.*.0.56 - - [05/Oct/2025:14:53:42 +0200] [...] HTTP/1.1" 429 
*.*.0.49 - - [05/Oct/2025:14:54:14 +0200] [...] HTTP/1.1" 429 
🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen

ressa created an issue.

🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen

ressa created an issue.

🇩🇰Denmark ressa Copenhagen

In a more recent issue, a Drush command is discussed, so perhaps this issue is outdated? Feel free to re-open if not :)

🇩🇰Denmark ressa Copenhagen

Thanks @nick_schuch and @darvanen for sharing your solutions. They would be ideal candidates for a documentation page or blog post, briefly outlining the set up :)

+1 for a Drush command. I tried the Drush command from comment #23 Drupal cache clear also clearing Redis Active and that works well, and would be a nice improvement.

Should it be added in a new branch here, or perhaps in a fresh issue?

🇩🇰Denmark ressa Copenhagen

I added a new Clear caches and disable snapshots section and some parts are not Drupal specific ... but would it be all right to include them? I think it can help new users.

Or it could be added under a new https://www.drupal.org/docs/extending-drupal/contributed-modules/redis documentation Guide -- though having documentation in one place, in GitLab README's is also nice.

🇩🇰Denmark ressa Copenhagen

Clear Redis cache

In case anyone finds this page, and needs to quickly free Redis memory up, the redis-cli flushall command clears Redis caches, or use Drush:

drush php:eval "\Drupal::service('redis.factory')->getClient()->flushAll()"

Remove RDB files

If the /var/lib/redis/ folder is getting filled up with Redis snapshot RDB-files á la temp-71579.rdb, you can delete them:

rm /var/lib/redis/temp-*

Disable RDB-snapshots

To disable RDB-snapshots, append save "" last in the Redis config file /etc/redis/redis.conf and restart with sudo systemctl restart redis.

See https://www.bestonlinetutorial.com/redis/misconf-redis-is-configured-to-... and Redis persistence for more.

For a Drupal solution, see Drupal cache clear also clearing Redis Active and 🐛 Currently Drush Cr or Cache Clear UI does not flush Redis cache Fixed .

🇩🇰Denmark ressa Copenhagen

Updating author of article from @smustgrave to the correct @capellic.

🇩🇰Denmark ressa Copenhagen

I have now gone through the Debian server part, and it's ready for a review.

🇩🇰Denmark ressa Copenhagen

Rebased patch for the new dev-release.

This patch still works well, and I have updated the Issue Summary, adding "Rebase" and "Writing regression test" under "Remaining tasks" :)

🇩🇰Denmark ressa Copenhagen

Adding database export files such as db.sql and db.sql.gz, for example created by Drush or DDEV.

🇩🇰Denmark ressa Copenhagen

ADMINS: Please remove user  https://www.drupal.org/u/yolandasmith

It's a spam account:

<code><p>Hey I was just checking out CSS4Hosting's <a href="https://arzhost.com/dedicated-servers/" rel="nofollow">dedicated server plans</a>. They offer both Linux and Windows options, which is pretty cool. Has anyone here used their services? I'm curious about their performance and support. Also, does anyone know if they provide server management or is it more of a self-managed setup? Appreciate any insights!</p></code>

From https://www.drupal.org/project/get_server/issues/2352559#comment-16291805 📌 Dedicated Server Hosting Company in India: CSS4Hosting Active

🇩🇰Denmark ressa Copenhagen

This looks like spam:

<p>Hey I was just checking out CSS4Hosting's <a href="https://arzhost.com/dedicated-servers/" rel="nofollow">dedicated server plans</a>. They offer both Linux and Windows options, which is pretty cool. Has anyone here used their services? I'm curious about their performance and support. Also, does anyone know if they provide server management or is it more of a self-managed setup? Appreciate any insights!</p>

🇩🇰Denmark ressa Copenhagen

It looks like a new line was added in https://git.drupalcode.org/project/drupal/-/blob/11.x/core/modules/views... and I tried naively to add it. That didn't work ...

🇩🇰Denmark ressa Copenhagen

You're welcome, and I agree 100% -- end users are very important -- such as here in Drupal, where it would be site builders. After all, it's the LEGO-like quality of Drupal which is its super power, allowing non-coders to build amazing web sites.

And even as a non-developer, you can make improvements in Drupal: Simply get an idea, create an issue, and help it reach completion, like these. I didn't code it, but just gave feedback as good as I could:

🇩🇰Denmark ressa Copenhagen

So ... this is still a bug.

🇩🇰Denmark ressa Copenhagen

This is still an issue, two and a half years later :)

🇩🇰Denmark ressa Copenhagen

I have no suggestions about a solution, but will just thank you for creating the issue 🐛 Break of functionality/theming of uploaded image files preview through file upload widget when one of them does not comply to the set requirements Active , since that's the only way to fix things that don't work in Drupal, in the end.

🇩🇰Denmark ressa Copenhagen

Nice @dydave, thanks! Great to see the test coverage is steadily improving and expanding, and that we are closer to be able to start refactoring of the admin_toolbar_search module 🙂

As always, thanks for the positive energy and great feedback, I very much appreciate it!

🇩🇰Denmark ressa Copenhagen

You're welcome @dydave, I am glad I could help! I'll do my best to keep the same testing protocol in future tickets.

It sounds complicated with PHPSTAN ... the automated tools work great, until the complexity gets too much, it seems 😅 But great that you found a solution, and thanks for diligently documenting the choices and problems in this issue in text and feedback from the tools -- it might come in handy later, since there is now some background.

And a good plan to take care of assertMenuHasHref in the admin_toolbar_search module's tests in a future revamp of the tests, that makes a lot of sense. Thanks @dydave for your always positive approach and thorough feedback, it boosts the motivation to contribute more to Drupal a lot.

🇩🇰Denmark ressa Copenhagen

Thanks for sharing the link to that issue @mlncn, and yes -- the question is for us users -- what to do, eventually? Will someone else take over maintenance of this module, or will there be an upgrade path to a successor? The addition one or more co-maintainers would be reassuring.

Luckily, 2028 is still in the distant future :)

🇩🇰Denmark ressa Copenhagen

You're welcome @dirke, I am glad that it was useful! I would think that installing Composer will be a breeze for you, with your technical skill levels, since you are experienced with Linux and the command line.

🇩🇰Denmark ressa Copenhagen

Could 2.x be made the default version on Gitlab? Also, please see 💬 Is this usable with drupal 11 Active .

🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen

Update title, update example to $this->t('Reset your password').

🇩🇰Denmark ressa Copenhagen

Remove mention of field names, add steps to reproduce.

🇩🇰Denmark ressa Copenhagen

Update "Alternative solution: Make configuration elements translatable", remove field names.

🇩🇰Denmark ressa Copenhagen

Remove Field labels in edit form via form-element-label.html.twig since that seems to work fine. Update to use Oliver template files as examples.

🇩🇰Denmark ressa Copenhagen

In my case, it was because the blocks were from a View, and they are considered configuration, see #3549927: Streamline translation of block titles, field names and menu titles: Allow Interface Translation .

🇩🇰Denmark ressa Copenhagen

On a related note, some block titles and menu items are translatable, and some are not (Views block title, custom menu items) and it's not clear why ... I created #3549927: Streamline translation of block titles, field names and menu titles: Allow Interface Translation .

🇩🇰Denmark ressa Copenhagen

Fix typo, and clarify that "Some strings, such as Views block titles, field names, and custom menu titles are considered configuration elements, and are not translatable via  Interface Translation ."

🇩🇰Denmark ressa Copenhagen

Update "Alternative solution: Make configuration elements translatable" after clarifying which elements are considered configuration.

🇩🇰Denmark ressa Copenhagen

Clarify that it is only some strings, such as Views generated block titles, field names, and menu titles that are considered configuration elements, and not translatable via  Interface Translation  under "Alternative solution: Make configuration elements translatable".

🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen

ressa created an issue.

🇩🇰Denmark ressa Copenhagen

Thanks for the feedback @itamair, and evaluating if it's realistic to add these features. Let's see if someone eventually have time to take a stab at building it.

I am adding the last suggestion "Add support for multiple Data Source Fields?" in the Issue Summary as well, to gather everything in one place.

🇩🇰Denmark ressa Copenhagen

Thanks for adding this feature @itamair, and also for including an image -- I am inserting it in the Issue Summary.

🇩🇰Denmark ressa Copenhagen

This situation is often a bump in the road of module maintenance:

Allow GitLab Member with "Developer"-role to set default version?
Oftentimes, a GitLab Member with "Developer"-role in a project want to, but cannot update the default version on GitLab. Only a Member with "Maintainer"-role can do that. It could be considered to allow a GitLab Member with "Developer"-role in a project to set GitLab default version, though there are also arguments against relaxing this permission.

From Gently nudge project managers to update default GitLab, when relevant Active .

And I agree with @ivnish, that you could consider requesting Maintainer role (or ownership) @damienmckenna?

It seems fragile that such a popular project as Metatag ("356,293 sites report using this module") to have this high a bus factor ...

🇩🇰Denmark ressa Copenhagen

Format classes as code, for better readability.

🇩🇰Denmark ressa Copenhagen

Hi @dydave, sorry about these two test issues taking so long for me to look at ... I am really out of my depth here, so I created a documentation issue Add Functional test example in README #71 for DDEV Selenium Standalone Chrome to help my present and future self gain a better understanding, and faster set up, but forgot to return to the test issues here ...

I have now attempted to check the tests, and hope it's useful? If not, let me know, and I'll have another go at it!

🇩🇰Denmark ressa Copenhagen

Thanks again @dydave for the continued test updates, I really appreciate it!

I applied the patch, and the functions assertAdminToolbarMenuLinkExists and assertAdminToolbarMenuLinkNotExists are used in the assertions in tests/src/Functional/AdminToolbarToolsSortTest.php where menu items are created an deleted as expected.

I verified that assertAdminToolbarMenuLinkExists and assertAdminToolbarMenuLinkNotExists work, by running them before the menu or content entity bundle are added or removed, and the test failed, as expected.

I stepped through the HTML output, and checked the menus in GUI and source as well, and the elements are present, and not, as expected.

It's great to have a global method to check links :)

As a follow up, should the remaining assertMenuHasHref be switched to use this new solution?

$ grep -rinoE '.{0,10}assertMenu.{0,10}' .
./admin_toolbar_search/tests/src/FunctionalJavascript/AdminToolbarSearchTestBase.php:186: function assertMenuHasHref($u
./admin_toolbar_search/tests/src/FunctionalJavascript/AdminToolbarSearchTestBase.php:202: function assertMenuDoesNotHav
./admin_toolbar_search/tests/src/FunctionalJavascript/AdminToolbarToolsSearchTest.php:169:   $this->assertMenuDoesNotHav
./admin_toolbar_search/tests/src/FunctionalJavascript/AdminToolbarToolsSearchTest.php:173:   $this->assertMenuHasHref('/
🇩🇰Denmark ressa Copenhagen

Hi @dydave, thanks for updating the tests! It is often one of those tasks that can linger for a long time, so getting them in tip top shape is great :)

I applied the patch, and verified that the assertions in the functions below are valid and succeed:

  • testAdminToolbarSearchSettingsForm
  • testAdminToolbarToolsSettingsForm
  • testAdminToolbarToolsToolbarController

I then changed the asserted result string, and they failed as expected. I also stepped through the HTML output pages in /simpletest/browser_output/Drupal_Tests_admin_toolbar_tools_Functional_AdminToolbarToolsToolbarControllerTest-110-[...] to verify the output.

Everything seems to work as expected (though I can't comment on the methods ...) and looks RTBC.

🇩🇰Denmark ressa Copenhagen

Good news, this may become supported at some point.

🇩🇰Denmark ressa Copenhagen

That looks like a really useful, I am subscribed, and will try it out, when something is ready.

🇩🇰Denmark ressa Copenhagen

With the great module  Field Updater Service , you can copy values from one field to another with ease. Sometimes moving data can be necessary, but writing a Migration seems like too much work ... and this module solves that elegantly.

The instructions on the project page makes the process look daunting -- especially for non-coders, this is just a scary sentence: 

Copy example update hook from drush result to your own custom module's .install file [...]

... but in reality, a custom module is not needed, and at its most basic, it's pretty simple:

  1. Add a new field updater at /admin/config/field-updater
  2. Select: Entity type, Bundle, and Target field
  3. Save the form, and map the source field
  4. Run drush field-updater:update to copy the content
  5. Enter field updater number (#), and type "yes" when prompted

From 📌 List all steps in the Quick start to clarify the process Active .

🇩🇰Denmark ressa Copenhagen

Thanks @apmsooner! I appreciate your openness to change.

While you were updating, I simplified the Quick Start even more.

I still am a firm believer, that there should be a Quick Start, to allow new users to quickly try this great module, and then the detailed method, with bells and whistles listed below.

Also, please remember that there are many non-enterprise Drupal site builders out there, who have no clue how to run update_hooks, but just want to copy some content from one field to another.

I'll update the Issue Summary as I envision it.

🇩🇰Denmark ressa Copenhagen

Heh, yes I am still on Drupal 10, since the EOL is in the distant future ( Dec 2026) , and there is nothing I really need from Drupal 11 ...

The new features sound interesting, and I am very much looking forward to seeing them! It's too bad we can't subscribe to new releases (see #1434450: Add the ability to follow projects like we follow issues ) to get an email alert.

🇩🇰Denmark ressa Copenhagen

I just had a chance to re-visit this awesome module, and it's an amazing tool, if you need to quickly copy content between fields.

I still stand by my Quick Start philosophy above:

A "Quick Start" should be exactly that, listing the minimum required steps, to complete a task.

... and I have updated my suggestion for a minimal Quick Start in the Issue Summary.

It truly is a shame, that it seems very complicated to use this module, when it's really quite simple ...

PS. I think documentation should always use complete commands (i.e. drush field-updater:update) and not abbreviations, since they have no meaning to new users.

🇩🇰Denmark ressa Copenhagen

Hi @apmsooner’s, and thanks for the tip, it sounds great that the UI has been improved in the new version 4. I just tried it, and I agree that the new more standardized method of showing the field settings collapsed below, under the "Field settings" Fieldset label when you create a new Custom field is more aligned with standard Drupal UI, and a clear improvement.

About 4.x being the recommended version ... if I run composer require drupal/custom_field, I get version 3, so version 4-rc2 is not quite the recommended release, officially at least :)

Also, perhaps you could consider adding a "Version 4" section on the project page, briefly describing the changes from version 3 -- or it could be added in the release notes, when https://www.drupal.org/project/custom_field/releases/4.0.0 is released? Thanks!

🇩🇰Denmark ressa Copenhagen

It sounds great that you found a solution!

I am still not sure how this can be accomplished ... But it may not be a rare use case, so if you have time, it would be awesome if you listed the steps to build this, and maybe a screen dump of how it works in reality? This looks like a D7 doc page, I am not sure where a Drupal 11 version should be placed?

Or if you find an article or tutorial which is close enough, feel free to share it here. Thanks!

🇩🇰Denmark ressa Copenhagen

I think you need to be more specific, this is too vague:

On one field I want to have selection from limited range

Like, how is that supposed to happen?

🇩🇰Denmark ressa Copenhagen

Perfect, thanks @stefan lehmann!

At some point since I created 📌 Replace string override example '@count min' => '@count minutes', Active back in May 2023, the original string was removed ... so I added a new example string, more likely to stay ("Add content") -- feel free to review :)

🇩🇰Denmark ressa Copenhagen

Updating to a new string example, since the old one was removed at some point :)

🇩🇰Denmark ressa Copenhagen

Thanks @stefan lehmann, I also did a few minor tweaks, since the string example is no longer there :)

🇩🇰Denmark ressa Copenhagen

I added it now, but at the very top ... Do you think it's too much? From my perspective, it's always about giving new users a head start, the experienced Redis user can always scroll further down. And with that though, I added a table of contents, to help make it clearer, which information is available in the README ... I also streamlined the format, to align a bit more with the README template.

I haven't yet tested the Debian-flavor server set up part, but will do that and change to "Needs review" as soon as I have.

🇩🇰Denmark ressa Copenhagen

I see, thanks for clarifying, I greatly appreciate it! I only skimmed that file quickly, and the content didn't look like something I could paste into a settings.php file ... But having now read it, and glanced over the README.md also, I got a better understanding, and got it -- it should be copy-pasted "as is", and I updated the proposed text in the Issue Summary.

I envision this to be a Quick Start style section, to get new users started quickly, so they can take a deeper dive afterwards, for more options.

🇩🇰Denmark ressa Copenhagen

Thanks for a fast and positive reply, that sounds great.

With "The default/example configuration", do you mean this file, or is it another one?

https://git.drupalcode.org/project/redis/-/blob/2.x/settings.redis.examp...

Because if that's the one, it's not clear which parts are necessary, and which are not ... I envision having a simple chunk of settings (as in the proposal) which can be copy-pasted. But of course, the settings.redis.example.php file should certainly be linked to, for details.

🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen
🇩🇰Denmark ressa Copenhagen

ressa created an issue.

🇩🇰Denmark ressa Copenhagen

Add opengraph.dev as well.

🇩🇰Denmark ressa Copenhagen

Add extra steps under "Performance" and "Backups, Maintenance and Monitoring", and new "SEO & Indexing" section.

🇩🇰Denmark ressa Copenhagen

Maybe creating a Dynamic/Virtual field value using computed field property classes could work?

🇩🇰Denmark ressa Copenhagen

Hi @dirke, if there's SSH access, then you should be able to install Composer, see https://getcomposer.org/doc/00-intro.md#installation-linux-unix-macos.

The official docs use the path /usr/local/bin/composer not always accessible to the regular user ... but also mention this:

If you like to install it only for your user and avoid requiring root permissions, you can use ~/.local/bin instead which is available by default on some Linux distributions.

Something like this may work for you? Check which paths are registered (username is your user on the server) with this:

$ echo $PATH
/home/username/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin:./vendor/bin

Create folder, download, make executable:

mkdir /home/username/.local/bin
cd /home/username/.local/bin
wget https://getcomposer.org/download/latest-stable/composer.phar -O composer
chmod a+rx composer

Check:

$ whereis composer
composer: /home/username/.local/bin/composer
🇩🇰Denmark ressa Copenhagen

Fixing a failing test.

🇩🇰Denmark ressa Copenhagen

Many shared hosting providers -- also very inexpensive ones at around $3 per month -- provide secure remote access via SSH, so that you can use the command line for easier site administration.

See these articles, for some of these cheap web hotels, offering SSH access:

I would steer clear in 2025 of web hotels without SSH and Composer, and see it as a red flag.

🇩🇰Denmark ressa Copenhagen

@stefan lehmann: Yes, there were Composer growing pains in the beginning. It could be very slow, and sometimes faulty. I hoped to use Drush Make forever, but also now really appreciate how Composer manages the dependencies, usually efficient and fast.

Though, some think that Package Managers are Evil ...

🇩🇰Denmark ressa Copenhagen

Thanks for a fast answer.

I agree that it's up to the user to decide -- but they need a basis to make a decision upon, and the current description doesn't give that to a user who is evaluating whether to use one or the other.

The sentence you shared could be useful, expanded a bit, and added on the project page?

Bootstrap has long legacy and very long turn around for new version of Bootstrap. We pledge to support Bootstrap 6 when it's officially released.

This can be a major factor when deciding whether to use one or the other, I assume you agree.

That made me wonder ... will bootstrap5 support Bootstrap 6 (see Bootstrap 6 release date #40572) or live under https://www.drupal.org/project/bootstrap6 ? :)

🇩🇰Denmark ressa Copenhagen

I just checked the doc pages linked to from above, and it looks like only these two pages are not in the menu:

🇩🇰Denmark ressa Copenhagen

Thanks for the link to the Override strings in the interface without using full translation system @stefan lehmann, I forgot I created it a while ago ( #3361659-3: Replace string override example '@count min' => '@count minutes', ).

If you think it looks good, feel free to change status to "No known problems". The structure of the documentation page system means that new pages can go unreviewed or not get added in the menu, for some time.

Production build 0.71.5 2024