Articles

Drupal 11: Migrating From Jadu Into LocalGov Drupal: Part 4

This is the fourth article in a series looking at migrating from Jadu into a LocalGov Drupal (LGD) site for the Central Bedfordshire site. In the first article we looked at the Jadu API and setting things up so that we could make calls to the API and parse the XML data using the migration systems available.

Now it is time to move onto what became the most complex part of the Central Bedfordshire migration, which was moving directories data from Jadu to LGD. Directories were used on the Jadu site to store all sorts of information that included schools, the location of car parks, contact information of homecare providers, and even an a-to-z glossary of recycling. Clearly, this data served different purposes but all of this data was hand created and important to bring across during the migration work.

Argon Industria HMI 7C - Enclosure for 7" Touch Display 2: A Review

I've had a Raspberry Pi 5 with 16GB RAM sat on a shelf of my office for the last year so I decided to do something with it. It was originally intended to be used in an enclosure I had backed on Kickstarter, but that doesn't look like it will be released, so the Pi has been gathering dust.

Rather than just using the Pi in the open on my desk I like to put them in cases or enclosures. This makes sure they don't get damaged, but can also add additional features like cooling or extra drives and ports. I have a couple of different Raspberry Pi around the house, acting as network firewalls, or media servers so I'm familiar with different cases and allowing the use of NVMe drives.

Whilst looking for a decent case I stumbled upon the new Argon Industria HMI 7C enclosure with the 7 inch Touch Display 2. This case was compatible with the Raspberry Pi 5 and I just needed to also get a Raspberry Pi touch display 2.

Drupal 11: Migrating From Jadu Into LocalGov Drupal: Part 3

This is the second article in a series looking at migrating from Jadu into a LocalGov Drupal (LGD) site for Central Bedfordshire. In the first article we looked at the Jadu API and setting things up so that we could make calls to the API and parse the XML data using the migration systems available.

In the second article we looked at reproducing Jadu URLs to create redirects for migrated content, even though the Jadu API doesn't contain any URL information.

Now that we have a the Jadu connection created and redirects working we can start tackling other aspects of the migration, so let's look at migrating the main content of the site from Jadu. We can pull structured pages of content out of the Jadu API and apply them to the structure of a LGD site, maintaining the same hierarchical structure and order of pages.

Drupal 11: Migrating From Jadu Into LocalGov Drupal: Part 2

This is the second article in a series of articles looking at migrating from Jadu into a LocalGov Drupal (LGD) site for Central Bedfordshire. In the first article we looked at the Jadu API and setting things up so that we could make calls to the API and parse the XML data using the migration systems available.

In the last article I mentioned something about the Jadu API that caused me a lot of headaches. The API contains most of the information for a page, but critically, the Jadu API contains no information about the path of a page. There is basically no way to get the URL of a page in Jadu from the XML API.

I'm quire sure that this makes creating anything useful in the API a real pain since referring back to the site needs to be done with manually placed links, but it's clearly like this by design. I couldn't find any documentation on why it is like this, but it almost feels like vendor lock-in. Please correct me if I'm wrong here.

Drupal 11: Migrating From Jadu Into LocalGov Drupal: Part 1

This is the first article in a series of articles looking at migrating content from a Jadu site into a Drupal site running the LocalGov Drupal distribution. The site I was migrating content into was the new site for Central Bedfordshire, and whilst other implementations of Jadu may differ from what I describe here, it should be enough information for you to understand the process.

Jadu is a proprietary CMS application that is mostly written in PHP. Back in 2011 I went to a talk by one of the developers from Jadu at the PHPNW11 conference, so I was aware of the system. That talk, by the way, was interesting as they built a system called Phalanger that allowed PHP (and Jadu) to be run on a .NET environment. That project is now called PeachPie and it looks like it is still under active development.

LocalGov Drupal is a Drupal distribution that combines Drupal, some configuration, and a collection of modules with the aim of making it easier for councils to create websites.

