All Versions
51
Latest Version
Avg Release Cycle
16 days
Latest Release
1374 days ago

Changelog History
Page 5

  • v3.2.3 Changes

    July 30, 2019
    • πŸ›  Fix user models (#1892)
    • πŸ›  Fix dimension detection for webp files
    • πŸ›  Fix Str::split with multi-char separator (#1753)
    • πŸ›  Fix blueprint option for site title (#1899)
    • πŸ›  Fix cache prefix with a port
    • πŸ›  Fix issue with session cache (#1932)
    • πŸ›  Fix access of dotted keys in queries (#1939)
    • Validate email addresses with umlauts correctly (#1895)
    • πŸ›  Fix width and height attributes in video tags (#1875)
    • ⚠ Make the manuale locale setup warning translatable (#1897)
    • ⚑️ Update translations
    • πŸ‘ sortBy in sections: Support sorting constants (#1913)
    • πŸ†• New Collection::sortArgs method
    • πŸ›  Fix API error handling on errors without route
    • πŸ”’ Optional content lock for virtual pages (#1900)
  • v3.2.3-rc.1 Changes

    July 30, 2019
    • πŸ›  Fix user models (#1892)
    • πŸ›  Fix dimension detection for webp files
    • πŸ›  Fix Str::split with multi-char separator (#1753)
    • πŸ›  Fix blueprint option for site title (#1899)
    • πŸ›  Fix cache prefix with a port
    • πŸ›  Fix issue with session cache (#1932)
    • πŸ›  Fix access of dotted keys in queries (#1939)
    • Validate email addresses with umlauts correctly (#1895)
    • πŸ›  Fix width and height attributes in video tags (#1875)
    • ⚠ Make the manuale locale setup warning translatable (#1897)
    • ⚑️ Update translations
    • πŸ‘ sortBy in sections: Support sorting constants (#1913)
    • πŸ†• New Collection::sortArgs method
    • πŸ›  Fix API error handling on errors without route
    • πŸ”’ Optional content lock for virtual pages (#1900)
  • v3.2.2 Changes

    July 10, 2019

    πŸš‘ This is a hotfix release for two regressions in 3.2.1. We are really sorry for missing them during the test phase!

    • Editing your own account works reliably again (#1910)
    • The Panel installation no longer throws an error (#1909)
  • v3.2.1 Changes

    July 09, 2019
    • Min and max options in the date and datetime fields are now properly validated (#1801)
    • 🏷 Tags in the autocomplete dropdown can now be selected with the mouse in Safari (#1646)
    • The upload dialog in files fields prevents selecting wrong MIME types (#1877)
    • Snippets can now be loaded from a content field value again (#1883)
    • πŸ›  Fixed image settings in pages field (#1891)
    • Only admins are able to create admin accounts and change their own role (#1843)
    • πŸ›  Fixed styling of long tabs (#1711)
    • πŸ›  Fixed PHP code style issues
    • πŸ”Š Dialogs are now reset properly after they have been closed (#1858)
    • πŸ›  The font weight in select inputs is now fixed in Safari (#1884)
    • ⚑️ Updated translations (tr, fr, de, ca, en)
  • v3.2.1-rc.1

    July 02, 2019
  • v3.2.0 Changes

    June 25, 2019

    Panel

    It's all about editing…

    Content locking

    Working in teams has become a lot safer with our new content locking feature. Pages that are being edited are now automatically locked and other editors get informed about the editing user and cannot overwrite their ongoing changes.

    locking

    Conditional sections

    You can now create conditional sections that are only shown when a field contains a specific value (i.e. a toggle is checked, a select field is at a certain option, etc.)

    πŸ–¨ Conditional sections work exactly like conditional fields.

    sections: content: type: fieldsfields: postType: type: selectoptions: - Gallery - Imagegallery: type: filestemplate: gallery-imagelayout: cardssize: tinywhen: postType: Galleryimage: type: filestemplate: single-imagemax: 1layout: cardswhen: postType: Image
    

    Duplicating pages

    It's often easier to start a new page from existing content than to start from scratch. With the new "Duplicate" function you can now create new drafts from existing pages and decide to also copy files and even subpages.

    duplicate

    File uploads in files field

    You can now finally upload files directly in the files field.

    file-uploads

    πŸ‘ Better permissions

    You can now control each option for pages, files and users with fine-grained permissions:

    options: delete: admin: trueeditor: false
    

    0️⃣ There's also a wildcard available to change the default for all roles:

    options: update: \*: falseeditor: true
    

    Monospace option for textareas

    monospace

    fields: text: label: Texttype: textareafont: monospace
    

    Flexible widths for structure columns

    You can set any fraction and it will be automatically calculated into the right width.

    flexible-widths

    fields: mystructure: label: Structuretype: structurecolumns: a: width: 3/5b: width: 1/5c: width: 1/10d: width: 1/10fields: a: label: Atype: textb: label: Btype: textc: label: Ctype: textd: label: Dtype: text
    

    πŸ”Œ Custom login screen plugins

    Screenshot 2019-06-04 at 13 39 46

    0️⃣ With the new "login" plugin type you can now swap Kirby's default login screen and add your own. This is perfect when you want to implement your own authentication methods.

    Here's a quick example:

    index.js

    import LoginScreen from "./components/LoginScreen.vue";panel.plugin('my/auth', { login: LoginScreen });
    

    LoginScreen.vue

    \<template\> \<form @submit.prevent="login"\> \<k-fieldset :fields="fields" @submit="login"\>\</k-fieldset\> \<k-button type="submit" icon="check"\>Authenticate\</k-button\> \</form\> \</template\> \<script\>export default { computed: {fields() {return { phone: { placeholder: "+49 ", label: "Phone", type: "tel" } } } }, methods: {login() {/\*\* Send 2FA auth link \*\*/ } }};\</script\>
    

    Translatable slugs

    Our slug generator now has language specific rules that improve the quality of created slugs drastically. You can combine this with custom rules for each language.

    \<?phpreturn ['code' =\> 'de','default' =\> false,'direction' =\> 'ltr','locale' =\> 'de\_DE','name' =\> 'Deutsch','slug' =\> ['ß' =\> 'sz']];
    

    slugs

    For single-language setups you can define which ruleset to use in the config.php as well as define custom rules:

    \<?phpreturn ['slugs' =\> 'de'];Str::$language = ['ß' =\> 'sz'];
    

    Backend

    πŸ‘‰ User and file models and more methods extensions (user, users)

    πŸ‘‰ Users and files can now have their own model classes – like pages. Model classes give you full access to extend and overwrite the functionalities of users and files based on their roles or templates.

    class EditorUser extends User{// ...}class CoverFile extends File{// ...}Kirby::plugin('my/plugin', ['fileModels' =\> ['cover' =\> 'CoverFile'],'userModels' =\> ['editor' =\> 'EditorUser'],'usersMethods' =\> ['withArticles' =\> function () {return $this-\>articles()-\>isNotEmpty(); }]]);
    

    Multi-Language routing

    We drastically simplified routing in multi-language setups. You can now handle routes for a specific language or any language in a matter of seconds without writing redundant route definitions.

    return ['routes' =\> [['pattern' =\> '(:any)','language' =\> 'en','action' =\> function ($language, $slug) {if (page($slug)) {return $this-\>next(); }if ($page = page('notes/' . $slug)) {return $page; }return false; }], ]]; 
    

    You can even add a page scope to the routes, which will automatically take care to handle translated slugs.

    return ['routes' =\> [['pattern' =\> 'tag/(:any)','language' =\> '\*','page' =\> 'notes','action' =\> function ($language, $page, $filter) { return $page-\>render(['filter' =\> $filter]); } ], ]];
    

    Snippet alternatives

    You can now define snippet alternatives if the first snippet cannot be found.

    \<?php snippet(['try/this', 'try/that', 'try/last']) ?\>
    

    This is perfect if you want to load a snippet based on a custom page field, but such a snippet might not always exist:

    \<?php snippet(['articles/' . $page-\>postType(), 'articles/default']) ?\>
    

    πŸ‘Œ Improved query syntax

    You can now use array syntax and nested queries in our query syntax.

    // arrays
    site.index.filterBy('template', 'in', ['note', 'album']);
    
    // nested queries
    kirby.collection("some-collection").not(kirby.collection("excluded-collection"))
    

    πŸ†• New query option in users field

    The users field gets a lot more flexible with the addition of a query option. You can use this for example to filter users by role or any other custom field.

    fields: author: label: Authortype: usersquery: kirby.users.role("editor")
    

    πŸ–¨ The option to unset parts of extended blueprints

    πŸ–¨ When you create mixins for blueprints, such as field definitions or entire tabs, you can now use them but unset definitions that you don't want/need.

    # /site/blueprints/tabs/seo.ymllabel: SEOicon: searchfields: seoTitle: label: SEO Titletype: textseoDescription: label: SEO Descriptiontype: text
    

    πŸ–¨ Then in the extending blueprint …

    tabs: seo: extends: tabs/seofields: seoDescription: false
    

    πŸ†• New tt() helper

    πŸ†• New tt() helper as shortcut for I18n::template()

    // /site/languages/en.phpreturn ['code' =\> 'en','default' =\> false,'direction' =\> 'ltr','locale' =\> 'en\_US','name' =\> 'English','translations' =\> ['alert' =\> 'Attention: { message }']];
    

    In your templates …

    \<?= tt('alert', ['message' =\> 'Something is not right']) ?\>
    

    Customizable preview URL for the site.yml

    πŸ–¨ You can already control the preview URL for each page type in the page's blueprint, but in 3.2 you can now also set the same option in the site.yml

    title: Sitepreview: https://mycustomdomain.com
    

    βž• Additional enhancements and fixes

    πŸ†• New

    • πŸ†• New option to link to a file in the image tag (image: myimage.jpg link: mydocument.pdf)
    • πŸ†• New download option for the file tag to avoid direct downloads: (file: myfile.pdf download: false)
    • πŸ†• New fallback parameter for the $field->toDate('d.m.Y', 'now') method
    • 🍱 Assets from the asset() method can now be used as preview images in the Panel
    • πŸ†• New Users::role() filter shortcut
    • πŸ†• New $kirby->request()->domain() method
    • πŸ†• New $kirby->request()->path() method
    • Webp images are now included in $page->images() collections
    • The route:after hook can now manipulate the return value
    • πŸ†• New Mime::toExtensions() method
    • πŸ†• New NullCache and MemoryCache drivers
    • πŸ†• New created plugin type for Panel plugins, which gives you full access to the Vue instance, the Vue router and Vuex
    • All panel views can now be overwritten with custom components
    • πŸ”Œ You can now use the uploadFile.js helper to upload custom Blobs and pass the name properly in panel plugins.

    πŸ‘Œ Improved

    • πŸ‘ Better resolutions for images in the Panel by using srcset for thumbs in lists and cards, so your browser can select the best resolution for you
    • Faster thumbnail generation logic in templates
    • 0️⃣ The role title and description of the default admin role is now translated by default
    • You can now use dots when renaming files in the Panel
    • πŸ‘Œ Improved performance of options for select fields, radio buttons, tags and checkboxes
    • Attributes in KirbyTags are no longer case-sensitive. (Image: something.jpg) works as well as (image: something.jpg)
    • The Html::a() method now accepts tel: and mailto: links
    • The empty option in a select input is now automatically disabled when the field is required
    • πŸ‘ Better visual structure in the page options dropdown
    • πŸ‘ Better validation and error messages in the registration dialog
    • πŸ›  All caches are now properly prefixed to avoid collissions in multi-site installations
    • πŸ”Š The localStorage is automatically cleared when the user logs out.
    • All Vue components are now registered globally to allow overwriting them. This is especially useful for the textarea toolbar components.
    • The login throws more useful exceptions when Kirby is in debug mode
    • Invalid parent queries in Pages sections throw a useful error now
    • πŸ”Œ HMR is now possible in panel plugins with our new pluginkit
    • πŸ‘ Better disabled state for toggle fields
    • πŸ‘ Better cache busting mode in API requests
    • πŸ‘ Better error handling in error boundaries. (Throws warnings instead of errors to avoid breaking the panel)
    • βœ… Increased backend test coverage to 85%

    πŸ›  Fixed

    • Form buttons are now disabled when the content cannot be edited
    • help in sections gets translated correctly now
    • The buttons in textareas no longer wrap in narrow columns
    • The toolbar in textareas is now automatically hidden, when the field is disabled.
    • 0️⃣ The default values in the toggle input are now translated correctly
    • The dimensions of JPG2000 files are now correctly displayed in the file view
    • πŸ‘‰ Users are now sorted correctly in the users overview
    • πŸ”Œ Plugin options are now available in API routes
    • Thumbnails are no longer regenerated when the file meta content changes
    • The language modal can now correctly handle single locale settings again
    • Sections are now really loaded asynchronously
    • πŸ›  Fix Url detection in virtual host setup
    • Check if a thumbnail is actually created and retry if not
    • Language values are now validated correctly when a new language is created
    • The template option works now correctly in files presets

    πŸ”” Notices and breaking changes

    • πŸ’» Content locking only works between users. It will not prevent you to overwrite unsaved changes from another device or browser window.
    • Query syntax: always wrap strings in quotes, preferably double quotes
    • 🌐 translations root deprecated and will be removed in 3.3. Use i18n:translations instead
    • File::model() does no longer return the parent model. Use File::parent() instead
  • v3.2.0-rc.4

    June 19, 2019
  • v3.2.0-rc.3

    June 13, 2019
  • v3.2.0-rc.2

    June 06, 2019
  • v3.2.0-rc.1

    June 04, 2019