View | Details | Raw Unified | Return to bug 15206
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/js/members.js (-41 / +11 lines)
Lines 217-271 function select_user(borrowernumber, borrower) { Link Here
217
    return 0;
217
    return 0;
218
}
218
}
219
219
220
function CalculateAge() {
220
function CalculateAge(dateofbirth) {
221
    var hint = $("#dateofbirth").siblings(".hint").first();
222
    hint.html(dateformat);
223
224
    if (dformat == 'metric' && false === CheckDate(document.form.dateofbirth)) {
225
        return;
226
    }
227
228
    if (!$("#dateofbirth").datepicker( 'getDate' )) {
229
        return;
230
    }
231
232
    var today = new Date();
221
    var today = new Date();
233
    var dob = new Date($("#dateofbirth").datepicker( 'getDate' ));
222
    var dob = Date_from_syspref(dateofbirth)
223
    var age = new Object();
234
224
235
    var nowyear = today.getFullYear();
225
    age.year = today.getFullYear() - dob.getFullYear();
236
    var nowmonth = today.getMonth();
226
    age.month = today.getMonth() - dob.getMonth();
237
    var nowday = today.getDate();
227
    var day = today.getDate() - dob.getDate();
238
239
    var birthyear = dob.getFullYear();
240
    var birthmonth = dob.getMonth();
241
    var birthday = dob.getDate();
242
243
    var year = nowyear - birthyear;
244
    var month = nowmonth - birthmonth;
245
    var day = nowday - birthday;
246
228
247
    if(day < 0) {
229
    if(day < 0) {
248
        month = parseInt(month) -1;
230
        age.month = parseInt(age.month) -1;
249
    }
250
251
    if(month < 0) {
252
        year = parseInt(year) -1;
253
        month = 12 + month;
254
    }
255
256
    var age_string;
257
    if (year || month) {
258
        age_string = _('Age: ');
259
    }
260
    if (year) {
261
        age_string += _(year > 1 ? '%s years ' : '%s year ').format(year);
262
    }
231
    }
263
232
264
    if (month) {
233
    if(age.month < 0) {
265
        age_string += _(month > 1 ? '%s months ' : '%s month ').format(month);
234
        age.year = parseInt(age.year) -1;
235
        age.month = 12 + age.month;
266
    }
236
    }
267
237
268
    hint.html(age_string);
238
    return age;
269
}
239
}
270
240
271
$(document).ready(function(){
241
$(document).ready(function(){
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt (-113 / +137 lines)
Lines 6-136 Link Here
6
[% INCLUDE 'calendar.inc' %]
6
[% INCLUDE 'calendar.inc' %]
7
<script type="text/javascript">
7
<script type="text/javascript">
8
//<![CDATA[
8
//<![CDATA[
9
    $(document).ready(function() {
9
$(document).ready(function() {
10
10
11
        [% IF categorycode %]
11
	[% IF categorycode %]
12
            update_category_code( "[% categorycode %]" );
12
		update_category_code( "[% categorycode %]" );
13
        [% ELSE %]
13
	[% ELSE %]
14
            if ( $("#categorycode_entry").length > 0 ){
14
		if ( $("#categorycode_entry").length > 0 ){
15
                var category_code = $("#categorycode_entry").find("option:selected").val();
15
			var category_code = $("#categorycode_entry").find("option:selected").val();
16
                update_category_code( category_code );
16
			update_category_code( category_code );
17
            }
17
		}
18
        [% END %]
18
	[% END %]
19
        $("#dateofbirth").datepicker({ maxDate: "-1D", yearRange: "c-120:" });
19
	$("#dateofbirth").datepicker({ maxDate: "-1D", yearRange: "c-120:" });
20
        dateformat = $("#dateofbirth").siblings(".hint").first().html();
20
	dateformat = $("#dateofbirth").siblings(".hint").first().html();
21
        CalculateAge();
21
	write_age();
22
        $("#entryform").validate({
22
	$("#entryform").validate({
23
            rules: {
23
		rules: {
24
                email: {
24
			email: {
25
                    email: true
25
				email: true
26
                },
26
			},
27
                emailpro: {
27
			emailpro: {
28
                    email: true
28
				email: true
29
                },
29
			},
30
                B_email: {
30
			B_email: {
31
                    email: true
31
				email: true
32
                }
32
			}
33
            },
33
		},
34
            submitHandler: function(form) {
34
		submitHandler: function(form) {
35
                $("body, form input[type='submit'], form button[type='submit'], form a").addClass('waiting');
35
			$("body, form input[type='submit'], form button[type='submit'], form a").addClass('waiting');
36
                if (form.beenSubmitted)
36
			if (form.beenSubmitted)
37
                    return false;
37
				return false;
38
                else
38
			else
39
                    form.beenSubmitted = true;
39
				form.beenSubmitted = true;
40
                    form.submit();
40
				form.submit();
41
                }
41
			}
42
        });
42
	});
43
43
44
        var mrform = $("#manual_restriction_form");
44
	var mrform = $("#manual_restriction_form");
45
        var mrlink = $("#add_manual_restriction");
45
	var mrlink = $("#add_manual_restriction");
46
        mrform.hide();
46
	mrform.hide();
47
        mrlink.on("click",function(e){
47
	mrlink.on("click",function(e){
48
            $(this).hide();
48
		$(this).hide();
49
            mrform.show();
49
		mrform.show();
50
            e.preventDefault();
50
		e.preventDefault();
51
        });
51
	});
52
        $("#cancel_manual_restriction").on("click",function(e){
52
	$("#cancel_manual_restriction").on("click",function(e){
53
            $('#debarred_expiration').val('');
53
		$('#debarred_expiration').val('');
54
            $('#add_debarment').val(0);
54
		$('#add_debarment').val(0);
55
            $('#debarred_comment').val('');
55
		$('#debarred_comment').val('');
56
            mrlink.show();
56
		mrlink.show();
57
            mrform.hide();
57
		mrform.hide();
58
            e.preventDefault();
58
		e.preventDefault();
59
        });
59
	});
60
    });
60
});
61
61
62
    function clear_entry(node) {
62
function clear_entry(node) {
63
        var original = $(node).parent();
63
	var original = $(node).parent();
64
        $("textarea", original).attr('value', '');
64
	$("textarea", original).attr('value', '');
65
        $("select", original).attr('value', '');
65
	$("select", original).attr('value', '');
66
    }
66
}
67
67
68
    function clone_entry(node) {
68
function clone_entry(node) {
69
        var original = $(node).parent();
69
	var original = $(node).parent();
70
        var clone = original.clone();
70
	var clone = original.clone();
71
71
72
        var newId = 50 + parseInt(Math.random() * 100000);
72
	var newId = 50 + parseInt(Math.random() * 100000);
73
        $("input,select,textarea", clone).attr('id', function() {
73
	$("input,select,textarea", clone).attr('id', function() {
74
            return this.id.replace(/patron_attr_\d+/, 'patron_attr_' + newId);
74
		return this.id.replace(/patron_attr_\d+/, 'patron_attr_' + newId);
75
        });
75
	});
76
        $("input,select,textarea", clone).attr('name', function() {
76
	$("input,select,textarea", clone).attr('name', function() {
77
            return this.name.replace(/patron_attr_\d+/, 'patron_attr_' + newId);
77
		return this.name.replace(/patron_attr_\d+/, 'patron_attr_' + newId);
78
        });
78
	});
79
        $("label", clone).attr('for', function() {
79
	$("label", clone).attr('for', function() {
80
            return $(this).attr("for").replace(/patron_attr_\d+/, 'patron_attr_' + newId);
80
		return $(this).attr("for").replace(/patron_attr_\d+/, 'patron_attr_' + newId);
81
        });
81
	});
82
        $("input#patron_attr_" + newId, clone).attr('value','');
82
	$("input#patron_attr_" + newId, clone).attr('value','');
83
        $("select#patron_attr_" + newId, clone).attr('value','');
83
	$("select#patron_attr_" + newId, clone).attr('value','');
84
        $(original).after(clone);
84
	$(original).after(clone);
85
        return false;
85
	return false;
86
    }
86
}
87
87
88
    function update_category_code(category_code) {
88
function update_category_code(category_code) {
89
        if ( $(category_code).is("select") ) {
89
	if ( $(category_code).is("select") ) {
90
            category_code = $("#categorycode_entry").find("option:selected").val();
90
		category_code = $("#categorycode_entry").find("option:selected").val();
91
        }
91
	}
92
        var mytables = $(".attributes_table");
92
	var mytables = $(".attributes_table");
93
        $(mytables).find("li").hide();
93
	$(mytables).find("li").hide();
94
        $(mytables).find(" li[data-category_code='"+category_code+"']").show();
94
	$(mytables).find(" li[data-category_code='"+category_code+"']").show();
95
        $(mytables).find(" li[data-category_code='']").show();
95
	$(mytables).find(" li[data-category_code='']").show();
96
    }
96
}
97
97
98
    function select_user(borrowernumber, borrower) {
98
function select_user(borrowernumber, borrower) {
99
        var form = $('#entryform').get(0);
99
	var form = $('#entryform').get(0);
100
        if (form.guarantorid.value) {
100
	if (form.guarantorid.value) {
101
            $("#contact-details").find('a').remove();
101
		$("#contact-details").find('a').remove();
102
            $("#contactname, #contactfirstname").parent().find('span').remove();
102
		$("#contactname, #contactfirstname").parent().find('span').remove();
103
        }
103
	}
104
105
	var id = borrower.borrowernumber;
106
	form.guarantorid.value = id;
107
	$('#contact-details')
108
		.show()
109
		.find('span')
110
		.after('<a target="blank" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + id + '">' + id + '</a>');
111
112
	$(form.contactname)
113
		.val(borrower.surname)
114
		.before('<span>' + borrower.surname + '</span>').get(0).type = 'hidden';
115
	$(form.contactfirstname)
116
		.val(borrower.firstname)
117
		.before('<span>' + borrower.firstname + '</span>').get(0).type = 'hidden';
118
119
	form.streetnumber.value = borrower.streetnumber;
120
	form.address.value = borrower.address;
121
	form.address2.value = borrower.address2;
122
	form.city.value = borrower.city;
123
	form.state.value = borrower.state;
124
	form.zipcode.value = borrower.zipcode;
125
	form.country.value = borrower.country;
126
	form.branchcode.value = borrower.branchcode;
127
128
	form.guarantorsearch.value = _("Change");
104
129
105
        var id = borrower.borrowernumber;
130
	return 0;
106
        form.guarantorid.value = id;
131
}
107
        $('#contact-details')
108
            .show()
109
            .find('span')
110
            .after('<a target="blank" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + id + '">' + id + '</a>');
111
132
112
        $(form.contactname)
133
    function write_age() {
113
            .val(borrower.surname)
134
        var hint = $("#dateofbirth").siblings(".hint").first();
114
            .before('<span>' + borrower.surname + '</span>').get(0).type = 'hidden';
135
        hint.html(dateformat);
115
        $(form.contactfirstname)
116
            .val(borrower.firstname)
117
            .before('<span>' + borrower.firstname + '</span>').get(0).type = 'hidden';
118
136
119
        form.streetnumber.value = borrower.streetnumber;
137
        var age = CalculateAge(document.form.dateofbirth.value);
120
        form.address.value = borrower.address;
121
        form.address2.value = borrower.address2;
122
        form.city.value = borrower.city;
123
        form.state.value = borrower.state;
124
        form.zipcode.value = borrower.zipcode;
125
        form.country.value = borrower.country;
126
        form.branchcode.value = borrower.branchcode;
127
138
128
        form.guarantorsearch.value = _("Change");
139
        if (!age.year && !age.month) {
140
            return;
141
        }
142
143
        var age_string;
144
        if (age.year || age.month) {
145
            age_string = _('Age: ');
146
        }
147
148
        if (age.year) {
149
            age_string += _(age.year > 1 ? '%s years ' : '%s year ').format(age.year);
150
        }
151
152
        if (age.month) {
153
            age_string += _(age.month > 1 ? '%s months ' : '%s month ').format(age.month);
154
        }
129
155
130
        return 0;
156
        hint.html(age_string);
131
    }
157
    }
132
158
133
>>>>>>> Bug 15206 - Show patron's age under date of birth in memberentry.pl
134
        var MSG_SEPARATOR = _("Separator must be / in field %s");
159
        var MSG_SEPARATOR = _("Separator must be / in field %s");
135
        var MSG_INCORRECT_DAY = _("Invalid day entered in field %s");
160
        var MSG_INCORRECT_DAY = _("Invalid day entered in field %s");
136
        var MSG_INCORRECT_MONTH = _("Invalid month entered in field %s");
161
        var MSG_INCORRECT_MONTH = _("Invalid month entered in field %s");
Lines 329-335 Link Here
329
                [% END %]
354
                [% END %]
330
                Date of birth: </label>
355
                Date of birth: </label>
331
356
332
                <input type="text" id="dateofbirth" name="dateofbirth" size="20" onchange="CalculateAge();" value="[% UNLESS opduplicate %][% dateofbirth %][% END %]" />
357
                <input type="text" id="dateofbirth" name="dateofbirth" size="20" onchange="write_age();" value="[% UNLESS opduplicate %][% dateofbirth %][% END %]" />
333
358
334
        [% IF ( mandatorydateofbirth ) %]<span class="required">Required</span>[% END %]
359
        [% IF ( mandatorydateofbirth ) %]<span class="required">Required</span>[% END %]
335
        [% IF ( ERROR_dateofbirth ) %]<span class="required">(Error)</span>[% END %]
360
        [% IF ( ERROR_dateofbirth ) %]<span class="required">(Error)</span>[% END %]
336
- 

Return to bug 15206