A nasty little bug made its way into this release. Please use 2.5.1 instead to get the fixed version.
With Kirby 2.5.0 we fixed a lot of bugs and also introduced some nice litte features:
Highlights in 2.5.0
Importing field groups into blueprints
In Kirby 2.2.0 we introduced Global Field Definitions that allow you to import field definitions into your blueprints.
With Kirby 2.5.0 we extended that feature. It is now possible to import whole field groups. This is especially useful if a large number of blueprints all need a specific set of fields. You can define them once and import them everywhere.
More flexible user handling
User objects are no longer required to have a password and an associated email address.
This is useful if you want to implement passwordless authentication (e.g. with OAuth, IndieAuth or SMS tokens).
There is also a new method called $user->loginPasswordless() which you can use to log in a Kirby user after you have manually authenticated the user.
Deleting pages with subpages in the Panel
If you are using the Modules plugin or if you are storing comments to your blog posts as subpages, you may have been in the situation that you wanted to delete a page with its subpages with one click in the Panel.
This was not possible until now. While this was a deliberate decision to make sure that whole page trees don't get deleted by accident, it was a pain for pages with modules, comments or other data in subpages.
Deleting page trees is now finally possible after confirming a warning message. Yay!
Performance improvements with thumb handling
The Panel now only cleans up thumbs after page and file operations (e.g. uploading a file, renaming a page) if that's necessary. This improves performance a lot for image-heavy sites.
- Added support for importing whole field groups in blueprints
- Pages with subpages can now be deleted after confirming a warning message #185
- Better thumb cleaning rules #460
- Updated translations
- Added panel.favicon option
- The list of entries of a Structure field can now be displayed with custom sorting and flipping #652 #722
- The Select, Checkboxes and Radiobuttons fields now support options from a JSON file with a relative URL
- Fields that get their options from a JSON file now only fetch the JSON file once per request #998
- The Datetime field now supports the
overrideoption of the
- Proper support for the 12 hour time format in the Datetime field #1046
- Structure fields no longer require the
- Hidden fields are no longer displayed in structure fields of type
- Several other fixes for the structure field
- More clever thumb deletion on updates
- Fixed Hide subpages option
- Input list fields (checkboxes and radio) no longer have a clickable label #1032
- Make sure that pages with the
updateoption set to
falsecan't be updated in the backend
- The User field can no longer be configured to use a different set of options #1034
- General support for passwordless login with the $user->loginPasswordless() method; having a password is no longer a requirement for a user #550
- User objects are no longer required to have an associated
- Updated Smartypants library
adminis no longer the default role to avoid permission/security issues with invalid roles; the new default is either
editor(if no custom roles have been defined) or a new role without permissions (if custom roles exist) #569
- Fixed issue where Kirby would output a misleading error message if the directory structure was invalid #549
urloption is now automatically corrected if there is an unnecessary trailing slash #564
$usersobject can now be grouped with
- Only get the response from cache if the request is a GET or HEAD request #559
- Preserve (query) params when redirecting from
/hometo the site's home URL #573
- Fixed multilang content fallback for files #575
- Fixed infinite redirect on the homepage when
language.detectis enabled #581
- l::get($key = null, $default = null) now supports string templating #208 #221
- New str::between($string, $start, $end) helper
- New header::create($key, $value = null) method
- Support for
Bccwhen sending emails with the
- The header::status($code, $send = true) method now supports more status codes and you can pass custom status messages #218
- Added header::gone($send = true) method #218
- Improvements to the invalid($data, $rules, $messages = array()) helper #205
- brick::removeAttr($key) is now chainable
- You can now make the
Htmlclass use XHTML-style void tags:
html::$void = ' />';
- The str::parse($string, $mode = 'json') method can now parse
- Improved f::mime($file) to be better at detecting SVG files
(:num)pattern in routes now supports negative integers as well
- The substring methods in the
strclass now return
falseif the needle doesn't exist #207
- Added remote::patch($url, $params = array())
- Added support for youtube-nocookie.com URLs in embed::youtube($url, $attr = array())
- Fixed nested database\query::where() queries #209
- Don't throw an error if an image without EXIF data is printed #219
- Fixed a::missing($array, $required = array()) flagging keys that are set to "falsy" values like empty strings or
- Fixed lowercase key issue in the $collection->get($key, $default = null) #238
- Fixed decimal argument in a::average($array, $decimals = 0) #239
- Fixed cli detection in r::cli() #540