From d49f7741bf82e09f7630d1d0e029e57662a76c37 Mon Sep 17 00:00:00 2001 From: Alex Arnaud Date: Mon, 4 Jan 2016 14:49:04 +0100 Subject: [PATCH] Bug 15206 - Show patron's age under date of birth in memberentry.pl Test plan: Create or edit a patron (members/memberentry.pl), enter a date of birth (for a new patron), patron'a age should be shown under Signed-off-by: Owen Leonard Signed-off-by: Jonathan Druart Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com --- koha-tmpl/intranet-tmpl/prog/en/js/members.js | 51 ++++++++ .../prog/en/modules/members/memberentrygen.tt | 119 +++++++++++++++++- 2 files changed, 165 insertions(+), 5 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/members.js b/koha-tmpl/intranet-tmpl/prog/en/js/members.js index 59deeaea42..1dd1cb8282 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/js/members.js +++ b/koha-tmpl/intranet-tmpl/prog/en/js/members.js @@ -217,6 +217,57 @@ function select_user(borrowernumber, borrower) { return 0; } +function CalculateAge() { + var hint = $("#dateofbirth").siblings(".hint").first(); + hint.html(dateformat); + + if (dformat == 'metric' && false === CheckDate(document.form.dateofbirth)) { + return; + } + + if (!$("#dateofbirth").datepicker( 'getDate' )) { + return; + } + + var today = new Date(); + var dob = new Date($("#dateofbirth").datepicker( 'getDate' )); + + var nowyear = today.getFullYear(); + var nowmonth = today.getMonth(); + var nowday = today.getDate(); + + var birthyear = dob.getFullYear(); + var birthmonth = dob.getMonth(); + var birthday = dob.getDate(); + + var year = nowyear - birthyear; + var month = nowmonth - birthmonth; + var day = nowday - birthday; + + if(day < 0) { + month = parseInt(month) -1; + } + + if(month < 0) { + year = parseInt(year) -1; + month = 12 + month; + } + + var age_string; + if (year || month) { + age_string = _('Age: '); + } + if (year) { + age_string += _(year > 1 ? '%s years ' : '%s year ').format(year); + } + + if (month) { + age_string += _(month > 1 ? '%s months ' : '%s month ').format(month); + } + + hint.html(age_string); +} + $(document).ready(function(){ if($("#yesdebarred").is(":checked")){ $("#debarreduntil").show(); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt index 497c1a75c1..78c5e05acf 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -16,8 +16,121 @@ update_category_code( category_code ); } [% END %] + $("#dateofbirth").datepicker({ maxDate: "-1D", yearRange: "c-120:" }); + dateformat = $("#dateofbirth").siblings(".hint").first().html(); + CalculateAge(); + $("#entryform").validate({ + rules: { + email: { + email: true + }, + emailpro: { + email: true + }, + B_email: { + email: true + } + }, + submitHandler: function(form) { + $("body, form input[type='submit'], form button[type='submit'], form a").addClass('waiting'); + if (form.beenSubmitted) + return false; + else + form.beenSubmitted = true; + form.submit(); + } + }); + + var mrform = $("#manual_restriction_form"); + var mrlink = $("#add_manual_restriction"); + mrform.hide(); + mrlink.on("click",function(e){ + $(this).hide(); + mrform.show(); + e.preventDefault(); + }); + $("#cancel_manual_restriction").on("click",function(e){ + $('#debarred_expiration').val(''); + $('#add_debarment').val(0); + $('#debarred_comment').val(''); + mrlink.show(); + mrform.hide(); + e.preventDefault(); + }); }); + function clear_entry(node) { + var original = $(node).parent(); + $("textarea", original).attr('value', ''); + $("select", original).attr('value', ''); + } + + function clone_entry(node) { + var original = $(node).parent(); + var clone = original.clone(); + + var newId = 50 + parseInt(Math.random() * 100000); + $("input,select,textarea", clone).attr('id', function() { + return this.id.replace(/patron_attr_\d+/, 'patron_attr_' + newId); + }); + $("input,select,textarea", clone).attr('name', function() { + return this.name.replace(/patron_attr_\d+/, 'patron_attr_' + newId); + }); + $("label", clone).attr('for', function() { + return $(this).attr("for").replace(/patron_attr_\d+/, 'patron_attr_' + newId); + }); + $("input#patron_attr_" + newId, clone).attr('value',''); + $("select#patron_attr_" + newId, clone).attr('value',''); + $(original).after(clone); + return false; + } + + function update_category_code(category_code) { + if ( $(category_code).is("select") ) { + category_code = $("#categorycode_entry").find("option:selected").val(); + } + var mytables = $(".attributes_table"); + $(mytables).find("li").hide(); + $(mytables).find(" li[data-category_code='"+category_code+"']").show(); + $(mytables).find(" li[data-category_code='']").show(); + } + + function select_user(borrowernumber, borrower) { + var form = $('#entryform').get(0); + if (form.guarantorid.value) { + $("#contact-details").find('a').remove(); + $("#contactname, #contactfirstname").parent().find('span').remove(); + } + + var id = borrower.borrowernumber; + form.guarantorid.value = id; + $('#contact-details') + .show() + .find('span') + .after('' + id + ''); + + $(form.contactname) + .val(borrower.surname) + .before('' + borrower.surname + '').get(0).type = 'hidden'; + $(form.contactfirstname) + .val(borrower.firstname) + .before('' + borrower.firstname + '').get(0).type = 'hidden'; + + form.streetnumber.value = borrower.streetnumber; + form.address.value = borrower.address; + form.address2.value = borrower.address2; + form.city.value = borrower.city; + form.state.value = borrower.state; + form.zipcode.value = borrower.zipcode; + form.country.value = borrower.country; + form.branchcode.value = borrower.branchcode; + + form.guarantorsearch.value = _("Change"); + + return 0; + } + +>>>>>>> Bug 15206 - Show patron's age under date of birth in memberentry.pl var MSG_SEPARATOR = _("Separator must be / in field %s"); var MSG_INCORRECT_DAY = _("Invalid day entered in field %s"); var MSG_INCORRECT_MONTH = _("Invalid month entered in field %s"); @@ -216,11 +329,7 @@ [% END %] Date of birth: - [% IF ( dateformat == "metric" ) %] - - [% ELSE %] - - [% END %] + [% IF ( mandatorydateofbirth ) %]Required[% END %] [% IF ( ERROR_dateofbirth ) %](Error)[% END %] -- 2.39.5