Diff for /loncom/homework/inputtags.pm between versions 1.122 and 1.134

version 1.122, 2003/10/30 20:52:54 version 1.134, 2004/03/05 21:31:07
Line 24 Line 24
 # /home/httpd/html/adm/gpl.txt  # /home/httpd/html/adm/gpl.txt
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  
 # 2/19 Guy   
   
 package Apache::inputtags;  package Apache::inputtags;
 use HTML::Entities();  use HTML::Entities();
Line 64  sub initialize_inputtags { Line 62  sub initialize_inputtags {
   @Apache::inputtags::import=();    @Apache::inputtags::import=();
   # list of all import ids seen    # list of all import ids seen
   @Apache::inputtags::importlist=();    @Apache::inputtags::importlist=();
     # just used to note whether we have seen a response that isn't in a part
     $Apache::inputtags::response_with_no_part=0;
 }  }
   
 sub check_for_duplicate_ids {  sub check_for_duplicate_ids {
Line 98  sub end_input { Line 98  sub end_input {
   return '';    return '';
 }  }
   
   sub addchars {
       my ($fieldid,$addchars)=@_;
       my $output='';
       foreach (split(/\,/,$addchars)) {
    $output.='<a href="javascript:void(document.forms.lonhomework.'.
       $fieldid.'.value+=\''.$_.'\')">'.$_.'</a> ';
       }
       return $output;
   }
   
 sub start_textfield {  sub start_textfield {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   my $result = "";    my $result = "";
Line 112  sub start_textfield { Line 122  sub start_textfield {
  if ( $cols eq '') { $cols = 80; }   if ( $cols eq '') { $cols = 80; }
  my $rows = &Apache::lonxml::get_param('rows',$parstack,$safeeval);   my $rows = &Apache::lonxml::get_param('rows',$parstack,$safeeval);
  if ( $rows eq '') { $rows = 10; }   if ( $rows eq '') { $rows = 10; }
  $result= '<textarea wrap="hard" name="HWVAL_'.$resid.'" '.   my $addchars=&Apache::lonxml::get_param('addchars',$parstack,$safeeval);
    $result='';
           if ($addchars) {
       $result.=&addchars('HWVAL_'.$resid,$addchars);
    }
    $result.= '<textarea wrap="hard" name="HWVAL_'.$resid.'" '.
     "rows=\"$rows\" cols=\"$cols\">".$oldresponse;      "rows=\"$rows\" cols=\"$cols\">".$oldresponse;
  if ($oldresponse ne '') {   if ($oldresponse ne '') {
     #get rid of any startup text if the user has already responded      #get rid of any startup text if the user has already responded
Line 135  sub start_textfield { Line 150  sub start_textfield {
     $result.=&Apache::edit::tag_start($target,$token);      $result.=&Apache::edit::tag_start($target,$token);
     $result.=&Apache::edit::text_arg('Rows:','rows',$token,4);      $result.=&Apache::edit::text_arg('Rows:','rows',$token,4);
     $result.=&Apache::edit::text_arg('Columns:','cols',$token,4);      $result.=&Apache::edit::text_arg('Columns:','cols',$token,4);
       $result.=&Apache::edit::text_arg
    ('Click-On Texts (comma sep):','addchars',$token,10);
     my $bodytext=&Apache::lonxml::get_all_text("/textfield",$parser);      my $bodytext=&Apache::lonxml::get_all_text("/textfield",$parser);
     $result.=&Apache::edit::editfield($token->[1],$bodytext,'Text you want to appear by default:',80,2);      $result.=&Apache::edit::editfield($token->[1],$bodytext,'Text you want to appear by default:',80,2);
   } elsif ($target eq 'modified') {    } elsif ($target eq 'modified') {
     my $constructtag=&Apache::edit::get_new_args($token,$parstack,      my $constructtag=&Apache::edit::get_new_args($token,$parstack,
  $safeeval,'rows','cols');     $safeeval,'rows','cols','addchars');
     if ($constructtag) {      if ($constructtag) {
       $result = &Apache::edit::rebuild_tag($token);        $result = &Apache::edit::rebuild_tag($token);
     } else {      } else {
Line 193  sub start_textline { Line 210  sub start_textline {
       }        }
       my $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$id.submission"});        my $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$id.submission"});
       if ($Apache::lonhomework::type ne 'exam') {        if ($Apache::lonhomework::type ne 'exam') {
         $result= '<input type="text" name="HWVAL_'.$id.'" value="'.   my $addchars=&Apache::lonxml::get_param('addchars',$parstack,$safeeval);
    $result='';
           if ($addchars) {
       $result.=&addchars('HWVAL_'.$id,$addchars);
    }
           $result.= '<input type="text" name="HWVAL_'.$id.'" value="'.
     $oldresponse.'" size="'.$size.'" maxlength="'.$maxlength.'" />';      $oldresponse.'" size="'.$size.'" maxlength="'.$maxlength.'" />';
       }        }
     } else {      } else {
Line 203  sub start_textline { Line 225  sub start_textline {
     }      }
   } elsif ($target eq 'edit') {    } elsif ($target eq 'edit') {
     $result=&Apache::edit::tag_start($target,$token);      $result=&Apache::edit::tag_start($target,$token);
     $result.=&Apache::edit::text_arg('Size:','size',$token,'5')."</td></tr>";      $result.=&Apache::edit::text_arg('Size:','size',$token,'5').
    &Apache::edit::text_arg
    ('Click-On Texts (comma sep):','addchars',$token,10)."</td></tr>";
     $result.=&Apache::edit::end_table;      $result.=&Apache::edit::end_table;
   } elsif ($target eq 'modified') {    } elsif ($target eq 'modified') {
     my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval,'size');      my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval,'size','addchars');
     if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }      if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }
   } elsif ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {    } elsif ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {
       my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval);        my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval);
Line 347  sub decideoutput { Line 371  sub decideoutput {
    $ENV{'request.course.id'}.     $ENV{'request.course.id'}.
    '.disable_receipt_display'} eq 'yes') {      '.disable_receipt_display'} eq 'yes') { 
       $message.=(($target eq 'web')?'<br />':' ').        $message.=(($target eq 'web')?'<br />':' ').
   &mt('Your receipt is').' '.&Apache::lonnet::receipt().    &mt('Your receipt is').' '.&Apache::lonnet::receipt($Apache::inputtags::part).
        (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):'');         (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):'');
   }    }
       }        }
