Koha/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt
Julian Maurice ed7543287b Bug 20538: Remove the need of writing [% KOHA_VERSION %] everywhere
Having to write [% KOHA_VERSION %] for each url is bad because:
- It's easily forgettable when adding new <script> or <link>
- It prevents grep'ing for the full filename
- It violates the DRY principle
- If at some point we want to change the "force js and css reload"
  mechanism, it will be tedious

This patch:
- adds a Template::Toolkit plugin that generates <script> and
  <link> tags for JS and CSS files, and inserts automatically the Koha
  version in the filename
- use the new plugin to remove all occurences of [% KOHA_VERSION %]
- remove the code that was adding KOHA_VERSION as a template variable

Test plan:
1. Apply patch
2. Go to several different pages in Koha (opac and intranet) while
   checking your browser's dev tools (there should be no 404 for JS and
   CSS files, and the Koha version should appear in filenames) and the
   server logs (there should be no "File not found")
3. `git grep KOHA_VERSION` should return nothing
4. prove t/db_dependent/Koha/Template/Plugin/Asset.t

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2018-04-13 11:49:44 -03:00

1042 lines
63 KiB
Text

[% USE Asset %]
[% USE AuthorisedValues %]
[% USE Categories %]
[% USE Koha %]
[% USE Branches %]
[% USE KohaDates %]
[% USE Math %]
[% SET userupdateview = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; [% IF action == 'edit' %]Update your personal details[% ELSE %]Register a new account[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
[% BLOCK cssinclude %][% END %]
</head>
[% IF action == 'edit' %]
[% INCLUDE 'bodytag.inc' bodyid='opac-patron-update' %]
[% ELSE %]
<body id="opac-patron-registration" class="opac">
[% END %]
[% INCLUDE 'masthead.inc' %]
<div class="main">
<ul class="breadcrumb">
<li><a href="/cgi-bin/koha/opac-main.pl">Home</a> <span class="divider">&rsaquo;</span></li>
[% IF action == 'edit' %]
<li><a href="/cgi-bin/koha/opac-user.pl">[% borrower.firstname %] [% borrower.surname %]</a> <span class="divider">&rsaquo;</span></li>
<li><a href="#">Your personal details</a></li>
[% ELSE %]
<li><a href="#">Register a new account</a></li>
[% END %]
</ul>
<div class="container-fluid">
<div class="row-fluid">
<div class="span2">
<div id="navigation">
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
</div>
</div>
<div class="span10">
[% IF action == 'edit' %]
<div id="update-account">
[% ELSE %]
<div id="add-account">
[% END %]
[% IF action == 'edit' %]
[% UNLESS OPACPatronDetails %]
<div class="alert alert-info">To make changes to your record please contact the library.</div>
[% END %]
[% IF nochanges %]
<div class="alert alert-error">No changes were made.</div>
[% END %]
[% END %]
[% IF empty_mandatory_fields %]
<div class="alert">You have not filled out all required fields. Please fill in all missing fields and resubmit.</div>
[% END %]
[% IF invalid_form_fields %]
<div class="alert alert-error"><strong>The following fields contain invalid information:</strong>
<ul>
[% FOREACH field IN invalid_form_fields %]
[% IF field == "email" %]<li>Contact information: <a href="#borrower_email">primary email address</a></li>[% END %]
[% IF field == "emailpro" %]<li>Contact information: <a href="#borrower_emailpro">secondary email address</a></li>[% END %]
[% IF field == "B_email" %]<li>Alternate address information: <a href="#borrower_B_email">email address</a></li>[% END %]
[% IF field == "password_match" %]<li>Passwords do not match! <a href="#password">password</a></li>[% END %]
[% IF field == "password_too_short" %]
<li>Password must be at least [% minPasswordLength %] characters long.</li>
[% END %]
[% IF field == "password_too_weak" %]
<li>Password must contain at least one digit, one lowercase and one uppercase.</li>
[% END %]
[% IF field == "password_has_whitespaces" %]
<li>Password must not contain leading or trailing whitespaces.</li>
[% END %]
[% IF field == "duplicate_email" %]
<li>This email address already exists in our database.</li>
[% END %]
[% END %]
</ul>
<span>Please correct and resubmit.</span>
</div>
[% END %]
[% IF cardnumber_wrong_length || cardnumber_already_exists %]
<div class="alert alert-error">
[% IF cardnumber_wrong_length %]
<a href="#borrower_cardnumber"><strong>The entered card number is the wrong length.</strong></a>
[% ELSIF cardnumber_already_exists %]
<a href="#borrower_cardnumber"><strong>The entered card number is already in use.</strong></a>
[% END %]
<span>Please correct and resubmit.</span>
</div>
[% END %]
[% IF failed_captcha %]
<div class="alert">You typed in the wrong characters in the box before submitting. Please try again.</div>
[% END %]
[% IF borrower.guarantorid && !Koha.Preference('OPACPrivacy') && Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') %]
<fieldset class="rows" id="memberentry_privacy">
<legend id="privacy_legend">Privacy</legend>
<ol>
<li>
<label>Allow your guarantor to view your current checkouts?</label>
<select id="privacy_guarantor_checkouts">
<option value="0">No</option>
[% IF borrower.privacy_guarantor_checkouts %]
<option value="1" selected="selected">Yes</option>
[% ELSE %]
<option value="1">Yes</option>
[% END %]
</select>
<span class="hint">
<a id="update_privacy_guarantor_checkouts" href="#" class="btn">Update</a>
<span id="update_privacy_guarantor_checkouts_message" class="alert" style="display:none"></span>
</span>
<span class="hint">
Your guarantor is <i>[% guarantor.firstname %] [% guarantor.surname %]</i>
</span>
</li>
</ol>
</fieldset>
[% END %]
[% IF ( extended_unique_id_failed_code ) %]
<div class="alert" id="extended_unique_id_failed"><a href="#patron-attr-start-[% extended_unique_id_failed_code %]">[% extended_unique_id_failed_description _ ': ' %]</a> Value is already in use ([% extended_unique_id_failed_value %])</div>
[% END %]
<form method="post" action="/cgi-bin/koha/opac-memberentry.pl" id="memberentry-form" autocomplete="off">
[%# Following on one line for translatability %]
[% UNLESS ( hidden.defined('cardnumber') || ( !borrower && Koha.Preference('autoMemberNum') ) ) && hidden.defined('dateexpiry') && hidden.defined('branchcode') && hidden.defined('categorycode') %]
<fieldset class="rows" id="memberentry_library">
<legend id="library_legend">Library</legend>
<ol>
[% UNLESS hidden.defined('cardnumber') || ( !borrower && Koha.Preference('autoMemberNum') ) %]
<li>
[% IF mandatory.defined('cardnumber') %]
<label for="borrower_cardnumber" class="required">Library card number:</label>
[% ELSE %]
<label for="borrower_cardnumber">Library card number:</label>
[% END %]
[% IF borrower && !(cardnumber_wrong_length || cardnumber_already_exists) %]
[% borrower.cardnumber %]
[% ELSE %]
[% IF minlength_cardnumber == maxlength_cardnumber %]
<input type="text" id="borrower_cardnumber" name="borrower_cardnumber" size="20" value="[% borrower.cardnumber %]" minlength="[% minlength_cardnumber %]" maxlength="[% maxlength_cardnumber %]" />
[% IF ( mandatory.defined('cardnumber') ) %]<span class="required">Required</span>[% END %]
<div class="hint">Card number must be exactly [% minlength_cardnumber %] characters.</div>
[% ELSIF minlength_cardnumber && maxlength_cardnumber %]
<input type="text" id="borrower_cardnumber" name="borrower_cardnumber" size="20" value="[% borrower.cardnumber %]" minlength="[% minlength_cardnumber %]" maxlength="[% maxlength_cardnumber %]" />
[% IF ( mandatory.defined('cardnumber') ) %]<span class="required">Required</span>[% END %]
<div class="hint">Card number must be between [% minlength_cardnumber %] and [% maxlength_cardnumber %] characters.</div>
[% ELSIF maxlength_cardnumber %]
<input type="text" id="borrower_cardnumber" name="borrower_cardnumber" size="20" value="[% borrower.cardnumber %]" maxlength="[% maxlength_cardnumber %]" />
[% IF ( mandatory.defined('cardnumber') ) %]<span class="required">Required</span>[% END %]
<div class="hint">Card number can be up to [% maxlength_cardnumber %] characters.</div>
[% ELSE %]
<input type="text" id="borrower_cardnumber" name="borrower_cardnumber" size="20" value="[% borrower.cardnumber %]" />
[% IF ( mandatory.defined('cardnumber') ) %]<span class="required">Required</span>[% END %]
<div class="hint">There is no minimum or maximum character length.</div>
[% END %]
[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('dateexpiry') %]
<li>
<label>Expiration date:</label>
[% borrower.dateexpiry | $KohaDates %]
</li>
[% END %]
[% UNLESS hidden.defined('branchcode') %]
<li>
[% IF mandatory.defined('branchcode') %]
<label for="borrower_branchcode" class="required">Home library:</label>
[% ELSE %]
<label for="borrower_branchcode">Home library:</label>
[% END %]
<select id="borrower_branchcode" name="borrower_branchcode">
[% FOREACH l IN libraries %]
[% IF l.branchcode == borrower.branchcode %]
<option value="[% l.branchcode | html %]" selected="selected">[% l.branchname %]</option>
[% ELSE %]
<option value="[% l.branchcode | html %]">[% l.branchname %]</option>
[% END %]
[% END %]
</select>
</li>
[% END %]
[% UNLESS hidden.defined('categorycode') %]
<li>
<label for="borrower_categorycode">
Category:</label>
[% IF borrower %]
[% Categories.GetName( borrower.categorycode ) %]
<input type="hidden" name="borrower_categorycode" value="[% borrower.categorycode %]" />
[% ELSE %]
<select id="borrower_categorycode" name="borrower_categorycode">
[% FOREACH c IN Categories.all() %]
[% IF c.categorycode == Koha.Preference('PatronSelfRegistrationDefaultCategory') %]
<option value="[% c.categorycode %]" selected="selected">[% c.description %]</option>
[% ELSE %]
<option value="[% c.categorycode %]">[% c.description %]</option>
[% END %]
[% END %]
</select>
[% END %]
</li>
[% END %]
</ol>
</fieldset>
[% END # / defined 'branchcode' %]
[%# Following on one line for translatability %]
[% UNLESS hidden.defined('title') && hidden.defined('surname') && hidden.defined('firstname') && hidden.defined('dateofbirth') && hidden.defined('initials') && hidden.defined('othernames') && hidden.defined('sex') %]
<div class="row-fluid">
[% IF ( display_patron_image ) %]
<div class="span8">
[% ELSE %]
<div class="span12">
[% END %]
<fieldset class="rows" id="memberentry_identity">
<legend id="identity_legend">Identity</legend>
<ol>
[% UNLESS hidden.defined('title') || !Koha.Preference('BorrowersTitles') %]
<li>
[% IF mandatory.defined('title') %]
<label for="borrower_title" class="required">Salutation:</label>
[% ELSE %]
<label for="borrower_title">Salutation:</label>
[% END %]
<select id="borrower_title" name="borrower_title">
<option value=""></option>
[% FOREACH mt IN Koha.Preference('BorrowersTitles').split('\|') %]
[% IF mt == borrower.title %]
<option value="[% mt %]" selected="selected">[% mt %]</option>
[% ELSE %]
<option value="[% mt %]">[% mt %]</option>
[% END %]
[% END %]
</select>
</li>
[% END %]
[% UNLESS hidden.defined('surname') %]
<li>
[% IF mandatory.defined('surname') %]
<label for="borrower_surname" class="required">Surname:</label>
[% ELSE %]
<label for="borrower_surname">Surname:</label>
[% END %]
<input type="text" id="borrower_surname" name="borrower_surname" value="[% borrower.surname %]" />
[% IF mandatory.defined('surname') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('firstname') %]
<li>
[% IF mandatory.defined('firstname') %]
<label for="borrower_firstname" class="required">First name:</label>
[% ELSE %]
<label for="borrower_firstname">First name:</label>
[% END %]
<input type="text" id="borrower_firstname" name="borrower_firstname" value="[% borrower.firstname %]" />
[% IF mandatory.defined('firstname') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('dateofbirth') %]
<li>
[% IF mandatory.defined('dateofbirth') %]
<label for="borrower_dateofbirth" class="required">Date of birth:</label>
[% ELSE %]
<label for="borrower_dateofbirth">Date of birth:</label>
[% END %]
<input type="text" id="borrower_dateofbirth" name="borrower_dateofbirth" value="[% borrower.dateofbirth | $KohaDates %]" size="10" />
[% UNLESS action == 'edit' && !OPACPatronDetails %]
[% UNLESS ( mandatory.defined('dateofbirth') ) %]
<a href="#" style="font-size:85%;text-decoration:none;" class="cleardate">Clear date</a>
[% END %]
[% END %]
[% IF mandatory.defined('dateofbirth') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('initials') %]
<li>
[% IF mandatory.defined('initials') %]
<label for="borrower_initials" class="required">Initials:</label>
[% ELSE %]
<label for="borrower_initials">Initials:</label>
[% END %]
<input type="text" id="borrower_initials" name="borrower_initials" value="[% borrower.initials %]" />
[% IF mandatory.defined('initials') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('othernames') %]
<li>
[% IF mandatory.defined('othernames') %]
<label for="borrower_othernames" class="required">Other names:</label>
[% ELSE %]
<label for="borrower_othernames">Other names:</label>
[% END %]
<input type="text" id="borrower_othernames" name="borrower_othernames" value="[% borrower.othernames %]" />
[% IF mandatory.defined('othernames') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('sex') %]
<li class="lradio">
<label for="sex-female" class="radio inline">Female:</label>
[% IF borrower.sex == 'F' %]
<input type="radio" name="borrower_sex" id="sex-female" value="F" checked="checked" />
[% ELSE %]
<input type="radio" name="borrower_sex" id="sex-female" value="F" />
[% END %]
<label for="sex-male" class="radio inline">Male:</label>
[% IF borrower.sex == 'M' %]
<input type="radio" name="borrower_sex" id="sex-male" value="M" checked="checked" />
[% ELSE %]
<input type="radio" name="borrower_sex" id="sex-male" value="M" />
[% END %]
<label for="sex-none" class="radio inline">None specified: </label>
[% IF borrower.sex == '' %]
<input type="radio" name="borrower_sex" id="sex-none" value="" checked="checked" />
[% ELSE %]
<input type="radio" name="borrower_sex" id="sex-none" value="" />
[% END %]
[% IF mandatory.defined('sex') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
</ol>
</fieldset>
</div>
[% IF ( display_patron_image ) %]
<div class="span4">
<p class="patronimage">
<img src="/cgi-bin/koha/opac-patron-image.pl" alt="" />
</p>
</div>
[% END %]
</div>
[% END # /UNLESS fields hidden %]
[%# Following on one line for translatability %]
[% UNLESS hidden.defined('streetnumber') && hidden.defined('address') && hidden.defined('address2') && hidden.defined('city') && hidden.defined('state') && hidden.defined('zipcode') && hidden.defined('country') %]
<fieldset class="rows" id="memberentry_mainaddress">
<legend id="mainaddress_legend">Main address</legend>
<ol>
[% UNLESS hidden.defined('streetnumber') %]
<li>
[% IF mandatory.defined('streetnumber') %]
<label for="borrower_streetnumber" class="required">Street number:</label>
[% ELSE %]
<label for="borrower_streetnumber">Street number:</label>
[% END %]
<input type="text" id="borrower_streetnumber" name="borrower_streetnumber" value="[% borrower.streetnumber %]" />
[% IF mandatory.defined('streetnumber') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('address') %]
<li>
[% IF mandatory.defined('address') %]
<label for="borrower_address" class="required">Address:</label>
[% ELSE %]
<label for="borrower_address">Address:</label>
[% END %]
<input type="text" id="borrower_address" name="borrower_address" value="[% borrower.address %]" />
[% IF mandatory.defined('address') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('address2') %]
<li>
[% IF mandatory.defined('address2') %]
<label for="borrower_address2" class="required">Address 2:</label>
[% ELSE %]
<label for="borrower_address2">Address 2:</label>
[% END %]
<input type="text" id="borrower_address2" name="borrower_address2" value="[% borrower.address2 %]" />
[% IF mandatory.defined('address2') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('city') %]
<li>
[% IF mandatory.defined('city') %]
<label for="borrower_city" class="required">City:</label>
[% ELSE %]
<label for="borrower_city">City:</label>
[% END %]
<input type="text" id="borrower_city" name="borrower_city" value="[% borrower.city %]" />
[% IF mandatory.defined('city') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('state') %]
<li>
[% IF mandatory.defined('state') %]
<label for="borrower_state" class="required">State:</label>
[% ELSE %]
<label for="borrower_state">State:</label>
[% END %]
<input type="text" id="borrower_state" name="borrower_state" value="[% borrower.state %]" />
[% IF mandatory.defined('state') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('zipcode') %]
<li>
[% IF mandatory.defined('zipcode') %]
<label for="borrower_zipcode" class="required">ZIP/Postal code:</label>
[% ELSE %]
<label for="borrower_zipcode">ZIP/Postal code:</label>
[% END %]
<input type="text" id="borrower_zipcode" name="borrower_zipcode" value="[% borrower.zipcode %]" />
[% IF mandatory.defined('zipcode') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('country') %]
<li>
[% IF mandatory.defined('country') %]
<label for="borrower_country" class="required">Country:</label>
[% ELSE %]
<label for="borrower_country">Country:</label>
[% END %]
<input type="text" id="borrower_country" name="borrower_country" value="[% borrower.country %]" />
[% IF mandatory.defined('country') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
</ol>
</fieldset>
[% END %]
[%# Following on one line for translatability %]
[% UNLESS hidden.defined('phone') && hidden.defined('phonepro') && hidden.defined('mobile') && hidden.defined('email') && hidden.defined('emailpro') && hidden.defined('fax') %]
<fieldset class="rows" id="memberentry_contact">
<legend id="contact_legend">Contact information</legend>
<ol>
[% UNLESS hidden.defined('phone') %]
<li>
[% IF mandatory.defined('phone') %]
<label for="borrower_phone" class="required">Primary phone:</label>
[% ELSE %]
<label for="borrower_phone">Primary phone:</label>
[% END %]
<input type="text" id="borrower_phone" name="borrower_phone" value="[% borrower.phone %]" />
[% IF mandatory.defined('phone') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('phonepro') %]
<li>
[% IF mandatory.defined('phonepro') %]
<label for="borrower_phonepro" class="required">Secondary phone:</label>
[% ELSE %]
<label for="borrower_phonepro">Secondary phone:</label>
[% END %]
<input type="text" id="borrower_phonepro" name="borrower_phonepro" value="[% borrower.phonepro %]" />
[% IF mandatory.defined('phonepro') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('mobile') %]
<li>
[% IF mandatory.defined('mobile') %]
<label for="borrower_mobile" class="required">Other phone:</label>
[% ELSE %]
<label for="borrower_mobile">Other phone:</label>
[% END %]
<input type="text" id="borrower_mobile" name="borrower_mobile" value="[% borrower.mobile %]" />
[% IF mandatory.defined('mobile') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('email') %]
<li>
[% IF mandatory.defined('email') %]
<label for="borrower_email" class="required">Primary email:</label>
[% ELSE %]
<label for="borrower_email">Primary email:</label>
[% END %]
<input type="text" id="borrower_email" name="borrower_email" value="[% borrower.email %]" />
[% IF mandatory.defined('email') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('emailpro') %]
<li>
[% IF mandatory.defined('emailpro') %]
<label for="borrower_emailpro" class="required">Secondary email:</label>
[% ELSE %]
<label for="borrower_emailpro">Secondary email:</label>
[% END %]
<input type="text" id="borrower_emailpro" name="borrower_emailpro" value="[% borrower.emailpro %]" />
[% IF mandatory.defined('emailpro') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('fax') %]
<li>
[% IF mandatory.defined('fax') %]
<label for="borrower_fax" class="required">Fax:</label>
[% ELSE %]
<label for="borrower_fax">Fax:</label>
[% END %]
<input type="text" id="borrower_fax" name="borrower_fax" value="[% borrower.fax %]" />
[% IF mandatory.defined('fax') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
</ol>
</fieldset>
[% END %]
[%# Following on one line for translatability %]
[% UNLESS hidden.defined('B_address') && hidden.defined('B_address2') && hidden.defined('B_city') && hidden.defined('B_state') && hidden.defined('B_zipcode') && hidden.defined('B_country') && hidden.defined('B_phone') && hidden.defined('B_email') && hidden.defined('contactnote') %]
<fieldset class="rows" id="memberentry_alternateaddress">
<legend id="alternateaddress_legend">Alternate address</legend>
<ol>
[% UNLESS hidden.defined('B_address') %]
<li>
[% IF mandatory.defined('B_address') %]
<label for="borrower_B_address" class="required">Address:</label>
[% ELSE %]
<label for="borrower_B_address">Address:</label>
[% END %]
<input type="text" id="borrower_B_address" name="borrower_B_address" value="[% borrower.B_address %]" />
[% IF mandatory.defined('B_address') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('B_address2') %]
<li>
[% IF mandatory.defined('B_address2') %]
<label for="borrower_B_address2" class="required">Address 2:</label>
[% ELSE %]
<label for="borrower_B_address2">Address 2:</label>
[% END %]
<input type="text" id="borrower_B_address2" name="borrower_B_address2" value="[% borrower.B_address2 %]" />
[% IF mandatory.defined('B_address2') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('B_city') %]
<li>
[% IF mandatory.defined('B_city') %]
<label for="borrower_B_city" class="required">City:</label>
[% ELSE %]
<label for="borrower_B_city">City:</label>
[% END %]
<input type="text" id="borrower_B_city" name="borrower_B_city" value="[% borrower.B_city %]" />
[% IF mandatory.defined('B_city') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('B_state') %]
<li>
[% IF mandatory.defined('B_state') %]
<label for="borrower_B_state" class="required">State:</label>
[% ELSE %]
<label for="borrower_B_state">State:</label>
[% END %]
<input type="text" id="borrower_B_state" name="borrower_B_state" value="[% borrower.B_state %]" />
[% IF mandatory.defined('B_state') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('B_zipcode') %]
<li>
[% IF mandatory.defined('B_zipcode') %]
<label for="borrower_B_zipcode" class="required">ZIP/Postal code:</label>
[% ELSE %]
<label for="borrower_B_zipcode">ZIP/Postal code:</label>
[% END %]
<input type="text" id="borrower_B_zipcode" name="borrower_B_zipcode" value="[% borrower.B_zipcode %]" />
[% IF mandatory.defined('B_zipcode') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('B_country') %]
<li>
[% IF mandatory.defined('B_country') %]
<label for="borrower_B_country" class="required">Country:</label>
[% ELSE %]
<label for="borrower_B_country">Country:</label>
[% END %]
<input type="text" id="borrower_B_country" name="borrower_B_country" value="[% borrower.B_country %]" />
[% IF mandatory.defined('B_country') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('B_phone') %]
<li>
[% IF mandatory.defined('B_phone') %]
<label for="borrower_B_phone" class="required">Phone:</label>
[% ELSE %]
<label for="borrower_B_phone">Phone:</label>
[% END %]
<input type="text" id="borrower_B_phone" name="borrower_B_phone" value="[% borrower.B_phone %]" />
[% IF mandatory.defined('B_phone') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('B_email') %]
<li>
[% IF mandatory.defined('B_email') %]
<label for="borrower_B_email" class="required">Email:</label>
[% ELSE %]
<label for="borrower_B_email">Email:</label>
[% END %]
<input type="text" id="borrower_B_email" name="borrower_B_email" value="[% borrower.B_email %]" />
[% IF mandatory.defined('B_email') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('contactnote') %]
<li>
[% IF mandatory.defined('contactnote') %]
<label for="borrower_contactnote" class="required">Contact note:</label>
[% ELSE %]
<label for="borrower_contactnote">Contact note:</label>
[% END %]
<textarea id="borrower_contactnote" name="borrower_contactnote" cols="30" rows="2">[% borrower.contactnote %]</textarea>
[% IF mandatory.defined('contactnote') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
</ol>
</fieldset>
[% END %]
[%# Following on one line for translatability %]
[% UNLESS hidden.defined('altcontactsurname') && hidden.defined('altcontactfirstname') && hidden.defined('altcontactaddress1') && hidden.defined('altcontactaddress2') && hidden.defined('altcontactaddress3') && hidden.defined('altcontactstate') && hidden.defined('altcontactzipcode') && hidden.defined('altcontactcountry') && hidden.defined('altcontactphone') %]
<fieldset class="rows" id="memberentry_alternatecontact">
<legend id="alternatecontact_legend">Alternate contact</legend>
<ol>
[% UNLESS hidden.defined('altcontactsurname') %]
<li>
[% IF mandatory.defined('altcontactsurname') %]
<label for="borrower_altcontactsurname" class="required">Surname:</label>
[% ELSE %]
<label for="borrower_altcontactsurname">Surname:</label>
[% END %]
<input type="text" id="borrower_altcontactsurname" name="borrower_altcontactsurname" value="[% borrower.altcontactsurname %]" />
[% IF mandatory.defined('altcontactsurname') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('altcontactfirstname') %]
<li>
[% IF mandatory.defined('altcontactfirstname') %]
<label for="borrower_altcontactfirstname" class="required">First name:</label>
[% ELSE %]
<label for="borrower_altcontactfirstname">First name:</label>
[% END %]
<input type="text" id="borrower_altcontactfirstname" name="borrower_altcontactfirstname" value="[% borrower.altcontactfirstname %]" />
[% IF mandatory.defined('altcontactfirstname') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('altcontactaddress1') %]
<li>
[% IF mandatory.defined('altcontactaddress1') %]
<label for="borrower_altcontactaddress1" class="required">Address:</label>
[% ELSE %]
<label for="borrower_altcontactaddress1">Address:</label>
[% END %]
<input type="text" id="borrower_altcontactaddress1" name="borrower_altcontactaddress1" value="[% borrower.altcontactaddress1 %]" />
[% IF mandatory.defined('altcontactaddress1') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('altcontactaddress2') %]
<li>
[% IF mandatory.defined('altcontactaddress2') %]
<label for="borrower_altcontactaddress2" class="required">Address 2:</label>
[% ELSE %]
<label for="borrower_altcontactaddress2">Address 2:</label>
[% END %]
<input type="text" id="borrower_altcontactaddress2" name="borrower_altcontactaddress2" value="[% borrower.altcontactaddress2 %]" />
[% IF mandatory.defined('altcontactaddress2') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('altcontactaddress3') %]
<li>
[% IF mandatory.defined('altcontactaddress3') %]
<label for="borrower_altcontactaddress3" class="required">City:</label>
[% ELSE %]
<label for="borrower_altcontactaddress3">City:</label>
[% END %]
<input type="text" id="borrower_altcontactaddress3" name="borrower_altcontactaddress3" value="[% borrower.altcontactaddress3 %]" />
[% IF mandatory.defined('altcontactaddress3') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('altcontactstate') %]
<li>
[% IF mandatory.defined('altcontactstate') %]
<label for="borrower_altcontactstate" class="required">State:</label>
[% ELSE %]
<label for="borrower_altcontactstate">State:</label>
[% END %]
<input type="text" id="borrower_altcontactstate" name="borrower_altcontactstate" value="[% borrower.altcontactstate %]" />
[% IF mandatory.defined('altcontactstate') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('altcontactzipcode') %]
<li>
[% IF mandatory.defined('altcontactzipcode') %]
<label for="borrower_altcontactzipcode" class="required">ZIP/Postal code:</label>
[% ELSE %]
<label for="borrower_altcontactzipcode">ZIP/Postal code:</label>
[% END %]
<input type="text" id="borrower_altcontactzipcode" name="borrower_altcontactzipcode" value="[% borrower.altcontactzipcode %]" />
[% IF mandatory.defined('altcontactzipcode') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('altcontactcountry') %]
<li>
[% IF mandatory.defined('altcontactcountry') %]
<label for="borrower_altcontactcountry" class="required">Country:</label>
[% ELSE %]
<label for="borrower_altcontactcountry">Country:</label>
[% END %]
<input type="text" id="borrower_altcontactcountry" name="borrower_altcontactcountry" value="[% borrower.altcontactcountry %]" />
[% IF mandatory.defined('altcontactcountry') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
[% UNLESS hidden.defined('altcontactphone') %]
<li>
[% IF mandatory.defined('altcontactphone') %]
<label for="borrower_altcontactphone" class="required">Phone:</label>
[% ELSE %]
<label for="borrower_altcontactphone">Phone:</label>
[% END %]
<input type="text" id="borrower_altcontactphone" name="borrower_altcontactphone" value="[% borrower.altcontactphone %]" />
[% IF mandatory.defined('altcontactphone') %]<span class="required">Required</span>[% END %]
</li>
[% END %]
</ol>
</fieldset>
[% END %]
[% UNLESS action == 'edit' || hidden.defined('password') %]
<fieldset class="rows" id="memberentry_password">
<legend id="contact_legend">Password</legend>
<div class="alert alert-info">
<p>Your password must be at least [% Koha.Preference('minPasswordLength') %] characters long.</p>
[% UNLESS mandatory.defined('password') %]
<div>If you do not enter a password a system generated password will be created.</div>
[% END %]
</div>
[% IF mandatory.defined('password') %]
<ol>
<li><label for="borrower_password" class="required">Password</label>
<input type="password" name="borrower_password" id="password" />
<span class="required">Required</span>
</li>
<li><label for="borrower_password2" class="required">Confirm password</label>
<input type="password" name="borrower_password2" id="password2" />
<span class="required">Required</span>
</li>
</ol>
[% ELSE %]
<ol>
<li><label for="borrower_password">Password</label>
<input type="password" name="borrower_password" id="password" />
</li>
<li><label for="borrower_password2">Confirm password</label>
<input type="password" name="borrower_password2" id="password2" />
</li>
</ol>
[% END %]
</fieldset>
[% END %]
[% IF ( Koha.Preference('ExtendedPatronAttributes') && patron_attribute_classes.size && !Koha.Preference('PatronSelfRegistrationVerifyByEmail') ) %]
[% FOREACH pa_class IN patron_attribute_classes %]
[% IF pa_class.class %]
<fieldset id="aai_[% pa_loo.class %]" class="rows patron-attributes">
<legend>[% pa_class.lib %]</legend>
[% ELSE %]
<fieldset class="rows patron-attributes">
<legend>Additional information</legend>
[% END %]
<ol class="attributes_table">
[% FOREACH pa IN pa_class.items %]
[% FOREACH pa_value IN pa.values %]
[% IF loop.first %]<a name="patron-attr-start-[% pa.type.code %]"></a>[% END %]
[% form_id = 'patron-attr-' _ Math.int( Math.rand(1000000) ) %]
<li data-category_code="[% pa.type.category_code %]">
<label for="[% form_id %]">[% pa.type.description %]: </label>
[% IF pa.type.opac_editable %]
<input type="hidden" name="patron_attribute_code" value="[% pa.type.code |html %]" />
[% IF ( pa.type.authorised_value_category ) %]
<select id="[% form_id %]" name="patron_attribute_value">
<option value=""></option>
[% FOREACH auth_val IN AuthorisedValues.Get( pa.type.authorised_value_category, 1 ) %]
[% IF ( auth_val.authorised_value == pa_value ) %]
<option value="[% auth_val.authorised_value %]" selected="selected">
[% auth_val.lib %]
</option>
[% ELSE %]
<option value="[% auth_val.authorised_value %]" >
[% auth_val.lib %]
</option>
[% END %]
[% END %]
</select>
[% ELSE %]
<textarea rows="2" cols="30" id="[% form_id %]" name="patron_attribute_value">[% pa_value %]</textarea>
[% END %]
<a href="#" class="clear-attribute">Clear</a>
[% IF ( pa.type.repeatable ) %]
<a href="#" class="clone-attribute">New</a>
[% END %]
[% ELSE %]
[% IF ( pa.type.authorised_value_category ) %]
[% AuthorisedValues.GetByCode( pa.type.authorised_value_category, pa_value, 1 ) | html_line_break %]
[% ELSE %]
[% pa_value | html_line_break %]
[% END %]
[% END %]
</li>
[% END %]
[% END %]
</ol>
</fieldset>
[% END %]
[% END %]
[% UNLESS action == 'edit' %]
<fieldset class="rows" id="memberentry_captcha">
<ol>
<li>
<label for="captcha" class="required">Verification:</label>
<input type="text" name="captcha" id="captcha" />
<input type="hidden" name="captcha_digest" value="[% captcha_digest %]" />
<span class="hint">Please type the following characters into the preceding box: <strong>[% captcha %]</strong></span>
</li>
</ol>
</fieldset>
[% END %]
[% IF action == 'edit' %]
[% IF OPACPatronDetails %]
<fieldset class="action">
<input type="hidden" name="action" value="update" />
<input type="hidden" name="csrf_token" value="[% csrf_token %]" />
<input type="submit" class="btn" value="Submit update request" />
</fieldset>
[% END %]
[% ELSE %]
<fieldset class="action">
<input type="hidden" name="action" value="create" />
<input type="submit" class="btn" value="Submit" />
</fieldset>
[% END %]
</form>
</div><!--/div id="update-account" -->
</div>
</div>
</div>
</div>
[% INCLUDE 'opac-bottom.inc' %]
[% BLOCK jsinclude %]
[% Asset.js("lib/jquery/plugins/jquery.validate.min.js") %]
[% PROCESS 'password_check.inc' %]
[% PROCESS 'add_password_check' new_password => 'borrower_password' %]
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
[% IF action == 'edit' && !OPACPatronDetails %]
$("#memberentry-form :input").attr('readonly', true);
$("#borrower_branchcode").attr('disabled',true);
$("#borrower_title").attr('disabled',true);
$('#memberentry-form :radio').attr('disabled',true);
$('span.required').remove();
$('label.required').removeClass('required');
[% END %]
$("#memberentry-form").validate({
rules: {
borrower_email: {
email: true
},
borrower_emailpro: {
email: true
},
borrower_B_email: {
email: true
},
borrower_password: {
[% IF mandatory.defined('password') %]
required: true,
[% END %]
password_strong: true,
password_no_spaces: true
},
borrower_password2: {
[% IF mandatory.defined('password') %]
required: true,
[% END %]
password_match: true
},
captcha: {
required: true,
}
},
submitHandler: function(form) {
if (form.beenSubmitted) {
return false;
}
else {
form.beenSubmitted = true;
form.submit();
}
},
errorPlacement: function(error, element) {
offset = element.offset();
error.insertAfter(element)
error.addClass('error'); // add a class to the wrapper
error.css('position', 'absolute');
error.css('left', offset.left + element.outerWidth() + 10);
error.css('top', offset.top);
error.css('width', 'auto');
}
});
[% IF borrower.guarantorid && !Koha.Preference('OPACPrivacy') && Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') %]
$('#update_privacy_guarantor_checkouts').click( function() {
$.post( "/cgi-bin/koha/svc/patron/show_checkouts_to_relatives", { privacy_guarantor_checkouts: $('#privacy_guarantor_checkouts').val() }, null, 'json')
.done(function( data ) {
var message;
if ( data.success ) {
message = _("Your setting has been updated!");
} else {
message = _("Unable to update your setting!");
}
$('#update_privacy_guarantor_checkouts_message').fadeIn("slow").text( message ).delay( 5000 ).fadeOut("slow");
});
});
[% END %]
$(".patron-attributes").on( 'click', '.clear-attribute', function() {
$(this).parent()
.find('textarea').attr('value', '').end()
.find('select').attr('value', '').end();
return false;
} );
$(".patron-attributes").on( 'click', '.clone-attribute', function() {
var clone = $(this).parent().clone().insertAfter( $(this).parent() );
var newId = 50 + parseInt(Math.random() * 100000);
$('input[type!="hidden"],select,textarea', clone).attr('id', 'patron-attr-' + newId).attr('value', '');
$("label", clone).attr('for', 'patron-attr-' + newId).attr('value', '');
return false;
} );
});
$(".cleardate").on("click", function(){
$('#borrower_dateofbirth').val('');
return false;
});
//]]>
</script>
[% INCLUDE 'calendar.inc' %]
[% END %]