[freeside-commits] branch master updated. f675734f1eda5b39f891a6fc8f2f29cbd2e36c35

Jonathan Prykop jonathan at 420.am
Mon Oct 24 01:52:16 PDT 2016


The branch, master has been updated
       via  f675734f1eda5b39f891a6fc8f2f29cbd2e36c35 (commit)
      from  511c1f635c1c64c90a7ae882730504f145c8a09c (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 f675734f1eda5b39f891a6fc8f2f29cbd2e36c35
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Mon Oct 24 03:51:26 2016 -0500

    72901: OFM Freeside Note Classes [conf update, jquery refactor]

diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 6bfe047..e4f5819 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -3931,6 +3931,13 @@ and customer address. Include units.',
   },
 
   {
+    'key'         => 'cust_main_note-require_class',
+    'section'     => 'customer_fields',
+    'description' => 'Require customer note classes for customer notes',
+    'type'        => 'checkbox',
+  },
+
+  {
     'key'         => 'cust_main-ticket_statuses',
     'section'     => 'ticketing',
     'description' => 'Show tickets with these statuses on the customer view page.',
@@ -5417,10 +5424,14 @@ and customer address. Include units.',
 
   {
     'key'         => 'note-classes',
-    'section'     => 'customer_fields',
-    'description' => 'Use customer note classes',
+    'section'     => 'deprecated',
+    'description' => 'Use customer note classes (now automatically used if classes are defined)',
     'type'        => 'select',
-    'select_enum' => [ '', 'Enabled', 'Required' ],
+    'select_hash' => [
+                       0 => 'Disabled',
+		       1 => 'Enabled',
+		       2 => 'Enabled, with tabs',
+		     ],
   },
 
   {
diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm
index 8452086..fce4633 100644
--- a/FS/FS/Upgrade.pm
+++ b/FS/FS/Upgrade.pm
@@ -178,14 +178,6 @@ If you need to continue using the old Form 477 report, turn on the
     $conf->set('cust-fields',$cust_fields);
   }
 
-  #repurposed
-  $conf->set('note-classes','Enabled')
-    if $conf->exists('note-classes')
-      and grep {$_ eq $conf->config('note-classes')} ('1','2');
-  $conf->set('note-classes','')
-    if $conf->exists('note-classes')
-      and '0' eq $conf->config('note-classes');
-
   enable_banned_pay_pad() unless length($conf->config('banned_pay-pad'));
 
   # if translate-auto-insert is enabled for a locale, ensure that invoice
diff --git a/FS/FS/cust_main_note.pm b/FS/FS/cust_main_note.pm
index 4c48eb6..2288d7c 100644
--- a/FS/FS/cust_main_note.pm
+++ b/FS/FS/cust_main_note.pm
@@ -120,8 +120,7 @@ sub check {
   if (!$self->classnum) {
     my $conf = new FS::Conf;
     return 'Note class is required'
-      if $conf->exists('note-classes')
-        and $conf->config('note-classes') eq 'Required';
+      if $conf->exists('cust_main_note-require_class');
   }
 
   $self->SUPER::check;
diff --git a/httemplate/edit/cust_main_note.cgi b/httemplate/edit/cust_main_note.cgi
index cc93f24..18d59e9 100755
--- a/httemplate/edit/cust_main_note.cgi
+++ b/httemplate/edit/cust_main_note.cgi
@@ -6,17 +6,17 @@
 <INPUT TYPE="hidden" NAME="custnum" VALUE="<% $custnum %>">
 <INPUT TYPE="hidden" NAME="notenum" VALUE="<% $notenum %>">
 
-% if ($conf->exists('note-classes') && $conf->config('note-classes')) {
-%   my %includeopts = $conf->config('note-classes') eq 'Enabled'
-%                   ? ('empty_label' => '(unclassified)')
-%                   : ('disable_empty' => 1); # eq 'Required'
+% if (my @noteclasses = qsearch('cust_note_class',{ 'disabled' => '' })) {
+%   my %noteclassopts = $conf->exists('cust_main_note-require_class')
+%                     ? ('disable_empty' => 1)
+%                     : ('empty_label' => '(unclassified)');
     Class  
 	<% include( '/elements/select-table.html',
                  'table'       => 'cust_note_class',
+                 'records'     => \@noteclasses,
                  'name_col'    => 'classname',
                  'curr_value'  => $classnum,
-                 'hashref'     => { 'disabled' => '' },
-                 %includeopts,
+                 %noteclassopts,
          ) %>
     <BR>
 % }
diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html
index eb34e49..c4ea9cd 100644
--- a/httemplate/elements/menu.html
+++ b/httemplate/elements/menu.html
@@ -684,8 +684,7 @@ tie my %config_cust, 'Tie::IxHash',
   'Contact types'    =>  [ $fsurl.'browse/contact_class.html', ''], #XXX useful description
 ;
   
-$config_cust{'Note classes'} = [ $fsurl.'browse/cust_note_class.html', 'Note classes define groups of customer notes for reporting.' ]
-    if ($conf->exists('note-classes') && $conf->config('note-classes'));
+$config_cust{'Note classes'} = [ $fsurl.'browse/cust_note_class.html', 'Note classes define groups of customer notes for reporting.' ];
 
 tie my %config_agent, 'Tie::IxHash',
   'Agent types' => [ $fsurl.'browse/agent_type.cgi', 'Agent types define groups of package definitions that you can then assign to particular agents' ],
diff --git a/httemplate/view/cust_main/notes/notes.html b/httemplate/view/cust_main/notes/notes.html
index f36d7d8..f998ba4 100644
--- a/httemplate/view/cust_main/notes/notes.html
+++ b/httemplate/view/cust_main/notes/notes.html
@@ -2,60 +2,44 @@
 <SCRIPT TYPE="text/javascript">
 
 function display_notes_classnum (classnum) {
-
-  var bgcolor1 = '#eeeeee';
-  var bgcolor2 = '#ffffff';
-  var sticky_color = { '#eeeeee' : '#ffff66',
-                       '#ffffff' : '#ffffb8' };
-  var notes_bgcolor = '';
-
-  var trs = document.getElementsByTagName("TR");
-  for (var i=0; i < trs.length; i++) {
-    if (trs[i].id.length > 6 && trs[i].id.substring(0,6) == 'notes_') {
-      if (( classnum == '-1' ) || ( trs[i].getAttribute('data-classnum') == classnum )) {
-        trs[i].style.display = 'table-row';
-        if ( notes_bgcolor == bgcolor1 ) {
-          notes_bgcolor = bgcolor2;
-        } else {
-          notes_bgcolor = bgcolor1;
-        }
-        trs[i].style.backgroundColor = (trs[i].getAttribute('data-sticky') == '1') ? sticky_color[notes_bgcolor] : notes_bgcolor;
-      } else {
-        trs[i].style.display = 'none';
-      }
-    }
-  }
-%   if ($note_classes_conf) {
-
-  var as = document.getElementsByTagName("a");
-  for (var i=0; i < as.length; i++) {
-    if(as[i].id.length > 14 && as[i].id.substring(0,14) == 'notes_tablink_') {
-      if(as[i].id == 'notes_tablink_'+classnum) {
-        as[i].style.fontWeight = 'bold';
-      } else {
-        as[i].style.fontWeight = 'normal';
-      }
-    }
+  // hide/show
+  var $custnote = $('.custnote');
+  if (classnum >= 0) {
+    $custnote.hide();
+    $('tr[data-classnum=' + classnum + ']').show();
+  } else {
+    $custnote.show();
   }
-%   } # if note_classes_conf
-
+  // restripe
+  var $shownote = $custnote.filter(':visible');
+  var $shownote_even = $shownote.filter(':even');
+  var $shownote_odd = $shownote.filter(':odd');
+  $shownote_even.css('background-color','#eeeeee');
+  $shownote_even.filter('.stickynote').css('background-color','#ffff66');
+  $shownote_odd.css('background-color','#ffffff');
+  $shownote_odd.filter('.stickynote').css('background-color','#ffffb8');
+%   if ($use_class_tabs) {
+  // update links
+  var $tablink = $('.notes_tablink');
+  $tablink.css('font-weight','normal');
+  $tablink.filter('a[data-classnum=' + classnum + ']').css('font-weight','bold');
+%   }
 }
-
 </SCRIPT>
 
   <& /elements/init_overlib.html &>
 
-% if ( $note_classes_conf ) {
+%   if ( $use_class_tabs ) {
 <% mt('Show notes of class:') |h %>   
 %   # list unclassified last
-% 	foreach my $classnum ( (grep { $_ != 0} sort { $a <=> $b } (keys %classes)), '0' ) {
-	    <A	id="notes_tablink_<% $classnum %>"
+% 	  foreach my $classnum ( (grep { $_ != 0} sort { $a <=> $b } (keys %classes)), '0' ) {
+	    <A CLASS="notes_tablink"
+        data-classnum="<% $classnum %>"
 		HREF="javascript:display_notes_classnum(<% $classnum %>)"
-		style="font-weight: <% $classnum == -1 ? 'bold' : 'normal' %>"
 	    ><% $classes{$classnum} %></A>
-% 	}
+% 	  }
     <BR>
-% }
+%   }
 
 <& /elements/table-grid.html &>
   <TR>
@@ -64,7 +48,7 @@ function display_notes_classnum (classnum) {
     <TH CLASS="grid" BGCOLOR="#cccccc" STYLE="padding: 0 1em"><% mt('Time') |h %></TH>
 %   }
     <TH CLASS="grid" BGCOLOR="#cccccc" STYLE="padding: 0 1em"><% mt('Employee') |h %></TH>
-%   if ($note_classes_conf) {
+%   if ($use_classes) {
     <TH CLASS="grid" BGCOLOR="#cccccc" STYLE="padding: 0 1em"><% mt('Class') |h %></TH>
 %   }
     <TH CLASS="grid" BGCOLOR="#cccccc" STYLE="padding: 0 1em"><% mt('Note') |h %></TH>
@@ -100,15 +84,14 @@ function display_notes_classnum (classnum) {
 %             '('.emt('delete').')</A>';
 %   }
 %
-    <TR ID="notes_<% $note->notenum %>"
-        data-sticky="<% $note->sticky ? 1 : 0 %>"
-        <% $note_classes_conf ? ' data-classnum="'.($note->classnum || 0).'"' : '' %>>
+    <TR CLASS="grid custnote<% $note->sticky ? ' stickynote' : '' %>"
+        <% $use_class_tabs ? ' data-classnum="'.($note->classnum || 0).'"' : '' %>>
 
       <% note_datestr($note,$conf) %>
       <TD CLASS="grid">
          <% $note->usernum ? $note->access_user->name : $note->otaker %>
       </TD>
-%   if ($note_classes_conf) {
+%   if ($use_classes) {
       <TD CLASS="grid">
 	<% $note->classname %>   
       </TD>
@@ -122,9 +105,13 @@ function display_notes_classnum (classnum) {
     </TR>
 % } #end foreach note
 
+% if (@notes) {
 </TABLE>
 
 <SCRIPT>display_notes_classnum('-1')</SCRIPT>
+% } else {
+<P><I><% emt('No notes for this customer') %></I></P>
+% }
 
 <%init>
 
@@ -138,11 +125,11 @@ my(%opt) = @_;
 my $cust_main = $opt{'cust_main'};
 my $custnum = $cust_main->custnum;
 
-my $note_classes_conf = $conf->exists('note-classes') ? $conf->config('note-classes') : '';
-
 my (@notes) = $cust_main->notes();
 
 my %classes = map { ($_->classnum || 0) => ( $_->classname ne '' ? $_->classname : '('.emt('unclassified').')' ) } @notes;
+my $use_classes = grep { $_ > 0 } keys %classes;  # show class column
+my $use_class_tabs = (keys %classes > 1) ? 1 : 0; # use class tabs
 $classes{'-1'} = 'All';
 
 #subroutines

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

Summary of changes:
 FS/FS/Conf.pm                              |   17 +++++-
 FS/FS/Upgrade.pm                           |    8 ---
 FS/FS/cust_main_note.pm                    |    3 +-
 httemplate/edit/cust_main_note.cgi         |   12 ++--
 httemplate/elements/menu.html              |    3 +-
 httemplate/view/cust_main/notes/notes.html |   87 ++++++++++++----------------
 6 files changed, 59 insertions(+), 71 deletions(-)




More information about the freeside-commits mailing list