[freeside-commits] branch master updated. 381992561d7b1a88e05d49d3e474a2fad25873c7

Mitch Jackson mitch at freeside.biz
Wed Jun 13 00:27:47 PDT 2018


The branch, master has been updated
       via  381992561d7b1a88e05d49d3e474a2fad25873c7 (commit)
      from  360f89789c45e1fd7cb84b1442d2f0c8353066d9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 381992561d7b1a88e05d49d3e474a2fad25873c7
Author: Mitch Jackson <mitch at freeside.biz>
Date:   Wed Jun 13 02:25:09 2018 -0500

    RT# 32234 Allow unmask of SSN/DL#

diff --git a/FS/FS/AccessRight.pm b/FS/FS/AccessRight.pm
index 471e32aff..1b581b247 100644
--- a/FS/FS/AccessRight.pm
+++ b/FS/FS/AccessRight.pm
@@ -156,6 +156,8 @@ tie my %rights, 'Tie::IxHash',
     'View package definition costs', #NEWNEW
     'Change package start date',
     'Change package contract end date',
+    'Unmask customer DL',
+    'Unmask customer SSN',
   ],
   
   ###
@@ -509,4 +511,3 @@ L<FS::access_right>, L<FS::access_group>, L<FS::access_user>
 =cut
 
 1;
-
diff --git a/httemplate/edit/cust_main/name.html b/httemplate/edit/cust_main/name.html
index 713f54cdb..c1078d46a 100644
--- a/httemplate/edit/cust_main/name.html
+++ b/httemplate/edit/cust_main/name.html
@@ -1,7 +1,17 @@
 <%def .namepart>
-% my ($field, $value, $label, $extra) = @_;
+% my ($field, $value, $label, $extra, $unmask_field) = @_;
 <DIV STYLE="display: inline-block" ID="<% $field %>_input">
   <INPUT TYPE="text" NAME="<% $field %>" VALUE="<% $value |h %>" <%$extra%>>
+% if (
+%   ref $unmask_field
+%   && !$unmask_field->{unmask_ss}
+%   && $FS::CurrentUser::CurrentUser->access_right( $unmask_field->{access_right} )
+% ) {
+  <& /elements/link-replace_element_text.html, {
+      target_id    => $unmask_field->{target_id},
+      replace_text => $unmask_field->{replace_text},
+  } &>
+% }
   <BR><FONT SIZE="-1" COLOR="#333333"><% emt($label) %></FONT>
 </DIV>
 </%def>
@@ -13,7 +23,12 @@
         <& .namepart, 'first', $cust_main->first, 'First' &>
 % if ( $conf->exists('show_ss') ) {
          
-        <& .namepart, 'ss', $ss, 'SS#', "SIZE=11" &>
+        <& .namepart, 'ss', $ss, 'SS#', "SIZE=11 ID='ss'", {
+          target_id    => 'ss',
+          replace_text => $cust_main->ss,
+          access_right => 'Unmask customer SSN',
+          unmask_ss    => $conf->exists('unmask_ss'),
+        } &>
 % } else  {
         <INPUT TYPE="hidden" NAME="ss" VALUE="<% $ss %>">
 % }
