Anand Doshi | edbf3e1 | 2013-07-02 11:40:16 +0530 | [diff] [blame] | 1 | {% extends "app/website/templates/html/page.html" %} |
| 2 | |
| 3 | {% set title=doc and doc.name or "New Address" %} |
| 4 | {% set docname=(doc and doc.name or "") %} |
| 5 | |
| 6 | {% macro render_fields(docfields) -%} |
| 7 | {% for df in docfields -%} |
| 8 | {% if df.fieldtype in ["Data", "Link"] -%} |
| 9 | <fieldset> |
| 10 | <label>{{ df.label }}</label> |
Rushabh Mehta | cce21d1 | 2013-08-21 17:48:08 +0530 | [diff] [blame] | 11 | <input class="form-control" type="text" placeholder="Type {{ df.label }}" |
Anand Doshi | edbf3e1 | 2013-07-02 11:40:16 +0530 | [diff] [blame] | 12 | data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}" |
| 13 | {% if doc and doc.fields.get(df.fieldname) -%} value="{{ doc.fields[df.fieldname] }}" {%- endif %}> |
| 14 | </fieldset> |
| 15 | {% elif df.fieldtype == "Check" -%} |
| 16 | <fieldset class="checkbox"> |
| 17 | <label><input type="checkbox" data-fieldname="{{ df.fieldname }}" |
| 18 | data-fieldtype="{{ df.fieldtype }}" |
| 19 | {% if doc and cint(doc.fields.get(df.fieldname)) -%} checked="checked" {%- endif %}> |
| 20 | {{ df.label }}</label> |
| 21 | </fieldset> |
| 22 | {% elif df.fieldtype == "Select" -%} |
| 23 | <fieldset> |
| 24 | <label>{{ df.label }}</label> |
Anand Doshi | 65f5c58 | 2013-08-21 19:36:23 +0530 | [diff] [blame] | 25 | <select class="form-control" data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}"> |
Anand Doshi | edbf3e1 | 2013-07-02 11:40:16 +0530 | [diff] [blame] | 26 | {% for value in df.options.split("\n") -%} |
| 27 | {% if doc and doc.fields.get(df.fieldname) == value -%} |
| 28 | <option selected="selected">{{ value }}</option> |
| 29 | {% else -%} |
| 30 | <option>{{ value }}</option> |
| 31 | {%- endif %} |
| 32 | {%- endfor %} |
| 33 | </select> |
| 34 | </fieldset> |
| 35 | {%- endif %} |
| 36 | {%- endfor %} |
| 37 | {%- endmacro %} |
| 38 | |
| 39 | {% block content %} |
Rushabh Mehta | cce21d1 | 2013-08-21 17:48:08 +0530 | [diff] [blame] | 40 | <div class="col-md-12"> |
Anand Doshi | edbf3e1 | 2013-07-02 11:40:16 +0530 | [diff] [blame] | 41 | <ul class="breadcrumb"> |
| 42 | <li><a href="index">Home</a></li> |
| 43 | <li><a href="account">My Account</a></li> |
| 44 | <li><a href="addresses">My Addresses</a></li> |
Anand Doshi | f7e5648 | 2013-08-29 17:46:40 +0530 | [diff] [blame] | 45 | <li class="active"><i class="icon-map-marker icon-fixed-width"></i> {{ title }}</li> |
Anand Doshi | edbf3e1 | 2013-07-02 11:40:16 +0530 | [diff] [blame] | 46 | </ul> |
Anand Doshi | f7e5648 | 2013-08-29 17:46:40 +0530 | [diff] [blame] | 47 | <h3><i class="icon-map-marker icon-fixed-width"></i> {{ title }}</h3> |
Anand Doshi | edbf3e1 | 2013-07-02 11:40:16 +0530 | [diff] [blame] | 48 | <button type="button" class="btn btn-primary pull-right" id="address-save"><i class="icon-ok"></i> |
| 49 | {{ doc and "Save" or "Insert" }}</button> |
| 50 | <div class="clearfix"></div> |
| 51 | <hr> |
| 52 | <div id="address-error" class="alert alert-danger" style="display: none;"></div> |
| 53 | <form autocomplete="on"> |
| 54 | <div class="row"> |
Rushabh Mehta | cce21d1 | 2013-08-21 17:48:08 +0530 | [diff] [blame] | 55 | <section class="col-md-6"> |
Anand Doshi | edbf3e1 | 2013-07-02 11:40:16 +0530 | [diff] [blame] | 56 | {{ render_fields(meta.left_fields) }} |
| 57 | </section> |
Rushabh Mehta | cce21d1 | 2013-08-21 17:48:08 +0530 | [diff] [blame] | 58 | <section class="col-md-6"> |
Anand Doshi | edbf3e1 | 2013-07-02 11:40:16 +0530 | [diff] [blame] | 59 | {{ render_fields(meta.right_fields) }} |
| 60 | </section> |
| 61 | </section> |
| 62 | </form> |
| 63 | </div> |
| 64 | |
| 65 | <script> |
| 66 | ;(function() { |
| 67 | $(document).ready(function() { |
| 68 | bind_save(); |
| 69 | }); |
| 70 | |
| 71 | var bind_save = function() { |
| 72 | $("#address-save").on("click", function() { |
| 73 | var fields = { |
| 74 | name: "{{ docname }}" |
| 75 | }; |
| 76 | |
| 77 | $("form").find("[data-fieldname]").each(function(i, input) { |
| 78 | var $input = $(input); |
| 79 | var fieldname = $(input).attr("data-fieldname"); |
| 80 | var fieldtype = $(input).attr("data-fieldtype"); |
| 81 | |
| 82 | if(fieldtype == "Check") { |
| 83 | fields[fieldname] = $input.is(":checked") ? 1 : 0; |
| 84 | } else { |
| 85 | fields[fieldname] = $input.val(); |
| 86 | } |
| 87 | }); |
| 88 | |
| 89 | wn.call({ |
| 90 | btn: $(this), |
| 91 | type: "POST", |
| 92 | method: "website.helpers.cart.save_address", |
| 93 | args: { fields: fields, address_fieldname: get_url_arg("address_fieldname") }, |
| 94 | callback: function(r) { |
| 95 | if(r.exc) { |
| 96 | var msg = ""; |
| 97 | if(r._server_messages) { |
| 98 | msg = JSON.parse(r._server_messages || []).join("<br>"); |
| 99 | } |
| 100 | |
| 101 | $("#address-error") |
| 102 | .html(msg || "Something went wrong!") |
| 103 | .toggle(true); |
| 104 | } else if(get_url_arg("address_fieldname")) { |
| 105 | window.location.href = "cart"; |
| 106 | } else { |
| 107 | window.location.href = "address?name=" + encodeURIComponent(r.message); |
| 108 | } |
| 109 | } |
| 110 | }); |
| 111 | }); |
| 112 | }; |
| 113 | })(); |
| 114 | </script> |
Anand Doshi | edbf3e1 | 2013-07-02 11:40:16 +0530 | [diff] [blame] | 115 | {% endblock %} |