Improving UX in the Drupal Token Browser by filtering output to only specific fields

When building the authoring experience in Drupal, its nice to add in a token browser for text fields and let users replace tokens with other fields from the content or site.

The token browser provides the ability to filter down to entity types, users, site and other things, but it shows ALL the tokens for those. I wanted to restrict the tokens shown from the node type to a specific subset to reduce complexity and make it less daunting for users using the token browser, which has a huge number of options, even on a brand new site.

Simon Lindsay

Time to upgrade the site to the latest and greatest - Drupal 10

It was time to bite the bullet and upgrade this site to Drupal 10, which went pretty smoothly, but of course, never start this sort of process without a backup.

Drupal has made huge advances with upgradability since Drupal 7. Going from Drupal 8 to Drupal 9 and now to Drupal 10 has been a progressively smoother process.

In the case of this site, it was simply updating composer.json and changing some lines in composer.json like this:


Gnome & Linux - Bluetooth disabled on bootup?

I started having this issue a week or so ago where Bluetooth would just be disabled on boot, and my mouse wouldn't work until I used the touchpad on the laptop and went and manually enabled Bluetooth. Inconvenient, but not a show stopper.

Simon Lindsay
Ready to try out Drupal 10 with Docker

With the release of Drupal 10, I wanted to take it for a spin, and updated the Shepherd scaffold we use for OpenShift deployments so that things work nicely. If you already have docker, docker-compose & composer installed, try these steps to give it a spin.

Simon Lindsay
Sending email with symfony_mailer module

I took the plunge and switched from swiftmailer to symfony_mailer in StratosERP on the weekend, and it was surprisingly simple!

This snippet of code generates a pdf file using entity_print with wkhtmltopdf in the private filesystem, creates a new email, attaches the file and also takes a text_format field for the body and sends it.

Simon Lindsay
wkhtmltopdf vs docker

Today I figured out an issue that has been blocking progress on StratosERP for a while. Its one of the last things needed, and I had run out of other immediate bugs/features, so it had to be sorted.

The issue was the wkhtmltopdf would generate an unstyled pdf. It gave no errors and the handy Entity Print module debugging url worked fine and looked correct.

Simon Lindsay

Quickly watch the GitHub run that you just pushed from the command line


The Github tools are cool, but mostly I just wanted a quicker way to confirm that my jobs had run successfully, rather than go to the web browser.

It was pretty easy to construct a command to make it a one liner, but first, the github cli tools need to be installed, and the jq utility.

Once thats setup when a git push has just been done, then this command should automatically watch the job.

Lightweight domain redirections with https support

I recently needed to perform some simple domain redirects, and surprise - there is a minimal docker container that is perfect for the job.

docker run -d --restart=always \
 -e, \
 -e, \
 --name=domaintoredirect-biz -p 8080:80 morbz/docker-web-redirect

This works a treat, but does require a few things done first:

Simon Lindsay
How to get MS Teams to do 'Always on Visible Workspace'

MS Teams has been adopted all over, but on Linux, they have annoyingly decided to not provide the default Window decorations, so Its not possible to right click, and enable 'Always on Visible Workspace' which is something I like to have on.

OOhhh, found a different way, hold down the ALT key and right click on the teams title bar and the popup has 'Always on Visible Workspace' as an option.

Simon Lindsay

Creating components with Drupal

When you make a few Drupal sites, you will eventually find that you want to be able to take a feature that you created on one site and move it across to another site. After all, why re-invent the wheel!

My procedure for doing this has changed over time, using the features module was the way with Drupal 6 and Drupal 7, but with Drupal 8, we have better configuration management, and modules to help make things easier.

Features is again one of the modules that can be used, but I prefer a lighter approach, though its perhaps a little more work.