LocalGov Drupal: Rewriting Waste Collection Data Provider Classes To Alter Data

LocalGov Drupal is a Drupal distribution that combines Drupal, some configuration, and a collection of modules with the aim of making it easier for councils to create websites. The functionality provided includes content pages, news pages, bus timetables, and waste collection systems. What's more, it's maintained by a vibrant community of people.

The LocalGov Drupal Waste Collection module is a module that allows local bin collection schedules to be displayed to users. This uses a combination of an address lookup and collection data to show users the bins collection schedule for that address for the next few months.

A plugin interface is used to allow different banks of data to be used in the bank end of the module, with CSV and Whitespace API integration coming with the module. Whitespace is a company used across the UK to manage waste collection systems and the Whitespace plugin interfaces with a SOAP API to pull bin collection data into the site.

Tufty2350 LCD Badge: A Review

The Tufty2350 LCD badge is a 2.8 inch screen with a rechargeable battery in a sturdy case. It comes with a lanyard so you can hang it around your neck and the case is shaped so that it also doubles as a desktop stand. I bought the Tufty2350 LCD badge during the Pi Day sale a few months ago, but I've not really done much with it.

That was until a few weeks ago. I went to LocalGov Drupal Camp 2026 in Sheffield recently and decided to use it as a badge for the conference. I spent a few evenings before the event writing come MicroPython code to create a badge application that I used at the event. I was impressed with the badge itself, and it was certainly a topic of conversation from a few people over the event.

I also added a bit of extra functionality to the badge where users could scan a QR code that would take them to a form on this site, where they could enter a short message. That message would then appear on the badge within a few seconds.

LocalGov Drupal Camp 2026

LocalGov Drupal Camp 2026 was held on 11th and 12th June in the city of Sheffield in the north of England. I drove over the Pennines from my home in Cheshire to attend the camp for the two days.

LocalGov Drupal, in case you weren't aware, is a Drupal distribution that is set up in a way that makes it easy for councils to publish their content. Since it's built on Drupal the sites can also make use of the many Drupal modules available. There are also lots of additional LocalGov Drupal modules that integrate with waste collection systems, bus timetables, election results, and many more.

Last year, LocalGov Drupal was being used by 57 council websites across the UK. This year, that figure has jumped to 73! A fantastic achievement, with that number only set to get bigger.

The camp itself consisted of a Wednesday night social night, a day of talks and other sessions, followed by a day of workshops and sprints.

Drupal 11: Building A Link Directory: Part 2

In the last article in this series I looked at creating a link directory on a Drupal site. In that article I looked at how I set up the links and took screenshots of the sites using a headless Chromium browser as the links were added.

The issue I had was that when I used headless Chromium to take screenshots of the sites the success rate was not very high. In these days of AI attacks, site captcha checks, and cookie popups it turned out to be quite difficult to take a clean screenshot of a site without being blocked either by a CDN or a cookie popup. In fact, most of the time the screenshot would be just a CDN error page.

I therefore looked for a different mechanism. Since I wanted to take a screenshot of a website it made sense to me to use a browser to do this, and because I am already using a browser why not get the browser I'm using to take the screenshot. After a bit of research I realised that creating browser plugins to do this was actually pretty simple. Plus once the screenshot has been taken I can post this to the Drupal site using a REST resource.

Drupal 11: Building A Link Directory: Part 1

A problem I've been struggling with for a while now is managing my bookmarks. Every time I come across an interesting article I want to read, a good resource I want to keep, or a neat tool I want to try I create a bookmark.

Over time I have collected a large collection of bookmarks so when I add a new one to the list it gets lots in the pile. I've tried to create directories to keep "new" bookmarks or organise them into sections, but I always end up scrabbling to find them.

The problem is that web browsers don't allow you to categorise or search bookmarks so I can never find them again. Also when I swap browsers (which I have done twice this year) I end up having to migrate them over and set up synchronising between computers. This always removes the favicons of the sites so I have even more trouble finding the right link.