Diff for /loncom/homework/edit.pm between versions 1.99 and 1.104

version 1.99, 2005/12/22 22:06:54 version 1.104, 2007/01/29 23:51:19
Line 32  use strict; Line 32  use strict;
 use Apache::lonnet;  use Apache::lonnet;
 use HTML::Entities();  use HTML::Entities();
 use Apache::lonlocal;  use Apache::lonlocal;
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
    
   
 # Global Vars  # Global Vars
 # default list of colors to use in editing  # default list of colors to use in editing
Line 87  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 174  sub handle_delete { Line 170  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 225  sub innerinsertlist { Line 222  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);
   }
   
   sub do_insert {
       my ($tagnum) = @_;
       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>";   $result.="\n<$newtag>\n</$newtag>";
Line 266  sub handle_insertafter { Line 252  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 577  sub editfield { Line 562  sub editfield {
     if ($rows < $minheight) { $rows = $minheight; }      if ($rows < $minheight) { $rows = $minheight; }
     if ($description) { $description="<br />".$description."<br />"; }      if ($description) { $description="<br />".$description."<br />"; }
     if ($usehtmlarea) {      if ($usehtmlarea) {
  push @Apache::lonxml::htmlareafields,'homework_edit_'.   &Apache::lonhtmlcommon::add_htmlareafields('homework_edit_'.
     $Apache::lonxml::curdepth;     $Apache::lonxml::curdepth);
     }      }
     return $description."\n".'&nbsp;&nbsp;&nbsp;<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_'.
  $Apache::lonxml::curdepth.'" '.&element_change_detection().'>'.   $Apache::lonxml::curdepth.'" '.&element_change_detection().'>'.
Line 683  sub checked_arg { Line 668  sub checked_arg {
     $text=$option;      $text=$option;
     $value='value="'.$option.'"';      $value='value="'.$option.'"';
  }   }
  $result.="<nobr><input type='checkbox' $value name='".   $result.="<nobr><label><input type='checkbox' $value name='".
     &html_element_name($name)."'";      &html_element_name($name)."'";
  foreach my $selected (split(/,/,$allselected)) {   foreach my $selected (split(/,/,$allselected)) {
     if ( $selected eq $option ) {      if ( $selected eq $option ) {
Line 691  sub checked_arg { Line 676  sub checked_arg {
  last;   last;
     }      }
  }   }
  $result.=&element_change_detection()." />$text</nobr>\n";   $result.=&element_change_detection()." />$text</label></nobr>\n";
     }      }
     return $result;      return $result;
 }  }
Line 799  sub entercoords { Line 784  sub entercoords {
     unless ($Apache::edit::bgimgsrc) { return ''; }      unless ($Apache::edit::bgimgsrc) { return ''; }
     if ($idx) { $idx.='_'; }      if ($idx) { $idx.='_'; }
     if ($idy) { $idy.='_'; }      if ($idy) { $idy.='_'; }
     my $bgfile=&Apache::lonnet::escape(&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$Apache::edit::bgimgsrc));      my $bgfile=&escape(&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$Apache::edit::bgimgsrc));
     my $form    = 'lonhomework';      my $form    = 'lonhomework';
     my $element;      my $element;
     if (! defined($mode) || $mode eq 'attribute') {      if (! defined($mode) || $mode eq 'attribute') {
         $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth");          $element = &escape("$Apache::lonxml::curdepth");
     } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>      } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
         $element = &Apache::lonnet::escape('homework_edit_'.          $element = &escape('homework_edit_'.
                                            $Apache::lonxml::curdepth);                                             $Apache::lonxml::curdepth);
     }      }
     my $id=$Apache::lonxml::curdepth;      my $id=$Apache::lonxml::curdepth;
Line 834  sub entercoords { Line 819  sub entercoords {
 sub entercoord {  sub entercoord {
     my ($idx,$mode,$width,$height,$type) = @_;      my ($idx,$mode,$width,$height,$type) = @_;
     unless ($Apache::edit::bgimgsrc) { return ''; }      unless ($Apache::edit::bgimgsrc) { return ''; }
     my $bgfile=&Apache::lonnet::escape(&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$Apache::edit::bgimgsrc));      my $bgfile=&escape(&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$Apache::edit::bgimgsrc));
     my $form    = 'lonhomework';      my $form    = 'lonhomework';
     my $element;      my $element;
     if (! defined($mode) || $mode eq 'attribute') {      if (! defined($mode) || $mode eq 'attribute') {
         $element = &Apache::lonnet::escape("$idx\_$Apache::lonxml::curdepth");          $element = &escape("$idx\_$Apache::lonxml::curdepth");
     } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>      } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
         $element = &Apache::lonnet::escape('homework_edit_'.          $element = &escape('homework_edit_'.
                                            $Apache::lonxml::curdepth);                                             $Apache::lonxml::curdepth);
     }      }
     my $id=$Apache::lonxml::curdepth;      my $id=$Apache::lonxml::curdepth;
Line 874  sub browse { Line 859  sub browse {
     my $form    = 'lonhomework';      my $form    = 'lonhomework';
     my $element;      my $element;
     if (! defined($mode) || $mode eq 'attribute') {      if (! defined($mode) || $mode eq 'attribute') {
         $element = &Apache::lonnet::escape("$id\_$Apache::lonxml::curdepth");          $element = &escape("$id\_$Apache::lonxml::curdepth");
     } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>      } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
         $element = &Apache::lonnet::escape('homework_edit_'.          $element = &escape('homework_edit_'.
                                            $Apache::lonxml::curdepth);                                             $Apache::lonxml::curdepth);
     }      }
     my $titleelement;      my $titleelement;
     if ($titleid) {      if ($titleid) {
  $titleelement=",'','','".&Apache::lonnet::escape("$titleid\_$Apache::lonxml::curdepth")."'";   $titleelement=",'','','".&escape("$titleid\_$Apache::lonxml::curdepth")."'";
     }      }
     my $result = <<"ENDBUTTON";      my $result = <<"ENDBUTTON";
 <a href=\"javascript:openbrowser('$form','$element'$titleelement)\"\>Select</a>  <a href=\"javascript:openbrowser('$form','$element'$titleelement)\"\>Select</a>
Line 896  sub search { Line 881  sub search {
     my $form    = 'lonhomework';      my $form    = 'lonhomework';
     my $element;      my $element;
     if (! defined($mode) || $mode eq 'attribute') {      if (! defined($mode) || $mode eq 'attribute') {
         $element = &Apache::lonnet::escape("$id\_$Apache::lonxml::curdepth");          $element = &escape("$id\_$Apache::lonxml::curdepth");
     } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>      } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
         $element = &Apache::lonnet::escape('homework_edit_'.          $element = &escape('homework_edit_'.
                                            $Apache::lonxml::curdepth);                                             $Apache::lonxml::curdepth);
     }      }
     my $titleelement;      my $titleelement;
     if ($titleid) {      if ($titleid) {
  $titleelement=",'".&Apache::lonnet::escape("$titleid\_$Apache::lonxml::curdepth")."'";   $titleelement=",'".&escape("$titleid\_$Apache::lonxml::curdepth")."'";
     }      }
     my $result = <<"ENDBUTTON";      my $result = <<"ENDBUTTON";
 <a href=\"javascript:opensearcher('$form','$element'$titleelement)\"\>Search</a>  <a href=\"javascript:opensearcher('$form','$element'$titleelement)\"\>Search</a>

Removed from v.1.99  
changed lines
  Added in v.1.104


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