--- loncom/interface/lonsupportreq.pm 2017/10/15 03:43:52 1.79.2.3.2.1 +++ loncom/interface/lonsupportreq.pm 2019/07/26 18:03:59 1.79.2.4 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Helpdesk request form # -# $Id: lonsupportreq.pm,v 1.79.2.3.2.1 2017/10/15 03:43:52 raeburn Exp $ +# $Id: lonsupportreq.pm,v 1.79.2.4 2019/07/26 18:03:59 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -69,7 +69,9 @@ sub handler { } } my $origurl = $env{'form.origurl'}; - $origurl =~ s{^https?://}{}; + if ($origurl =~ m{^https?://[^/]+(.*)$}) { + $origurl =~ $1; + } $origurl =~ s/(`)//g; $origurl =~ s/\$/\(\$\)/g; my $command = $env{'form.command'}; @@ -151,7 +153,6 @@ sub print_request_form { } } - my %coursecodes; my %codes; my @codetitles; my %cat_titles; @@ -159,9 +160,7 @@ sub print_request_form { my %idlist; my %idnums; my %idlist_titles; - my $caller = 'global'; my $totcodes = 0; - my $format_reply; my $jscript = ''; my $loaditems = qq| function initialize_codes() { @@ -169,10 +168,17 @@ function initialize_codes() { } |; unless ($helpform{'course'} eq 'no') { - $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$codedom); - if ($totcodes > 0) { - $format_reply = &Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order); - if ($format_reply eq 'ok') { + my $instcats = &Apache::lonnet::get_dom_instcats($codedom); + if (ref($instcats) eq 'HASH') { + if ((ref($instcats->{'codetitles'}) eq 'ARRAY') && (ref($instcats->{'codes'}) eq 'HASH') && + (ref($instcats->{'cat_titles'}) eq 'HASH') && (ref($instcats->{'cat_order'}) eq 'HASH')) { + %codes = %{$instcats->{'codes'}}; + @codetitles = @{$instcats->{'codetitles'}}; + %cat_titles = %{$instcats->{'cat_titles'}}; + %cat_order = %{$instcats->{'cat_order'}}; + $totcodes = scalar(keys(%codes)); + } + if ($totcodes > 0) { my $numtypes = @codetitles; &Apache::courseclassifier::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles); my ($scripttext,$longtitles) = &Apache::courseclassifier::javascript_definitions(\@codetitles,\%idlist,\%idlist_titles,\%idnums,\%cat_titles); @@ -662,6 +668,9 @@ sub print_request_receipt { my $admin = $Apache::lonnet::perlvar{'lonAdminMail'}; my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'}; my $defdom = &get_domain(); + my ($to,$bcc,$addtext) = + &Apache::loncommon::build_recipient_list(undef,'helpdeskmail', + $defdom,$origmail); my $from = $admin; my %helpform; my %domconfig = @@ -705,8 +714,12 @@ sub print_request_receipt { $coursecode = $env{'form.coursecode'}; if ($coursecode eq '') { my $totcodes = 0; - my %coursecodes; - $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$defdom); + my $instcats = &Apache::lonnet::get_dom_instcats($defdom); + if (ref($instcats) eq 'HASH') { + if (ref($instcats->{'codes'}) eq 'HASH') { + $totcodes = scalar(keys(%{$instcats->{'codes'}})); + } + } my @standardnames = &Apache::loncommon::get_standard_codeitems(); if ($totcodes > 0) { my $noregexps = 1; @@ -875,33 +888,6 @@ $lt{'date'}: $reporttime } } } - - my ($requname,$requdom,$reqemail); - foreach my $field ('uname','udom','email') { - $env{'form.'.$field} =~ s/^\s+//; - $env{'form.'.$field} =~ s/\s+$//; - } - if ($env{'form.uname'} =~ /^$match_username$/) { - $requdom = $env{'form.udom'}; - } - if ($env{'form.udom'} =~ /^$match_domain$/) { - $requdom = $env{'form.udom'}; - } - if ($env{'form.email'} =~ m/^[^\@]+\@[^\@]+$/) { - $reqemail = $env{'form.email'}; - } - - my $dom_in_effect; - unless ($env{'user.domain'} eq 'public') { - $dom_in_effect = $env{'user.domain'}; - } - if ($dom_in_effect eq '') { - $dom_in_effect = $requdom; - } - if ($dom_in_effect eq '') { - $dom_in_effect = $defdom; - } - $displaymsg .= ''. $lt{'date'}.': '.$reporttime.'
'."\n"; @@ -924,11 +910,6 @@ END &print_header($r,$url,'process'); } my $bad_email = 0; - my ($to,$bcc,$addtext) = - &Apache::loncommon::build_recipient_list(undef,'helpdeskmail', - $dom_in_effect,$origmail, - $requname,$requdom, - $reqemail); if ($to =~ /,/) { my @ok_email; foreach my $email (split(/,/,$to)) { @@ -966,8 +947,12 @@ END } $r->print(&Apache::loncommon::confirmwrapper($message)); - if ($reqemail ne '') { - $from = $reqemail; + 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'})) {