--- loncom/interface/lonsupportreq.pm 2017/01/23 17:23:03 1.87 +++ loncom/interface/lonsupportreq.pm 2025/02/17 18:48:06 1.107 @@ -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.107 2025/02/17 18:48:06 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); @@ -313,9 +319,10 @@ $jscript $loaditems // ]]> - ENDJS - if ($recaptcha_version >=2) { + if ($knownuser) { + $js .="\n".''; + } elsif ($recaptcha_version >=2) { $js.= "\n".''."\n"; } my %add_entries = ( @@ -323,11 +330,17 @@ ENDJS onload => "initialize_codes();", ); - - $r->print(&Apache::loncommon::start_page('Support Request',$js, - { 'function' => $function, - 'add_entries' => \%add_entries, - 'only_body' => 1,})); + my $args = { 'function' => $function, + 'add_entries' => \%add_entries, + 'only_body' => 1,}; + unless (($knownuser) || ($public)) { + (undef,undef,undef,my $clientmathml,my $clientunicode) = + &Apache::loncommon::decode_user_agent(); + if ($clientunicode && !$clientmathml) { + $args->{'browser.unicode'} = 1; + } + } + $r->print(&Apache::loncommon::start_page('Support Request',$js,$args)); if ($r->uri eq '/adm/helpdesk') { &print_header($r,$origurl); } @@ -340,30 +353,33 @@ ENDJS } my $topsubmit = '      '; my $shownsubmit; - $r->print('
'."\n"); + $r->print('
'."\n". + ''."\n"); my $output = &Apache::lonhtmlcommon::start_pick_box(). &Apache::lonhtmlcommon::row_headline(). ''. - &mt('(All fields marked with * are required.)'). + &mt('(All fields marked with [_1]*[_2] are required.)', + '',''). ''. &Apache::lonhtmlcommon::row_closure(); unless ($helpform{'username'} eq 'no') { my ($reqd,$namefield,$fullname); if ((defined($lastname) && $lastname ne '') && (defined($firstname) && $firstname ne '')) { - $fullname = "$firstname $lastname"; - $namefield = $fullname.'&').'" />'."\n"; + $fullname = "$firstname $lastname"; + $namefield = $fullname.'&').'" />'."\n"; } else { if (defined($firstname) && $firstname ne '') { $fullname = $firstname; } elsif (defined($lastname) && $lastname ne '') { $fullname = " $lastname"; } - $namefield = '&').'" />'."\n"; + $namefield = '&').'" />'."\n"; if ($helpform{'username'} eq 'req') { - $reqd = '*'; + $reqd = '*'; } } - $output .= &Apache::lonhtmlcommon::row_title($html_lt{'name'}.$reqd,undef,$css[$num])."\n".$namefield. + my $title = ''; + $output .= &Apache::lonhtmlcommon::row_title($title.$reqd,undef,$css[$num])."\n".$namefield. $topsubmit. &Apache::lonhtmlcommon::row_closure()."\n"; $shownsubmit = 1; @@ -372,35 +388,43 @@ ENDJS } $output .= &Apache::lonhtmlcommon::row_title( ''. - $html_lt{'emad'}.' *' + '*' ,undef,$css[$i]). - '&').'" />'."\n"; unless ($shownsubmit) { $output .= $topsubmit; - } + } $output .= &Apache::lonhtmlcommon::row_closure(); $num ++; $i = $num%2; if ($knownuser) { if ($homeserver) { - unless ($helpform{'cc'} eq 'no') { - $output .= &Apache::lonhtmlcommon::row_title($html_lt{'emac'},undef,$css[$i]). - '
'."\n". + my $ip = &Apache::lonnet::get_requestor_ip($r); + my %setters; + my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = + &Apache::loncommon::blockcheck(\%setters,'com',$ip); + unless (($helpform{'cc'} eq 'no') || ($by_ip)) { + $output .= &Apache::lonhtmlcommon::row_title('', + undef,$css[$i]). + '
'."\n". &Apache::lonhtmlcommon::row_closure(); $num ++; $i = $num%2; } } } - 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"; my $uname_input = '&').'" />'."\n"; if ($knownuser) { - $output .= ''.$html_lt{'unme'}.': '.$uname.'  '.$html_lt{'doma'}.': '.$udom.$udom_input.$uname_input; + $output .= ''.$html_lt{'unme'} + .': '.$uname.'  ' + .$html_lt{'doma'}.': '.$udom.$udom_input.$uname_input.''; } else { my $udomform = ''; my $unameform = ''; @@ -414,46 +438,52 @@ ENDJS $output .= '
'."\n"; if (!$public) { if ($env{'user.domain'} =~ /^$match_domain$/) { - $udomform = ''.$html_lt{'doma'}.': '.$udom.$udom_input; + $udomform = ''.$html_lt{'doma'}.': '.$udom.$udom_input; } elsif ($env{'user.name'} =~ /^$match_username$/) { - $unameform = ''.$html_lt{'unme'}.': '.$uname.'  '.$uname_input; + $unameform = ''.$html_lt{'unme'}.': '.$uname.'  '.$uname_input; } } if ($udomform eq '') { - $udomform = ''.$html_lt{'doma'}.': '; - $udomform .= &Apache::loncommon::select_dom_form($codedom,'udom')."\n"; + $udomform = ': ' + .&Apache::loncommon::select_dom_form($codedom,'udom','','','','','','','udom')."\n"; } if ($unameform eq '') { - $unameform= ''.$html_lt{'unme'}.'  '; + $unameform= ': ' + .'' + .'  '; } $output .= $unameform.$udomform; } $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') { - $reqd = '*'; + $reqd = '*'; } - $output .= &Apache::lonhtmlcommon::row_title($html_lt{'phon'}.$reqd,undef,'LC_evenrow_value'). - '
'."\n". + $output .= &Apache::lonhtmlcommon::row_title(''.$reqd,undef,'LC_evenrow_value'). + '
'."\n". &Apache::lonhtmlcommon::row_closure(); $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; if ($numtitles == 0) { - $output .= $html_lt{'enin'}.':  - '."\n"; + $output .= ''."\n"; } else { my @standardnames = &Apache::loncommon::get_standard_codeitems(); my $lasttitle = $numtitles; @@ -464,8 +494,13 @@ ENDJS if ($sectionlist) { $onchange = 'toggleSecVis()'; } - $output .= ' - - - - -
'.$codetitles[0].'
'."\n". - ''; + for (my $i=0; $i<$lasttitle; $i++) { + $output .= ''; + } + $output .= ''; + $output .= ''; - for (my $i=1; $i<$numtitles; $i++) { - $output .= ''."\n"; } $output .= '
'. + ''.$codetitles[$i].'
'."\n". - '
'."\n". + ''."\n". '
'; if ($numtitles > 4) { - $output .= '

