Diff for /loncom/homework/structuretags.pm between versions 1.71 and 1.80

version 1.71, 2001/10/30 19:18:15 version 1.80, 2002/02/06 16:18:54
Line 1 Line 1
 # The LearningOnline Network with CAPA   # The LearningOnline Network with CAPA 
 # definition of tags that give a structure to a document  # definition of tags that give a structure to a document
   #
   # $Id$
   #
   # 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/
   #
 # 2/19 Guy  # 2/19 Guy
 # 6/26/2001 fixed extra web display at end of <web></web> tags  # 6/26/2001 fixed extra web display at end of <web></web> tags
 # 8/17,8/18,8/20 Gerd Kortemeyer  # 8/17,8/18,8/20 Gerd Kortemeyer
Line 9  package Apache::structuretags; Line 34  package Apache::structuretags;
 use strict;  use strict;
 use Apache::lonnet;  use Apache::lonnet;
   
 sub BEGIN {  BEGIN {
   &Apache::lonxml::register('Apache::structuretags',('block','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','startouttext','endouttext'));    &Apache::lonxml::register('Apache::structuretags',('block','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','startouttext','endouttext'));
 #  &Apache::lonxml::register_insert('problem','',('part','postanswerdate','preduedate'))  #  &Apache::lonxml::register_insert('problem','',('part','postanswerdate','preduedate'))
 }  }
Line 42  sub end_tex { Line 67  sub end_tex {
   
 sub page_start {  sub page_start {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   my $result=&Apache::londefdef::start_html($target,$token,$tagstack,$parstack,$parser,$safeeval);    my %found;
   my $head_tag_start='<head>'.&Apache::lonxml::registerurl();    foreach my $taginside ($tagstack) {
   my $body_tag_start='<body onLoad="'.&Apache::lonxml::loadevents().'" '.      foreach my $taglookedfor ('html','body','form') {
   'onUnload="'.&Apache::lonxml::unloadevents().'" ';        if ($taginside =~ /^$taglookedfor$/i) { $found{$taglookedfor} = 1; }
   my $background=&Apache::lonxml::get_param('background',$parstack,$safeeval);      }
   if ($background) {    }
     $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=  
                                         $background;    my $result;
     $body_tag_start.='background="'.$background.'" ';    my $head_tag_start;
   } else {    if (!defined($found{'html'})) {
     my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack,$safeeval);      $result=&Apache::londefdef::start_html($target,$token,$tagstack,$parstack,
     if ($bgcolor) {     $parser,$safeeval);
       $body_tag_start.='bgcolor="'.$bgcolor.'" ';      $head_tag_start='<head>'.&Apache::lonxml::registerurl();
     }
     my $body_tag_start;
     if (!defined($found{'body'})) {
       $body_tag_start='<body onLoad="'.&Apache::lonxml::loadevents().'" '.
         'onUnload="'.&Apache::lonxml::unloadevents().'" ';
       my $background=&Apache::lonxml::get_param('background',$parstack,$safeeval);
       if ($background) {
         $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
    $background;
         $body_tag_start.='background="'.$background.'" ';
     } else {      } else {
       $body_tag_start.='bgcolor="#ffffff"';        my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack,$safeeval);
         if ($bgcolor) {
    $body_tag_start.='bgcolor="'.$bgcolor.'" ';
         } else {
    $body_tag_start.='bgcolor="#ffffff"';
         }
     }      }
       $body_tag_start.='>';
   }    }
   $body_tag_start.='>';  
   return ($result,$head_tag_start,$body_tag_start);    return ($result,$head_tag_start,$body_tag_start);
 }  }
   
