version 1.13, 2024/04/05 22:44:19
|
version 1.14.2.1, 2024/08/06 00:41:33
|
Line 31 use strict;
|
Line 31 use strict;
|
use Apache::loncommon; |
use Apache::loncommon; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::lonxml; |
use Apache::lonxml; |
|
use Apache::edit; |
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use Time::HiRes qw(gettimeofday); |
use Time::HiRes qw(gettimeofday); |
use LONCAPA; |
use LONCAPA; |
Line 46 BEGIN {
|
Line 47 BEGIN {
|
sub start_drawimage { |
sub start_drawimage { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
&Apache::lonxml::register('Apache::drawimage',('text','line','rectangle','arc','fill','polygon','image')); |
&Apache::lonxml::register('Apache::drawimage',('text','line','rectangle','arc','fill','polygon','image')); |
|
push(@Apache::lonxml::namespace,'drawimage'); |
|
my $result; |
if ($target eq 'web' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'tex') { |
my $new_id=&Apache::loncommon::get_cgi_id(); |
my $new_id=&Apache::loncommon::get_cgi_id(); |
if ($cgi_id) { push(@cgi_ids,$cgi_id); } else { undef(%args); } |
if ($cgi_id) { push(@cgi_ids,$cgi_id); } else { undef(%args); } |
$cgi_id=$new_id; |
$cgi_id=$new_id; |
|
} elsif ($target eq 'edit') { |
|
$result .= &Apache::edit::tag_start($target,$token). |
|
&Apache::edit::text_arg('Background color:','bgcolor' ,$token,8). |
|
&Apache::edit::text_arg('Width(pixel):' ,'width' ,$token,6). |
|
&Apache::edit::text_arg('Height(pixel):' ,'height' ,$token,6). |
|
&Apache::edit::text_arg('TeXWidth(mm):' ,'texwidth',$token,6). |
|
&Apache::edit::end_row().&Apache::edit::start_spanning_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'bgcolor','width', |
|
'height','texwidth'); |
|
if ($constructtag) { |
|
$result = &Apache::edit::rebuild_tag($token); |
|
} |
} |
} |
return ''; |
return $result; |
} |
} |
|
|
sub end_drawimage { |
sub end_drawimage { |
Line 100 sub end_drawimage {
|
Line 117 sub end_drawimage {
|
undef($cgi_id); |
undef($cgi_id); |
} |
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'modified') { |
$result.=&Apache::edit::end_table; |
} |
} |
|
pop(@Apache::lonxml::namespace); |
&Apache::lonxml::register('Apache::drawimage', |
&Apache::lonxml::deregister('Apache::drawimage', |
('text','line','rectangle','arc','fill', |
('text','line','rectangle','arc','fill', |
'polygon')); |
'polygon')); |
return $result; |
return $result; |
} |
} |
|
|
Line 114 sub start_text {
|
Line 131 sub start_text {
|
my $result; |
my $result; |
if ($target eq 'web' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'tex') { |
&Apache::lonxml::startredirection(); |
&Apache::lonxml::startredirection(); |
|
} elsif ($target eq 'edit') { |
|
$result = |
|
&Apache::edit::tag_start($target,$token). |
|
&Apache::edit::text_arg('x:','x',$token,6). |
|
&Apache::edit::text_arg('y:','y',$token,6). |
|
&Apache::edit::text_arg('font:','font',$token,12). |
|
&Apache::edit::text_arg('color:','color',$token,8). |
|
&Apache::edit::select_arg('direction:','direction', |
|
['vertical','horizontal'],$token). |
|
&Apache::edit::text_arg('rotation:','rotation',$token,6); |
|
my $text=&Apache::lonxml::get_all_text('/text',$parser,$style); |
|
$result .= |
|
&Apache::edit::editfield($token->[1],$text,'Text',60,2). |
|
&Apache::edit::end_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'x','y', |
|
'font','color', |
|
'direction','rotation'); |
|
if ($constructtag) { |
|
$result = &Apache::edit::rebuild_tag($token); |
|
} else { |
|
$result = $token->[4]; |
|
} |
|
$result .= &Apache::edit::modifiedfield('/text',$parser); |
} |
} |
return $result; |
return $result; |
} |
} |
Line 133 sub end_text {
|
Line 175 sub end_text {
|
$args{"cgi.$cgi_id.OBJTYPE"}.='LABEL:'; |
$args{"cgi.$cgi_id.OBJTYPE"}.='LABEL:'; |
my $i=$args{"cgi.$cgi_id.OBJCOUNT"}++; |
my $i=$args{"cgi.$cgi_id.OBJCOUNT"}++; |
$args{"cgi.$cgi_id.OBJ$i"}=join(':',($x,$y,$text,$font,$color,$direction,$rotation)); |
$args{"cgi.$cgi_id.OBJ$i"}=join(':',($x,$y,$text,$font,$color,$direction,$rotation)); |
|
} elsif ($target eq 'edit') { |
|
$result=&Apache::edit::end_table(); |
} |
} |
return $result; |
return $result; |
} |
} |
Line 150 sub start_line {
|
Line 194 sub start_line {
|
my $i=$args{"cgi.$cgi_id.OBJCOUNT"}++; |
my $i=$args{"cgi.$cgi_id.OBJCOUNT"}++; |
$args{"cgi.$cgi_id.OBJ$i"}=join(':',($x1,$y1,$x2,$y2,$color,$thickness)); |
$args{"cgi.$cgi_id.OBJ$i"}=join(':',($x1,$y1,$x2,$y2,$color,$thickness)); |
$args{"cgi.$cgi_id.OBJTYPE"}.='LINE:'; |
$args{"cgi.$cgi_id.OBJTYPE"}.='LINE:'; |
|
} elsif ($target eq 'edit') { |
|
$result .= |
|
&Apache::edit::tag_start($target,$token). |
|
&Apache::edit::text_arg('x1:','x1' ,$token,6). |
|
&Apache::edit::text_arg('y1:','y1' ,$token,6). |
|
&Apache::edit::text_arg('x2:','x2' ,$token,6). |
|
&Apache::edit::text_arg('y2:','y2' ,$token,6). |
|
&Apache::edit::text_arg('color:','color',$token,8). |
|
&Apache::edit::text_arg('thickness:','thickness',$token,6). |
|
&Apache::edit::end_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'x1','y1', |
|
'x2','y2','color','thickness'); |
|
if ($constructtag) { |
|
$result = &Apache::edit::rebuild_tag($token); |
|
} |
} |
} |
return $result; |
return $result; |
} |
} |
Line 157 sub start_line {
|
Line 218 sub start_line {
|
sub end_line { |
sub end_line { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result; |
my $result; |
|
if ($target eq 'edit') { |
|
$result=&Apache::edit::end_table(); |
|
} |
return $result; |
return $result; |
} |
} |
|
|
Line 177 sub start_rectangle {
|
Line 241 sub start_rectangle {
|
$args{"cgi.$cgi_id.OBJ$i"}= |
$args{"cgi.$cgi_id.OBJ$i"}= |
join(':',($x1,$y1,$x2,$y2,$color,$thickness,$filled)); |
join(':',($x1,$y1,$x2,$y2,$color,$thickness,$filled)); |
$args{"cgi.$cgi_id.OBJTYPE"}.='RECTANGLE:'; |
$args{"cgi.$cgi_id.OBJTYPE"}.='RECTANGLE:'; |
|
} elsif ($target eq 'edit') { |
|
$result .= |
|
&Apache::edit::tag_start($target,$token). |
|
&Apache::edit::text_arg('x1:','x1' ,$token,6). |
|
&Apache::edit::text_arg('y1:','y1' ,$token,6). |
|
&Apache::edit::text_arg('x2:','x2' ,$token,6). |
|
&Apache::edit::text_arg('y2:','y2' ,$token,6). |
|
&Apache::edit::text_arg('color:','color',$token,8). |
|
&Apache::edit::text_arg('thickness:','thickness',$token,6). |
|
&Apache::edit::select_arg('filled:','filled', |
|
['no','yes'],$token). |
|
&Apache::edit::end_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'x1','y1', |
|
'x2','y2','color','thickness', |
|
'filled'); |
|
if ($constructtag) { |
|
$result = &Apache::edit::rebuild_tag($token); |
|
} |
} |
} |
return $result; |
return $result; |
} |
} |
Line 184 sub start_rectangle {
|
Line 268 sub start_rectangle {
|
sub end_rectangle { |
sub end_rectangle { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result; |
my $result; |
|
if ($target eq 'edit') { |
|
$result=&Apache::edit::end_table(); |
|
} |
return $result; |
return $result; |
} |
} |
|
|
Line 205 sub start_arc {
|
Line 292 sub start_arc {
|
join(':',($x,$y,$width,$height,$start,$end,$color,$thickness, |
join(':',($x,$y,$width,$height,$start,$end,$color,$thickness, |
$filled)); |
$filled)); |
$args{"cgi.$cgi_id.OBJTYPE"}.='ARC:'; |
$args{"cgi.$cgi_id.OBJTYPE"}.='ARC:'; |
|
} elsif ($target eq 'edit') { |
|
$result .= |
|
&Apache::edit::tag_start($target,$token). |
|
&Apache::edit::text_arg('x:','x',$token,6). |
|
&Apache::edit::text_arg('y:','y',$token,6). |
|
&Apache::edit::text_arg('width:','width',$token,6). |
|
&Apache::edit::text_arg('height:','height',$token,6). |
|
&Apache::edit::text_arg('start:','start',$token,6). |
|
&Apache::edit::text_arg('end:','end',$token,6). |
|
&Apache::edit::text_arg('color:','color',$token,8). |
|
&Apache::edit::text_arg('thickness:','thickness',$token,6). |
|
&Apache::edit::select_arg('filled:','filled', |
|
['no','yes'],$token). |
|
&Apache::edit::end_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'x','y', |
|
'width','height', |
|
'start','end', |
|
'color','thickness', |
|
'filled'); |
|
if ($constructtag) { |
|
$result = &Apache::edit::rebuild_tag($token); |
|
} |
} |
} |
return $result; |
return $result; |
} |
} |
Line 212 sub start_arc {
|
Line 323 sub start_arc {
|
sub end_arc { |
sub end_arc { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result; |
my $result; |
|
if ($target eq 'edit') { |
|
$result=&Apache::edit::end_table(); |
|
} |
return $result; |
return $result; |
} |
} |
|
|
Line 225 sub start_fill {
|
Line 339 sub start_fill {
|
my $i=$args{"cgi.$cgi_id.OBJCOUNT"}++; |
my $i=$args{"cgi.$cgi_id.OBJCOUNT"}++; |
$args{"cgi.$cgi_id.OBJ$i"}=join(':',($x,$y,$color)); |
$args{"cgi.$cgi_id.OBJ$i"}=join(':',($x,$y,$color)); |
$args{"cgi.$cgi_id.OBJTYPE"}.='FILL:'; |
$args{"cgi.$cgi_id.OBJTYPE"}.='FILL:'; |
|
} elsif ($target eq 'edit') { |
|
$result .= |
|
&Apache::edit::tag_start($target,$token). |
|
&Apache::edit::text_arg('x:','x' ,$token,6). |
|
&Apache::edit::text_arg('y:','y' ,$token,6). |
|
&Apache::edit::text_arg('color:','color',$token,8). |
|
&Apache::edit::end_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'x','y', |
|
'color'); |
|
if ($constructtag) { |
|
$result = &Apache::edit::rebuild_tag($token); |
|
} |
} |
} |
return $result; |
return $result; |
} |
} |
Line 232 sub start_fill {
|
Line 360 sub start_fill {
|
sub end_fill { |
sub end_fill { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result; |
my $result; |
|
if ($target eq 'edit') { |
|
$result=&Apache::edit::end_table(); |
|
} |
return $result; |
return $result; |
} |
} |
|
|
Line 239 my @polygon;
|
Line 370 my @polygon;
|
sub start_polygon { |
sub start_polygon { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result; |
my $result; |
|
push(@Apache::lonxml::namespace,'polygon'); |
&Apache::lonxml::register('Apache::drawimage',('point')); |
&Apache::lonxml::register('Apache::drawimage',('point')); |
if ($target eq 'web' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'tex') { |
undef(@polygon); |
undef(@polygon); |
|
} elsif ($target eq 'edit') { |
|
$result = |
|
&Apache::edit::tag_start($target,$token). |
|
&Apache::edit::text_arg('color:','color',$token,8). |
|
&Apache::edit::select_arg('Open:','open', |
|
['no','yes'],$token). |
|
&Apache::edit::select_arg('Filled:','filled', |
|
['no','yes'],$token). |
|
&Apache::edit::text_arg('thickness:','thickness',$token,6). |
|
&Apache::edit::end_row(). |
|
&Apache::edit::start_spanning_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'open','filled'); |
|
if ($constructtag) { |
|
$result = &Apache::edit::rebuild_tag($token); |
|
} |
} |
} |
return $result; |
return $result; |
} |
} |
Line 259 sub end_polygon {
|
Line 408 sub end_polygon {
|
$args{"cgi.$cgi_id.OBJTYPE"}.='POLYGON:'; |
$args{"cgi.$cgi_id.OBJTYPE"}.='POLYGON:'; |
$args{"cgi.$cgi_id.OBJ$i"}=join(':',($color,$thickness,$open,$filled)); |
$args{"cgi.$cgi_id.OBJ$i"}=join(':',($color,$thickness,$open,$filled)); |
$args{"cgi.$cgi_id.OBJEXTRA$i"}=join('-',@polygon); |
$args{"cgi.$cgi_id.OBJEXTRA$i"}=join('-',@polygon); |
|
} elsif ($target eq 'edit') { |
|
$result=&Apache::edit::end_table(); |
} |
} |
|
pop(@Apache::lonxml::namespace); |
&Apache::lonxml::deregister('Apache::drawimage',('point')); |
&Apache::lonxml::deregister('Apache::drawimage',('point')); |
return $result; |
return $result; |
} |
} |
Line 271 sub start_point {
|
Line 423 sub start_point {
|
my $x = &Apache::lonxml::get_param('x',$parstack,$safeeval); |
my $x = &Apache::lonxml::get_param('x',$parstack,$safeeval); |
my $y = &Apache::lonxml::get_param('y',$parstack,$safeeval); |
my $y = &Apache::lonxml::get_param('y',$parstack,$safeeval); |
push (@polygon,"($x,$y)"); |
push (@polygon,"($x,$y)"); |
|
} elsif ($target eq 'edit') { |
|
$result.= |
|
&Apache::edit::tag_start($target,$token). |
|
&Apache::edit::text_arg('x:','x' ,$token,6). |
|
&Apache::edit::text_arg('y:','y' ,$token,6). |
|
&Apache::edit::end_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'x','y'); |
|
if ($constructtag) { |
|
$result = &Apache::edit::rebuild_tag($token); |
|
} |
} |
} |
return $result; |
return $result; |
} |
} |
Line 278 sub start_point {
|
Line 442 sub start_point {
|
sub end_point { |
sub end_point { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result; |
my $result; |
|
if ($target eq 'edit') { |
|
$result=&Apache::edit::end_table(); |
|
} |
return $result; |
return $result; |
} |
} |
|
|
Line 286 sub start_image {
|
Line 453 sub start_image {
|
my $result; |
my $result; |
if ($target eq 'web' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'tex') { |
&Apache::lonxml::startredirection(); |
&Apache::lonxml::startredirection(); |
|
} elsif ($target eq 'edit') { |
|
my $bgimg=&Apache::lonxml::get_all_text('/image',$parser,$style); |
|
$Apache::edit::bgimgsrc=$bgimg; |
|
$Apache::edit::bgimgsrcdepth=$Apache::lonxml::curdepth; |
|
my $only = join(',',&Apache::loncommon::filecategorytypes('Pictures')); |
|
$result=&Apache::edit::tag_start($target,$token,'Background Image'). |
|
&Apache::edit::editline($token->[1],$bgimg,'Image Source File',40). |
|
&Apache::edit::browse(undef,'textnode',undef,$only).' '. |
|
&Apache::edit::search(undef,'textnode').'<br />'. |
|
&Apache::edit::text_arg('x:','x',$token,6). |
|
&Apache::edit::text_arg('y:','y',$token,6). |
|
&Apache::edit::text_arg('clipx:','clipx',$token,6). |
|
&Apache::edit::text_arg('clipy:','clipy',$token,6). |
|
&Apache::edit::text_arg('Clip width(pixel):','clipwidth',$token,6). |
|
&Apache::edit::text_arg('Clip height(pixel):','clipheight',$token,6). |
|
&Apache::edit::text_arg('Scaled width:','scaledwidth',$token,6). |
|
&Apache::edit::text_arg('Scaled height:','scaledheight',$token,6). |
|
&Apache::edit::text_arg('Transparent:','transparent',$token,6). |
|
&Apache::edit::end_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'x','y', |
|
'clipx','clipy','clipwidth','clipheight', |
|
'scaledwidth','scaledheight','transparent'); |
|
if ($constructtag) { |
|
$result = &Apache::edit::rebuild_tag($token); |
|
} else { |
|
$result = $token->[4]; |
|
} |
|
$result .= &Apache::edit::modifiedfield('/image',$parser); |
} |
} |
return $result; |
return $result; |
} |
} |
Line 315 sub end_image {
|
Line 512 sub end_image {
|
$args{"cgi.$cgi_id.OBJ$i"} = |
$args{"cgi.$cgi_id.OBJ$i"} = |
join(':',($x,$y,&escape($bgimg),$transparent, |
join(':',($x,$y,&escape($bgimg),$transparent, |
$clipx,$clipy,$scaledwidth,$scaledheight,$clipwidth,$clipheight)); |
$clipx,$clipy,$scaledwidth,$scaledheight,$clipwidth,$clipheight)); |
|
} elsif ($target eq 'edit') { |
|
$result=&Apache::edit::end_table(); |
} |
} |
return $result; |
return $result; |
} |
} |