<div ng-form id="patron-reg-container"
name="reg_form" ng-show="page_data_loaded">
-<!-- BARCODE -->
+<!-- DOB -->
-<div class="row reg-field-row" ng-show="show_field('ac.barcode')">
- [% draw_field_label('ac', 'barcode') %]
- <div class="col-md-3 reg-field-input"> <!-- field form input -->
- <input type="text"
- name="barcode"
- ng-model="patron.card.barcode"
- ng-pattern="field_pattern('ac', 'barcode')"
- ng-required="field_required('ac', 'barcode')"
- focus-me="focus_bc"
- ng-change="field_modified()"
- ng-disabled="disable_bc"
- class="form-control"
- ng-blur="handle_field_changed(patron.card, 'barcode')"/>
+<div class="row reg-field-row" ng-show="show_field('au.dob')">
+ [% draw_field_label('au', 'dob') %]
+ <div class="col-md-3 reg-field-input">
+ <eg-date-input ng-required="field_required('au', 'dob')" ng-model="patron.dob">
+ </eg-date-input>
</div>
<div class="col-md-6 patron-reg-example">
- <button class="btn btn-default" ng-show="!patron.isnew"
- ng-click="replace_card()">[% l('Replace Barcode') %]</button>
- <button class="btn btn-default" ng-if="!patron.isnew"
- ng-click="cards_dialog()">[% l('See All') %]</button>
- <div ng-show="dupe_barcode" class="patron-reg-validation-alert">
- <span>[% l('Barcode is already in use') %]</span>
- </div>
+ [% draw_example_text('au', 'dob') %]
</div>
</div>
-<!-- USRNAME -->
+ <!-- JUVENILE -->
-<div class="row reg-field-row" ng-show="show_field('au.usrname')">
- [% draw_field_label('au', 'usrname') %]
+<div class="row reg-field-row" ng-show="show_field('au.juvenile')">
+ [% draw_field_label('au', 'juvenile') %]
<div class="col-md-3 reg-field-input">
- <input type="text"
- name='usrname'
- ng-required="field_required('au', 'usrname')"
- focus-me="focus_usrname"
- ng-change="field_modified()"
- ng-pattern="field_pattern('au', 'usrname')"
- ng-blur="handle_field_changed(patron, 'usrname')"
- class="form-control"
- ng-model="patron.usrname"/>
- </div>
- <div class="col-md-6 patron-reg-example">
- <div ng-show="dupe_username" class="patron-reg-validation-alert">
- <span>[% l('Username is already in use') %]</span>
- </div>
+ <input ng-change="field_modified()" ng-blur="handle_field_changed(patron, 'juvenile')" type='checkbox' ng-model="patron.juvenile"
+ />
</div>
</div>
-<!-- PASSWD -->
+<!-- PREFIX -->
-<div class="row reg-field-row" ng-show="show_field('au.passwd')">
- [% draw_field_label('au', 'passwd') %]
- [% draw_form_input('au', 'passwd'); %]
+<div class="row reg-field-row" ng-show="show_field('au.prefix')">
+ [% draw_field_label('au', 'prefix') %] [% draw_form_input('au', 'prefix'); %]
<div class="col-md-6 patron-reg-example">
- <button class="btn btn-default" ng-click="generate_password()">
- [% l('Generate Password') %]</button>
+ [% draw_example_text('au', 'prefix') %]
</div>
</div>
<a ng-click="name_tab='preferred'">[% l('Preferred Name') %]</a>
</li>
</ul>
- </div>
-</div>
-
<div ng-show="name_tab == 'primary'">
<!-- PREFIX -->
</div>
</div>
+ <!-- FAMILY_NAME -->
+
+ <div class="row reg-field-row" ng-show="show_field('au.family_name')">
+ [% draw_field_label('au', 'family_name') %] [% draw_form_input('au', 'family_name'); %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('au', 'family_name') %]
+ </div>
+ </div>
+
<!-- FIRST_GIVEN_NAME -->
<div class="row reg-field-row" ng-show="show_field('au.first_given_name')">
<div class="col-md-6 patron-reg-example">
[% draw_example_text('au', 'first_given_name') %]
</div>
- </div>
<!-- SECOND_GIVEN_NAME -->
</div>
</div>
- <!-- FAMILY_NAME -->
-
- <div class="row reg-field-row" ng-show="show_field('au.family_name')">
- [% draw_field_label('au', 'family_name') %]
- [% draw_form_input('au', 'family_name'); %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('au', 'family_name') %]
- </div>
- </div>
-
<!-- SUFFIX -->
<div class="row reg-field-row" ng-show="show_field('au.suffix')">
</div>
</div>
+ <!-- FAMILY_NAME -->
+
+ <div class="row reg-field-row" ng-show="show_field('au.pref_family_name')">
+ [% draw_field_label('au', 'pref_family_name') %]
+ [% draw_form_input('au', 'pref_family_name'); %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('au', 'pref_family_name') %]
+ </div>
+ </div>
+
<!-- FIRST_GIVEN_NAME -->
<div class="row reg-field-row" ng-show="show_field('au.pref_first_given_name')">
</div>
</div>
- <!-- FAMILY_NAME -->
-
- <div class="row reg-field-row" ng-show="show_field('au.pref_family_name')">
- [% draw_field_label('au', 'pref_family_name') %]
- [% draw_form_input('au', 'pref_family_name'); %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('au', 'pref_family_name') %]
- </div>
- </div>
-
<!-- SUFFIX -->
<div class="row reg-field-row" ng-show="show_field('au.pref_suffix')">
<!-- ALIAS -->
<div class="row reg-field-row" ng-show="show_field('au.alias')">
- [% draw_field_label('au', 'alias') %]
- [% draw_form_input('au', 'alias'); %]
+ [% draw_field_label('au', 'alias') %] [% draw_form_input('au', 'alias'); %]
<div class="col-md-6 patron-reg-example">
[% draw_example_text('au', 'alias') %]
</div>
</div>
-<!-- DOB -->
+<!-- addresses -->
-<div class="row reg-field-row" ng-show="show_field('au.dob')">
- [% draw_field_label('au', 'dob') %]
- <div class="col-md-3 reg-field-input">
- <eg-date-input
- ng-required="field_required('au', 'dob')"
- ng-model="patron.dob">
- </eg-date-input>
+<div ng-repeat="addr in patron.addresses">
+ <div class="alert alert-success row" role="alert">
+ <div class="col-md-3">
+ [% l('Address') %]
+ <div ng-show="addr._linked_owner">
+ (
+ <a target="_blank" href="/eg/staff/circ/patron/{{addr._linked_owner_id}}/edit">
+ [% l('Owned by [_1]', '{{addr._linked_owner}}') %]
+ </a>)
+ </div>
+ </div>
+ <div class="col-md-3">
+ <span class='pad-all-min'>
+ [% l('Mailing') %]
+ <input type='checkbox' ng-change="field_modified();set_addr_type(addr, 'mailing')" ng-model="addr._is_mailing"
+ />
+ </span>
+ <span class='pad-all-min'>
+ [% l('Physical') %]
+ <input type='checkbox' ng-change="field_modified();set_addr_type(addr, 'billing')" ng-model="addr._is_billing"
+ />
+ </span>
+ <span class='pad-all-min'>
+ <button type="button" ng-click="field_modified();delete_address(addr.id)" class="btn btn-danger">[% l('X') %]</button>
+ </span>
+ </div>
</div>
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('au', 'dob') %]
+
+ <div ng-if="addr.pending" class="row">
+ <div class="col-md-6 patron-reg-pending-address">
+ <div class="row">
+ <div class="col-md-6">
+ [% l('This is a pending address') %]
+ </div>
+ <div class="col-md-6">
+ <button class="btn btn-success"
+ ng-click="approve_pending_address(addr)">[% l('Approve') %]</button>
+ </div>
+ </div>
+ <div class="row" ng-if="addr._replaces">
+ <div class="col-md-6">
+ [% | l(
+ '{{addr._replaces.street1}}',
+ '{{addr._replaces.street2}}',
+ '<br/>'
+ '{{addr._replaces.city}}',
+ '{{addr._replaces.state}}',
+ '{{addr._replaces.post_code}}') %]
+ Replaces: [_1] [_2] [_3] [_4], [_5] [_6]
+ [% END %]
+ </div>
+ </div>
+ </div>
+ <!-- make sure we occupy the entire row -->
+ <div class="col-md-6"> </div>
+ </div>
+
+ <!-- ADDRESS_TYPE -->
+ <div class="row reg-field-row" ng-show="show_field('aua.address_type')">
+ [% draw_field_label('aua', 'address_type') %] [% draw_form_input('aua', 'address_type', 'addresses[$index]', '', 'addr._linked_owner')
+ %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('aua', 'address_type') %]
+ </div>
</div>
-</div>
-<!-- JUVENILE -->
+ <!-- POST_CODE -->
-<div class="row reg-field-row" ng-show="show_field('au.juvenile')">
- [% draw_field_label('au', 'juvenile') %]
- <div class="col-md-3 reg-field-input">
- <input
- ng-change="field_modified()"
- ng-blur="handle_field_changed(patron, 'juvenile')"
- type='checkbox' ng-model="patron.juvenile"/>
+ <div class="row reg-field-row" ng-show="show_field('aua.post_code')">
+ [% draw_field_label('aua', 'post_code') %] [% draw_form_input('aua', 'post_code', 'addresses[$index]', '', 'addr._linked_owner')
+ %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('aua', 'post_code') %]
+ </div>
</div>
-</div>
-<!-- ident_type -->
+ <!-- STREET1 -->
-<div class="row reg-field-row" ng-show="show_field('au.ident_type')">
- [% draw_field_label('au', 'ident_type') %]
- <div class="col-md-3 reg-field-input">
- <select
- class="form-control"
- ng-model="patron.ident_type"
- ng-required="field_required('au', 'ident_type')"
- ng-blur="handle_field_changed(patron, 'ident_type')"
- ng-options="type.name() for type in ident_types track by type.id()">
- </select>
+ <div class="row reg-field-row" ng-show="show_field('aua.street1')">
+ [% draw_field_label('aua', 'street1') %] [% draw_form_input('aua', 'street1', 'addresses[$index]', '', 'addr._linked_owner')
+ %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('aua', 'street1') %]
+ </div>
</div>
-</div>
-<!-- IDENT_VALUE -->
+ <!-- STREET2 -->
-<div class="row reg-field-row" ng-show="show_field('au.ident_value')">
- [% draw_field_label('au', 'ident_value') %]
- [% draw_form_input('au', 'ident_value') %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('au', 'ident_value') %]
+ <div class="row reg-field-row" ng-show="show_field('aua.street2')">
+ [% draw_field_label('aua', 'street2') %] [% draw_form_input('aua', 'street2', 'addresses[$index]', '', 'addr._linked_owner')
+ %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('aua', 'street2') %]
+ </div>
</div>
-</div>
-<!-- ident_type2 -->
+ <!-- CITY -->
-<div class="row reg-field-row" ng-show="show_field('au.ident_type2')">
- [% draw_field_label('au', 'ident_type2') %]
- <div class="col-md-3 reg-field-input">
- <select
- class="form-control"
- ng-model="patron.ident_type2"
- ng-required="field_required('au', 'ident_type2')"
- ng-blur="handle_field_changed(patron, 'ident_type2')"
- ng-options="type.name() for type in ident_types track by type.id()">
- </select>
+ <div class="row reg-field-row" ng-show="show_field('aua.city')">
+ [% draw_field_label('aua', 'city') %] [% draw_form_input('aua', 'city', 'addresses[$index]', '', 'addr._linked_owner') %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('aua', 'city') %]
+ </div>
</div>
-</div>
-<!-- IDENT_VALUE2 -->
-<div class="row reg-field-row" ng-show="show_field('au.ident_value2')">
- [% draw_field_label('au', 'ident_value2') %]
- [% draw_form_input('au', 'ident_value2') %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('au', 'ident_value2') %]
+ <!-- COUNTY -->
+
+ <div class="row reg-field-row" ng-show="show_field('aua.county')">
+ [% draw_field_label('aua', 'county') %] [% draw_form_input('aua', 'county', 'addresses[$index]', '', 'addr._linked_owner')
+ %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('aua', 'county') %]
+ </div>
</div>
-</div>
+ <!-- STATE -->
-<!-- EMAIL -->
-<div class="row reg-field-row" ng-show="show_field('au.email')">
- [% draw_field_label('au', 'email') %]
- [% draw_form_input('au', 'email', '', 'email') %]
- <div class="col-md-6 patron-reg-example">
- <button ng-show="patron.email && !patron.isnew"
- class="btn btn-default"
- ng-click="invalidate_field('email')">[% l('Invalidate') %]</button>
- <span ng-if="org_settings['ui.patron.edit.au.email.example']">
- [% l('Example: [_1]',
- "{{org_settings['ui.patron.edit.au.email.example']}}") %]
- </span>
+ <div class="row reg-field-row" ng-show="show_field('aua.state')">
+ [% draw_field_label('aua', 'state') %] [% draw_form_input('aua', 'state', 'addresses[$index]', '', 'addr._linked_owner')
+ %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('aua', 'state') %]
+ </div>
</div>
-</div>
-<div class="row reg-field-row" ng-show="show_field('au.email') && opt_in_setting_types['circ.send_email_checkout_receipts']">
- <div class="col-md-3 reg-field-label">
- <label>{{opt_in_setting_types['circ.send_email_checkout_receipts'].label()}}</label>
+ <!-- COUNTRY -->
+
+ <div class="row reg-field-row" ng-show="show_field('aua.country')">
+ [% draw_field_label('aua', 'country') %] [% draw_form_input('aua', 'country', 'addresses[$index]', '', 'addr._linked_owner')
+ %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('aua', 'country') %]
+ </div>
</div>
- <div class="col-md-3 reg-field-input">
- <input
- ng-change="field_modified()"
- type='checkbox' ng-model="user_settings['circ.send_email_checkout_receipts']"/>
+
+ <!-- VALID -->
+
+ <div class="row reg-field-row" ng-show="show_field('aua.valid')">
+ [% draw_field_label('aua', 'valid') %]
+ <div class="col-md-3 reg-field-input">
+ <input type='checkbox' ng-change="field_modified()" ng-disabled='addr._linked_owner' ng-blur="handle_field_changed(patron.addresses[$index], 'valid')"
+ ng-model="patron.addresses[$index].valid" />
+ </div>
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('aua', 'valid') %]
+ </div>
</div>
+
+ <!-- WITHIN_CITY_LIMITS -->
+
+ <div class="row reg-field-row" ng-show="show_field('aua.within_city_limits')">
+ [% draw_field_label('aua', 'within_city_limits') %]
+ <div class="col-md-3 reg-field-input">
+ <input type='checkbox' ng-change="field_modified()" ng-disabled='addr._linked_owner' ng-blur="handle_field_changed(patron.addresses[$index], 'within_city_limits')"
+ ng-model="patron.addresses[$index].within_city_limits" />
+ </div>
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('aua', 'within_city_limits') %]
+ </div>
+ </div>
+
+ <!-- pending address -->
+
+</div>
+<!-- addresses -->
+
+<div class="row">
+ <button type="button" ng-click="new_address()" class="btn btn-success">[% l('New Address') %]</button>
</div>
<!-- DAY_PHONE -->
<div class="row reg-field-row" ng-show="show_field('au.day_phone')">
- [% draw_field_label('au', 'day_phone') %]
- [% draw_form_input('au', 'day_phone') %]
+ [% draw_field_label('au', 'day_phone') %] [% draw_form_input('au', 'day_phone') %]
<div class="col-md-6 patron-reg-example">
- <button ng-show="patron.day_phone && !patron.isnew"
- class="btn btn-default"
- ng-click="invalidate_field('day_phone')">[% l('Invalidate') %]</button>
+ <button ng-show="patron.day_phone && !patron.isnew" class="btn btn-default" ng-click="invalidate_field('day_phone')">[% l('Invalidate') %]</button>
[% draw_example_text('au', 'day_phone') %]
<!-- phones have a fall-through example strings -->
<span ng-if="!org_settings['ui.patron.edit.au.day_phone.example'] && org_settings['ui.patron.edit.phone.example']">
- [% l('Example: [_1]',
- "{{org_settings['ui.patron.edit.phone.example']}}") %]
+ [% l('Example: [_1]', "{{org_settings['ui.patron.edit.phone.example']}}") %]
</span>
</div>
</div>
<!-- EVENING_PHONE -->
<div class="row reg-field-row" ng-show="show_field('au.evening_phone')">
- [% draw_field_label('au', 'evening_phone') %]
- [% draw_form_input('au', 'evening_phone') %]
+ [% draw_field_label('au', 'evening_phone') %] [% draw_form_input('au', 'evening_phone') %]
<div class="col-md-6 patron-reg-example">
- <button ng-show="patron.evening_phone && !patron.isnew"
- class="btn btn-default"
- ng-click="invalidate_field('evening_phone')">[% l('Invalidate') %]</button>
+ <button ng-show="patron.evening_phone && !patron.isnew" class="btn btn-default" ng-click="invalidate_field('evening_phone')">[% l('Invalidate') %]</button>
[% draw_example_text('au', 'evening_phone') %]
<!-- phones have a fall-through example strings -->
<span ng-if="!org_settings['ui.patron.edit.au.evening_phone.example'] && org_settings['ui.patron.edit.phone.example']">
- [% l('Example: [_1]',
- "{{org_settings['ui.patron.edit.phone.example']}}") %]
+ [% l('Example: [_1]', "{{org_settings['ui.patron.edit.phone.example']}}") %]
</span>
</div>
</div>
<!-- OTHER_PHONE -->
<div class="row reg-field-row" ng-show="show_field('au.other_phone')">
- [% draw_field_label('au', 'other_phone') %]
- [% draw_form_input('au', 'other_phone') %]
+ [% draw_field_label('au', 'other_phone') %] [% draw_form_input('au', 'other_phone') %]
<div class="col-md-6 patron-reg-example">
- <button ng-show="patron.other_phone && !patron.isnew"
- class="btn btn-default"
- ng-click="invalidate_field('other_phone')">[% l('Invalidate') %]</button>
+ <button ng-show="patron.other_phone && !patron.isnew" class="btn btn-default" ng-click="invalidate_field('other_phone')">[% l('Invalidate') %]</button>
[% draw_example_text('au', 'other_phone') %]
<!-- phones have a fall-through example strings -->
<span ng-if="!org_settings['ui.patron.edit.au.other_phone.example'] && org_settings['ui.patron.edit.phone.example']">
- [% l('Example: [_1]',
- "{{org_settings['ui.patron.edit.phone.example']}}") %]
+ [% l('Example: [_1]', "{{org_settings['ui.patron.edit.phone.example']}}") %]
+ </span>
+ </div>
+</div>
+
+<!-- EMAIL -->
+<div class="row reg-field-row" ng-show="show_field('au.email')">
+ [% draw_field_label('au', 'email') %] [% draw_form_input('au', 'email', '', 'email') %]
+ <div class="col-md-6 patron-reg-example">
+ <button ng-show="patron.email && !patron.isnew" class="btn btn-default" ng-click="invalidate_field('email')">[% l('Invalidate') %]</button>
+ <span ng-if="org_settings['ui.patron.edit.au.email.example']">
+ [% l('Example: [_1]', "{{org_settings['ui.patron.edit.au.email.example']}}") %]
</span>
</div>
</div>
+<div class="row reg-field-row" ng-show="show_field('au.email') && opt_in_setting_types['circ.send_email_checkout_receipts']">
+ <div class="col-md-3 reg-field-label">
+ <label>{{opt_in_setting_types['circ.send_email_checkout_receipts'].label()}}</label>
+ </div>
+ <div class="col-md-3 reg-field-input">
+ <input ng-change="field_modified()" type='checkbox' ng-model="user_settings['circ.send_email_checkout_receipts']" />
+ </div>
+</div>
+
<!-- home org unit selector -->
<div class="row reg-field-row" ng-show="show_field('au.home_ou')">
[% draw_field_label('au', 'home_ou') %]
<div class="col-md-3 reg-field-input">
- <eg-org-selector
- selected="patron.home_ou"
- onchange="handle_home_org_changed"
- disable-test="disable_home_org">
+ <eg-org-selector selected="patron.home_ou" onchange="handle_home_org_changed" disable-test="disable_home_org">
</eg-org-selector>
</div>
</div>
[% draw_field_label('au', 'profile') %]
<div class="col-md-3 reg-field-input">
<div class="btn-group" uib-dropdown>
- <button type="button" class="btn btn-default" uib-dropdown-toggle
- ng-class="{'ng-invalid' : invalid_profile()}">
+ <button type="button" class="btn btn-default" uib-dropdown-toggle ng-class="{'ng-invalid' : invalid_profile()}">
<span style="padding-right: 5px;">
{{patron.profile.name() || "[% l('Profile Group') %]"}}
</span>
</div>
</div>
<div class="col-md-3">
- <button class="btn btn-default" ng-if="!offline" ng-disabled="!perms.CREATE_USER_GROUP_LINK"
- ng-click="secondary_groups_dialog()">[% l('Secondary Groups') %]</button>
- </div>
+ <button class="btn btn-default" ng-if="!offline" ng-disabled="!perms.CREATE_USER_GROUP_LINK" ng-click="secondary_groups_dialog()">[% l('Secondary Groups') %]</button>
+ </div>
</div>
<div class="row reg-field-row" ng-show="show_field('au.expire_date')">
[% draw_field_label('au', 'expire_date') %]
<div class="col-md-3 reg-field-input">
- <eg-date-input
- ng-model="patron.expire_date">
+ <eg-date-input ng-model="patron.expire_date">
</eg-date-input>
</div>
<div class="col-md-3">
<div class="row reg-field-row" ng-show="show_field('au.net_access_level')">
[% draw_field_label('au', 'net_access_level') %]
<div class="col-md-3 reg-field-input">
- <select
- class="form-control"
- ng-model="patron.net_access_level"
- ng-required="field_required('au', 'net_access_level')"
- ng-blur="handle_field_changed(patron, 'net_access_level')"
+ <select class="form-control" ng-model="patron.net_access_level" ng-required="field_required('au', 'net_access_level')" ng-blur="handle_field_changed(patron, 'net_access_level')"
ng-options="level.name() for level in net_access_levels track by level.id()">
</select>
</div>
<div class="row reg-field-row" ng-show="show_field('au.active')">
[% draw_field_label('au', 'active') %]
<div class="col-md-3 reg-field-input">
- <input
- ng-change="field_modified()"
- ng-blur="handle_field_changed(patron, 'active')"
- type='checkbox' ng-model="patron.active"/>
+ <input ng-change="field_modified()" ng-blur="handle_field_changed(patron, 'active')" type='checkbox' ng-model="patron.active"
+ />
</div>
</div>
<div class="row reg-field-row" ng-show="show_field('au.barred')">
[% draw_field_label('au', 'barred') %]
<div class="col-md-3 reg-field-input">
- <input
- ng-change="field_modified()"
- ng-blur="handle_field_changed(patron, 'barred')"
- type='checkbox' ng-model="patron.barred"/>
+ <input ng-change="field_modified()" ng-blur="handle_field_changed(patron, 'barred')" type='checkbox' ng-model="patron.barred"
+ />
</div>
</div>
<div class="row reg-field-row" ng-show="show_field('au.master_account')">
[% draw_field_label('au', 'master_account') %]
<div class="col-md-3 reg-field-input">
- <input
- ng-change="field_modified()"
- ng-blur="handle_field_changed(patron, 'master_account')"
- type='checkbox' ng-model="patron.master_account"/>
+ <input ng-change="field_modified()" ng-blur="handle_field_changed(patron, 'master_account')" type='checkbox' ng-model="patron.master_account"
+ />
</div>
</div>
<!-- CLAIMS_RETURNED_COUNT -->
<div class="row reg-field-row" ng-show="show_field('au.claims_returned_count')">
- [% draw_field_label('au', 'claims_returned_count') %]
- [% draw_form_input('au', 'claims_returned_count',
- '', 'number', '!perms.UPDATE_PATRON_CLAIM_RETURN_COUNT') %]
+ [% draw_field_label('au', 'claims_returned_count') %] [% draw_form_input('au', 'claims_returned_count', '', 'number', '!perms.UPDATE_PATRON_CLAIM_RETURN_COUNT')
+ %]
<div class="col-md-6 patron-reg-example">
[% draw_example_text('au', 'claims_returned_count') %]
</div>
<!-- CLAIMS_NEVER_CHECKED_OUT_COUNT -->
<div class="row reg-field-row" ng-show="show_field('au.claims_never_checked_out_count')">
- [% draw_field_label('au', 'claims_never_checked_out_count') %]
- [% draw_form_input('au', 'claims_never_checked_out_count',
- '', 'number', '!perms.UPDATE_PATRON_CLAIM_NEVER_CHECKED_OUT_COUNT') %]
+ [% draw_field_label('au', 'claims_never_checked_out_count') %] [% draw_form_input('au', 'claims_never_checked_out_count',
+ '', 'number', '!perms.UPDATE_PATRON_CLAIM_NEVER_CHECKED_OUT_COUNT') %]
<div class="col-md-6 patron-reg-example">
[% draw_example_text('au', 'claims_never_checked_out_count') %]
</div>
<div class="row reg-field-row" ng-show="show_field('au.alert_message')">
[% draw_field_label('au', 'alert_message') %]
<div class="col-md-3 reg-field-input">
- <textarea
- class="form-control"
- ng-model="patron.alert_message"
- ng-pattern="field_pattern('au', 'alert_message')"
- ng-change="field_modified()"
+ <textarea class="form-control" ng-model="patron.alert_message" ng-pattern="field_pattern('au', 'alert_message')" ng-change="field_modified()"
ng-blur="handle_field_changed(patron, 'alert_message')">
</textarea>
</div>
<div ng-if="!offline">
-<div class="alert alert-success row" role="alert">
- <div class="col-md-6">[% l('User Settings') %]</div>
-</div>
-
-<div class="row reg-field-row">
- <div class="col-md-3 reg-field-label">
- <label>{{user_setting_types['opac.default_phone'].label()}}</label>
- </div>
- <div class="col-md-3 reg-field-input">
- <input
- ng-change="field_modified()"
- type='text' ng-model="user_settings['opac.default_phone']"/>
- </div>
-</div>
-
-<div class="row reg-field-row">
- <div class="col-md-3 reg-field-label">
- <label>{{user_setting_types['opac.default_pickup_location'].label()}}</label>
- </div>
- <div class="col-md-3 reg-field-input">
- <eg-org-selector nodefault
- disable-test="disable_pulib"
- selected="patron._pickup_lib"
- onchange="handle_pulib_changed">
- </eg-org-selector>
- </div>
-</div>
-
-<div class="row reg-field-row"
- ng-if="org_settings['circ.holds.behind_desk_pickup_supported']">
- <div class="col-md-3 reg-field-label">
- <label>{{user_setting_types['circ.holds_behind_desk'].label()}}</label>
- </div>
- <div class="col-md-3 reg-field-input">
- <input
- ng-change="field_modified()"
- type='checkbox' ng-model="user_settings['circ.holds_behind_desk']"/>
- </div>
-</div>
-
-<!-- TODO: Add circ.collections.exempt to master SQL seed data -->
-<div class="row reg-field-row"
- ng-if="user_setting_types['circ.collections.exempt']">
- <div class="col-md-3 reg-field-label">
- <label>{{user_setting_types['circ.collections.exempt'].label()}}</label>
- </div>
- <div class="col-md-3 reg-field-input">
- <input
- type='checkbox'
- ng-change="field_modified()"
- ng-disabled="!perms.UPDATE_PATRON_COLLECTIONS_EXEMPT"
- ng-model="user_settings['circ.collections.exempt']"/>
+ <div class="alert alert-success row" role="alert">
+ <div class="col-md-6">[% l('User Settings') %]</div>
</div>
-</div>
-<div class="row reg-field-row">
- <div class="col-md-3 reg-field-label">
- <label>[% l('Holds Notices') %]</label>
- </div>
- <div class="col-md-3 reg-field-input flex-row">
- <div class='flex-cell'>
- <input
- ng-change="field_modified()"
- type='checkbox' ng-model="hold_notify_type.phone"/>
- [% l('Phone') %]
- </div>
- <div class='flex-cell'>
- <input
- ng-change="field_modified()"
- type='checkbox' ng-model="hold_notify_type.email"/>
- [% l('Email') %]
+ <div class="row reg-field-row">
+ <div class="col-md-3 reg-field-label">
+ <label>{{user_setting_types['opac.default_phone'].label()}}</label>
</div>
- <div class='flex-cell' ng-if="org_settings['sms.enable']">
- <input
- ng-change="field_modified()"
- type='checkbox' ng-model="hold_notify_type.sms"/>
- [% l('SMS') %]
+ <div class="col-md-3 reg-field-input">
+ <input ng-change="field_modified()" type='text' ng-model="user_settings['opac.default_phone']" />
</div>
</div>
-</div>
-<div class="row reg-field-row" ng-if="org_settings['sms.enable']">
- <div class="col-md-3 reg-field-label">
- <label>[% l('Default SMS/Text Number') %]</label>
- </div>
- <div class="col-md-3 reg-field-input">
- <input
- ng-change="field_modified()" ng-model="user_settings['opac.default_sms_notify']"
- type='text'/>
+ <div class="row reg-field-row">
+ <div class="col-md-3 reg-field-label">
+ <label>{{user_setting_types['opac.default_pickup_location'].label()}}</label>
+ </div>
+ <div class="col-md-3 reg-field-input">
+ <eg-org-selector nodefault disable-test="disable_pulib" selected="patron._pickup_lib" onchange="handle_pulib_changed">
+ </eg-org-selector>
+ </div>
</div>
-</div>
-<div class="row reg-field-row" ng-if="org_settings['sms.enable']">
- <div class="col-md-3 reg-field-label">
- <label>[% l('Default SMS Carrier') %]</label>
- </div>
- <div class="col-md-3 reg-field-input">
- <span class="nullable">
- <select str-to-int class="form-control" ng-model="user_settings['opac.default_sms_carrier']" ng-options="c.id() as c.name() for c in sms_carriers">
- <option value="">Select a Carrier</option>
- </select>
- </span>
+ <div class="row reg-field-row" ng-if="org_settings['circ.holds.behind_desk_pickup_supported']">
+ <div class="col-md-3 reg-field-label">
+ <label>{{user_setting_types['circ.holds_behind_desk'].label()}}</label>
+ </div>
+ <div class="col-md-3 reg-field-input">
+ <input ng-change="field_modified()" type='checkbox' ng-model="user_settings['circ.holds_behind_desk']" />
+ </div>
</div>
-</div>
-<div class="row reg-field-row" ng-repeat="type in opt_in_setting_types">
- <div class="col-md-3 reg-field-label" ng-if="type.name() != 'circ.send_email_checkout_receipts'">
- <label>{{type.label()}}</label>
- </div>
- <div class="col-md-3 reg-field-input" ng-if="type.name() != 'circ.send_email_checkout_receipts'">
- <input
- ng-change="field_modified()"
- type='checkbox' ng-model="user_settings[type.name()]"/>
+ <!-- TODO: Add circ.collections.exempt to master SQL seed data -->
+ <div class="row reg-field-row" ng-if="user_setting_types['circ.collections.exempt']">
+ <div class="col-md-3 reg-field-label">
+ <label>{{user_setting_types['circ.collections.exempt'].label()}}</label>
+ </div>
+ <div class="col-md-3 reg-field-input">
+ <input type='checkbox' ng-change="field_modified()" ng-disabled="!perms.UPDATE_PATRON_COLLECTIONS_EXEMPT" ng-model="user_settings['circ.collections.exempt']"
+ />
+ </div>
</div>
-</div>
-
-</div> <!-- end offline test -->
-
-<!-- addresses -->
-<div ng-repeat="addr in patron.addresses">
- <div class="alert alert-success row" role="alert">
- <div class="col-md-3">
- [% l('Address') %]
- <div ng-show="addr._linked_owner">
- (<a target="_blank"
- href="/eg/staff/circ/patron/{{addr._linked_owner_id}}/edit">
- [% l('Owned by [_1]', '{{addr._linked_owner}}') %]
- </a>)
- </div>
+ <div class="row reg-field-row">
+ <div class="col-md-3 reg-field-label">
+ <label>[% l('Holds Notices') %]</label>
+ </div>
+ <div class="col-md-3 reg-field-input flex-row">
+ <div class='flex-cell'>
+ <input ng-change="field_modified()" type='checkbox' ng-model="hold_notify_type.phone" /> [% l('Phone') %]
</div>
- <div class="col-md-3">
- <span class='pad-all-min'>
- [% l('Mailing') %] <input type='checkbox'
- ng-change="field_modified();set_addr_type(addr, 'mailing')"
- ng-model="addr._is_mailing"/>
- </span>
- <span class='pad-all-min'>
- [% l('Physical') %] <input type='checkbox'
- ng-change="field_modified();set_addr_type(addr, 'billing')"
- ng-model="addr._is_billing"/>
- </span>
- <span class='pad-all-min'>
- <button type="button"
- ng-click="field_modified();delete_address(addr.id)"
- class="btn btn-danger">[% l('X') %]</button>
- </span>
+ <div class='flex-cell'>
+ <input ng-change="field_modified()" type='checkbox' ng-model="hold_notify_type.email" /> [% l('Email') %]
</div>
- </div>
-
- <div ng-if="addr.pending" class="row">
- <div class="col-md-6 patron-reg-pending-address">
- <div class="row">
- <div class="col-md-6">
- [% l('This is a pending address') %]
- </div>
- <div class="col-md-6">
- <button class="btn btn-success"
- ng-click="approve_pending_address(addr)">[% l('Approve') %]</button>
- </div>
+ <div class='flex-cell' ng-if="org_settings['sms.enable']">
+ <input ng-change="field_modified()" type='checkbox' ng-model="hold_notify_type.sms" /> [% l('SMS') %]
</div>
- <div class="row" ng-if="addr._replaces">
- <div class="col-md-6">
- [% | l(
- '{{addr._replaces.street1}}',
- '{{addr._replaces.street2}}',
- '<br/>'
- '{{addr._replaces.city}}',
- '{{addr._replaces.state}}',
- '{{addr._replaces.post_code}}') %]
- Replaces: [_1] [_2] [_3] [_4], [_5] [_6]
- [% END %]
- </div>
- </div>
- </div>
- <!-- make sure we occupy the entire row -->
- <div class="col-md-6"> </div>
+ </div>
</div>
- <!-- ADDRESS_TYPE -->
- <div class="row reg-field-row" ng-show="show_field('aua.address_type')">
- [% draw_field_label('aua', 'address_type') %]
- [% draw_form_input('aua',
- 'address_type', 'addresses[$index]', '', 'addr._linked_owner') %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('aua', 'address_type') %]
+ <div class="row reg-field-row" ng-if="org_settings['sms.enable']">
+ <div class="col-md-3 reg-field-label">
+ <label>[% l('Default SMS/Text Number') %]</label>
</div>
- </div>
-
- <!-- POST_CODE -->
-
- <div class="row reg-field-row" ng-show="show_field('aua.post_code')">
- [% draw_field_label('aua', 'post_code') %]
- [% draw_form_input('aua',
- 'post_code', 'addresses[$index]', '', 'addr._linked_owner') %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('aua', 'post_code') %]
+ <div class="col-md-3 reg-field-input">
+ <input ng-change="field_modified()" ng-model="user_settings['opac.default_sms_notify']" type='text' />
</div>
</div>
- <!-- STREET1 -->
-
- <div class="row reg-field-row" ng-show="show_field('aua.street1')">
- [% draw_field_label('aua', 'street1') %]
- [% draw_form_input('aua',
- 'street1', 'addresses[$index]', '', 'addr._linked_owner') %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('aua', 'street1') %]
+ <div class="row reg-field-row" ng-if="org_settings['sms.enable']">
+ <div class="col-md-3 reg-field-label">
+ <label>[% l('Default SMS Carrier') %]</label>
+ </div>
+ <div class="col-md-3 reg-field-input">
+ <span class="nullable">
+ <select class="form-control" ng-model="user_settings['opac.default_sms_carrier']" ng-options="c.id() as c.name() for c in sms_carriers">
+ <option value="">Select a Carrier</option>
+ </select>
+ </span>
</div>
</div>
- <!-- STREET2 -->
-
- <div class="row reg-field-row" ng-show="show_field('aua.street2')">
- [% draw_field_label('aua', 'street2') %]
- [% draw_form_input('aua',
- 'street2', 'addresses[$index]', '', 'addr._linked_owner') %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('aua', 'street2') %]
+ <div class="row reg-field-row" ng-repeat="type in opt_in_setting_types">
+ <div class="col-md-3 reg-field-label" ng-if="type.name() != 'circ.send_email_checkout_receipts'">
+ <label>{{type.label()}}</label>
+ </div>
+ <div class="col-md-3 reg-field-input" ng-if="type.name() != 'circ.send_email_checkout_receipts'">
+ <input ng-change="field_modified()" type='checkbox' ng-model="user_settings[type.name()]" />
</div>
</div>
- <!-- CITY -->
+</div>
+<!-- end offline test -->
- <div class="row reg-field-row" ng-show="show_field('aua.city')">
- [% draw_field_label('aua', 'city') %]
- [% draw_form_input('aua',
- 'city', 'addresses[$index]', '', 'addr._linked_owner') %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('aua', 'city') %]
- </div>
+<!-- ident_type -->
+
+<div class="row reg-field-row" ng-show="show_field('au.ident_type')">
+ [% draw_field_label('au', 'ident_type') %]
+ <div class="col-md-3 reg-field-input">
+ <select class="form-control" ng-model="patron.ident_type" ng-required="field_required('au', 'ident_type')" ng-blur="handle_field_changed(patron, 'ident_type')"
+ ng-options="type.name() for type in ident_types track by type.id()">
+ </select>
</div>
+</div>
- <!-- COUNTY -->
+<!-- IDENT_VALUE -->
- <div class="row reg-field-row" ng-show="show_field('aua.county')">
- [% draw_field_label('aua', 'county') %]
- [% draw_form_input('aua',
- 'county', 'addresses[$index]', '', 'addr._linked_owner') %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('aua', 'county') %]
- </div>
+<div class="row reg-field-row" ng-show="show_field('au.ident_value')">
+ [% draw_field_label('au', 'ident_value') %] [% draw_form_input('au', 'ident_value') %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('au', 'ident_value') %]
</div>
+</div>
- <!-- STATE -->
+<!-- ident_type2 -->
- <div class="row reg-field-row" ng-show="show_field('aua.state')">
- [% draw_field_label('aua', 'state') %]
- [% draw_form_input('aua',
- 'state', 'addresses[$index]', '', 'addr._linked_owner') %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('aua', 'state') %]
- </div>
+<div class="row reg-field-row" ng-show="show_field('au.ident_type2')">
+ [% draw_field_label('au', 'ident_type2') %]
+ <div class="col-md-3 reg-field-input">
+ <select class="form-control" ng-model="patron.ident_type2" ng-required="field_required('au', 'ident_type2')" ng-blur="handle_field_changed(patron, 'ident_type2')"
+ ng-options="type.name() for type in ident_types track by type.id()">
+ </select>
</div>
+</div>
- <!-- COUNTRY -->
-
- <div class="row reg-field-row" ng-show="show_field('aua.country')">
- [% draw_field_label('aua', 'country') %]
- [% draw_form_input('aua',
- 'country', 'addresses[$index]', '', 'addr._linked_owner') %]
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('aua', 'country') %]
- </div>
+<!-- IDENT_VALUE2 -->
+<div class="row reg-field-row" ng-show="show_field('au.ident_value2')">
+ [% draw_field_label('au', 'ident_value2') %] [% draw_form_input('au', 'ident_value2') %]
+ <div class="col-md-6 patron-reg-example">
+ [% draw_example_text('au', 'ident_value2') %]
</div>
+</div>
- <!-- VALID -->
+<!-- BARCODE -->
- <div class="row reg-field-row" ng-show="show_field('aua.valid')">
- [% draw_field_label('aua', 'valid') %]
- <div class="col-md-3 reg-field-input">
- <input
- type='checkbox'
- ng-change="field_modified()"
- ng-disabled='addr._linked_owner'
- ng-blur="handle_field_changed(patron.addresses[$index], 'valid')"
- ng-model="patron.addresses[$index].valid"/>
- </div>
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('aua', 'valid') %]
+<div class="row reg-field-row" ng-show="show_field('ac.barcode')">
+ [% draw_field_label('ac', 'barcode') %]
+ <div class="col-md-3 reg-field-input">
+ <!-- field form input -->
+ <input type="text" name="barcode" ng-model="patron.card.barcode" ng-pattern="field_pattern('ac', 'barcode')" ng-required="field_required('ac', 'barcode')"
+ focus-me="focus_bc" ng-change="field_modified()" ng-disabled="disable_bc" class="form-control" ng-blur="handle_field_changed(patron.card, 'barcode')"
+ />
+ </div>
+ <div class="col-md-6 patron-reg-example">
+ <button class="btn btn-default" ng-show="!patron.isnew" ng-click="replace_card()">[% l('Replace Barcode') %]</button>
+ <button class="btn btn-default" ng-if="!patron.isnew" ng-click="cards_dialog()">[% l('See All') %]</button>
+ <div ng-show="dupe_barcode" class="patron-reg-validation-alert">
+ <span>[% l('Barcode is already in use') %]</span>
</div>
</div>
+</div>
- <!-- WITHIN_CITY_LIMITS -->
+<!-- USRNAME -->
- <div class="row reg-field-row" ng-show="show_field('aua.within_city_limits')">
- [% draw_field_label('aua', 'within_city_limits') %]
- <div class="col-md-3 reg-field-input">
- <input
- type='checkbox'
- ng-change="field_modified()"
- ng-disabled='addr._linked_owner'
- ng-blur="handle_field_changed(patron.addresses[$index], 'within_city_limits')"
- ng-model="patron.addresses[$index].within_city_limits"/>
- </div>
- <div class="col-md-6 patron-reg-example">
- [% draw_example_text('aua', 'within_city_limits') %]
+<div class="row reg-field-row" ng-show="show_field('au.usrname')">
+ [% draw_field_label('au', 'usrname') %]
+ <div class="col-md-3 reg-field-input">
+ <input type="text"
+ name='usrname'
+ ng-required="field_required('au', 'usrname')"
+ focus-me="focus_usrname"
+ ng-change="field_modified()"
+ ng-pattern="field_pattern('au', 'usrname')"
+ ng-blur="handle_field_changed(patron, 'usrname')"
+ class="form-control"
+ ng-model="patron.usrname"/>
+ </div>
+ <div class="col-md-6 patron-reg-example">
+ <div ng-show="dupe_username" class="patron-reg-validation-alert">
+ <span>[% l('Username is already in use') %]</span>
</div>
</div>
+</div>
- <!-- pending address -->
-
-</div> <!-- addresses -->
+<!-- PASSWD -->
-<div class="row">
- <button type="button" ng-click="new_address()"
- class="btn btn-success">[% l('New Address') %]</button>
+<div class="row reg-field-row" ng-show="show_field('au.passwd')">
+ [% draw_field_label('au', 'passwd') %]
+ [% draw_form_input('au', 'passwd'); %]
+ <div class="col-md-6 patron-reg-example">
+ <button class="btn btn-default" ng-click="generate_password()">
+ [% l('Generate Password') %]</button>
+ </div>
</div>
+<!-- Stat cats -->
+
<div ng-if="!offline">
<div class="alert alert-success row" role="alert"
ng-show="show_field('stat_cats') || hasRequiredStatCat" ng-if="stat_cats.length > 0">