@@ -, +, @@ 1 - Apply patches 2 - Update database and restart all, clear browser cache 3 - Load a patron in staff module 4 - Confirm you see and can add a preferred name 5 - Confirm the preferred name and first name now displays on patron details 6 - Remove first name from patron record and confirm it no longer shows 7 - Edit sysprefs BorrowerMandatoryFields and BorrowerUnwantedFields to confirm you can make new field required or hidden 8 - Sign in as patron to opac 9 - Confirm preferred name shows --- Koha/Patron.pm | 13 ++++ circ/ysearch.pl | 2 +- .../prog/en/includes/patron-title.inc | 13 +++- .../prog/en/includes/patronfields.inc | 1 + .../modules/admin/preferences/borrowers.json | 60 +++++++++++++++++++ .../en/modules/admin/preferences/patrons.pref | 2 +- .../prog/en/modules/members/memberentrygen.tt | 17 +++++- .../prog/en/modules/members/members-update.tt | 1 + .../prog/en/modules/members/moremember.tt | 8 ++- .../bootstrap/en/includes/patron-title.inc | 2 +- .../bootstrap/en/modules/opac-memberentry.tt | 15 ++++- t/db_dependent/Koha/Patron.t | 25 +++++++- 12 files changed, 148 insertions(+), 11 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/borrowers.json --- a/Koha/Patron.pm +++ a/Koha/Patron.pm @@ -107,6 +107,19 @@ sub new { return $class->SUPER::new($params); } +=head3 effective_name + +Return the preferred name for a patron, or their firstname if no +preferred name is set + +=cut + +sub effective_name { + my ( $self ) = @_; + + return $self->preferred_name || $self->firstname; +} + =head3 fixup_cardnumber Autogenerate next cardnumber from highest value found in database --- a/circ/ysearch.pl +++ a/circ/ysearch.pl @@ -84,7 +84,7 @@ while ( my $b = $borrowers_rs->next ) { push @borrowers, { borrowernumber => $b->borrowernumber, surname => $b->surname // '', - firstname => $b->firstname // '', + firstname => $b->effective_name // '', cardnumber => $b->cardnumber // '', dateofbirth => format_sqldatetime($b->dateofbirth, undef, undef, 1) // '', age => $b->get_age // '', --- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-title.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-title.inc @@ -7,6 +7,8 @@ [%- SET data.surname = patron.surname -%] [%- SET data.othernames = patron.othernames -%] [%- SET data.firstname = patron.firstname -%] + [%- SET data.preferred_name = patron.preferred_name -%] + [%- SET data.effective_name = patron.effective_name -%] [%- SET data.cardnumber = patron.cardnumber -%] [%- SET data.borrowernumber = patron.borrowernumber -%] [%- SET data.title = patron.title -%] @@ -15,6 +17,8 @@ [%- SET data.surname = borrower.surname -%] [%- SET data.othernames = borrower.othernames -%] [%- SET data.firstname = borrower.firstname -%] + [%- SET data.preferred_name = borrower.preferred_name -%] + [%- SET data.effective_name = borrower.effective_name -%] [%- SET data.cardnumber = borrower.cardnumber -%] [%- SET data.borrowernumber = borrower.borrowernumber -%] [%- SET data.title = borrower.title -%] @@ -23,10 +27,15 @@ [%- SET data.surname = surname -%] [%- SET data.othernames = othernames -%] [%- SET data.firstname = firstname -%] + [%- SET data.preferred_name = preferred_name -%] + [%- SET data.effective_name = effective_name -%] [%- SET data.cardnumber = cardnumber -%] [%- SET data.borrowernumber = borrowernumber -%] [%- SET data.title = title -%] [%- END -%] +[%- UNLESS data.effective_name -%] + [%- SET data.effective_name = data.preferred_name || data.firstname -%] +[%- END -%] [%# Parameter no_html - if 1, the html tags are NOT generated %] [%- IF no_title %][% SET data.title = "" %][% END -%] [%- IF data.title %] @@ -61,9 +70,9 @@ [%- IF data.category_type == 'I' -%] [%- data.surname | html %] [% IF data.othernames %] ([% data.othernames | html %])[% END -%] [%- ELSIF invert_name -%] - [% data.title | $raw %][%- data.surname | html %][% IF ( data.firstname ) %], [% data.firstname | html %][% END %][% IF data.othernames %] ([% data.othernames | html %]) [% END -%] + [% data.title | $raw %][%- data.surname | html %][% IF ( data.effective_name ) %], [% data.effective_name | html %][% END %][% IF data.othernames %] ([% data.othernames | html %]) [% END -%] [%- ELSE -%] - [% data.title | $raw %][%- data.firstname | html %] [% IF data.othernames %] ([% data.othernames | html %]) [% END %] [% data.surname | html -%] + [% data.title | $raw %][%- data.effective_name | html %] [% IF data.othernames %] ([% data.othernames | html %]) [% END %] [% data.surname | html -%] [%- END -%] [%- IF display_cardnumber AND data.cardnumber %] ([% data.cardnumber | html %])[% END -%] [%- ELSIF display_cardnumber -%] --- a/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc @@ -5,6 +5,7 @@ [%- CASE 'cardnumber' -%]Card number [%- CASE 'surname' -%]Surname [%- CASE 'firstname' -%]First name + [%- CASE 'preferred_name' -%]Preferred name [%- CASE 'title' -%]Salutation [%- CASE 'othernames' -%]Other name [%- CASE 'initials' -%]Initials --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/borrowers.json +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/borrowers.json @@ -0,0 +1,60 @@ +{ + "cardnumber": "cardnumber", + "surname": "surname", + "firstname": "firstname", + "preferred_name": "preferred_name", + "title": "title", + "othernames": "othernames", + "initials": "initials", + "streetnumber": "streetnumber", + "streettype": "streettype", + "address": "address", + "address2": "address2", + "city": "city", + "state": "state", + "zipcode": "zipcode", + "country": "country", + "email": "email", + "phone": "phone", + "mobile": "mobile", + "fax": "fax", + "emailpro": "emailpro", + "phonepro": "phonepro", + "B_streetnumber": "B_streetnumber", + "B_streettype": "B_streettype", + "B_address": "B_address", + "B_address2": "B_address2", + "B_city": "B_city", + "B_state": "B_state", + "B_zipcode": "B_zipcode", + "B_country": "B_country", + "B_email": "B_email", + "B_phone": "B_phone", + "dateofbirth": "dateofbirth", + "dateenrolled": "dateenrolled", + "dateexpiry": "dateexpiry", + "branchcode": "branchcode", + "categorycode": "categorycode", + "contactname": "contactname", + "contactfirstname": "contactfirstname", + "borrowernotes": "borrowernotes", + "sex": "sex", + "password": "password", + "userid": "userid", + "opacnote": "opacnote", + "contactnote": "contactnote", + "altcontactfirstname": "altcontactfirstname", + "altcontactsurname": "altcontactsurname", + "altcontactaddress1": "altcontactaddress1", + "altcontactaddress2": "altcontactaddress2", + "altcontactaddress3": "altcontactaddress3", + "altcontactstate": "altcontactstate", + "altcontactzipcode": "altcontactzipcode", + "altcontactcountry": "altcontactcountry", + "altcontactphone": "altcontactphone", + "smsalertnumber": "smsalertnumber", + "autorenew_checkouts": "autorenew_checkouts", + "primary_contact_method": "primary_contact_method", + "sort1": "sort1", + "sort2": "sort2" +} --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref @@ -48,7 +48,7 @@ Patrons: - "Comma separated list defining the default fields to be used during a patron search using the \"standard\" option:" - pref: DefaultPatronSearchFields class: multi - - "If empty Koha will default to \"firstname,surname,othernames,cardnumber,userid\". Additional fields added to this preference will be added as search options in the dropdown menu on the patron search page." + - "If empty Koha will default to \"firstname,surname,preferred_name,othernames,cardnumber,userid\". Additional fields added to this preference will be added as search options in the dropdown menu on the patron search page." - - "Show the following fields from the items database table as columns on the statistics tab on the patron record: " - pref: StatisticsFields --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -264,7 +264,7 @@ legend:hover { [% END %] [% IF ( step_1 ) %] - [% UNLESS notitle && nosurname && nofirstname && nodateofbirth && noinitials && noothernames &&nosex %] + [% UNLESS notitle && nosurname && nofirstname && nopreferred_name && nodateofbirth && noinitials && noothernames &&nosex %]