Diff for /loncom/homework/lonsimpleproblemedit.pm between versions 1.5 and 1.13

version 1.5, 2003/09/09 19:39:04 version 1.13, 2004/12/14 18:24:17
Line 32  use strict; Line 32  use strict;
 use Apache::Constants qw(:common :http);  use Apache::Constants qw(:common :http);
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::lonlocal;
   use Apache::lonnavmaps;
   
 my %qparms;  my %qparms;
 my $prefix;  my $prefix;
Line 49  sub evaloptionhash { Line 51  sub evaloptionhash {
 }  }
   
 sub rawrendering {  sub rawrendering {
     my ($request,$uri)=@_;      my ($symb)=@_;
     my $problem=&Apache::lonnet::getfile      my %data=('show_errors'=>'on',
                             (&Apache::lonnet::filelocation('',$uri));        'simple_edit_button' => 'off',
     &Apache::lonnet::devalidatecourseresdata(        'devalidatecourseresdata'=>'on');
      $ENV{'course.'.$ENV{'request.course.id'}.'.num'},      return &Apache::loncommon::get_student_view($symb,time,time,
      $ENV{'course.'.$ENV{'request.course.id'}.'.domain'});   $ENV{'request.course.id'},
     my $uname=$ENV{'user.name'};   'web',\%data);
     my $udom=$ENV{'user.domain'};  
     $ENV{'user.name'}=time;  
     $ENV{'user.domain'}=time;  
     my $result = &Apache::lonxml::xmlparse($request,'web', $problem);  
     $ENV{'user.name'}=$uname;  
     $ENV{'user.domain'}=$udom;  
     $result=~s/^.*\<body[^\>]*\>//si;  
     $result=~s/\<\/body[^\>]*\>.*$//si;  
     return $result;  
 }  }
   
 sub questiontext {  sub questiontext {
     my $text=$qparms{$prefix.'questiontext'};      my $text=$qparms{$prefix.'questiontext'};
       my $qt=&mt('Question Text');
     return (<<ENDQUESTION);      return (<<ENDQUESTION);
 <table bgcolor="#dddd22" cellspacing="4" cellpadding="2">  <table bgcolor="#dddd22" cellspacing="4" cellpadding="2">
 <tr><td><b>Question Text</b><br />  <tr><td><b>$qt</b><br />
 <textarea name="questiontext" cols="80" rows="8">$text</textarea>  <textarea name="questiontext" cols="80" rows="8">$text</textarea>
 </td></tr>  </td></tr>
 </table>  </table>
Line 81  ENDQUESTION Line 75  ENDQUESTION
   
 sub hint {  sub hint {
     my $text=$qparms{$prefix.'hinttext'};      my $text=$qparms{$prefix.'hinttext'};
       my $ht=&mt('Hint Text');
     return (<<ENDHINT);      return (<<ENDHINT);
 <table bgcolor="#accacc" cellspacing="4" cellpadding="2">  <table bgcolor="#accacc" cellspacing="4" cellpadding="2">
 <tr><td><b>Hint Text</b><br />  <tr><td><b>$ht</b><br />
 <textarea name="hinttext" cols="80" rows="4">$text</textarea>  <textarea name="hinttext" cols="80" rows="4">$text</textarea>
 </td></tr>  </td></tr>
 </table>  </table>
Line 116  sub foil { Line 111  sub foil {
     my $selectposition=&Apache::loncommon::select_form      my $selectposition=&Apache::loncommon::select_form
                                ($position,'position'.$number,%positions);                                 ($position,'position'.$number,%positions);
     my $text=$qparms{$prefix.'text'.$number};      my $text=$qparms{$prefix.'text'.$number};
       my %lt=&Apache::lonlocal::texthash('foil'  => 'Foil',
          'value' => 'Value',
          'pos'   => 'Position',
          'text'  => 'Text');
   
     return (<<ENDFOIL);      return (<<ENDFOIL);
 <table bgcolor="#dd55ff" cellspacing="4" cellpadding="2">  <table bgcolor="#dd55ff" cellspacing="4" cellpadding="2">
 <tr><td colspan="2"><b>Foil</b></td></tr>  <tr><td colspan="2"><b>$lt{'foil'}</b></td></tr>
 <tr><td>Value: $selectvalue</td><td>Position: $selectposition</td></tr>  <tr><td>$lt{'value'}: $selectvalue</td><td>$lt{'pos'}: $selectposition</td></tr>
 <tr><td colspan="2">Text:<br />  <tr><td colspan="2">$lt{'text'}:<br />
 <textarea name="text$number" cols="80" rows="4">$text</textarea>  <textarea name="text$number" cols="80" rows="4">$text</textarea>
 </td></tr>  </td></tr>
 </table>  </table>
Line 128  sub foil { Line 128  sub foil {
 ENDFOIL  ENDFOIL
 }  }
   
   sub get_parent_uri {
       my ($cur_symb)=@_;
       my $navmap = Apache::lonnavmaps::navmap->new();
       my $it = $navmap->getIterator(undef, undef, undef, 1);
       while ( my $res=$it->next()) {
    if (ref($res) &&  $res->symb() eq  $cur_symb) { last; }
       }
       my ($src,$symb,$anchor)=&Apache::lonnavmaps::getLinkForResource($it->getStack());
       if (defined($anchor)) { $anchor='#'.$anchor; }
       return $src.'?symb='.&Apache::lonnet::escape($symb).$anchor;
   }
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
   
     if ($r->header_only) {      if ($r->header_only) {
         $r->content_type('text/html');          &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;          $r->send_http_header;
         return OK;          return OK;
     }      }
Line 142  sub handler { Line 154  sub handler {
  return HTTP_NOT_ACCEPTABLE;    return HTTP_NOT_ACCEPTABLE; 
     }      }
 # ----------------------------------------------------------------- Send header  # ----------------------------------------------------------------- Send header
     $r->content_type('text/html');      &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;      $r->send_http_header;
 # ----------------------------------------------------- Figure out where we are  # ----------------------------------------------------- Figure out where we are
     my $uri=$r->uri;      my $uri=$r->uri;
     $uri=~s/\/smpedit$//;      $uri=~s/\/smpedit$//;
     my $symb=&Apache::lonnet::symbread($uri);      my $symb=&Apache::lonnet::symbread();
   
 # ------------------------------------------------ Prefix for everything stored  # ------------------------------------------------ Prefix for everything stored
     $prefix=$ENV{'request.course.id'}.'.'.$symb.'.0.';      $prefix=$ENV{'request.course.id'}.'.'.$symb.'.0.';
Line 167  sub handler { Line 179  sub handler {
     }      }
             $ENV{'form.options'}="('".join("','",keys %curoptions)."')";              $ENV{'form.options'}="('".join("','",keys %curoptions)."')";
  }   }
    $ENV{'form.hiddenparts'}='!'.$ENV{'form.questiontype'};
         foreach (keys %ENV) {          foreach (keys %ENV) {
     if ($_=~/^form\.(\w+)$/) {      if ($_=~/^form\.(\w+)$/) {
                 my $parm=$1;                  my $parm=$1;
Line 197  ENDDOCUMENT Line 210  ENDDOCUMENT
     $r->print(&Apache::loncommon::bodytag('Simple Problem Editor'));      $r->print(&Apache::loncommon::bodytag('Simple Problem Editor'));
     if ($symb) {      if ($symb) {
  $r->print('<h1>'.&Apache::lonnet::gettitle($symb).'</h1>');   $r->print('<h1>'.&Apache::lonnet::gettitle($symb).'</h1>');
    $r->print('<table width="100%" bgcolor="#FFFFAA" border="2"><tr><td>'.
                   '<a href="'.&get_parent_uri($symb).'">'.&mt('Student View').'</a> - '.&mt('Note: it can take up to 10 minutes for changes to take effect for all users.').
     &Apache::loncommon::help_open_topic('Caching').'</td></tr></table>');
  $r->print('<table border="2" bgcolor="#FFFFFF" width="100%"><tr><td>'.   $r->print('<table border="2" bgcolor="#FFFFFF" width="100%"><tr><td>'.
                   &rawrendering($r,$uri).                    &rawrendering($symb).
                   '</td></tr></table><br />');                    '</td></tr></table><br />');
         $r->print('<form method="post">');          $r->print('<form method="post">');
 # Question Type          # Question Type        
Line 210  ENDDOCUMENT Line 226  ENDDOCUMENT
         $qtype=$qparms{$prefix.'questiontype'};          $qtype=$qparms{$prefix.'questiontype'};
         unless (defined($qtype)) { $qtype='radio'; }          unless (defined($qtype)) { $qtype='radio'; }
         unless ($questiontypes{$qtype}) { $qtype='radio'; }          unless ($questiontypes{$qtype}) { $qtype='radio'; }
         $r->print('<b>Question Type: '.&Apache::loncommon::select_form          $r->print('<b>'.&mt('Question Type').
     ': '.&Apache::loncommon::select_form
                                ($qtype,'questiontype',%questiontypes).                                 ($qtype,'questiontype',%questiontypes).
 '</b><br /><input type="submit" value="Store Changes" /><p>&nbsp;</p>');    '</b><br /><input type="submit" value="'.&mt('Save and Edit').
     '" /><p>&nbsp;</p>');
 # Question Text  # Question Text
         $r->print(&questiontext());          $r->print(&questiontext());
 # Radio, Option ===  # Radio, Option ===
Line 229  ENDDOCUMENT Line 247  ENDDOCUMENT
             unless ($randomizes{$randomize}) { $randomize='yes'; }              unless ($randomizes{$randomize}) { $randomize='yes'; }
     $r->print(      $r->print(
   '<table bgcolor="#00ee44" cellspacing="4" cellpadding="2">'.    '<table bgcolor="#00ee44" cellspacing="4" cellpadding="2">'.
           '<tr><td>Max number of foils displayed: <input type="text" size="3" name="maxfoils" value="'.$maxfoils.'" />&nbsp;&nbsp;'.            '<tr><td>'.&mt('Max number of foils displayed').
   ': <input type="text" size="3" name="maxfoils" value="'.$maxfoils.'" />&nbsp;&nbsp;'.
       &Apache::loncommon::select_form        &Apache::loncommon::select_form
       ($randomize,'randomize',%randomizes).        ($randomize,'randomize',%randomizes).
   '</td></tr><tr><td bgcolor="#AAAAAA">');    '</td></tr><tr><td bgcolor="#AAAAAA">');
Line 241  ENDDOCUMENT Line 260  ENDDOCUMENT
  $r->print(   $r->print(
   '<table bgcolor="#ffcc22" cellspacing="4" cellpadding="2">'.    '<table bgcolor="#ffcc22" cellspacing="4" cellpadding="2">'.
   '<tr><td><input type="hidden" name="options" value="'.    '<tr><td><input type="hidden" name="options" value="'.
                   $options.'" />Add new option: '.                    $options.'" />'.&mt('Add new option').': '.
           '<input type="text" name="newopt" size="15" />Delete an option: '.            '<input type="text" name="newopt" size="15" />'.
             &mt('Delete an option').': '.
           &Apache::loncommon::select_form('','delopt',('' => '',%optionshash)).            &Apache::loncommon::select_form('','delopt',('' => '',%optionshash)).
           '</td></tr><tr><td>');            '</td></tr><tr><td>');
     }      }
Line 272  ENDDOCUMENT Line 292  ENDDOCUMENT
             unless ($stringtypes{$stringtype}) { $stringtype='cs'; }              unless ($stringtypes{$stringtype}) { $stringtype='cs'; }
     $r->print(      $r->print(
   '<table bgcolor="#00ee44" cellspacing="4" cellpadding="2">'.    '<table bgcolor="#00ee44" cellspacing="4" cellpadding="2">'.
           '<tr><td>Correct answer: <input type="text" size="20" name="stringanswer" value="'.$stringanswer.'" />&nbsp;&nbsp;'.            '<tr><td>'.&mt('Correct answer').': <input type="text" size="20" name="stringanswer" value="'.$stringanswer.'" />&nbsp;&nbsp;'.
       &Apache::loncommon::select_form        &Apache::loncommon::select_form
       ($stringtype,'stringtype',%stringtypes).        ($stringtype,'stringtype',%stringtypes).
   '</td></tr></table><br />');    '</td></tr></table><br />');
Line 281  ENDDOCUMENT Line 301  ENDDOCUMENT
  }   }
 # Store Button  # Store Button
  $r->print(   $r->print(
   '<input type="submit" value="Store Changes" /></form>');    '<input type="submit" value="'.&mt('Save and Edit').'" /></form>');
     } else {      } else {
  $r->print('Could not identify problem.');   $r->print(&mt('Could not identify problem.'));
     }      }
     $r->print('</body></html>');      $r->print('</body></html>');
     return OK;      return OK;

Removed from v.1.5  
changed lines
  Added in v.1.13


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.