version 1.56, 2004/01/09 00:53:19
|
version 1.57, 2004/02/11 21:58:15
|
Line 67 my %args;
|
Line 67 my %args;
|
my $cgi_id; |
my $cgi_id; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::randomlabel',('randomlabel','labelgroup','location','label')); |
&Apache::lonxml::register('Apache::randomlabel',('randomlabel','labelgroup','location','label','bgimg')); |
} |
} |
|
|
sub check_int { |
sub check_int { |
Line 93 sub start_randomlabel {
|
Line 93 sub start_randomlabel {
|
$bgimg='/home/httpd/html/adm/lonKaputt/lonlogo_broken.gif'; |
$bgimg='/home/httpd/html/adm/lonKaputt/lonlogo_broken.gif'; |
} |
} |
} |
} |
my $w= &check_int(&Apache::lonxml::get_param('width',$parstack,$safeeval)); |
|
my $h= &check_int(&Apache::lonxml::get_param('height',$parstack,$safeeval)); |
|
my $texwidth=&adjust_textwidth(&Apache::lonxml::get_param('texwidth',$parstack,$safeeval,undef,1)); |
|
if (!$texwidth) { $texwidth=90; } |
|
$Apache::randomlabel::tlabel_cnt=0; |
$Apache::randomlabel::tlabel_cnt=0; |
$Apache::randomlabel::ilabel_cnt=0; |
$Apache::randomlabel::ilabel_cnt=0; |
if ($target eq 'web') { |
if ($target eq 'web') { |
Line 104 sub start_randomlabel {
|
Line 100 sub start_randomlabel {
|
%args=(); |
%args=(); |
$args{"cgi.$cgi_id.BGIMG"}=&Apache::lonnet::escape($bgimg); |
$args{"cgi.$cgi_id.BGIMG"}=&Apache::lonnet::escape($bgimg); |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
my $newbgimg = $bgimg; |
my $w= &check_int(&Apache::lonxml::get_param('width',$parstack,$safeeval)); |
$bgimg=~s/\.(gif|jpg|png|jpeg)$/\.eps/i; |
my $h= &check_int(&Apache::lonxml::get_param('height',$parstack,$safeeval)); |
$bgimg= &Apache::lonnet::filelocation($bgimg); |
my $texwidth=&adjust_textwidth(&Apache::lonxml::get_param('texwidth',$parstack,$safeeval,undef,1)); |
$bgimg=~s|http:/[^/]*|/home/httpd/html|; |
if (!$texwidth) { $texwidth=90; } |
$bgimg=~s|/$||; |
$result.=&make_eps_image($bgimg,$texwidth,$h,$w); |
#if no eps file try to replicate it |
|
if (not-e $bgimg) { |
|
if (&Apache::lonnet::repcopy($bgimg) ne OK ) { |
|
#if replication failed try to find ps file |
|
$bgimg=~s/\.eps$/\.ps/; |
|
#if no ps file try to replicate it |
|
if (not -e $bgimg && |
|
&Apache::lonnet::repcopy($bgimg) ne OK) { |
|
#if replication failed try to produce eps file dynamically |
|
$bgimg=~s/\.ps$/\.eps/; |
|
my $temp_file; |
|
my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; |
|
$temp_file = Apache::File->new('>>'.$filename); |
|
$newbgimg =~ s|(.*)/res/|/home/httpd/html/res/|; |
|
print $temp_file "$newbgimg\n"; |
|
$bgimg=~s|/home/httpd/html/res|/home/httpd/prtspool|; |
|
$bgimg=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|; |
|
} |
|
} |
|
} |
|
$bgimg=~s|/$||; |
|
my $dirtywidth=$texwidth+5; |
|
$result.='\vspace*{2mm}\noindent \parbox{'.$dirtywidth.' mm}{ \noindent \epsfxsize='. |
|
$texwidth.' mm \epsffile{'.$bgimg.'}\setlength{\unitlength}{1mm} \begin{picture}('. |
|
$texwidth.','.$texwidth*$h/$w.')(0,-'.$texwidth*$h/$w.')'; |
|
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result.=&Apache::edit::tag_start($target,$token); |
$result.=&Apache::edit::tag_start($target,$token); |
$Apache::edit::bgimgsrc= |
$Apache::edit::bgimgsrc= |
Line 184 sub end_randomlabel {
|
Line 155 sub end_randomlabel {
|
return $result; |
return $result; |
} |
} |
|
|
|
sub start_bgimg { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
my $result=''; |
|
if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { |
|
&Apache::lonxml::startredirection; |
|
} |
|
return $result; |
|
} |
|
|
|
sub end_bgimg { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
my $result=''; |
|
if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { |
|
my $bgimg=&Apache::lonxml::endredirection; |
|
&Apache::lonnet::logthis("bgimg is -$bgimg-"); |
|
if ($target eq 'web') { |
|
$bgimg=&Apache::imageresponse::clean_up_image($bgimg); |
|
$args{"cgi.$cgi_id.BGIMG"}=&Apache::lonnet::escape($bgimg); |
|
} elsif ($target eq 'tex') { |
|
my $w=&check_int(&Apache::lonxml::get_param('width',$parstack,$safeeval,-2)); |
|
my $h=&check_int(&Apache::lonxml::get_param('height',$parstack,$safeeval,-2)); |
|
my $texwidth=&adjust_textwidth(&Apache::lonxml::get_param('texwidth',$parstack,$safeeval,undef,-2)); |
|
if (!$texwidth) { $texwidth=90; } |
|
$result.=&make_eps_image($bgimg,$texwidth,$h,$w); |
|
} |
|
} |
|
return $result; |
|
} |
|
|
|
sub make_eps_image { |
|
my ($bgimg,$texwidth,$h,$w)=@_; |
|
my $newbgimg = $bgimg; |
|
$bgimg=~s/\.(gif|jpg|png|jpeg)$/\.eps/i; |
|
$bgimg= &Apache::lonnet::filelocation($bgimg); |
|
$bgimg=~s|http:/[^/]*|/home/httpd/html|; |
|
$bgimg=~s|/$||; |
|
#if no eps file try to replicate it |
|
if (not-e $bgimg) { |
|
if (&Apache::lonnet::repcopy($bgimg) ne OK ) { |
|
#if replication failed try to find ps file |
|
$bgimg=~s/\.eps$/\.ps/; |
|
#if no ps file try to replicate it |
|
if (not -e $bgimg && |
|
&Apache::lonnet::repcopy($bgimg) ne OK) { |
|
#if replication failed try to produce eps file dynamically |
|
$bgimg=~s/\.ps$/\.eps/; |
|
my $temp_file; |
|
my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; |
|
$temp_file = Apache::File->new('>>'.$filename); |
|
$newbgimg =~ s|(.*)/res/|/home/httpd/html/res/|; |
|
print $temp_file "$newbgimg\n"; |
|
$bgimg=~s|/home/httpd/html/res|/home/httpd/prtspool|; |
|
$bgimg=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|; |
|
} |
|
} |
|
} |
|
$bgimg=~s|/$||; |
|
my $dirtywidth=$texwidth+5; |
|
my $result.='\vspace*{2mm}\noindent \parbox{'.$dirtywidth. |
|
' mm}{ \noindent \epsfxsize='.$texwidth.' mm \epsffile{'.$bgimg. |
|
'}\setlength{\unitlength}{1mm} \begin{picture}('. |
|
$texwidth.','.$texwidth*$h/$w.')(0,-'.$texwidth*$h/$w.')'; |
|
return $result; |
|
} |
|
|
sub adjust_textwidth { |
sub adjust_textwidth { |
my $texwidth=shift; |
my $texwidth=shift; |
my $pagewidth=$ENV{'form.textwidth'}; |
my $pagewidth=$ENV{'form.textwidth'}; |
Line 379 sub start_label {
|
Line 415 sub start_label {
|
my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval,-2); |
my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval,-2); |
if ($target eq 'web' || $target eq 'tex' || |
if ($target eq 'web' || $target eq 'tex' || |
$target eq 'grade' || $target eq 'answer' || $target eq 'analyze') { |
$target eq 'grade' || $target eq 'answer' || $target eq 'analyze') { |
my $ltext=&Apache::lonxml::get_all_text("/label",$parser); |
&Apache::lonxml::startredirection; |
$ltext=&Apache::run::evaluate($ltext,$safeeval,$$parstack[-1]); |
|
if ($type eq 'image') { |
|
&Apache::lonxml::debug("Turning $ltext, $Apache::lonxml::pwd[-1]"); |
|
$ltext=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1], |
|
$ltext); |
|
&Apache::lonxml::debug("into $ltext"); |
|
my $description = &Apache::lonxml::get_param('description', |
|
$parstack,$safeeval); |
|
push(@Apache::randomlabel::description,$description); |
|
} |
|
push(@Apache::randomlabel::label_arr,$ltext); |
|
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result.=&Apache::edit::tag_start($target,$token,"$type Label"); |
$result.=&Apache::edit::tag_start($target,$token,"$type Label"); |
my $text=&Apache::lonxml::get_all_text("/label",$parser); |
my $text=&Apache::lonxml::get_all_text("/label",$parser); |
Line 424 sub start_label {
|
Line 449 sub start_label {
|
sub end_label { |
sub end_label { |
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=('','no') } |
if ($target eq 'edit') { |
|
@result=('','no') ; |
|
} elsif ($target eq 'web' || $target eq 'tex' || $target eq 'grade' || |
|
$target eq 'answer' || $target eq 'analyze') { |
|
my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval,-2); |
|
my $ltext=&Apache::lonxml::endredirection; |
|
if ($type eq 'image') { |
|
&Apache::lonxml::debug("Turning $ltext, $Apache::lonxml::pwd[-1]"); |
|
$ltext=&Apache::imageresponse::clean_up_image($ltext); |
|
# $ltext=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1], |
|
# $ltext); |
|
&Apache::lonxml::debug("into $ltext"); |
|
my $description = &Apache::lonxml::get_param('description', |
|
$parstack,$safeeval); |
|
push(@Apache::randomlabel::description,$description); |
|
} |
|
push(@Apache::randomlabel::label_arr,$ltext); |
|
} |
return @result; |
return @result; |
} |
} |
|
|