Diff for /loncom/homework/edit.pm between versions 1.103 and 1.105

version 1.103, 2006/07/27 20:47:02 version 1.105, 2007/02/18 02:00:59
Line 90  sub tag_end { Line 90  sub tag_end {
   
 sub start_table {  sub start_table {
     my ($token)=@_;      my ($token)=@_;
     my $tag = $token->[1];      my $tag = &Apache::lonxml::get_tag($token);
     my $tagnum;      
     foreach my $namespace (reverse @Apache::lonxml::namespace) {      my $color = $Apache::lonxml::insertlist{"$tag.color"};
  my $testtag=$namespace.'::'.$tag;      &Apache::lonxml::debug(" $tag -- $color");
  $tagnum=$Apache::lonxml::insertlist{"$testtag.num"};  
  &Apache::lonxml::debug(" $testtag ");  
  if (defined($tagnum)) { last; }  
     }  
     if (!defined ($tagnum)) {$tagnum=$Apache::lonxml::insertlist{"$tag.num"};}  
     my $color = $Apache::lonxml::insertlist{"$tagnum.color"};  
     &Apache::lonxml::debug(" $tagnum -- $color");  
     if (!defined($color)) {      if (!defined($color)) {
  $color = $Apache::edit::colorlist[$Apache::edit::colordepth];   $color = $Apache::edit::colorlist[$Apache::edit::colordepth];
     }      }
Line 119  sub end_table { Line 112  sub end_table {
     my ($tagname,$closingtag);      my ($tagname,$closingtag);
     if (defined($Apache::edit::inserttag[-2])) {      if (defined($Apache::edit::inserttag[-2])) {
  $tagname=$Apache::edit::inserttag[-2];   $tagname=$Apache::edit::inserttag[-2];
     } else {$tagname='problem';}      } else {
    if ($Apache::lonhomework::parsing_a_task) {
       $tagname='Task';
    } else {
       $tagname='problem';
    }
       }
     if (defined($Apache::edit::inserttag[-1])) {      if (defined($Apache::edit::inserttag[-1])) {
  $closingtag=$Apache::edit::inserttag[-1];   $closingtag=$Apache::edit::inserttag[-1];
     }      }
     $result.=&innerinsertlist('edit',$tagname,$closingtag).      $result.=&innerinsertlist('edit',$tagname,$closingtag).
  "</td></tr></table></div>";   "</td></tr></table></div>";
     pop(@Apache::edit::inserttag);      my $last = pop(@Apache::edit::inserttag);
     return $result;      return $result;
 }  }
   
Line 177  sub handle_delete { Line 176  sub handle_delete {
 sub get_insert_list {  sub get_insert_list {
     my ($tagname) = @_;      my ($tagname) = @_;
     my $result='';      my $result='';
     my @tagnums= ();      my @tags= ();
     #&Apache::lonxml::debug("keys ".join("\n",sort(keys(%Apache::lonxml::insertlist))));      #&Apache::lonxml::debug("keys ".join("\n",sort(keys(%Apache::lonxml::insertlist))));
     if ($Apache::lonxml::insertlist{"$tagname.which"}) {      if ($Apache::lonxml::insertlist{"$tagname.which"}) {
  push (@tagnums, @{ $Apache::lonxml::insertlist{"$tagname.which"} });   push (@tags, @{ $Apache::lonxml::insertlist{"$tagname.which"} });
     }      }
     foreach my $namespace (@Apache::lonxml::namespace) {      foreach my $namespace (@Apache::lonxml::namespace) {
  if ($Apache::lonxml::insertlist{"$namespace".'::'."$tagname.which"}) {   if ($Apache::lonxml::insertlist{"$namespace".'::'."$tagname.which"}) {
     push (@tagnums, @{ $Apache::lonxml::insertlist{"$namespace".'::'."$tagname.which"} });      push (@tags, @{ $Apache::lonxml::insertlist{"$namespace".'::'."$tagname.which"} });
  }   }
     }      }
     if (@tagnums) {      if (@tags) {
  my %options;   my %options;
  foreach my $tagnum (@tagnums) {   foreach my $tag (@tags) {
     my $descrip=$Apache::lonxml::insertlist{"$tagnum.description"};      my $descrip=$Apache::lonxml::insertlist{"$tag.description"};
       my $tagnum =$Apache::lonxml::insertlist{"$tag.num"};
     $options{$descrip} ="<option value=\"$tagnum\">".      $options{$descrip} ="<option value=\"$tagnum\">".
  $descrip."</option>\n";   $descrip."</option>\n";
  }   }
Line 228  sub innerinsertlist { Line 228  sub innerinsertlist {
   
 sub handle_insert {  sub handle_insert {
     if ($env{"form.insert_$Apache::lonxml::curdepth"} eq '') { return ''; }      if ($env{"form.insert_$Apache::lonxml::curdepth"} eq '') { return ''; }
     my $result;  
     my $tagnum = $env{"form.insert_$Apache::lonxml::curdepth"};      my $tagnum = $env{"form.insert_$Apache::lonxml::curdepth"};
     my $func=$Apache::lonxml::insertlist{"$tagnum.function"};      return &do_insert($tagnum);
     if ($func eq 'default') {  
  my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};  
  my $namespace;  
  if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); }  
  $result.="\n<$newtag>\n</$newtag>";  
     } else {  
  if (defined(&$func)) {  
     {  
  no strict 'refs';  
  $result.=&$func();  
     }  
  } else {  
     my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};  
     &Apache::lonxml::error("Unable to insert tag ".$Apache::lonxml::curdepth." ($tagnum) $newtag, func was not defined.");  
  }  
     }  
     return $result;  
 }  }
   
 sub handle_insertafter {  sub handle_insertafter {
     my $tagname=shift;      my $tagname=shift;
     if ($env{"form.insert_after_$tagname\_$Apache::lonxml::curdepth"} eq '')      if ($env{"form.insert_after_$tagname\_$Apache::lonxml::curdepth"} eq '') {
     { return ''; }   return '';
     my $result;      }
     my $tagnum =$env{"form.insert_after_$tagname\_$Apache::lonxml::curdepth"};      my $tagnum =$env{"form.insert_after_$tagname\_$Apache::lonxml::curdepth"};
     my $func=$Apache::lonxml::insertlist{"$tagnum.function"};      return &do_insert($tagnum,1);
   }
   
   sub do_insert {
       my ($tagnum,$after) = @_;
       my $result;
   
       my $newtag = $Apache::lonxml::insertlist{"$tagnum.tag"};
       my $func   = $Apache::lonxml::insertlist{"$newtag.function"};
     if ($func eq 'default') {      if ($func eq 'default') {
  my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};  
  my $namespace;   my $namespace;
  if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); }   if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); }
  $result.="\n<$newtag>\n</$newtag>";   my $depth = scalar(@Apache::lonxml::depthcounter);
    $depth -- if ($after);
    my $inset = "\t"x$depth;
    $result.="\n$inset<$newtag>\n$inset</$newtag>";
     } else {      } else {
  if (defined(&$func)) {   if (defined(&$func)) {
     {      {
Line 269  sub handle_insertafter { Line 261  sub handle_insertafter {
  $result.=&$func();   $result.=&$func();
     }      }
  } else {   } else {
     my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};      &Apache::lonxml::error("Unable to insert tag $newtag, $func was not defined. ($tagnum)");
     &Apache::lonxml::error("Unable to insert (after) tag $newtag, $func was not defined. ($tagname $tagnum)");  
  }   }
     }      }
     return $result;      return $result;
Line 583  sub editfield { Line 574  sub editfield {
  &Apache::lonhtmlcommon::add_htmlareafields('homework_edit_'.   &Apache::lonhtmlcommon::add_htmlareafields('homework_edit_'.
    $Apache::lonxml::curdepth);     $Apache::lonxml::curdepth);
     }      }
       # remove typesetting whitespace from between data and the end tag
       # to make the edit look prettier
       $data =~ s/\n?[ \t]*$//;
   
     return $description."\n".'<textarea style="width:100%" rows="'.$rows.      return $description."\n".'<textarea style="width:100%" rows="'.$rows.
  '" cols="'.$cols.'" name="homework_edit_'.   '" cols="'.$cols.'" name="homework_edit_'.
  $Apache::lonxml::curdepth.'" id="homework_edit_'.   $Apache::lonxml::curdepth.'" id="homework_edit_'.
Line 595  sub editfield { Line 590  sub editfield {
 sub modifiedfield {  sub modifiedfield {
     my ($endtag,$parser) = @_;      my ($endtag,$parser) = @_;
     my $result;      my $result;
 #  foreach my $envkey (sort keys %env) {  
 #    &Apache::lonxml::debug("$envkey ---- $env{$envkey}");  
 #  }  
 #  &Apache::lonxml::debug("I want homework_edit_$Apache::lonxml::curdepth");  
 #  &Apache::lonxml::debug($env{"form.homework_edit_$Apache::lonxml::curdepth"});  
     $result=$env{"form.homework_edit_$Apache::lonxml::curdepth"};      $result=$env{"form.homework_edit_$Apache::lonxml::curdepth"};
     my $bodytext=&Apache::lonxml::get_all_text($endtag,$parser);      my $bodytext=&Apache::lonxml::get_all_text($endtag,$parser);
     # textareas throw away intial \n       # textareas throw away intial \n 
     if ($bodytext=~/^\n/) { $result="\n".$result; }      if ($bodytext=~/^\n/) {
    $result="\n".$result;
       }
       # if there is typesetting whitespace from between the data and the end tag
       # restore to keep the source looking pretty
       if ($bodytext =~ /(\n?[ \t]*)$/) {
    $result .= $1;
       }
     return $result;      return $result;
 }  }
   

Removed from v.1.103  
changed lines
  Added in v.1.105


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