Diff for /loncom/interface/lonerrorhandler.pm between versions 1.4 and 1.20

version 1.4, 2003/08/05 12:52:23 version 1.20, 2008/11/21 20:17:11
Line 26 Line 26
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
   
   
   
 package Apache::lonerrorhandler;  package Apache::lonerrorhandler;
   
 use strict;  use strict;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::loncommon;  use Apache::loncommon();
   use Apache::lonnet;
   use Apache::lonmsg();
   use Apache::lonacc();
   use Apache::lonlocal;
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
     $r->content_type('text/html');      &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
       &Apache::lonacc::get_posted_cgi($r);
       if (!$Apache::lonlocal::lh) {
           &Apache::lonlocal::get_language_handle($r);
       }
       my $title = $env{'form.sendinfo'} ? 'Sending Error Report'
                                         : 'Could Not Process Request';
       $r->print(&Apache::loncommon::start_page($title));
   
       if ($env{'form.sendinfo'}) {
    my $repro='no';
   # ------------------------------------------------------------------ Mail stuff
    if ($env{'form.reproducible'}) {
       $repro='yes';
    }
           my %lt = &Apache::lonlocal::texthash (
                        msg => 'LON-CAPA Error Message',
                        rep => 'Reproducible',
                        ver => 'Version',
                        syl => 'Syllabus',
                        pri => 'Prior Action',
                        gue => 'Guesses',
                        env => 'Environment',
                    );
    my $message=(<<ENDMESSAGE);
   $lt{'msg'}
   $lt{'rep'}: $repro
   $lt{'ver'}: $env{'form.version'}
   $lt{'syl'}:
   $env{'form.syllabus'}
   
   $lt{'pri'}:
   $env{'form.prioraction'}
   
   $lt{'gue'}:
   $env{'form.guesses'}
   
   $lt{'env'}:
   $env{'form.environment'}
   ENDMESSAGE
           my $sysmail = $r->dir_config('lonSysEMail');
           my $defdom = $r->dir_config('lonDefDomain');
           my $origmail = $r->dir_config('lonAdmEMail');
           my $recipients = &Apache::loncommon::build_recipient_list($sysmail,
                                                'errormail',$defdom,$origmail);
           if ($recipients ne '') {
               &Apache::lonmsg::sendemail($recipients,'ERROR REPORT',$message);
       $r->print('<h2>'.&mt('Report submitted').'</h2>'.&mt('Thank you!'));
           } else {
               $r->print('<h2>'.&mt('Warning: Report not submitted').'</h2>'.
                         '<span class="LC_error">'
                        .&mt('The administrators of the domain [_1] have not set'
                            .' any e-mail addresses for receipt of your error report.'
                            ,'<tt>'.$defdom.'</tt>')
                        .'</span>');
           }
       } else {
 # ------------------------------------------------------------- Get environment  # ------------------------------------------------------------- Get environment
      my $envkey;   my $envkey;
      my $env='';   my $env='';
     my $syllabus='';
      foreach $envkey (sort keys %ENV) {  
   $env.="$envkey: $ENV{$envkey}\n";   foreach $envkey (sort(keys(%env))) {
      }      $env.="$envkey: $env{$envkey}\n";
    }
      $env=~s/\"/\'\'/g;   foreach $envkey (sort(keys(%ENV))) {
      my $recipients=$r->dir_config('lonAdmEMail').','.      $env.="$envkey: $ENV{$envkey}\n";
                      $r->dir_config('lonSysEMail');       if ($envkey=~/REDIRECT\_(REQUEST_URI|SCRIPT|ERROR)/) {
    $syllabus.="\n$1:\n$ENV{$envkey}";
      my $version=$r->dir_config('lonVersion');      }
    }
      my $req=$r->as_string();  
      $req=~s/\"/\'\'/g;   $env=~s/\"/\'\'/g;
   
     my $bodytag=&Apache::loncommon::bodytag('Could Not Process Request');   my $version=$r->dir_config('lonVersion');
 # --------------------------------------------------- Print login screen header  
     $r->print(<<ENDDOCUMENT);  # ----------------------------------------------------------- Print error form
 <html>   $r->print('<h2 class="LC_error">'
 <head>  .&mt('Somewhere something went wrong')
 <title>The LearningOnline Network with CAPA</title>  .'</h2>'
 </head>  .'<p>'.&mt('Please help us to find out what.').'</p>'
 $bodytag  .'<p>'.&mt('Please take a moment to fill out the form below.').' '
 <h2>Somewhere something went wrong - please help us to find out what.</h2>  .&mt('Your information, together with internal debugging information, '
 Please take a moment to fill out the form below. Your information, together      .'will be emailed to the system and server administrators.')
 with internal debugging information, will be emailed to the system and server  .'</p>
 administrators.  <form action="/adm/errorhandler" method="post">
 <form action="mailto:$recipients" method=get enctype="text/plain">  <h3>'.&mt('Please describe what you did just before this screen came up').'</h3>
 <input type=submit value="Send Information">  <textarea name="prioraction" cols="50" rows="5">
 <h3>Please describe what you did just before this screen came up</h3>  
 <input type=hidden name=req value="$req">  
 <textarea name=prioraction cols=50 rows=5>  
 </textarea>  </textarea>
 <h3>Is this problem reproducible?</h3>  <h3>'.&mt('Is this problem reproducible?').'</h3>
 <input type=checkbox name=reproducible value=yes> Yes!  <label>
 <h3>Do you have any guesses why this might have happened?</h3>  <input type="checkbox" name="reproducible" value="yes" /> '.&mt('Yes!').'
 <textarea name=guesses cols=50 rows=5>  </label>
   <h3>'.&mt('Do you have any guesses why this might have happened?').'</h3>
   <textarea name="guesses" cols="50" rows="5">
 </textarea>  </textarea>
 <input type=hidden name=version value="$version">  <input type="hidden" name="version" value="'.$version.'" />
 <input type=hidden name=environment value="$env"><p>  <input type="hidden" name="environment" value="'.$env.'" />
 <input type=submit value="Send Information">  <input type="hidden" name="syllabus" value="'.$syllabus.'" />
   <input type="hidden" name="sendinfo" value="1" />
   <p>
   <input type="submit" title="Send Information" value="'.&mt('Send').'" />
   </p>
 </form>  </form>
 <h1>Thank you for your help!</h1>  <h1>'.&mt('Thank you for your help!').'</h1>
 </body>  <div><font size="-1">
 </html>  '.&mt('Internal info:').
 ENDDOCUMENT  '<pre>'.
   $syllabus.'
   </pre>
   </font></div>
   ');
 # -------------------------- Better terminate this in case something was sticky  # -------------------------- Better terminate this in case something was sticky
     $r->child_terminate();  
   
           $r->child_terminate();
       }
       $r->print(&Apache::loncommon::end_page());
     return OK;      return OK;
 }   }
   
 1;  1;
 __END__  __END__
   
   
   =pod
   
   =head1 NAME
   
   Apache::lonerrorhandler.pm
   
   =head1 SYNOPSIS
   
   Handles errors.
   
   This is part of the LearningOnline Network with CAPA project
   described at http://www.lon-capa.org.
   
   =head1 OVERVIEW
   
   None
   
   =cut
   

Removed from v.1.4  
changed lines
  Added in v.1.20


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