diff options
author | Ivan Kohler <ivan@freeside.biz> | 2012-03-24 18:47:07 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2012-03-24 18:47:07 -0700 |
commit | 83f70978574fef3401020cb11cf651d12c139b3b (patch) | |
tree | 327059675499bfa2be0ccbfd8918b37a29312b5e /httemplate/edit/cust_main-contacts.html | |
parent | 798cf217a0d14520c5648560ef8a3095ffcfad27 (diff) |
better display/edit of contacts on customer view, RT#16819
Diffstat (limited to 'httemplate/edit/cust_main-contacts.html')
-rw-r--r-- | httemplate/edit/cust_main-contacts.html | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/httemplate/edit/cust_main-contacts.html b/httemplate/edit/cust_main-contacts.html new file mode 100644 index 000000000..bae58bd33 --- /dev/null +++ b/httemplate/edit/cust_main-contacts.html @@ -0,0 +1,100 @@ +<% include('elements/edit.html', + 'name_singular' => 'customer contacts', #yes, we're editing all of them + 'table' => 'cust_main', + 'post_url' => popurl(1). 'process/cust_main-contacts.html', + 'labels' => { 'custnum' => ' ', #XXX supress this line entirely, its being redundant + 'contactnum' => 'Contact', + #'locationnum' => ' ', + }, + 'fields' => [ + { 'field' => 'contactnum', + 'type' => 'contact', + 'colspan' => 6, + 'm2m_method' => 'cust_contact', + 'm2m_dstcol' => 'contactnum', + 'm2_label' => 'Contact', + 'm2_error_callback' => $m2_error_callback, + }, + ], + #'new_callback' => $new_callback, + #'edit_callback' => $edit_callback, + #'error_callback' => $error_callback, + 'agent_virt' => 1, + 'menubar' => [], #remove "view all" link + + #XXX it would be nice if this could instead be after the error but before + # the table + 'html_init' => include('/elements/small_custview.html', + $custnum, + $conf->config('countrydefault') || 'US', + 1, #no balance + ), + ) +%> +<%init> + +my $curuser = $FS::CurrentUser::CurrentUser; +my $conf = new FS::Conf; + +my $custnum; +if ( $cgi->param('error') ) { + $custnum = scalar($cgi->param('custnum')); + + die "access denied" + unless $curuser->access_right(($custnum ? 'Edit' : 'New'). ' customer'); #contacts? + +} elsif ( $cgi->keywords ) { #editing + $custnum = ($cgi->keywords)[0]; + + die "access denied" + unless $curuser->access_right('Edit customer'); + +} else { #new customer + + #this doesn't really work here, we're an edit only + die "guru meditation #32"; + + die "access denied" + unless $curuser->access_right('New customer'); + +} + +#my $new_callback = sub { +# my( $cgi, $prospect_main, $fields_listref, $opt_hashref ) = @_; +#}; + +#my $edit_callback = sub { +# my( $cgi, $prospect_main, $fields_listref, $opt_hashref ) = @_; +#}; + +#my $error_callback = sub { +# my( $cgi, $prospect_main, $fields_listref, $opt_hashref ) = @_; +#}; + +my $m2_error_callback = sub { + my($cgi, $object) = @_; + + #process_o2m fields in process/cust_main-contacts.html + my @fields = qw( first last title comment ); + my @gfields = ( '', map "_$_", @fields ); + + map { + if ( /^contactnum(\d+)$/ ) { + my $num = $1; + if ( grep $cgi->param("contactnum$num$_"), @gfields ) { + my $x = new FS::contact { + 'contactnum' => scalar($cgi->param("contactnum$num")), + map { $_ => scalar($cgi->param("contactnum${num}_$_")) } @fields, + }; + $x; + } else { + (); + } + } else { + (); + } + } + $cgi->param; +}; + +</%init> |