'.$codetitles[$numtitles].'
'."\n". + $output .= '

'."\n"; } } } else { - $output .= $html_lt{'enin'}.':  - '."\n"; + $output .= ''."\n"; } my $reqd; if ($helpform{'course'} eq 'req') { - $reqd = '*'; + $reqd = '*'; } - $output .= '
'.$html_lt{'enct'}.$reqd.':  + $output .= '
'."\n"; $output .= &Apache::lonhtmlcommon::row_closure(); $num ++; $i = $num%2; } - unless ($helpform{'section'} eq 'no') { - $output .= &Apache::lonhtmlcommon::row_title($html_lt{'secn'},undef,$css[$i]); + unless (($helpform{'section'} eq 'no') || ($env{'request.lti.login'})) { + $output .= &Apache::lonhtmlcommon::row_title('', + undef,$css[$i]); if ($sectionlist) { - $output .= "
\n". " \n"; foreach my $id (sort(keys(%groupid))) { if ($id eq $groupid{$id} || $groupid{$id} eq '') { @@ -540,9 +577,9 @@ ENDJS } $output .= '
'."\n". ''."\n"; - } else { - $output .= ''."\n"; + ''."\n"; + } else { + $output .= ''."\n"; } $output .= &Apache::lonhtmlcommon::row_closure(); $num ++; @@ -550,15 +587,17 @@ ENDJS } $output .= &Apache::lonhtmlcommon::row_title( ''. - $html_lt{'subj'}.' *' + ''. + '*' ,undef,'LC_oddrow_value'). - ''."\n". + ''."\n". &Apache::lonhtmlcommon::row_closure(). &Apache::lonhtmlcommon::row_title( ''. - $html_lt{'detd'}.' *' + ''. + '*' ,undef,'LC_evenrow_value'). - ''."\n". &Apache::lonhtmlcommon::row_closure(); $num ++; @@ -569,14 +608,14 @@ 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.').')'; $output .= &Apache::lonhtmlcommon::row_title($html_lt{'opfi'},undef,$css[$i]) - .' ' - .'' - .'
'."\n".$html_lt{'uplf'}.$showmax."\n" + .'' + .'' + .'
'."\n".''.$showmax."\n" .&Apache::lonhtmlcommon::row_closure(); $num ++; $i = $num%2; @@ -587,7 +626,7 @@ ENDJS $output .= &Apache::lonhtmlcommon::row_title( ''. &mt('Validation'). - ' *' + '*' ,undef,$css[$i]). $captcha_form."\n". &Apache::lonhtmlcommon::row_closure(); @@ -597,18 +636,16 @@ ENDJS } $output .= &Apache::lonhtmlcommon::row_title($html_lt{'fini'},undef,$css[$i]); $output .= < -
+
+
  -
  + +
