diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-05-22 17:02:11 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-05-22 17:02:11 +0200 |
commit | f937d282b0ac0864da5651176a3c95418d1e0575 (patch) | |
tree | 2fc4bd28fb7b1a7edca5a138cf929adcacb6a09d | |
parent | 5a1a52a3e1996793eb22955a82915966d7abb279 (diff) | |
download | Ishtar-f937d282b0ac0864da5651176a3c95418d1e0575.tar.bz2 Ishtar-f937d282b0ac0864da5651176a3c95418d1e0575.zip |
Basket management: select multiple - select all
-rw-r--r-- | archaeological_finds/forms.py | 14 | ||||
-rw-r--r-- | archaeological_finds/views.py | 2 | ||||
-rw-r--r-- | ishtar_common/templates/blocks/JQueryJqGrid.html | 1 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/manage_basket.html | 26 | ||||
-rw-r--r-- | ishtar_common/widgets.py | 5 |
5 files changed, 35 insertions, 13 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 95af01719..ca2946a21 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -251,6 +251,20 @@ class FindFormSelection(forms.Form): validators=[valid_id(models.Find)]) +class MultipleFindFormSelection(forms.Form): + form_label = _("Find search") + associated_models = {'pk': models.Find} + currents = {'pk': models.Find} + pk = forms.IntegerField( + label="", required=False, + widget=widgets.JQueryJqGrid( + reverse_lazy('get-find'), + FindSelect, models.Find, + multiple_select=True, + source_full=reverse_lazy('get-find-full')), + validators=[valid_id(models.Find)]) + + class BaseTreatmentForm(forms.Form): form_label = _(u"Base treatment") associated_models = {'treatment_type': models.TreatmentType, diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 851245201..871a5b90d 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -217,7 +217,7 @@ class SelectItemsInBasket(IshtarMixin, LoginRequiredMixin, TemplateView): except models.FindBasket.DoesNotExist: raise PermissionDenied context['basket'] = self.basket - context['form'] = FindFormSelection() + context['form'] = MultipleFindFormSelection() context['add_url'] = reverse('add_iteminbasket') context['list_url'] = reverse('list_iteminbasket', kwargs={'pk': self.basket.pk}) diff --git a/ishtar_common/templates/blocks/JQueryJqGrid.html b/ishtar_common/templates/blocks/JQueryJqGrid.html index 063a3c1da..c6a15243a 100644 --- a/ishtar_common/templates/blocks/JQueryJqGrid.html +++ b/ishtar_common/templates/blocks/JQueryJqGrid.html @@ -90,6 +90,7 @@ jQuery(document).ready(function(){ width: null, shrinkToFit: false, rowNum:20, + {% if multiple_select %}multiselect: true,{% endif %} jsonReader : {repeatitems: false}, loadError: function (jqXHR, textStatus, errorThrown) { alert("{% trans "An error as occured during search. Check your query fields." %}"); diff --git a/ishtar_common/templates/ishtar/manage_basket.html b/ishtar_common/templates/ishtar/manage_basket.html index 44c3a2536..6332b326e 100644 --- a/ishtar_common/templates/ishtar/manage_basket.html +++ b/ishtar_common/templates/ishtar/manage_basket.html @@ -4,6 +4,7 @@ <h2>{{page_name}}{% trans ":"%} {{basket}}</h2> <form enctype="multipart/form-data" action="." method="post">{% csrf_token %} <div class='form'> +<p class='alert'>{% trans 'Checking "Select all" only select the current page.' %}</p> {{form}} <button id='add_to' onclick='return false'>{% trans "Add" %}</button> <h3>{% trans "Basket content" %}</h3> @@ -18,17 +19,20 @@ function load_list(data){ } $('#add_to').click(function(){ - selected_item = jQuery("#grid_pk").getGridParam('selrow'); - if(!selected_item) return false; - $.ajax({ - type: "POST", - url: '{{add_url}}', - data: { - basket_id: {{basket.pk}}, - item_id: selected_item - }, - success: load_list - }); + var selected_items = jQuery("#grid_pk").getGridParam('selarrrow'); + if(!selected_items) return false; + for (i = 0, n = selected_items.length; i < n; i++) { + var selected_item = selected_items[i]; + $.ajax({ + type: "POST", + url: '{{add_url}}', + data: { + basket_id: {{basket.pk}}, + item_id: selected_item + }, + success: load_list + }); + } return false; }); jQuery(document).ready(function(){ diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index b8b104a61..6d9600d0c 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -513,13 +513,15 @@ class JQueryJqGrid(forms.RadioSelect): def __init__(self, source, form, associated_model, attrs={}, table_cols='TABLE_COLS', multiple=False, multiple_cols=[2], - new=False, new_message="", source_full=None): + new=False, new_message="", source_full=None, + multiple_select=False): self.source = source self.form = form self.attrs = attrs self.associated_model = associated_model self.table_cols = table_cols self.multiple = multiple + self.multiple_select = multiple_select self.multiple_cols = multiple_cols self.new, self.new_message = new, new_message self.source_full = source_full @@ -604,6 +606,7 @@ class JQueryJqGrid(forms.RadioSelect): 'remove': unicode(_(u"Remove")), 'sname': name.replace('-', ''), 'multiple': self.multiple, + 'multiple_select': self.multiple_select, 'multi_cols': ",".join((u'"%d"' % col for col in self.multiple_cols))}) t = loader.get_template('blocks/JQueryJqGrid.html') |