RT# 75817 - updated UI to be more intuitive
[freeside.git] / httemplate / edit / cust_main-contacts.html
1 <%doc>
2
3 Hmm, this is now entirely redundant with edit/cust_main/contacts_new.html, and
4 this one isn't being maintained well.  :/
5
6 </%doc>
7
8   <SCRIPT>
9 function checkPasswordValidation(fieldid)  {
10   var validationResult = document.getElementById(fieldid+'_result').innerHTML;
11   if (validationResult.match(/Password valid!/)) {
12     return true;
13   }
14   else {
15     return false;
16   }
17 }
18 </SCRIPT>
19
20 <& elements/edit.html,
21      'name_singular'    => 'customer contacts', #yes, we're editing all of them
22      'table'            => 'cust_main',
23      'post_url'         => popurl(1). 'process/cust_main-contacts.html',
24      'no_pkey_display'  => 1,
25      'labels'           => {
26                              'contactnum'  => ' ', #'Contact',
27                              #'locationnum' => '&nbsp;',
28                            },
29      'fields'           => [
30        { 'field'             => 'contactnum',
31          'type'              => 'contact',
32          'colspan'           => 6,
33          'custnum'           => $custnum,
34          'm2m_method'        => 'cust_contact',
35          'm2m_dstcol'        => 'contactnum',   
36          'm2_label'          => ' ', #'Contact',
37          'm2_error_callback' => $m2_error_callback,
38        },
39      ],
40      #'new_callback'     => $new_callback,
41      #'edit_callback'    => $edit_callback,
42      #'error_callback'   => $error_callback,
43      'agent_virt'       => 1,
44      'html_table_class' => 'fsinnerbox',
45      'menubar'          => [], #remove "view all" link
46
47      #XXX it would be nice if this could instead be after the error but before
48      # the table
49      'html_init'       => include('/elements/small_custview.html',
50                                     $custnum,
51                                     $conf->config('countrydefault') || 'US',
52                                     1, #no balance
53                                  ).
54                           '<BR>',
55 &>
56 <%init>
57
58 my $curuser = $FS::CurrentUser::CurrentUser;
59 my $conf = new FS::Conf;
60
61 my $custnum;
62 if ( $cgi->param('error') ) {
63   $custnum = scalar($cgi->param('custnum'));
64
65   die "access denied"
66     unless $curuser->access_right(($custnum ? 'Edit' : 'New'). ' customer'); #contacts?
67
68 } elsif ( $cgi->keywords ) { #editing
69   $custnum = ($cgi->keywords)[0];
70
71   die "access denied"
72     unless $curuser->access_right('Edit customer');
73
74 } else { #new customer
75
76   #this doesn't really work here, we're an edit only
77   die "guru meditation #32";
78
79   die "access denied"
80     unless $curuser->access_right('New customer');
81
82 }
83
84 #my $new_callback = sub {
85 #  my( $cgi, $prospect_main, $fields_listref, $opt_hashref ) = @_;
86 #};
87
88 #my $edit_callback = sub {
89 # my( $cgi, $prospect_main, $fields_listref, $opt_hashref ) = @_;
90 #};
91
92 #my $error_callback = sub {
93 #  my( $cgi, $prospect_main, $fields_listref, $opt_hashref ) = @_;
94 #};
95
96 my $m2_error_callback = sub {
97   my($cgi, $object) = @_;
98
99   #process_o2m fields in process/cust_main-contacts.html
100   my @fields = FS::contact->cgi_contact_fields;
101   my @gfields = ( '', map "_$_", @fields );
102
103   map {
104         if ( /^contactnum(\d+)$/ ) {
105           my $num = $1;
106           if ( grep $cgi->param("contactnum$num$_"), @gfields ) {
107             my $x = new FS::contact {
108               'contactnum' => scalar($cgi->param("contactnum$num")),
109               map { $_ => scalar($cgi->param("contactnum${num}_$_")) } @fields,
110             };
111             $x;
112           } else {
113             ();
114           }
115         } else {
116           ();
117         }
118       }
119       $cgi->param;
120 };
121
122 </%init>