Add way to override grid action label rendering
so that custom HTML can be embedded in there somehow..
This commit is contained in:
parent
b229b409b0
commit
87d8322b85
|
@ -1434,6 +1434,17 @@ class GridAction(object):
|
||||||
return self.url(row, i)
|
return self.url(row, i)
|
||||||
return self.url
|
return self.url
|
||||||
|
|
||||||
|
def render_label(self):
|
||||||
|
"""
|
||||||
|
Render the label "text" within the actions column of a grid
|
||||||
|
row. Most actions have a static label that never varies, but
|
||||||
|
you can override this to add e.g. HTML content. Note that the
|
||||||
|
return value will be treated / rendered as HTML whether or not
|
||||||
|
it contains any, so perhaps be careful that it is trusted
|
||||||
|
content.
|
||||||
|
"""
|
||||||
|
return self.label
|
||||||
|
|
||||||
|
|
||||||
class URLMaker(object):
|
class URLMaker(object):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -201,7 +201,7 @@
|
||||||
% endif
|
% endif
|
||||||
>
|
>
|
||||||
<i class="fas fa-${action.icon}"></i>
|
<i class="fas fa-${action.icon}"></i>
|
||||||
${action.label}
|
${action.render_label()|n}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
% endfor
|
% endfor
|
||||||
|
|
|
@ -2251,14 +2251,16 @@ class MasterView(View):
|
||||||
return self.request.route_url('{}.delete'.format(self.get_route_prefix()),
|
return self.request.route_url('{}.delete'.format(self.get_route_prefix()),
|
||||||
**self.get_action_route_kwargs(row))
|
**self.get_action_route_kwargs(row))
|
||||||
|
|
||||||
def make_action(self, key, url=None, **kwargs):
|
def make_action(self, key, url=None, factory=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Make a new :class:`GridAction` instance for the current grid.
|
Make a new :class:`GridAction` instance for the current grid.
|
||||||
"""
|
"""
|
||||||
if url is None:
|
if url is None:
|
||||||
route = '{}.{}'.format(self.get_route_prefix(), key)
|
route = '{}.{}'.format(self.get_route_prefix(), key)
|
||||||
url = lambda r, i: self.request.route_url(route, **self.get_action_route_kwargs(r))
|
url = lambda r, i: self.request.route_url(route, **self.get_action_route_kwargs(r))
|
||||||
return grids.GridAction(key, url=url, **kwargs)
|
if not factory:
|
||||||
|
factory = grids.GridAction
|
||||||
|
return factory(key, url=url, **kwargs)
|
||||||
|
|
||||||
def get_action_route_kwargs(self, row):
|
def get_action_route_kwargs(self, row):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue