ProcessWire Weekly #256

In the 256th issue of ProcessWire Weekly we'll take a look at ProcessWire 3.0.129, introduce ProMailer v7 and a new third party module Inputfield Repeater Matrix Item Duplicator, and feature both a recipe of the week and a downright beautiful new site of the week. Read on!

Welcome to the 256th issue of ProcessWire Weekly! Hope you folks have had a great and productive week so far, and are ready to take some time off during the weekend. I sure am, and since it's finally looking like the winter might be (mostly) over here in Finland, things are looking good.

And now that we're done with the weekly weather update...

In this week's issue we're going to talk a bit about the latest core updates, take a quick look at the features added to ProMailer in version 7, and introduce a third party module called Inputfield Repeater Matrix Item Duplicator. We've also got a handy little recipe of the week inspired by some recent forum discussions, and – as always – we're also going to feature a new site of the week.

Thanks to all of our readers for being here with us again, and as always, any feedback is most welcome – please don't hesitate to drop us a line if there's anything in your mind you'd like to share with us. Enjoy our latest issue and have a great weekend!

Latest core updates: ProcessWire 3.0.129 – and a new ProMailer version!

This week we got a brief update from Ryan via the support forum, in which he summarized what's been going on in regards to the core these past few weeks, where we're at right now, and what's happening next. He also announced a new version of his latest commercial module, ProMailer.

ProcessWire 3.0.129 and the state of the issues repository

In terms of core development, the dev branch of ProcessWire is now at version 3.0.129. Compared to last week's release, this version contains 17 new commits, and once again the focus is on resolving user-reported issues at our issues repository. This version also introduces some all new features:

  • built-in blacklist support for WireMail,
  • multibyte-aware aliases of PHP text functions (such as substr or strlen) for WireTextTools,
  • new $config->installedBefore() and $config->installedAfter() for checking if a site was installed before or after a specific date,
  • new $datetime->elapsedTimeStr() method for displaying the elapsed time between two specified datetimes,
  • new $sanitizer->httpUrl() method to accompany pre-existing $sanitizer->url() method.

In terms of issues, we've come a long way: as of this week we're down to 65 open issues, and that number still includes some that are tagged as "fixed" but just waiting for a final confirmation. The overall situation at the issues repository is now really good, and we've got a good flow going on. Big thanks to everyone involved in tracking down and resolving those pesky issues!

... and that's just the quick run-down of what's new in the core this week. According to Ryan, next week there should be a proper blog post, in which the new core features will be introduced in more detail. Stay tuned for that!

ProMailer version 7

This week we've also got a new version of the commercial ProMailer module. This version includes some new features, and also fixes a few issues. Here's the changelog for ProMailer v7:

  • Changed subscribers list interface to use tabs.
  • Added ability to remove all subscribers from a list.
  • Added ability to remove filtered subscribers from a list (matching find query).
  • Added ability to import subscribers from another list (creating a merged list).
  • Added support for single, multi-select and checkbox custom fields.
  • Added support for PW 3.0.129+ core WireMail blacklist (more details in next week’s blog post).
  • Added several new options for custom fields (see new custom fields reference).
  • Added documentation for conditional placeholders.
  • Split the rather large ProcessProMailer.module into separate files/classes.
  • Fix some display issues in AdminThemeDefault and AdminThemeReno.
  • Various minor bug fixes and other minor tweaks, additions and improvements.

If you have any questions or feedback regarding this week's core updates, or the ProMailer module, be sure to check out the weekly update from Ryan at the support forum. Thanks!

New module: Inputfield Repeater Matrix Item Duplicator

Somehow we had managed to miss this module when it was first announced in February this year, but better late than never. Inputfield: Repeater Matrix Item Duplicator is a third party addition to the commercial Repeater Matrix module, created by David Karich of FlipZoom Media.

In a nutshell this module extends Repeater Matrix with the function to duplicate repeater items from one page to another. The condition is that the target field is the same matrix field from which the item is duplicated from, and there are a few limitations to keep in mind as well: source page has to be saved first, dynamic loading (AJAX) isn't supported, nested Repeater items are not supported, and so on.

