ProcessWire 3 master and changelog

What’s new in ProcessWire 3?

Last week we called it a soft launch, but this week we'll say ProcessWire 3 is now released and considered our new master, version 3.0.35. This post is a changelog of sorts, where we will cover all that's new in ProcessWire 3!

System upgrades

Namespaces
Technically, one of the biggest difference between 2.x and 3.x is that 3.x uses PHP namespaces. More

Support for compiled modules and template files
In order to ease the transition to namespaces for modules and template files, ProcessWire is able to automatically compile non-namespaces modules or template files into a format that makes them recognize namespaces. More

Front-end editing
Built-in, front-end editing capabilities come with ProcessWire 3.x, opening a whole new path for page edits. 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.

Multi-instance support
ProcessWire 3.x lets you boot multiple copies of ProcessWire at the same time, which opens new possibilities for sharing data among multiple installations. How to use multi-instance

New API variables

$files
Provides several great new API methods for files and directories, including rendering, manipulation, zipping/unzipping, and compilation.

$datetime
Provides several useful API methods for working with dates and times.

$mail
A new API variable that serves as an interface to WireMail.

$classLoader
Enables you to connect PHP namespaces with file system paths for autoloading purposes.

New $page and $pages API methods

New $pages->findOne() method
ProcessWire 3.x adds a new findOne() method that behaves as kind of a hybrid between the $pages->find() and $pages->get() methods. More

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
The touch() 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
The findMany() method enables you to find thousands upon thousands of pages at once, and even iterate them without running out of memory! More

New $page->index() API method
This new index() method (also accessible as a property) tells you the position of any page relative to its siblings. More

API-side loading, sorting and filtering via $page methods
Multi-value fields (where supported) can now be filtered or sorted before they are loaded simply by calling them as a method on $page rather than as a property. More

Field upgrades

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 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 upgrades
Repeaters have a ton of upgrades in 3.x, making them far more useful and efficient than before. Read more here and here and here.

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

Enhanced password fields
Passwords fields received major upgrades in UI and configurable security options. More

Paginated Fieldtypes
New support for paginated fieldtypes is a massive upgrade for scalability of multi-value fields. The ProFields Table Fieldtype is the first example to support this. More

Text lengths and runtime character/word counters
Support for minimum length requirements was added to text-based types. Support for maximum length was also added on Textarea types. In addition, you now have the option of showing a runtime character (or word) counter with text types. More

Page tree and editor upgrades

Smarter and faster page tree
The page tree now remembers where you left it. This also enables it to load the page list much faster than before. More

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

Panel support
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.

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

Dropdown button actions
Now our submit buttons come with dropdown actions, which add convenience and save time. More here and here, as well as a new "Save and edit next" action here.

Performance and optimization

Improvements to sub-selectors
The speed at which sub-selectors operate has now been greatly improved. Basically, they are now hundreds of times faster than before. 3.x also now supports nested sub-selectors.

Exponentially faster forms
With a few bottlenecks removed, our editor forms (InputfieldForm) are now exponentially faster! More

Major performance upgrades to Page traversal methods
The Page traversal methods like $page->next(), $page->nextAll(), $page->nextUntil(), and all the equivalent prev() versions, received major upgrades making them not only simpler to use but a whole lot faster! More

Enhanced page finding selectors
Page finding selectors got a whole lot more powerful with support for a.b.c and a.b.c.d (and so on) type selectors! More

Control over when to use sessions
Now you have the ability to implement a function that controls when sessions are allowed using your own provided logic. More

Multi-language upgrades

Language pack CSV import/export
You can now export an entire language pack (group of translation files) to a single CSV file. You can also import translations from the CSV file. More

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

Multi-language page history
The PagePathHistory module now supports multi-language URLs. More

Multi-language template toggle
Now you have the ability to toggle multi-language features on/off on a per-template basis. More

New phrase search for language translation
When you need to translate some text, but don't know what file it appears in, this new search engine makes life a lot easier! More

Change all language tabs at once
Now you can long-click on any language tab (in the page editor) and it will change all fields to focus that language tab. More

Multi-language placeholder attributes
Text fields now support multiple languages when it comes to placeholder values.

