Ticket #1358: zones_shipping_fields.js.php

File zones_shipping_fields.js.php, 5.0 KB (added by Torsten Riemer, 8 years ago)
Line 
1<?php
2// Tabellarische Versandmodule besser pflegen
3// goeko@goeko.de
4?>
5<script>
6$(document).ready(function(){
7 var shipping_fields = [],
8 shipping_fields_arr = [
9 'MODULE_SHIPPING_TABLE_COST_',
10 'MODULE_SHIPPING_ZONES_COST_'
11 ];
12
13 getShipping = function(wrapper){
14 var values = [],
15 inputsWrapper = wrapper.find('.priceWrapper');
16
17 inputsWrapper.each(function(i, e){
18 var $inputs = $(e).find('input'),
19 weight = $inputs.eq(0).val(),
20 shipping_price = $inputs.eq(1).val();
21
22 if(weight && shipping_price){
23 values.push( parseFloat($inputs.eq(0).val()).toFixed(2) +':'+ parseFloat($inputs.eq(1).val()).toFixed(2) );
24 }
25 });
26 return values.join(',');
27 };
28
29 setField = function(field){
30 //console.log( typeof $this.val() === 'number' );
31
32 if( field.val() != '') {
33 field.val( parseFloat(field.val()).toFixed(2) );
34 } else {
35 field.val('');
36 }
37 if(field.val() == 'NaN'){
38 field.val('');
39 }
40 };
41
42 for(var s=0;s<shipping_fields_arr.length;s++){
43
44 for(var n=0;n<11;n++){
45
46 var shipping_field = $('[name*='+shipping_fields_arr[s]+n+']');
47
48 if(shipping_field.length>0){
49 var shipping_field_values = shipping_field.val(),
50 shipping_fieldWrapper = $('<div/>', {class:"shipping_fieldWrapper shipping_fieldWrapper"+s});
51
52 shipping_field.wrapAll(shipping_fieldWrapper);
53
54 var shipping_items = shipping_field_values.split(','),
55 shipping_values = [],
56 shipping_fieldWrapper = shipping_field.closest('div');
57
58 if(shipping_items.length > 0){
59
60 var mode = $('[name*=MODULE_SHIPPING_TABLE_MODE]'),
61 mode_text = "Gewicht";
62 if(mode.length > 0){
63 var mode_id = $('[name*=MODULE_SHIPPING_TABLE_MODE]:checked').attr('id'),
64 mode_text = $('[for='+mode_id+']').text();
65 }
66
67 shipping_fieldWrapper.append('<div class="title"><div>max. '+mode_text+'</div><div>Versandkosten</div></div>')
68
69 for(var i=0; i<shipping_items.length; i++){
70 var shipping_item = shipping_items[i].split(':');
71 shipping_values.push(shipping_item);
72
73 var priceWrapper = $('<div/>', {class:'priceWrapper'}),
74 cart_price = $('<input/>', {value:shipping_item[0], type:"search", placeholder:'max. Bestellgewicht'}),
75 shipping_price = $('<input/>', {value:shipping_item[1], type:"search", placeholder:'Versandkosten'});
76
77 priceWrapper.append(cart_price);
78 priceWrapper.append(shipping_price);
79
80 shipping_fieldWrapper.append(priceWrapper);
81
82 }
83 var priceWrapper = $('<div/>', {class:'priceWrapper'}),
84 cart_price = $('<input/>', {value:"", type:"search", placeholder:'max. Bestellgewicht'}),
85 shipping_price = $('<input/>', {value:"", type:"search", placeholder:'Versandkosten'}),
86 buttonbar = $('<div/>', {class:"buttonbar"}),
87 submit_btn = $('<input/>', {value:"Speichern", type:"submit", class:"submit_btn"}),
88 reset_btn = $('<input/>', {value:"Zurücksetzen", type:"reset", class:"reset_btn"});
89
90 priceWrapper.append(cart_price);
91 priceWrapper.append(shipping_price);
92
93 shipping_fieldWrapper.append(priceWrapper);
94
95 buttonbar.append(reset_btn);
96 buttonbar.append(submit_btn);
97 shipping_fieldWrapper.append(buttonbar);
98
99 var inputFields = shipping_fieldWrapper.find('input')
100 .not(".inputModule")
101 .not(".submit_btn")
102 .not(".reset_btn");
103 inputFields.each(function(i, e){
104 $input = $(e);
105 var wrapper = $input.closest('.shipping_fieldWrapper'),
106 shipping_field = wrapper.find('input').first();
107
108 $input.on('blur', function(){
109 $this = $(this);
110 setField($this, shipping_field, wrapper);
111 shipping_field.val( getShipping(wrapper) );
112 });
113 $input.on('search', function(){
114 $this = $(this);
115 $this.val('');
116 shipping_field.val( getShipping(wrapper) );
117 });
118
119 });
120 }
121 }
122
123
124
125 }
126 }
127
128});
129</script>