ProcessWire 3.0.113 core updates

ProcessWire 3.0.113

This latest version on the dev branch has a lot of updates and this post covers all the details. The focus this week was on covering the queue of issue reports, and a whole lot of progress was made, plus some other useful additions in ProcessWire 3.0.113.

Summary of updates

In terms of completed issue reports, there were about fifteen of them covered. See the commit log for this week (especially September 12 and 13) for most of the details.

The CKEditor version has been upgraded from 4.8.0 to 4.10.1.

The SessionLoginThrottle module has been refactored and improved. Previously it was a bit too aggressive when two factor authentication was installed. This fixes that, as well as adds a new configuration setting so that you can log activity.

The ProcessController class was refactored so that it now supports method-level permission settings. It uses the existing module info "nav" array permission settings that were previously just used for determining what navigation was shown. As a result, ProcessController can now further reduce the access control/permission code requirements on Process modules.

Added Horst's pull request #118 for the ImageSizerEngine which improves the output when requesting a dimension larger than what the image can support, by maintaining the aspect ratio. Thanks also to @thomasaull for identifying this and for the suggestions in issue #628.

The $mail API variable now has shortcut to(), from() and subject() methods to shorten the fluent interface calls for sending an email. For fluent interface calls, it's no longer necessary to call $mail->new(); Now you can do this if you want to:

  ->body('Hello world')

New $sanitizer methods

Several new case conversion methods were added to $sanitizer. The need has come up often enough (both in the core and outside of it) that I thought we needed a standard set of case conversion methods in the core Sanitizer class:

$sanitizer->hyphenCase('Hello world'); // hello-world
$sanitizer->kebabCase('Hello world'); // hello-world (alias)
$sanitizer->snakeCase('Hello world'); // hello_world
$sanitizer->camelCase('Hello world'); // helloWorld
$sanitizer->pascalCase('Hello world'); // HelloWorld

You can pass these methods a short string (like above) or a giant string of text. They will take whatever you throw at them. While the hyphen/kebab case methods might seem very similar to the pageName() sanitizer, they are actually quite a bit simpler and more standard for general purpose use, rather than page names.

Special support for required attributes

Implemented @Toutouwai request #224 which enables using HTML5 required attribute on inputs that aren't visible. Previously it wasn't practical to use them so much because when the user hits the Save button, the error for the missing required field might appear on a different tab than the user is on. Thus, they would never see the browser error message. This update captures that scenario and automatically changes it to the right tab, and opens any fieldsets and Inputfields as needed till it can reveal the field with the missing requirements.

This update also adds JS API methods, which were built in part to accomodate the above:

  • InputfieldFocus($inputfield) - Show given $inputfield element, regardless of where it is (changing tabs, open fieldsets/fields as needed), and focus.
  • InputfieldOpen($inputfield) - Open the given $inputfield element.
  • InputfieldClose($inputfield) - Close/collapse the given $inputfield element.

Thanks to @Toutouwai (Robin S) for the suggestion and initial code that got this started.

Thanks for reading this week's summary of updates in ProcessWire 3.0.113 and have a great weekend. Visit the ProcessWire Weekly for the latest ProcessWire news and updates!


NextProcessWire 3.0.115 and 3.0.116 core updates


This week we look at two new versions on the dev branch and a lot of updates. These include new page traversal methods, page list customization options, improved empty trash process, two factor authentication improvements, improvements to the profile editor, and more. More 

Twitter updates

  • Weekly update for Jan 10, 2020—front-end file uploads in LoginRegisterPro with InputfieldFrontendFile module: More
    10 January 2020
  • If you haven't seen it yet, be sure to check out this great infographic by @teppokoivula in ProcessWire Weekly #294— How ProcessWire professionals work—the results of our recent weekly polls summarised:…
    3 January 2020
  • Today we have a new master version released, 3.0.148! There are 25 new versions worth of upgrades, fixes and optimizations in this new master version, relative to the previous. In this post we take a closer look at what’s new, how to upgrade, & more— More
    3 January 2020

Latest news

  • ProcessWire Weekly #297
    In the 297th issue of ProcessWire Weekly we're going to check out the latest core updates (ProcessWire 3.0.149) and introduce a new third party module called StaticWire. Read on! / 18 January 2020
  • ProcessWire 3.0.148 new master
    Today we have a new master version released, version 3.0.148! The last master version was 3.0.123, so there are 25 new versions worth of upgrades, fixes and optimizations in this new master version, relative to the previous. In this post we’ll take a closer look at what’s new, how to upgrade, and more.
    Blog / 3 January 2020
  • Subscribe to weekly ProcessWire news

“To Drupal, or to ProcessWire? The million dollar choice. We decided to make an early switch to PW. And in retrospect, ProcessWire was probably the best decision we made. Thanks are due to ProcessWire and the amazing system and set of modules that are in place.” —Unni Krishnan, Founder of PigtailPundits