--- loncom/interface/lonsupportreq.pm 2017/01/23 17:23:03 1.87 +++ loncom/interface/lonsupportreq.pm 2019/07/23 13:58:53 1.96 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Helpdesk request form # -# $Id: lonsupportreq.pm,v 1.87 2017/01/23 17:23:03 raeburn Exp $ +# $Id: lonsupportreq.pm,v 1.96 2019/07/23 13:58:53 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -67,7 +67,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'}; @@ -79,7 +81,7 @@ sub handler { } return OK; } - + sub print_request_form { my ($r,$origurl,$function) = @_; my ($os,$browser,$bversion,$uname,$udom,$uhome,$urole,$usec,$email,$cid, @@ -105,7 +107,7 @@ sub print_request_form { } } } - if (($env{'user.name'} =~ /^$match_username$/) && + if (($env{'user.name'} =~ /^$match_username$/) && ($env{'user.domain'} =~ /^$match_domain$/) && (!$public)) { $knownuser = 1; } else { @@ -149,7 +151,6 @@ sub print_request_form { } } - my %coursecodes; my %codes; my @codetitles; my %cat_titles; @@ -157,9 +158,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() { @@ -167,10 +166,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); @@ -350,7 +356,7 @@ ENDJS unless ($helpform{'username'} eq 'no') { my ($reqd,$namefield,$fullname); if ((defined($lastname) && $lastname ne '') && (defined($firstname) && $firstname ne '')) { - $fullname = "$firstname $lastname"; + $fullname = "$firstname $lastname"; $namefield = $fullname.'&').'" />'."\n"; } else { if (defined($firstname) && $firstname ne '') { @@ -378,7 +384,7 @@ ENDJS &HTML::Entities::encode($email,'"<>&').'" />'."\n"; unless ($shownsubmit) { $output .= $topsubmit; - } + } $output .= &Apache::lonhtmlcommon::row_closure(); $num ++; $i = $num%2; @@ -393,7 +399,7 @@ ENDJS } } } - unless ($helpform{'user'} eq 'no') { + unless (($helpform{'user'} eq 'no') || ($env{'request.lti.login'})) { $output .= &Apache::lonhtmlcommon::row_title("$html_lt{'unme'}/$html_lt{'doma'}",undef,$css[$i]); my $udom_input = '&').'" />'."\n"; @@ -430,12 +436,14 @@ ENDJS } $output .= &Apache::lonhtmlcommon::row_closure(); $num ++; + $i = $num%2; + } + unless ($env{'request.lti.login'}) { + $output .= &Apache::lonhtmlcommon::row_title("$html_lt{'urlp'}",undef,$css[$i]). + $server."\n".'&').'" />'."\n". + &Apache::lonhtmlcommon::row_closure(); } - $i = $num%2; - $output .= &Apache::lonhtmlcommon::row_title("$html_lt{'urlp'}",undef,$css[$i]). - $server."\n".'&').'" />'."\n". - &Apache::lonhtmlcommon::row_closure(); unless ($helpform{'phone'} eq 'no') { my $reqd; if ($helpform{'phone'} eq 'req') { @@ -447,7 +455,7 @@ ENDJS $num ++; $i = $num%2; } - unless ($helpform{'course'} eq 'no') { + unless (($helpform{'course'} eq 'no') || ($env{'request.lti.login'})) { $output .= &Apache::lonhtmlcommon::row_title("$html_lt{'crsd'}$details_title",undef,$css[$i]); if ($totcodes > 0) { my $numtitles = @codetitles; @@ -522,7 +530,7 @@ ENDJS $num ++; $i = $num%2; } - unless ($helpform{'section'} eq 'no') { + unless (($helpform{'section'} eq 'no') || ($env{'request.lti.login'})) { $output .= &Apache::lonhtmlcommon::row_title($html_lt{'secn'},undef,$css[$i]); if ($sectionlist) { $output .= "
'."\n". ' '."\n"; - } else { + } else { $output .= ''."\n"; } $output .= &Apache::lonhtmlcommon::row_closure(); @@ -569,7 +577,7 @@ ENDJS my $max = 1048576; my $showmax = 1.00; if ($helpform{'maxsize'} =~ /^\d+\.\d*$/) { - $max *= $helpform{'maxsize'}; + $max *= $helpform{'maxsize'}; $showmax = $helpform{'maxsize'}; } $showmax = ' ('.sprintf("%.2f",$showmax).' '.&mt('MB max.').')'; @@ -627,7 +635,7 @@ sub print_request_receipt { if (($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) { $public = 1; } - my $lonhost = $r->dir_config('lonHostID'); + my $lonhost = $r->dir_config('lonHostID'); unless (($env{'user.name'} =~ /^$match_username$/) && (!$public)) { my ($captcha_chk,$captcha_error) = &Apache::loncommon::captcha_response('login',$lonhost); @@ -657,14 +665,16 @@ sub print_request_receipt { my @ENVvars = ('HTTP_HOST','HTTP_USER_AGENT','REMOTE_ADDR','SERVER_ADDR','SERVER_NAME'); my @envvars = ('browser.os','browser.type','browser.version','user.home','request.role'); my @loncvars = ('user.name','user.domain','request.course.sec','request.course.id'); - my @cookievars = ('lonID'); + my @cookievars; + if ($ENV{'SERVER_PORT'} == 443) { + @cookievars = ('lonLinkID'); + } else { + @cookievars = ('lonID'); + } 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 = @@ -691,10 +701,10 @@ sub print_request_receipt { unless ($helpform{'phone'} eq 'no') { $formvars{'phone'} = 1; } - unless ($helpform{'section'} eq 'no') { + unless (($helpform{'section'} eq 'no') || ($env{'request.lti.login'})) { $formvars{'section'} = 1; } - unless ($helpform{'course'} eq 'no') { + unless (($helpform{'course'} eq 'no') || ($env{'request.lti.login'})) { $formvars{'course'} = 1; } unless ($helpform{'cc'} eq 'no') { @@ -703,13 +713,17 @@ sub print_request_receipt { unless ($helpform{'screenshot'} eq 'no') { $formvars{'screenshot'} = 1; } - my $coursecode; + my ($coursecode,$sourceurl); if ($formvars{'course'}) { $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; @@ -797,7 +811,15 @@ sub print_request_receipt { $badccmsg .= '