Annotation of loncom/homework/randomlabel.pm, revision 1.49

1.1       tsai        1: # The LearningOnline Network with CAPA
                      2: # random labelling tool
1.8       albertel    3: #
1.49    ! albertel    4: # $Id: randomlabel.pm,v 1.48 2003/09/08 19:17:34 albertel Exp $
1.8       albertel    5: #
                      6: # Copyright Michigan State University Board of Trustees
                      7: #
                      8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
                      9: #
                     10: # LON-CAPA is free software; you can redistribute it and/or modify
                     11: # it under the terms of the GNU General Public License as published by
                     12: # the Free Software Foundation; either version 2 of the License, or
                     13: # (at your option) any later version.
                     14: #
                     15: # LON-CAPA is distributed in the hope that it will be useful,
                     16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
                     17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     18: # GNU General Public License for more details.
                     19: #
                     20: # You should have received a copy of the GNU General Public License
                     21: # along with LON-CAPA; if not, write to the Free Software
                     22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
                     23: #
                     24: # /home/httpd/html/adm/gpl.txt
                     25: #
                     26: # http://www.lon-capa.org/
                     27: #
1.3       tsai       28: # 7/20/2001 Isaac Tsai, initial syntax
                     29: # 8/10/2001 Isaac Tsai, 
                     30: # 8/30/2001 Isaac Tsai, 
1.1       tsai       31: # SYNTAX:
1.4       albertel   32: # <randomlabel bgimg="URL" width="12" height="45" texwidth="50">
                     33: #    <labelgroup name="GroupOne" type="image">
                     34: #      <location x="123" y="456" />
                     35: #      <location x="321" y="654" />
                     36: #      <location x="213" y="546" />
                     37: #      <label description="TEXT-1">IMG-URL</label>
                     38: #      <label description="TEXT-2">IMG-URL</label>
                     39: #      <label description="TEXT-3">IMG-URL</label>
1.1       tsai       40: #    </labelgroup>
1.4       albertel   41: #    <labelgroup name="GroupTwo" type="text">
                     42: #      <location x="12" y="45" />
                     43: #      <location x="32" y="65" />
                     44: #      <location x="21" y="54" />
1.3       tsai       45: #      <label>TEXT-1</label>
                     46: #      <label>TEXT-2</label>
                     47: #      <label>TEXT-3</label>
1.1       tsai       48: #    </labelgroup>
                     49: #   </randomlabel>
                     50: #  ===========================================
1.3       tsai       51: #  side effect:
                     52: #    location (123,456): $GroupOne[0] = 2  # images give out indexes
                     53: #             (321,654): $GroupOne[1] = 1
                     54: #             (213,546): $GroupOne[2] = 0
                     55: #    location (12,45)  : $GroupTwo[0] = "TEXT-3"
                     56: #             (32,65)  : $GroupTwo[1] = "TEXT-1"
                     57: #             (21,54)  : $GroupTwo[2] = "TEXT-2"
1.1       tsai       58: #  ===========================================
                     59: package Apache::randomlabel;
1.24      sakharuk   60: use Apache::lonnet;
1.1       tsai       61: use strict;
1.13      sakharuk   62: use Apache::edit;
1.36      sakharuk   63: use Apache::File();
1.38      sakharuk   64: use Apache::Constants qw(:common :http);
1.1       tsai       65: 
1.13      sakharuk   66: BEGIN {
1.47      albertel   67:     &Apache::lonxml::register('Apache::randomlabel',('randomlabel','labelgroup','location','label'));
1.1       tsai       68: }
                     69: 
1.23      matthew    70: sub check_int {
                     71:     # utility function to do error checking on a integer.
                     72:     my ($num,$default) = @_;
                     73:     $default = 100 if (! defined($default));
                     74:     $num =~ s/\s+//g;  # We dont need no stinkin white space!
                     75:     # If it is a real, just grab the integer part.
                     76:     ($num,undef) = split (/\./,$num) if ($num =~ /\./); 
                     77:     # set to default if what we have left doesn't match anything...
                     78:     $num = $default unless ($num =~/^\d+$/);
                     79:     return $num;
                     80: }
                     81: 
