Diff for /loncom/interface/lonsupportreq.pm between versions 1.66.6.2 and 1.85

version 1.66.6.2, 2012/02/10 19:22:19 version 1.85, 2017/01/18 21:07:31
Line 27 Line 27
 package Apache::lonsupportreq;  package Apache::lonsupportreq;
   
 use strict;  use strict;
 use MIME::Types;  
 use MIME::Lite;  
 use CGI::Cookie();  use CGI::Cookie();
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::loncommon();  use Apache::loncommon();
Line 36  use Apache::lonhtmlcommon; Line 34  use Apache::lonhtmlcommon;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonacc();  use Apache::lonacc();
   use Apache::lonauth();
   use Apache::courseclassifier;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
    use HTML::Entities;
   
 sub handler {  sub handler {
     my ($r) = @_;      my ($r) = @_;
Line 55  sub handler { Line 55  sub handler {
     if ($r->uri eq '/adm/helpdesk') {      if ($r->uri eq '/adm/helpdesk') {
         &Apache::lonacc::get_posted_cgi($r);          &Apache::lonacc::get_posted_cgi($r);
     }      }
     my $function = $env{'form.function'};      my $function;
       if ($env{'form.function'}) {
           if (($env{'form.function'} eq 'norole')  ||
               ($env{'form.function'} eq 'student') ||
               ($env{'form.function'} eq 'admin')   ||
               ($env{'form.function'} eq 'author')) {
               $function = $env{'form.function'};
           }
       }
     my $origurl = $env{'form.origurl'};      my $origurl = $env{'form.origurl'};
       $origurl =~ s{^https?://}{};
       $origurl =~ s/(`)//g;
       $origurl =~ s/\$/\(\$\)/g;
     my $command = $env{'form.command'};      my $command = $env{'form.command'};
   
     if ($command eq 'process') {      if ($command eq 'process') {
Line 66  sub handler { Line 77  sub handler {
     }      }
     return OK;      return OK;
 }  }
          
 sub print_request_form {  sub print_request_form {
     my ($r,$origurl,$function) = @_;      my ($r,$origurl,$function) = @_;
     my ($os,$browser,$bversion,$uhost,$uname,$udom,$uhome,$email,      my ($os,$browser,$bversion,$uname,$udom,$uhome,$urole,$usec,$email,$cid,
         $lastname,$firstname,$server,$formname,$public);          $cdom,$cnum,$ctitle,$ccode,$sectionlist,$lastname,$firstname,$server,
           $formname,$public,$homeserver,$knownuser,$captcha_form,$captcha_error,
           $captcha,$recaptcha_version);
     $function = &Apache::loncommon::get_users_function() if (!$function);      $function = &Apache::loncommon::get_users_function() if (!$function);
       $ccode = '';
     $os = $env{'browser.os'};      $os = $env{'browser.os'};
     $browser = $env{'browser.type'};      $browser = $env{'browser.type'};
     $bversion = $env{'browser.version'};      $bversion = $env{'browser.version'};
     $uhost = $env{'request.host'};  
     if (($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) {      if (($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) {
         $public = 1;          $public = 1;
     } else {      } else {
         $uname = $env{'user.name'};          if (($env{'user.name'} ne '') && ($env{'user.domain'} ne '')) {
         $udom = $env{'user.domain'};              $homeserver = &Apache::lonnet::homeserver($env{'user.name'},
                                                         $env{'user.domain'});
               if ($homeserver eq 'no_host') {
                   undef($homeserver); 
               } else {
                   $uname = $env{'user.name'};
                   $udom = $env{'user.domain'};
               }
           }
     }      }
     $uhome = $env{'user.home'};      if (($env{'user.name'} =~ /^$match_username$/) && 
     $formname = 'logproblem';          ($env{'user.domain'} =~ /^$match_domain$/) && (!$public)) {
     my $machine = &Apache::lonnet::absolute_url();          $knownuser = 1;
     if ($origurl =~ m-^https?://-) {  
         $server = $origurl;  
     } else {      } else {
         $server = $machine.$origurl;          my $lonhost = $r->dir_config('lonHostID');
           ($captcha_form,$captcha_error,$captcha,$recaptcha_version) =
               &Apache::loncommon::captcha_display('login',$lonhost);
       }
       if ($homeserver) {
           $uhome = $env{'user.home'};
           $urole = $env{'request.role'};
           $usec = $env{'request.course.sec'};
           $cid = $env{'request.course.id'};
     }      }
     my $showserver = $server;      $formname = 'logproblem';
     $showserver =~ s/\?.*$//;      my $machine = &Apache::lonnet::absolute_url();
     my %lt = &Apache::lonlocal::texthash (      my $sourceurl = $machine.$origurl;
       $server = $machine.&Apache::loncommon::cleanup_html($origurl);
       $server =~ s/\?.*$//;
       my %js_lt = &Apache::lonlocal::texthash (
                   email => 'The e-mail address you entered',                    email => 'The e-mail address you entered',
                   notv => 'is not a valid e-mail address',                    notv => 'is not a valid e-mail address',
                   rsub => 'You must include a subject',                    rsub => 'You must include a subject',
                   rdes => 'You must include a description',                    rdes => 'You must include a description',
       );
       my %html_lt = &Apache::lonlocal::texthash (
                   name => 'Name',                    name => 'Name',
                   subm => 'Submit Request',                    subm => 'Submit Request',
                   emad => 'Your e-mail address',                    emad => 'Your e-mail address',
Line 108  sub print_request_form { Line 140  sub print_request_form {
                   entr => 'Enter the username you use to log-in to LON-CAPA, and your domain.',                    entr => 'Enter the username you use to log-in to LON-CAPA, and your domain.',
                   urlp => 'URL of page',                    urlp => 'URL of page',
                   phon => 'Phone',                    phon => 'Phone',
                     crsd => 'Course Details',
                     enin => 'Enter institutional course code',
                   pick => 'Pick',                    pick => 'Pick',
                     enct => 'Enter course title',
                     secn => 'Section Number',
                     sele => 'Select',
                     titl => 'Title',
                     lsec => 'LON-CAPA sec',
                   subj => 'Subject',                    subj => 'Subject',
                   detd => 'Detailed Description',                    detd => 'Detailed Description',
                   opfi => 'Optional file upload',                    opfi => 'Optional file upload',
                   uplf => 'Upload a file (e.g., a screenshot) relevant to your help request (128 KB max.)',                    uplf => 'Upload a file (e.g., a screenshot) relevant to your help request (1 MB max.)',
                   fini => 'Finish',                    fini => 'Finish',
                   clfm => 'Clear Form',                    clfm => 'Clear Form',
     );      );
       &js_escape(\%js_lt);
       &html_escape(\%html_lt);
     my $scripttag = (<<"END");      my $scripttag = (<<"END");
 function validate() {  function validate() {
     if (validmail(document.logproblem.email) == false) {      if (validmail(document.logproblem.email) == false) {
         alert("$lt{'email'}: "+document.logproblem.email.value+" $lt{'notv'}.");          alert("$js_lt{'email'}: "+document.logproblem.email.value+" $js_lt{'notv'}.");
         return;          return;
     }      }
     if (document.logproblem.subject.value == '') {      if (document.logproblem.subject.value == '') {
         alert("$lt{'rsub'}.");          alert("$js_lt{'rsub'}.");
         return;          return;
     }      }
     if (document.logproblem.description.value == '') {      if (document.logproblem.description.value == '') {
         alert("$lt{'rdes'}.");          alert("$js_lt{'rdes'}.");
         return;          return;
     }      }
     document.logproblem.submit();      document.logproblem.submit();
Line 135  function validate() { Line 176  function validate() {
   
 END  END
     $scripttag .= &Apache::lonhtmlcommon::javascript_valid_email();      $scripttag .= &Apache::lonhtmlcommon::javascript_valid_email();
       if ($cid) {
     if ($env{'environment.permanentemail'}) {          $cdom = $env{'course.'.$cid.'.domain'};
         $email = $env{'environment.permanentemail'};          $cnum = $env{'course.'.$cid.'.num'};
     } elsif ($env{'environment.critnotification'}) {      }
         $email = $env{'environment.critnotification'};      if ($cdom && $cnum) {
     } elsif ($env{'environment.notification'}) {          my %csettings = &Apache::lonnet::get('environment',['description','internal.coursecode','internal.sectionnums'],$cdom,$cnum);
         $email = $env{'environment.notification'};          $ctitle = $csettings{'description'};
     }          $ccode = $csettings{'internal.coursecode'};
     if ($env{'environment.lastname'}) {          $sectionlist = $csettings{'internal.sectionnums'};
         $lastname = $env{'environment.lastname'};      }
   
       if ($homeserver) {
           if ($env{'environment.permanentemail'}) {
               $email = $env{'environment.permanentemail'};
           } elsif ($env{'environment.critnotification'}) {
               $email = $env{'environment.critnotification'};
           } elsif ($env{'environment.notification'}) {
               $email = $env{'environment.notification'};
           }
           if ($env{'environment.lastname'}) {
               $lastname = $env{'environment.lastname'};
           }
           if ($env{'environment.firstname'}) {
               $firstname = $env{'environment.firstname'};
           }
       }
       my @sections = split(/,/,$sectionlist);
       my %groupid;
       foreach my $section (@sections) {
           my ($sec,$grp) = split(/:/,$section);
           $groupid{$sec} = $grp;
     }      }
     if ($env{'environment.firstname'}) {  
         $firstname = $env{'environment.firstname'};  
     }  
   
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['codedom',      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['codedom',
                                                  'useremail','useraccount']);                                                   'useremail','useraccount']);
     if ($env{'form.origurl'} eq '/adm/createaccount') {      if ($env{'form.origurl'} eq '/adm/createaccount') {
Line 165  END Line 223  END
         }          }
     }      }
     my $codedom = &get_domain();      my $codedom = &get_domain();
       my $details_title;
       if ($codedom) {
           $details_title = '<br />('.$codedom.')';
       }
       my %coursecodes;
       my %codes;
       my @codetitles;
       my %cat_titles;
       my %cat_order;
       my %idlist;
       my %idnums;
       my %idlist_titles;
     my $caller = 'global';      my $caller = 'global';
       my $totcodes = 0;
     my $format_reply;      my $format_reply;
     my $jscript = '';      my $jscript = '';
     my $js = '<script type="text/javascript">'."\n$scripttag\n$jscript\n".      my $loaditems = qq|
      '</script>';  function initialize_codes() {
     my %add_entries = (topmargin    => "0",      return;
        marginheight => "0",  }
       );      |;
       if ($cnum) {
           $coursecodes{$cnum} = $ccode;
           if ($ccode eq '') {
               $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$codedom,$totcodes);
           } else {
               $coursecodes{$cnum} = $ccode;
               $caller = $cnum;
               $totcodes ++;
           }
       } else { 
           $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$codedom,$totcodes);
       }
       if ($totcodes > 0) {
           if ($ccode eq '') {
               $format_reply = &Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order);
               if ($format_reply eq 'ok') {
                   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);
                   my $longtitles_str = join('","',@{$longtitles});
                   my $allidlist = $idlist{$codetitles[0]};
                   $jscript .= &Apache::courseclassifier::courseset_js_start($formname,$longtitles_str,$allidlist);
                   $jscript .= $scripttext;
                   $jscript .= &Apache::courseclassifier::javascript_code_selections($formname,\@codetitles);
                   $loaditems = '';
               }
           }
       }
   
       my $js = <<"ENDJS";
   <script type="text/javascript">
   // <![CDATA[
   $scripttag
   $jscript
   $loaditems
   // ]]>
   </script>
   <script type="text/javascript" src="/res/adm/includes/file_upload.js"></script>
   ENDJS
       if ($recaptcha_version >=2) {
           $js.= "\n".'<script src="https://www.google.com/recaptcha/api.js"></script>'."\n";
       }
       my %add_entries = (
                          style    => "margin-top:0px;margin-bottom:0px;",
                          onload   => "initialize_codes();",
                         );
   
           
     $r->print(&Apache::loncommon::start_page('Support Request',$js,      $r->print(&Apache::loncommon::start_page('Support Request',$js,
        { 'function'    => $function,         { 'function'    => $function,
Line 184  END Line 302  END
     my @css = ('LC_evenrow_value','LC_oddrow_value');      my @css = ('LC_evenrow_value','LC_oddrow_value');
     my $num = 1;      my $num = 1;
     my $i = $num%2;      my $i = $num%2;
     $r->print('<form method="post" name="logproblem" enctype="multipart/form-data">'."\n");      my $formtype;
       if ($homeserver) {
           $formtype = ' enctype="multipart/form-data"';
       }
       $r->print('<form method="post" action="" name="logproblem"'.$formtype.'>'."\n");
     my $output = &Apache::lonhtmlcommon::start_pick_box().      my $output = &Apache::lonhtmlcommon::start_pick_box().
                  &Apache::lonhtmlcommon::row_title($lt{'name'},undef,$css[$num])."\n";                   &Apache::lonhtmlcommon::row_headline().
                    '<span class="LC_info">'.
                    &mt('(All fields marked with * are required.)').
                    '</span>'.
                    &Apache::lonhtmlcommon::row_closure().
                    &Apache::lonhtmlcommon::row_title($html_lt{'name'},undef,$css[$num])."\n";
     my $fullname = '';      my $fullname = '';
     if ((defined($lastname) && $lastname ne '') && (defined($firstname) && $firstname ne '')) {      if ((defined($lastname) && $lastname ne '') && (defined($firstname) && $firstname ne '')) {
         $fullname = "$firstname $lastname";           $fullname = "$firstname $lastname"; 
         $output .= $fullname.'<input type="hidden" name="username" value="'.&HTML::Entities::encode($fullname,'"<>&').'" />';          $output .= $fullname.'<input type="hidden" name="username" value="'.&HTML::Entities::encode($fullname,'"<>&').'" />'."\n";
     } else {      } else {
         if (defined($firstname) && $firstname ne '') {          if (defined($firstname) && $firstname ne '') {
             $fullname = $firstname;              $fullname = $firstname;
         } elsif (defined($lastname) && $lastname ne '') {          } elsif (defined($lastname) && $lastname ne '') {
             $fullname = " $lastname";              $fullname = " $lastname";
         }          }
         $output .= '<input type="text" size="20" name="username" value="'.&HTML::Entities::encode($fullname,'"<>&').'" />';          $output .= '<input type="text" size="20" name="username" value="'.&HTML::Entities::encode($fullname,'"<>&').'" />'."\n";
     }      }
     $output .= '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="'.$lt{'subm'}.'" onclick="validate()" />&nbsp;'.      $output .= '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="'.$html_lt{'subm'}.'" onclick="validate()" />&nbsp;'.
                 &Apache::lonhtmlcommon::row_closure()."\n";                  &Apache::lonhtmlcommon::row_closure()."\n";
     $num ++;      $num ++;
     $i = $num%2;      $i = $num%2;
     $output .= &Apache::lonhtmlcommon::row_title($lt{'emad'},undef,$css[$i]).      $output .= &Apache::lonhtmlcommon::row_title(
                      '<span title="'.&mt('required').'">'.
                      $html_lt{'emad'}.' <span class="LC_info">*</span></span>'
                     ,undef,$css[$i]).
                '<input type="text" size="20" name="email" value="'.                 '<input type="text" size="20" name="email" value="'.
                &HTML::Entities::encode($email,'"<>&').'" /><br />'."\n".                 &HTML::Entities::encode($email,'"<>&').'" /><br />'."\n".
                &Apache::lonhtmlcommon::row_closure();                 &Apache::lonhtmlcommon::row_closure();
     $num ++;      $num ++;
     $i = $num%2;      $i = $num%2;
     if (($env{'user.name'} =~ /^$match_username$/) && (!$public)) {      if ($knownuser) {
         $output .= &Apache::lonhtmlcommon::row_title($lt{'emac'},undef,$css[$i]).          if ($homeserver) {
                    '<input type="text" size="50" name="cc" value="" /><br />'."\n".              $output .= &Apache::lonhtmlcommon::row_title($html_lt{'emac'},undef,$css[$i]).
                    &Apache::lonhtmlcommon::row_closure();                         '<input type="text" size="50" name="cc" value="" /><br />'."\n".
         $num ++;                         &Apache::lonhtmlcommon::row_closure();
         $i = $num%2;              $num ++;
               $i = $num%2;
           }
     }      }
     $output .= &Apache::lonhtmlcommon::row_title("$lt{'unme'}/$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,'"<>&').'" />';                       &HTML::Entities::encode($udom,'"<>&').'" />'."\n";
     my $uname_input = '<input type="hidden" name="uname" value="'.      my $uname_input = '<input type="hidden" name="uname" value="'.
                       &HTML::Entities::encode($uname,'"<>&').'" />';                         &HTML::Entities::encode($uname,'"<>&').'" />'."\n"; 
     if (($env{'user.name'} =~ /^$match_username$/) &&       if ($knownuser) {
         ($env{'user.domain'} =~ /^$match_domain$/) && (!$public)) {          $output .= '<i>'.$html_lt{'unme'}.'</i>:&nbsp;'.$uname.'&nbsp;&nbsp;<i>'.$html_lt{'doma'}.'</i>:&nbsp;'.$udom.$udom_input.$uname_input;
         $output .= '<i>'.$lt{'unme'}.'</i>:&nbsp;'.$uname.'&nbsp;&nbsp;<i>'.$lt{'doma'}.'</i>:&nbsp;'.$udom.$udom_input.$uname_input;  
     } else {      } else {
         my $udomform = '';          my $udomform = '';
         my $unameform = '';          my $unameform = '';
         if (($env{'user.domain'} =~ /^$match_domain$/) && (!$public)) {          if (($env{'user.domain'} =~ /^$match_domain$/) && (!$public)) {
             $output .= $lt{'entu'};              $output .= $html_lt{'entu'};
         } elsif (($env{'user.name'} =~ /^$match_username$/) && (!$public)) {           } elsif (($env{'user.name'} =~ /^$match_username$/) && (!$public)) { 
             $output .= $lt{'chdo'};              $output .= $html_lt{'chdo'};
         } else {          } else {
             $output .= $lt{'entr'};              $output .= $html_lt{'entr'};
         }          }
         $output .= '<br />';          $output .= '<br />'."\n";
         if (!$public) {          if (!$public) {
             if ($env{'user.domain'} =~ /^$match_domain$/) {              if ($env{'user.domain'} =~ /^$match_domain$/) {
                 $udomform = '<i>'.$lt{'doma'}.'</i>:&nbsp;'.$udom.$udom_input;                  $udomform = '<i>'.$html_lt{'doma'}.'</i>:&nbsp;'.$udom.$udom_input;
             } elsif ($env{'user.name'} =~ /^$match_username$/) {              } elsif ($env{'user.name'} =~ /^$match_username$/) {
                 $unameform = '<i>'.$lt{'unme'}.'</i>:&nbsp;'.$uname.'&nbsp;&nbsp;'.$uname_input;                  $unameform = '<i>'.$html_lt{'unme'}.'</i>:&nbsp;'.$uname.'&nbsp;&nbsp;'.$uname_input;
             }              }
         }          }
         if ($udomform eq '') {          if ($udomform eq '') {
             $udomform = '<i>'.$lt{'doma'}.'</i>:&nbsp;';              $udomform = '<i>'.$html_lt{'doma'}.'</i>:&nbsp;';
             $udomform .= &Apache::loncommon::select_dom_form($codedom,'udom');              $udomform .= &Apache::loncommon::select_dom_form($codedom,'udom')."\n";
         }          }
         if ($unameform eq '') {          if ($unameform eq '') {
             $unameform= '<i>'.$lt{'unme'}.'</i>:&nbsp;<input type="text" size="20" name="uname" value="'.$uname.'" />&nbsp;&nbsp;';              $unameform= '<i>'.$html_lt{'unme'}.'</i>:&nbsp;<input type="text" size="20" name="uname" value="'.$uname.'" />&nbsp;&nbsp;';
         }          }
         $output .= $unameform.$udomform;          $output .= $unameform.$udomform;
     }      }
     $output .= &Apache::lonhtmlcommon::row_closure();      $output .= &Apache::lonhtmlcommon::row_closure();
     $num ++;      $num ++;
     $i = $num%2;      $i = $num%2;
     $output .= &Apache::lonhtmlcommon::row_title("$lt{'urlp'}",undef,$css[$i]).      $output .= &Apache::lonhtmlcommon::row_title("$html_lt{'urlp'}",undef,$css[$i]).
                $showserver.'<input type="hidden" name="sourceurl" value="'.                 $server."\n".'<input type="hidden" name="sourceurl" value="'.
                &HTML::Entities::encode($server,'"<>&').'" />'.                 &HTML::Entities::encode($sourceurl,'"<>&').'" />'."\n".
                  &Apache::lonhtmlcommon::row_closure().
                  &Apache::lonhtmlcommon::row_title("$html_lt{'phon'}",undef,'LC_evenrow_value').
                  '<input type="text" size="15" name="phone" /><br />'."\n".
                &Apache::lonhtmlcommon::row_closure();                 &Apache::lonhtmlcommon::row_closure();
     $num ++;      $num ++;
     $i = $num%2;      $i = $num%2; 
     $output .= &Apache::lonhtmlcommon::row_title("$lt{'phon'}",undef,      $output .= &Apache::lonhtmlcommon::row_title("$html_lt{'crsd'}$details_title",undef,$css[$i]);
                                                  'LC_evenrow_value').      if ($cnum) {
                '<input type="text" size="15" name="phone" /><br />'.          if ($coursecodes{$cnum}) {
                &Apache::lonhtmlcommon::row_closure();              foreach my $item (@codetitles) {
                   $output .= '<i>'.$item.'</i>:&nbsp;'.$codes{$cnum}{$item}.';&nbsp;';
               }
               $output .= '&nbsp;<input type="hidden" name="coursecode" value="'.&HTML::Entities::encode($coursecodes{$cnum},'"<>&').'" />'."\n";
           } else {
               $output .= $html_lt{'enin'}.':&nbsp;
                     <input type="text" name="coursecode" size="15" value="" />'."\n";
           }
       } else {
           if ($totcodes > 0) {
               my $numtitles = @codetitles;
               if ($numtitles == 0) {
                   $output .= $html_lt{'enin'}.':&nbsp;
                     <input type="text" name="coursecode" size="15" value="" />'."\n";
               } else {
                   my @standardnames = &Apache::loncommon::get_standard_codeitems();
                   my $lasttitle = $numtitles;
                   if ($numtitles > 4) {
                       $lasttitle = 4;
                   } 
                   $output .= '<table><tr><td>'.$codetitles[0].'<br />'."\n".
                         '<select name="'.$standardnames[0].'" onchange="courseSet('."'$codetitles[0]'".')">'."\n".
                         ' <option value="-1">'.$html_lt{'sele'}."</option>\n";
                   my @items = ();
                   my @longitems = ();
                   if ($idlist{$codetitles[0]} =~ /","/) {
                       @items = split(/","/,$idlist{$codetitles[0]});
                   } else {
                       $items[0] = $idlist{$codetitles[0]};
                   }
                   if (defined($idlist_titles{$codetitles[0]})) {
                       if ($idlist_titles{$codetitles[0]} =~ /","/) {
                           @longitems = split(/","/,$idlist_titles{$codetitles[0]});
                       } else {
                           $longitems[0] = $idlist_titles{$codetitles[0]};
                       }
                       for (my $i=0; $i<@longitems; $i++) {
                           if ($longitems[$i] eq '') {
                               $longitems[$i] = $items[$i];
                           }
                       }
                   } else {
                       @longitems = @items;
                   }
                   for (my $i=0; $i<@items; $i++) {
                       $output .= ' <option value="'.$items[$i].'">'.$longitems[$i].'</option>'."\n";
                   }
                   $output .= '</select></td>';
                   for (my $i=1; $i<$numtitles; $i++) {
                       $output .= '<td>'.$codetitles[$i].'<br />'."\n".
                        '<select name="'.$standardnames[$i].'" onchange="courseSet('."'$codetitles[$i]'".')">'."\n".
                        '<option value="-1">&lt;-'.$html_lt{'pick'}.' '.$codetitles[$i-1].'</option>'."\n".
                        '</select>'."\n".
                        '</td>'."\n";
                   }
                   $output .= '</tr></table>';
                   if ($numtitles > 4) {
                       $output .= '<br /><br />'.$codetitles[$numtitles].'<br />'."\n".
                             '<select name="'.$standardnames[$numtitles].'" onchange="courseSet('."'$codetitles[$numtitles]'".')">'."\n".
                             '<option value="-1">&lt;-'.$html_lt{'pick'}.' '.$codetitles[$numtitles-1].'</option>'."\n".
                             '</select>'."\n";
                   }
               }
           } else {
               $output .= $html_lt{'enin'}.':&nbsp;
                     <input type="text" name="coursecode" size="15" value="" />'."\n";
           }
       }
       if ($ctitle) {
           $output .= '<br /><i>'.$html_lt{'titl'}.'</i>:&nbsp;'.$ctitle.
                      '<input type="hidden" name="title" value="'.
                      &HTML::Entities::encode($ctitle,'"<>&').'" />'."\n";
       } else {
           $output .= '<br />'.$html_lt{'enct'}.':&nbsp;
                    <input type="text" name="title" size="25" value="" />'."\n";
       }
       $output .= &Apache::lonhtmlcommon::row_closure();
     $num ++;      $num ++;
     $i = $num%2;      $i = $num%2;
     $output .= &Apache::lonhtmlcommon::row_title($lt{'subj'},undef,'LC_oddrow_value').      $output .= &Apache::lonhtmlcommon::row_title($html_lt{'secn'},undef,$css[$i]);
                '  <input type="text" size="40" name="subject" />'."\n".      if ($sectionlist) {
           $output .= "<select name=\"section\"\n>".
                      "  <option value=\"\" selected=\"selected\">$html_lt{'sele'}</option>\n";
           foreach my $id (sort(keys(%groupid))) {
               if ($id eq $groupid{$id} || $groupid{$id} eq '') {
                   $output .= "  <option value=".
                              &HTML::Entities::encode($id,'"<>&').
                              " >$id</option>\n";
               } else {
                   $output .= "  <option value=".
                              &HTML::Entities::encode($id,'"<>&').
                              " >$id - ($html_lt{'lsec'}: $groupid{$id})</option>\n";
               }
           }
           $output .= "</select>";
       } else {
           $output .= '<input type="text" name="section" size="10" />'."\n";
       }
       $output .= &Apache::lonhtmlcommon::row_closure();
       $num ++;
       $i = $num%2; 
       $output .= &Apache::lonhtmlcommon::row_title(
                      '<span title="'.&mt('required').'">'.
                      $html_lt{'subj'}.' <span class="LC_info">*</span></span>'
                     ,undef,'LC_oddrow_value').
                  '<input type="text" size="40" name="subject" />'."\n".
                &Apache::lonhtmlcommon::row_closure().                 &Apache::lonhtmlcommon::row_closure().
                &Apache::lonhtmlcommon::row_title($lt{'detd'},undef,'LC_evenrow_value').                 &Apache::lonhtmlcommon::row_title(
                '  <textarea rows="10" cols="45" name="description" wrap="virtual"></textarea>'.                     '<span title="'.&mt('required').'">'.
                      $html_lt{'detd'}.' <span class="LC_info">*</span></span>'
                     ,undef,'LC_evenrow_value').
                  '<textarea rows="10" cols="45" name="description" style="word-wrap:normal;">'.
                  '</textarea>'."\n".
                &Apache::lonhtmlcommon::row_closure();                 &Apache::lonhtmlcommon::row_closure();
     $num ++;      $num ++;
     $i = $num%2;       $i = $num%2; 
     if (($env{'user.name'} =~ /^$match_username$/) && (!$public)) {      if ($knownuser) {
         $output .= &Apache::lonhtmlcommon::row_title($lt{'opfi'},undef,$css[$i]).          if ($homeserver) {
                    ' <input type="file" name="screenshot" size="20" /><br />'.$lt{'uplf'}."\n".              $output .= &Apache::lonhtmlcommon::row_title($html_lt{'opfi'},undef,$css[$i])
         &Apache::lonhtmlcommon::row_closure();                  .' <input type="file" name="screenshot" class="flUpload" size="20" />'
         $num ++;                  .'<input type="hidden" id="free_space" value="1048576" />'
         $i = $num%2;                   .'<br />'."\n".$html_lt{'uplf'}."\n"
                   .&Apache::lonhtmlcommon::row_closure();
               $num ++;
               $i = $num%2;
           }
       } else {
           if ($captcha_form) {
               $output .= &Apache::lonhtmlcommon::row_title(
                              '<span title="'.&mt('required').'">'.
                              &mt('Validation').
                              ' <span class="LC_info">*</span></span>'
                         ,undef,$css[$i]).
                          $captcha_form."\n".
                          &Apache::lonhtmlcommon::row_closure();
               $num ++;
               $i = $num%2;
           }
     }      }
     $output .= &Apache::lonhtmlcommon::row_title($lt{'fini'},undef,$css[$i]);      $output .= &Apache::lonhtmlcommon::row_title($html_lt{'fini'},undef,$css[$i]);
     $output .= <<END;      $output .= <<END;
              <table border="0" cellpadding="8" cellspacing="0">               <table border="0" cellpadding="8" cellspacing="0">
               <tr>                <tr>
                <td>                 <td>
                 <input type="hidden" name="command" value="process" />                  <input type="hidden" name="command" value="process" />
                 <input type="button" value="$lt{'subm'}" onclick="validate()" /> &nbsp;                  <input type="button" value="$html_lt{'subm'}" onclick="validate()" /> &nbsp;
                </td>                 </td>
                <td>&nbsp;</td>                 <td>&nbsp;</td>
                <td>                 <td>
                 <input type="reset" value="$lt{'clfm'}" />                  <input type="reset" value="$html_lt{'clfm'}" />
                </td>                 </td>
               </tr>                </tr>
              </table>               </table>
Line 309  END Line 564  END
   
 sub print_request_receipt {  sub print_request_receipt {
     my ($r,$url,$function) = @_;      my ($r,$url,$function) = @_;
       my $public;
       if (($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) {
           $public = 1;
       }
       unless (($env{'user.name'} =~ /^$match_username$/) && (!$public)) {
           my $lonhost = $r->dir_config('lonHostID');
           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,}));
               if ($r->uri eq '/adm/helpdesk') {
                   &print_header($r,$url,'process');
               }
               $r->print(
                   '<h2>'.&mt('Support request failed').'</h2>'.
                         &Apache::lonhtmlcommon::confirm_success(
                           &mt('Validation of the code you entered failed.'),1).
                   '<br /><br />'.
                   &Apache::lonhtmlcommon::actionbox([
                       &mt('[_1]Go back[_2] and try again',
                           '<a href="javascript:history.go(-1)">','</a>')]).
                         &Apache::loncommon::end_page());
               return;
           }
       }
     my @ENVvars = ('HTTP_HOST','HTTP_USER_AGENT','REMOTE_ADDR','SERVER_ADDR','SERVER_NAME');      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 @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');
Line 347  sub print_request_receipt { Line 633  sub print_request_receipt {
         }          }
     }      }
     my $reporttime = &Apache::lonlocal::locallocaltime(time);      my $reporttime = &Apache::lonlocal::locallocaltime(time);
     my @formvars = ('username','email','uname','udom','sourceurl','phone',      my @formvars = ('username','email','uname','udom','sourceurl','phone','section','coursecode','title','subject','description','screenshot');
                     'subject','description','screenshot');  
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},\@formvars);      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},\@formvars);
       my $coursecode = $env{'form.coursecode'};
       if ($coursecode eq '') {
           my $totcodes = 0;
           my %coursecodes;
           $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$defdom,$totcodes);
           my @standardnames = &Apache::loncommon::get_standard_codeitems();
           if ($totcodes > 0) {
               my $noregexps = 1;
               $coursecode = 
                   &Apache::courseclassifier::instcode_from_selectors($defdom,$noregexps);
           } 
           if ($coursecode eq '') {
               foreach my $item (@standardnames) {
                   if ((defined($env{'form.'.$item})) && ($env{'form.'.$item} ne '-1')) {
                       $coursecode .= $env{'form.'.$item};
                   }
               }
           }
       }
     my %lt = &Apache::lonlocal::texthash (      my %lt = &Apache::lonlocal::texthash (
                  username    => 'Name',                   username    => 'Name',
                  email       => 'E-mail',                   email       => 'E-mail',
                  cc          => 'Cc',                   cc          => 'Cc',
                  user        => 'Username/domain',                   user        => 'Username/domain',
                  phone       => 'Phone',                   phone       => 'Phone',
                    crsi        => 'Course Information',
                  subject     => 'Subject',                   subject     => 'Subject',
                  description => 'Description',                   description => 'Description',
                  sourceurl   => 'URL',                   sourceurl   => 'URL',
                  date        => 'Date/Time',                   date        => 'Date/Time',
                    secn        => 'Section',
                  warn        => 'Warning: Problem with support e-mail address',                   warn        => 'Warning: Problem with support e-mail address',
                  your        => 'Your support request contained the following information',                   your        => 'Your support request contained the following information',
                    sect        => 'section',
                  info        => 'Information supplied',                   info        => 'Information supplied',
                  adin        => 'Additional information recorded',                   adin        => 'Additional information recorded',
     );      );
   
     my (@ok_ccs,@bad_ccs,$badccmsg,$okcclist);      my (@ok_ccs,@bad_ccs,$badccmsg,$okcclist,$homeserver);
     if ((defined($env{'user.name'})) && (defined($env{'form.cc'}))) {      unless ($public) {
           if (($env{'user.name'} ne '') && ($env{'user.domain'} ne '')) {
               $homeserver = &Apache::lonnet::homeserver($env{'user.name'},
                                                         $env{'user.domain'});
           }
       }
   
       if (($homeserver) && (defined($env{'form.cc'}))) {
         my @ccs;          my @ccs;
         if ($env{'form.cc'} =~ /,/) {          if ($env{'form.cc'} =~ /,/) {
             @ccs = split(/,/,$env{'form.cc'});              @ccs = split(/,/,$env{'form.cc'});
Line 393  sub print_request_receipt { Line 708  sub print_request_receipt {
            $okcclist = join(', ',@ok_ccs);              $okcclist = join(', ',@ok_ccs); 
         }           } 
         if (@bad_ccs == 1) {          if (@bad_ccs == 1) {
             $badccmsg .= '<br />'.&mt('The following Cc e-mail address is invalid: ').$bad_ccs[0];              if ($bad_ccs[0] ne '') {
                   $badccmsg .= '<br />'.&mt('The following Cc e-mail address is invalid: ').&Apache::loncommon::cleanup_html($bad_ccs[0]);
               }
         } elsif (@bad_ccs > 1) {          } elsif (@bad_ccs > 1) {
             my $bad_cc_string = join(', ',@bad_ccs);              $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: ').$bad_cc_string;  
         }          }
     }      }
     $env{'form.user'} = "'".$env{'form.uname'}.':'.$env{'form.udom'}."'";      $env{'form.user'} = "'".$env{'form.uname'}.':'.$env{'form.udom'}."'";
       $env{'form.crsi'} = $env{'form.title'}.' - '.$coursecode.' - '.$lt{'sect'}.': '.$env{'form.section'};
     my $supportmsg = <<END;      my $supportmsg = <<END;
 $lt{'username'}: $env{'form.username'}  $lt{'username'}: $env{'form.username'}
 $lt{'email'}: $env{'form.email'}  $lt{'email'}: $env{'form.email'}
 $lt{'cc'}: $okcclist  $lt{'cc'}: $okcclist
 $lt{'user'}: $env{'form.user'}  $lt{'user'}: $env{'form.user'}
 $lt{'phone'}: $env{'form.phone'}  $lt{'phone'}: $env{'form.phone'}
   $lt{'crsi'}: $env{'form.crsi'}
 $lt{'subject'}: $env{'form.subject'}  $lt{'subject'}: $env{'form.subject'}
 $lt{'description'}: $env{'form.description'}  $lt{'description'}: $env{'form.description'}
 $lt{'sourceurl'}: $env{'form.sourceurl'}  $lt{'sourceurl'}: $env{'form.sourceurl'}
Line 413  $lt{'date'}: $reporttime Line 731  $lt{'date'}: $reporttime
   
 END  END
     my $displaymsg;      my $displaymsg;
     foreach my $item ('username','email','cc','user','phone','subject',      foreach my $item ('username','email','cc','user','phone','crsi','subject','description','sourceurl') {
                       'description','sourceurl') {  
         if ($env{'form.'.$item} ne '') {          if ($env{'form.'.$item} ne '') {
             if ($item eq 'description') {              if ($item eq 'description') {
                 my $descrip = $env{'form.description'};                  my $descrip = $env{'form.description'};
                 $descrip =  &cleanup_html($descrip);                  $descrip =  &Apache::loncommon::cleanup_html($descrip);
                 $descrip =~ s|[\n\r\f]|<br />|g;                  $descrip =~ s|[\n\r\f]|<br />|g;
                 $displaymsg .=                   $displaymsg .= 
                     '<span class="LC_helpform_receipt_cat">'.                      '<span class="LC_helpform_receipt_cat">'.
Line 426  END Line 743  END
             } elsif ($item eq 'sourceurl') {              } elsif ($item eq 'sourceurl') {
                 my $showurl = $env{'form.sourceurl'};                  my $showurl = $env{'form.sourceurl'};
                 $showurl =~ s/\?.*$//;                  $showurl =~ s/\?.*$//;
                 $showurl =  &cleanup_html($showurl);                  $showurl =  &Apache::loncommon::cleanup_html($showurl);
                 $displaymsg .=                   $displaymsg .= 
                     '<span class="LC_helpform_receipt_cat">'.                      '<span class="LC_helpform_receipt_cat">'.
                     "$lt{$item}</span>: $showurl<br />\n";                      "$lt{$item}</span>: $showurl<br />\n";
             } elsif ($item eq 'cc') {              } elsif ($item eq 'cc') {
                 $displaymsg .=                  if ($okcclist) {
                     '<span class="LC_helpform_receipt_cat">'.                      my $showcclist = &Apache::loncommon::cleanup_html($okcclist);
                     "$lt{$item}</span>: $okcclist<br />\n";                      $displaymsg .=
                           '<span class="LC_helpform_receipt_cat">'.
                           "$lt{$item}</span>: $showcclist<br />\n";
                   }
             } else {              } else {
                 my $showitem = $env{'form.'.$item};                  my $showitem = $env{'form.'.$item};
                 $showitem = &cleanup_html($showitem);                  $showitem = &Apache::loncommon::cleanup_html($showitem);
                 $displaymsg .=                   $displaymsg .= 
                     '<span class="LC_helpform_receipt_cat">'.                      '<span class="LC_helpform_receipt_cat">'.
                     "$lt{$item}</span>: $showitem<br />\n";                      "$lt{$item}</span>: $showitem<br />\n";
Line 457  END Line 777  END
   
     $r->print(<<"END");      $r->print(<<"END");
 $start_page  $start_page
 <form name="logproblem">  <form name="logproblem" action="">
 <input type="hidden" name="command" value="result" />  <input type="hidden" name="command" value="result" />
 </form>  </form>
 END  END
Line 527  END Line 847  END
   
     my $attachmentpath = '';      my $attachmentpath = '';
     my $attachmentsize = '';      my $attachmentsize = '';
     if ((defined($env{'user.name'})) && ($env{'user.name'} ne 'public')      if ((defined($env{'user.name'})) && (!$public)) {
         && ($env{'user.domain'} ne 'public')) {          if ($homeserver && $env{'form.screenshot.filename'}) {
         if ($env{'form.screenshot.filename'}) {  
             $attachmentsize = length($env{'form.screenshot'});              $attachmentsize = length($env{'form.screenshot'});
             if ($attachmentsize > 131072) {              if ($attachmentsize > 1048576) {
                 $displaymsg .= '<br />'.&mt('The uploaded screenshot file ([_1] bytes) included with your request exceeded the maximum allowed size - 128 KB, and has therefore been discarded.',$attachmentsize);                  $displaymsg .= '<br /><span class="LC_warning">'.
                                  &mt('The uploaded screenshot file ([_1] bytes) included with your request exceeded the maximum allowed size - 1 MB, and has therefore been discarded.',$attachmentsize).'</span>';
             } else {              } else {
                 $attachmentpath=&Apache::lonnet::userfileupload('screenshot',undef,'helprequests');                  $attachmentpath=&Apache::lonnet::userfileupload('screenshot',undef,'helprequests');
             }              }
Line 565  END Line 885  END
         }          }
     }      }
     
     my $msg = MIME::Lite->new(      my $cc_string;
                  From    => $from,      if ($homeserver) {
                  To      => $to,          if (@ok_ccs > 0) {
                  Subject => $subject,              $cc_string = join(', ',@ok_ccs);
                  Type    =>'TEXT',          }
                  Data    => $supportmsg,      }
                  );  
     if (@ok_ccs > 0) {  
         my $cc_string = join(', ',@ok_ccs);  
         $msg->add("Cc" => $cc_string);  
     }  
     if ($bcc ne '') {  
         $msg->add("Bcc" => $bcc);  
     }  
     $msg->attr("content-type"         => "text/plain");  
     $msg->attr("content-type.charset" => "UTF-8");  
   
     if ($attachmentpath) {  
         my ($type, $encoding) = MIME::Types::by_suffix($attachmentpath);  
         $msg->attach(Type     => $type,  
                      Path     => $attachmentpath,  
                      Filename => $fname  
                      );  
   
     } else {      my $attachment_text;
       unless ($homeserver && $attachmentpath) {
         my $envdata = '';          my $envdata = '';
         foreach my $var (@cookievars) {          foreach my $var (@cookievars) {
             $envdata .= "$var: $cookies{$var}\n";              $envdata .= "$var: $cookies{$var}\n";
Line 603  END Line 907  END
         foreach my $var (@loncvars) {          foreach my $var (@loncvars) {
             $envdata .= "$var: $env{$var}\n";              $envdata .= "$var: $env{$var}\n";
         }          }
         $msg->attach(Type => 'TEXT',          $attachment_text = $envdata;
                      Data => $envdata);  
     }      }
       
 ### Send it:      # Compose and send a MIME email
     $msg->send('sendmail');      &Apache::loncommon::mime_email($from, $to, $subject, $supportmsg, $cc_string, $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 655  sub print_header { Line 959  sub print_header {
         $helpdesk_link = '<a href="/adm/helpdesk">';          $helpdesk_link = '<a href="/adm/helpdesk">';
     }      }
     my %lt = &Apache::lonlocal::texthash (      my %lt = &Apache::lonlocal::texthash (
                                            login => 'Log-in help',                                             login    => 'Log-in help',
                                            ask   => 'Ask helpdesk',                                             ask      => 'Ask helpdesk',
                                            getst => 'Getting started guide',                                             getst    => 'Getting started guide',
                                            back =>  'Back to last location',                                             back     =>  'Back to last location',
                                            headline => 'help/support',                                             headline => 'help/support',
                                              stud     => 'Students',
                                              ifyo     => 'If your problem is still unresolved, the form below can be used to send a question to the LON-CAPA helpdesk.',
                                              cont     => 'Contact your instructor instead.',
                                          );                                           );
     my ($getstartlink,$reviewtext);      my ($getstartlink,$reviewtext);
     if (-e $Apache::lonnet::perlvar{'lonDocRoot'}.'/adm/gettingstarted.html') {      if (-e $Apache::lonnet::perlvar{'lonDocRoot'}.'/adm/gettingstarted.html') {
Line 668  sub print_header { Line 975  sub print_header {
     } else {      } else {
         $reviewtext = &mt('Please review the information in "Log-in help" if you are unable to log-in.');          $reviewtext = &mt('Please review the information in "Log-in help" if you are unable to log-in.');
     }      }
       my $linkback;
     if ($origurl eq '') {      if ($origurl eq '') {
         $origurl = 'javascript:history.go(-1)';          $linkback = 'javascript:history.go(-1)';
       } else {
           $linkback = &HTML::Entities::encode($origurl,'"<>&');
     }      }
     $r->print(<<END);      my $loginhelp = &Apache::lonauth::loginhelpdisplay();
 <table width="620" border="0" cellspacing="0" cellpadding="0" height="55">   <tr height="50">    <td width='5'>&nbsp;</td>      if ($loginhelp eq '') {
    <td>          $loginhelp = '/adm/loginproblems.html';
       }
       $r->print(<<"END");
   <table width="620" border="0" cellspacing="0" cellpadding="0" style="height: 55px;">
    <tr>
      <td width="5" height="50">&nbsp;</td>
      <td height="50">
     <fieldset>      <fieldset>
       <legend>        <legend>
         <img src="$location/lonIcons/minilogo.gif" height="20" width="29" valign="bottom" />          <img src="$location/lonIcons/minilogo.gif" height="20" width="29" alt="logo" style="vertical-align:bottom" />
         LON-CAPA $lt{'headline'}          LON-CAPA $lt{'headline'}
       </legend>        </legend>
  <table id="LC_helpmenu_links">   <table id="LC_helpmenu_links">
    <tr>     <tr>
     <td align="center"><span class="LC_nobreak"><img src="$location/help/help.png" border="0" alt="($lt{'login'})" valign="middle" />&nbsp;<b><a href="/adm/loginproblems.html">$lt{'login'}</a></b>&nbsp;</span></td>      <td align="center"><span class="LC_nobreak"><img src="$location/help/help.png" border="0" alt="($lt{'login'})" style="vertical-align:middle" />&nbsp;<b><a href="$loginhelp">$lt{'login'}</a></b>&nbsp;</span></td>
     <td align="center"><span class="LC_nobreak">&nbsp;<b>$helpdesk_link<img src="$location/lonIcons/helpdesk.gif" border="0" alt="($lt{'ask'})" valign="middle" />&nbsp;$lt{'ask'}</a></b>&nbsp;</span></td>$getstartlink      <td align="center"><span class="LC_nobreak">&nbsp;<b>$helpdesk_link<img src="$location/lonIcons/helpdesk.gif" border="0" alt="($lt{'ask'})" style="vertical-align:middle" />&nbsp;$lt{'ask'}</a></b>&nbsp;</span></td>$getstartlink
     <td align="center"><span class="LC_nobreak">&nbsp;<b><a href="$origurl" target="_top"><img src="$location/lonIcons/move_up.gif" border="0" alt="($lt{'back'})" valign="middle" />&nbsp;$lt{'back'}</a></b>&nbsp;</span></td>      <td align="center"><span class="LC_nobreak">&nbsp;<b><a href="$linkback" target="_top"><img src="$location/lonIcons/move_up.gif" border="0" alt="($lt{'back'})" style="vertical-align:middle" />&nbsp;$lt{'back'}</a></b>&nbsp;</span></td>
    </tr>     </tr>
  </table>   </table>
 </fieldset>  </fieldset>
   </td>    </td>
   <td width='5'>&nbsp;</td>    <td width="5">&nbsp;</td>
  </tr>   </tr>
  <tr height='5'>   <tr>
   <td colspan='3' height='5'>&nbsp;</td>    <td colspan="3" height="5">&nbsp;</td>
  </tr>   </tr>
 END  END
     if  ($command ne 'process') {      if  ($command ne 'process') {
         $r->print('          my $stuwarn = &mt('Do [_1]not[_2] use this form to ask about course content.',
                             '<b>','</b>');
           $r->print(<<"END");
  <tr>   <tr>
   <td colspan="3">'.$reviewtext.' '    <td colspan="3">$reviewtext 
 .&mt('If your problem is still unresolved, the form below can be used to send a question to the LON-CAPA helpdesk.').'<br />'    $lt{'ifyo'}
 .'<font size="-1"><b>'.&mt('Students').'</b>: '.&mt('Do <b>not</b> use this form to ask questions about course content.').' '  <p class="LC_info">
 .&mt('Contact your instructor instead.')  <b>$lt{'stud'}:</b> 
 .'</font><br /><br />  $stuwarn $lt{'cont'}
   </p><br />
   </td>    </td>
  </tr>');   </tr>
   END
     }      }
     $r->print('      $r->print('
 </table>');  </table>');
Line 713  END Line 1033  END
 sub get_domain {  sub get_domain {
     my $codedom;      my $codedom;
     if (exists($env{'form.codedom'})) {      if (exists($env{'form.codedom'})) {
         $codedom = $env{'form.codedom'};          if (&Apache::lonnet::domain($env{'form.codedom'}) ne '') {
     } elsif ($env{'request.course.id'}) {              return $env{'form.codedom'};
           }
       }
       if ($env{'request.course.id'}) {
         $codedom = $env{'course.'.$env{'request.course.id'}.'.domain'};          $codedom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     } elsif ($env{'request.role.domain'}) {      } elsif ($env{'request.role.domain'}) {
         $codedom = $env{'request.role.domain'};          $codedom = $env{'request.role.domain'};
Line 724  sub get_domain { Line 1047  sub get_domain {
     return $codedom;      return $codedom;
 }  }
   
 sub cleanup_html {  
     my ($incoming) = @_;  
     my $outgoing;  
     if ($incoming ne '') {  
         $outgoing = $incoming;  
         $outgoing =~ s/\#/&#035;/g;  
         $outgoing =~ s/\&/&#038;/g;  
         $outgoing =~ s/</&#060;/g;  
         $outgoing =~ s/>/&#062;/g;  
         $outgoing =~ s/\(/&#040/g;  
         $outgoing =~ s/\)/&#041;/g;  
         $outgoing =~ s/"/&#034;/g;  
         $outgoing =~ s/'/&#039;/g;  
         $outgoing =~ s/\$/&#036;/g;  
     }  
     return $outgoing;  
 }  
   
 1;  1;

Removed from v.1.66.6.2  
changed lines
  Added in v.1.85


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.