Line 374  sub decideoutput { Line 398  sub decideoutput {
    $ENV{'request.course.id'}.     $ENV{'request.course.id'}.
    '.disable_receipt_display'} eq 'yes') {      '.disable_receipt_display'} eq 'yes') { 
       $message.=(($target eq 'web')?'<br />':' ').        $message.=(($target eq 'web')?'<br />':' ').
   'Your receipt is '.&Apache::lonnet::receipt().    'Your receipt is '.&Apache::lonnet::receipt($Apache::inputtags::part).
        (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):'');         (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):'');
   }    }
   $bgcolor=$possiblecolors{'correct'};    $bgcolor=$possiblecolors{'correct'};
Line 386  sub decideoutput { Line 410  sub decideoutput {
       $bgcolor=$possiblecolors{'no_feedback'};        $bgcolor=$possiblecolors{'no_feedback'};
       $button=1;        $button=1;
   } elsif ($award eq 'MISSING_ANSWER') {    } elsif ($award eq 'MISSING_ANSWER') {
       $message = &mt('Some parts were not submitted.');        $message = &mt('Some items were not submitted.');
       $bgcolor=$possiblecolors{'not_charged_try'};        $bgcolor=$possiblecolors{'not_charged_try'};
       $button = 1;        $button = 1;
   } elsif ($award eq 'ERROR') {    } elsif ($award eq 'ERROR') {
Line 456  sub decideoutput { Line 480  sub decideoutput {
   }    }
   if (lc($Apache::lonhomework::problemstatus) eq 'no'  &&     if (lc($Apache::lonhomework::problemstatus) eq 'no'  && 
       $Apache::inputtags::status[-1] ne 'SHOW_ANSWER') {        $Apache::inputtags::status[-1] ne 'SHOW_ANSWER') {
       $message = &mt("Answer Submitted");        $message = &mt("Answer Submitted: Your final submission will be graded after the due date.");
       $bgcolor=$possiblecolors{'correct'};        $bgcolor=$possiblecolors{'correct'};
       $button=1;        $button=1;
   }    }
Line 476  sub removealldata { Line 500  sub removealldata {
 sub setgradedata {  sub setgradedata {
   my ($award,$id,$previously_used) = @_;    my ($award,$id,$previously_used) = @_;
   # if the student already has it correct, don't modify the status    # if the student already has it correct, don't modify the status
   if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER' &&    if (!$Apache::lonhomework::scantronmode &&
         $Apache::inputtags::status['-1'] ne 'CAN_ANSWER' &&
       $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') {        $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') {
     $Apache::lonhomework::results{"resource.$id.afterduedate"}=$award;      $Apache::lonhomework::results{"resource.$id.afterduedate"}=$award;
     return '';      return '';
Line 543  sub setgradedata { Line 568  sub setgradedata {
       }        }
     }      }
   
     # check if this was a previous submission if it was delete the      # did either of the overall awards chage? If so ignore the 
     # unneeded data and update the previously_used attribute      # previous check
     if ( $previously_used eq 'PREVIOUSLY_USED') {      if (($Apache::lonhomework::results{"resource.$id.awarded"} eq
  if (lc($Apache::lonhomework::problemstatus) ne 'no') {   $Apache::lonhomework::history{"resource.$id.awarded"}) &&
     delete($Apache::lonhomework::results{"resource.$id.tries"});          ($Apache::lonhomework::results{"resource.$id.solved"} eq
     $Apache::lonhomework::results{"resource.$id.previous"} = '1';           $Apache::lonhomework::history{"resource.$id.solved"})) {
  }   # check if this was a previous submission if it was delete the
     } elsif ( $previously_used eq 'PREVIOUSLY_LAST') {   # unneeded data and update the previously_used attribute
       #delete all data as they student didn't do anything, but save   if ( $previously_used eq 'PREVIOUSLY_USED') {
       #the list of collaborators.      if (lc($Apache::lonhomework::problemstatus) ne 'no') {
       &removealldata($id);   delete($Apache::lonhomework::results{"resource.$id.tries"});
       #and since they didn't do anything we were never here   $Apache::lonhomework::results{"resource.$id.previous"} = '1';
       return '';      }
     } else {   } elsif ( $previously_used eq 'PREVIOUSLY_LAST') {
       $Apache::lonhomework::results{"resource.$id.previous"} = '0';      #delete all data as they student didn't do anything, but save
       #the list of collaborators.
       &removealldata($id);
       #and since they didn't do anything we were never here
       return '';
    } else {
       $Apache::lonhomework::results{"resource.$id.previous"} = '0';
    }
     }      }
   } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} =~    } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} =~
     /^correct/ ) {      /^correct/ ) {
Line 631  sub gradestatus { Line 663  sub gradestatus {
       ($showbutton,$bgcolor,$message,$previousmsg) =        ($showbutton,$bgcolor,$message,$previousmsg) =
  &decideoutput($award,$solved,$previous,$target);   &decideoutput($award,$solved,$previous,$target);
       if ($target eq 'tex') {        if ($target eq 'tex') {
  $message=' '.$message.' ';   $message='\vskip 2 mm '.$message.' ';
       } else {        } else {
  $message="<td bgcolor=\"$bgcolor\">$message</td>";   $message="<td bgcolor=\"$bgcolor\">$message</td>";
  if ($previousmsg) {   if ($previousmsg) {
Line 642  sub gradestatus { Line 674  sub gradestatus {
     my $tries = $Apache::lonhomework::history{"resource.$id.tries"};      my $tries = $Apache::lonhomework::history{"resource.$id.tries"};
     my $maxtries = &Apache::lonnet::EXT("resource.$id.maxtries");      my $maxtries = &Apache::lonnet::EXT("resource.$id.maxtries");
     &Apache::lonxml::debug("got maxtries of :$maxtries:");      &Apache::lonxml::debug("got maxtries of :$maxtries:");
       #if tries are set to negative turn off the Tries/Button and messages
       if (defined($maxtries) && $maxtries < 0) { return ''; }
     if ( $tries eq '' ) { $tries = '0'; }      if ( $tries eq '' ) { $tries = '0'; }
     if ( $maxtries eq '' ) { $maxtries = '2'; }       if ( $maxtries eq '' ) { $maxtries = '2'; } 
     if ( $maxtries eq 'con_lost' ) { $maxtries = '0'; }       if ( $maxtries eq 'con_lost' ) { $maxtries = '0'; } 
       my $tries_text=&mt('Tries');
       if ( $Apache::lonhomework::type eq 'survey') { $tries_text=&mt('Submissions'); }
     if ( $showbutton ) {      if ( $showbutton ) {
       if ($target eq 'tex') {        if ($target eq 'tex') {
   if ($ENV{'request.state'} ne "construct" && $Apache::lonhomework::type ne 'exam') {    if ($ENV{'request.state'} ne "construct" && $Apache::lonhomework::type ne 'exam') {
       $trystr = ' {\vskip 1 mm \small \textit{'.&mt('Tries').'} '.$tries.'/'.$maxtries.'} \vskip 2 mm ';        $trystr = ' {\vskip 1 mm \small \textit{'.$tries_text.'} '.$tries.'/'.$maxtries.'} \vskip 2 mm ';
   } else {    } else {
       $trystr = '\vskip 0 mm ';        $trystr = '\vskip 0 mm ';
   }    }
       } else {        } else {
          $trystr = "<td>".&mt('Tries')." $tries/$maxtries</td>";    $trystr = "<td>".$tries_text." $tries";
     if($ENV{'request.state'} ne 'construct') {
         $trystr.="/$maxtries";
     } else {
         if (defined($Apache::inputtags::params{'maxtries'})) {
     $trystr.="/".$Apache::inputtags::params{'maxtries'};
         }
     }
     $trystr.="</td>";
       }        }
     }      }
     if ( $status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') {$showbutton = 0;}      if ( $status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') {$showbutton = 0;}
     if ( $showbutton ) {       if ( $showbutton ) { 
       if ($target ne 'tex') {        if ($target ne 'tex') {
         $button = '<br /><input type="submit" name="submit" value="'.&mt('Submit Answer').'" />';          $button = '<input type="submit" name="submit" value="'.&mt('Submit Answer').'" />';
       }        }
     }      }
     if ($Apache::lonhomework::history{"resource.$id.afterduedate"}) {      if ($Apache::lonhomework::history{"resource.$id.afterduedate"}) {
Line 678  sub gradestatus { Line 722  sub gradestatus {
     if ($target eq 'tex') {      if ($target eq 'tex') {
       return $button.' \vskip 0 mm '.$output.' ';        return $button.' \vskip 0 mm '.$output.' ';
     } else {      } else {
       return $button.'<table><tr>'.$output.'</tr></table>';        return '<table><tr><td>'.$button.'</td>'.$output.'</tr></table>';
     }      }
   }    }
 }  }

Removed from v.1.122  
changed lines
  Added in v.1.134


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.