This week our focus was on the server side of things (rather than on the code side) and we've got some exciting upgrades to share with you. More
Working through GitHub issue reports was the focus of this week, and it looks like we've got one more week to go in working through the current queue. There have not been any major bugs in 3.x, so things are looking more and more stable. Most updates in this weeks version (3.0.20) are about fixing minor bugs and various cosmetic things.
There's nothing particularly exciting to report in this version other than that. But working towards a fully stable 3.x master version is itself an exciting thing. So rather than focus on the small tweaks and fixes from this week, lets backtrack and review all that's new in 3.x relative to the current 2.7 master version.
What’s changed between 2.x and 3.x?
Technically, the biggest difference between 2.x and 3.x is that 3.x uses PHP namespaces. This either matters to you a lot, or not at all, but it's a good thing for the growth of ProcessWire as a project. More
Support for compiled modules and template files
In order to ease the transition to namespaces for modules and template files, ProcessWire 3.x originally came with a compatibility mode ($config->compat2x). However, FileCompiler was later introduced to 3.x, which eliminated the need for any kind of compatibility mode. ProcessWire is able to automatically compile non-namespaces modules or template files into a format that makes them recognize namespaces. More
Built-in, front-end editing capabilities come with ProcessWire 3.x, opening a whole new path for page edits. More
Major image field upgrades
Image fields got a major upgrade in 3.x thanks to a redesign by Renobird and development help from LostKobrakai. The design was originally introduced in this post by Renobird, and the results now appear in the current 3.x version with more info and screencasts here and here.
New $pages->findOne() method
ProcessWire 3.x adds a new $pages->findOne() method that behaves as kind of a hybrid between the $pages->find() and $pages->get() methods.
New $pages->getPath() and $pages->getByPath() methods
The getPath() method enables you to get the path to a page without actually loading it, making it a nice optimization for several instances. And the getByPath() method enables you to retrieve a Page object when you only know the path. Of course you can already do that with any page finding method that accepts a selector, but the difference is that getByPath() is very task focused and can do it a lot more quickly, and with a few extras as well. More
New $pages->touch() method
This method works very much like the unix "touch" command. Given a $page, it quickly updates that page's modification time (in the database) to now. More
New $pages->findMany() method
This new method enables you to find thousands upon thousands of pages at once, and even iterate them without running out of memory! More
New link abstraction features
Full page link abstraction is now built into the core Textarea field, making it possible to move or rename linked pages and have any internal links to them get updated automatically. More
Repeater Matrix support
In combination with some of the Repeater upgrades mentioned above, 3.x also supports the ProFields Repeater Matrix Fieldtype, which is opens up a whole new landscape of editing possibilities. More
Page tree upgrades
One of my favorite tweaks in 3.x are the page tree upgrades that make it remember where you left it and also enables it to load the page list much faster than before. More
Image resizing upgrades
Thanks to the work of Horst, we added support for new ImageSizerEngine modules and bundled the new ImageMagick resizing engine as a faster alternative to the built in GD resizing engine. More
Field rendering template files
ProcessWire 3.x also adds support for a new kind of template file. You can now have template files for any field in ProcessWire, and those template files can be used to render output for any given field. Read more here and here.
New page view options
You now have a lot more options when it comes to viewing a page on the front-end. Our "view" link is now a drop-down letting you choose to view it in the same window, in a modal, in a panel or in a new window. More
Improvements to sub-selectors
Extended page names
We added support for extended page names enable you to have URLs containing almost any UTF-8 characters. This is great for multi-language sites too. More
ProcessWire 3.x lets you boot multiple copies of ProcessWire at the same time, which opens new possibilities for sharing data among multiple installations.
In addition to the common modal windows that you see in ProcessWire, we now support panels and are using them in our page list quick tree and the new debug tools panel. Panels are also an option when viewing a page.
And much more…
- ProcessWire 3.x goes all-in on Composer support! More
- The PagePathHistory module now supports multi-language URLs. More
- Nice improvements to the ~= text finding operator. More
- New long-click modal actions. More
- New submit buttons with dropdown actions. More here and here.
- You can now use selector arrays in addition to selector strings. More
- New options for required fields. More
- New 3.x comprehensive API reference documentation. More
- And yes there's a lot more too that isn't mentioned here, but mostly smaller optimizations and tweaks.
Have a great weekend
As you can see, 3.x is really coming along nicely and a huge upgrade. We're also feeling very good about the stability of it, and think we may be getting close to making it the new master.
Next week we'll be continuing to cover GitHub issue reports and hope to get into some of the PRs as well. For those that like using the 2.x branch, we may also have some news you'll like coming very soon.
Have a great weekend and remember to read the ProcessWire Weekly!