Line 68  sub initialize_storage { Line 108  sub initialize_storage {
   my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();    my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
   if ($ENV{'request.state'} eq 'construct') {    if ($ENV{'request.state'} eq 'construct') {
     %Apache::lonhomework::history=      %Apache::lonhomework::history=
       &Apache::lonnet::restore($ENV{'request.uri'},'nohist_construct',$domain,$name);        &Apache::lonnet::tmprestore($ENV{'request.uri'},'',$domain,$name);
     my ($temp)=keys %Apache::lonhomework::history ;      my ($temp)=keys %Apache::lonhomework::history ;
     &Apache::lonxml::debug("Return message of $temp");      &Apache::lonxml::debug("Return message of $temp");
   } else {    } else {
Line 90  sub finalize_storage { Line 130  sub finalize_storage {
   if ( $temp ne '' ) {    if ( $temp ne '' ) {
     my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();      my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
     if ($ENV{'request.state'} eq 'construct') {      if ($ENV{'request.state'} eq 'construct') {
       $result=&Apache::lonnet::cstore(\%Apache::lonhomework::results,        $result=&Apache::lonnet::tmpstore(\%Apache::lonhomework::results,
       $ENV{'request.uri'},'nohist_construct',        $ENV{'request.uri'},'',$domain,$name);
       $domain,$name);  
       &Apache::lonxml::debug('Construct Store return message:'.$result);        &Apache::lonxml::debug('Construct Store return message:'.$result);
     } else {      } else {
       $result=&Apache::lonnet::cstore(\%Apache::lonhomework::results,        $result=&Apache::lonnet::cstore(\%Apache::lonhomework::results,
Line 123  ENDCHECKOUT Line 162  ENDCHECKOUT
 sub start_problem {  sub start_problem {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   
     if ( $Apache::inputtags::part ne '' ) {
       &Apache::lonxml::error('Only one problem allowed in a .problem file');
       my $bodytext=&Apache::lonxml::get_all_text("/problem",$$parser[-1]);
       return '';
     }
 #intialize globals  #intialize globals
   $Apache::inputtags::part='0';    $Apache::inputtags::part='0';
   @Apache::inputtags::responselist = ();    @Apache::inputtags::responselist = ();
   @Apache::inputtags::previous=();    @Apache::inputtags::previous=();
   &initialize_storage();    &initialize_storage();
     if ($target eq 'web') {
       &Apache::lonhomework::showhash(%Apache::lonhomework::history);
     }
   $Apache::lonhomework::type=&Apache::lonnet::EXT('resource.0.type');    $Apache::lonhomework::type=&Apache::lonnet::EXT('resource.0.type');
   &Apache::lonxml::debug("Found this to be of type :$Apache::lonhomework::type:");    &Apache::lonxml::debug("Found this to be of type :$Apache::lonhomework::type:");
   if ($Apache::lonhomework::type eq '') {    if ($Apache::lonhomework::type eq '') {
Line 210  sub start_problem { Line 257  sub start_problem {
   $result.=    $result.=
     '<input type="hidden" name="problemmode" value="View" />      '<input type="hidden" name="problemmode" value="View" />
              <input type="submit" name="problemmode" value="Edit" />               <input type="submit" name="problemmode" value="Edit" />
                <input type="submit" name="problemmode" value="EditXML" />
              Random Seed:<input type="text" name="rndseed" width="10" value="'.               Random Seed:<input type="text" name="rndseed" width="10" value="'.
        $rndseed.'" /><hr />';         $rndseed.'" />
                <input type="submit" name="changerandseed" value="Change" />
                <input type="submit" name="resetdata" value="Reset Submissions" />
                <hr />';
  }   }
  # if we are viewing someone else preserve that info   # if we are viewing someone else preserve that info
  if (defined $ENV{'form.grade_symb'}) {   if (defined $ENV{'form.grade_symb'}) {
Line 233  sub start_problem { Line 284  sub start_problem {
        <input type="hidden" name="submitted" value="edit" />         <input type="hidden" name="submitted" value="edit" />
        <input type="hidden" name="problemmode" value="Edit" />         <input type="hidden" name="problemmode" value="Edit" />
        <input type="submit" name="problemmode" value="View" />         <input type="submit" name="problemmode" value="View" />
          <input type="submit" name="problemmode" value="EditXML" />
        <input type="submit" name="Undo" value="undo" /> <hr />         <input type="submit" name="Undo" value="undo" /> <hr />
        <input type="submit" name="submit" value="Submit Changes" /><br />         <input type="submit" name="submit" value="Submit Changes" /><br />
       ';        ';
Line 241  sub start_problem { Line 293  sub start_problem {
   } elsif ($target eq 'modified') {    } elsif ($target eq 'modified') {
     $result=$token->[4];      $result=$token->[4];
     $result.=&Apache::edit::handle_insert();      $result.=&Apache::edit::handle_insert();
     } elsif ($target eq 'tex') {
         $result .= '\begin{document}\noindent\textbf{Problem.}\newline';
   } else {    } else {
     # page_start returned a starting result, delete it if we don't need it      # page_start returned a starting result, delete it if we don't need it
     $result = '';      $result = '';
Line 284  sub end_problem { Line 338  sub end_problem {
   } elsif ($target eq 'edit') {    } elsif ($target eq 'edit') {
     &Apache::lonxml::debug("in end_problem with $target, edit");      &Apache::lonxml::debug("in end_problem with $target, edit");
     $result='<br /><input type="submit" name="submit" value="Submit Changes" />';      $result='<br /><input type="submit" name="submit" value="Submit Changes" />';
     } elsif ($target eq 'tex') {
         $result .= '\end{document}';
   }    }
   return $result;    return $result;
 }  }

Removed from v.1.71  
changed lines
  Added in v.1.80


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