-
+
+ +
END $output .= &Apache::lonhtmlcommon::row_closure(1); $output .= &Apache::lonhtmlcommon::end_pick_box(); @@ -616,6 +653,7 @@ END $output

+ END $r->print(&Apache::loncommon::end_page()); return; @@ -624,47 +662,62 @@ END sub print_request_receipt { my ($r,$url,$function) = @_; my $public; + my $args; 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); if ($captcha_chk != 1) { - $r->print(&Apache::loncommon::start_page('Support request failed',undef, - {'function' => $function, - 'add_entries' => { - topmargin => "0", - marginheight => "0", - }, - 'only_body' => 1,})); + $args = { + 'function' => $function, + 'add_entries' => { + topmargin => "0", + marginheight => "0", + }, + 'only_body' => 1,}; + (undef,undef,undef,my $clientmathml,my $clientunicode) = + &Apache::loncommon::decode_user_agent(); + if ($clientunicode && !$clientmathml) { + $args->{'browser.unicode' => 1}; + } + $r->print(&Apache::loncommon::start_page('Support request failed',undef,$args)); if ($r->uri eq '/adm/helpdesk') { &print_header($r,$url,'process'); } $r->print( - '

'.&mt('Support request failed').'

'. + '
'. + '

'.&mt('Support request failed').'

'. &Apache::lonhtmlcommon::confirm_success( &mt('Validation of the code you entered failed.'),1). '

'. &Apache::lonhtmlcommon::actionbox([ &mt('[_1]Go back[_2] and try again', '','')]). - &Apache::loncommon::end_page()); + '
'. + &Apache::loncommon::end_page()); return; } } - my @ENVvars = ('HTTP_HOST','HTTP_USER_AGENT','REMOTE_ADDR','SERVER_ADDR','SERVER_NAME'); + my $ip = &Apache::lonnet::get_requestor_ip($r); + my %setters; + my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = + &Apache::loncommon::blockcheck(\%setters,'com',$ip); + my @ENVvars = ('HTTP_HOST','HTTP_USER_AGENT','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,25 +744,29 @@ 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') { + unless (($helpform{'cc'} eq 'no') || ($by_ip)) { $formvars{'cc'} = 1; } 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; @@ -739,6 +796,8 @@ sub print_request_receipt { secn => 'Section', warn => 'Warning: Problem with support e-mail address', your => 'Your support request contained the following information', + belo => 'Below is your support request which could not be sent', + ifyk => 'If you know an IT support address for your institution, you could copy this information and send it to that email address.', sect => 'section', info => 'Information supplied', adin => 'Additional information recorded', @@ -797,7 +856,15 @@ sub print_request_receipt { $badccmsg .= '
'.&mt('The following Cc e-mail addresses are invalid: '). &Apache::loncommon::cleanup_html(join(', ',@bad_ccs)); } } - $env{'form.user'} = "'".$env{'form.uname'}.':'.$env{'form.udom'}."'"; + if ($env{'request.lti.login'}) { + if (($env{'user.name'} ne '') && ($env{'user.domain'} ne '')) { + $env{'form.user'} = "'".$env{'user.name'}.':'.$env{'user.domain'}."'"; + } + $sourceurl = &Apache::lonnet::absolute_url().$url; + } else { + $env{'form.user'} = "'".$env{'form.uname'}.':'.$env{'form.udom'}."'"; + $sourceurl = $env{'form.sourceurl'}; + } if ($formvars{'course'}) { $env{'form.crsi'} = $env{'form.title'}; if ($coursecode ne '') { @@ -833,10 +900,10 @@ sub print_request_receipt { } if ($formvars{'course'}) { $supportmsg .= "$lt{'crsi'}: $env{'form.crsi'}\n"; - } + } $supportmsg .= "$lt{'subject'}: $env{'form.subject'} $lt{'description'}: $env{'form.description'} -$lt{'sourceurl'}: $env{'form.sourceurl'} +$lt{'sourceurl'}: $sourceurl $lt{'date'}: $reporttime "; @@ -870,6 +937,7 @@ $lt{'date'}: $reporttime next if ($helpform{$item} eq 'no'); } next if (($item eq 'crsi') && ($helpform{'course'} eq 'no')); + next if (($item eq 'user') && ($env{'request.lti.login'})); my $showitem = $env{'form.'.$item}; $showitem = &Apache::loncommon::cleanup_html($showitem); $displaymsg .= @@ -878,20 +946,48 @@ $lt{'date'}: $reporttime } } } - $displaymsg .= ''. - $lt{'date'}.': '.$reporttime.'
'."\n"; - my $start_page = - &Apache::loncommon::start_page('Support request recorded',undef, - {'function' => $function, - 'add_entries' => { - topmargin => "0", - marginheight => "0", - }, - 'only_body' => 1,}); + 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$/) { + $requname = $env{'form.uname'}; + } + 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"; + my $args = {'function' => $function, + 'add_entries' => { + topmargin => "0", + marginheight => "0", + }, + 'only_body' => 1,}; + (undef,undef,undef,my $clientmathml,my $clientunicode) = + &Apache::loncommon::decode_user_agent(); + if ($clientunicode && !$clientmathml) { + $args->{'browser.unicode'} = 1; + } + $r->print(&Apache::loncommon::start_page('Support request recorded',undef,$args)); $r->print(<<"END"); -$start_page
@@ -900,6 +996,11 @@ 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)) { @@ -926,24 +1027,22 @@ END my $message; if (!$bad_email) { - $message = &Apache::lonhtmlcommon::confirm_success( - &mt('A support request has been sent to [_1]',''.$to.'')); + $message = &mt('A support request has been sent to [_1]',''.$to.''); } else { - $message = &Apache::lonhtmlcommon::confirm_success( - $lt{'warn'}.'
' - .&mt('As the e-mail address provided for this LON-CAPA server ([_1]) does not appear to be a valid e-mail address, your support request has [_2]not[_3] been sent to the LON-CAPA support staff or administrator at your institution.',''.$to.'','','') - .' '.&mt('Instead a copy has been sent to the LON-CAPA support team at Michigan State University.'),1); - $to = 'helpdesk@lon-capa.org'; - } - $r->print(&Apache::loncommon::confirmwrapper($message)); - - if (defined($env{'form.email'})) { - $env{'form.email'} =~ s/^\s+//; - $env{'form.email'} =~ s/\s+$//; - if ($env{'form.email'} =~ m/^[^\@]+\@[^\@]+$/) { - $from = $env{'form.email'}; + $message = $lt{'warn'}.'
'; + if ($to eq '') { + $message .= &mt('For this LON-CAPA server no e-mail address has been configured to receive support requests, so your support request has [_1]not[_2] been sent to the LON-CAPA support staff or administrator at your institution.','',''); + } else { + $message .= &mt('As the e-mail address provided for this LON-CAPA server ([_1]) does not appear to be a valid e-mail address, your support request has [_2]not[_3] been sent to the LON-CAPA support staff or administrator at your institution.',''.$to.'','',''); } } + $r->print('
'); + if ($bad_email) { + $r->print(&Apache::loncommon::confirmwrapper(&Apache::lonhtmlcommon::confirm_success($message,$bad_email)).'
'); + } + if ($reqemail ne '') { + $from = $reqemail; + } if (defined($env{'form.cc'})) { if ($badccmsg) { @@ -961,21 +1060,22 @@ END my $fname; my $attachmentpath = ''; - my $attachmentsize = ''; + my $showsize = ''; + if ((defined($env{'user.name'})) && (!$public)) { if ($homeserver && $env{'form.screenshot.filename'}) { unless ($helpform{'screenshot'} eq 'no') { - $attachmentsize = length($env{'form.screenshot'}); + my $attachmentsize = length($env{'form.screenshot'}); my $max = 1048576; my $showmax = 1.00; if ($helpform{'maxsize'} =~ /^\d+\.\d*$/) { $max *= $helpform{'maxsize'}; $showmax = $helpform{'maxsize'}; } - $showmax = '('.sprintf("%.2f",$showmax).' MB)'; + $showmax = '('.sprintf("%.2f",$showmax).' MB)'; + $showsize = $attachmentsize/1048576; + $showsize = '('.sprintf("%.2f",$showsize).' MB)'; if ($attachmentsize > $max) { - my $showsize = $attachmentsize/1048576; - $showsize = '('.sprintf("%.2f",$showsize).' MB)'; $displaymsg .= '
'. &mt('The uploaded screenshot file [_1] included with your request exceeded the maximum allowed size [_2], and has therefore been discarded.',$showsize,$showmax).''; } else { @@ -990,13 +1090,26 @@ END if ($$cookie{'lonID'} =~ /lonID=($LONCAPA::handle_re);/) { $cookies{'lonID'} = $1; } - + if ($$cookie{'lonLinkID'} =~ /lonLinkID=([a-f0-9]+_linked);/) { + $cookies{'lonLinkID'} = $1; + } + my $lti_info; + if (($env{'request.lti.login'}) && ($env{'request.course.id'})) { + my $ltidom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + if ($ltidom) { + my %lti = &Apache::lonnet::get_domain_lti($ltidom,'provider'); + if (ref($lti{$env{'request.lti.login'}}) eq 'HASH') { + if ($lti{$env{'request.lti.login'}}{'consumer'}) { + $lti_info = "LTI consumer: ".$lti{$env{'request.lti.login'}}{'consumer'}."\n"; + } + } + } + } if ($attachmentpath =~ m-/([^/]+)$-) { $fname = $1; $displaymsg .= '
' - .&mt('An uploaded screenshot file [_1] ([_2] bytes) was included in the request sent by [_3].' - ,''.$fname.'' - ,$attachmentsize + .&mt('An uploaded screenshot file [_1] was included in the request sent by [_2].' + ,''.$fname.' '.$showsize, ,$env{'user.name'}.':'.$env{'user.domain'} ); $supportmsg .= "\n"; @@ -1006,11 +1119,15 @@ END foreach my $var(@ENVvars) { $supportmsg .= "$var: $ENV{$var}\n"; } + $supportmsg .= "REMOTE_ADDR: $ip\n"; foreach my $var (@envvars) { $supportmsg .= "$var: $env{$var}\n"; } + if ($lti_info) { + $supportmsg .= $lti_info; + } } - + my $cc_string; if ($homeserver) { if (@ok_ccs > 0) { @@ -1018,22 +1135,24 @@ END } } - my $attachment_text; + my $attachment_text = ''; unless ($homeserver && $attachmentpath) { - my $envdata = ''; foreach my $var (@cookievars) { - $envdata .= "$var: $cookies{$var}\n"; + $attachment_text .= "$var: $cookies{$var}\n"; } foreach my $var (@ENVvars) { - $envdata .= "$var: $ENV{$var}\n"; + $attachment_text .= "$var: $ENV{$var}\n"; } + $attachment_text .= "REMOTE_ADDR: $ip\n"; foreach my $var (@envvars) { - $envdata .= "$var: $env{$var}\n"; + $attachment_text .= "$var: $env{$var}\n"; } foreach my $var (@loncvars) { - $envdata .= "$var: $env{$var}\n"; + $attachment_text .= "$var: $env{$var}\n"; + } + if ($lti_info) { + $attachment_text .= $lti_info; } - $attachment_text = $envdata; } if ($addtext) { @@ -1046,14 +1165,18 @@ END } } - # Compose and send a MIME email - &Apache::loncommon::mime_email($from, $to, $subject, $supportmsg, $cc_string, $bcc, - $attachmentpath, $fname, $attachment_text); - + if ($bad_email) { + $r->print(''.$lt{'belo'}.'
'. + $lt{'ifyk'}."\n"); + } else { + # Compose and send a MIME email + &Apache::loncommon::mime_email($from,'',$to,$subject,$supportmsg,$cc_string, + $bcc,$attachmentpath,$fname,$attachment_text); + $r->print(''.$lt{'your'}.':'."\n"); + } if ($attachmentpath =~ m|$Apache::lonnet::perlvar{'lonDaemons'}/tmp/helprequests/(\d+)/[^/]+|) { unlink($attachmentpath); } - $r->print(''.$lt{'your'}.':

'."\n"); $r->print('
'. &Apache::lonhtmlcommon::start_pick_box(). &Apache::lonhtmlcommon::row_title($lt{'info'},undef,'LC_oddrow_value')."\n".$displaymsg."\n". @@ -1072,6 +1195,10 @@ END $var.': '.$ENV{$var}.', '; } } + if ($ip ne '') { + $envmsg .= ''. + 'REMOTE_ADDR: '.$ip.', '; + } foreach my $var (@envvars) { if ($env{$var} ne '') { $envmsg .= ''. @@ -1082,7 +1209,11 @@ END $r->print($envmsg."\n". &Apache::lonhtmlcommon::row_closure(1)."\n". &Apache::lonhtmlcommon::end_pick_box(). - "
\n". + '
'); + unless ($bad_email) { + $r->print('


'.&Apache::loncommon::confirmwrapper(&Apache::lonhtmlcommon::confirm_success($message)).'

'); + } + $r->print("\n". &Apache::loncommon::end_page()); } @@ -1090,7 +1221,11 @@ sub print_header { my ($r,$origurl,$command) = @_; my $location=&Apache::loncommon::lonhttpdurl("/adm"); my ($component_url); - my $helpdesk_link = ''; + my $helpicon_link = ''; + if ($command eq 'process') { + $helpicon_link = ''; + } + my $helpdesk_link = ''; if ($command eq 'process') { $helpdesk_link = ''; } @@ -1106,7 +1241,7 @@ sub print_header { ); my ($getstartlink,$reviewtext); if (-e $Apache::lonnet::perlvar{'lonDocRoot'}.'/adm/gettingstarted.html') { - $getstartlink = qq| $lt{'getst'}|; + $getstartlink = qq||; $reviewtext = &mt('Please review the information in "Log-in help" and the "Getting started" guide if you are unable to log-in.'); } else { $reviewtext = &mt('Please review the information in "Log-in help" if you are unable to log-in.'); @@ -1122,47 +1257,34 @@ sub print_header { $loginhelp = '/adm/loginproblems.html'; } $r->print(<<"END"); - - - - - - - - - + END if ($command ne 'process') { my $stuwarn = &mt('Do [_1]not[_2] use this form to ask about course content.', '',''); $r->print(<<"END"); - - - +

+ $lt{'stud'}: + $stuwarn $lt{'cont'} +

+ END } - $r->print(' -
  -
- - logo - LON-CAPA $lt{'headline'} - - - - - $getstartlink - - - -
-
 
 
$reviewtext +
+ $reviewtext $lt{'ifyo'} -

-$lt{'stud'}: -$stuwarn $lt{'cont'} -


-
'); return; }