job templates: saving and deleting
[qcg-portal.git] / qcg / templates / qcg / job_submit.html
index ecc3c72..5fabdc0 100644 (file)
             $('#gridftp').one('show.bs.modal', function() {
                 filex.initialLoad();
             });
+
+            $('#template').on('show.bs.modal', function() {
+                $(this).find('.alert').remove();
+                this.reset();
+            }).on('shown.bs.modal', function() {
+                $(this).find('input[type="text"]')[0].focus();
+            }).on('submit', function(e) {
+                e.preventDefault();
+
+                var $this = $(this),
+                    $btn = $this.find('[type="submit"]');
+
+                $this.find('.alert-danger').remove();
+                $btn.button('loading');
+
+                $.post(this.action, $('#description,#template').serializeArray(), function(response) {
+                    // FIXME url after redirection
+                    document.open();
+                    document.write(response);
+                    document.close();
+                }).fail(function(xhr) {
+                    var error = (xhr.responseJSON || {}).error || 'Błąd serwera';
+
+                    $('<div>', {
+                        'class': 'alert alert-danger',
+                        html: '<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> ' + error
+                    }).prependTo($this.find('.modal-body'));
+
+                    $btn.button('reset');
+                });
+            });
         });
     </script>
 {% endblock %}
 
 {% block container %}
-    <h1 class="page-header">{% block title %}Zleć zadanie{% endblock %}</h1>
+    <div class="pull-right">
+        {% if template %}
+            <button class="btn btn-default" data-toggle="modal" data-target="#template">Zapisz</button>
+            <button class="btn btn-default" data-toggle="modal" data-target="#delete-modal">Usuń</button>
+        {% else %}
+            <button class="btn btn-default" data-toggle="modal" data-target="#template">Zapisz jako szablon</button>
+        {% endif %}
+    </div>
+
+    <h1 class="page-header">{% block title %}Zleć zadanie{% endblock %} <small>{{ template.name }}</small></h1>
 
     {% if errors %}
         <div class="alert alert-danger">
             <strong>Uwaga!</strong> Formularz zawiera błędy.
             {{ form.non_field_errors }}
             {{ env_formset.non_field_errors }}
+            {{ template_form.non_field_errors }}
         </div>
     {% endif %}
 
-    <form action="." method="post" class="form-horizontal">
+    <form id="description" action="." method="post" class="form-horizontal">
         {% csrf_token %}
 
         <!-- Nav tabs -->
         </div>
     </form>
 
-    <div id="gridftp" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="modal-label" aria-hidden="true">
+    <div id="gridftp" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="gridftp-modal-label" aria-hidden="true">
         <div class="modal-dialog modal-lg">
             <div class="modal-content">
                 <div class="modal-header">
                     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
-                    <h4 class="modal-title" id="modal-label">Wybierz plik</h4>
+                    <h4 class="modal-title" id="gridftp-modal-label">Wybierz plik</h4>
                 </div>
                 <div class="modal-body">
                     {% include 'filex/source.html' %}
         </div>
     </div>
 
+    <form id="template" action="." method="post" class="modal fade form-horizontal" tabindex="-1"
+          role="dialog" aria-labelledby="template-modal-label" aria-hidden="true">
+        <div class="modal-dialog">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+                    <h4 class="modal-title" id="template-modal-label">Podaj nazwę szablonu</h4>
+                </div>
+                <div class="modal-body">
+                    {% csrf_token %}
+                    {% bootstrap_field template_form.name layout="horizontal" %}
+                    <input type="hidden" name="save-template" value="1">
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-default" data-dismiss="modal">Anuluj</button>
+                    <button type="submit" class="btn btn-primary" data-loading-text="Zapisywanie...">Zapisz</button>
+                </div>
+            </div>
+        </div>
+    </form>
+
+    {% if template %}
+        <form id="delete-modal" action="{% url 'template_delete' template.id %}" method="post" class="modal fade" tabindex="-1"
+              role="dialog" aria-labelledby="delete-modal-label" aria-hidden="true">
+            <div class="modal-dialog">
+                <div class="modal-content">
+                    <div class="modal-header">
+                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+                        <h4 class="modal-title" id="delete-modal-label">Usuwanie szablonu</h4>
+                    </div>
+                    <div class="modal-body">
+                        {% csrf_token %}
+                        <p>Czy na pewno usunąć szablon <em>{{ template.name }}</em>?</p>
+                    </div>
+                    <div class="modal-footer">
+                        <button type="button" class="btn btn-default" data-dismiss="modal">Anuluj</button>
+                        <button type="submit" class="btn btn-danger">Usuń</button>
+                    </div>
+                </div>
+            </div>
+        </form>
+    {% endif %}
 {% endblock %}