Diff for /loncom/interface/lonerrorhandler.pm between versions 1.2 and 1.24

version 1.2, 2001/01/06 14:45:34 version 1.24, 2013/08/12 16:51:58
Line 1 Line 1
 # The LearningOnline Network  # The LearningOnline Network
 # Internal Server Error Handler  # Internal Server Error Handler
 #  #
 # (Login Screen  # $Id$
 # 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14,  
 # 1/14/00,5/29,5/30,6/1,6/29,7/1,11/9 Gerd Kortemeyer)  
 #  #
 # 3/1/1 Gerd Kortemeyer  # Copyright Michigan State University Board of Trustees
 #  #
   # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   #
   # LON-CAPA is free software; you can redistribute it and/or modify
   # it under the terms of the GNU General Public License as published by
   # the Free Software Foundation; either version 2 of the License, or
   # (at your option) any later version.
   #
   # LON-CAPA is distributed in the hope that it will be useful,
   # but WITHOUT ANY WARRANTY; without even the implied warranty of
   # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   # GNU General Public License for more details.
   #
   # You should have received a copy of the GNU General Public License
   # along with LON-CAPA; if not, write to the Free Software
   # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   #
   # /home/httpd/html/adm/gpl.txt
   #
   # 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::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 $defdom = $r->dir_config('lonDefDomain');
           my $sysmail;
           my $notify = 1;
           my %domconfig = &Apache::lonnet::get_dom('configuration',['contacts']);
           if (ref($domconfig{'contacts'}) eq 'HASH') {
               if ($domconfig{'contacts'}{'reporterrors'} == 0) {
                   $notify = 0;
               }
           }
           if ($notify) {
               $sysmail = 'errorrecord@loncapa.org';
           }
           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 (keys(%env)) {
      }              if ($envkey =~ /^form\.(.+)\.filename$/) {
                   my $item = $1;
      $env=~s/\"/\'\'/g;                  if (exists($env{'form.'.$item.'.mimetype'})) {
      my $recipients=$r->dir_config('lonAdmEMail').','.                      if (exists($env{'form.'.$item})) {
                      $r->dir_config('lonSysEMail');                           my $size = (length($env{'form.'.$item}))/(1024.0 * 1024.0);
                           $env{'form.'.$item} = &mt('File (contents not shown) - size was [_1] MB.',sprintf("%.4f",$size));
      my $req=$r->as_string();                      }
      $req=~s/\"/\'\'/g;                  }
               }
 # --------------------------------------------------- Print login screen header          }
     $r->print(<<ENDDOCUMENT);  
 <html>   foreach $envkey (sort(keys(%env))) {
 <head>      $env.="$envkey: $env{$envkey}\n";
 <title>The LearningOnline Network with CAPA</title>   }
 </head>   foreach $envkey (sort(keys(%ENV))) {
 <body bgcolor="#FFFFFF">      $env.="$envkey: $ENV{$envkey}\n";
 <img src="/adm/lonKaputt/lonlogo_broken.gif" align=left>      if ($envkey=~/REDIRECT\_(REQUEST_URI|SCRIPT|ERROR)/) {
 <h1>Sorry!</h1>   $syllabus.="\n$1:\n$ENV{$envkey}";
 <h2>Somewhere something went wrong - please help us to find out what.</h2>      }
 Please take a moment to fill out the form below. Your information, together   }
 with internal debugging information, will be emailed to the system and server  
 administrators.   $env=~s/\"/\'\'/g;
 <form action="mailto:$recipients" method=get enctype="text/plain">  
 <input type=submit value="Send Information">   my $version=$r->dir_config('lonVersion');
 <h3>Please describe what you did just before this screen came up</h3>  
 <input type=hidden name=req value="$req">  # ----------------------------------------------------------- Print error form
 <textarea name=prioraction cols=50 rows=5>   $r->print('<h2 class="LC_error">'
   .&mt('Somewhere something went wrong')
   .'</h2>'
   .'<p>'.&mt('Please help us to find out what.').'</p>'
   .'<p>'.&mt('Please take a moment to fill out the form below.').' '
   .&mt('Your information, together with internal debugging information, '
       .'will be e-mailed to the system and server administrators.')
   .'</p>
   <form action="/adm/errorhandler" method="post">
   <h3>'.&mt('Please describe what you did just before this screen came up').'</h3>
   <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=environment value="$env"><p>  <input type="hidden" name="version" value="'.$version.'" />
 <input type=submit value="Send Information">  <input type="hidden" name="environment" value="'.$env.'" />
   <input type="hidden" name="syllabus" value="'.$syllabus.'" />
   <input type="hidden" name="sendinfo" value="1" />
   <p>
   <input type="submit" title="'.&mt('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.2  
changed lines
  Added in v.1.24


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