@@ -, +, @@ --- ...PatronSelfRegistrationConfirmEmail_syspref.perl | 6 ++++ installer/data/mysql/sysprefs.sql | 1 + .../prog/en/modules/admin/preferences/opac.pref | 6 ++++ .../bootstrap/en/modules/opac-memberentry.tt | 34 ++++++++++++++++++++++ opac/opac-memberentry.pl | 6 ++++ 5 files changed, 53 insertions(+) create mode 100644 installer/data/mysql/atomicupdate/bug_24913-add_PatronSelfRegistrationConfirmEmail_syspref.perl --- a/installer/data/mysql/atomicupdate/bug_24913-add_PatronSelfRegistrationConfirmEmail_syspref.perl +++ a/installer/data/mysql/atomicupdate/bug_24913-add_PatronSelfRegistrationConfirmEmail_syspref.perl @@ -0,0 +1,6 @@ +$DBversion = 'XXX'; +if( CheckVersion( $DBversion ) ) { + $dbh->do(q{INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('PatronSelfRegistrationConfirmEmail', '0', NULL, 'Require users to confirm their email address by entering it twice.', 'YesNo') }); + + NewVersion( $DBversion, 24913, "Add PatronSelfRegistrationConfirmEmail syspref"); +} --- a/installer/data/mysql/sysprefs.sql +++ a/installer/data/mysql/sysprefs.sql @@ -491,6 +491,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('PatronSelfRegistrationAdditionalInstructions','','','A free text field to display additional instructions to newly self registered patrons.','free'), ('PatronSelfRegistrationBorrowerMandatoryField','surname|firstname',NULL,'Choose the mandatory fields for a patron\'s account, when registering via the OPAC.','free'), ('PatronSelfRegistrationBorrowerUnwantedField','',NULL,'Name the fields you don\'t want to display when registering a new patron via the OPAC.','free'), +('PatronSelfRegistrationConfirmEmail', '0', NULL, 'Require users to confirm their email address by entering it twice.', 'YesNo'), ('PatronSelfRegistrationDefaultCategory','','','A patron registered via the OPAC will receive a borrower category code set in this system preference.','free'), ('PatronSelfRegistrationEmailMustBeUnique', '0', 'If set, the field borrowers.email will be considered as a unique field on self registering', NULL, 'YesNo'), ('PatronSelfRegistrationExpireTemporaryAccountsDelay','0',NULL,'If PatronSelfRegistrationDefaultCategory is enabled, this system preference controls how long a patron can have a temporary status before the account is deleted automatically. It is an integer value representing a number of days to wait before deleting a temporary patron account. Setting it to 0 disables the deleting of temporary accounts.','Integer'), --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref @@ -881,6 +881,12 @@ OPAC: yes: "Display and prefill" no: "Do not display and prefill" - "password and login form after a patron has self registered." + - + - pref: PatronSelfRegistrationConfirmEmail + choices: + yes: Require + no: "Do not require" + - users to confirm their email address by entering it twice. Advanced search options: - --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt +++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt @@ -93,6 +93,9 @@ [% IF field == "duplicate_email" %]
  • This email address already exists in our database.
  • [% END %] + [% IF field == "email_match" %] +
  • Emails do not match! confirm email address
  • + [% END %] [% END %] Please correct and resubmit. @@ -554,6 +557,19 @@ [% IF mandatory.defined('email') %]Required[% END %] + + [% IF action != 'edit' and Koha.Preference('PatronSelfRegistrationConfirmEmail') %] +
  • + [% IF mandatory.defined('email') %] + + [% ELSE %] + + [% END %] + + + [% IF mandatory.defined('email') %]Required[% END %] +
  • + [% END %] [% END %] [% UNLESS hidden.defined('emailpro') %] @@ -1004,6 +1020,9 @@ borrower_email: { email: true }, + borrower_repeat_email: { + equalTo: '#borrower_email' + }, borrower_emailpro: { email: true }, @@ -1129,6 +1148,21 @@ $('#borrower_dateofbirth').val(''); return false; }); + + [% IF action != 'edit' and Koha.Preference('PatronSelfRegistrationConfirmEmail') %] + $("#borrower_email").bind("cut copy paste", function(e){ + e.preventDefault(); + $("#borrower_email").bind("contextmenu", function(e){ + e.preventDefault(); + }); + }); + $("#borrower_repeat_email").bind("cut copy paste", function(e){ + e.preventDefault(); + $("#borrower_repeat_email").bind("contextmenu", function(e){ + e.preventDefault(); + }); + }); + [% END %] //]]> [% INCLUDE 'calendar.inc' %] --- a/opac/opac-memberentry.pl +++ a/opac/opac-memberentry.pl @@ -433,7 +433,13 @@ sub CheckForInvalidFields { if ( $patrons_with_same_email ) { push @invalidFields, "duplicate_email"; } + } elsif ( C4::Context->preference("PatronSelfRegistrationConfirmEmail") + && $borrower->{'email'} ne $borrower->{'repeat_email'} + && !defined $borrower->{borrowernumber} ) { + push @invalidFields, "email_match"; } + # email passed all tests, so prevent attempting to store repeat_email + delete $borrower->{'repeat_email'}; } if ($borrower->{'emailpro'}) { push(@invalidFields, "emailpro") if (!Email::Valid->address($borrower->{'emailpro'})); --