backoffice: add button to check all permission columns (#66067) #757
|
@ -2649,16 +2649,22 @@ class TableWidget(CompositeWidget):
|
|||
r += htmltext('<th scope="col"><span>%s</span></th>') % column
|
||||
r += htmltext('</tr></thead><tbody>')
|
||||
for i, row in enumerate(self.rows):
|
||||
r += htmltext('<tr><th scope="row">%s</th>') % row
|
||||
for j, column in enumerate(self.columns):
|
||||
widget = self.get_widget('c-%s-%s' % (i, j))
|
||||
r += htmltext('<td>')
|
||||
r += widget.render_content()
|
||||
r += htmltext('</td>')
|
||||
r += htmltext('<tr>')
|
||||
r += self.render_row_content(i, row)
|
||||
r += htmltext('</tr>')
|
||||
r += htmltext('</tbody></table>')
|
||||
return r.getvalue()
|
||||
|
||||
def render_row_content(self, i, row):
|
||||
r = TemplateIO(html=True)
|
||||
r += htmltext('<th scope="row">%s</th>') % row
|
||||
for j in range(len(self.columns)):
|
||||
widget = self.get_widget('c-%s-%s' % (i, j))
|
||||
r += htmltext('<td>')
|
||||
r += widget.render_content()
|
||||
r += htmltext('</td>')
|
||||
return r.getvalue()
|
||||
|
||||
def parse(self, request=None):
|
||||
CompositeWidget.parse(self, request=request)
|
||||
if request is None:
|
||||
|
@ -2712,6 +2718,11 @@ class SingleSelectTableWidget(TableWidget):
|
|||
|
||||
|
||||
class CheckboxesTableWidget(TableWidget):
|
||||
def render_row_content(self, i, row):
|
||||
t = super().render_row_content(i, row)
|
||||
t += htmltext('<td><button>%s</button></td>') % _('check all')
|
||||
return t
|
||||
|
||||
def add_widget(self, kwargs, i, j):
|
||||
widget_kwargs = {'options': kwargs.get('options')}
|
||||
if kwargs.get('readonly'):
|
||||
|
|
|
@ -3040,3 +3040,17 @@ fieldset.foldable {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.CheckboxesTableWidget {
|
||||
button {
|
||||
visibility: hidden;
|
||||
}
|
||||
tr:hover {
|
||||
th, td {
|
||||
background: #fff !important;
|
||||
}
|
||||
button {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -366,6 +366,16 @@ $(function() {
|
|||
});
|
||||
$('[type=radio][name=display_mode]:checked').trigger('change');
|
||||
|
||||
$('.admin-permissions button').on('click', function() {
|
||||
var new_value = false;
|
||||
// check all checkboxes unless they're all checked already
|
||||
for (const checkbox of $(this).parents('tr').find('input[type="checkbox"]')) {
|
||||
new_value |= ! $(checkbox).prop('checked');
|
||||
}
|
||||
$(this).parents('tr').find('input[type="checkbox"]').prop('checked', new_value);
|
||||
return false;
|
||||
});
|
||||
|
||||
if (document.getElementById('validation-error-messages')) {
|
||||
const error_messages = JSON.parse(document.getElementById('validation-error-messages').textContent);
|
||||
const error_message_widget = document.getElementById('form_validation__error_message');
|
||||
|
|
Loading…
Reference in New Issue