6.1.md 6.3 KB

Wagtail 6.1 release notes - IN DEVELOPMENT

Unreleased

---
local:
depth: 1
---

What's new

Other features

  • Refine wording of page & collection privacy using password is a shared password and should not be used for secure content (Rohit Sharma, Jake Howard)
  • Add RelatedObjectsColumn to the table UI framework (Matt Westcott)
  • Reduce memory usage when rebuilding search indexes (Jake Howard)
  • Support creating images in .ico format (Jake Howard)
  • Add the ability to disable the usage of a shared password for enhanced security for the private pages and collections (documents) feature (Salvo Polizzi, Jake Howard)
  • Add system checks to ensure that WAGTAIL_DATE_FORMAT, WAGTAIL_DATETIME_FORMAT, WAGTAIL_TIME_FORMAT are correctly configured (Rohit Sharma, Coen van der Kamp)
  • Allow custom permissions with the same prefix as built-in permissions (Sage Abdullah)
  • Allow displaying permissions linked to the Admin model's content type (Sage Abdullah)
  • Add support for Draftail's JavaScript to use chooserUrls provided by entity options & for the Draftail widget to encode lazy URLs/ translations (Elhussein Almasri)

Bug fixes

  • Fix typo in __str__ for MySQL search index (Jake Howard)
  • Ensure that unit tests correctly check for migrations in all core Wagtail apps (Matt Westcott)
  • Correctly handle date objects on human_readable_date template tag (Jhonatan Lopes)
  • Ensure re-ordering buttons work correctly when using a nested InlinePanel (Adrien Hamraoui)
  • Consistently remove model's verbose_name in group edit view when listing custom permissions (Sage Abdullah, Neeraj Yetheendran, Omkar Jadhav)

Documentation

  • Add contributing development documentation on how to work with a fork of Wagtail (Nix Asteri, Dan Braghis)
  • Make sure the settings panel is listed in tabbed interface examples (Tibor Leupold)
  • Update content and page names to their US spelling instead of UK spelling (Victoria Poromon)
  • Update broken and incorrect links throughout the documentation (EK303)
  • Fix formatting of --purge-only in wagtail_update_image_renditions management command section (Pranith)
  • Update template components documentation to better explain the usage of the Laces library (Tibor Leupold)

Maintenance

  • Move RichText HTML whitelist parser to use the faster, built in html.parser (Jake Howard)
  • Remove duplicate 'path' in default_exclude_fields_in_copy (Ramchandra Shahi Thakuri)
  • Update unit tests to always use the faster, built in html.parser & remove html5lib dependency (Jake Howard)
  • Adjust Eslint rules for TypeScript files (Karthik Ayangar)
  • Rename the React Button that only renders links (a element) to Link and remove unused prop & behaviors that was non-compliant for aria role usage (Advik Kabra)
  • Set up an wagtail.models.AbstractWorkflow model to support future customisations around workflows (Hossein)
  • Improve classnames template tag to handle nested lists of strings, use template tag for admin body element (LB (Ben) Johnston)
  • Merge UploadedDocument and UploadedImage into new UploadedFile model for easier shared code usage (Advik Kabra, Karl Hobley)
  • Optimize queries in dashboard panels (Sage Abdullah)
  • Optimize queries in group create/edit view (Sage Abdullah)
  • Move modal-workflow.js script usage to base admin template instead of ad-hoc imports (Elhussein Almasri)
  • Update all Draftail chooserUrls to be passed in via the Entity options instead of using window.chooserUrls globals, removing the need for inline scripts (Elhussein Almasri)

Upgrade considerations

Upgrade considerations - changes to undocumented internals

Deprecation of window.chooserUrls within Draftail choosers

The undocumented usage of the JavaScript window.chooserUrls within Draftail choosers will be removed in a future release.

The following chooserUrl object values will be impacted.

  • anchorLinkChooser
  • documentChooser
  • emailLinkChooser
  • embedsChooser
  • externalLinkChooser
  • imageChooser
  • pageChooser

Overriding these inner values on the global window.chooserUrls object will still override their usage in the Draftail choosers for now but this capability will be removed in a future release.

Example

It's recommended that usage of this global is removed in any customisations or third party packages and instead a custom Draftail Entity be used instead. See example below.

Old
# .../wagtail_hooks.py

@hooks.register("insert_editor_js")
def editor_js():
    return format_html(
        """
        <script>
            window.chooserUrls.myCustomChooser = '{0}';
        </script>
        """,
        reverse("myapp_chooser:choose"),
    )
New

Remove the insert_editor_js hook usage and instead pass the data needed via the Entity's data.

# .../wagtail_hooks.py

from django.urls import reverse_lazy

@hooks.register("register_rich_text_features")
def register_my_custom_feature(features):
    # features.register_link_type...

    features.register_editor_plugin(
        "draftail",
        "custom-link",
        draftail_features.EntityFeature(
            {
                "type": "CUSTOM_ITEM",
                "icon": "doc-full-inverse",
                "description": gettext_lazy("Item"),
                "chooserUrls": {
                    # Important: `reverse_lazy` must be used unless the URL path is hard-coded
                    "myChooser": reverse_lazy("myapp_chooser:choose")
                },
            },
            js=["..."],
        ),
    )

Overriding existing chooserUrls values

To override existing chooser Entities' chooserUrls values, here is an example of an unsupported monkey patch can achieve a similar goal.

However, it's recommended that a custom Entity be created to be registered as a replacement feature for Draftail customisations as per the documentation.

# .../wagtail_hooks.py
from django.urls import reverse_lazy

from wagtail import hooks

@hooks.register("register_rich_text_features")
def override_embed_feature_url(features):
    features.plugins_by_editor["draftail"]["embed"].data["chooserUrls"]["embedsChooser"] = reverse_lazy("my_embeds:chooser")