From d8c8156cfd7f37db1dd1d5c89611cc08f3c5c0f0 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 16 Jul 2018 18:19:36 +0200 Subject: Form submit: display form error - reinit all JS after submission --- chimere/static/saclay/js/interface.js | 105 ++++++++++++++++++++++ chimere/templates/chimere/edit.html | 143 ++++++++++-------------------- chimere/templates/tinymce/tinymce_init.js | 17 +++- chimere/views.py | 4 +- chimere/widgets.py | 20 ++++- 5 files changed, 185 insertions(+), 104 deletions(-) diff --git a/chimere/static/saclay/js/interface.js b/chimere/static/saclay/js/interface.js index cd30561..e593588 100644 --- a/chimere/static/saclay/js/interface.js +++ b/chimere/static/saclay/js/interface.js @@ -407,3 +407,108 @@ function toggleDrawOff() { ).addClass('toggle-button-active'); $("#main-map").chimere("deactivateCurrentControl"); } + +var edition_type = 'marker'; +var edition_event = false; +var edition_error = "There are missing/erroneous fields."; +var filter_categories = function() {}; +var displayProgress = function() { + $('#upload_in_progress .modal-body').html(upload); + $('#upload_in_progress').modal("show"); +}; +var init_widget_list = []; + +var init_modal_window = function(){ + filter_categories(); + register_subactions(); + + /* + {% if route %} + var edition_type = 'route'; + {% if itinerary_form %} + $("#chimere_itinerary_form").appendTo($("#itinerary_field")); + $('#main_map').chimere('updateRoutingInput');{% endif%} + {% else %} + var edition_type = 'marker'; + $('#main_map').chimere('updateMarkerInput'); + {% endif %} + */ + + $('#modal-edit button.btn-primary').unbind("click"); + $('#modal-edit button.btn-primary').click(function(){ + // JS tests because if a file is submited there is no way + // to refill the form with (browser security issue) + if (typeof tinyMCE !== 'undefined') tinyMCE.triggerSave(); + + var geom_name = edition_type; + if (geom_name == 'marker'){ + geom_name = 'point'; + } + + validation = [ + geom_name, + 'categories' + ]; + if (edition_event) validation.push('start_date'); + + $("input[required]").each(function(){ + validation.push($(this).attr('name')); + }); + + var validated = true; + for (var idx=0; idx {% trans "Error" %}

{{ error_message }}

-{% endif %} +{% endif %} {% if is_modification and is_superuser %}

{% trans "You are logged as an administrator. Your modifications will be taking into account immediately." %}

{% endif %}
{% block editactions %} @@ -20,6 +20,11 @@
+ {% if form.errors %} +
+ Il y a des erreurs sur le formulaire, veuillez les corriger. +
+ {% endif %} {% csrf_token %}

* {% trans "indicates a mandatory field" %}

@@ -90,33 +95,6 @@ {% inline_formset "Multimedia files" formset_multi %} {% inline_formset "Picture files" formset_picture %} - - {% if filtered_properties %} - - {% endif %}
{% trans "Personal information"%}
@@ -147,77 +125,52 @@
{% bootstrap_modal "upload_in_progress" %} diff --git a/chimere/templates/tinymce/tinymce_init.js b/chimere/templates/tinymce/tinymce_init.js index 8ebceb3..23bf340 100644 --- a/chimere/templates/tinymce/tinymce_init.js +++ b/chimere/templates/tinymce/tinymce_init.js @@ -1,4 +1,6 @@ (function($) { + + if (typeof(textara_list) === 'undefined') textara_list = []; {% if is_admin_inline %} $(function() { {% endif %} @@ -17,9 +19,18 @@ if (typeof selector != 'undefined') { tinymce4_config['selector'] = selector; } - // only the next line is added in chimere to force reinit - tinymce.remove(tinymce4_config['selector']); - tinymce.init(tinymce4_config); + + textara_list.push( + function(){ + // next line is added in chimere to force reinit + tinymce.remove(tinymce4_config['selector']); + + setTimeout(function(){ + tinymce.init(tinymce4_config); + }, 300); + } + ) + textara_list[textara_list.length - 1](); } // End tinymce4_init {% if not is_admin_inline %} tinymce4_init(); diff --git a/chimere/views.py b/chimere/views.py index 9b67b70..9dac562 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -378,8 +378,8 @@ def get_edit_page(redirect_url, item_cls, item_form, ) if settings.DEBUG: print(context) - return redirect(reverse('form-result')), None, \ - subcategories + # return redirect(reverse('form-result')), None, \ + # subcategories else: form = item_form(instance=init_item, subcategories=listed_subcats, area_name=area_name) diff --git a/chimere/widgets.py b/chimere/widgets.py index a12d364..18a9ef1 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -253,9 +253,17 @@ class DatePickerWidget(forms.TextInput): """ def render(self, *args, **kwargs): rendered = super(DatePickerWidget, self).render(*args, **kwargs) - rendered += "\n\n" % kwargs['attrs']['id'] + rendered += """""" % kwargs['attrs']['id'] return mark_safe(rendered) @@ -755,7 +763,11 @@ class MultiSelectWidget(forms.SelectMultiple): def render(self, name, value, attrs=None): rendered = super(MultiSelectWidget, self).render(name, value, attrs) rendered += """