1.1       tsai       82: sub start_randomlabel {
1.47      albertel   83:     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
                     84:     my $result='';
                     85:     push (@Apache::lonxml::namespace,'randomlabel');
                     86:     my $bgimg= &Apache::lonxml::get_param('bgimg',$parstack,$safeeval);
                     87:     if ( $bgimg !~ /^http:/ ) {
                     88: 	$bgimg=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$bgimg);
                     89: 	if (&Apache::lonnet::repcopy($bgimg) ne OK) {
                     90: 	    $bgimg='/home/httpd/html/adm/lonKaputt/lonlogo_broken.gif';
                     91: 	}
1.42      www        92:     }
1.47      albertel   93:     my $w= &check_int(&Apache::lonxml::get_param('width',$parstack,$safeeval));
                     94:     my $h= &check_int(&Apache::lonxml::get_param('height',$parstack,$safeeval));
1.49    ! albertel   95:     my $texwidth= &Apache::lonxml::get_param('texwidth',$parstack,$safeeval,undef,1);
        !            96:     if (!$texwidth) { $texwidth=90; }
1.47      albertel   97:     $Apache::randomlabel::tlabel_cnt=0;
                     98:     $Apache::randomlabel::ilabel_cnt=0;
                     99:     if ($target eq 'web') {
                    100: 	&Apache::lonxml::startredirection();
                    101: 	$result.="BGIMG=".&Apache::lonnet::escape($bgimg);
                    102:     } elsif ($target eq 'tex') {
                    103: 	my $newbgimg = $bgimg;
                    104: 	$bgimg=~s/\.(gif|jpg|png|jpeg)$/\.eps/i;
                    105: 	$bgimg= &Apache::lonnet::filelocation($bgimg);
                    106: 	$bgimg=~s/http:\/[^\/]*/\/home\/httpd\/html/;
                    107: 	$bgimg=~s/\/$//;
                    108: 	#if no eps file try to replicate it
                    109: 	if (not-e $bgimg) {
                    110: 	    if (&Apache::lonnet::repcopy($bgimg) ne OK ) {
                    111: 		#if replication failed try to find ps file
                    112: 		$bgimg=~s/\.eps$/\.ps/;
                    113: 		#if no ps file try to replicate it
1.45      sakharuk  114: 		if (not -e $bgimg &&
1.38      sakharuk  115: 		    &Apache::lonnet::repcopy($bgimg) ne OK) {
                    116:                     #if replication failed try to produce eps file dynamically
1.36      sakharuk  117: 		    $bgimg=~s/\.ps$/\.eps/;
                    118: 		    my $temp_file;
                    119: 		    my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat";
                    120: 		    $temp_file = Apache::File->new('>>'.$filename);
                    121: 		    $newbgimg =~ s/(.*)\/res\//\/home\/httpd\/html\/res\//;
                    122: 		    print $temp_file "$newbgimg\n";
                    123: 		    $bgimg =~ m/\/([^\/]+)$/;
                    124: 		    $bgimg = '/home/httpd/prtspool/'.$1;
                    125: 		}
1.47      albertel  126: 	    }
                    127: 	}
                    128: 	$bgimg=~s/\/$//;
                    129: 	my $dirtywidth=$texwidth+5;
                    130: 	if ($texwidth==90) {
                    131: 	    $result.='\vspace*{2mm}\noindent \parbox{'.$dirtywidth.' mm}{  \noindent \epsfxsize='.$texwidth.' mm \epsffile{'.
                    132: 		$bgimg.'}\setlength{\unitlength}{1mm}  \begin{picture}('.$texwidth.','.$texwidth*$h/$w.')(0,-'.$texwidth*$h/$w.')';
                    133: 	} else {
                    134: 	    $result.='\vspace*{2mm}\noindent \parbox{'.$dirtywidth.' mm}{  \noindent \epsfxsize='.$texwidth.' mm \epsffile{'.
                    135: 		$bgimg.'}\setlength{\unitlength}{1mm}  \begin{picture}('.$texwidth.','.$texwidth*$h/$w.')(0,-'.$texwidth*$h/$w.')';
                    136: 	}
                    137:     } elsif ($target eq 'edit') {
                    138: 	$result.=&Apache::edit::tag_start($target,$token);
                    139: 	$Apache::edit::bgimgsrc=
                    140: 	    &Apache::lonxml::get_param('bgimg',$parstack,$safeeval);
                    141: 	$Apache::edit::bgimgsrccurdepth=$Apache::lonxml::curdepth;
                    142: 	$result.=&Apache::edit::text_arg('Image:','bgimg',$token,75).' ';
                    143: 	$result.=&Apache::edit::browse('bgimg').' ';
                    144: 	$result.=&Apache::edit::search('bgimg').'<br />'.
                    145: 	    &Apache::edit::text_arg('Width(pixel):' ,'width'   ,$token,6).
                    146: 	    &Apache::edit::text_arg('Height(pixel):','height'  ,$token,6).
                    147: 	    &Apache::edit::text_arg('TeXWidth(mm):' ,'texwidth',$token,6).
                    148: 	    &Apache::edit::end_row().&Apache::edit::start_spanning_row();     
                    149:     } elsif ($target eq 'modified') {
                    150: 	my $constructtag=&Apache::edit::get_new_args($token,$parstack,
                    151: 						     $safeeval,'bgimg','width',
                    152: 						     'height','texwidth');
                    153: 	if ($constructtag) {
                    154: 	    $result = &Apache::edit::rebuild_tag($token);
                    155: 	    $result.=&Apache::edit::handle_insert();
                    156: 	}
1.31      sakharuk  157:     }
1.47      albertel  158:     return $result;
1.1       tsai      159: }
                    160: 
                    161: sub end_randomlabel {
1.47      albertel  162:     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
                    163:     my $result='';
                    164:     my $count;
                    165:     pop @Apache::lonxml::namespace;
                    166:     if ($target eq 'web') {
                    167: 	my $args=&Apache::lonxml::endredirection();
                    168: 	$args=~s/\s*&/&/g;
                    169: 	$args=~s/\s*$//;
                    170: 	$count = $Apache::randomlabel::tlabel_cnt;
                    171: 	if( $count != 0) { $args.= "&COUNT=$count"; }
                    172: 	$count = $Apache::randomlabel::ilabel_cnt;
                    173: 	if( $count != 0) { $args.= "&ICOUNT=$count"; }
                    174: 	my $token=$Apache::lonxml::curdepth.'_'.$$;
                    175: 	$result.='<img src="/adm/randomlabel.png?token='.$token;
                    176: 	$result.='" /><br />'."\n";
                    177: 	&Apache::lonnet::appenv(("imagerequest.$token"=>&Apache::lonnet::escape($args)));
                    178:     } elsif ($target eq 'tex') {
                    179: 	$result='\end{picture}\\\\';
                    180: 	my $height=&Apache::lonxml::get_param('height',$parstack,$safeeval);
                    181: 	my $width=&Apache::lonxml::get_param('width',$parstack,$safeeval);
1.49    ! albertel  182: 	my $texwidth=&Apache::lonxml::get_param('texwidth',$parstack,$safeeval,undef,1);
        !           183:         if (!$texwidth) { $texwidth=90; }
1.47      albertel  184: 	my $howtoskipback = $texwidth*$height/$width;
                    185: 	$result.= ' \vskip -'.$howtoskipback.' mm }  \\\\ ';
                    186:     } elsif ($target eq 'edit') {
                    187: 	$result.=&Apache::edit::end_table;
                    188:     }
                    189:     return $result;
1.1       tsai      190: }
                    191: 
                    192: sub start_labelgroup {
1.47      albertel  193:     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
                    194:     my $result='';
                    195:     my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);
                    196:     my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval);
                    197:     $type =~tr/A-Z/a-z/;
