Bugzilla – Attachment 116287 Details for
Bug 27607
Add the ability to compare patron records during merge process
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 27607: Add the ability to compare patron records during merge process
Bug-27607-Add-the-ability-to-compare-patron-record.patch (text/plain), 10.42 KB, created by
Owen Leonard
on 2021-02-03 16:47:18 UTC
(
hide
)
Description:
Bug 27607: Add the ability to compare patron records during merge process
Filename:
MIME Type:
Creator:
Owen Leonard
Created:
2021-02-03 16:47:18 UTC
Size:
10.42 KB
patch
obsolete
>From bac18977344c311f3bc167c7724054ca097d7961 Mon Sep 17 00:00:00 2001 >From: Owen Leonard <oleonard@myacpl.org> >Date: Fri, 11 Sep 2020 16:33:15 +0000 >Subject: [PATCH] Bug 27607: Add the ability to compare patron records during > merge process > >This patch adds an option to compare two patron records during the >patron merge process. It can't work with more than two patrons, so the >option only appears if one has selected only two patrons to merge. > >This patch also adds links to the patron names for opening the patron >record in a new tab. > >To test, apply the patch and perform a search for patrons in the staff >client Patrons module. > > - Select two patrons in the list of search results and click "Merge > selected patrons." > - On the merge patron records page, confirm that the two patron names > are links which, when clicked, open the patron details in another > tab. > - Click the "Compare patrons" button. A modal window should display > highlighting the differences in some selected values in the patron > record. > - Close the modal and click "Compare patrons" again. It should still > display correctly. > - Repeat the same process above but select more than two patrons for > merging. The "Compare patrons" button should not appear. >--- > .../prog/en/modules/members/merge-patrons.tt | 155 ++++++++++++++++++++- > 1 file changed, 152 insertions(+), 3 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/merge-patrons.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/merge-patrons.tt >index 3ac0fbe1cc..d68ea36a4e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/merge-patrons.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/merge-patrons.tt >@@ -7,7 +7,39 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Patrons › Merge patron records</title> > [% INCLUDE 'doc-head-close.inc' %] >- >+<style> >+ [% FILTER collapse %] >+ ins { >+ background-color: #e6ffe6; >+ } >+ del { >+ background-color: #ffe6e6; >+ } >+ #col0 ins, >+ #col1 del { >+ display: none; >+ } >+ #col-label, >+ #col0, >+ #col1 { >+ 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%; >+ } >+ [% END %] >+</style> > </head> > <body id="pat_merge" class="pat"> > [% INCLUDE 'header.inc' %] >@@ -52,7 +84,18 @@ > > [% 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"> >+ 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"> > <table id="patron-merge-table" class="datatable"> > <thead> >@@ -76,7 +119,12 @@ > <strong>[% p.cardnumber | html %]</strong> > </label> > </td> >- <td>[% INCLUDE 'patron-title.inc' patron = p %]</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> >@@ -139,10 +187,95 @@ > </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">×</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>Country:</strong></div> >+ <div><strong>State:</strong></div> >+ <div><strong>Zip 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[% 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.country ) %][% p.country | 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 %] >+ </div> >+ </div> >+ <div class="modal-footer"> >+ <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() { > $('#merge-patrons').prop('disabled', true); >@@ -153,7 +286,23 @@ > $('#merge-patrons').prop('disabled', true); > } > }); >+ $("#compare_patrons").on("click", function(e){ >+ e.preventDefault(); >+ $("#compareModal").modal("show"); >+ }); >+ $("#compareModal").on("shown.bs.modal", function(){ >+ if( $(this).hasClass("shown") ){ >+ // modal has already displayed, don't re-run diff >+ } else { >+ $(this).addClass("shown"); >+ var diff1 = $("#col0 pre").text(); >+ var diff2 = $("#col1 pre").text(); >+ var diffs = diffString(diff1,diff2); >+ $("#col0 pre,#col1 pre").html(diffs); >+ } >+ }); > }); >+ > </script> > [% END %] > >-- >2.11.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 27607
:
116287
|
116534
|
116895
|
116896
|
117090
|
117091
|
117124
|
117125
|
119064
|
119065
|
119149
|
119150