diff --git a/abilian/web/forms/widgets.py b/abilian/web/forms/widgets.py index 21c0c390..b16e119b 100644 --- a/abilian/web/forms/widgets.py +++ b/abilian/web/forms/widgets.py @@ -152,7 +152,7 @@ def render(self, entities, **kwargs): 'aoColumns': aoColumns, 'bFilter': self.show_search, 'oLanguage': { - 'sSearch': _("Filter records:"), + 'sSearch': self.options.get('search_label', _("Filter records:")), }, 'bStateSave': False, 'bPaginate': self.paginate, @@ -244,13 +244,16 @@ class AjaxMainTableView(object): """ show_controls = False paginate = True + options = {} - def __init__(self, columns, ajax_source, search_criterions=(), name=None): + def __init__(self, columns, ajax_source, search_criterions=(), name=None, options=None): self.init_columns(columns) self.ajax_source = ajax_source self.search_criterions = search_criterions self.name = name if name is not None else id(self) self.save_state = name is not None + if options is not None: + self.options = options def init_columns(self, columns): # TODO: compute the correct width for each column. @@ -268,13 +271,12 @@ def render(self): aoColumns = [{'asSorting': []}] if self.show_controls else [] aoColumns += [{'asSorting': ["asc", "desc"]} for i in range(0, len(self.columns))] - datatable_options = { 'sDom': 'lfFrtip', 'aoColumns': aoColumns, 'bFilter': True, 'oLanguage': { - 'sSearch': _("Filter records:"), + 'sSearch': self.options.get('search_label', _("Filter records:")), 'sPrevious': _("Previous"), 'sNext': _("Next"), 'sInfo': _("Showing _START_ to _END_ of _TOTAL_ entries"), @@ -563,7 +565,6 @@ def __init__(self, input_type=None, pre_icon=None, post_icon=None, if post_icon is not None: self.post_icon = post_icon - def __call__(self, field, *args, **kwargs): if not any((self.pre_icon, self.post_icon)): return super(TextInput, self).__call__(field, *args, **kwargs) diff --git a/abilian/web/frontend.py b/abilian/web/frontend.py index fd595caf..0b2d38f2 100644 --- a/abilian/web/frontend.py +++ b/abilian/web/frontend.py @@ -260,6 +260,7 @@ class Module(object): blueprint = None search_criterions = (search.TextSearchCriterion("name", attributes=('name', 'nom')),) + tableview_options = {} # used mostly to change datatable search_label _urls = [] def __init__(self): @@ -454,7 +455,8 @@ def list_view(self): name=self.managed_class.__name__.lower(), columns=self.list_view_columns, ajax_source=url_for('.list_json'), - search_criterions=self.search_criterions,) + search_criterions=self.search_criterions, + options=self.tableview_options) rendered_table = table_view.render() ctx = dict(rendered_table=rendered_table,