Diff for /loncom/interface/lonsupportreq.pm between versions 1.93 and 1.105

version 1.93, 2017/10/13 20:37:35 version 1.105, 2023/07/26 01:03:58
Line 67  sub handler { Line 67  sub handler {
         }          }
     }      }
     my $origurl = $env{'form.origurl'};      my $origurl = $env{'form.origurl'};
     $origurl =~ s{^https?://}{};      if ($origurl =~ m{^https?://[^/]+(.*)$}) {
           $origurl = $1;
       }
     $origurl =~ s/(`)//g;      $origurl =~ s/(`)//g;
     $origurl =~ s/\$/\(\$\)/g;      $origurl =~ s/\$/\(\$\)/g;
     my $command = $env{'form.command'};      my $command = $env{'form.command'};
Line 149  sub print_request_form { Line 151  sub print_request_form {
         }          }
     }      }
   
     my %coursecodes;  
     my %codes;      my %codes;
     my @codetitles;      my @codetitles;
     my %cat_titles;      my %cat_titles;
Line 157  sub print_request_form { Line 158  sub print_request_form {
     my %idlist;      my %idlist;
     my %idnums;      my %idnums;
     my %idlist_titles;      my %idlist_titles;
     my $caller = 'global';  
     my $totcodes = 0;      my $totcodes = 0;
     my $format_reply;  
     my $jscript = '';      my $jscript = '';
     my $loaditems = qq|      my $loaditems = qq|
 function initialize_codes() {  function initialize_codes() {
Line 167  function initialize_codes() { Line 166  function initialize_codes() {
 }  }
     |;      |;
     unless ($helpform{'course'} eq 'no') {      unless ($helpform{'course'} eq 'no') {
         $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$codedom);          my $instcats = &Apache::lonnet::get_dom_instcats($codedom);
         if ($totcodes > 0) {          if (ref($instcats) eq 'HASH') {
             $format_reply = &Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order);              if ((ref($instcats->{'codetitles'}) eq 'ARRAY') && (ref($instcats->{'codes'}) eq 'HASH') &&
             if ($format_reply eq 'ok') {                  (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;                  my $numtypes = @codetitles;
                 &Apache::courseclassifier::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles);                  &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);                  my ($scripttext,$longtitles) = &Apache::courseclassifier::javascript_definitions(\@codetitles,\%idlist,\%idlist_titles,\%idnums,\%cat_titles);
Line 313  $jscript Line 319  $jscript
 $loaditems  $loaditems
 // ]]>  // ]]>
 </script>  </script>
 <script type="text/javascript" src="/res/adm/includes/file_upload.js"></script>  
 ENDJS  ENDJS
     if ($recaptcha_version >=2) {      if ($knownuser) {
           $js .="\n".'<script type="text/javascript" src="/res/adm/includes/file_upload.js"></script>';
       } elsif ($recaptcha_version >=2) {
         $js.= "\n".'<script src="https://www.google.com/recaptcha/api.js"></script>'."\n";          $js.= "\n".'<script src="https://www.google.com/recaptcha/api.js"></script>'."\n";
     }      }
     my %add_entries = (      my %add_entries = (
Line 384  ENDJS Line 391  ENDJS
     $i = $num%2;      $i = $num%2;
     if ($knownuser) {      if ($knownuser) {
         if ($homeserver) {          if ($homeserver) {
             unless ($helpform{'cc'} eq 'no') {              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($html_lt{'emac'},undef,$css[$i]).                  $output .= &Apache::lonhtmlcommon::row_title($html_lt{'emac'},undef,$css[$i]).
                            '<input type="text" size="50" name="cc" value="" /><br />'."\n".                             '<input type="text" size="50" name="cc" value="" /><br />'."\n".
                            &Apache::lonhtmlcommon::row_closure();                             &Apache::lonhtmlcommon::row_closure();
Line 393  ENDJS Line 404  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]);          $output .= &Apache::lonhtmlcommon::row_title("$html_lt{'unme'}/$html_lt{'doma'}",undef,$css[$i]);
         my $udom_input = '<input type="hidden" name="udom" value="'.          my $udom_input = '<input type="hidden" name="udom" value="'.
                          &HTML::Entities::encode($udom,'"<>&').'" />'."\n";                           &HTML::Entities::encode($udom,'"<>&').'" />'."\n";
Line 430  ENDJS Line 441  ENDJS
         }          }
         $output .= &Apache::lonhtmlcommon::row_closure();          $output .= &Apache::lonhtmlcommon::row_closure();
         $num ++;          $num ++;
           $i = $num%2;
       }
       unless ($env{'request.lti.login'}) {
           $output .= &Apache::lonhtmlcommon::row_title("$html_lt{'urlp'}",undef,$css[$i]).
                      $server."\n".'<input type="hidden" name="sourceurl" value="'.
                      &HTML::Entities::encode($sourceurl,'"<>&').'" />'."\n".
                      &Apache::lonhtmlcommon::row_closure();
     }      }
     $i = $num%2;  
     $output .= &Apache::lonhtmlcommon::row_title("$html_lt{'urlp'}",undef,$css[$i]).  
                $server."\n".'<input type="hidden" name="sourceurl" value="'.  
                &HTML::Entities::encode($sourceurl,'"<>&').'" />'."\n".  
                &Apache::lonhtmlcommon::row_closure();  
     unless ($helpform{'phone'} eq 'no') {      unless ($helpform{'phone'} eq 'no') {
         my $reqd;          my $reqd;
         if ($helpform{'phone'} eq 'req') {          if ($helpform{'phone'} eq 'req') {
Line 447  ENDJS Line 460  ENDJS
         $num ++;          $num ++;
         $i = $num%2;          $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]);          $output .= &Apache::lonhtmlcommon::row_title("$html_lt{'crsd'}$details_title",undef,$css[$i]);
         if ($totcodes > 0) {          if ($totcodes > 0) {
             my $numtitles = @codetitles;              my $numtitles = @codetitles;
             if ($numtitles == 0) {              if ($numtitles == 0) {
                 $output .= $html_lt{'enin'}.':&nbsp;                  $output .= $html_lt{'enin'}.':&nbsp;
                   <input type="text" name="coursecode" size="15" value="" />'."\n";                    <input type="text" name="coursecode" size="15" value="'.&HTML::Entities::encode($ccode,'\'"&<>').'" />'."\n";
             } else {              } else {
                 my @standardnames = &Apache::loncommon::get_standard_codeitems();                  my @standardnames = &Apache::loncommon::get_standard_codeitems();
                 my $lasttitle = $numtitles;                  my $lasttitle = $numtitles;
Line 522  ENDJS Line 535  ENDJS
         $num ++;          $num ++;
         $i = $num%2;          $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]);          $output .= &Apache::lonhtmlcommon::row_title($html_lt{'secn'},undef,$css[$i]);
         if ($sectionlist) {          if ($sectionlist) {
             $output .= "<div id=\"LC_helpdesk_sectionlist\"><select name=\"sectionsel\">\n".              $output .= "<div id=\"LC_helpdesk_sectionlist\"><select name=\"sectionsel\">\n".
Line 574  ENDJS Line 587  ENDJS
                 }                  }
                 $showmax = ' ('.sprintf("%.2f",$showmax).' '.&mt('MB max.').')';                  $showmax = ' ('.sprintf("%.2f",$showmax).' '.&mt('MB max.').')';
                 $output .= &Apache::lonhtmlcommon::row_title($html_lt{'opfi'},undef,$css[$i])                  $output .= &Apache::lonhtmlcommon::row_title($html_lt{'opfi'},undef,$css[$i])
                     .' <input type="file" name="screenshot" class="flUpload" size="20" />'                      .' <input type="file" name="screenshot" class="LC_flUpload" size="20" />'
                     .'<input type="hidden" id="free_space" value="'.$max.'" />'                      .'<input type="hidden" id="LC_free_space" value="'.$max.'" />'
                     .'<br />'."\n".$html_lt{'uplf'}.$showmax."\n"                      .'<br />'."\n".$html_lt{'uplf'}.$showmax."\n"
                     .&Apache::lonhtmlcommon::row_closure();                      .&Apache::lonhtmlcommon::row_closure();
                 $num ++;                  $num ++;
Line 654  sub print_request_receipt { Line 667  sub print_request_receipt {
             return;              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 @envvars = ('browser.os','browser.type','browser.version','user.home','request.role');
     my @loncvars = ('user.name','user.domain','request.course.sec','request.course.id');      my @loncvars = ('user.name','user.domain','request.course.sec','request.course.id');
     my @cookievars;      my @cookievars;
Line 693  sub print_request_receipt { Line 710  sub print_request_receipt {
     unless ($helpform{'phone'} eq 'no') {      unless ($helpform{'phone'} eq 'no') {
         $formvars{'phone'} = 1;          $formvars{'phone'} = 1;
     }      }
     unless ($helpform{'section'} eq 'no') {      unless (($helpform{'section'} eq 'no') || ($env{'request.lti.login'})) {
         $formvars{'section'} = 1;          $formvars{'section'} = 1;
     }      }
     unless ($helpform{'course'} eq 'no') {      unless (($helpform{'course'} eq 'no') || ($env{'request.lti.login'})) {
         $formvars{'course'} = 1;          $formvars{'course'} = 1;
     }      }
     unless ($helpform{'cc'} eq 'no') {      unless (($helpform{'cc'} eq 'no') || ($by_ip)) {
         $formvars{'cc'} = 1;          $formvars{'cc'} = 1;
     }      }
     unless ($helpform{'screenshot'} eq 'no') {      unless ($helpform{'screenshot'} eq 'no') {
         $formvars{'screenshot'} = 1;          $formvars{'screenshot'} = 1;
     }      }
     my $coursecode;      my ($coursecode,$sourceurl);
     if ($formvars{'course'}) {      if ($formvars{'course'}) {
         $coursecode = $env{'form.coursecode'};          $coursecode = $env{'form.coursecode'};
         if ($coursecode eq '') {          if ($coursecode eq '') {
             my $totcodes = 0;              my $totcodes = 0;
             my %coursecodes;              my $instcats = &Apache::lonnet::get_dom_instcats($defdom);
             $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$defdom);              if (ref($instcats) eq 'HASH') {
                   if (ref($instcats->{'codes'}) eq 'HASH') {
                       $totcodes = scalar(keys(%{$instcats->{'codes'}}));
                   }
               }
             my @standardnames = &Apache::loncommon::get_standard_codeitems();              my @standardnames = &Apache::loncommon::get_standard_codeitems();
             if ($totcodes > 0) {              if ($totcodes > 0) {
                 my $noregexps = 1;                  my $noregexps = 1;
Line 799  sub print_request_receipt { Line 820  sub print_request_receipt {
             $badccmsg .= '<br />'.&mt('The following Cc e-mail addresses are invalid: '). &Apache::loncommon::cleanup_html(join(', ',@bad_ccs));              $badccmsg .= '<br />'.&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'}) {      if ($formvars{'course'}) {
         $env{'form.crsi'} = $env{'form.title'};          $env{'form.crsi'} = $env{'form.title'};
         if ($coursecode ne '') {          if ($coursecode ne '') {
Line 838  sub print_request_receipt { Line 867  sub print_request_receipt {
     }      }
     $supportmsg .= "$lt{'subject'}: $env{'form.subject'}      $supportmsg .= "$lt{'subject'}: $env{'form.subject'}
 $lt{'description'}: $env{'form.description'}  $lt{'description'}: $env{'form.description'}
 $lt{'sourceurl'}: $env{'form.sourceurl'}  $lt{'sourceurl'}: $sourceurl
 $lt{'date'}: $reporttime  $lt{'date'}: $reporttime
 ";  ";
   
Line 872  $lt{'date'}: $reporttime Line 901  $lt{'date'}: $reporttime
                     next if ($helpform{$item} eq 'no');                      next if ($helpform{$item} eq 'no');
                 }                  }
                 next if (($item eq 'crsi') && ($helpform{'course'} 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};                  my $showitem = $env{'form.'.$item};
                 $showitem = &Apache::loncommon::cleanup_html($showitem);                  $showitem = &Apache::loncommon::cleanup_html($showitem);
                 $displaymsg .=                   $displaymsg .= 
Line 887  $lt{'date'}: $reporttime Line 917  $lt{'date'}: $reporttime
         $env{'form.'.$field} =~ s/\s+$//;          $env{'form.'.$field} =~ s/\s+$//;
     }      }
     if ($env{'form.uname'} =~ /^$match_username$/) {      if ($env{'form.uname'} =~ /^$match_username$/) {
         $requdom = $env{'form.udom'};          $requname = $env{'form.uname'};
     }      }
     if ($env{'form.udom'} =~ /^$match_domain$/) {      if ($env{'form.udom'} =~ /^$match_domain$/) {
         $requdom = $env{'form.udom'};          $requdom = $env{'form.udom'};
Line 1024  END Line 1054  END
     if ($$cookie{'lonLinkID'} =~ /lonLinkID=([a-f0-9]+_linked);/) {      if ($$cookie{'lonLinkID'} =~ /lonLinkID=([a-f0-9]+_linked);/) {
         $cookies{'lonLinkID'} = $1;          $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-/([^/]+)$-) {      if ($attachmentpath =~ m-/([^/]+)$-) {
         $fname = $1;          $fname = $1;
         $displaymsg .= '<br />'          $displaymsg .= '<br />'
Line 1038  END Line 1080  END
         foreach my $var(@ENVvars) {          foreach my $var(@ENVvars) {
             $supportmsg .= "$var: $ENV{$var}\n";              $supportmsg .= "$var: $ENV{$var}\n";
         }          }
           $supportmsg .= "REMOTE_ADDR: $ip\n";
         foreach my $var (@envvars) {          foreach my $var (@envvars) {
             $supportmsg .= "$var: $env{$var}\n";              $supportmsg .= "$var: $env{$var}\n";
         }          }
           if ($lti_info) {
               $supportmsg .= $lti_info;
           }
     }      }
   
     my $cc_string;      my $cc_string;
Line 1058  END Line 1104  END
         foreach my $var (@ENVvars) {          foreach my $var (@ENVvars) {
             $attachment_text .= "$var: $ENV{$var}\n";              $attachment_text .= "$var: $ENV{$var}\n";
         }          }
           $attachment_text .= "REMOTE_ADDR: $ip\n";
         foreach my $var (@envvars) {          foreach my $var (@envvars) {
             $attachment_text .= "$var: $env{$var}\n";              $attachment_text .= "$var: $env{$var}\n";
         }          }
         foreach my $var (@loncvars) {          foreach my $var (@loncvars) {
             $attachment_text .= "$var: $env{$var}\n";              $attachment_text .= "$var: $env{$var}\n";
         }          }
           if ($lti_info) {
               $attachment_text .= $lti_info;
           }
     }      }
   
     if ($addtext) {      if ($addtext) {
Line 1077  END Line 1127  END
     }      }
   
     # Compose and send a MIME email      # Compose and send a MIME email
     &Apache::loncommon::mime_email($from, $to, $subject, $supportmsg, $cc_string, $bcc,       &Apache::loncommon::mime_email($from,'',$to,$subject,$supportmsg,$cc_string,
                                     $attachmentpath, $fname, $attachment_text);                                     $bcc,$attachmentpath,$fname,$attachment_text);
   
     if ($attachmentpath =~ m|$Apache::lonnet::perlvar{'lonDaemons'}/tmp/helprequests/(\d+)/[^/]+|) {      if ($attachmentpath =~ m|$Apache::lonnet::perlvar{'lonDaemons'}/tmp/helprequests/(\d+)/[^/]+|) {
         unlink($attachmentpath);          unlink($attachmentpath);
Line 1102  END Line 1152  END
                        $var.'</span>:&nbsp;'.$ENV{$var}.', ';                         $var.'</span>:&nbsp;'.$ENV{$var}.', ';
         }          }
     }      }
       if ($ip ne '') {
           $envmsg .= '<span class="LC_helpform_receipt_cat">'.
                      'REMOTE_ADDR</span>:&nbsp;'.$ip.', ';
       }
     foreach my $var (@envvars) {      foreach my $var (@envvars) {
         if ($env{$var} ne '') {           if ($env{$var} ne '') { 
             $envmsg .= '<span class="LC_helpform_receipt_cat">'.              $envmsg .= '<span class="LC_helpform_receipt_cat">'.

Removed from v.1.93  
changed lines
  Added in v.1.105


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>