1.48      albertel  198:     if ($target ne 'modified' && ($name =~ /\W/ || $name =~ /^[0-9]/)) {
                    199: 	&Apache::lonxml::error("Only _ a-z A-Z and 0-9 are allowed in the name to a labelgroup, and the first character can not be a number.<br />");
                    200:     }
1.47      albertel  201:     if ($target eq 'web' || $target eq 'tex' ||
                    202: 	$target eq 'grade' || $target eq 'answer' || $target eq 'analyze') {
                    203: 	$Apache::randomlabel::groupname=$name;
                    204: 	$Apache::randomlabel::type=$type;
                    205: 	@Apache::randomlabel::xcoord = ();
                    206: 	@Apache::randomlabel::ycoord = ();
                    207: 	@Apache::randomlabel::value = ();
                    208: 	@Apache::randomlabel::label_arr  = ();
                    209: 	@Apache::randomlabel::decription  = ();
                    210:     } elsif ($target eq 'edit') {
                    211: 	$result.=&Apache::edit::tag_start($target,$token);
                    212: 	$result.=&Apache::edit::text_arg('Name:','name',$token).
                    213: 	    &Apache::edit::select_arg('Type:','type',['text','image'],$token).
                    214: 	    &Apache::edit::end_row().&Apache::edit::start_spanning_row();
                    215:     } elsif ($target eq 'modified') {
                    216: 	my $constructtag=&Apache::edit::get_new_args($token,$parstack,
                    217: 						     $safeeval,'name','type');
                    218: 	if ($constructtag) {
                    219: 	    $result = &Apache::edit::rebuild_tag($token);
                    220: 	    $result.=&Apache::edit::handle_insert();
                    221: 	}
1.4       albertel  222:     }
1.47      albertel  223:     return $result;
1.1       tsai      224: }
                    225: 