The module is considered by the author to be a "proof of concept", but regardless, the feature list is already quite remarkable:

  • Duplicate a repeater item from one page to another, no matter how complex the item is
  • Full support for file and image fields, multilingual content, and min and max settings
  • Live synchronization of clipboard between multiple browser tabs
  • Support for multiple RepeaterMatrix fields on one page
  • Exclusions are configurable on a role and field basis
  • ... and more!

If you want to see how Repeater Matrix Item Duplicator works and what the actual duplicating workflow looks like, David has prepared a handy screencast showcasing his module in action.

For more details visit the Inputfield Repeater Matrix Item Duplicator support forum thread. As David mentions in the thread, his hope is to get this feature integrated into Repeater Matrix itself, but in the meantime the module can provide a huge boost to working with complex Repeater Matrix based content. Big thanks to David for his work here!

ProcessWire recipe of the week: moving existing content to ProcessWire and retaining .php or .html in your URLs

This week's ProcessWire recipe was borrowed from a support forum answer by szabesz. Honestly it's so simple that we're kind of embarrassed to even call it a "recipe" – but then again, why do things the hard way if there's a simple solution, right?

Now, let's get down to business!

The problem

Imagine that you're migrating content from another system, or just a heap of unrelated files from a non-CMS powered website, and would prefer to retain the .php or .html (or any other extension, really) in your URLs.

In ProcessWire, just like any modern CMS out there, requests to your web root are handed to the system, and URLs are automatically generated and thus won't contain a file extension – but what if you actually want to stick to your old-school URLs?

In most cases the suggested solution would be to just bite the bullet and change your URL structure – and sprinkle the site with some 301 redirects from those odd-looking .php or .html URLs to keep old links alive. But if that's not an option, there's another solution as well – and it's surprisingly simple.

The solution

ProcessWire URLs are based on page names, and a page name can contain more than just ASCII characters. For an example, a page name can contain a dot (.). By now you can probably see where this is going, but simply put: just include .php or .html in the page name – ProcessWire won't mind, and end users won't see a difference between example.com/products.php and a page called "products.php".

Note that you will probably want to change the "should page URLs end with a slash?" option in the template settings as well, since by default you'll get slash at the end of your URLs, which in this case isn't preferable.

If you require a fake index file – example.com/index.php or example.com/index.html – as well, that's also possible, but requires one extra step: you must create a page called "index.php" below your home page, and redirect traffic from the real home page to the fake one. This is easy to do with just a bit of code in your home template file:

<?php
$session->redirect('./index.php');

And that's all, folks. This recipe is super simple, but gets the job done just fine – hat tip to szabesz for pointing out the obvious solution!

Site of the week: The Pointe Restaurant

Our latest site of the week belongs to The Pointe Restaurant – an aspirational fine dining experience on the cusp of Canada’s wild west coast. In addition to innovative Canadian cuisine and refined service, customers visiting The Pointe get to enjoy a sweeping 240-degree view of the lively Pacific Ocean.

This site was created by VentureWeb and boasts a truly elegant, beautiful design, solid performance, and plenty of content ranging from the typical content pages to an event calendar, a rather active blog, careers page, and a dedicated menu area. In other words the site includes all the features you could hope to find from a restaurant website.

There's no reason to do all the work yourself, and The Pointe website is a good example of this: the newsletter subscription form at the footer integrates with Campaign Monitor, and the menu feature is powered by menu management solution menumodo. There's a single third party ProcessWire module visible on the front-end as well, and that would be the popular anti-spam solution Email Obfuscation – or EMO for short.

Thanks to the folks at VentureWeb for sharing this project with us, and congratulations to The Pointe Restaurant for their brilliant, ProcessWire powered website. Great work from everyone involved – this site is indeed looking really classy!

Stay tuned for our next issue

That's it for the 256th issue of ProcessWire Weekly. We'll be back with more news, updates, and content Saturday, 13th of April. As always, ProcessWire newsletter subscribers will get our updates a few days later.

Thanks for staying with us, once again. Hope you've had a great and productive week, and don't forget to check out the ProcessWire forums for more interesting topics. Until next week, happy hacking with ProcessWire!

Post a comment