use service-def specific labels, at least for service pages that use {view,edit}...
authorivan <ivan>
Sat, 9 May 2009 01:44:08 +0000 (01:44 +0000)
committerivan <ivan>
Sat, 9 May 2009 01:44:08 +0000 (01:44 +0000)
httemplate/edit/elements/edit.html
httemplate/edit/elements/svc_Common.html
httemplate/view/elements/svc_Common.html

index d18a37d..4a6079a 100644 (file)
@@ -132,37 +132,39 @@ Example:
     # initialization callbacks
     ###
 
-    ###global callbacks
+    ###global callbacks, always run if provided
 
-    #always run if provided, after decoding long CGI "redirect=" responses but
+    #after decoding long CGI "redirect=" responses but
     # before object creation/search
     # (useful if you have a long form that might trigger redirect= and you need
     #  to do things with $cgi params - they're not decoded in the calling
     #  <%init> block yet)
     'begin_callback' = sub { my( $cgi, $fields_listref, $opt_hashref ) = @_; },
 
-    #always run, after the mode-specific object creation/search
+    #after the mode-specific object creation/search
     'end_callback' = sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
 
-    ###mode-specific callbacks
+    ###mode-specific callbacks.  one (and only one) of these four is called
    
+    #run when adding
+    'new_callback' => sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
+
+    #run when editing
+    'edit_callback' => sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
+
     #run when re-displaying with an error
     'error_callback' => sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
    
-    #run when editing
-    'edit_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
-   
+    #run when cloning
+    'clone_callback' => sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
+
+    ###callbacks called in new mode only
+
     # returns a hashref for the new object
     'new_hashref_callback'
 
     # returns the new object iself (otherwise, ->new is called)
     'new_object_callback'
-   
-    #run when adding
-    'new_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
-
-    #run when cloning
-    'clone_callback' => sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
 
     ###display callbacks
 
@@ -618,7 +620,7 @@ if ( $cgi->param('error') ) {
     map { $_ => scalar($cgi->param($_)) } fields($table)
   });
 
-  &{$opt{'error_callback'}}($cgi, $object, $fields, \%opt )
+  &{$opt{'error_callback'}}( $cgi, $object, $fields, \%opt )
     if $opt{'error_callback'};
 
 } elsif ( $cgi->param('clone') =~ /^(\d+)$/ ) {
@@ -632,7 +634,7 @@ if ( $cgi->param('error') ) {
 
   $object = qsearchs({ %qsearch, 'hashref' => { $pkey => $clone } });
 
-  &{$opt{'clone_callback'}}($cgi, $object, $fields, \%opt )
+  &{$opt{'clone_callback'}}( $cgi, $object, $fields, \%opt )
     if $opt{'clone_callback'};
 
   #$object->$pkey('');
@@ -657,7 +659,7 @@ if ( $cgi->param('error') ) {
   warn "$table $pkey => $1"
     if $opt{'debug'};
 
-  &{$opt{'edit_callback'}}($cgi, $object, $fields)
+  &{$opt{'edit_callback'}}( $cgi, $object, $fields, \%opt )
     if $opt{'edit_callback'};
 
 } else { #adding
@@ -672,7 +674,7 @@ if ( $cgi->param('error') ) {
               ? &{$opt{'new_object_callback'}}( $cgi, $hashref, $fields, \%opt )
               : $class->new( $hashref );
 
-  &{$opt{'new_callback'}}($cgi, $object, $fields)
+  &{$opt{'new_callback'}}( $cgi, $object, $fields, \%opt )
     if $opt{'new_callback'};
 
 }
index 0b64120..ef04bd0 100644 (file)
@@ -3,7 +3,7 @@
                  'menubar' => [],
 
                  'error_callback' => sub {
-                   my( $cgi, $svc_x ) = @_;
+                   my( $cgi, $svc_x, $fields, $opt ) = @_;
                    #$svcnum = $svc_x->svcnum;
                    $pkgnum  = $cgi->param('pkgnum');
                    $svcpart = $cgi->param('svcpart');
                    $part_svc = qsearchs( 'part_svc', { svcpart=>$svcpart });
                    die "No part_svc entry!" unless $part_svc;
 
+                   label_fixup($part_svc, $opt);
+
                    $svc_x->setfield('svcpart', $svcpart);
                  },
 
                  'edit_callback' => sub {
-                   my( $cgi, $svc_x ) = @_;
+                   my( $cgi, $svc_x, $fields, $opt ) = @_;
                    #$svcnum = $svc_x->svcnum;
                    my $cust_svc = $svc_x->cust_svc
                      or die "Unknown (cust_svc) svcnum!";
@@ -25,6 +27,8 @@
   
                    $part_svc = qsearchs ('part_svc', { svcpart=>$svcpart });
                    die "No part_svc entry!" unless $part_svc;
+
+                   label_fixup($part_svc, $opt);
                  },
 
                  'new_hashref_callback' => sub {
                  },
 
                  'new_callback' => sub {
-                    my( $cgi, $svc_x ) = @_;;
+                    my( $cgi, $svc_x, $fields, $opt ) = @_;;
 
                     $part_svc = qsearchs( 'part_svc', { svcpart=>$svcpart });
                     die "No part_svc entry!" unless $part_svc;
 
+                    label_fixup($part_svc, $opt);
+
                     #$svcnum='';
 
                     $svc_x->set_default_and_fixed;
                  %opt #pass through/override params
              )
 %>
+<%once>
+
+sub label_fixup {
+  my( $part_svc, $opt ) = @_;
+
+  #false laziness w/view/svc_Common.html
+  #override default labels with service-definition labels if applicable
+  my $labels = $opt->{labels}; # with -> here
+  foreach my $field ( keys %$labels ) {
+    my $col = $part_svc->part_svc_column($field);
+    $labels->{$field} = $col->columnlabel if $col->columnlabel !~ /^\S*$/;
+  }
+
+}
+
+</%once>
 <%init>
 
 my %opt = @_;
index 125fcd0..852640e 100644 (file)
@@ -145,6 +145,14 @@ my($label, $value, $svcdb) = $cust_svc->label;
 
 my $part_svc = $cust_svc->part_svc;
 
+  #false laziness w/edit/svc_Common.html
+  #override default labels with service-definition labels if applicable
+  my $labels = $opt{labels}; #not -> here
+  foreach my $field ( keys %$labels ) {
+    my $col = $part_svc->part_svc_column($field);
+    $labels->{$field} = $col->columnlabel if $col->columnlabel !~ /^\S*$/;
+  }
+
 my $pkgnum = $cust_svc->pkgnum;
 
 my($cust_pkg, $custnum);