Translation dropdown submit buttons
Now when translating files, you can choose to save and exit, save and edit next, or save and continue editing (as before).

Composer and Packagist support

ProcessWire 3 and Composer
PW3 now comes with a default composer.json file and a custom PSR-4 compliant autoloader. More

ProcessWire now on Packagist
ProcessWire can now be installed with Composer via the Packagist service. More

Modules can now use Composer
In addition to other libraries you might install with Composer, ProcessWire Modules can now be installed and maintained via Composer, where supported. More

Code hosting upgrades

New GitHub repositories
The ProcessWire code is now hosted in a new more official GitHub repository called processwire/processwire (changed from ryancramerdesign/ProcessWire). We also have the processwire-legacy repository which hosts ProcessWire 2.8. More

Improved issue and request management
We now have an issue and request management team, lead by Francesco Schwarz (@isellsoap), new repositories for managing issues and requests, new issue templates, and more. More

And more…

  • Nice improvements to the ~= text finding operator. More
  • Install support for utf8mb4 charset and InnoDB engine (database). More
  • New long-click modal actions. More
  • 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
  • Some useful $config improvements. More
  • Hundreds of big fixes and optimizations!

What about ProcessWire 2.8?

ProcessWire version 2.8, hosted in our new processwire-legacy repository, is by-and-large exactly the same as ProcessWire 3 except for the following exclusions:

  • namespaces
  • multi-instance*
  • Composer support*
  • Packagist

*May still work but we aren't officially supporting it in 2.8. If you need any of the above items we recommend sticking with ProcessWire 3.

ProcessWire Upgrade module updated for PW3

With ProcessWire 3 now out, the ProcessWire Upgrade module has also received a version upgrade that supports upgrading to ProcessWire 3 (or ProcessWire 2.8). We've used this for a few of our PW3 site upgrades, including the demo.processwire.com site, and it works quite well.

Comments

  • Renobird

    Renobird

    • 8 years ago
    • 60

    Wooooo! Reading through that list of new features and improvements it really hits home how much work went into 3.0. Thank you Ryan, and everyone who helped make this possible.

  • Mike Rockett

    Mike Rockett

    • 8 years ago
    • 40

    Excellent. Thanks Ryan for all your hard work. This is a great release.

  • Martin Hettiger

    Martin Hettiger

    • 8 years ago
    • 40

    Amazing work Ryan. This release is really incredible. Also thanks to all the helpers from this amazing community!

  • Adrian

    Adrian

    • 8 years ago
    • 30

    Thank you Ryan for all the work you have put into Processwire 3 !
    Also great list of all the changes in this major version.

  • Philip Holly

    Philip Holly

    • 8 years ago
    • 10

    I'm a ASP.NET / SPA developer but processwire is so good that I chose to use it for my company's website and am considering to use it as as api for some internal web apps. I just added some blog capability using the blog module (which is based on the blog profile) as a reference and it was straightforward. I often say if I had to design a CMS/CMF it would look like processwire. Keep up the great work. My only complaint is that it's in PHP, and not C# :)

  • Syed Furquan Ahmad

    Syed Furquan Ahmad

    • 8 years ago
    • 00

    Hello team,
    These were all the very important and amazing updates. But one thing I was looking for a one to one chat integration/module. Currently I am building a CRM in which my client want me to integrate chat option,in team can send recive messages,files.I hope this module will come in exist very soon.
    By the way as always amazing work processwire.

 

PrevProcessWire 3.x release and more

4

This week we started using our new GitHub organization repository to soft launch version 3.0. ProcessWire 3.0 now appears on packagist as well (installable via Composer). We've got several other updates for you as well! More 

Latest news

  • ProcessWire Weekly #547
    In the 547th issue of ProcessWire Weekly we're going to check out the latest core updates, introduce a couple of new modules, and more. Read on!
    Weekly.pw / 2 November 2024
  • Custom Fields Module
    This week we look at a new ProFields module named Custom Fields. This module provides a way to rapidly build out ProcessWire fields that contain any number of subfields/properties within them.
    Blog / 30 August 2024
  • Subscribe to weekly ProcessWire news

“ProcessWire is like a breath of fresh air. So powerful yet simple to build with and customise, and web editors love it too.” —Margaret Chatwin, Web developer