1.5       albertel  226: sub add_vars {
1.47      albertel  227:     my ($name,$order,$label,$labelorder,$value,$image,$safeeval) = @_;
                    228:     my $code = '${'.$name."}{'".($order+1)."'}='".$label."';";
                    229:     my $out=Apache::run::run($code,$safeeval);
                    230:     if ($value) {
                    231: 	$code = '${'.$name."}{'value_".($order+1)."'}='".$value."';";
                    232: 	$out=Apache::run::run($code,$safeeval);
                    233: 	$code = '${'.$name."}{'labelvalue_".($labelorder+1)."'}='".$value."';";
                    234: 	$out=Apache::run::run($code,$safeeval);
                    235:     }
                    236:     if ($image) {
                    237: 	my $code = '${'.$name."}{'image_".($order+1)."'}='".$image."';";
                    238: 	my $out=Apache::run::run($code,$safeeval);
                    239:     }
                    240:     $code = '${'.$name."}{'numlocations'}='".($order+1)."';";
1.5       albertel  241:     $out=Apache::run::run($code,$safeeval);
1.4       albertel  242: }
1.5       albertel  243: 
1.1       tsai      244: # begin to assign labels to locations
                    245: sub end_labelgroup {
1.47      albertel  246:     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
                    247:     my $gname = $Apache::randomlabel::groupname;
                    248:     my $type  = $Apache::randomlabel::type;
                    249:     my $result='';
                    250:     if ($target eq 'web' || $target eq 'answer' || $target eq 'grade' ||
                    251: 	$target eq 'analyze') {
                    252: 	my @idx_arr = (0 .. $#Apache::randomlabel::label_arr);
                    253: 	&Apache::structuretags::shuffle(\@idx_arr);
                    254: 	for(0 .. $#Apache::randomlabel::label_arr) {
                    255: 	    my $str;
                    256: 	    my $xstr;
                    257: 	    my $ystr;
                    258: 	    my $label = "$Apache::randomlabel::label_arr[ $idx_arr[$_] ]";
                    259: 	    my $x = $Apache::randomlabel::xcoord[$_];
                    260: 	    my $y = $Apache::randomlabel::ycoord[$_];
                    261: 	    my $value = $Apache::randomlabel::value[$_];
                    262: 	    if( $type eq 'text') {
                    263: 		&add_vars($gname,$_,$label,$idx_arr[$_],$value,'',$safeeval);
                    264: 		$str = 'LB'.$Apache::randomlabel::tlabel_cnt;
                    265: 		$xstr = 'X'.$Apache::randomlabel::tlabel_cnt;
                    266: 		$ystr = 'Y'.$Apache::randomlabel::tlabel_cnt;
                    267: 		$Apache::randomlabel::tlabel_cnt += 1;
                    268: 	    } elsif ( $type eq 'image') {
                    269: 		&add_vars($gname,$_,
                    270: 			  $Apache::randomlabel::description[$idx_arr[$_]],
                    271: 			  $idx_arr[$_],$value,$label,$safeeval);
                    272: 		$str = 'IMG'.$Apache::randomlabel::ilabel_cnt;
                    273: 		$xstr = 'IX'.$Apache::randomlabel::ilabel_cnt;
                    274: 		$ystr = 'IY'.$Apache::randomlabel::ilabel_cnt;
                    275: 		$Apache::randomlabel::ilabel_cnt += 1;
                    276: 	    } else {
                    277: 		&Apache::lonxml::error('Unknown type of label :'.$type.':');
                    278: 	    }
                    279: 	    if ($target eq 'web') {
                    280: 		$result .= '&'. $str  .'='.&Apache::lonnet::escape($label);
                    281: 		$result .= '&'. $xstr .'='.$x;
                    282: 		$result .= '&'. $ystr .'='.$y;
                    283: 	    }
                    284: 	}
                    285:     } elsif ($target eq 'tex') {
                    286: 	my $WX1=0; #  Web x-coord. of upper left corner (ULC)
                    287: 	my $WY1=0; #  Web y-coord. of (ULC)
                    288: 	my $wwidth=&Apache::lonxml::get_param('width',$parstack,$safeeval,-2);
                    289: 	my $wheight=&Apache::lonxml::get_param('height',$parstack,$safeeval,-2);
1.49    ! albertel  290: 	my $texwidth=&Apache::lonxml::get_param('texwidth',$parstack,$safeeval,-2,1);
        !           291: 	if (!$texwidth) { $texwidth=90; }
1.47      albertel  292: 	my $TX1=0;
                    293: 	my $TY1=$texwidth*($wheight/$wwidth);
                    294: 	my $TX2=$texwidth;
                    295: 	my $TY2=0;
                    296: 
                    297: 
                    298: 	my $slopex=($wwidth-$WX1)/($TX2-$TX1);
                    299: 	my $slopey=($wheight-$WY1)/($TY2-($TY1-1.0));
                    300: 	my $cstx=$wwidth-$slopex*($TX2);
                    301: 	my $csty=$wheight-$slopey*($TY2);
                    302: 
                    303: 	my @idx_arr = (0 .. $#Apache::randomlabel::label_arr);
                    304: 	&Apache::structuretags::shuffle(\@idx_arr);
                    305: 
                    306: 	&Apache::lonxml::debug("Array is:".$#Apache::randomlabel::label_arr.":");
                    307: 	for(my $i=0;$i <= $#Apache::randomlabel::label_arr; $i++) {
                    308: 	    my $label = "$Apache::randomlabel::label_arr[ $idx_arr[$i] ]";
                    309: 	    my $x = $Apache::randomlabel::xcoord[$i];
                    310: 	    my $y = $Apache::randomlabel::ycoord[$i];
                    311: 	    my $value = $Apache::randomlabel::value[$i];
                    312: 	    #x latex coordinate
                    313: 	    my $tcX=($x)*($texwidth/$wwidth);
                    314: 	    #y latex coordinate
                    315:             #      my $ratio=($wwidth > 0 ? $wheight/$wwidth : 1 );
                    316: 	    my $tcY=$TY1-$y*($TY1/$wheight);
                    317: 	    $tcX=sprintf('%.2f',$tcX);
                    318: 	    $tcY=sprintf('%.2f',$tcY);
                    319: 	    $result.='\put('.$tcX.','.$tcY.'){\normalsize \bf '.$label.'}'."\n";
                    320: 	    if( $type eq 'text') {
                    321: 		&add_vars($gname,$i,$label,$idx_arr[$i],$value,'',$safeeval);
                    322: 	    } elsif ( $type eq 'image') {
                    323: 		&add_vars($gname,$i,
                    324: 			  $Apache::randomlabel::description[$idx_arr[$i]],
                    325: 			  $idx_arr[$i],$value,$label,$safeeval);
                    326: 	    } else {
                    327: 		&Apache::lonxml::error('Unknown type of label :'.$type.':');
                    328: 	    }
                    329: 	}
                    330:     } elsif ($target eq 'edit') {
                    331: 	$result.=&Apache::edit::end_table;
1.3       tsai      332:     }
1.47      albertel  333:     return $result;
1.1       tsai      334: }
                    335: 
1.5       albertel  336: # <location x="123" y="456" value="some value"/>
1.1       tsai      337: sub start_location {
1.47      albertel  338:     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
                    339:     my $x= &check_int(&Apache::lonxml::get_param('x',$parstack,$safeeval),50);
                    340:     my $y= &check_int(&Apache::lonxml::get_param('y',$parstack,$safeeval),50);
                    341:     my $value= &Apache::lonxml::get_param('value',$parstack,$safeeval);
                    342:     my $result='';
                    343:     push(@Apache::randomlabel::xcoord,$x);
                    344:     push(@Apache::randomlabel::ycoord,$y);
                    345:     push(@Apache::randomlabel::value,$value);
                    346:     if ($target eq 'edit') {
                    347: 	$result.=&Apache::edit::tag_start($target,$token);
                    348: 	$result.=&Apache::edit::text_arg('X:','x',$token,4).
                    349: 	    &Apache::edit::text_arg('Y:','y',$token,4).
                    350: 	    &Apache::edit::entercoords('x','y','attribute','width','height').'&nbsp;&nbsp;&nbsp;'.
                    351: 	    &Apache::edit::text_arg('Value:','value',$token).
                    352: 	    &Apache::edit::end_row();
                    353: 	$result.=&Apache::edit::end_table;
                    354:     } elsif ($target eq 'modified') {
                    355: 	my $constructtag=&Apache::edit::get_new_args($token,$parstack,
                    356: 						    $safeeval,'x','y','value');
                    357: 	if ($constructtag) {
                    358: 	    $result = &Apache::edit::rebuild_tag($token);
                    359: 	    $result.=&Apache::edit::handle_insert();
                    360: 	}
1.4       albertel  361:     }
1.47      albertel  362:     return $result;
1.1       tsai      363: }
                    364: 
                    365: sub end_location {
1.47      albertel  366:     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
                    367:     my @result;
                    368:     if ($target eq 'edit') { @result=('','no') }
                    369:     return @result;
1.1       tsai      370: }
                    371: 
1.2       tsai      372: # <label>$var_abc</label>
1.1       tsai      373: sub start_label {
1.47      albertel  374:     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
                    375:     my $result='';
                    376:     my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval,-2);
                    377:     if ($target eq 'web' || $target eq 'tex' ||
                    378: 	$target eq 'grade' || $target eq 'answer' || $target eq 'analyze') {
                    379: 	my $ltext=&Apache::lonxml::get_all_text("/label",$parser);
                    380: 	$ltext=&Apache::run::evaluate($ltext,$safeeval,$$parstack[-1]);
                    381: 	if ($type eq 'image') {
                    382: 	    &Apache::lonxml::debug("Turning $ltext, $Apache::lonxml::pwd[-1]");
                    383: 	    $ltext=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],
                    384: 						 $ltext);
                    385: 	    &Apache::lonxml::debug("into $ltext");
                    386: 	    my $description = &Apache::lonxml::get_param('description',
                    387: 							 $parstack,$safeeval);
                    388: 	    push(@Apache::randomlabel::description,$description);
                    389: 	}
                    390: 	push(@Apache::randomlabel::label_arr,$ltext);
                    391:     } elsif ($target eq 'edit') {
                    392: 	$result.=&Apache::edit::tag_start($target,$token,"$type Label");
                    393: 	my $text=&Apache::lonxml::get_all_text("/label",$parser);
                    394: 	if ($type eq 'image') {
                    395: 	    $result.=&Apache::edit::end_row().
                    396: 		&Apache::edit::start_spanning_row();
                    397: 	    $result.=&Apache::edit::text_arg('Description:','description',
                    398: 					     $token);
                    399: 	}
                    400: 	if ($type eq 'text') { $result.="Label Text:"; }
                    401: 	if ($type eq 'image') { $result.="Path to image:&nbsp;"; }
                    402: 	$result.=&Apache::edit::editline('',$text,'',50).
                    403: 	    &Apache::edit::end_table();
                    404:     } elsif ($target eq 'modified') {
                    405: 	my $text=$$parser[-1]->get_text("/label");
                    406: 	$result = '<label>';
                    407: 	if ($type eq 'image') {
                    408: 	    my $constructtag=&Apache::edit::get_new_args($token,$parstack,
                    409: 							 $safeeval,
                    410: 							 'description');
                    411: 	    if ($constructtag) {
                    412: 		$result = &Apache::edit::rebuild_tag($token);
                    413: 	    } else {
                    414: 		$result = $token->[4];
                    415: 	    }
                    416: 	}
                    417: 	$result.=&Apache::edit::modifiedfield($token);
1.26      albertel  418:     }
1.47      albertel  419:     return $result;
1.1       tsai      420: }
                    421: 
                    422: sub end_label {
1.47      albertel  423:     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
                    424:     my @result;
                    425:     if ($target eq 'edit') { @result=('','no') }
                    426:     return @result;
1.1       tsai      427: }
                    428: 
                    429: 1;
                    430: __END__
                    431:  

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.