diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-09-05 13:56:09 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-10-24 12:06:08 +0200 |
commit | 575a7fd93e52b750e323cde669e5a4c329ead978 (patch) | |
tree | ec9c9767e29588622d0e70c58fcf3bbd2b8e98de | |
parent | 7998a1f6d3096b8a6a2d8bdb80d3034a68bc544d (diff) | |
download | Ishtar-575a7fd93e52b750e323cde669e5a4c329ead978.tar.bz2 Ishtar-575a7fd93e52b750e323cde669e5a4c329ead978.zip |
Fix display of QA form. Improve layout of criteria search.
-rw-r--r-- | archaeological_finds/views.py | 44 | ||||
-rw-r--r-- | ishtar_common/static/js/ishtar.js | 6 | ||||
-rw-r--r-- | ishtar_common/templates/blocks/bs_form_snippet.html | 19 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/qa_form.html | 9 | ||||
-rw-r--r-- | ishtar_common/views.py | 50 | ||||
-rw-r--r-- | scss/custom.scss | 18 |
6 files changed, 83 insertions, 63 deletions
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 034e1994f..ca575a889 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -35,7 +35,7 @@ from forms import * from ishtar_common.forms import FinalForm from ishtar_common.models import IshtarUser, get_current_profile from ishtar_common.views import get_autocomplete_generic, IshtarMixin, \ - LoginRequiredMixin + LoginRequiredMixin, QAItemEditForm from ishtar_common.views_item import display_item, get_item, show_item, \ revert_item, get_autocomplete_item from wizards import * @@ -596,49 +596,7 @@ def reset_wizards(request): wizard_class.session_reset(request, url_name) -class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView): - template_name = 'ishtar/qa_form.html' - model = None - form_class = None - form_class_multi = None - - def dispatch(self, request, *args, **kwargs): - assert self.model - pks = [int(pk) for pk in kwargs.get('pks').split('-')] - self.items = list(self.model.objects.filter(pk__in=pks)) - if not self.items: - raise Http404() - - # check availability - if not self.model.QA_EDIT.is_available( - user=request.user, session=request.session): - for item in self.items: - if not self.model.QA_EDIT.is_available( - user=request.user, session=request.session, obj=item): - raise Http404() - - return super(QAItemEditForm, self).dispatch(request, *args, **kwargs) - - def get_form_class(self): - if len(self.items) > 1: - return self.form_class_multi - return self.form_class - - def get_form_kwargs(self): - kwargs = super(QAItemEditForm, self).get_form_kwargs() - kwargs['items'] = self.items - return kwargs - - class QAFindForm(QAItemEditForm): model = models.Find form_class = QAFindFormSingle form_class_multi = QAFindFormMulti - - def get_success_url(self, basket): - return reverse('select_itemsinbasket', - kwargs={'pk': basket}) - - def form_valid(self, form): - return HttpResponseRedirect(self.get_success_url( - form.cleaned_data['basket'])) diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index 119229e8d..483da495c 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -682,9 +682,9 @@ function update_search_field(){ $('#wizard-form input').each(function(){$(this).val("")}); $("#id_search_vector").val(query); if (query){ - add_message(query, 'info', "#advanced-search-info", true, false); + add_message(query, 'secondary', "#advanced-search-info", true, false); } else { - add_message("-", 'info', "#advanced-search-info", true, false); + add_message("-", 'secondary', "#advanced-search-info", true, false); } enable_save(); } @@ -776,7 +776,7 @@ var dt_generate_qa_url = function (table, url){ var dt_qa_open = function (url){ long_wait(); $('#modal-dynamic-form').load(url, function(){ - $('#modal-dynamic-form').modal("show"); close_wait(); + $('#modal-dynamic-form').modal("show"); }); } diff --git a/ishtar_common/templates/blocks/bs_form_snippet.html b/ishtar_common/templates/blocks/bs_form_snippet.html index 95b8ac086..f122b33f2 100644 --- a/ishtar_common/templates/blocks/bs_form_snippet.html +++ b/ishtar_common/templates/blocks/bs_form_snippet.html @@ -48,22 +48,9 @@ <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> + <div class="form-group col-12" id="advanced-search-info"></div> </div> - <div class="modal-body form-row"> - <div class="form-group col-12" id="advanced-search-info"> - </div> - <div class="form-group col-12"> - <p class="text-center"> - <button type="button" - class="btn btn-primary advanced-search-valid"> - {% trans "Add" %}</button> - <button type="button" - class="btn btn-secondary advanced-search-clear"> - {% trans 'Clear' %}</button> - <button type="button" class="btn btn-secondary" - data-dismiss="modal">{% trans 'Close' %}</button> - </p> - </div> + <div class="modal-body body-scroll"> <hr> {% endif %} {% if field.name in form.HEADERS %} @@ -91,6 +78,8 @@ {% if search and forloop.counter0 >= 1 %} </div> + </div> + <div class="modal-footer"> <div class="form-group col-12"> <p class="text-center"> <button type="button" diff --git a/ishtar_common/templates/ishtar/qa_form.html b/ishtar_common/templates/ishtar/qa_form.html index 95f8887a8..2df3775ea 100644 --- a/ishtar_common/templates/ishtar/qa_form.html +++ b/ishtar_common/templates/ishtar/qa_form.html @@ -3,16 +3,21 @@ <div class="modal-dialog modal-lg modal-dialog-centered"> <div class="modal-content" id='progress-content'> <div class="modal-header"> - <h2>{{page_name}}</h2> + <h2>{{page_name|safe}}</h2> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> </div> <form enctype="multipart/form-data" action="." method="post">{% csrf_token %} - <div class="modal-body"> + <div class="modal-body body-scroll"> <div class='form'> {% for error in form.non_field_errors %} <p>{{ error }}</p> {% endfor %} {% bs_form form %} </div> + </div> + <div class="modal-footer"> <button type="submit" id="submit_form" name='validate' value="validate" class="btn btn-success"> {% trans "Modify" %} diff --git a/ishtar_common/views.py b/ishtar_common/views.py index eed175753..8b22048f2 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1795,3 +1795,53 @@ class AlertList(JSONResponseMixin, LoginRequiredMixin, 'number': nb} ) return {'alerts': alerts} + + +class QAItemEditForm(IshtarMixin, LoginRequiredMixin, FormView): + template_name = 'ishtar/qa_form.html' + model = None + form_class = None + form_class_multi = None + + def dispatch(self, request, *args, **kwargs): + assert self.model + pks = [int(pk) for pk in kwargs.get('pks').split('-')] + self.items = list(self.model.objects.filter(pk__in=pks)) + if not self.items: + raise Http404() + + # check availability + if not self.model.QA_EDIT.is_available( + user=request.user, session=request.session): + for item in self.items: + if not self.model.QA_EDIT.is_available( + user=request.user, session=request.session, obj=item): + raise Http404() + + return super(QAItemEditForm, self).dispatch(request, *args, **kwargs) + + def get_form_class(self): + if len(self.items) > 1: + return self.form_class_multi + return self.form_class + + def get_form_kwargs(self): + kwargs = super(QAItemEditForm, self).get_form_kwargs() + kwargs['items'] = self.items + return kwargs + + def get_context_data(self, **kwargs): + data = super(QAItemEditForm, self).get_context_data(**kwargs) + data['page_name'] = u"{} – {}".format( + self.model._meta.verbose_name, self.model.QA_EDIT.text) + return data + + + + def get_success_url(self, basket): + return reverse('select_itemsinbasket', + kwargs={'pk': basket}) + + def form_valid(self, form): + return HttpResponseRedirect(self.get_success_url( + form.cleaned_data['basket'])) diff --git a/scss/custom.scss b/scss/custom.scss index e265b61e7..076522366 100644 --- a/scss/custom.scss +++ b/scss/custom.scss @@ -97,6 +97,24 @@ pre { font-weight: bold; } +#modal-advanced-search .modal-header{ + flex-wrap: wrap; + padding-bottom: 0; +} + +#modal-advanced-search .modal-header .alert-secondary{ + background-color: $white; +} + +.modal-header, .modal-footer{ + background-color: $gray-200; +} + +.modal-body.body-scroll{ + max-height: calc(100vh - 200px); + overflow-y: auto; +} + .modal-dialog.full { width: 98%; height: 98%; |