diff --git a/wagtail/admin/widgets/button.py b/wagtail/admin/widgets/button.py index db29674aa5..73fa3ea3cc 100644 --- a/wagtail/admin/widgets/button.py +++ b/wagtail/admin/widgets/button.py @@ -73,11 +73,12 @@ class BaseDropdownMenuButton(Button): class ButtonWithDropdownFromHook(BaseDropdownMenuButton): template_name = 'wagtailadmin/pages/listing/_button_with_dropdown.html' - def __init__(self, label, hook_name, page, page_perms, is_parent, **kwargs): + def __init__(self, label, hook_name, page, page_perms, is_parent, next_url=None, **kwargs): self.hook_name = hook_name self.page = page self.page_perms = page_perms self.is_parent = is_parent + self.next_url = next_url super().__init__(label, **kwargs) diff --git a/wagtail/admin/widgets/datetime.py b/wagtail/admin/widgets/datetime.py index 8888b0ab25..1cce0638b2 100644 --- a/wagtail/admin/widgets/datetime.py +++ b/wagtail/admin/widgets/datetime.py @@ -11,13 +11,14 @@ from wagtail.admin.staticfiles import versioned_static DEFAULT_DATE_FORMAT = '%Y-%m-%d' DEFAULT_DATETIME_FORMAT = '%Y-%m-%d %H:%M' +DEFAULT_TIME_FORMAT = '%H:%M' class AdminDateInput(widgets.DateInput): template_name = 'wagtailadmin/widgets/date_input.html' def __init__(self, attrs=None, format=None): - default_attrs = {'autocomplete': 'new-date'} + default_attrs = {'autocomplete': 'off'} fmt = format if attrs: default_attrs.update(attrs) @@ -47,11 +48,26 @@ class AdminDateInput(widgets.DateInput): class AdminTimeInput(widgets.TimeInput): template_name = 'wagtailadmin/widgets/time_input.html' - def __init__(self, attrs=None, format='%H:%M'): - default_attrs = {'autocomplete': 'new-time'} + def __init__(self, attrs=None, format=None): + default_attrs = {'autocomplete': 'off'} if attrs: default_attrs.update(attrs) - super().__init__(attrs=default_attrs, format=format) + fmt = format + if fmt is None: + fmt = getattr(settings, 'WAGTAIL_TIME_FORMAT', DEFAULT_TIME_FORMAT) + self.js_format = to_datetimepicker_format(fmt) + super().__init__(attrs=default_attrs, format=fmt) + + def get_context(self, name, value, attrs): + context = super().get_context(name, value, attrs) + + config = { + 'format': self.js_format, + 'formatTime': self.js_format + } + context['widget']['config_json'] = json.dumps(config) + + return context @property def media(self): @@ -63,14 +79,18 @@ class AdminTimeInput(widgets.TimeInput): class AdminDateTimeInput(widgets.DateTimeInput): template_name = 'wagtailadmin/widgets/datetime_input.html' - def __init__(self, attrs=None, format=None): - default_attrs = {'autocomplete': 'new-date-time'} + def __init__(self, attrs=None, format=None, time_format=None): + default_attrs = {'autocomplete': 'off'} fmt = format if attrs: default_attrs.update(attrs) if fmt is None: fmt = getattr(settings, 'WAGTAIL_DATETIME_FORMAT', DEFAULT_DATETIME_FORMAT) + time_fmt = time_format + if time_fmt is None: + time_fmt = getattr(settings, 'WAGTAIL_TIME_FORMAT', DEFAULT_TIME_FORMAT) self.js_format = to_datetimepicker_format(fmt) + self.js_time_format = to_datetimepicker_format(time_fmt) super().__init__(attrs=default_attrs, format=fmt) def get_context(self, name, value, attrs): @@ -79,6 +99,7 @@ class AdminDateTimeInput(widgets.DateTimeInput): config = { 'dayOfWeekStart': get_format('FIRST_DAY_OF_WEEK'), 'format': self.js_format, + 'formatTime': self.js_time_format } context['widget']['config_json'] = json.dumps(config)