version 1.6, 2004/09/09 20:35:10
|
version 1.8, 2005/04/07 06:56:21
|
Line 25
|
Line 25
|
package Apache::imagechoice; |
package Apache::imagechoice; |
use strict; |
use strict; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
|
use Apache::lonnet; |
|
|
sub deletedata { |
sub deletedata { |
my ($id)=@_; |
my ($id)=@_; |
Line 56 ENDSUBM
|
Line 56 ENDSUBM
|
sub storedata { |
sub storedata { |
my ($r,$type,$filename,$id)=@_; |
my ($r,$type,$filename,$id)=@_; |
|
|
my (undef,@coords)=split(':',$ENV{"imagechoice.$id.coords"}); |
my (undef,@coords)=split(':',$env{"imagechoice.$id.coords"}); |
|
|
my ($output,$needimage); |
my ($output,$needimage); |
|
|
if ($ENV{"imagechoice.$id.formwidth"}) { |
if ($env{"imagechoice.$id.formwidth"}) { |
$output.='opener.document.forms.'.$ENV{"imagechoice.$id.formname"}.'.'.$ENV{"imagechoice.$id.formwidth"}.'.value=document.pickimg.width;'; |
$output.='opener.document.forms.'.$env{"imagechoice.$id.formname"}.'.'.$env{"imagechoice.$id.formwidth"}.'.value=document.pickimg.width;'; |
$needimage=1; |
$needimage=1; |
} |
} |
if ($ENV{"imagechoice.$id.formheight"}) { |
if ($env{"imagechoice.$id.formheight"}) { |
$output.='opener.document.forms.'.$ENV{"imagechoice.$id.formname"}.'.'.$ENV{"imagechoice.$id.formheight"}.'.value=document.pickimg.height;'; |
$output.='opener.document.forms.'.$env{"imagechoice.$id.formname"}.'.'.$env{"imagechoice.$id.formheight"}.'.value=document.pickimg.height;'; |
$needimage=1; |
$needimage=1; |
} |
} |
|
|
if ($type eq 'point') { |
if ($type eq 'point') { |
my (undef,$x,$y)=split(':',$ENV{"imagechoice.$id.coords"}); |
my (undef,$x,$y)=split(':',$env{"imagechoice.$id.coords"}); |
if ($ENV{"imagechoice.$id.formx"}) { |
if ($env{"imagechoice.$id.formx"}) { |
$output.='opener.document.forms.'.$ENV{"imagechoice.$id.formname"}.'.'.$ENV{"imagechoice.$id.formx"}.'.value='.$x.';'; |
$output.='opener.document.forms.'.$env{"imagechoice.$id.formname"}.'.'.$env{"imagechoice.$id.formx"}.'.value='.$x.';'; |
} |
} |
if ($ENV{"imagechoice.$id.formy"}) { |
if ($env{"imagechoice.$id.formy"}) { |
$output.='opener.document.forms.'.$ENV{"imagechoice.$id.formname"}.'.'.$ENV{"imagechoice.$id.formy"}.'.value='.$y.';'; |
$output.='opener.document.forms.'.$env{"imagechoice.$id.formname"}.'.'.$env{"imagechoice.$id.formy"}.'.value='.$y.';'; |
} |
} |
} elsif ($type eq 'polygon' or $type eq 'box') { |
} elsif ($type eq 'polygon' or $type eq 'box') { |
my $coordstr; |
my $coordstr; |
Line 83 sub storedata {
|
Line 83 sub storedata {
|
$coordstr.='('.shift(@coords).','.shift(@coords).')-'; |
$coordstr.='('.shift(@coords).','.shift(@coords).')-'; |
} |
} |
chop($coordstr); |
chop($coordstr); |
$output.='opener.document.forms.'.$ENV{"imagechoice.$id.formname"}.'.'.$ENV{"imagechoice.$id.formcoord"}.'.value="'.$coordstr.'";'; |
$output.='opener.document.forms.'.$env{"imagechoice.$id.formname"}.'.'.$env{"imagechoice.$id.formcoord"}.'.value="'.$coordstr.'";'; |
} |
} |
|
|
&deletedata($id); |
&deletedata($id); |
Line 95 sub getcoord {
|
Line 95 sub getcoord {
|
my $heading='Select Position on Image'; |
my $heading='Select Position on Image'; |
my $nextstage=''; |
my $nextstage=''; |
if ($type eq 'box') { |
if ($type eq 'box') { |
my (undef,@coords)=split(':',$ENV{"imagechoice.$id.coords"}); |
my (undef,@coords)=split(':',$env{"imagechoice.$id.coords"}); |
my $step=scalar(@coords)/2; |
my $step=scalar(@coords)/2; |
if ($step == 0) { |
if ($step == 0) { |
$heading='Select First Coordinate on Image'; |
$heading='Select First Coordinate on Image'; |
Line 131 END
|
Line 131 END
|
|
|
sub savecoord { |
sub savecoord { |
my ($id,$type)=@_; |
my ($id,$type)=@_; |
if (defined($ENV{"form.image.x"}) && defined($ENV{"form.image.y"})) { |
if (defined($env{"form.image.x"}) && defined($env{"form.image.y"})) { |
my $data; |
my $data; |
if ($type eq 'point') { |
if ($type eq 'point') { |
$data=join(':',(undef,$ENV{"form.image.x"},$ENV{"form.image.y"})); |
$data=join(':',(undef,$env{"form.image.x"},$env{"form.image.y"})); |
} else { |
} else { |
$data=join(':',($ENV{"imagechoice.$id.coords"}, |
$data=join(':',($env{"imagechoice.$id.coords"}, |
$ENV{"form.image.x"},$ENV{"form.image.y"})); |
$env{"form.image.x"},$env{"form.image.y"})); |
} |
} |
&Apache::lonnet::appenv("imagechoice.$id.coords"=>$data); |
&Apache::lonnet::appenv("imagechoice.$id.coords"=>$data); |
} |
} |
return int(scalar(split(':',$ENV{"imagechoice.$id.coords"}))/2); |
return int(scalar(split(':',$env{"imagechoice.$id.coords"}))/2); |
} |
} |
|
|
sub add_obj { |
sub add_obj { |
Line 174 sub drawX {
|
Line 174 sub drawX {
|
|
|
sub drawPolygon { |
sub drawPolygon { |
my ($data,$id,$imid)=@_; |
my ($data,$id,$imid)=@_; |
my (undef,@coords)=split(':',$ENV{"imagechoice.$id.coords"}); |
my (undef,@coords)=split(':',$env{"imagechoice.$id.coords"}); |
my $coordstr; |
my $coordstr; |
while (@coords) { |
while (@coords) { |
$coordstr.='('.shift(@coords).','.shift(@coords).')-'; |
$coordstr.='('.shift(@coords).','.shift(@coords).')-'; |
Line 190 sub drawPolygon {
|
Line 190 sub drawPolygon {
|
|
|
sub drawBox { |
sub drawBox { |
my ($data,$id,$imid)=@_; |
my ($data,$id,$imid)=@_; |
my (undef,@coords)=split(':',$ENV{"imagechoice.$id.coords"}); |
my (undef,@coords)=split(':',$env{"imagechoice.$id.coords"}); |
if (scalar(@coords) < 4) { return ''; } |
if (scalar(@coords) < 4) { return ''; } |
my $width = 1; |
my $width = 1; |
my $extrawidth = 2; |
my $extrawidth = 2; |
Line 202 sub drawBox {
|
Line 202 sub drawBox {
|
sub drawimage { |
sub drawimage { |
my ($r,$type,$filename,$id)=@_; |
my ($r,$type,$filename,$id)=@_; |
my $imid=&Apache::loncommon::get_cgi_id(); |
my $imid=&Apache::loncommon::get_cgi_id(); |
my (undef,@coords)=split(':',$ENV{"imagechoice.$id.coords"}); |
my (undef,@coords)=split(':',$env{"imagechoice.$id.coords"}); |
if (scalar(@coords) < 2) { return &Apache::lonnet::hreflocation('',$filename); } |
if (scalar(@coords) < 2) { return &Apache::lonnet::hreflocation('',$filename); } |
my %data; |
my %data; |
$data{"cgi.$imid.BGIMG"}=$filename; |
$data{"cgi.$imid.BGIMG"}=$filename; |
Line 217 sub drawimage {
|
Line 217 sub drawimage {
|
|
|
sub handler { |
sub handler { |
my ($r)=@_; |
my ($r)=@_; |
$r->content_type('text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
|
$r->send_http_header; |
my %data; |
my %data; |
my (undef,$id) = split(/=/,$ENV{'QUERY_STRING'}); |
my (undef,$id) = split(/=/,$ENV{'QUERY_STRING'}); |
my $filename = &Apache::lonnet::unescape($ENV{"imagechoice.$id.file"}); |
my $filename = &Apache::lonnet::unescape($env{"imagechoice.$id.file"}); |
my $formname = $ENV{"imagechoice.$id.formname"}; |
my $formname = $env{"imagechoice.$id.formname"}; |
if ($ENV{'form.cancel'} eq 'Cancel') { |
if ($env{'form.cancel'} eq 'Cancel') { |
&deletedata($id); |
&deletedata($id); |
&closewindow($r,'',$filename); |
&closewindow($r,'',$filename); |
return OK; |
return OK; |
} |
} |
my $type=$ENV{"imagechoice.$id.type"}; |
my $type=$env{"imagechoice.$id.type"}; |
if (defined($ENV{'form.type'})) { $type=$ENV{'form.type'}; } |
if (defined($env{'form.type'})) { $type=$env{'form.type'}; } |
my $numcoords=&savecoord($id,$type); |
my $numcoords=&savecoord($id,$type); |
my $imurl=&drawimage($r,$type,$filename,$id); |
my $imurl=&drawimage($r,$type,$filename,$id); |
if (($ENV{'form.finish'} eq 'Finish')) { |
if (($env{'form.finish'} eq 'Finish')) { |
&storedata($r,$type,$imurl,$id); |
&storedata($r,$type,$imurl,$id); |
} else { |
} else { |
&getcoord($r,$type,$imurl,$id); |
&getcoord($r,$type,$imurl,$id); |