From 5c1655e6a1b523e564c8121e8df84ffcd6ddd901 Mon Sep 17 00:00:00 2001 From: Bill Erickson <berickxx@gmail.com> Date: Mon, 6 Aug 2018 15:18:35 -0400 Subject: [PATCH] LP#1785681 Patron address copy to clipboard Support copying formatted addresses to the clipboard in the browser staff client, similar to the XUL client. Action is performed via a new link in the addresses section (next to "print") in the patron summary sidebar. Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Garry Collum <gcollum@gmail.com> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> --- Open-ILS/src/templates/staff/circ/patron/t_summary.tt2 | 18 ++++++++++++++++-- Open-ILS/web/js/ui/default/staff/circ/patron/app.js | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/Open-ILS/src/templates/staff/circ/patron/t_summary.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_summary.tt2 index c89a0075b3..6b16b66b10 100644 --- a/Open-ILS/src/templates/staff/circ/patron/t_summary.tt2 +++ b/Open-ILS/src/templates/staff/circ/patron/t_summary.tt2 @@ -181,12 +181,26 @@ <fieldset> <legend ng-class="{'patron-summary-alert': addr.valid() == 'f'}"> {{addr.address_type()}} - <a href class="pad-horiz patron-summary-act-link" - ng-click="print_address(addr)">[% l('(print)') %]</a> + (<a href class="patron-summary-act-link" + ng-click="copy_address(addr)">[%- l('copy') -%]</a><a + href class="patron-summary-act-link" + ng-click="print_address(addr)">[%- l('/print') -%]</a>) </legend> <div>{{addr.street1()}} {{addr.street2()}}</div> <div>{{addr.city()}}, {{addr.state()}} {{addr.post_code()}}</div> </fieldset> + <textarea id="patron-address-copy-{{addr.id()}}" rows="2" + style="visibility:hidden">[%- l( + '[_1] [_2] [_3] [_4] [_5] [_6], [_7] [_8]', + '{{patron().first_given_name()}}', + '{{patron().second_given_name()}}', + '{{patron().family_name()}}', + '{{addr.street1()}}', + '{{addr.street2()}}', + '{{addr.city()}}', + '{{addr.state()}}', + '{{addr.post_code()}}') + -%]</textarea> </div> </div> </div> diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/app.js b/Open-ILS/web/js/ui/default/staff/circ/patron/app.js index d37ed644f0..d007257e4f 100644 --- a/Open-ILS/web/js/ui/default/staff/circ/patron/app.js +++ b/Open-ILS/web/js/ui/default/staff/circ/patron/app.js @@ -339,6 +339,24 @@ function($scope, $q , $location , $filter , egCore , egNet , egUser , egAlertDi }); } + $scope.copy_address = function(addr) { + // Alas, navigator.clipboard is not yet supported in FF and others. + var lNode = document.querySelector('#patron-address-copy-' + addr.id()); + + // Un-hide the textarea just long enough to copy its data. + // Using node.style instead of ng-show/ng-hide in hopes it + // will be quicker, so the user never sees the textarea. + lNode.style.visibility = 'visible'; + lNode.focus(); + lNode.select(); + + if (!document.execCommand('copy')) { + console.error('Copy command failed'); + } + + lNode.style.visibility = 'hidden'; + } + $scope.toggle_expand_summary = function() { if ($scope.collapsePatronSummary) { $scope.collapsePatronSummary = false; -- 2.11.0