summaryrefslogtreecommitdiff
path: root/httemplate/edit/cust_main-contacts.html
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2012-03-24 18:47:07 -0700
committerIvan Kohler <ivan@freeside.biz>2012-03-24 18:47:07 -0700
commit83f70978574fef3401020cb11cf651d12c139b3b (patch)
tree327059675499bfa2be0ccbfd8918b37a29312b5e /httemplate/edit/cust_main-contacts.html
parent798cf217a0d14520c5648560ef8a3095ffcfad27 (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.html100
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' => '&nbsp;',
+ },
+ '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>