Diff for /loncom/homework/edit.pm between versions 1.38 and 1.49

version 1.38, 2002/11/03 19:16:19 version 1.49, 2003/05/06 11:54:08
Line 40  use HTML::Entities(); Line 40  use HTML::Entities();
 # depth of nesting of edit  # depth of nesting of edit
 $Apache::edit::colordepth=0;  $Apache::edit::colordepth=0;
 @Apache::edit::inserttag=();  @Apache::edit::inserttag=();
   # image-type responses: active background image and curdepth at definition
   $Apache::edit::bgimgsrc='';
   $Apache::edit::bgimgsrccurdepth='';
   
 sub initialize_edit {  sub initialize_edit {
   $Apache::edit::colordepth=0;    $Apache::edit::colordepth=0;
Line 99  sub start_table { Line 102  sub start_table {
   }    }
   $Apache::edit::colordepth++;    $Apache::edit::colordepth++;
   push(@Apache::edit::inserttag,$token->[1]);    push(@Apache::edit::inserttag,$token->[1]);
   my $result="<p align=\"right\"><table bgcolor=\"$color\" width=\"95%\" border=\"2\">";    my $result='<div align="right">';
     $result.='<table bgcolor="'.$color.'" width="97%" border="0" cellspacing="5" cellpadding="3">';
   return $result;    return $result;
 }  }
   
 sub end_table {  sub end_table {
   $Apache::edit::colordepth--;    $Apache::edit::colordepth--;
   my $result="</table></p>";    my $result='</table></div>';
   $result.=    $result.="<table><tr><td>";
  "<p><table width=\"100%\"><tr><td>".  
         &innerinsertlist('edit',    my ($tagname,$closingtag);
  (defined($Apache::edit::inserttag[-2])?$Apache::edit::inserttag[-2]:'problem')    if (defined($Apache::edit::inserttag[-2])) {
 ,      $tagname=$Apache::edit::inserttag[-2];
  (defined($Apache::edit::inserttag[-1])?$Apache::edit::inserttag[-1]:'')).    } else {$tagname='problem';}
         "</td></tr></table></p>";    if (defined($Apache::edit::inserttag[-1])) {
       $closingtag=$Apache::edit::inserttag[-1];
     }
     $result.=&innerinsertlist('edit',$tagname,$closingtag).
       "</td></tr></table>";
   pop(@Apache::edit::inserttag);    pop(@Apache::edit::inserttag);
   return $result;    return $result;
 }  }
   
 sub start_spanning_row { return '<tr><td colspan="3">';}  sub start_spanning_row { return '<tr><td colspan="3" bgcolor="#DDDDDD">';}
 sub start_row          { return '<tr><td>';            }  sub start_row          { return '<tr><td bgcolor="#DDDDDD">';            }
 sub end_row            { return '</td></tr>';          }  sub end_row            { return '</td></tr>';          }
   
 sub movebuttons {  sub movebuttons {
Line 154  sub handle_delete { Line 162  sub handle_delete {
   }    }
   if (!$result) {    if (!$result) {
     my $endtag='/'.$token->[1];      my $endtag='/'.$token->[1];
     my $bodytext=&Apache::lonxml::get_all_text($endtag,$$parser[$#$parser]);      my $bodytext=&Apache::lonxml::get_all_text($endtag,$parser);
     $$parser['-1']->get_token();      $$parser['-1']->get_token();
     &Apache::lonxml::debug("Deleting :$bodytext: for $token->[1]");      &Apache::lonxml::debug("Deleting :$bodytext: for $token->[1]");
     &Apache::lonxml::end_tag($tagstack,$parstack,$token);      &Apache::lonxml::end_tag($tagstack,$parstack,$token);
Line 322  sub insert_radiobuttonresponse { Line 330  sub insert_radiobuttonresponse {
 </radiobuttonresponse>';  </radiobuttonresponse>';
 }  }
   
   sub insert_rankresponse {
     return '
   <rankresponse max="10">
       <foilgroup options="">
       </foilgroup>
       <hintgroup>
       </hintgroup>
   </rankresponse>';
   }
   
   sub insert_matchresponse {
     return '
   <matchresponse max="10">
       <foilgroup options="">
         <itemgroup>
         </itemgroup>
       </foilgroup>
       <hintgroup>
       </hintgroup>
   </matchresponse>';
   }
   
 sub insert_displayduedate { return '<displayduedate />'; }  sub insert_displayduedate { return '<displayduedate />'; }
 sub insert_displaytitle   { return '<displaytitle />'; }  sub insert_displaytitle   { return '<displaytitle />'; }
 sub insert_hintpart {  sub insert_hintpart {
Line 338  sub insert_numericalhint { Line 368  sub insert_numericalhint {
 </numericalhint>';  </numericalhint>';
 }  }
   
   sub insert_stringhint {
     return '
   <stringhint>
   </stringhint>';
   }
   
   sub insert_formulahint {
     return '
   <formulahint>
   </formulahint>';
   }
   
 sub insert_radiobuttonhint {  sub insert_radiobuttonhint {
   return '    return '
 <radiobuttonhint>  <radiobuttonhint>
Line 409  sub get_new_args { Line 451  sub get_new_args {
   foreach my $arg (@args) {    foreach my $arg (@args) {
     #just want the string that it was set to      #just want the string that it was set to
     my $value=$token->[2]->{$arg};      my $value=$token->[2]->{$arg};
     my $newvalue=$ENV{"form.$Apache::lonxml::curdepth.$arg"};      my $element=&html_element_name($arg);
       my $newvalue=$ENV{"form.$element"};
     &Apache::lonxml::debug(" for:$arg: cur is :$value: new is :$newvalue:");      &Apache::lonxml::debug(" for:$arg: cur is :$value: new is :$newvalue:");
     if ($value ne $newvalue) {      if ($value ne $newvalue) {
       $token->[2]->{$arg}=$newvalue;        $token->[2]->{$arg}=$newvalue;
Line 442  sub rebuild_tag { Line 485  sub rebuild_tag {
   return $result;    return $result;
 }  }
   
   sub html_element_name {
       my ($name) = @_;
       return $name.'_'.$Apache::lonxml::curdepth;
   }
   
   sub hidden_arg {
       my ($name,$token) = @_;
       my $result;
       my $arg=$token->[2]{$name};
       $result='<input name="'.&html_element_name($name).
    '" type="hidden" value="'.$arg.'" />';
       return $result;
   }
   
 sub text_arg {  sub text_arg {
   my ($description,$name,$token,$size) = @_;    my ($description,$name,$token,$size) = @_;
   my $result;    my $result;
   if (!defined $size) { $size=20; }    if (!defined $size) { $size=20; }
   my $arg=$token->[2]{$name};    my $arg=$token->[2]{$name};
   $result=$description.'<input name="'."$Apache::lonxml::curdepth.$name".    $result=$description.'&nbsp;<input name="'.&html_element_name($name).
     '" type="text" value="'.$arg.'" size="'.$size.'" />';      '" type="text" value="'.$arg.'" size="'.$size.'" />';
   return $result;    return $result;
 }  }
   
 sub select_arg {  sub select_arg {
   my ($description,$name,$list,$token) = @_;      my ($description,$name,$list,$token) = @_;
   my $result;      my $result;
   my $optionlist="";      my $optionlist="";
   my $selected=$token->[2]{$name};      my $selected=$token->[2]{$name};
   foreach my $option (@$list) {      foreach my $option (@$list) {
     if ( $selected eq $option ) {   my $value;
       $optionlist.="<option selected=\"on\">$option</option>\n";   if ( ref($option) eq 'ARRAY') {
     } else {      $value='value="'.$$option[0].'"';
       $optionlist.="<option>$option</option>\n";      $option=$$option[1];
    } else {
       $value='value="'.$option.'"';
    }
    if ( $selected eq $option ) {
       $optionlist.="<option $value selected=\"on\">$option</option>\n";
    } else {
       $optionlist.="<option $value >$option</option>\n";
    }
     }      }
   }      $result.=$description.'&nbsp;<select name="'.&html_element_name($name).
   $result.=$description.'<select name="'."$Apache::lonxml::curdepth.$name".'">          '">
        '.$optionlist.'         '.$optionlist.'
       </select>';        </select>';
   return $result;      return $result;
 }  }
   
 sub select_or_text_arg {  sub select_or_text_arg {
   my ($description,$name,$list,$token,$size) = @_;      my ($description,$name,$list,$token,$size) = @_;
   my $result;      my $result;
   my $optionlist="";      my $optionlist="";
   my $found=0;      my $found=0;
   my $selected=$token->[2]{$name};      my $selected=$token->[2]{$name};
   foreach my $option (@$list) {      foreach my $option (@$list) {
     if ( $selected eq $option ) {   my $value;
       $optionlist.="<option selected=\"on\">$option</option>\n";   if ( ref($option) eq 'ARRAY') {
       $found=1;      $value='value="'.$$option[0].'"';
     } else {      $option=$$option[1];
       $optionlist.="<option>$option</option>\n";   } else {
     }      $value='value="'.$option.'"';
   }   }
   $optionlist.="<option value=\"TYPEDINVALUE\">Type in value</option>\n";   if ( $selected eq $option ) {
   if (($found) || (!$selected)) {      $optionlist.="<option $value selected=\"on\">$option</option>\n";
     $result.=$description.'<select name="'."$Apache::lonxml::curdepth.$name".'">      $found=1;
    } else {
       $optionlist.="<option $value>$option</option>\n";
    }
       }
       $optionlist.="<option value=\"TYPEDINVALUE\">Type in value</option>\n";
       if (($found) || (!$selected)) {
    $result.=$description.'&nbsp;<select name="'.&html_element_name($name)
               .'">
        '.$optionlist.'         '.$optionlist.'
       </select>';        </select>';
   } else {      } else {
     $result.=&text_arg($description,$name,$token,$size);   $result.=&text_arg($description,$name,$token,$size);
   }      }
   return $result;      return $result;
   }
   
   #----------------------------------------------------- image coordinates
   # single image coordinates, x, y 
   sub entercoords {
       my ($idx,,$idy,$mode,$width,$height) = @_;
       unless ($Apache::edit::bgimgsrc) { return ''; }
       if ($idx) { $idx.='_'; }
       if ($idy) { $idy.='_'; }
       my $bgfile=&Apache::lonnet::escape($Apache::edit::bgimgsrc);
       my $form    = 'lonhomework';
       my $element;
       if (! defined($mode) || $mode eq 'attribute') {
           $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth");
       } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
           $element = &Apache::lonnet::escape('homework_edit_'.
                                              $Apache::lonxml::curdepth);
       }
       my $formheight='';
       if ($height) {
    $formheight='&formheight='.$height.'_'.$Apache::edit::bgimgsrccurdepth;
       }
       my $formwidth='';
       if ($width) {
    $formwidth='&formwidth='.$width.'_'.$Apache::edit::bgimgsrccurdepth;
       }
       my $result = <<"ENDBUTTON";
   <a href="/cgi-bin/imagechoice.pl?formname=$form&file=$bgfile&formx=$idx$element&formy=$idy$element$formheight$formwidth"
   target="imagechoice">Click Coordinates</a>
   ENDBUTTON
       return $result;
 }  }
   
   # coordinate pair (x1,y1)-(x2,y2)
   sub entercoordpair {
       my ($id,$mode,$width,$height) = @_;
       unless ($Apache::edit::bgimgsrc) { return ''; }
       my $bgfile=&Apache::lonnet::escape($Apache::edit::bgimgsrc);
       my $form    = 'lonhomework';
       my $element;
       if (! defined($mode) || $mode eq 'attribute') {
           $element = &Apache::lonnet::escape("$id\_$Apache::lonxml::curdepth");
       } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
           $element = &Apache::lonnet::escape('homework_edit_'.
                                              $Apache::lonxml::curdepth);
       }
       my $formheight='';
       if ($height) {
    $formheight='&formheight='.$height.'_'.$Apache::edit::bgimgsrccurdepth;
       }
       my $formwidth='';
       if ($width) {
    $formwidth='&formwidth='.$width.'_'.$Apache::edit::bgimgsrccurdepth;
       }
       my $result = <<"ENDBUTTON";
   <a href="/cgi-bin/imagechoice.pl?mode=pair&formname=$form&file=$bgfile$formheight$formwidth"
   target="imagechoice">Click Coordinate Pair</a>
   ENDBUTTON
       return $result;
   }
 #----------------------------------------------------- browse  #----------------------------------------------------- browse
 sub browse {  sub browse {
     # insert a link to call up the filesystem browser (lonindexer)      # insert a link to call up the filesystem browser (lonindexer)
     $_ = shift;      my ($id, $mode) = @_;
     my $form    = 'lonhomework';      my $form    = 'lonhomework';
     my $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth.$_");      my $element;
       if (! defined($mode) || $mode eq 'attribute') {
           $element = &Apache::lonnet::escape("$id\_$Apache::lonxml::curdepth");
       } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
           $element = &Apache::lonnet::escape('homework_edit_'.
                                              $Apache::lonxml::curdepth);
       }
     my $result = <<"ENDBUTTON";      my $result = <<"ENDBUTTON";
 <a href=\"javascript:openbrowser('$form','$element')\"\>Browse</a>  <a href=\"javascript:openbrowser('$form','$element')\"\>Browse</a>
 ENDBUTTON  ENDBUTTON
Line 510  ENDBUTTON Line 647  ENDBUTTON
 #----------------------------------------------------- browse  #----------------------------------------------------- browse
 sub search {  sub search {
     # insert a link to call up the filesystem browser (lonindexer)      # insert a link to call up the filesystem browser (lonindexer)
     $_ = shift;      my ($id, $mode) = @_;
     my $form    = 'lonhomework';      my $form    = 'lonhomework';
     my $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth.$_");      my $element;
       if (! defined($mode) || $mode eq 'attribute') {
           $element = &Apache::lonnet::escape("$id\_$Apache::lonxml::curdepth");
       } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
           $element = &Apache::lonnet::escape('homework_edit_'.
                                              $Apache::lonxml::curdepth);
       }
     my $result = <<"ENDBUTTON";      my $result = <<"ENDBUTTON";
 <a href=\"javascript:opensearcher('$form','$element')\"\>Search</a>  <a href=\"javascript:opensearcher('$form','$element')\"\>Search</a>
 ENDBUTTON  ENDBUTTON

Removed from v.1.38  
changed lines
  Added in v.1.49


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