0
0
mirror of https://github.com/wagtail/wagtail.git synced 2024-12-01 11:41:20 +01:00
Commit Graph

14470 Commits

Author SHA1 Message Date
LB Johnston
d2f47e7083 Icon template tag - add deprecation for class_name
- If using `class_name` we will now trigger a warning that this will be removed in Wagtail 5.0
- Update release notes accordingly
2023-01-19 12:23:16 +00:00
Thibaud Colas
e33cdbf8db
Set up CSS LTR-RTL direction variable and fix incorrect transforms (#9914). Fix #9800
- Fix Draftail block toolbar trigger overlay in RTL mode
- Fix switch component rendering in RTL mode
- Fix panel header positioning in RTL mode
- Remove unused 404 styles
- Fix comments positioning in RTL mode
- Fix sidebar sub-menus transition direction
- Fix form side panels in RTL mode
- Fix minimap positioning in RTL mode
- Fix Draftail tooltips positioning in RTL mode
- Fix page explorer transition direction in RTL mode
- Set up CSS LTR-RTL direction variable
2023-01-19 12:06:43 +00:00
Thibaud Colas
afc6004441 Release notes for #9868 2023-01-19 11:19:25 +00:00
Thibaud Colas
1b7f92351f Improve page editor side panel closing animation 2023-01-19 11:19:25 +00:00
Thibaud Colas
a50e6b1f40 Reduce MultiFieldPanel heading sizes in account settings form 2023-01-19 11:19:25 +00:00
Jake Howard
c8c1870c97 Prevent memory exhaustion when purging a large number of revisions
Optimise determining whether a revision is the latest

This no longer attempts to load the entire revision into memory to compare. Instead, we just check if any revisions created after this one exist (that aren't this one).
2023-01-19 21:06:58 +10:00
4the4ryushin
529d2feb49 Add docs example for how to configure API renderer_classes
- Update docs/advanced_topics/api/v2/configuration.md
- Fixes #6066
- Fix up spelling of customise (UK English not US)
2023-01-19 20:43:45 +10:00
bbeniamin
96b94d01d9 Fix parsing of queries with multiple filters that contain quotes 2023-01-19 20:41:48 +10:00
4the4ryushin
cc0f2d7c4c Migrate avatar template to an include tag
Includes style guide & storybook implementation
Fixes #8655
2023-01-19 20:32:05 +10:00
Dan Braghis
e93f322e94 Fix handling of temporary upload files 2023-01-18 19:33:32 +00:00
Dan Braghis
2df8dc73ba Add failing test 2023-01-18 19:33:32 +00:00
Sandil Ranasinghe
3ed84b36da make streamfield migration names from operations
- `operation_name_fragment` property added to operations
- `migration_name_fragment` property added to MigrateStreamData
- added tests, docs updated
- BaseBlockOperation inherits from `abc.ABC`
2023-01-18 19:29:56 +00:00
Albina
55d04366f7
Axe accessibility checker integration with floating dialog component (#9899)
Co-authored-by: Thibaud Colas <thibaudcolas@gmail.com>
2023-01-18 15:59:44 +00:00
Matt Westcott
d7adcec584 Release note for #9886 2023-01-18 14:31:08 +00:00
Matt Westcott
4468b55d2d Enforce max_num on MultipleChooserPanel
Enable / disable the open-modal button on reaching the limit, as we do for InlinePanel's standard add button; and when handling the response from the modal, stop adding new items when max_num is reached
2023-01-18 14:31:08 +00:00
Matt Westcott
2574204b27 Make title into a label rather than a link when in multiple choice mode 2023-01-18 14:31:08 +00:00
Matt Westcott
32f8c78b58 Enable / disable submit button once a selection is made 2023-01-18 14:31:08 +00:00
Matt Westcott
f4125d04e0 Import ChooserFactory classes in telepath endpoint files, rather than relying on them existing in the global scope 2023-01-18 14:31:08 +00:00
Matt Westcott
89179da1fd Eliminate jquery from MultipleChooserPanel 2023-01-18 14:31:08 +00:00
Matt Westcott
89a3f5c520 Reshuffle form wrappers on chooser modal templates to placate curlylint 2023-01-18 14:31:08 +00:00
Matt Westcott
515e76ab7b Add reference docs for MultipleChooserPanel 2023-01-18 14:31:08 +00:00
Matt Westcott
af168d62f8 Implement multiple chooser UI on page chooser modal 2023-01-18 14:31:08 +00:00
Matt Westcott
2c8c381ca7 Implement multiple choice UI for image chooser 2023-01-18 14:31:08 +00:00
Matt Westcott
45fe5c1b95 Use correct dict key for SnippetChosenMultipleView 2023-01-18 14:31:08 +00:00
Matt Westcott
78b88a605a Populate MultipleChooserPanel from modal results 2023-01-18 14:31:08 +00:00
Matt Westcott
67ff655111 Add mechanism for retrieving an existing widget instance from ChooserFactory 2023-01-18 14:31:08 +00:00
Matt Westcott
d534567f81 Add checkboxes for selecting multiple items 2023-01-18 14:31:08 +00:00
Matt Westcott
6bc3b0b258 Refactor image chooser modal to use preserve_url_parameters and preserve the 'multiple' parameter as well as 'select_format' 2023-01-18 14:31:08 +00:00
Matt Westcott
c5513d098a Implement mechanism to pass the 'multiple' URL parameter (and any other specified ones) on links / form actions within generic chooser modal 2023-01-18 14:31:08 +00:00
Matt Westcott
3872de44d7 Add chooser view endpoints for returning multiple results
Extend the existing 'chosen' view so that it returns a single-item list when the URL parameter `multiple` is passed, and add a 'chosen_multiple' view that accepts multiple `id` URL parameters and returns the corresponding results as a list.
2023-01-18 14:31:08 +00:00
Matt Westcott
e94e268ecb Recognise 'multiple' option in ChooserModal as a URL parameter to pass to the modal view
the modal view doesn't do anything with it yet
2023-01-18 14:31:08 +00:00
Matt Westcott
c66b793957 Add JS initialiser / open-modal behaviour for MultipleChooserPanel 2023-01-18 14:31:08 +00:00
Matt Westcott
a7318bf70b Insert chooser widget telepath definition onto template 2023-01-18 14:31:08 +00:00
Matt Westcott
49c2c70a22 Add custom template for multiple_chooser_panel
Change the ADD button's ID suffix to OPEN_MODAL (to bypass the standard panel insertion) and pass chooserFieldName to the JS constructor (currently ignored).
2023-01-18 14:31:08 +00:00
Matt Westcott
d56c25704b Add openModal method to ChooserFactory 2023-01-18 14:31:08 +00:00
Matt Westcott
87cb57362f Add MultipleChooserPanel as a subclass of InlinePanel
Takes a chooser_field_name keyword argument, but has no other functionality
2023-01-18 14:31:08 +00:00
Matt Westcott
d70bf142f3 Pass modalUrl in opts dict as standard, and use it in preference to the data-chooser-url attribute on the HTML element
We keep data-chooser-url in the HTML output, and use it as a fallback in the JS - for backwards compatibility with existing BaseChooser subclasses that don't pass an options dict (such as AdminTaskChooser, which overrides render_js_init)
2023-01-18 14:31:08 +00:00
Matt Westcott
8fe23a4f61 Standardise on camel case for opts dictionary keys
At this point we've been turning the 'opts' dict from a private API specific to PageChooser, that more or less transparently passes options on to the modal as URL query parameters, into a convention shared across all chooser widgets where the question of "will this option become a URL parameter" is an internal implementation detail. Since this is notionally a bundle of JS variables rather than a bundle of URL params, we should take this opportunity to consistently adopt camel case, before this pattern becomes widespread in third-party code and ends up as a mishmash of camel-case and snake-case.
2023-01-18 14:31:08 +00:00
Matt Westcott
bf9b62f1ec Define a base_js_init_options property on BaseChooser
This defines the common options that should be passed in the opts dict in the constructor for FooChooser and FooChooserFactory.
2023-01-18 14:31:08 +00:00
Matt Westcott
b70ae68566 Refactor BaseChooser to standardise on (id, opts) as arguments to the JS constructor 2023-01-18 14:31:08 +00:00
Matt Westcott
3dc3d37bbf Move FooChooserFactory definitions into the widget JS endpoints rather than the telepath ones
This makes it cleaner for FooChooser and FooChooserFactory to share definitions (e.g. modal handler classes)
2023-01-18 14:31:08 +00:00
Matt Westcott
ed8d999887 Use the base ChooserFactory class for PageChooserFactory 2023-01-18 14:31:08 +00:00
Matt Westcott
536d1096c2 Change PageChooser widget constructor to accept parent_id as part of the opts dict
The old signature is still accepted for backwards compatibility.

This then matches the signature of the other chooser widget JS classes, allowing PageChooserFactory to extend the generic ChooserFactory.
2023-01-18 14:31:08 +00:00
Matt Westcott
dcba3a9194 Consistently pass an opts dict to the constructors of Chooser and ChooserFactory 2023-01-18 14:31:07 +00:00
Matt Westcott
f238d659ee Move PageChooserFactory to its own JS endpoint
This will allow us to refactor it, including adding class-level references to window.PageChooser and window.PageChooserModal as necessary, without dealing with the possibility of telepath/widgets.js being imported before the includes that define those.
2023-01-18 14:31:07 +00:00
Matt Westcott
f8c8bf06ba Explicitly list widget JS in FooChooserAdapter media
This is necessary (according to the logic for adding Django form media objects together) whenever the JS adapter definition depends on anything defined in the widget JS - e.g. if foo-chooser.js defines `window.FooChooser`, and foo-chooser-telepath.js references that in the definition of FooChooserAdapter, then the only way to guarantee the correct ordering is with an explicit `['foo-chooser.js', 'foo-chooser-telepath.js']` media definition - adding two media objects does not guarantee this ordering.
2023-01-18 14:31:07 +00:00
Matt Westcott
7a1ae9f16b Eliminate jQuery from PageChooserFactory.render
This matches the implementation in components/ChooserWidget. This change breaks the tests that pass a jQuery collection object rather than a DOM element, but that was never valid in the first place as per https://docs.wagtail.org/en/stable/reference/streamfield/widget_api.html - fix the tests accordingly.
2023-01-18 14:31:07 +00:00
Matt Westcott
947a7883f9 Add a higher-level API for chooser modals
Previously, anything invoking the chooser modal needed to make its own call to ModalWorkflow, which meant it needed to import the corresponding 'onloadHandlers' dict, know the appropriate chosen response identifier to listen to, and know how to modify the chooser URL to pass parameters (if applicable). This would mean a lot of duplicated logic if there were multiple places where the modal is invoked.

Here we introduce a ChooserModal base class which encapsulates those details - a caller just needs to instantiate it with the base URL, and call `open` on it to open the modal (passing an options dict and a response callback).
2023-01-18 14:31:07 +00:00
Matt Westcott
e3d42c546b Minor grammar fixes to 4.2 release notes 2023-01-18 14:18:14 +00:00
Matt Westcott
6e78caa84f Release note for #9872 2023-01-18 14:15:57 +00:00