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 <oleonard@myacpl.org>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
This commit is contained in:
Alex Arnaud 2016-01-04 14:49:04 +01:00 committed by Brendan Gallagher
parent e8036c9794
commit d49f7741bf
2 changed files with 165 additions and 5 deletions

View file

@ -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();

View file

@ -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('<a target="blank" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + id + '">' + id + '</a>');
$(form.contactname)
.val(borrower.surname)
.before('<span>' + borrower.surname + '</span>').get(0).type = 'hidden';
$(form.contactfirstname)
.val(borrower.firstname)
.before('<span>' + borrower.firstname + '</span>').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: </label>
[% IF ( dateformat == "metric" ) %]
<input type="text" id="dateofbirth" name="dateofbirth" size="20" onchange="CheckDate(document.form.dateofbirth);" value="[% UNLESS opduplicate %][% dateofbirth %][% END %]" />
[% ELSE %]
<input type="text" id="dateofbirth" name="dateofbirth" size="20" value="[% UNLESS opduplicate %][% dateofbirth %][% END %]" />
[% END %]
<input type="text" id="dateofbirth" name="dateofbirth" size="20" onchange="CalculateAge();" value="[% UNLESS opduplicate %][% dateofbirth %][% END %]" />
[% IF ( mandatorydateofbirth ) %]<span class="required">Required</span>[% END %]
[% IF ( ERROR_dateofbirth ) %]<span class="required">(Error)</span>[% END %]