--- loncom/interface/lonsupportreq.pm 2007/12/04 04:43:21 1.45 +++ loncom/interface/lonsupportreq.pm 2008/01/13 16:53:46 1.46 @@ -1,5 +1,5 @@ # -# $Id: lonsupportreq.pm,v 1.45 2007/12/04 04:43:21 raeburn Exp $ +# $Id: lonsupportreq.pm,v 1.46 2008/01/13 16:53:46 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -99,7 +99,8 @@ sub print_request_form { rdes => 'You must include a description', name => 'Name', subm => 'Submit Request', - emad => 'E-mail address', + emad => 'Your e-mail address', + emac => 'Cc', unme => 'username', doma => 'domain', entu => 'Enter the username you use to log-in to LON-CAPA', @@ -258,7 +259,10 @@ function initialize_codes() { '&').'" />
'."\n". &Apache::lonhtmlcommon::row_closure(). - &Apache::lonhtmlcommon::row_title("$lt{'unme'}/$lt{'doma'}",undef,'LC_oddrow_value'); + &Apache::lonhtmlcommon::row_title($lt{'emac'},undef,'LC_oddrow_value'). + '
'."\n". + &Apache::lonhtmlcommon::row_closure(). + &Apache::lonhtmlcommon::row_title("$lt{'unme'}/$lt{'doma'}",undef,'LC_evenrow_value'); my $udom_input = '&').'" />'; my $uname_input = '&').'" />'. &Apache::lonhtmlcommon::row_closure(). - &Apache::lonhtmlcommon::row_title("$lt{'phon'}",undef,'LC_oddrow_value'). + &Apache::lonhtmlcommon::row_title("$lt{'phon'}",undef,'LC_evenrow_value'). '
'. &Apache::lonhtmlcommon::row_closure(). - &Apache::lonhtmlcommon::row_title("$lt{'crsd'}$details_title",undef,'LC_evenrow_value'); - if ($cnum) { + &Apache::lonhtmlcommon::row_title("$lt{'crsd'}$details_title",undef,'LC_oddrow_value'); + if ($cnum) { if ($coursecodes{$cnum}) { foreach my $item (@codetitles) { $output .= ''.$item.': '.$codes{$cnum}{$item}.'; '; @@ -377,7 +381,7 @@ function initialize_codes() { '."\n"; } $output .= &Apache::lonhtmlcommon::row_closure(). - &Apache::lonhtmlcommon::row_title($lt{'secn'},undef,'LC_oddrow_value'); + &Apache::lonhtmlcommon::row_title($lt{'secn'},undef,'LC_evenrow_value'); if ($sectionlist) { $output .= "'; } $output .= &Apache::lonhtmlcommon::row_closure(). - &Apache::lonhtmlcommon::row_title($lt{'subj'},undef,'LC_evenrow_value'). + &Apache::lonhtmlcommon::row_title($lt{'subj'},undef,'LC_oddrow_value'). ' '."\n". &Apache::lonhtmlcommon::row_closure(). - &Apache::lonhtmlcommon::row_title($lt{'detd'},undef,'LC_oddrow_value'). + &Apache::lonhtmlcommon::row_title($lt{'detd'},undef,'LC_evenrow_value'). ' '. &Apache::lonhtmlcommon::row_closure(); my $lastrow = 'LC_evenrow_value'; if (defined($env{'user.name'})) { - $output .= &Apache::lonhtmlcommon::row_title($lt{'opfi'},undef,'LC_evenrow_value'). + $output .= &Apache::lonhtmlcommon::row_title($lt{'opfi'},undef,'LC_oddrow_value'). '
'.$lt{'uplf'}."\n". &Apache::lonhtmlcommon::row_closure(); $lastrow = 'LC_oddrow_value'; @@ -471,6 +475,7 @@ sub print_request_receipt { my %lt = &Apache::lonlocal::texthash ( username => 'Name', email => 'Email', + cc => 'Cc', user => 'Username/domain', phone => 'Phone', crsi => 'Course Information', @@ -486,12 +491,46 @@ sub print_request_receipt { info => 'Information supplied', adin => 'Additional information recorded', ); - + + my (@ok_ccs,@bad_ccs,$badccmsg,$okcclist); + if (defined($env{'form.cc'})) { + my @ccs; + if ($env{'form.cc'} =~ /,/) { + @ccs = split(/,/,$env{'form.cc'}); + } else { + $env{'form.cc'} =~ s/^\s+//; + $env{'form.cc'} =~ s/\s+$//; + @ccs = $env{'form.cc'}; + } + foreach my $cc (@ccs) { + $cc =~ s/^\s+//g; + $cc =~ s/\s+$//g; + if ($cc =~ m/^[^\@]+\@[^\@]+$/) { + if (!(grep(/^\Q$cc\E$/,@ok_ccs))) { + push(@ok_ccs,$cc); + } + } else { + if (!(grep(/^\Q$cc\E$/,@bad_ccs))) { + push(@bad_ccs,$cc); + } + } + } + if (@ok_ccs > 0) { + $okcclist = join(', ',@ok_ccs); + } + if (@bad_ccs == 1) { + $badccmsg .= '
'.&mt('The following Cc e-mail address is invalid: ').$bad_ccs[0]; + } elsif (@bad_ccs > 1) { + my $bad_cc_string = join(', ',@bad_ccs); + $badccmsg .= '
'.&mt('The following Cc e-mail addresses are invalid: ').$bad_cc_string; + } + } $env{'form.user'} = "'".$env{'form.uname'}.':'.$env{'form.udom'}."'"; $env{'form.csri'} = $env{'form.title'}.' - '.$coursecode.' - '.$lt{'sect'}.': '.$env{'form.section'}; my $supportmsg = <: $showurl
\n"; + } elsif ($item eq 'cc') { + $displaymsg .= + ''. + "$lt{$item}: $okcclist
\n"; } else { $displaymsg .= ''. @@ -549,7 +592,9 @@ END my @ok_email; foreach my $email (split(/,/,$to)) { if ($email =~ m/^[^\@]+\@[^\@]+$/) { - push(@ok_email,$email); + if (!grep(/^\Q$email\E$/,@ok_email)) { + push(@ok_email,$email); + } } } if (@ok_email > 0) { @@ -575,11 +620,19 @@ END $r->print('

'.$lt{'asup'}.' '.$to.'

'); } if (defined($env{'form.email'})) { + $env{'form.email'} =~ s/^\s+//; + $env{'form.email'} =~ s/\s+$//; if ($env{'form.email'} =~ m/^[^\@]+\@[^\@]+$/) { $from = $env{'form.email'}; } } + if (defined($env{'form.cc'})) { + if ($badccmsg) { + $displaymsg .= $badccmsg; + } + } + my $subject = $env{'form.subject'}; $subject =~ s/(`)/'/g; $subject =~ s/\$/\(\$\)/g; @@ -630,6 +683,10 @@ END Type =>'TEXT', Data => $supportmsg, ); + if (@ok_ccs > 0) { + my $cc_string = join(', ',@ok_ccs); + $msg->add("Cc" => $cc_string); + } if ($attachmentpath) { my ($type, $encoding) = MIME::Types::by_suffix($attachmentpath);