diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 5ac174a88f..e8ca73f87a 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -14,6 +14,7 @@ Changelog
* Fix: Correctly handle `date` objects on `human_readable_date` template tag (Jhonatan Lopes)
* Docs: Add contributing development documentation on how to work with a fork of Wagtail (Nix Asteri, Dan Braghis)
* Docs: Make sure the settings panel is listed in tabbed interface examples (Tibor Leupold)
+ * Docs: Update multiple pages in the reference sections and multiple page names to their US spelling instead of UK spelling (Victoria Poromon)
* Maintenance: Move RichText HTML whitelist parser to use the faster, built in `html.parser` (Jake Howard)
* Maintenance: Remove duplicate 'path' in default_exclude_fields_in_copy (Ramchandra Shahi Thakuri)
* Maintenance: Update unit tests to always use the faster, built in `html.parser` & remove `html5lib` dependency (Jake Howard)
diff --git a/docs/advanced_topics/deploying.md b/docs/advanced_topics/deploying.md
index 29381ca5ec..4bb421304d 100644
--- a/docs/advanced_topics/deploying.md
+++ b/docs/advanced_topics/deploying.md
@@ -60,7 +60,7 @@ The django-storages Amazon S3 backends (`storages.backends.s3boto.S3BotoStorage`
### Cache
-Wagtail is designed to leverage Django's [cache framework](inv:django#topics/cache) when available to accelerate page loads. The cache is especially useful for the Wagtail admin, which can't take advantage of conventional CDN caching.
+Wagtail is designed to take adavantage of Django's [cache framework](inv:django#topics/cache) when available to accelerate page loads. The cache is especially useful for the Wagtail admin, which can't take advantage of conventional CDN caching.
Wagtail supports any of Django's cache backend, however we recommend against using one tied to the specific process or environment Django is running (eg `FileBasedCache` or `LocMemCache`).
diff --git a/docs/contributing/ui_guidelines.md b/docs/contributing/ui_guidelines.md
index ea420d367d..5d32ac1893 100644
--- a/docs/contributing/ui_guidelines.md
+++ b/docs/contributing/ui_guidelines.md
@@ -166,7 +166,7 @@ When adding or updating an icon,
1. Run it through [SVGO](https://jakearchibald.github.io/svgomg/) with appropriate compression settings.
2. Manually remove any unnecessary attributes. Set the `viewBox` attribute, and remove `width` and `height` attributes.
3. Manually add its `id` attribute with a prefix of `icon-` and the icon name matching the file name. Keep the icon as named from its source if possible.
-4. Add or preserve licensing information as a HTML comment starting with an exclamation mark: ``. For Font Awesome, we want: ``. For example, ``.
+4. Add or preserve licensing information as an HTML comment starting with an exclamation mark: ``. For Font Awesome, we want: ``. For example, ``.
5. Add the icon to Wagtail’s own implementation of the `register_icons` hook, in alphabetical order.
6. Go to the styleguide and copy the Wagtail icons table according to instructions in the template, pasting the result in `wagtail_icons_table.txt`.
7. If the icon requires [right-to-left mirroring](https://rtlstyling.com/posts/rtl-styling#bidirectional-icons), add the `class="icon--directional"` attribute.
diff --git a/docs/extending/adding_reports.md b/docs/extending/adding_reports.md
index e59e3cba40..9163c7c14f 100644
--- a/docs/extending/adding_reports.md
+++ b/docs/extending/adding_reports.md
@@ -19,7 +19,7 @@ class UnpublishedChangesReportView(PageReportView):
## Defining your report
-The most important attributes and methods to customise to define your report are:
+The most important attributes and methods to customize to define your report are:
```{eval-rst}
.. method:: get_queryset(self)
@@ -88,7 +88,7 @@ and specific type of any pages. For our example, we might want to know when the
(dictionary)
A dictionary of any fields/attributes in ``list_export`` for which you wish to manually specify a heading for the spreadsheet
-column, and their headings. If unspecified, the heading will be taken from the field ``verbose_name`` if applicable, and the
+column and their headings. If unspecified, the heading will be taken from the field ``verbose_name`` if applicable, and the
attribute string otherwise. For our example, ``last_published_at`` will automatically get a heading of ``"Last Published At"``,
but a simple "Last Published" looks neater. We'll add that by setting ``export_headings``:
diff --git a/docs/extending/admin_views.md b/docs/extending/admin_views.md
index a39b2704c3..df1c1d260e 100644
--- a/docs/extending/admin_views.md
+++ b/docs/extending/admin_views.md
@@ -102,7 +102,7 @@ Now create a `templates/wagtailcalendar/` folder within the `wagtailcalendar` ap
{% endblock %}
```
-Here we are overriding three of the blocks defined in the base template: `titletag` (which sets the content of the HTML `
` tag), `extra_css` (which allows us to provide additional CSS styles specific to this page), and `content` (for the main content area of the page). We're also including the standard header bar component, and setting a title and icon. For a list of the recognised icon identifiers, see the [style guide](styleguide).
+Here we are overriding three of the blocks defined in the base template: `titletag` (which sets the content of the HTML `` tag), `extra_css` (which allows us to provide additional CSS styles specific to this page), and `content` (for the main content area of the page). We're also including the standard header bar component, and setting a title and icon. For a list of the recognized icon identifiers, see the [style guide](styleguide).
Revisiting `/admin/calendar/` will now show the calendar within the Wagtail admin page furniture.
@@ -192,7 +192,7 @@ The calendar will now be visible at the URL `/admin/calendar/month/`.

-Finally we can alter our `wagtail_hooks.py` to include a group of custom menu items. This is similar to adding a single item but involves importing two more classes, `Menu` and `SubmenuMenuItem`.
+Finally, we can alter our `wagtail_hooks.py` to include a group of custom menu items. This is similar to adding a single item but involves importing two more classes, `Menu` and `SubmenuMenuItem`.
```{code-block} python
:emphasize-lines: 3,20-25
@@ -254,7 +254,7 @@ class CalendarViewSet(ViewSet):
# This can be accessed at `/admin/calendar/`
# and reverse-resolved with the name `calendar:index`.
# This first URL will be used for the menu item, but it can be
- # customised by overriding the `menu_url` property.
+ # customized by overriding the `menu_url` property.
path('', index, name='index'),
# This can be accessed at `/admin/calendar/month/`
@@ -275,7 +275,7 @@ def register_viewset():
Compared to the previous example with the two separate hooks, this will result in a single menu item "Calendar" that takes you to the `/admin/calendar/` URL. The second URL will not have its own menu item, but it will still be accessible at `/admin/calendar/month/`. This is useful for grouping related views together, that may not necessarily need their own menu items.
-For further customisations, refer to the {class}`~wagtail.admin.viewsets.base.ViewSet` documentation.
+For further customizations, refer to the {class}`~wagtail.admin.viewsets.base.ViewSet` documentation.
(using_base_viewsetgroup)=
@@ -307,4 +307,4 @@ def register_viewset():
This will result in a top-level menu item "Agenda" with the two viewsets' menu items as sub-items, e.g. "Calendar" and "Events".
-For further customisations, refer to the {class}`~wagtail.admin.viewsets.base.ViewSetGroup` documentation.
+For further customizations, refer to the {class}`~wagtail.admin.viewsets.base.ViewSetGroup` documentation.
diff --git a/docs/extending/audit_log.md b/docs/extending/audit_log.md
index 8e9ca5450d..08392aef6c 100644
--- a/docs/extending/audit_log.md
+++ b/docs/extending/audit_log.md
@@ -7,7 +7,7 @@ Wagtail provides a mechanism to log actions performed on its objects. Common act
The Wagtail admin uses the action log entries to provide a site-wide and page-specific history of changes. It uses a
registry of 'actions' that provide additional context for the logged action.
-The audit log-driven Page history replaces the revisions list page, but provides a filter for revision-specific entries.
+The audit log-driven Page history replaces the revisions list page but provides a filter for revision-specific entries.
```{note}
The audit log does not replace revisions.
@@ -21,7 +21,7 @@ The `wagtail.log_actions.log` function can be used to add logging to your own co
Adds an entry to the audit log.
:param instance: The model instance that the action is performed on
- :param action: The code name for the action being performed. This can be one of the names listed below, or a custom action defined through the :ref:`register_log_actions` hook.
+ :param action: The code name for the action being performed. This can be one of the names listed below or a custom action defined through the :ref:`register_log_actions` hook.
:param user: Optional - the user initiating the action. For actions logged within an admin view, this defaults to the logged-in user.
:param uuid: Optional - log entries given the same UUID indicates that they occurred as part of the same user action (for example a page being immediately published on creation).
:param title: The string representation, of the instance being logged. By default, Wagtail will attempt to use the instance's ``str`` representation or ``get_admin_display_title`` for page objects.
@@ -62,7 +62,7 @@ When adding logging, you need to log the action or actions that happen to the ob
| `wagtail.publish` | The page was published |
| `wagtail.publish.schedule` | The draft is scheduled for publishing |
| `wagtail.publish.scheduled` | Draft published via `publish_scheduled` management command |
-| `wagtail.schedule.cancel` | Draft scheduled for publishing cancelled via "Cancel scheduled publish" |
+| `wagtail.schedule.cancel` | Draft scheduled for publishing canceled via "Cancel scheduled publish" |
| `wagtail.unpublish` | The page was unpublished |
| `wagtail.unpublish.scheduled` | Page unpublished via `publish_scheduled` management command |
| `wagtail.lock` | Page was locked |
@@ -80,7 +80,7 @@ When adding logging, you need to log the action or actions that happen to the ob
| `wagtail.workflow.approve` | The draft was approved at a Workflow Task |
| `wagtail.workflow.reject` | The draft was rejected, and changes were requested at a Workflow Task |
| `wagtail.workflow.resume` | The draft was resubmitted to the workflow |
-| `wagtail.workflow.cancel` | The workflow was cancelled |
+| `wagtail.workflow.cancel` | The workflow was canceled |
## Log context
diff --git a/docs/extending/custom_account_settings.md b/docs/extending/custom_account_settings.md
index 695475ff19..24cba55077 100644
--- a/docs/extending/custom_account_settings.md
+++ b/docs/extending/custom_account_settings.md
@@ -1,13 +1,13 @@
(custom_account_settings)=
-# Customising the user account settings form
+# Customizing the user account settings form
-This document describes how to customise the user account settings form that can be found by clicking "Account settings"
+This document describes how to customize the user account settings form which can be found by clicking "Account settings"
at the bottom of the main menu.
## Adding new panels
-Each panel on this form is a separate model form which can operate on an instance of either the user model, or the {class}`wagtail.users.models.UserProfile`.
+Each panel on this form is a separate model form that can operate on an instance of either the user model, or the {class}`wagtail.users.models.UserProfile`.
### Basic example
@@ -113,7 +113,7 @@ class CustomSettingsPanel(BaseSettingsPanel):
- `title` - The display name of the title
- `order` - The order of the tab. The builtin Wagtail tabs start at `100` and increase by `100` for each tab
-## Customising the template
+## Customizing the template
You can provide a custom template for the panel by specifying a template name:
diff --git a/docs/extending/custom_bulk_actions.md b/docs/extending/custom_bulk_actions.md
index 2db625a7cb..dd5bb28975 100644
--- a/docs/extending/custom_bulk_actions.md
+++ b/docs/extending/custom_bulk_actions.md
@@ -136,7 +136,7 @@ def check_perm(self, obj):
return obj.has_perm('some_perm') # returns True or False
```
-The success message shown on the admin can be customised by overriding the `get_success_message` method.
+The success message shown on the admin can be customized by overriding the `get_success_message` method.
```python
def get_success_message(self, num_parent_objects, num_child_objects):
diff --git a/docs/extending/custom_tasks.md b/docs/extending/custom_tasks.md
index f2ba75ab3d..48b7f76645 100644
--- a/docs/extending/custom_tasks.md
+++ b/docs/extending/custom_tasks.md
@@ -122,7 +122,7 @@ class UserApprovalTask(Task):
## Customising behaviour
-Both `Task` and `TaskState` have a number of methods that can be overridden to implement custom behaviour. Here are some of the most useful:
+Both `Task` and `TaskState` have a number of methods that can be overridden to implement custom behavior. Here are some of the most useful:
`Task.user_can_access_editor(obj, user)`, `Task.user_can_lock(obj, user)`, `Task.user_can_unlock(obj, user)`:
@@ -174,7 +174,7 @@ Returns the name of a custom template to be used in rendering the data entry mod
This performs the actions specified in `Task.get_actions(obj, user)`: it is passed an action name, for example, `approve`, and the relevant task state. By default, it calls `approve` and `reject` methods on the task state when the corresponding action names are passed through. Any additional data entered in a modal (see `get_form_for_action` and `get_actions`) is supplied as kwargs.
-For example, let's say we wanted to add an additional option: cancelling the entire workflow:
+For example, let's say we wanted to add an additional option: canceling the entire workflow:
```python
def on_action(self, task_state, user, action_name):
@@ -186,7 +186,7 @@ def on_action(self, task_state, user, action_name):
`Task.get_task_states_user_can_moderate(user, **kwargs)`:
-This returns a QuerySet of `TaskStates` (or subclasses) the given user can moderate - this is currently used to select objects to display on the user's dashboard.
+This returns a QuerySet of `TaskStates` (or subclasses) that the given user can moderate - this is currently used to select objects to display on the user's dashboard.
For example:
@@ -215,7 +215,7 @@ def get_description(cls):
Wagtail's notifications are sent by `wagtail.admin.mail.Notifier` subclasses: callables intended to be connected to a signal.
-By default, email notifications are sent upon workflow submission, approval and rejection, and upon submission to a group approval task.
+By default, email notifications are sent upon workflow submission, approval, and rejection, and upon submission to a group approval task.
As an example, we'll add email notifications for when our new task is started.
@@ -237,7 +237,7 @@ class BaseUserApprovalTaskStateEmailNotifier(EmailNotificationMixin, Notifier):
def can_handle(self, instance, **kwargs):
if super().can_handle(instance, **kwargs) and isinstance(instance.task.specific, UserApprovalTask):
- # Don't send notifications if a Task has been cancelled and then resumed - when object was updated to a new revision
+ # Don't send notifications if a Task has been canceled and then resumed - when object was updated to a new revision
return not TaskState.objects.filter(workflow_state=instance.workflow_state, task=instance.task, status=TaskState.STATUS_CANCELLED).exists()
return False
diff --git a/docs/extending/customising_group_views.md b/docs/extending/customizing_group_views.md
similarity index 87%
rename from docs/extending/customising_group_views.md
rename to docs/extending/customizing_group_views.md
index 3e56d16737..4b0a0f7e33 100644
--- a/docs/extending/customising_group_views.md
+++ b/docs/extending/customizing_group_views.md
@@ -1,12 +1,12 @@
-(customising_group_views)=
+(customizing_group_views)=
-# Customising group edit/create views
+# Customizing group edit/create views
-The views for managing groups within the app are collected into a 'viewset' class, which acts as a single point of reference for all shared components of those views, such as forms. By subclassing the viewset, it is possible to override those components and customise the behaviour of the group management interface.
+The views for managing groups within the app are collected into a 'viewset' class, which acts as a single point of reference for all shared components of those views, such as forms. By subclassing the viewset, it is possible to override those components and customize the behavior of the group management interface.
## Custom edit/create forms
-This example shows how to customise forms on the 'edit group' and 'create group' views in the Wagtail admin.
+This example shows how to customize forms on the 'edit group' and 'create group' views in the Wagtail admin.
Let's say you need to connect Active Directory groups with Django groups.
We create a model for Active Directory groups as follows:
@@ -107,11 +107,11 @@ INSTALLED_APPS = [
]
```
-(customising_group_views_permissions_order)=
+(customizing_group_views_permissions_order)=
-## Customising the group editor permissions ordering
+## Customizing the group editor permissions ordering
-The order that object types appear in the group editor's "Object permissions" and "Other permissions" sections can be configured by registering that order in one or more `AppConfig` definitions. The order value is typically an integer between 0 and 999, although this is not enforced.
+The order in which object types appear in the group editor's "Object permissions" and "Other permissions" sections can be configured by registering that order in one or more `AppConfig` definitions. The order value is typically an integer between 0 and 999, although this is not enforced.
```python
from django.apps import AppConfig
diff --git a/docs/extending/extending_client_side.md b/docs/extending/extending_client_side.md
index 29d9310c57..fbf0c4e5c9 100644
--- a/docs/extending/extending_client_side.md
+++ b/docs/extending/extending_client_side.md
@@ -1,15 +1,15 @@
(extending_client_side)=
-# Extending client-side behaviour
+# Extending client-side behavior
-Many kinds of common customisations can be done without reaching into JavaScript, but depending on what parts of the client-side interaction you want to leverage or customise, you may need to employ React, Stimulus, or plain (vanilla) JS.
+Many kinds of common customizations can be done without reaching into JavaScript, but depending on what parts of the client-side interaction you want to leverage or customize, you may need to employ React, Stimulus, or plain (vanilla) JS.
[React](https://reactjs.org/) is used for more complex parts of Wagtail, such as the sidebar, commenting system, and the Draftail rich-text editor.
For basic JavaScript-driven interaction, Wagtail is migrating towards [Stimulus](https://stimulus.hotwired.dev/).
-You don't need to know or use these libraries to add your custom behaviour to elements, and in many cases, simple JavaScript will work fine, but Stimulus is the recommended approach for more complex use cases.
+You don't need to know or use these libraries to add your custom behavior to elements, and in many cases, simple JavaScript will work fine, but Stimulus is the recommended approach for more complex use cases.
-You don't need to have Node.js tooling running for your custom Wagtail installation for many customisations built on these libraries, but in some cases, such as building packages, it may make more complex development easier.
+You don't need to have Node.js tooling running for your custom Wagtail installation for many customizations built on these libraries, but in some cases, such as building packages, it may make more complex development easier.
```{note}
Avoid using jQuery and undocumented jQuery plugins, as they will be removed in a future version of Wagtail.
@@ -33,13 +33,13 @@ These will ensure the added files are used in the admin after the core JavaScrip
## Extending with DOM events
-When approaching client-side customisations or adopting new components, try to keep the implementation simple first, you may not need any knowledge of Stimulus, React, JavaScript Modules or a build system to achieve your goals.
+When approaching client-side customizations or adopting new components, try to keep the implementation simple first, you may not need any knowledge of Stimulus, React, JavaScript Modules, or a build system to achieve your goals.
-The simplest way to attach behaviour to the browser is via [DOM Events](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events) and plain (vanilla) JavaScript.
+The simplest way to attach behavior to the browser is via [DOM Events](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events) and plain (vanilla) JavaScript.
### Wagtail's custom DOM events
-Wagtail supports some custom behaviour via listening or dispatching custom DOM events.
+Wagtail supports some custom behavior via listening or dispatching custom DOM events.
- See [Images title generation on upload](images_title_generation_on_upload).
- See [Documents title generation on upload](docs_title_generation_on_upload).
@@ -51,7 +51,7 @@ Wagtail supports some custom behaviour via listening or dispatching custom DOM e
Wagtail uses [Stimulus](https://stimulus.hotwired.dev/) as a way to provide lightweight client-side interactivity or custom JavaScript widgets within the admin interface.
-The key benefit of using Stimulus is that your code can avoid the need for manual initialisation when widgets appear dynamically, such as within modals, `InlinePanel`, or `StreamField` panels.
+The key benefit of using Stimulus is that your code can avoid the need for manual initialization when widgets appear dynamically, such as within modals, `InlinePanel`, or `StreamField` panels.
The [Stimulus handbook](https://stimulus.hotwired.dev/handbook/introduction) is the best source on how to work with and understand Stimulus.
@@ -211,7 +211,7 @@ You should be able to see that on your Blog Pages, the introduction field will n
For more complex widgets we can now integrate additional libraries whenever the widget appears in the rendered HTML, either on initial load or dynamically without the need for any inline `script` elements.
-In this example we will build a color picker widget using the [Coloris](https://coloris.js.org/) JavaScript library with support for custom widget options.
+In this example, we will build a color picker widget using the [Coloris](https://coloris.js.org/) JavaScript library with support for custom widget options.
First, let's start with the HTML, building on the [Django widgets](inv:django#ref/forms/widgets) system that Wagtail supports for `FieldPanel` and `FieldBlock`. Using the `build_attrs` method, we build up the appropriate Stimulus data attributes to support common data structures being passed into the controller.
@@ -346,7 +346,7 @@ You may want to avoid bundling Stimulus with your JavaScript output and treat th
## Extending with React
-To customise or extend the [React](https://reactjs.org/) components, you may need to use React too, as well as other related libraries.
+To customize or extend the [React](https://reactjs.org/) components, you may need to use React too, as well as other related libraries.
To make this easier, Wagtail exposes its React-related dependencies as global variables within the admin. Here are the available packages:
diff --git a/docs/extending/extending_draftail.md b/docs/extending/extending_draftail.md
index a60dfef352..3eff344862 100644
--- a/docs/extending/extending_draftail.md
+++ b/docs/extending/extending_draftail.md
@@ -35,7 +35,7 @@ def register_mark_feature(features):
'type': type_,
'label': '☆',
'description': 'Mark',
- # This isn’t even required – Draftail has predefined styles for MARK.
+ # This isn’t even required – Draftail has predefined styles for MARK.
# 'style': {'textDecoration': 'line-through'},
}
@@ -67,7 +67,7 @@ These steps will always be the same for all Draftail plugins. The important part
For detailed configuration options, head over to the [Draftail documentation](https://www.draftail.org/docs/formatting-options) to see all of the details. Here are some parts worth highlighting about controls:
- The `type` is the only mandatory piece of information.
-- To display the control in the toolbar, combine `icon`, `label` and `description`.
+- To display the control in the toolbar, combine `icon`, `label`, and `description`.
- `icon` is an icon name [registered in the Wagtail icon library](../../advanced_topics/icons) - for example, `'icon': 'user',`. It can also be an array of strings, to use SVG paths, or SVG symbol references for example `'icon': ['M100 100 H 900 V 900 H 100 Z'],`. The paths need to be set for a 1024x1024 viewbox.
### Creating new inline styles
@@ -143,7 +143,7 @@ Here are the main requirements to create a new entity feature:
- The editor plugin must define a `source`: a React component responsible for creating new entity instances in the editor, using the Draft.js API.
- The editor plugin also needs a `decorator` (for inline entities) or `block` (for block entities): a React component responsible for displaying entity instances within the editor.
- Like for inline styles and blocks, set up the to/from DB conversion.
-- The conversion usually is more involved, since entities contain data that needs to be serialised to HTML.
+- The conversion usually is more involved, since entities contain data that needs to be serialized to HTML.
To write the React components, Wagtail exposes its own React, Draft.js, and Draftail dependencies as global variables. Read more about this in [extending client-side React components](extending_client_side_react).
To go further, please look at the [Draftail documentation](https://www.draftail.org/docs/formatting-options) as well as the [Draft.js exporter documentation](https://github.com/springload/draftjs_exporter).
@@ -303,7 +303,7 @@ This is a straightforward React component. It does not use JSX since we do not w
Finally, we register the JS components of our plugin:
```javascript
-// Register the plugin directly on script execution so the editor loads it when initialising.
+// Register the plugin directly on script execution so the editor loads it when initializing.
window.draftail.registerPlugin({
type: 'STOCK',
source: StockSource,
@@ -339,10 +339,10 @@ Custom block entities can also be created (have a look at the separate [Draftail
## Other editor extensions
-Draftail has additional APIs for more complex customisations:
+Draftail has additional APIs for more complex customizations:
- **Controls** – To add arbitrary UI elements to editor toolbars.
-- **Decorators** – For arbitrary text decorations / highlighting.
+- **Decorators** – For arbitrary text decorations/highlighting.
- **Plugins** – For direct access to all Draft.js APIs.
### Custom toolbar controls
@@ -418,7 +418,7 @@ The [decorators API](https://www.draftail.org/docs/decorators) is how Draftail /
There are two important considerations when using this API:
- Order matters: only one decorator can render per character in the editor. This includes any entities that are rendered as decorations.
-- For performance reasons, Draft.js only re-renders decorators that are on the currently-focused line of text.
+- For performance reasons, Draft.js only re-renders decorators that are on the currently focused line of text.
Here is an example with highlighting of problematic punctuation – first, registering the editor feature in a `wagtail_hooks.py`:
@@ -478,7 +478,7 @@ window.draftail.registerPlugin({
This is an advanced feature. Please carefully consider whether you really need this.
```
-Draftail supports plugins following the [Draft.js Plugins](https://www.draft-js-plugins.com/) architecture. Such plugins are the most advanced and powerful type of extension for the editor, offering customisation capabilities equal to what would be possible with a custom Draft.js editor.
+Draftail supports plugins following the [Draft.js Plugins](https://www.draft-js-plugins.com/) architecture. Such plugins are the most advanced and powerful type of extension for the editor, offering customization capabilities equal to what would be possible with a custom Draft.js editor.
A common scenario where this API can help is to add bespoke copy-paste processing. Here is a simple example, automatically converting URL anchor hash references to links. First, let’s register the extension in Python:
@@ -544,8 +544,8 @@ window.draftail.registerPlugin(anchorifyPlugin, 'plugins');
## Integration of the Draftail widgets
-To further customise how the Draftail widgets are integrated into the UI, there are additional extension points for CSS and JS:
+To further customize how the Draftail widgets are integrated into the UI, there are additional extension points for CSS and JS:
-- In JavaScript, use the `[data-draftail-input]` attribute selector to target the input which contains the data, and `[data-draftail-editor-wrapper]` for the element which wraps the editor.
+- In JavaScript, use the `[data-draftail-input]` attribute selector to target the input that contains the data, and `[data-draftail-editor-wrapper]` for the element that wraps the editor.
- The editor instance is bound to the input field for imperative access. Use `document.querySelector('[data-draftail-input]').draftailEditor`.
- In CSS, use the classes prefixed with `Draftail-`.
diff --git a/docs/extending/forms.md b/docs/extending/forms.md
index 8abd99bbd9..9694fc36e5 100644
--- a/docs/extending/forms.md
+++ b/docs/extending/forms.md
@@ -66,10 +66,10 @@ See [](/reference/pages/panels) for the set of panel types provided by Wagtail.
A view performs the following steps to render a model form through the panels mechanism:
-- The top-level panel object for the model is retrieved. Usually this is done by looking up the model's `edit_handler` property and falling back on an `ObjectList` consisting of children given by the model's `panels` property. However, it may come from elsewhere - for example, snippets can define their panels via the `SnippetViewSet` class.
+- The top-level panel object for the model is retrieved. Usually, this is done by looking up the model's `edit_handler` property and falling back on an `ObjectList` consisting of children given by the model's `panels` property. However, it may come from elsewhere - for example, snippets can define their panels via the `SnippetViewSet` class.
- If the `PanelsGroup`s permissions do not allow a user to see this panel, then nothing more will be done.
- This can be modified using the `permission` keyword argument, see examples of this usage in [](customising_the_tabbed_interface) and [](panels_permissions).
-- The view calls `bind_to_model` on the top-level panel, passing the model class, and this returns a clone of the panel with a `model` property. As part of this process the `on_model_bound` method is invoked on each child panel, to allow it to perform additional initialisation that requires access to the model (for example, this is where `FieldPanel` retrieves the model field definition).
+- The view calls `bind_to_model` on the top-level panel, passing the model class, and this returns a clone of the panel with a `model` property. As part of this process, the `on_model_bound` method is invoked on each child panel, to allow it to perform additional initialization that requires access to the model (for example, this is where `FieldPanel` retrieves the model field definition).
- The view then calls `get_form_class` on the top-level panel to retrieve a ModelForm subclass that can be used to edit the model. This proceeds as follows:
- Retrieve a base form class from the model's `base_form_class` property, falling back on `wagtail.admin.forms.WagtailAdminModelForm`
- Call `get_form_options` on each child panel - which returns a dictionary of properties including `fields` and `widgets` - and merge the results into a single dictionary
diff --git a/docs/extending/generic_views.md b/docs/extending/generic_views.md
index 66ca0b3bd7..0ab692b385 100644
--- a/docs/extending/generic_views.md
+++ b/docs/extending/generic_views.md
@@ -55,7 +55,7 @@ def register_viewset():
return person_viewset
```
-The viewset can be further customised by overriding other attributes and methods.
+The viewset can be further customized by overriding other attributes and methods.
### Icon
@@ -69,9 +69,9 @@ The {attr}`~.ViewSet.url_prefix` and {attr}`~.ViewSet.url_namespace` properties
### Menu item
-By default, registering a `ModelViewSet` will not register a main menu item. To add a menu item, set {attr}`~.ViewSet.add_to_admin_menu` to `True`. Alternatively, if you want to add the menu item inside the "Settings" menu, you can set {attr}`~.ViewSet.add_to_settings_menu` to `True`. Unless {attr}`~.ViewSet.menu_icon` is specified, the menu will use the same {attr}`~.ViewSet.icon` used for the views. The {attr}`~.ViewSet.menu_url` property can be overridden to customise the menu item's link, which defaults to the listing view for the model.
+By default, registering a `ModelViewSet` will not register a main menu item. To add a menu item, set {attr}`~.ViewSet.add_to_admin_menu` to `True`. Alternatively, if you want to add the menu item inside the "Settings" menu, you can set {attr}`~.ViewSet.add_to_settings_menu` to `True`. Unless {attr}`~.ViewSet.menu_icon` is specified, the menu will use the same {attr}`~.ViewSet.icon` used for the views. The {attr}`~.ViewSet.menu_url` property can be overridden to customize the menu item's link, which defaults to the listing view for the model.
-Unless specified, the menu item will be labelled after the model's verbose name. You can customise the menu item's label, name, and order by setting the {attr}`~.ViewSet.menu_label`, {attr}`~.ViewSet.menu_name`, and {attr}`~.ViewSet.menu_order` attributes respectively. If you would like to customise the `MenuItem` instance completely, you could override the {meth}`~.ViewSet.get_menu_item` method.
+Unless specified, the menu item will be labeled after the model's verbose name. You can customize the menu item's label, name, and order by setting the {attr}`~.ViewSet.menu_label`, {attr}`~.ViewSet.menu_name`, and {attr}`~.ViewSet.menu_order` attributes respectively. If you would like to customize the `MenuItem` instance completely, you could override the {meth}`~.ViewSet.get_menu_item` method.
You can group multiple `ModelViewSet`s' menu items inside a single top-level menu item using the {class}`~wagtail.admin.viewsets.model.ModelViewSetGroup` class. It is similar to `ViewSetGroup`, except it takes the {attr}`~django.db.models.Options.app_label` of the first viewset's model as the default {attr}`~.ViewSetGroup.menu_label`. Refer to [the examples for `ViewSetGroup`](using_base_viewsetgroup) for more details.
@@ -79,13 +79,13 @@ You can group multiple `ModelViewSet`s' menu items inside a single top-level men
### Listing view
-The {attr}`~ModelViewSet.list_display` attribute can be set to specify the columns shown on the listing view. To customise the number of items to be displayed per page, you can set the {attr}`~ModelViewSet.list_per_page` attribute. Additionally, the {attr}`~ModelViewSet.ordering` attribute can be used to override the `default_ordering` configured in the listing view.
+The {attr}`~ModelViewSet.list_display` attribute can be set to specify the columns shown on the listing view. To customize the number of items to be displayed per page, you can set the {attr}`~ModelViewSet.list_per_page` attribute. Additionally, the {attr}`~ModelViewSet.ordering` attribute can be used to override the `default_ordering` configured in the listing view.
You can add the ability to filter the listing view by defining a {attr}`~ModelViewSet.list_filter` attribute and specifying the list of fields to filter. Wagtail uses the django-filter package under the hood, and this attribute will be passed as django-filter's `FilterSet.Meta.fields` attribute. This means you can also pass a dictionary that maps the field name to a list of lookups.
-If you would like to make further customisations to the filtering mechanism, you can also use a custom `wagtail.admin.filters.WagtailFilterSet` subclass by overriding the {attr}`~ModelViewSet.filterset_class` attribute. The `list_filter` attribute is ignored if `filterset_class` is set. For more details, refer to [django-filter's documentation](https://django-filter.readthedocs.io/en/stable/guide/usage.html#the-filter).
+If you would like to make further customizations to the filtering mechanism, you can also use a custom `wagtail.admin.filters.WagtailFilterSet` subclass by overriding the {attr}`~ModelViewSet.filterset_class` attribute. The `list_filter` attribute is ignored if `filterset_class` is set. For more details, refer to [django-filter's documentation](https://django-filter.readthedocs.io/en/stable/guide/usage.html#the-filter).
-You can add the ability to export the listing view to a spreadsheet by setting the {attr}`~ModelViewSet.list_export` attribute to specify the columns to be exported. The {attr}`~ModelViewSet.export_filename` attribute can be used to customise the file name of the exported spreadsheet.
+You can add the ability to export the listing view to a spreadsheet by setting the {attr}`~ModelViewSet.list_export` attribute to specify the columns to be exported. The {attr}`~ModelViewSet.export_filename` attribute can be used to customize the file name of the exported spreadsheet.
(modelviewset_create_edit)=
@@ -93,7 +93,7 @@ You can add the ability to export the listing view to a spreadsheet by setting t
You can define a `panels` or `edit_handler` attribute on the `ModelViewSet` or your Django model to use Wagtail's panels mechanism. For more details, see [](forms_panels_overview).
-If neither `panels` nor `edit_handler` is defined and the {meth}`~ModelViewSet.get_edit_handler` method is not overridden, the form will be rendered as a plain Django form. You can customise the form by setting the {attr}`~ModelViewSet.form_fields` attribute to specify the fields to be shown on the form. Alternatively, you can set the {attr}`~ModelViewSet.exclude_form_fields` attribute to specify the fields to be excluded from the form. If panels are not used, you must define `form_fields` or `exclude_form_fields`, unless {meth}`~ModelViewSet.get_form_class` is overridden.
+If neither `panels` nor `edit_handler` is defined and the {meth}`~ModelViewSet.get_edit_handler` method is not overridden, the form will be rendered as a plain Django form. You can customize the form by setting the {attr}`~ModelViewSet.form_fields` attribute to specify the fields to be shown on the form. Alternatively, you can set the {attr}`~ModelViewSet.exclude_form_fields` attribute to specify the fields to be excluded from the form. If panels are not used, you must define `form_fields` or `exclude_form_fields`, unless {meth}`~ModelViewSet.get_form_class` is overridden.
(modelviewset_copy)=
@@ -115,7 +115,7 @@ The inspect view is disabled by default, as it's not often useful for most model
When inspect view is enabled, an 'Inspect' button will automatically appear for each row on the listing view, which takes you to a view that shows a list of field values for that particular instance.
-By default, all 'concrete' fields (where the field value is stored as a column in the database table for your model) will be shown. You can customise what values are displayed by specifying the {attr}`~ModelViewSet.inspect_view_fields` or the {attr}`~ModelViewSet.inspect_view_fields_exclude` attributes on your `ModelViewSet` class.
+By default, all 'concrete' fields (where the field value is stored as a column in the database table for your model) will be shown. You can customize what values are displayed by specifying the {attr}`~ModelViewSet.inspect_view_fields` or the {attr}`~ModelViewSet.inspect_view_fields_exclude` attributes on your `ModelViewSet` class.
(modelviewset_templates)=
@@ -129,21 +129,21 @@ If {attr}`~ModelViewSet.template_prefix` is set, Wagtail will look for the views
To override the template used by the `IndexView` for example, you could create a new `index.html` template and put it in one of those locations. For example, given `custom/campaign` as the `template_prefix` and a `Shirt` model in a `merch` app, you could add your custom template as `templates/custom/campaign/merch/shirt/index.html`.
-For some common views, Wagtail also allows you to override the template used by overriding the `{view_name}_template_name` property on the viewset. The following is a list of customisation points for the views:
+For some common views, Wagtail also allows you to override the template used by overriding the `{view_name}_template_name` property on the viewset. The following is a list of customization points for the views:
- `IndexView`: `index.html` or {attr}`~ModelViewSet.index_template_name`
- - For the results fragment used in AJAX responses (e.g. when searching), customise `index_results.html` or {attr}`~ModelViewSet.index_results_template_name`
+ - For the results fragment used in AJAX responses (e.g. when searching), customize `index_results.html` or {attr}`~ModelViewSet.index_results_template_name`
- `CreateView`: `create.html` or {attr}`~ModelViewSet.create_template_name`
- `EditView`: `edit.html` or {attr}`~ModelViewSet.edit_template_name`
- `DeleteView`: `delete.html` or {attr}`~ModelViewSet.delete_template_name`
- `HistoryView`: `history.html` or {attr}`~ModelViewSet.history_template_name`
- `InspectView`: `inspect.html` or {attr}`~ModelViewSet.inspect_template_name`
-### Other customisations
+### Other customizations
By default, the model registered with a `ModelViewSet` will also be registered to the [reference index](managing_the_reference_index). You can turn off this behavior by setting {attr}`~ModelViewSet.add_to_reference_index` to `False`.
-Various additional attributes are available to customise the viewset - see the {class}`ModelViewSet` documentation.
+Various additional attributes are available to customize the viewset - see the {class}`ModelViewSet` documentation.
(chooserviewset)=
@@ -207,7 +207,7 @@ PersonChooserBlock = person_chooser_viewset.get_block_class(
Chooser viewsets provide a mechanism for limiting the options displayed in the chooser according to another input field on the calling page. For example, suppose the person model has a country field - we can then set up a page model with a country dropdown and a person chooser, where an editor first selects a country from the dropdown and then opens the person chooser to be presented with a list of people from that country.
-To set this up, define a `url_filter_parameters` attribute on the ChooserViewSet. This specifies a list of URL parameters that will be recognised for filtering the results - whenever these are passed in the URL, a `filter` clause on the correspondingly-named field will be applied to the queryset. These parameters should also be listed in the `preserve_url_parameters` attribute, so that they are preserved in the URL when navigating through the chooser (such as when following pagination links). The following definition will allow the person chooser to be filtered by country:
+To set this up, define a `url_filter_parameters` attribute on the ChooserViewSet. This specifies a list of URL parameters that will be recognized for filtering the results - whenever these are passed in the URL, a `filter` clause on the correspondingly-named field will be applied to the queryset. These parameters should also be listed in the `preserve_url_parameters` attribute, so that they are preserved in the URL when navigating through the chooser (such as when following pagination links). The following definition will allow the person chooser to be filtered by country:
```python
class PersonChooserViewSet(ChooserViewSet):
diff --git a/docs/extending/index.md b/docs/extending/index.md
index ad7aaec1ce..a394a92520 100644
--- a/docs/extending/index.md
+++ b/docs/extending/index.md
@@ -16,7 +16,7 @@ adding_reports
custom_tasks
audit_log
custom_account_settings
-customising_group_views
+customizing_group_views
custom_image_filters
extending_client_side
rich_text_internals
diff --git a/docs/extending/rich_text_internals.md b/docs/extending/rich_text_internals.md
index 67b51e8591..c26e5ba4ba 100644
--- a/docs/extending/rich_text_internals.md
+++ b/docs/extending/rich_text_internals.md
@@ -52,7 +52,7 @@ Again, the `embedtype` attribute identifies a rule that shall be used to rewrite
A number of additional constraints apply to `` and `` tags, to allow the conversion to be performed efficiently via string replacement:
- The tag name and attributes must be lower-case
-- Attribute values must be quoted with double-quotes
+- Attribute values must be quoted with double quotes
- `embed` elements must use XML self-closing tag syntax (those that end in `/>` instead of a closing `` tag)
- The only HTML entities permitted in attribute values are `<`, `>`, `&` and `"`
@@ -205,9 +205,9 @@ It is possible to create your own rich text editor implementation. At minimum, a
Typically, a rich text widget also receives a `features` list, passed from either `RichTextField` / `RichTextBlock` or the `features` option in `WAGTAILADMIN_RICH_TEXT_EDITORS`, which defines the features available in that instance of the editor (see [rich text features](rich_text_features)). To opt in to supporting features, set the attribute `accepts_features = True` on your widget class; the widget constructor will then receive the feature list as a keyword argument `features`.
-There is a standard set of recognised feature identifiers as listed under [rich text features](rich_text_features), but this is not a definitive list; feature identifiers are only defined by convention, and it is up to each editor widget to determine which features it will recognise, and adapt its behaviour accordingly. Individual editor widgets might implement fewer or more features than the default set, either as built-in functionality or through a plugin mechanism if the editor widget has one.
+There is a standard set of recognized feature identifiers as listed under [rich text features](rich_text_features), but this is not a definitive list; feature identifiers are only defined by convention, and it is up to each editor widget to determine which features it will recognize, and adapt its behavior accordingly. Individual editor widgets might implement fewer or more features than the default set, either as built-in functionality or through a plugin mechanism if the editor widget has one.
-For example, a third-party Wagtail extension might introduce `table` as a new rich text feature, and provide implementations for the Draftail editor (which provides a plugin mechanism). In this case, the third-party extension will not be aware of your custom editor widget, and so the widget will not know how to handle the `table` feature identifier. Editor widgets should silently ignore any feature identifiers that they do not recognise.
+For example, a third-party Wagtail extension might introduce `table` as a new rich text feature, and provide implementations for the Draftail editor (which provides a plugin mechanism). In this case, the third-party extension will not be aware of your custom editor widget, and so the widget will not know how to handle the `table` feature identifier. Editor widgets should silently ignore any feature identifiers that they do not recognize.
The `default_features` attribute of the feature registry is a list of feature identifiers to be used whenever an explicit feature list has not been given in `RichTextField` / `RichTextBlock` or `WAGTAILADMIN_RICH_TEXT_EDITORS`. This list can be modified within the `register_rich_text_features` hook to make new features enabled by default, and retrieved by calling `get_default_features()`.
@@ -241,7 +241,7 @@ class CustomRichTextArea(widgets.TextArea):
```{eval-rst}
.. method:: FeatureRegistry.register_editor_plugin(editor_name, feature_name, plugin_definition)
-Rich text editors often provide a plugin mechanism to allow extending the editor with new functionality. The ``register_editor_plugin`` method provides a standardised way for ``register_rich_text_features`` hooks to define plugins to be pulled into the editor when a given rich text feature is enabled.
+Rich text editors often provide a plugin mechanism to allow extending the editor with new functionality. The ``register_editor_plugin`` method provides a standardized way for ``register_rich_text_features`` hooks to define plugins to be pulled into the editor when a given rich text feature is enabled.
``register_editor_plugin`` is passed an editor name (a string uniquely identifying the editor widget - Wagtail uses the identifier ``draftail`` for the built-in editor), a feature identifier, and a plugin definition object. This object is specific to the editor widget and can be any arbitrary value, but will typically include a :doc:`Django form media ` definition referencing the plugin's JavaScript code - which will then be merged into the editor widget's own media definition - along with any relevant configuration options to be passed when instantiating the editor.
@@ -262,7 +262,7 @@ Wagtail provides two utility classes, `wagtail.admin.rich_text.converters.conten
Both classes accept a `features` list as an argument to their constructor and implement two methods, `from_database_format(data)` which converts Wagtail rich text data to the editor's format, and `to_database_format(data)` which converts editor data to Wagtail rich text format.
-As with editor plugins, the behaviour of a converter class can vary according to the feature list passed to it. In particular, it can apply whitelisting rules to ensure that the output only contains HTML elements corresponding to the currently active feature set. The feature registry provides a `register_converter_rule` method to allow `register_rich_text_features` hooks to define conversion rules that will be activated when a given feature is enabled.
+As with editor plugins, the behavior of a converter class can vary according to the feature list passed to it. In particular, it can apply whitelisting rules to ensure that the output only contains HTML elements corresponding to the currently active feature set. The feature registry provides a `register_converter_rule` method to allow `register_rich_text_features` hooks to define conversion rules that will be activated when a given feature is enabled.
```{eval-rst}
.. method:: FeatureRegistry.register_converter_rule(converter_name, feature_name, rule_definition)
diff --git a/docs/reference/contrib/forms/customisation.md b/docs/reference/contrib/forms/customization.md
similarity index 94%
rename from docs/reference/contrib/forms/customisation.md
rename to docs/reference/contrib/forms/customization.md
index b4c28ab358..95a5104023 100644
--- a/docs/reference/contrib/forms/customisation.md
+++ b/docs/reference/contrib/forms/customization.md
@@ -1,4 +1,6 @@
-# Form builder customisation
+(form_builder_customization)=
+
+# Form builder customization
For a basic usage example see [form builder usage](form_builder_usage).
@@ -268,10 +270,10 @@ Your template should look like this:
{% else %}
-