--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "prefs";
+ parent="prefs";
+ prefs_page = 'prefs';
+ can_call_action_trigger = 'true' %]
+
+<h3>[% l('Account Information and Preferences') %]</h3>
+<div id="acct_info_main">
+ <table title="[% l('Account preference') %]" class='light_border table table-hover'>
+ <tbody id='myopac_summary_tbody'>
+ [% IF ctx.user.pref_first_given_name || ctx.user.pref_second_given_name || ctx.user.pref_family_name %]
+ <tr>
+ <td class='color_4 light_border'>[% l("Preferred Name") %]</td>
+
+ <td class='light_border'>[% l(
+ HUMAN_NAME_FORMAT,
+ ctx.user.pref_prefix,
+ (ctx.user.pref_first_given_name || ctx.user.first_given_name),
+ ctx.user.pref_second_given_name,
+ (ctx.user.pref_family_name || ctx.user.family_name),
+ ctx.user.pref_suffix
+ ) | html %]</td>
+
+ <td></td>
+ </tr>
+ [% END %]
+ <tr>
+ <td class='color_4 light_border'>[% l("Legal Name") %]</td>
+
+ <td class='light_border'>[% l(
+ HUMAN_NAME_FORMAT,
+ ctx.user.prefix,
+ ctx.user.first_given_name,
+ ctx.user.second_given_name,
+ ctx.user.family_name,
+ ctx.user.suffix
+ ) | html %]</td>
+
+ <td></td>
+ </tr>
+
+ <tr>
+ <td class='color_4 light_border'>[% l("Day Phone") %]</td>
+ <td class='light_border'>[% ctx.user.day_phone | html %]</td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td class='color_4 light_border'>[% l("Evening Phone") %]</td>
+ <td class='light_border'>[% ctx.user.evening_phone | html %]</td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td class='color_4 light_border'>[% l("Other Phone") %]</td>
+ <td class='light_border'>[% ctx.user.other_phone | html %]</td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td class='color_4 light_border'>
+ <div style="position:absolute">
+ </div>[% l("Username") %]
+ </td>
+ <td class='light_border'>[% ctx.user.usrname | html %]</td>
+ [%- IF ctx.username_change_disallowed %]
+ <td></td>
+ [%- ELSE %]
+ <td class='light_border'><a class="btn btn-sm btn-action" href='update_username'
+ title="[% l('Change Username') %]"><i class="fas fa-user-cog"></i> [% l("Change") %]</a></td>
+ [%- END %]
+ </tr>
+ <tr>
+ <td class='color_4 light_border'>[% l("Password") %]</td>
+ <td class='light_border'>[% l("(not shown)") %]</td>
+ <td>
+ [%- IF disable_password_change == 'true' %]
+ <span></span>
+ [%- ELSE %]
+ <span class='light_border'><a class="btn btn-sm btn-action" href='update_password'
+ title="[% l('Change Password') %]"><i class="fas fa-user-cog"></i> [% l("Change") %]</a></span>
+ [%- END %]
+ </td>
+ </tr>
+ <tr>
+ <td class='color_4 light_border'>[% l("Email Address") %]</td>
+ <td class='light_border'>[% ctx.user.email | html %]</td>
+ <td>
+ [%- IF disable_email_change == 'true' %]
+ <span></span>
+ [%- ELSE %]
+ <span class='light_border'><a class="btn btn-sm btn-action" href='update_email'
+ title="[% l('Update Email Address') %]"><i class="fas fa-user-cog"></i> [% l('Change') %]</a></span>
+ [%- END %]
+ [%- IF ctx.user.email %]
+ <span class='light_border'>
+ <a href="#" class="btn btn-sm btn-action" onclick="sendTestEmail(
+ [% ctx.user.id %], '[% ctx.authtoken %]')"
+ title="[% l('Send Test Email') %]">
+ <i class="fas fa-envelope"></i> [% l('Send Test Email') %]
+ </a>
+ </span>
+ [%- END %]
+ </td>
+ </tr>
+ <tr id="test_notification_banner" style="display:none">
+ <td></td>
+ <td colspan='2'>
+ [% INCLUDE "opac/myopac/test_notification.tt2" message_type = "email" %]
+ </td>
+ </tr>
+
+ [% IF ctx.user.ident_value %]<tr class="hide_me">
+ <td class='color_4 light_border'>
+ [% l("Primary Identification") %]</td>
+
+ <td class='light_border'>
+ [%
+ # l('[_1] ([_2])', ctx.user.ident_value, ctx.user.ident_type.name) | html
+ # XXX uncomment the above line to show primary
+ # identification. With a minor tweak it could
+ # alternatively be shown but partially obscured.
+ %]
+ </td>
+ <td></td>
+ </tr>[% END %]
+
+ <tr>
+ <td class='color_4 light_border'>[% l("Active Barcode") %]</td>
+ <td class='light_border'>[% ctx.user.card.barcode %]</td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td class='color_4 light_border'>[% l("Home Library") %]</td>
+ <td class='light_border'>
+ [% ctx.get_aou(ctx.user.home_ou.parent_ou).name %]<br/>
+ [% ctx.user.home_ou.name | html %]<br/>
+ [% ctx.user.home_ou.billing_address.street1 %]<br/>
+ [% IF ctx.user.home_ou.billing_address.street2; ctx.user.home_ou.billing_address.street2 _ "<br/>"; END %]
+ [% ctx.user.home_ou.billing_address.city %], [% ctx.user.home_ou.billing_address.state %]
+ [% ctx.user.home_ou.billing_address.post_code %]<br/>
+ <br/>
+
+ [% IF ctx.user.home_ou.phone; ctx.user.home_ou.phone _ "<br/>"; END %]
+
+ [% IF ctx.user.home_ou.email; ctx.user.home_ou.email _ "<br/>"; END %]
+ [% lib_url = ctx.get_org_setting(ctx.user.home_ou.id, 'lib.info_url');
+ IF lib_url;
+ '<a href="'; lib_url | html; '" property="url">'; lib_url; '</a>';
+ END;
+ %]
+ </td> <td></td>
+ </tr>
+ <tr>
+ <td class='color_4 light_border'>[% l("Account Creation Date") %]</td>
+ <td class='light_border'>[% date.format(ctx.parse_datetime(ctx.user.create_date), DATE_FORMAT) %]</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td class='color_4 light_border'>[% l("Account Expiration Date") %]</td>
+ <td class='light_border'>
+ [%- IF date.format(ctx.parse_datetime(ctx.user.expire_date), '%s') < date.format(date.now , '%s'); -%]
+ <span class="danger">[% date.format(ctx.parse_datetime(ctx.user.expire_date), DATE_FORMAT) %]</span>
+ [% ELSE %]
+ [% date.format(ctx.parse_datetime(ctx.user.expire_date), DATE_FORMAT) %]
+ [% END %]
+ </td>
+ <td></td>
+ </tr>
+ [% IF ctx.user.stat_cat_entries.size;
+ FOR statcat IN ctx.user.stat_cat_entries;
+ IF statcat.stat_cat.opac_visible == 't'; %]
+ <tr>
+ <td class='color_4 light_border'>[% statcat.stat_cat.name %]</td>
+ <td class='light_border' colspan='2'>[% statcat.stat_cat_entry %]</td>
+ </tr>
+ [% END;
+ END;
+ END %]
+ </tbody>
+ </table>
+
+ <br />
+ <hr />
+ <br />
+
+ <div class="header_middle mb-3">
+ <span>Addresses</span>
+ </div>
+
+<div class="row">
+ [%
+ # cycle through the non-pending address. For each non-pending addr
+ # that has a corresponding pending addr, render the pending addr
+ # along the right inside it's own edit form
+ pending = {};
+ regular = [];
+ edit_addr_id = CGI.param('edit_address');
+ FOR addr IN ctx.user.addresses;
+ IF addr.pending == 't';
+ replaces = addr.replaces;
+ pending.$replaces = addr;
+ ELSE;
+ regular.push(addr);
+ END;
+ END;
+ FOR addr IN regular;
+ cur_id = addr.id;
+ pending_addr = pending.$cur_id;
+ %]
+ <div class="col-lg-6 col-12">
+ <table class='table' title="[% l('Addresses') %]">
+
+ <tbody>
+ <tr>
+ <!-- pending address form -->
+ [% IF pending_addr OR edit_addr_id == cur_id;
+ update_addr = pending_addr || addr %]
+ <td>
+
+ <form method='post'>
+ [% IF pending_addr %]
+ <input type='hidden' name='pending_addr' value='[% pending_addr.id %]'/>
+ [% ELSE %]
+ <input type='hidden' name='replace_addr' value='[% edit_addr_id | html %]'/>
+ [% END %]
+ <table class='pending-addr table' title="[% l('Pending Addresses') %]">
+ <tr><td colspan="2"><h5 class="text-center">Pending Address Change</h5></td></tr>
+ [% addr_fields = [
+ {label => l("Address Type"), name => 'address_type', value => update_addr.address_type},
+ {label => l("Street"), name => 'street1', value => update_addr.street1},
+ {label => l("Street"), name => 'street2', value => update_addr.street2},
+ {label => l("City"), name => 'city', value => update_addr.city},
+ {label => l("County"), name => 'county', value => update_addr.county},
+ {label => l("State"), name => 'state', value => update_addr.state},
+ {label => l("Country"), name => 'country', value => update_addr.country},
+ {label => l("ZIP"), name => 'post_code', value => update_addr.post_code},
+ ];
+ FOR field IN addr_fields %]
+
+ <tr>
+
+ <td><label for="addr-form-[% field.name %]">[% field.label %]</label></td>
+ <td><input name="[% field.name %]"
+ id="addr-form-[% field.name %]"
+ value="[% field.value | html %]" class="form-control">
+ </td>
+ </tr>
+ [% END %]
+ <tr>
+ <td><button type='submit' class="btn btn-confirm "><i class="fas fa-save"></i> [% l('Save Changes') %]
+
+ </button></td>
+ <td>
+ [% params = (pending_addr) ? {delete_pending => pending_addr.id} : {} %]
+ <a href="[% mkurl('', params, 1) %]" class="btn btn-deny "><i class="fas fa-trash-alt"></i> [% l('Discard Pending Address') %]</a>
+ </td>
+ </tr>
+ <tr><td colspan='2'><i>[% l('This address has a pending change.') %]</i></td></tr>
+ <tr><td colspan='2'><i>[% l('Address changes will be verified by staff') %]</i></td></tr>
+ </table>
+ </form>
+ </td>
+ [% ELSE %]
+ <td>
+
+ <!-- read-only address display -->
+ <table class='table table-hover light_border' title="[% l('Active Addresses') %]">
+ <tr><td class='color_4'>[% l("Address Type") %]</td><td>[% addr.address_type | html %]</td></tr>
+ <tr><td class='color_4'>[% l("Street") %]</td><td>[% addr.street1 | html %]</td></tr>
+ <tr><td class='color_4'>[% l("Street") %]</td><td>[% addr.street2 | html %]</td></tr>
+ <tr><td class='color_4'>[% l("City") %]</td><td>[% addr.city | html %]</td></tr>
+ <tr><td class='color_4'>[% l("County") %]</td><td>[% addr.county| html %]</td></tr>
+ <tr><td class='color_4'>[% l("State") %]</td><td>[% addr.state | html %]</td></tr>
+ <tr><td class='color_4'>[% l("Country") %]</td><td>[% addr.country | html %]</td></tr>
+ <tr><td class='color_4'>[% l("Zip") %]</td><td>[% addr.post_code | html %]</td></tr>
+ [% IF ctx.get_org_setting(ctx.user.home_ou.id, 'opac.allow_pending_address')
+ AND !pending_addr AND edit_addr_id != cur_id %]
+ <tr><td colspan='2'><a class="btn btn-action" href='?edit_address=[% addr.id %]'><i class="fas fa-edit"></i> [% l('Edit Address') %]</a></td></tr>
+ [% END %]
+ </table>
+
+ </td>
+ [% END %]
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ [% END %]
+
+</div>
+</div>
+
+[% END %]