Skip to content

Commit

Permalink
Merge f19109b into e334760
Browse files Browse the repository at this point in the history
  • Loading branch information
gbastien committed Dec 16, 2020
2 parents e334760 + f19109b commit cc1f01d
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 13 deletions.
8 changes: 6 additions & 2 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@ Changelog
2.13 (unreleased)
-----------------

- Nothing changed yet.

- Added possibility to define a `header_help` message that will be displayed
when hovering header title.
[gbastien]
- Added `<label>` tag around input for the `CheckBoxColumn` so it can be syled
to ease checkbox selection on click.
[gbastien]

2.12 (2020-10-02)
-----------------
Expand Down
12 changes: 11 additions & 1 deletion src/collective/eeafaceted/z3ctable/columns.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ class BaseColumn(column.GetAttrColumn):
header_image = None
# we can inject some javascript in the header
header_js = None
# header help message
header_help = None
# enable caching, needs to be implemented by Column
use_caching = True

Expand Down Expand Up @@ -107,6 +109,14 @@ def render(self):
# inject some javascript in the header?
if self.column.header_js:
header = self.column.header_js + header
# include help message
if self.column.header_help:
header_help = translate(
self.column.header_help,
domain='collective.eeafaceted.z3ctable',
context=self.request)
header = u'<acronym title="{0}">{1}</acronym>'.format(
header_help, header)
# a column can specifically declare that it is not sortable
# by setting sort_index to -1
if not self.column.sort_index == -1:
Expand Down Expand Up @@ -493,7 +503,7 @@ def renderHeadCell(self):

def renderCell(self, item):
""" """
return u'<input type="checkbox" name="%s" value="%s" %s/>' \
return u'<label class="select-item-label"><input type="checkbox" name="%s" value="%s" %s/></label>' \
% (self.name, self.getValue(item), self.checked_by_default and "checked " or "")

def getCSSClasses(self, item):
Expand Down
34 changes: 24 additions & 10 deletions src/collective/eeafaceted/z3ctable/tests/test_columns.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,12 @@ def test_HeaderColumn(self):
column.header_image = 'image.png'
self.assertEqual(column.renderHeadCell(),
u'<img src="http://nohost/plone/image.png" title="Title" />')
# define a help message
column.header_help = u'My help message'
self.assertEqual(column.renderHeadCell(),
u'<acronym title="My help message">'
u'<img src="http://nohost/plone/image.png" title="Title" />'
u'</acronym>')

def test_AwakeObjectGetAttrColumn(self):
"""This will wake the given catalog brain and getattr the attrName on it.
Expand Down Expand Up @@ -419,30 +425,38 @@ def test_CheckBoxColumn(self):
brain = self.portal.portal_catalog(UID=self.eea_folder.UID())[0]
self.assertEqual(column.renderHeadCell(),
u'<input type="checkbox" id="select_unselect_items" '
'onClick="toggleCheckboxes(\'select_item\')" '
'title="Select/unselect all" checked />')
u'onClick="toggleCheckboxes(\'select_item\')" '
u'title="Select/unselect all" checked />')
self.assertEqual(column.renderCell(brain),
u'<input type="checkbox" name="select_item" value="%s" checked />' % brain.UID)
u'<label class="select-item-label">'
u'<input type="checkbox" name="select_item" value="%s" checked />'
u'</label>' % brain.UID)
# column could be unchecked by default
column.checked_by_default = False
self.assertEqual(column.renderHeadCell(),
u'<input type="checkbox" id="select_unselect_items" '
'onClick="toggleCheckboxes(\'select_item\')" '
'title="Select/unselect all" />')
u'onClick="toggleCheckboxes(\'select_item\')" '
u'title="Select/unselect all" />')
self.assertEqual(column.renderCell(brain),
u'<input type="checkbox" name="select_item" value="%s" />' % brain.UID)
u'<label class="select-item-label">'
u'<input type="checkbox" name="select_item" value="%s" />'
u'</label>' % brain.UID)
# name can be changed
column.name = u'select_element'
self.assertEqual(column.renderHeadCell(),
u'<input type="checkbox" id="select_unselect_items" '
'onClick="toggleCheckboxes(\'select_element\')" '
'title="Select/unselect all" />')
u'onClick="toggleCheckboxes(\'select_element\')" '
u'title="Select/unselect all" />')
self.assertEqual(column.renderCell(brain),
u'<input type="checkbox" name="select_element" value="%s" />' % brain.UID)
u'<label class="select-item-label">'
u'<input type="checkbox" name="select_element" value="%s" />'
u'</label>' % brain.UID)
# attrName can be changed
column.attrName = 'getId'
self.assertEqual(column.renderCell(brain),
u'<input type="checkbox" name="select_element" value="eea_folder" />')
u'<label class="select-item-label">'
u'<input type="checkbox" name="select_element" value="eea_folder" />'
u'</label>')
# a custom CSS class is generated
self.assertEqual(column.getCSSClasses(brain), {'td': 'select_element_checkbox'})

Expand Down

0 comments on commit cc1f01d

Please sign in to comment.