workflows: use "everybody" as empty label for message/comment actions (#55410)
This commit is contained in:
parent
0c3f1f55fe
commit
cb0d1b8092
|
@ -1763,6 +1763,32 @@ class WidgetList(quixote.form.widget.WidgetList):
|
|||
return r.getvalue()
|
||||
|
||||
|
||||
class WidgetListOfRoles(WidgetList):
|
||||
def __init__(self, name, value=None, roles=None, **kwargs):
|
||||
self.first_element_empty_label = kwargs.pop('first_element_empty_label', '---')
|
||||
super().__init__(
|
||||
name,
|
||||
value=value,
|
||||
element_type=SingleSelectWidget,
|
||||
element_kwargs={
|
||||
'render_br': False,
|
||||
'options': [(None, '---', None)] + roles or [],
|
||||
},
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
def get_widgets(self):
|
||||
seen = False
|
||||
for widget in super().get_widgets():
|
||||
# change first option (empty value) of first element to use a specific label
|
||||
if not seen and isinstance(widget, SingleSelectWidget):
|
||||
widget.full_options = widget.full_options[:]
|
||||
widget.full_options[0] = list(widget.full_options[0])
|
||||
widget.full_options[0][1] = self.first_element_empty_label
|
||||
seen = True
|
||||
yield widget
|
||||
|
||||
|
||||
class WidgetDict(quixote.form.widget.WidgetDict):
|
||||
# Fix the title and hint setting
|
||||
# FIXME: to be fixed in Quixote upstream : title and hint parameters should be removed
|
||||
|
|
|
@ -50,6 +50,12 @@ function prepare_widget_list_elements() {
|
|||
}
|
||||
}
|
||||
);
|
||||
if (name_attr == 'to$add_element') {
|
||||
/* replace 1st list element by an empty label, as it's used
|
||||
* to remove an actual selection */
|
||||
$(new_row).find('option[value="None"]').first().text('----');
|
||||
}
|
||||
|
||||
/* add new row after the last row */
|
||||
$(row).after($(new_row));
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ from wcs.workflows import (
|
|||
)
|
||||
|
||||
from ..qommon import _, ezt, get_logger
|
||||
from ..qommon.form import SingleSelectWidget, TextWidget, WidgetList
|
||||
from ..qommon.form import TextWidget, WidgetListOfRoles
|
||||
from ..qommon.template import TemplateError
|
||||
|
||||
|
||||
|
@ -95,16 +95,13 @@ class RegisterCommenterWorkflowStatusItem(WorkflowStatusItem):
|
|||
)
|
||||
if 'to' in parameters:
|
||||
form.add(
|
||||
WidgetList,
|
||||
WidgetListOfRoles,
|
||||
'%sto' % prefix,
|
||||
title=_('To'),
|
||||
element_type=SingleSelectWidget,
|
||||
value=self.to or [],
|
||||
add_element_label=self.get_add_role_label(),
|
||||
element_kwargs={
|
||||
'render_br': False,
|
||||
'options': [(None, '---', None)] + self.get_list_of_roles(include_logged_in_users=False),
|
||||
},
|
||||
first_element_empty_label=_('Everybody'),
|
||||
roles=self.get_list_of_roles(include_logged_in_users=False),
|
||||
)
|
||||
|
||||
def get_parameters(self):
|
||||
|
|
|
@ -49,6 +49,7 @@ from .qommon.form import (
|
|||
ValidatedStringWidget,
|
||||
VarnameWidget,
|
||||
WidgetList,
|
||||
WidgetListOfRoles,
|
||||
WysiwygTextWidget,
|
||||
)
|
||||
from .qommon.humantime import seconds2humanduration
|
||||
|
@ -3341,16 +3342,13 @@ class DisplayMessageWorkflowStatusItem(WorkflowStatusItem):
|
|||
)
|
||||
if 'to' in parameters:
|
||||
form.add(
|
||||
WidgetList,
|
||||
WidgetListOfRoles,
|
||||
'%sto' % prefix,
|
||||
title=_('To'),
|
||||
element_type=SingleSelectWidget,
|
||||
value=self.to or [],
|
||||
add_element_label=self.get_add_role_label(),
|
||||
element_kwargs={
|
||||
'render_br': False,
|
||||
'options': [(None, '---', None)] + self.get_list_of_roles(include_logged_in_users=False),
|
||||
},
|
||||
first_element_empty_label=_('Everybody'),
|
||||
roles=self.get_list_of_roles(include_logged_in_users=False),
|
||||
)
|
||||
|
||||
def get_parameters(self):
|
||||
|
|
Loading…
Reference in New Issue