diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/templates/ishtar/wizard/default_wizard.html | 18 | ||||
| -rw-r--r-- | ishtar_common/wizards.py | 27 | 
2 files changed, 31 insertions, 14 deletions
| diff --git a/ishtar_common/templates/ishtar/wizard/default_wizard.html b/ishtar_common/templates/ishtar/wizard/default_wizard.html index 28b9850d7..6b4bce709 100644 --- a/ishtar_common/templates/ishtar/wizard/default_wizard.html +++ b/ishtar_common/templates/ishtar/wizard/default_wizard.html @@ -9,11 +9,11 @@  <form action="." method="post" name='wizard'{% if wizard.form.file_upload %} enctype="multipart/form-data"{% endif %}>{% csrf_token %}  <ul id='form_path'>  {% for step in previous_steps %} -  <li>» <button name="form_prev_step" value="{{forloop.counter0}}">{{step.form_label}}</button></li> +  <li>» <button class='change_step' name="form_prev_step" value="{{forloop.counter0}}">{{step.form_label}}</button></li>  {% endfor %}    <li class='current'>» <a href='#'>{{current_step.form_label}}</a></li>  {% for step in next_steps %} -  <li>» <button name="form_prev_step" value="{{forloop.counter|add:previous_step_counter}}">{{step.form_label}}</button></li> +  <li>» <button class='change_step' name="form_prev_step" value="{{forloop.counter|add:previous_step_counter}}">{{step.form_label}}</button></li>  {% endfor %}  </ul>  {% endblock %} @@ -44,4 +44,18 @@  </div>  </form>  {% endblock %} +<script language="javascript" type="text/javascript"> +var form_changed = false; +$(document).ready(function(){ +    $('form :input').change(function(){form_changed=true;}); +    $('.change_step').click(function(){ +        if(!form_changed || +           confirm("{% trans "The form has changed if you don't validate it all your changes will be lost." %}")){ +            return true; +        } +        return false; +    }); + +}); +</script>  {% endblock %} diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index f0302d70f..89f005a0a 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -534,18 +534,21 @@ class Wizard(NamedUrlWizardView):          return super(Wizard, self).render_next_step(form, **kwargs)      def post(self, *args, **kwargs): -        """Convert numerical step number to step name""" -        request = self.request -        post_data = request.POST.copy() -        if request.POST.has_key('form_prev_step'): -            try: -                step_number = int(request.POST['form_prev_step']) -                post_data['wizard_goto_step'] = self.get_form_list().keys( -                                                                 )[step_number] -            except ValueError: -                pass -        request.POST = post_data -        return super(Wizard, self).post(*args, **kwargs) +        # manage previous (or next) step +        form_prev_step = self.request.POST.get('form_prev_step', None) +        if not form_prev_step: +            return super(Wizard, self).post(*args, **kwargs) +        try: +            # convert numerical step number to step name +            step_number = int(self.request.POST['form_prev_step']) +            wizard_goto_step = self.get_form_list().keys()[step_number] +        except (ValueError, IndexError): +            return super(Wizard, self).post(*args, **kwargs) +        self.storage.current_step = wizard_goto_step +        form = self.get_form( +            data=self.storage.get_step_data(self.steps.current), +            files=self.storage.get_step_files(self.steps.current)) +        return self.render(form)      def session_has_key(self, form_key, key=None, multi=None):          """Check if the session has value of a specific form and (if provided) | 
