diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/templates/ishtar/organization_form.html | 109 | ||||
| -rw-r--r-- | ishtar_common/views.py | 6 | 
2 files changed, 113 insertions, 2 deletions
diff --git a/ishtar_common/templates/ishtar/organization_form.html b/ishtar_common/templates/ishtar/organization_form.html index 207116c21..3a2d37846 100644 --- a/ishtar_common/templates/ishtar/organization_form.html +++ b/ishtar_common/templates/ishtar/organization_form.html @@ -1,10 +1,16 @@ -{% load i18n %}<table class='organization'> +{% load i18n %}{% load url from future %} +<div id='orga-form'> +<form id='dyn-form-organization' method='post'> +{% csrf_token %} +{% for hidden in form.hidden_fields %}{{hidden}}{% endfor %} +<input type='hidden' name='hidden_organization_pk' id='hidden_organization_pk' value='{{object.pk}}'/> +<input type='hidden' name='hidden_organization_lbl' id='hidden_organization_lbl' value="{{object}}"/> +<table class='organization'>  <tr>      <th><label>{{form.name.label}}</label></th>      <td>{{form.name}}</td>  </tr>  </table> -{% for hidden in form.hidden_fields %}{{hidden}}{% endfor %}  <table class='organization-address'>  <tr>      <th><label>{{form.organization_type.label}}</label></th> @@ -27,4 +33,103 @@      <td>{{form.town}}</td>  </tr>  </table> +<div> +<input type='submit' id='btn-modify-organization' value="{% trans "Modify"%}"/> +<input type='submit' id='btn-new-organization' value="{% trans "New"%}"/> +<input type='submit' id='btn-save-organization' value="{% trans "Save"%}"/> +<input type='submit' id='btn-cancel-organization' value="{% trans "Cancel"%}"/> +</div> +</form> +</div> +<script type="text/javascript"><!--// + +function checkPendingRequest(todo) { +    window.setTimeout(function () { +        if ($.active > 0) { +            window.setTimeout(checkPendingRequest(todo), 250); +        } else { +            todo();  +        } +    }, 250); +}; + +person_save_callback = function(){ +    var item_id = $('#hidden_organization_pk').val(); + +    var url = edit_url; +    $('#id_' + parent_id).val(null); +    if (item_id){ +        url = edit_url+item_id; +        $('#id_'+parent_id).val(item_id); +    } +    $("#id_select_"+parent_id).trigger('autocompletechange'); +    $.get(url , function( data ) { +        $( "#div-"+parent_id ).html( data ); +        var lbl = $('#hidden_organization_lbl').val(); +        $('#id_select_' + parent_id).val(lbl); +    }); +}; + +person_new_callback = function(){ +    var url = edit_url; +    $('#id_'+parent_id).val(null); +    $('#id_select_'+parent_id).val(null); +} +$(function() { +    disable_organization = function(){ +        $("#orga-form :input[type='text'], #orga-form textarea, #orga-form select").prop("disabled", true); +        $("#btn-save-organization").hide(); +        $("#btn-cancel-organization").hide(); +        $("#btn-modify-organization").show(); +        $("#btn-new-organization").show(); +        $("#orga-form").removeClass('selected'); +    } +    enable_organization = function(){ +        $("#orga-form :input[type='text'], #orga-form textarea, #orga-form select").prop("disabled", false); +        $("#btn-save-organization").show(); +        $("#btn-cancel-organization").show(); +        $("#btn-modify-organization").hide(); +        $("#btn-new-organization").hide(); +        $("#orga-form").addClass('selected'); +    } + +    checkPendingRequest(disable_organization); + +    $("#btn-modify-organization").on('click', function(){ +        {% if object %}submit_url = "{% url 'organization_edit' object.pk %}"; +        {% else %}submit_url = "{% url 'organization_create' %}";{% endif %} +        enable_organization(); +        return false; +    }); +    $("#btn-new-organization").on('click', function(){ +        submit_url = "{% url 'organization_create' %}"; +        $("#orga-form").find("input[type=text], textarea, input[type=hidden]").val(""); +        enable_organization(); +        person_new_callback(); +        return false; +    }); +    $("#btn-cancel-organization").on('click', function(){ +        person_save_callback(); +        disable_organization(); +        return false; +    }); +    $("#btn-save-organization").on('click', function(){ +        var form = $("#dyn-form-organization"); +        $.ajax({ +            url: submit_url, +            type: 'post', +            data: form.serialize(), +            dataType: 'html', +            success: function(data) { +                $("#orga-form").parent().html(data); +                person_save_callback(); +                disable_organization(); +                return false; +            } +        }); +        return false; +    }); + +}); +//--></script> diff --git a/ishtar_common/views.py b/ishtar_common/views.py index ad8b10f35..c2b12e53f 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1147,6 +1147,9 @@ class OrganizationCreate(LoginRequiredMixin, CreateView):              kwargs.update({'prefix': self.form_class.form_prefix})          return kwargs +    def get_success_url(self): +        return reverse('organization_edit', args=[self.object.pk]) +  class OrganizationEdit(LoginRequiredMixin, UpdateView):      model = models.Organization @@ -1159,6 +1162,9 @@ class OrganizationEdit(LoginRequiredMixin, UpdateView):              kwargs.update({'prefix': self.form_class.form_prefix})          return kwargs +    def get_success_url(self): +        return reverse('organization_edit', args=[self.object.pk]) +  class OrganizationPersonCreate(LoginRequiredMixin, CreateView):      model = models.Person  | 