diff --git a/httemplate/edit/cust_main/stateid.html b/httemplate/edit/cust_main/stateid.html
index 3500d631c..cc0890fe1 100644
--- a/httemplate/edit/cust_main/stateid.html
+++ b/httemplate/edit/cust_main/stateid.html
@@ -1,7 +1,12 @@
 % if ( $conf->exists('show_stateid') ) {
 <TR>
   <TH ALIGN="right"><% $stateid_label %></TH>
-  <TD><INPUT TYPE="text" NAME="stateid" VALUE="<% $stateid %>" SIZE=12></TD>
+  <TD>
+    <INPUT TYPE="text" NAME="stateid" VALUE="<% $stateid %>" SIZE=12 ID="stateid">
+% if ( $FS::CurrentUser::CurrentUser->access_right( 'Unmask customer DL' )) {
+    <& /elements/link-replace_element_text.html, {target_id => 'stateid', replace_text => $cust_main->stateid} &>
+% }
+  </TD>
   <TD><& /elements/select-state.html,
           state   => $cust_main->stateid_state,
           country => $cust_main->country, # how does this work on new customer?
diff --git a/httemplate/elements/link-replace_element_text.html b/httemplate/elements/link-replace_element_text.html
new file mode 100644
index 000000000..8e611954c
--- /dev/null
+++ b/httemplate/elements/link-replace_element_text.html
@@ -0,0 +1,45 @@
+<%doc>
+
+Display a link with javascript to replace text within a element.
+
+Usage:
+
+<& /elements/link-replace_element_text.html, {
+      target_id    => 'input_id',
+      replace_text => 'hello',
+
+      element_type => 'input', # Uses jquery val()  method to replace text
+      element_type => 'div',   # Uses jquery text() method to replace text
+
+      href  => ...
+      style => ...
+      class => ...
+   }
+&>
+
+</%doc>
+<a href="<% $param{href} %>"
+   style="<% $param{style} %>"
+% if ($param{class}) {
+   class="<% $param{class} %>"
+% }
+   onClick="$('#<% $param{target_id} %>').<% $param{jmethod} %>('<% $param{replace_text} |h %>');">&#x25C1;</a>
+<%init>
+
+die "template call requires a parameter hashref" unless ref $_[0];
+
+# Defaults that can be overridden in param hashref
+my %param = (
+    target_id    => 'SPECIFY_AN_INPUT_ELEMENT_ID',
+    replace_text => 'REPLACEMENT_TEXT_FOR_INPUT_ELEMENT',
+    element_type => 'input',
+
+    link_text    => '%#x25C1;', # ◁
+    href         => 'javascript:void(0)',
+    style        => 'text-decoration:none;',
+    class        => undef,
+
+    %{ $_[0] },
+);
+$param{jmethod} = $param{element_type} eq 'input' ? 'val' : 'text';
+</%init>
diff --git a/httemplate/view/cust_main/contacts.html b/httemplate/view/cust_main/contacts.html
index 1660c1c22..367659293 100644
--- a/httemplate/view/cust_main/contacts.html
+++ b/httemplate/view/cust_main/contacts.html
@@ -29,9 +29,20 @@
     <TD COLSPAN=5><% $cust_main->contact |h %></TD>
 %   if ( $conf->exists('show_ss') ) {
     <TH ALIGN="right"><% mt('SS#') |h %></TH>
-    <TD><% $conf->exists('unmask_ss')
-                              ? $cust_main->ss
-                              : $cust_main->masked('ss') || ' ' %></TD>
+    <TD>
+      <span id="ss_span" style="white-space:nowrap;">
+      <% $conf->exists('unmask_ss')
+           ? $cust_main->ss
+           : $cust_main->masked('ss') || ' ' %>
+%   if ( !$conf->exists('unmask_ss') && $FS::CurrentUser::CurrentUser->access_right('Unmask customer SSN')) {
+      <& /elements/link-replace_element_text.html, {
+           target_id    => 'ss_span',
+           replace_text => $cust_main->ss,
+           element_type => 'span'
+      } &>
+%   }
+      </span>
+    </TD>
 %   }
   </TR>
 %   if ( $conf->exists('cust_main-enable_spouse') and
@@ -172,7 +183,18 @@
 
 <TR>
     <TH ALIGN="right"><% $stateid_label %></TH>
-    <TD><% $cust_main->masked('stateid') || '&nbsp' %></TD>
+    <TD>
+      <span id="stateid_span" style="white-space:nowrap;">
+      <% $cust_main->masked('stateid') || '&nbsp' %>
+%   if ( $FS::CurrentUser::CurrentUser->access_right('Unmask customer DL')) {
+      <& /elements/link-replace_element_text.html, {
+           target_id => 'stateid_span',
+           replace_text => $cust_main->stateid,
+           element_type => 'span'
+      } &>
+%   }
+      </span>
+    </TD>
     <TH ALIGN="right"><% $stateid_state_label %></TH>
     <TD><% $cust_main->stateid_state || '&nbsp' %></TD>
   </TR>

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/AccessRight.pm                               |  3 +-
 httemplate/edit/cust_main/name.html                | 19 ++++++++-
 httemplate/edit/cust_main/stateid.html             |  7 +++-
 httemplate/elements/link-replace_element_text.html | 45 ++++++++++++++++++++++
 httemplate/view/cust_main/contacts.html            | 30 +++++++++++++--
 5 files changed, 96 insertions(+), 8 deletions(-)
 create mode 100644 httemplate/elements/link-replace_element_text.html




More information about the freeside-commits mailing list