Koha/koha-tmpl/intranet-tmpl/prog/en/modules/members/merge-patrons.tt
Wainui Witika-Park 1701149e90 Bug 26703: members folder
Swapped the order of the page titles to have the unique information
first, i.e. the name of the specific page displays first, and the name of the website (e.g. Koha) displays at the end.

To test:
1) Apply patch
2) Ensure each of the files in the members folder are swapped around
to display the most unique information first, and the website name is at the end
3) Ensure the pages displayed on the Staff Client that correspond to
these files also display the changes

Sponsored-by: Catalyst IT
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Henry Bolshaw <bolshawh@parliament.uk>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-04-21 11:16:34 +02:00

323 lines
15 KiB
Text

[% USE raw %]
[% USE Asset %]
[% USE Branches %]
[% USE Categories %]
[% USE KohaDates %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Merge patron records &rsaquo; Patrons &rsaquo; Koha</title>
[% INCLUDE 'doc-head-close.inc' %]
[% FILTER collapse %]
<style>
ins {
background-color: #e6ffe6;
}
del {
background-color: #ffe6e6;
}
.col0,
.col1 {
display: none;
}
.col3 ins,
.col2 del {
display: none;
}
#col-label,
.col2,
.col3 {
border-right: 1px solid #EEE;
flex-grow: 1;
margin-right:1em;
}
#col-label {
font-family: monospace;
}
#col-label div {
white-space: none;
}
.compare {
display: flex;
}
.modal-lg {
width: 90%;
}
</style>
[% END %]
</head>
<body id="pat_merge" class="pat">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'patron-search.inc' %]
[% BLOCK display_names %]
[% SWITCH rs %]
[% CASE 'Accountline' %]account lines
[% CASE 'ArticleRequest' %]article requests
[% CASE 'BorrowerAttribute' %]extended patron attributes
[% CASE 'BorrowerDebarment' %]patron restrictions
[% CASE 'BorrowerFile' %]patrons files
[% CASE 'BorrowerModification' %]patron modification requests
[% CASE 'ClubEnrollment' %]club enrollments
[% CASE 'Issue' %]checkouts
[% CASE 'ItemsLastBorrower' %]marks as last borrower of item
[% CASE 'Linktracker' %]tracked link clicks
[% CASE 'Message' %]patron messages
[% CASE 'MessageQueue' %]patron notices
[% CASE 'OldIssue' %]previous checkouts
[% CASE 'OldReserve' %]filled holds
[% CASE 'Rating' %]ratings
[% CASE 'Reserve' %]current holds
[% CASE 'Review' %]reviews
[% CASE 'Statistic' %]statistics
[% CASE 'SearchHistory' %]historical searches
[% CASE 'Suggestion' %]purchase suggestions
[% CASE 'TagAll' %]tags
[% CASE 'Virtualshelfcontent' %]list items
[% CASE 'Virtualshelfshare' %]list shares
[% CASE 'Virtualshelve' %]lists
[% CASE %][% rs | html %]
[% END %]
[% END %]
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/members/members-home.pl">Patrons</a> &rsaquo; Merge patron records</div>
<div class="main container-fluid">
<div class="row">
<div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
<h3>Merge patron records</h3>
[% IF action == 'show' %]
[% IF patrons.count > 1 %]
[% IF ( patrons.count == 2 ) %]
<div id="toolbar" class="btn-toolbar">
<div class="btn-group">
<button class="btn btn-default" id="compare_patrons">
<i class="fa fa-arrows-h"></i> Compare patrons
</button>
</div>
</div>
[% END %]
<p>Select patron to keep. Data from the other patrons will be transferred to this patron record and the remaining patron records will be deleted.</p>
<form type="post" action="merge-patrons.pl" id="patron-merge-form">
<table id="patron-merge-table" class="datatable">
<thead>
<tr>
<th>&nbsp;</th>
<th>Card</th>
<th>Name</th>
<th>Date of birth</th>
<th>Category</th>
<th>Library</th>
<th>Expires on</th>
</tr>
</thead>
<tbody>
[% FOREACH p IN patrons %]
<tr>
<td><input class="keeper" type="radio" name="keeper" value="[% p.id | html %]" data-borrowernumber="[% p.id | html %]" id="keeper_[% p.id | html %]" /></td>
<td>
<label for="keeper_[% p.id | html %]">
<strong>[% p.cardnumber | html %]</strong>
</label>
</td>
<td>
<a target="_blank" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% p.borrowernumber | uri %]">
[% INCLUDE 'patron-title.inc' patron = p %]
<i class="fa fa-window-restore"></i>
</a>
</td>
<td>[% p.dateofbirth | $KohaDates %]</td>
<td>[% Categories.GetName( p.categorycode ) | html %] ([% p.categorycode | html %])</td>
<td>[% Branches.GetName( p.branchcode ) | html %]</td>
<td>[% p.dateexpiry | $KohaDates %]</td>
[% END %]
</tbody>
</table>
<fieldset class="action">
[% FOREACH p IN patrons %]
<input type="hidden" name="id" value="[% p.id | html %]" />
[% END %]
<input type="hidden" name="action" value="merge" />
<input id="merge-patrons" type="submit" value="Merge patrons" />
</fieldset>
[% ELSE %]
<div class="dialog alert">Error: Two or more patrons need to be selected for merging</div>
[% END %]
</form>
[% ELSIF action == 'merge' %]
<h4>Results</h4>
[% IF error %]
[% IF error == 'INVALID_KEEPER' %]
<div class="dialog alert">Merge failed! The patron to keep was invalid.</div>
[% ELSE %]
<div class="dialog alert">Merge failed! The following error was reported: [% error | html %].</div>
[% END %]
[% ELSIF !results.merged.keys.size %]
<div class="dialog alert">No valid patrons to merge were found.</div>
[% ELSE %]
<p>
Patron records merged into <a href="moremember.pl?borrowernumber=[% keeper.id | uri %]">[% INCLUDE 'patron-title.inc' patron = keeper %]</a>
</p>
[% FOREACH pair IN results.merged.pairs %]
[% SET patron = pair.value.patron %]
<h5>[% INCLUDE 'patron-title.inc' %]</h5>
[% FOREACH r IN pair.value.updated.pairs %]
[% SET name = r.key %]
[% SET count = r.value %]
[% IF count %]
<p>
<span>[% count | html %] [% PROCESS display_names rs = name %] transferred.</span>
[% IF name == 'Reserve' %]
<strong>It is advisable to check for and resolve duplicate holds due to merging.</strong>
[% END %]
</p>
[% END %]
[% END %]
[% END %]
[% END %]
[% UNLESS error %]
<a class="btn btn-default" href="moremember.pl?borrowernumber=[% keeper.id | html %]">View patron record</a>
[% END %]
[% END %]
</div>
</div>
<!-- Modal -->
<div class="modal" id="compareModal" tabindex="-1" role="dialog" aria-labelledby="compareModalLabel">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="compareModalLabel">Compare patrons for merging</h4>
</div>
<div class="modal-body">
<div class="compare">
<div id="col-label">
<div><strong>Name:</strong></div>
<div><strong>Initials:</strong></div>
<div><strong>Other name:</strong></div>
<div><strong>Library:</strong></div>
<div><strong>Card number:</strong></div>
<div><strong>Category:</strong></div>
<br />
<div><strong>Address line 1:</strong></div>
<div><strong>Address line 2:</strong></div>
<div><strong>City:</strong></div>
<div><strong>State:</strong></div>
<div><strong>ZIP/Postal code:</strong></div>
<div><strong>Country:</strong></div>
<br />
<div><strong>Registration date:</strong></div>
<div><strong>Renewal date:</strong></div>
<div><strong>Expiration date:</strong></div>
<div><strong>Date of birth:</strong></div>
<div><strong>Restricted:</strong></div>
<div><strong>Primary email:</strong></div>
<div><strong>Secondary email:</strong></div>
<div><strong>Primary phone:</strong></div>
<div><strong>Secondary phone:</strong></div>
<div><strong>Other phone:</strong></div>
<div><strong>Gender:</strong></div>
<div><strong>Updated on:</strong></div>
<div><strong>Username:</strong></div>
</div>
[% FOREACH p IN patrons %]
<div id="col-[% p.borrowernumber | html %]-orig"class="col[% loop.index | html %]">
<!-- <pre> block is unindented to avoid unwanted whitespace -->
<pre>
[% IF ( p.surname ) %][% p.surname | html %], [% p.firstname | html %][% ELSE %]-[% END %]
[% IF ( p.initials ) %][% p.initials | html %][% ELSE %]-[% END %]
[% IF ( p.othernames ) %][% p.othernames | html %][% ELSE %]-[% END %]
[% IF ( p.branchcode ) %][% p.branchcode | html %][% ELSE %]-[% END %]
[% IF ( p.cardnumber ) %][% p.cardnumber | html %][% ELSE %]-[% END %]
[% IF ( p.categorycode ) %][% p.categorycode | html %][% ELSE %]-[% END %]
[% IF ( p.address ) %][% p.address | html %][% ELSE %]-[% END %]
[% IF ( p.address2 ) %][% p.address2 | html %][% ELSE %]-[% END %]
[% IF ( p.city ) %][% p.city | html %][% ELSE %]-[% END %]
[% IF ( p.state ) %][% p.state | html %][% ELSE %]-[% END %]
[% IF ( p.zipcode ) %][% p.zipcode | html %][% ELSE %]-[% END %]
[% IF ( p.country ) %][% p.country | html %][% ELSE %]-[% END %]
[% IF ( p.dateenrolled ) %][% p.dateenrolled | html %][% ELSE %]-[% END %]
[% IF ( p.date_renewed ) %][% p.date_renewed | html %][% ELSE %]-[% END %]
[% IF ( p.dateexpiry ) %][% p.dateexpiry | html %][% ELSE %]-[% END %]
[% IF ( p.dateofbirth ) %][% p.dateofbirth | html %][% ELSE %]-[% END %]
[% IF ( p.debarred ) %][% p.debarred | html %][% ELSE %]-[% END %]
[% IF ( p.email ) %][% p.email | html %][% ELSE %]-[% END %]
[% IF ( p.emailpro ) %][% p.emailpro | html %][% ELSE %]-[% END %]
[% IF ( p.phone ) %][% p.phone | html %][% ELSE %]-[% END %]
[% IF ( p.phonepro ) %][% p.phonepro | html %][% ELSE %]-[% END %]
[% IF ( p.mobile ) %][% p.mobile | html %][% ELSE %]-[% END %]
[% IF ( p.sex ) %][% p.sex | html %][% ELSE %]-[% END %]
[% IF ( p.updated_on ) %][% p.updated_on | html %][% ELSE %]-[% END %]
[% IF ( p.userid ) %][% p.userid | html %][% ELSE %]-[% END %]
</pre>
</div>
[% END %]
[% FOREACH p IN patrons %]
<div id="col-[% p.borrowernumber | html %]-diff" class="col[% ( loop.index + 2 ) | html %]"><pre></pre></div>
[% END %]
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" id="submit-merge-form"><i class="fa fa-compress" aria-hidden="true"></i> Merge patrons</button>
<button type="button" class="btn btn-default" data-dismiss="modal"><i class="fa fa-remove" aria-hidden="true"></i> Close</button>
</div>
</div> <!-- /.modal-content -->
</div> <!-- /.modal-dialog -->
</div> <!-- /#compareModal -->
[% MACRO jsinclude BLOCK %]
[% INCLUDE 'str/members-menu.inc' %]
[% Asset.js("js/members-menu.js") | $raw %]
[% Asset.js("lib/jsdiff/jsdiff.min.js") | $raw %]
<script>
$(document).ready(function() {
var controls = $("#merge-patrons, #compare_patrons");
controls.prop('disabled', true);
$('#patron-merge-table').on('change', 'input', function() {
if ( $('.keeper:checked').length > 0 ) {
controls.prop('disabled', false);
} else {
controls.prop('disabled', true);
}
});
$("#compare_patrons").on("click", function(e){
e.preventDefault();
$("#compareModal").modal("show");
});
$("#compareModal").on("shown.bs.modal", function(){
/* Find which column is the basis for merging */
var col0 = $(".keeper:checked").data("borrowernumber");
var col1 = $(".keeper:not(:checked)").data("borrowernumber");
/* Get the original patron data for comparison */
var diff1 = $("#col-" + col0 + "-orig pre").text();
var diff2 = $("#col-" + col1 + "-orig pre").text();
var diffs = diffString(diff2, diff1);
/* Load the diff HTML in the empty columns */
$(".col2 pre, .col3 pre").html(diffs);
});
$("#submit-merge-form").on("click", function(){
$("#patron-merge-form").submit();
});
});
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]