version 1.363, 2005/02/22 11:43:05
|
version 1.406, 2005/12/15 18:36:23
|
Line 1
|
Line 1
|
# The LearningOnline Network |
# The LearningOnline Network |
# Printout |
# Printout |
# |
# |
# $Id$ |
# $Id$ |
Line 42 use Apache::lonratedt;
|
Line 42 use Apache::lonratedt;
|
use POSIX qw(strftime); |
use POSIX qw(strftime); |
use Apache::lonlocal; |
use Apache::lonlocal; |
|
|
|
my %perm; |
|
|
|
# |
|
# Convert a numeric code to letters |
|
# |
|
sub num_to_letters { |
|
my ($num) = @_; |
|
my @nums= split('',$num); |
|
my @num_to_let=('A'..'Z'); |
|
my $word; |
|
foreach my $digit (@nums) { $word.=$num_to_let[$digit]; } |
|
return $word; |
|
} |
|
# Convert a letter code to numeric. |
|
# |
|
sub letters_to_num { |
|
my ($letters) = @_; |
|
my @letters = split('', uc($letters)); |
|
my %substitution; |
|
my $digit = 0; |
|
foreach my $letter ('A'..'J') { |
|
$substitution{$letter} = $digit; |
|
$digit++; |
|
} |
|
# The substitution is done as below to preserve leading |
|
# zeroes which are needed to keep the code size exact |
|
# |
|
my $result =""; |
|
foreach my $letter (@letters) { |
|
$result.=$substitution{$letter}; |
|
} |
|
return $result; |
|
} |
|
|
|
# Determine if a code is a valid numeric code. Valid |
|
# numeric codes must be comprised entirely of digits and |
|
# have a correct number of digits. |
|
# |
|
# Parameters: |
|
# value - proposed code value. |
|
# num_digits - Number of digits required. |
|
# |
|
sub is_valid_numeric_code { |
|
my ($value, $num_digits) = @_; |
|
# Remove leading/trailing whitespace; |
|
$value =~ s/^\s*//g; |
|
$value =~ s/\s*$//g; |
|
|
|
# All digits? |
|
if ($value !~ /^[0-9]+$/) { |
|
return "Numeric code $value has invalid characters - must only be digits"; |
|
} |
|
if (length($value) != $num_digits) { |
|
return "Numeric code $value incorrect number of digits (correct = $num_digits)"; |
|
} |
|
return undef; |
|
} |
|
# Determines if a code is a valid alhpa code. Alpha codes |
|
# are ciphers that map [A-J,a-j] -> 0..9 0..9. |
|
# They also have a correct digit count. |
|
# Parameters: |
|
# value - Proposed code value. |
|
# num_letters - correct number of letters. |
|
# Note: |
|
# leading and trailing whitespace are ignored. |
|
# |
|
sub is_valid_alpha_code { |
|
my ($value, $num_letters) = @_; |
|
|
|
# strip leading and trailing spaces. |
|
|
|
$value =~ s/^\s*//g; |
|
$value =~ s/\s*$//g; |
|
|
|
# All alphas in the right range? |
|
if ($value !~ /^[A-J,a-j]+$/) { |
|
return "Invalid letter code $value must only contain A-J"; |
|
} |
|
if (length($value) != $num_letters) { |
|
return "Letter code $value has incorrect number of letters (correct = $num_letters)"; |
|
} |
|
return undef; |
|
} |
|
|
|
# Determine if a code entered by the user in a helper is valid. |
|
# valid depends on the code type and the type of code selected. |
|
# The type of code selected can either be numeric or |
|
# Alphabetic. If alphabetic, the code, in fact is a simple |
|
# substitution cipher for the actual numeric code: 0->A, 1->B ... |
|
# We'll be nice and be case insensitive for alpha codes. |
|
# Parameters: |
|
# code_value - the value of the code the user typed in. |
|
# code_option - The code type selected from the set in the scantron format |
|
# table. |
|
# Returns: |
|
# undef - The code is valid. |
|
# other - An error message indicating what's wrong. |
|
# |
|
sub is_code_valid { |
|
my ($code_value, $code_option) = @_; |
|
my ($code_type, $code_length) = ('letter', 6); # defaults. |
|
open(FG, $Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab'); |
|
foreach my $line (<FG>) { |
|
my ($name, $type, $length) = (split(/:/, $line))[0,2,4]; |
|
if($name eq $code_option) { |
|
$code_length = $length; |
|
if($type eq 'number') { |
|
$code_type = 'number'; |
|
} |
|
} |
|
} |
|
my $valid; |
|
if ($code_type eq 'number') { |
|
return &is_valid_numeric_code($code_value, $code_length); |
|
} else { |
|
return &is_valid_alpha_code($code_value, $code_length); |
|
} |
|
|
|
} |
|
|
# Compare two students by name. The students are in the form |
# Compare two students by name. The students are in the form |
# returned by the helper: |
# returned by the helper: |
# user:domain:section:last, first:status |
# user:domain:section:last, first:status |
Line 313 sub character_chart {
|
Line 433 sub character_chart {
|
$result =~ s/&(\#252|uuml);/\\\"{u}/g; |
$result =~ s/&(\#252|uuml);/\\\"{u}/g; |
$result =~ s/&(\#253|yacute);/\\\'{y}/g; |
$result =~ s/&(\#253|yacute);/\\\'{y}/g; |
$result =~ s/&(\#255|yuml);/\\\"{y}/g; |
$result =~ s/&(\#255|yuml);/\\\"{y}/g; |
|
$result =~ s/&\#295;/\\ensuremath\{\\hbar\}/g; |
$result =~ s/&\#952;/\\ensuremath\{\\theta\}/g; |
$result =~ s/&\#952;/\\ensuremath\{\\theta\}/g; |
#Greek Alphabet |
#Greek Alphabet |
$result =~ s/&(alpha|\#945);/\\ensuremath\{\\alpha\}/g; |
$result =~ s/&(alpha|\#945);/\\ensuremath\{\\alpha\}/g; |
Line 388 sub character_chart {
|
Line 509 sub character_chart {
|
$result =~ s/&(prod|\#8719);/\\ensuremath\{\\prod\}/g; |
$result =~ s/&(prod|\#8719);/\\ensuremath\{\\prod\}/g; |
$result =~ s/&(sum|\#8721);/\\ensuremath\{\\sum\}/g; |
$result =~ s/&(sum|\#8721);/\\ensuremath\{\\sum\}/g; |
$result =~ s/&(minus|\#8722);/\\ensuremath\{-\}/g; |
$result =~ s/&(minus|\#8722);/\\ensuremath\{-\}/g; |
|
$result =~ s/–/\\ensuremath\{-\}/g; |
$result =~ s/&(lowast|\#8727);/\\ensuremath\{*\}/g; |
$result =~ s/&(lowast|\#8727);/\\ensuremath\{*\}/g; |
$result =~ s/&(radic|\#8730);/\\ensuremath\{\\surd\}/g; |
$result =~ s/&(radic|\#8730);/\\ensuremath\{\\surd\}/g; |
$result =~ s/&(prop|\#8733);/\\ensuremath\{\\propto\}/g; |
$result =~ s/&(prop|\#8733);/\\ensuremath\{\\propto\}/g; |
Line 443 my %page_formats=
|
Line 565 my %page_formats=
|
'2' => ['3.16 in','13 in','-0.57 in','-0.57 in','-0.5 in'] |
'2' => ['3.16 in','13 in','-0.57 in','-0.57 in','-0.5 in'] |
}, |
}, |
'album' => { |
'album' => { |
'1' => [], |
'1' => ['12 in','7.1 in',,'-0.57 in','-0.57 in','-0.5 in'], |
'2' => [] |
'2' => ['6.0 in','7.1 in','-1 in','-1 in','5 in'] |
}, |
}, |
}, |
}, |
'tabloid' => { |
'tabloid' => { |
Line 453 my %page_formats=
|
Line 575 my %page_formats=
|
'2' => ['4.9 in','16 in','-0.57 in','-0.57 in','-0.5 in'] |
'2' => ['4.9 in','16 in','-0.57 in','-0.57 in','-0.5 in'] |
}, |
}, |
'album' => { |
'album' => { |
'1' => [], |
'1' => ['16 in','9.8 in','-0.57 in','-0.57 in','-0.5 in'], |
'2' => [] |
'2' => ['16 in','4.9 in','-0.57 in','-0.57 in','-0.5 in'] |
}, |
}, |
}, |
}, |
'executive' => { |
'executive' => { |
Line 534 sub page_format {
|
Line 656 sub page_format {
|
|
|
sub get_name { |
sub get_name { |
my ($uname,$udom)=@_; |
my ($uname,$udom)=@_; |
if (!defined($uname)) { $uname=$ENV{'user.name'}; } |
if (!defined($uname)) { $uname=$env{'user.name'}; } |
if (!defined($udom)) { $udom=$ENV{'user.domain'}; } |
if (!defined($udom)) { $udom=$env{'user.domain'}; } |
my $plainname=&Apache::loncommon::plainname($uname,$udom); |
my $plainname=&Apache::loncommon::plainname($uname,$udom); |
if ($plainname=~/^\s*$/) { $plainname=$uname.'@'.$udom; } |
if ($plainname=~/^\s*$/) { $plainname=$uname.'@'.$udom; } |
$plainname=&Apache::lonxml::latex_special_symbols($plainname,'header'); |
$plainname=&Apache::lonxml::latex_special_symbols($plainname,'header'); |
Line 544 sub get_name {
|
Line 666 sub get_name {
|
|
|
sub get_course { |
sub get_course { |
my $courseidinfo; |
my $courseidinfo; |
if (defined($ENV{'request.course.id'})) { |
if (defined($env{'request.course.id'})) { |
$courseidinfo = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'course.'.$ENV{'request.course.id'}.'.description'}),'header'); |
$courseidinfo = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($env{'course.'.$env{'request.course.id'}.'.description'}),'header'); |
} |
} |
return $courseidinfo; |
return $courseidinfo; |
} |
} |
Line 607 sub page_cleanup {
|
Line 729 sub page_cleanup {
|
|
|
sub details_for_menu { |
sub details_for_menu { |
my ($helper)=@_; |
my ($helper)=@_; |
my $postdata=$ENV{'form.postdata'}; |
my $postdata=$env{'form.postdata'}; |
if (!$postdata) { $postdata=$helper->{VARS}{'postdata'}; } |
if (!$postdata) { $postdata=$helper->{VARS}{'postdata'}; } |
my $name_of_resource = &Apache::lonnet::gettitle($postdata); |
my $name_of_resource = &Apache::lonnet::gettitle($postdata); |
my $symbolic = &Apache::lonnet::symbread($postdata); |
my $symbolic = &Apache::lonnet::symbread($postdata); |
Line 618 sub details_for_menu {
|
Line 740 sub details_for_menu {
|
$map =~ m|([^/]+)$|; |
$map =~ m|([^/]+)$|; |
$name_of_sequence = $1; |
$name_of_sequence = $1; |
} |
} |
my $name_of_map = &Apache::lonnet::gettitle($ENV{'request.course.uri'}); |
my $name_of_map = &Apache::lonnet::gettitle($env{'request.course.uri'}); |
if ($name_of_map =~ /^\s*$/) { |
if ($name_of_map =~ /^\s*$/) { |
$ENV{'request.course.uri'} =~ m|([^/]+)$|; |
$env{'request.course.uri'} =~ m|([^/]+)$|; |
$name_of_map = $1; |
$name_of_map = $1; |
} |
} |
return ($name_of_resource,$name_of_sequence,$name_of_map); |
return ($name_of_resource,$name_of_sequence,$name_of_map); |
Line 648 sub latex_corrections {
|
Line 770 sub latex_corrections {
|
$first_comment = index($result,'<!--',$first_comment); |
$first_comment = index($result,'<!--',$first_comment); |
} |
} |
$result =~ s/^\s+$//gm; #remove empty lines |
$result =~ s/^\s+$//gm; #remove empty lines |
$result =~ s/(\s)(\s+)/$1/g; #removes more than one empty space |
#removes more than one empty space |
|
$result =~ s|(\s\s+)|($1=~/[\n\r]/)?"\n":" "|ge; |
$result =~ s/\\\\\s*\\vskip/\\vskip/gm; |
$result =~ s/\\\\\s*\\vskip/\\vskip/gm; |
$result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g; |
$result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g; |
$result =~ s/{\\par }\s*\\\\/\\\\/gm; |
$result =~ s/{\\par }\s*\\\\/\\\\/gm; |
Line 695 sub IndexCreation {
|
Line 818 sub IndexCreation {
|
sub print_latex_header { |
sub print_latex_header { |
my $mode=shift; |
my $mode=shift; |
my $output='\documentclass[letterpaper]{article}'; |
my $output='\documentclass[letterpaper]{article}'; |
if (($mode eq 'batchmode') || (!$ENV{'request.role.adv'})) { |
if (($mode eq 'batchmode') || (!$perm{'pav'})) { |
$output.='\batchmode'; |
$output.='\batchmode'; |
} |
} |
$output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n". |
$output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n". |
'\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'."\n". |
'\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'."\n". |
'\usepackage[dvips]{graphicx}\usepackage{epsfig}'."\n". |
'\usepackage[dvips]{graphicx}\usepackage{epsfig}'."\n". |
|
'\usepackage{wrapfig}'. |
'\usepackage{picins}\usepackage{calc}'."\n". |
'\usepackage{picins}\usepackage{calc}'."\n". |
'\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}'."\n". |
'\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}'."\n". |
'\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}'."\n". |
'\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}'."\n". |
Line 720 sub print_latex_header {
|
Line 844 sub print_latex_header {
|
|
|
sub path_to_problem { |
sub path_to_problem { |
my ($urlp,$colwidth)=@_; |
my ($urlp,$colwidth)=@_; |
|
$urlp=&Apache::lonnet::clutter($urlp); |
|
|
my $newurlp = ''; |
my $newurlp = ''; |
$colwidth=~s/\s*mm\s*$//; |
$colwidth=~s/\s*mm\s*$//; |
#characters average about 2 mm in width |
#characters average about 2 mm in width |
if (length($urlp)*2 > $colwidth) { |
if (length($urlp)*2 > $colwidth) { |
my @elements = split '/',$urlp; |
my @elements = split('/',$urlp); |
my $curlength=0; |
my $curlength=0; |
foreach my $element (@elements) { |
foreach my $element (@elements) { |
|
if ($element eq '') { next; } |
if ($curlength+(length($element)*2) > $colwidth) { |
if ($curlength+(length($element)*2) > $colwidth) { |
$newurlp .= '|\vskip -1 mm \noindent \verb|'; |
$newurlp .= '|\vskip -1 mm \verb|'; |
$curlength=0; |
$curlength=length($element)*2; |
} else { |
} else { |
$curlength+=length($element)*2; |
$curlength+=length($element)*2; |
} |
} |
Line 782 sub unsupported {
|
Line 909 sub unsupported {
|
|
|
|
|
# |
# |
|
# List of recently generated print files |
|
# |
|
sub recently_generated { |
|
my $r=shift; |
|
my $prtspool=$r->dir_config('lonPrtDir'); |
|
my $zip_result; |
|
my $pdf_result; |
|
opendir(DIR,$prtspool); |
|
|
|
my @files = |
|
grep(/^$env{'user.name'}_$env{'user.domain'}_printout_(\d+)_.*\.(pdf|zip)$/,readdir(DIR)); |
|
closedir(DIR); |
|
|
|
@files = sort { |
|
my ($actime) = (stat($prtspool.'/'.$a))[10]; |
|
my ($bctime) = (stat($prtspool.'/'.$b))[10]; |
|
return $bctime <=> $actime; |
|
} (@files); |
|
|
|
foreach my $filename (@files) { |
|
my ($ext) = ($filename =~ m/(pdf|zip)$/); |
|
my ($cdev,$cino,$cmode,$cnlink, |
|
$cuid,$cgid,$crdev,$csize, |
|
$catime,$cmtime,$cctime, |
|
$cblksize,$cblocks)=stat($prtspool.'/'.$filename); |
|
my $result="<a href='/prtspool/$filename'>". |
|
&mt('Generated [_1] ([_2] bytes)', |
|
&Apache::lonlocal::locallocaltime($cctime),$csize). |
|
'</a><br />'; |
|
if ($ext eq 'pdf') { $pdf_result .= $result; } |
|
if ($ext eq 'zip') { $zip_result .= $result; } |
|
} |
|
if ($zip_result) { |
|
$r->print('<h4>'.&mt('Recently generated printout zip files')."</h4>\n" |
|
.$zip_result); |
|
} |
|
if ($pdf_result) { |
|
$r->print('<h4>'.&mt('Recently generated printouts')."</h4>\n" |
|
.$pdf_result); |
|
} |
|
} |
|
|
|
# |
# Retrieve the hash of page breaks. |
# Retrieve the hash of page breaks. |
# |
# |
# Inputs: |
# Inputs: |
Line 794 sub unsupported {
|
Line 964 sub unsupported {
|
sub get_page_breaks { |
sub get_page_breaks { |
my ($helper) = @_; |
my ($helper) = @_; |
my %page_breaks; |
my %page_breaks; |
|
|
|
|
|
|
foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) { |
foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) { |
$page_breaks{$break} = 1; |
$page_breaks{$break} = 1; |
} |
} |
|
|
return \%page_breaks; |
return %page_breaks; |
} |
} |
|
|
sub output_data { |
sub output_data { |
my ($r,$helper,$rparmhash) = @_; |
my ($r,$helper,$rparmhash) = @_; |
my %parmhash = %$rparmhash; |
my %parmhash = %$rparmhash; |
|
my $resources_printed = ''; |
my $html=&Apache::lonxml::xmlbegin(); |
my $html=&Apache::lonxml::xmlbegin(); |
my $bodytag=&Apache::loncommon::bodytag('Preparing Printout'); |
my $bodytag=&Apache::loncommon::bodytag('Preparing Printout'); |
$r->print(<<ENDPART); |
$r->print(<<ENDPART); |
Line 839 $html
|
Line 1008 $html
|
<title>LON-CAPA output for printing</title> |
<title>LON-CAPA output for printing</title> |
</head> |
</head> |
$bodytag |
$bodytag |
|
<p> |
Please stand by while processing your print request, this may take some time ... |
Please stand by while processing your print request, this may take some time ... |
|
</p> |
ENDPART |
ENDPART |
|
|
|
|
|
|
# fetch the pagebreaks and store them in the course environment |
# fetch the pagebreaks and store them in the course environment |
# The page breaks will be pulled into the hash %page_breaks which is |
# The page breaks will be pulled into the hash %page_breaks which is |
# indexed by symb and contains 1's for each break. |
# indexed by symb and contains 1's for each break. |
|
|
$ENV{'form.pagebreaks'} = $helper->{'VARS'}->{'FINISHPAGE'}; |
$env{'form.pagebreaks'} = $helper->{'VARS'}->{'FINISHPAGE'}; |
|
$env{'form.lastprinttype'} = $helper->{'VARS'}->{'PRINT_TYPE'}; |
&Apache::loncommon::store_course_settings('print', |
&Apache::loncommon::store_course_settings('print', |
{'pagebreaks' => 'scalar'}); |
{'pagebreaks' => 'scalar', |
|
'lastprinttype' => 'scalar'}); |
my $page_hashref = &get_page_breaks($helper); |
|
my %page_breaks = %$page_hashref; |
|
|
|
|
|
|
my %page_breaks = &get_page_breaks($helper); |
|
|
my $format_from_helper = $helper->{'VARS'}->{'FORMAT'}; |
my $format_from_helper = $helper->{'VARS'}->{'FORMAT'}; |
my ($result,$selectionmade) = ('',''); |
my ($result,$selectionmade) = ('',''); |
Line 867 ENDPART
|
Line 1038 ENDPART
|
$laystyle='book'; |
$laystyle='book'; |
} |
} |
my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,$numberofcolumns); |
my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,$numberofcolumns); |
my $assignment = $ENV{'form.assignment'}; |
my $assignment = $env{'form.assignment'}; |
my $LaTeXwidth=&recalcto_mm($textwidth); |
my $LaTeXwidth=&recalcto_mm($textwidth); |
my @print_array=(); |
my @print_array=(); |
my @student_names=(); |
my @student_names=(); |
Line 880 ENDPART
|
Line 1051 ENDPART
|
my %form; |
my %form; |
$form{'grade_target'} = 'tex'; |
$form{'grade_target'} = 'tex'; |
$form{'textwidth'} = &get_textwidth($helper, $LaTeXwidth); |
$form{'textwidth'} = &get_textwidth($helper, $LaTeXwidth); |
|
|
|
# If form.showallfoils is set, then request all foils be shown: |
|
# privilege will be enforced both by not allowing the |
|
# check box selecting this option to be presnt unless it's ok, |
|
# and by lonresponse's priv. check. |
|
# The if is here because lonresponse.pm only cares that |
|
# showallfoils is defined, not what the value is. |
|
|
|
if ($helper->{'VARS'}->{'showallfoils'} eq "1") { |
|
$form{'showallfoils'} = $helper->{'VARS'}->{'showallfoils'}; |
|
} |
|
|
if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') { |
if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') { |
#-- single document - problem, page, html, xml, ... |
#-- single document - problem, page, html, xml, ... |
my ($currentURL,$cleanURL); |
my ($currentURL,$cleanURL); |
|
|
if ($helper->{'VARS'}->{'construction'} ne '1') { |
if ($helper->{'VARS'}->{'construction'} ne '1') { |
#prints published resource |
#prints published resource |
$currentURL=$helper->{'VARS'}->{'postdata'}; |
$currentURL=$helper->{'VARS'}->{'postdata'}; |
Line 903 ENDPART
|
Line 1086 ENDPART
|
$moreenv{'request.filename'}=$cleanURL; |
$moreenv{'request.filename'}=$cleanURL; |
if ($helper->{'VARS'}->{'style_file'}=~/\w/) { |
if ($helper->{'VARS'}->{'style_file'}=~/\w/) { |
$moreenv{'construct.style'}=$helper->{'VARS'}->{'style_file'}; |
$moreenv{'construct.style'}=$helper->{'VARS'}->{'style_file'}; |
my $dom = $ENV{'user.domain'}; |
my $dom = $env{'user.domain'}; |
my $user = $ENV{'user.name'}; |
my $user = $env{'user.name'}; |
my $put_result = &Apache::lonnet::put('environment',{'construct.style'=>$helper->{'VARS'}->{'style_file'}},$dom,$user); |
my $put_result = &Apache::lonnet::put('environment',{'construct.style'=>$helper->{'VARS'}->{'style_file'}},$dom,$user); |
} |
} |
if ($helper->{'VARS'}->{'probstatus'} eq 'exam') {$form{'problemtype'}='exam';} |
if ($helper->{'VARS'}->{'probstatus'} eq 'exam') {$form{'problemtype'}='exam';} |
Line 920 ENDPART
|
Line 1103 ENDPART
|
&Apache::lonnet::appenv(%moreenv); |
&Apache::lonnet::appenv(%moreenv); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonxml::init_counter(); |
&Apache::lonxml::init_counter(); |
|
&Apache::lonxml::store_counter(); |
|
$resources_printed .= $currentURL.':'; |
$texversion.=&Apache::lonnet::ssi($currentURL,%form); |
$texversion.=&Apache::lonnet::ssi($currentURL,%form); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('request.filename'); |
&Apache::lonnet::delenv('request.filename'); |
Line 930 ENDPART
|
Line 1115 ENDPART
|
$form{'grade_target'}='answer'; |
$form{'grade_target'}='answer'; |
$form{'answer_output_mode'}='tex'; |
$form{'answer_output_mode'}='tex'; |
$form{'rndseed'}=$rndseed; |
$form{'rndseed'}=$rndseed; |
|
if ($helper->{'VARS'}->{'probstatus'} eq 'exam') { |
|
$form{'problemtype'}='exam'; |
|
} |
|
$resources_printed .= $currentURL.':'; |
my $answer=&Apache::lonnet::ssi($currentURL,%form); |
my $answer=&Apache::lonnet::ssi($currentURL,%form); |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
Line 977 ENDPART
|
Line 1166 ENDPART
|
$form{'suppress_tries'}=$parmhash{'suppress_tries'}; |
$form{'suppress_tries'}=$parmhash{'suppress_tries'}; |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
$form{'rndseed'}=$rndseed; |
$form{'rndseed'}=$rndseed; |
|
$resources_printed .=$urlp.':'; |
$texversion=&Apache::lonnet::ssi($urlp,%form); |
$texversion=&Apache::lonnet::ssi($urlp,%form); |
} |
} |
if((($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
if((($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) && |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) && |
($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page)$/)) { |
($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page)$/)) { |
$form{'grade_target'}='answer'; |
# Don't permanently modify %$form... |
$form{'answer_output_mode'}='tex'; |
my %answerform = %form; |
$form{'rndseed'}=$rndseed; |
$answerform{'grade_target'}='answer'; |
$form{'problem_split'}=$parmhash{'problem_stream_switch'}; |
$answerform{'answer_output_mode'}='tex'; |
if ($urlp=~/\/res\//) {$ENV{'request.state'}='published';} |
$answerform{'rndseed'}=$rndseed; |
my $answer=&Apache::lonnet::ssi($urlp,%form); |
$answerform{'problem_split'}=$parmhash{'problem_stream_switch'}; |
|
if ($urlp=~/\/res\//) {$env{'request.state'}='published';} |
|
$resources_printed .= $urlp.':'; |
|
my $answer=&Apache::lonnet::ssi($urlp,%answerform); |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
} else { |
} else { |
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm '; |
$texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm '; |
$texversion.=&path_to_problem ($currentURL,$LaTeXwidth); |
$texversion.=&path_to_problem($urlp,$LaTeXwidth); |
$texversion.='\vskip 1 mm '.$answer.'\end{document}'; |
$texversion.='\vskip 1 mm '.$answer.'\end{document}'; |
} |
} |
} |
} |
Line 1019 ENDPART
|
Line 1212 ENDPART
|
} elsif ($cleanURL=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
} elsif ($cleanURL=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;} |
if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;} |
|
$resources_printed .= $currentURL.':'; |
my $texversion=&Apache::lonnet::ssi($currentURL,%form); |
my $texversion=&Apache::lonnet::ssi($currentURL,%form); |
$result .= $texversion; |
$result .= $texversion; |
} else { |
} else { |
Line 1052 ENDPART
|
Line 1246 ENDPART
|
my $prevassignment=''; |
my $prevassignment=''; |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonxml::init_counter(); |
&Apache::lonxml::init_counter(); |
|
&Apache::lonxml::store_counter(); |
for (my $i=0;$i<=$#master_seq;$i++) { |
for (my $i=0;$i<=$#master_seq;$i++) { |
|
|
# Note due to document structure, not allowed to put \newpage |
# Note due to document structure, not allowed to put \newpage |
Line 1071 ENDPART
|
Line 1266 ENDPART
|
if ($i==0) {$prevassignment=$assignment;} |
if ($i==0) {$prevassignment=$assignment;} |
my $texversion=''; |
my $texversion=''; |
if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) { |
if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) { |
|
$resources_printed .= $urlp.':'; |
|
my $pre_counter=$env{'form.counter'}; |
$texversion.=&Apache::lonnet::ssi($urlp,%form); |
$texversion.=&Apache::lonnet::ssi($urlp,%form); |
if ($urlp=~/\.page$/) { |
if ($urlp=~/\.page$/) { |
($texversion,my $number_of_columns_page) = &page_cleanup($texversion); |
($texversion,my $number_of_columns_page) = &page_cleanup($texversion); |
Line 1078 ENDPART
|
Line 1275 ENDPART
|
$texversion =~ s/\\end{document}\d*/\\end{document}/; |
$texversion =~ s/\\end{document}\d*/\\end{document}/; |
$flag_page_in_sequence = 'YES'; |
$flag_page_in_sequence = 'YES'; |
} |
} |
my $lonidsdir=$r->dir_config('lonIDsDir'); |
my ($envfile) = ($env{'user.environment'} =~m|/([^/]+)\.id$| ); |
my $envfile=$ENV{'user.environment'}; |
&Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'), |
$envfile=~/\/([^\/]+)\.id$/; |
$envfile); |
$envfile=$1; |
my $current_counter=$env{'form.counter'}; |
&Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile); |
|
my $current_counter=$ENV{'form.counter'}; |
|
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
$form{'grade_target'}='answer'; |
# Don't permanently pervert the %form hash |
$form{'answer_output_mode'}='tex'; |
my %answerform = %form; |
my $answer=&Apache::lonnet::ssi($urlp,%form); |
$answerform{'grade_target'}='answer'; |
|
$answerform{'answer_output_mode'}='tex'; |
|
$resources_printed .= $urlp.':'; |
|
&Apache::lonnet::appenv(('form.counter' => $pre_counter)); |
|
my $answer=&Apache::lonnet::ssi($urlp,%answerform); |
&Apache::lonnet::appenv(('form.counter' => $current_counter)); |
&Apache::lonnet::appenv(('form.counter' => $current_counter)); |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
Line 1123 ENDPART
|
Line 1322 ENDPART
|
} elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
} elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;} |
if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;} |
|
$resources_printed .= $urlp.':'; |
my $texversion=&Apache::lonnet::ssi($urlp,%form); |
my $texversion=&Apache::lonnet::ssi($urlp,%form); |
if ($flag_latex_header_remove ne 'NO') { |
if ($flag_latex_header_remove ne 'NO') { |
$texversion = &latex_header_footer_remove($texversion); |
$texversion = &latex_header_footer_remove($texversion); |
Line 1185 ENDPART
|
Line 1385 ENDPART
|
$moreenv{'textwidth'}=&get_textwidth($helper,$LaTeXwidth); |
$moreenv{'textwidth'}=&get_textwidth($helper,$LaTeXwidth); |
$moreenv{'print_discussions'}=$helper->{'VARS'}->{'PRINT_DISCUSSIONS'}; |
$moreenv{'print_discussions'}=$helper->{'VARS'}->{'PRINT_DISCUSSIONS'}; |
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'}; |
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'}; |
|
$moreenv{'suppress_tries'} = $parmhash{'suppress_tries'}; |
if ($helper->{'VARS'}->{'PRINT_DISCUSSIONS'} eq 'yes') {$moreenv{'problem_split'}='yes';} |
if ($helper->{'VARS'}->{'PRINT_DISCUSSIONS'} eq 'yes') {$moreenv{'problem_split'}='yes';} |
my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1,'inline','75'); |
my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1,'inline','75'); |
my $student_counter=-1; |
my $student_counter=-1; |
foreach my $person (@students) { |
foreach my $person (@students) { |
|
|
my $duefile="/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.due"; |
my $duefile="/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.due"; |
if (-e $duefile) { |
if (-e $duefile) { |
my $temp_file = Apache::File->new('>>'.$duefile); |
my $temp_file = Apache::File->new('>>'.$duefile); |
print $temp_file "1969\n"; |
print $temp_file "1969\n"; |
} |
} |
$student_counter++; |
$student_counter++; |
my $i=int($student_counter/$helper->{'VARS'}{'NUMBER_TO_PRINT'}); |
my $i=int($student_counter/$helper->{'VARS'}{'NUMBER_TO_PRINT'}); |
my ($output,$fullname)=&print_resources($r,$helper, |
my ($output,$fullname, $printed)=&print_resources($r,$helper, |
$person,$type, |
$person,$type, |
\%moreenv,\@master_seq, |
\%moreenv,\@master_seq, |
$flag_latex_header_remove, |
$flag_latex_header_remove, |
$LaTeXwidth); |
$LaTeXwidth); |
|
$resources_printed .= ":"; |
$print_array[$i].=$output; |
$print_array[$i].=$output; |
$student_names[$i].=$person.':'.$fullname.'_END_'; |
$student_names[$i].=$person.':'.$fullname.'_END_'; |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,&mt('last student').' '.$fullname); |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,&mt('last student').' '.$fullname); |
Line 1212 ENDPART
|
Line 1414 ENDPART
|
$result .= $print_array[0].' \end{document}'; |
$result .= $print_array[0].' \end{document}'; |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_anon') || |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_anon') || |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_anon') ) { |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_anon') ) { |
my $cdom =$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; |
my $cdom =$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cnum =$ENV{'course.'.$ENV{'request.course.id'}.'.num'}; |
my $cnum =$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $num_todo=$helper->{'VARS'}->{'NUMBER_TO_PRINT_TOTAL'}; |
my $num_todo=$helper->{'VARS'}->{'NUMBER_TO_PRINT_TOTAL'}; |
my $code_name=$helper->{'VARS'}->{'ANON_CODE_STORAGE_NAME'}; |
my $code_name=$helper->{'VARS'}->{'ANON_CODE_STORAGE_NAME'}; |
my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'}; |
my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'}; |
|
my $single_code = $helper->{'VARS'}->{'SINGLE_CODE'}; |
|
my $selected_code = $helper->{'VARS'}->{'CODE_SELECTED_FROM_LIST'}; |
|
|
|
my $code_option=$helper->{'VARS'}->{'CODE_OPTION'}; |
|
open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab'); |
|
my ($code_type,$code_length)=('letter',6); |
|
foreach my $line (<FH>) { |
|
my ($name,$type,$length) = (split(/:/,$line))[0,2,4]; |
|
if ($name eq $code_option) { |
|
$code_length=$length; |
|
if ($type eq 'number') { $code_type = 'number'; } |
|
} |
|
} |
my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth)); |
my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth)); |
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'}; |
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'}; |
my $seed=time+($$<<16)+($$); |
my $seed=time+($$<<16)+($$); |
my @allcodes; |
my @allcodes; |
if ($old_name) { |
if ($old_name) { |
my %result=&Apache::lonnet::get('CODEs',[$old_name],$cdom,$cnum); |
my %result=&Apache::lonnet::get('CODEs', |
|
[$old_name,"type\0$old_name"], |
|
$cdom,$cnum); |
|
$code_type=$result{"type\0$old_name"}; |
@allcodes=split(',',$result{$old_name}); |
@allcodes=split(',',$result{$old_name}); |
$num_todo=scalar(@allcodes); |
$num_todo=scalar(@allcodes); |
|
} elsif ($selected_code) { # Selection value is always numeric. |
|
$num_todo = 1; |
|
@allcodes = ($selected_code); |
|
} elsif ($single_code) { |
|
|
|
$num_todo = 1; # Unconditionally one code to do. |
|
# If an alpha code have to convert to numbers so it can be |
|
# converted back to letters again :-) |
|
# |
|
if ($code_type ne 'number') { |
|
$single_code = &letters_to_num($single_code); |
|
} |
|
@allcodes = ($single_code); |
} else { |
} else { |
my %allcodes; |
my %allcodes; |
srand($seed); |
srand($seed); |
for (my $i=0;$i<$num_todo;$i++) { |
for (my $i=0;$i<$num_todo;$i++) { |
$moreenv{'CODE'}=&get_CODE(\%allcodes,$i,$seed,'6'); |
$moreenv{'CODE'}=&get_CODE(\%allcodes,$i,$seed,$code_length, |
|
$code_type); |
} |
} |
if ($code_name) { |
if ($code_name) { |
&Apache::lonnet::put('CODEs', |
&Apache::lonnet::put('CODEs', |
{$code_name =>join(',',keys(%allcodes))}, |
{ |
|
$code_name =>join(',',keys(%allcodes)), |
|
"type\0$code_name" => $code_type |
|
}, |
$cdom,$cnum); |
$cdom,$cnum); |
} |
} |
@allcodes=keys(%allcodes); |
@allcodes=keys(%allcodes); |
Line 1249 ENDPART
|
Line 1484 ENDPART
|
my $count=0; |
my $count=0; |
foreach my $code (sort(@allcodes)) { |
foreach my $code (sort(@allcodes)) { |
my $file_num=int($count/$number_per_page); |
my $file_num=int($count/$number_per_page); |
$moreenv{'CODE'}=&num_to_letters($code); |
if ($code_type eq 'number') { |
my ($output,$fullname)= |
$moreenv{'CODE'}=$code; |
|
} else { |
|
$moreenv{'CODE'}=&num_to_letters($code); |
|
} |
|
my ($output,$fullname, $printed)= |
&print_resources($r,$helper,'anonymous',$type,\%moreenv, |
&print_resources($r,$helper,'anonymous',$type,\%moreenv, |
\@master_seq,$flag_latex_header_remove, |
\@master_seq,$flag_latex_header_remove, |
$LaTeXwidth); |
$LaTeXwidth); |
|
$resources_printed .= ":"; |
$print_array[$file_num].=$output; |
$print_array[$file_num].=$output; |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
&mt('last assignment').' '.$fullname); |
&mt('last assignment').' '.$fullname); |
Line 1284 ENDPART
|
Line 1524 ENDPART
|
} else { |
} else { |
$urlp =~ s|^$Apache::lonnet::perlvar{'lonDocRoot'}||; |
$urlp =~ s|^$Apache::lonnet::perlvar{'lonDocRoot'}||; |
} |
} |
|
$resources_printed .= $urlp.':'; |
my $texversion=&Apache::lonnet::ssi($urlp,%form); |
my $texversion=&Apache::lonnet::ssi($urlp,%form); |
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
$form{'grade_target'}='answer'; |
# Don't permanently pervert %form: |
$form{'answer_output_mode'}='tex'; |
my %answerform = %form; |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
$answerform{'grade_target'}='answer'; |
$form{'rndseed'}=$rndseed; |
$answerform{'answer_output_mode'}='tex'; |
my $answer=&Apache::lonnet::ssi($urlp,%form); |
$answerform{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
|
$answerform{'rndseed'}=$rndseed; |
|
$resources_printed .= $urlp.':'; |
|
my $answer=&Apache::lonnet::ssi($urlp,%answerform); |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
} else { |
} else { |
Line 1343 ENDPART
|
Line 1587 ENDPART
|
$result =~ s/\\evensidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\evensidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /; |
$result =~ s/\\evensidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\evensidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /; |
$result =~ s/\\oddsidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\oddsidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /; |
$result =~ s/\\oddsidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\oddsidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /; |
} |
} |
|
|
#-- writing .tex file in prtspool |
#-- writing .tex file in prtspool |
my $temp_file; |
my $temp_file; |
my $identifier = &Apache::loncommon::get_cgi_id(); |
my $identifier = &Apache::loncommon::get_cgi_id(); |
my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout_".$identifier.".tex"; |
my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout_$identifier.tex"; |
if (!($#print_array>0)) { |
if (!($#print_array>0)) { |
unless ($temp_file = Apache::File->new('>'.$filename)) { |
unless ($temp_file = Apache::File->new('>'.$filename)) { |
$r->log_error("Couldn't open $filename for output $!"); |
$r->log_error("Couldn't open $filename for output $!"); |
Line 1369 ENDPART
|
Line 1614 ENDPART
|
my $temp_file; |
my $temp_file; |
my $newfilename=$filename; |
my $newfilename=$filename; |
my $num=$i+1; |
my $num=$i+1; |
$newfilename =~s/\.tex$/_$num\.tex/; |
$newfilename =~s/\.tex$//; |
|
$newfilename=sprintf("%s_%03d.tex",$newfilename, $num); |
unless ($temp_file = Apache::File->new('>'.$newfilename)) { |
unless ($temp_file = Apache::File->new('>'.$newfilename)) { |
$r->log_error("Couldn't open $newfilename for output $!"); |
$r->log_error("Couldn't open $newfilename for output $!"); |
return SERVER_ERROR; |
return SERVER_ERROR; |
Line 1386 ENDPART
|
Line 1632 ENDPART
|
if ($#student_names>-1) { |
if ($#student_names>-1) { |
$student_names=$student_names[0].'_ENDPERSON_'; |
$student_names=$student_names[0].'_ENDPERSON_'; |
} else { |
} else { |
my $fullname = &get_name($ENV{'user.name'},$ENV{'user.domain'}); |
my $fullname = &get_name($env{'user.name'},$env{'user.domain'}); |
$student_names=join(':',$ENV{'user.name'},$ENV{'user.domain'}, |
$student_names=join(':',$env{'user.name'},$env{'user.domain'}, |
$ENV{'request.course.sec'},$fullname). |
$env{'request.course.sec'},$fullname). |
'_ENDPERSON_'.'_END_'; |
'_ENDPERSON_'.'_END_'; |
} |
} |
} |
} |
Line 1405 ENDPART
|
Line 1651 ENDPART
|
$URLback=~s|^/~|/priv/|; |
$URLback=~s|^/~|/priv/|; |
} |
} |
} |
} |
|
# logic for now is too complex to trace if this has been defined |
|
# yet. |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
&Apache::lonnet::appenv('cgi.'.$identifier.'.file' => $filename, |
&Apache::lonnet::appenv('cgi.'.$identifier.'.file' => $filename, |
'cgi.'.$identifier.'.layout' => $laystyle, |
'cgi.'.$identifier.'.layout' => $laystyle, |
'cgi.'.$identifier.'.numcol' => $numberofcolumns, |
'cgi.'.$identifier.'.numcol' => $numberofcolumns, |
'cgi.'.$identifier.'.paper' => $papersize, |
'cgi.'.$identifier.'.paper' => $papersize, |
'cgi.'.$identifier.'.selection' => $selectionmade, |
'cgi.'.$identifier.'.selection' => $selectionmade, |
'cgi.'.$identifier.'tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'}, |
'cgi.'.$identifier.'.tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'}, |
'cgi.'.$identifier.'tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'}, |
'cgi.'.$identifier.'.tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'}, |
'cgi.'.$identifier.'role' => $ENV{'request.role.adv'}, |
'cgi.'.$identifier.'.role' => $perm{'pav'}, |
'cgi.'.$identifier.'numberoffiles' => $#print_array, |
'cgi.'.$identifier.'.numberoffiles' => $#print_array, |
'cgi.'.$identifier.'studentnames' => $student_names, |
'cgi.'.$identifier.'.studentnames' => $student_names, |
'cgi.'.$identifier.'backref' => $URLback,); |
'cgi.'.$identifier.'.backref' => $URLback,); |
|
&Apache::lonnet::appenv("cgi.$identifier.user" => $env{'user.name'}, |
|
"cgi.$identifier.domain" => $env{'user.domain'}, |
|
"cgi.$identifier.courseid" => $cnum, |
|
"cgi.$identifier.coursedom" => $cdom, |
|
"cgi.$identifier.resources" => $resources_printed); |
|
|
$r->print(<<FINALEND); |
$r->print(<<FINALEND); |
<br /> |
<br /> |
<meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$identifier" /> |
<meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$identifier" /> |
Line 1427 $r->print(<<FINALEND);
|
Line 1681 $r->print(<<FINALEND);
|
FINALEND |
FINALEND |
} |
} |
|
|
sub num_to_letters { |
|
my ($num) = @_; |
|
my @nums= split('',$num); |
|
my @num_to_let=('A'..'Z'); |
|
my $word; |
|
foreach my $digit (@nums) { $word.=$num_to_let[$digit]; } |
|
return $word; |
|
} |
|
|
|
sub get_CODE { |
sub get_CODE { |
my ($all_codes,$num,$seed,$size)=@_; |
my ($all_codes,$num,$seed,$size,$type)=@_; |
my $max='1'.'0'x$size; |
my $max='1'.'0'x$size; |
my $newcode; |
my $newcode; |
while(1) { |
while(1) { |
$newcode=sprintf("%06d",int(rand($max))); |
$newcode=sprintf("%0".$size."d",int(rand($max))); |
if (!exists($$all_codes{$newcode})) { |
if (!exists($$all_codes{$newcode})) { |
$$all_codes{$newcode}=1; |
$$all_codes{$newcode}=1; |
return &num_to_letters($newcode); |
if ($type eq 'number' ) { |
|
return $newcode; |
|
} else { |
|
return &num_to_letters($newcode); |
|
} |
} |
} |
} |
} |
} |
} |
Line 1453 sub print_resources {
|
Line 1703 sub print_resources {
|
my ($r,$helper,$person,$type,$moreenv,$master_seq,$remove_latex_header, |
my ($r,$helper,$person,$type,$moreenv,$master_seq,$remove_latex_header, |
$LaTeXwidth)=@_; |
$LaTeXwidth)=@_; |
my $current_output = ''; |
my $current_output = ''; |
|
my $printed = ''; |
my ($username,$userdomain,$usersection) = split /:/,$person; |
my ($username,$userdomain,$usersection) = split /:/,$person; |
my $fullname = &get_name($username,$userdomain); |
my $fullname = &get_name($username,$userdomain); |
my $namepostfix; |
my $namepostfix; |
Line 1465 sub print_resources {
|
Line 1716 sub print_resources {
|
#current student, and produces output |
#current student, and produces output |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonxml::init_counter(); |
&Apache::lonxml::init_counter(); |
|
&Apache::lonxml::store_counter(); |
my $page_hashref = &get_page_breaks($helper); |
my %page_breaks = &get_page_breaks($helper); |
my %page_breaks = %$page_hashref; |
|
|
|
foreach my $curresline (@{$master_seq}) { |
foreach my $curresline (@{$master_seq}) { |
if (defined $page_breaks{$curresline}) { |
if (defined $page_breaks{$curresline}) { |
Line 1481 sub print_resources {
|
Line 1731 sub print_resources {
|
my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline); |
my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline); |
if (&Apache::lonnet::allowed('bre',$res_url)) { |
if (&Apache::lonnet::allowed('bre',$res_url)) { |
if ($res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) { |
if ($res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) { |
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$ENV{'request.course.id'},'tex',$moreenv); |
$printed .= $curresline.':'; |
my $lonidsdir=$r->dir_config('lonIDsDir'); |
my $pre_counter=$env{'form.counter'}; |
my $envfile=$ENV{'user.environment'}; |
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv); |
$envfile=~/\/([^\/]+)\.id$/; |
my ($envfile) = |
$envfile=$1; |
( $env{'user.environment'} =~ m|/([^/]+)\.id$| ); |
&Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile); |
&Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'), |
my $current_counter=$ENV{'form.counter'}; |
$envfile); |
|
my $current_counter=$env{'form.counter'}; |
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
$moreenv->{'answer_output_mode'}='tex'; |
# Use a copy of the hash so we don't pervert it on future loop passes. |
$moreenv->{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
my %answerenv = %{$moreenv}; |
my $ansrendered = &Apache::loncommon::get_student_answers($curresline,$username,$userdomain,$ENV{'request.course.id'},%{$moreenv}); |
$answerenv{'answer_output_mode'}='tex'; |
|
$answerenv{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
|
&Apache::lonnet::appenv(('form.counter' => $pre_counter)); |
|
my $ansrendered = &Apache::loncommon::get_student_answers($curresline,$username,$userdomain,$env{'request.course.id'},%answerenv); |
&Apache::lonnet::appenv(('form.counter' => $current_counter)); |
&Apache::lonnet::appenv(('form.counter' => $current_counter)); |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
$rendered=~s/(\\keephidden{ENDOFPROBLEM})/$ansrendered$1/; |
$rendered=~s/(\\keephidden{ENDOFPROBLEM})/$ansrendered$1/; |
} else { |
} else { |
$rendered=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$rendered=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$rendered.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($curresline).'}\vskip 0 mm '; |
$rendered.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($curresline).'}\vskip 0 mm '; |
$rendered.=&path_to_problem ($curresline,$LaTeXwidth); |
$rendered.=&path_to_problem($res_url,$LaTeXwidth); |
$rendered.='\vskip 1 mm '.$ansrendered; |
$rendered.='\vskip 1 mm '.$ansrendered; |
} |
} |
} |
} |
Line 1510 sub print_resources {
|
Line 1764 sub print_resources {
|
} |
} |
$current_output .= $rendered; |
$current_output .= $rendered; |
} elsif ($res_url=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
} elsif ($res_url=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$ENV{'request.course.id'},'tex',$moreenv); |
$printed .= $curresline.':'; |
my $lonidsdir=$r->dir_config('lonIDsDir'); |
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv); |
my $envfile=$ENV{'user.environment'}; |
my ($envfile) = |
$envfile=~/\/([^\/]+)\.id$/; |
( $env{'user.environment'} = ~m|/([^/]+)\.id$| ); |
$envfile=$1; |
&Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'), |
&Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile); |
$envfile); |
my $current_counter=$ENV{'form.counter'}; |
my $current_counter=$env{'form.counter'}; |
if ($remove_latex_header eq 'YES') { |
if ($remove_latex_header eq 'YES') { |
$rendered = &latex_header_footer_remove($rendered); |
$rendered = &latex_header_footer_remove($rendered); |
} else { |
} else { |
Line 1548 sub print_resources {
|
Line 1802 sub print_resources {
|
for (my $j=0;$j<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blankpages.='\clearpage\strut\clearpage';} |
for (my $j=0;$j<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blankpages.='\clearpage\strut\clearpage';} |
$current_output = '\strut\vspace*{-6 mm}\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\vspace*{-2 mm}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip 5 mm '.$current_output; |
$current_output = '\strut\vspace*{-6 mm}\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\vspace*{-2 mm}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip 5 mm '.$current_output; |
} |
} |
return ($current_output,$fullname); |
return ($current_output,$fullname, $printed); |
|
|
} |
} |
|
|
sub handler { |
sub handler { |
|
|
my $r = shift; |
my $r = shift; |
my $helper; |
|
|
&init_perm(); |
|
|
# my $loaderror=&Apache::lonnet::overloaderror($r); |
# my $loaderror=&Apache::lonnet::overloaderror($r); |
# if ($loaderror) { return $loaderror; } |
# if ($loaderror) { return $loaderror; } |
# $loaderror= |
# $loaderror= |
# &Apache::lonnet::overloaderror($r, |
# &Apache::lonnet::overloaderror($r, |
# $ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
# $env{'course.'.$env{'request.course.id'}.'.home'}); |
# if ($loaderror) { return $loaderror; } |
# if ($loaderror) { return $loaderror; } |
|
|
my $result = printHelper($r); |
my $helper = printHelper($r); |
if (!ref($result)) { |
if (!ref($helper)) { |
return $result; |
return $helper; |
} |
} |
$helper = $result; |
|
|
|
# my $key; |
# my $key; |
# foreach $key (keys %{$helper->{'VARS'}}) { |
# foreach $key (keys %{$helper->{'VARS'}}) { |
# $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<-<br />'); |
# $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<-<br />'); |
# } |
# } |
# foreach $key (keys %ENV) { |
# foreach $key (keys %env) { |
# $r->print(' '.$key.'->'.$ENV{$key}.'<-<br />'); |
# $r->print(' '.$key.'->'.$env{$key}.'<-<br />'); |
# } |
# } |
# return OK; |
# return OK; |
|
|
my %parmhash=&Apache::lonnet::coursedescription($ENV{'request.course.id'}); |
my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'}); |
|
|
# my $key; |
# my $key; |
# foreach $key (keys %parmhash) { |
# foreach $key (keys %parmhash) { |
Line 1588 sub handler {
|
Line 1842 sub handler {
|
# |
# |
|
|
|
|
|
# If a figure conversion queue file exists for this user.domain |
|
# we delete it since it can only be bad (if it were good, printout.pl |
|
# would have deleted it the last time around. |
|
|
|
my $conversion_queuefile = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat"; |
|
if(-e $conversion_queuefile) { |
|
unlink $conversion_queuefile; |
|
} |
&output_data($r,$helper,\%parmhash); |
&output_data($r,$helper,\%parmhash); |
return OK; |
return OK; |
} |
} |
Line 1604 sub addMessage {
|
Line 1865 sub addMessage {
|
|
|
use Data::Dumper; |
use Data::Dumper; |
|
|
|
sub init_perm { |
|
undef(%perm); |
|
$perm{'pav'}=&Apache::lonnet::allowed('pav',$env{'request.course.id'}); |
|
if (!$perm{'pav'}) { |
|
$perm{'pav'}=&Apache::lonnet::allowed('pav', |
|
$env{'request.course.id'}.'/'.$env{'request.course.sec'}); |
|
} |
|
$perm{'pfo'}=&Apache::lonnet::allowed('pav',$env{'request.course.id'}); |
|
if (!$perm{'pfo'}) { |
|
$perm{'pfo'}=&Apache::lonnet::allowed('pfo', |
|
$env{'request.course.id'}.'/'.$env{'request.course.sec'}); |
|
} |
|
} |
|
|
sub printHelper { |
sub printHelper { |
my $r = shift; |
my $r = shift; |
|
|
if ($r->header_only) { |
if ($r->header_only) { |
if ($ENV{'browser.mathml'}) { |
if ($env{'browser.mathml'}) { |
&Apache::loncommon::content_type($r,'text/xml'); |
&Apache::loncommon::content_type($r,'text/xml'); |
} else { |
} else { |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
Line 1618 sub printHelper {
|
Line 1893 sub printHelper {
|
} |
} |
|
|
# Send header, nocache |
# Send header, nocache |
if ($ENV{'browser.mathml'}) { |
if ($env{'browser.mathml'}) { |
&Apache::loncommon::content_type($r,'text/xml'); |
&Apache::loncommon::content_type($r,'text/xml'); |
} else { |
} else { |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
Line 1643 sub printHelper {
|
Line 1918 sub printHelper {
|
$helper->declareVar('style_file'); |
$helper->declareVar('style_file'); |
$helper->declareVar('student_sort'); |
$helper->declareVar('student_sort'); |
$helper->declareVar('FINISHPAGE'); |
$helper->declareVar('FINISHPAGE'); |
|
$helper->declareVar('PRINT_TYPE'); |
|
$helper->declareVar("showallfoils"); |
|
|
# The page breaks can get loaded initially from the course environment: |
# The page breaks can get loaded initially from the course environment: |
|
# But we only do this in the initial state so that they are allowed to change. |
|
# |
|
|
|
$helper->{VARS}->{FINISHPAGE} = ''; |
|
|
&Apache::loncommon::restore_course_settings('print', |
&Apache::loncommon::restore_course_settings('print', |
{'pagebreaks' => 'scalar'}); |
{'pagebreaks' => 'scalar', |
|
'lastprinttype' => 'scalar'}); |
$helper->{VARS}->{FINISHPAGE} = $ENV{'form.pagebreaks'}; |
|
|
|
|
if($helper->{VARS}->{PRINT_TYPE} eq $env{'form.lastprinttype'}) { |
|
if (!defined ($env{"form.CURRENT_STATE"})) { |
|
|
|
$helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'}; |
|
} else { |
|
my $state = $env{"form.CURRENT_STATE"}; |
|
if ($state eq "START") { |
|
$helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'}; |
|
} |
|
} |
|
|
|
} |
|
|
|
|
# This will persistently load in the data we want from the |
# This will persistently load in the data we want from the |
# very first screen. |
# very first screen. |
# Detect whether we're coming from construction space |
# Detect whether we're coming from construction space |
if ($ENV{'form.postdata'}=~/^(?:http:\/\/[^\/]+\/|\/|)\~([^\/]+)\/(.*)$/) { |
if ($env{'form.postdata'}=~/^(?:http:\/\/[^\/]+\/|\/|)\~([^\/]+)\/(.*)$/) { |
$helper->{VARS}->{'filename'} = "~$1/$2"; |
$helper->{VARS}->{'filename'} = "~$1/$2"; |
$helper->{VARS}->{'construction'} = 1; |
$helper->{VARS}->{'construction'} = 1; |
} else { |
} else { |
if ($ENV{'form.postdata'}) { |
if ($env{'form.postdata'}) { |
$helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($ENV{'form.postdata'}); |
$helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($env{'form.postdata'}); |
} |
} |
if ($ENV{'form.symb'}) { |
if ($env{'form.symb'}) { |
$helper->{VARS}->{'symb'} = $ENV{'form.symb'}; |
$helper->{VARS}->{'symb'} = $env{'form.symb'}; |
} |
} |
if ($ENV{'form.url'}) { |
if ($env{'form.url'}) { |
$helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'}); |
$helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'}); |
} |
} |
} |
} |
|
|
if ($ENV{'form.symb'}) { |
if ($env{'form.symb'}) { |
$helper->{VARS}->{'symb'} = $ENV{'form.symb'}; |
$helper->{VARS}->{'symb'} = $env{'form.symb'}; |
} |
} |
if ($ENV{'form.url'}) { |
if ($env{'form.url'}) { |
$helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'}); |
$helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'}); |
|
|
} |
} |
Line 1704 sub printHelper {
|
Line 1999 sub printHelper {
|
} |
} |
$subdir = &Apache::lonnet::filelocation("", $url); |
$subdir = &Apache::lonnet::filelocation("", $url); |
} |
} |
if (!$helper->{VARS}->{'curseed'} && $ENV{'form.curseed'}) { |
if (!$helper->{VARS}->{'curseed'} && $env{'form.curseed'}) { |
$helper->{VARS}->{'curseed'}=$ENV{'form.curseed'}; |
$helper->{VARS}->{'curseed'}=$env{'form.curseed'}; |
} |
} |
if (!$helper->{VARS}->{'probstatus'} && $ENV{'form.problemtype'}) { |
if (!$helper->{VARS}->{'probstatus'} && $env{'form.problemtype'}) { |
$helper->{VARS}->{'probstatus'}=$ENV{'form.problemtype'}; |
$helper->{VARS}->{'probstatus'}=$env{'form.problemtype'}; |
} |
} |
|
|
my $userCanSeeHidden = Apache::lonnavmaps::advancedUser(); |
my $userCanSeeHidden = Apache::lonnavmaps::advancedUser(); |
my $userPriviledged = ($ENV{'request.role'}=~m/^cc\./ or |
|
$ENV{'request.role'}=~m/^in\./ or |
|
$ENV{'request.role'}=~m/^ta\./); |
|
|
|
Apache::lonhelper::registerHelperTags(); |
Apache::lonhelper::registerHelperTags(); |
|
|
Line 1757 sub printHelper {
|
Line 2049 sub printHelper {
|
$helper->declareVar('SEQUENCE'); |
$helper->declareVar('SEQUENCE'); |
|
|
# Useful for debugging: Dump the help vars |
# Useful for debugging: Dump the help vars |
#$r->print(Dumper($helper->{VARS})); |
# $r->print(Dumper($helper->{VARS})); |
#$r->print($map); |
# $r->print($map); |
|
|
# If we're in a sequence... |
# If we're in a sequence... |
if (($helper->{'VARS'}->{'construction'} ne '1') && |
if (($helper->{'VARS'}->{'construction'} ne '1') && |
Line 1799 HELPERFRAGMENT
|
Line 2091 HELPERFRAGMENT
|
&Apache::lonxml::xmlparse($r, 'helper', $helperFragment); |
&Apache::lonxml::xmlparse($r, 'helper', $helperFragment); |
} |
} |
|
|
# If the user is privileged, allow them to print all |
# If the user has pfo (print for otheres) allow them to print all |
# problems and resources in the entier course, optionally for selected students |
# problems and resources in the entier course, optionally for selected students |
if ($userPriviledged && |
if ($perm{'pfo'} && |
($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) { |
($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) { |
|
|
push @{$printChoices}, ['<b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS']; |
push @{$printChoices}, ['<b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS']; |
Line 1824 HELPERFRAGMENT
|
Line 2116 HELPERFRAGMENT
|
suppressEmptySequences='0' addstatus='1' closeallpages='1'> |
suppressEmptySequences='0' addstatus='1' closeallpages='1'> |
<nextstate>PAGESIZE</nextstate> |
<nextstate>PAGESIZE</nextstate> |
<filterfunc>return $isNotMap; </filterfunc> |
<filterfunc>return $isNotMap; </filterfunc> |
<mapurl> $map</mapursl> |
|
<valuefunc>return $symbFilter;</valuefunc> |
<valuefunc>return $symbFilter;</valuefunc> |
<option text='NewPage' variable='FINISHPAGE' /> |
<option text='NewPage' variable='FINISHPAGE' /> |
</resource> |
</resource> |
Line 1857 RESOURCE_SELECTOR
|
Line 2148 RESOURCE_SELECTOR
|
|
|
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS); |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS); |
<state name="CHOOSE_STUDENTS" title="Select Students and Resources"> |
<state name="CHOOSE_STUDENTS" title="Select Students and Resources"> |
<student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" /> |
<student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" coursepersonnel="1"/> |
<message><b>Select sort order</b> </message> |
<message><b>Select sort order</b> </message> |
<choices variable='student_sort'> |
<choices variable='student_sort'> |
<choice computer='0'>Sort by section then student</choice> |
<choice computer='0'>Sort by section then student</choice> |
Line 1867 RESOURCE_SELECTOR
|
Line 2158 RESOURCE_SELECTOR
|
</state> |
</state> |
CHOOSE_STUDENTS |
CHOOSE_STUDENTS |
|
|
my $cdom = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cnum = $ENV{'course.'.$ENV{'request.course.id'}.'.num'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my @names=&Apache::lonnet::getkeys('CODEs',$cdom,$cnum); |
my @names=&Apache::lonnet::getkeys('CODEs',$cdom,$cnum); |
my $namechoice='<choice></choice>'; |
my $namechoice='<choice></choice>'; |
foreach my $name (sort {uc($a) cmp uc($b)} @names) { |
foreach my $name (sort {uc($a) cmp uc($b)} @names) { |
if ($name =~ /^error: 2 /) { next; } |
if ($name =~ /^error: 2 /) { next; } |
|
if ($name =~ /^type\0/) { next; } |
$namechoice.='<choice computer="'.$name.'">'.$name.'</choice>'; |
$namechoice.='<choice computer="'.$name.'">'.$name.'</choice>'; |
} |
} |
|
|
|
|
|
my %all_codes = &Apache::lonnet::get('CODEs', |
|
\@names, $cdom,$cnum); |
|
my %code_values; |
|
my %codes_to_print; |
|
foreach my $key (keys(%all_codes)) { |
|
%code_values = &Apache::grades::get_codes($key, $cdom, $cnum); |
|
foreach my $key (keys(%code_values)) { |
|
$codes_to_print{$key} = 1; |
|
} |
|
} |
|
|
|
my $code_selection = "<choice></choice>\n"; |
|
foreach my $code (sort {uc($a) cmp uc($b)} (keys(%codes_to_print))) { |
|
my $choice = $code; |
|
if ($code =~ /^[A-Z]+$/) { # Alpha code |
|
$choice = &letters_to_num($code); |
|
} |
|
$code_selection .= ' <choice computer="'.$choice.'">'.$code."</choice>\n"; |
|
} |
|
open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab'); |
|
my $codechoice=''; |
|
foreach my $line (<FH>) { |
|
my ($name,$description,$code_type,$code_length)= |
|
(split(/:/,$line))[0,1,2,4]; |
|
if ($code_length > 0 && |
|
$code_type =~/^(letter|number|-1)/) { |
|
$codechoice.='<choice computer="'.$name.'">'.$description.'</choice>'; |
|
} |
|
} |
|
if ($codechoice eq '') { |
|
$codechoice='<choice computer="default">Default</choice>'; |
|
} |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1); |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1); |
<state name="CHOOSE_ANON1" title="Select Students and Resources"> |
<state name="CHOOSE_ANON1" title="Select Students and Resources"> |
<nextstate>PAGESIZE</nextstate> |
<nextstate>PAGESIZE</nextstate> |
Line 1883 CHOOSE_STUDENTS
|
Line 2209 CHOOSE_STUDENTS
|
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
<validator> |
<validator> |
if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) && |
if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) && |
!\$helper->{'VARS'}{'REUSE_OLD_CODES'}) { |
!\$helper->{'VARS'}{'REUSE_OLD_CODES'} && |
|
!\$helper->{'VARS'}{'SINGLE_CODE'} && |
|
!\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) { |
return "You need to specify the number of assignments to print"; |
return "You need to specify the number of assignments to print"; |
} |
} |
return undef; |
return undef; |
</validator> |
</validator> |
</string> |
</string> |
<message></td></tr><tr><td></message> |
<message></td></tr><tr><td></message> |
|
<message><b>Value of CODE to print?</b></td><td></message> |
|
<string variable="SINGLE_CODE" size="10" defaultvalue="zzzz"> |
|
<validator> |
|
if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} && |
|
!\$helper->{'VARS'}{'REUSE_OLD_CODES'} && |
|
!\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) { |
|
return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'}, |
|
\$helper->{'VARS'}{'CODE_OPTION'}); |
|
} else { |
|
return undef; # Other forces control us. |
|
} |
|
</validator> |
|
</string> |
|
<message></td></tr><tr><td></message> |
|
<message><b>Choose single code from list</b></message> |
|
<message></td><td></message> |
|
<dropdown variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0"> |
|
$code_selection |
|
</dropdown> |
|
<message></td></tr><tr><td></message> |
<message><b>Names to store the CODEs under for later:</b></message> |
<message><b>Names to store the CODEs under for later:</b></message> |
<message></td><td></message> |
<message></td><td></message> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
|
<message></td></tr><tr><td></message> |
|
<message><b>Bubble sheet type:</b></message> |
|
<message></td><td></message> |
|
<dropdown variable="CODE_OPTION" multichoice="0" allowempty="0"> |
|
$codechoice |
|
</dropdown> |
<message></td></tr></table></message> |
<message></td></tr></table></message> |
<message><hr width='33%' /></message> |
<message><hr width='33%' /></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
Line 1933 RESOURCE_SELECTOR
|
Line 2287 RESOURCE_SELECTOR
|
|
|
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1); |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1); |
<state name="CHOOSE_STUDENTS1" title="Select Students and Resources"> |
<state name="CHOOSE_STUDENTS1" title="Select Students and Resources"> |
<student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" /> |
<student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" coursepersonnel="1" /> |
<choices variable='student_sort'> |
<choices variable='student_sort'> |
<choice computer='0'>Sort by section then student</choice> |
<choice computer='0'>Sort by section then student</choice> |
<choice computer='1'>Sort by students across sections.</choice> |
<choice computer='1'>Sort by students across sections.</choice> |
Line 1950 CHOOSE_STUDENTS1
|
Line 2304 CHOOSE_STUDENTS1
|
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
<validator> |
<validator> |
if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) && |
if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) && |
!\$helper->{'VARS'}{'REUSE_OLD_CODES'}) { |
!\$helper->{'VARS'}{'REUSE_OLD_CODES'} && |
|
!\$helper->{'VARS'}{'SINGLE_CODE'} && |
|
!\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) { |
return "You need to specify the number of assignments to print"; |
return "You need to specify the number of assignments to print"; |
} |
} |
return undef; |
return undef; |
</validator> |
</validator> |
</string> |
</string> |
<message></td></tr><tr><td></message> |
<message></td></tr><tr><td></message> |
|
<message><b>Value of CODE to print?</b></td><td></message> |
|
<string variable="SINGLE_CODE" size="10" defaultvalue="zzzz"> |
|
<validator> |
|
if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} && |
|
!\$helper->{'VARS'}{'REUSE_OLD_CODES'} && |
|
!\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) { |
|
return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'}, |
|
\$helper->{'VARS'}{'CODE_OPTION'}); |
|
} else { |
|
return undef; # Other forces control us. |
|
} |
|
</validator> |
|
</string> |
|
<message></td></tr><tr><td></message> |
|
<message><b>Choose single code from list</b></message> |
|
<message></td><td></message> |
|
<dropdown variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0"> |
|
$code_selection |
|
</dropdown> |
|
<message></td></tr><tr><td></message> |
<message><b>Names to store the CODEs under for later:</b></message> |
<message><b>Names to store the CODEs under for later:</b></message> |
<message></td><td></message> |
<message></td><td></message> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
|
<message></td></tr><tr><td></message> |
|
<message><b>Bubble sheet type:</b></message> |
|
<message></td><td></message> |
|
<dropdown variable="CODE_OPTION" multichoice="0" allowempty="0"> |
|
$codechoice |
|
</dropdown> |
<message></td></tr></table></message> |
<message></td></tr></table></message> |
<message><hr width='33%' /></message> |
<message><hr width='33%' /></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
Line 1973 CHOOSE_ANON2
|
Line 2355 CHOOSE_ANON2
|
} |
} |
|
|
# FIXME: That RE should come from a library somewhere. |
# FIXME: That RE should come from a library somewhere. |
if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or defined $helper->{'VARS'}->{'construction'}) and $ENV{'request.role.adv'} and $subdir ne $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/') { |
if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or defined $helper->{'VARS'}->{'construction'}) and $perm{'pav'} and $subdir ne $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/') { |
push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from current subdirectory')." <b><i>$subdir</i></b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR']; |
push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from current subdirectory')." <b><i>$subdir</i></b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR']; |
|
|
my $f = '$filename'; |
my $f = '$filename'; |
Line 2013 CHOOSE_FROM_SUBDIR
|
Line 2395 CHOOSE_FROM_SUBDIR
|
<nextstate>CHOOSE_FROM_ANY_SEQUENCE</nextstate> |
<nextstate>CHOOSE_FROM_ANY_SEQUENCE</nextstate> |
<filterfunc>return \$res->is_sequence;</filterfunc> |
<filterfunc>return \$res->is_sequence;</filterfunc> |
<valuefunc>return $urlValue;</valuefunc> |
<valuefunc>return $urlValue;</valuefunc> |
<option text='Newpage' variable='FINISHPAGE' /> |
<choicefunc>return \$res->hasResource(\$res,sub { return !\$_[0]->is_sequence() },0,0); |
|
</choicefunc> |
</resource> |
</resource> |
</state> |
</state> |
<state name="CHOOSE_FROM_ANY_SEQUENCE" title="Select Resources To Print"> |
<state name="CHOOSE_FROM_ANY_SEQUENCE" title="Select Resources To Print"> |
Line 2037 CHOOSE_FROM_ANY_SEQUENCE
|
Line 2420 CHOOSE_FROM_ANY_SEQUENCE
|
Apache::lonhelper::message->new(); |
Apache::lonhelper::message->new(); |
$paramHash = Apache::lonhelper::getParamHash(); |
$paramHash = Apache::lonhelper::getParamHash(); |
$paramHash->{'variable'} = 'PRINT_TYPE'; |
$paramHash->{'variable'} = 'PRINT_TYPE'; |
$helper->declareVar('PRINT_TYPE'); |
|
$paramHash->{CHOICES} = $printChoices; |
$paramHash->{CHOICES} = $printChoices; |
Apache::lonhelper::choices->new(); |
Apache::lonhelper::choices->new(); |
|
|
my $startedTable = 0; # have we started an HTML table yet? (need |
my $startedTable = 0; # have we started an HTML table yet? (need |
# to close it later) |
# to close it later) |
|
|
if (($ENV{'request.role.adv'} and &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'})) or |
if (($perm{'pav'} and &Apache::lonnet::allowed('vgr',$env{'request.course.id'})) or |
($helper->{VARS}->{'construction'} eq '1')) { |
($helper->{VARS}->{'construction'} eq '1')) { |
addMessage("<hr width='33%' /><table><tr><td align='right'>Print: </td><td>"); |
addMessage("<hr width='33%' /><table><tr><td align='right'>Print: </td><td>"); |
$paramHash = Apache::lonhelper::getParamHash(); |
$paramHash = Apache::lonhelper::getParamHash(); |
Line 2053 CHOOSE_FROM_ANY_SEQUENCE
|
Line 2435 CHOOSE_FROM_ANY_SEQUENCE
|
$paramHash->{CHOICES} = [ |
$paramHash->{CHOICES} = [ |
['Without Answers', 'yes'], |
['Without Answers', 'yes'], |
['With Answers', 'no'], |
['With Answers', 'no'], |
['Only Answers', 'only'], |
['Only Answers', 'only'] |
['As Exam Problem', 'exam'] |
|
]; |
]; |
Apache::lonhelper::dropdown->new(); |
Apache::lonhelper::dropdown->new(); |
addMessage("</td></tr>"); |
addMessage("</td></tr>"); |
$startedTable = 1; |
$startedTable = 1; |
} |
} |
|
|
if ($ENV{'request.role.adv'}) { |
if ($perm{'pav'}) { |
if (!$startedTable) { |
if (!$startedTable) { |
addMessage("<hr width='33%' /><table><tr><td align='right'>LaTeX mode: </td><td>"); |
addMessage("<hr width='33%' /><table><tr><td align='right'>LaTeX mode: </td><td>"); |
$startedTable = 1; |
$startedTable = 1; |
Line 2111 CHOOSE_FROM_ANY_SEQUENCE
|
Line 2492 CHOOSE_FROM_ANY_SEQUENCE
|
['Yes', 'yes'] ]; |
['Yes', 'yes'] ]; |
Apache::lonhelper::dropdown->new(); |
Apache::lonhelper::dropdown->new(); |
addMessage("</td></tr>"); |
addMessage("</td></tr>"); |
|
|
|
addMessage("<tr><td align = 'right'> </td><td>"); |
|
$paramHash = Apache::lonhelper::getParamHash(); |
|
$paramHash->{'multichoice'} = "true"; |
|
$paramHash->{'allowempty'} = "true"; |
|
$paramHash->{'variable'} = "showallfoils"; |
|
$paramHash->{'CHOICES'} = [ ["Show all foils", "1"] ]; |
|
Apache::lonhelper::choices->new(); |
|
addMessage("</td></tr>"); |
} |
} |
|
|
if ($helper->{'VARS'}->{'construction'}) { |
if ($helper->{'VARS'}->{'construction'}) { |
my $stylevalue=$ENV{'construct.style'}; |
my $stylevalue=$env{'construct.style'}; |
my $xmlfrag .= <<"RNDSEED"; |
my $xmlfrag .= <<"RNDSEED"; |
<message><tr><td align='right'>Use random seed: </td><td></message> |
<message><tr><td align='right'>Use random seed: </td><td></message> |
<string variable="curseed" size="15" maxlength="15"> |
<string variable="curseed" size="15" maxlength="15"> |
Line 2123 CHOOSE_FROM_ANY_SEQUENCE
|
Line 2513 CHOOSE_FROM_ANY_SEQUENCE
|
</defaultvalue> |
</defaultvalue> |
</string> |
</string> |
<message></td></tr><tr><td align="right">Use style file:</td><td></message> |
<message></td></tr><tr><td align="right">Use style file:</td><td></message> |
<message><input type="text" size="40" name="style_file_value" value="$stylevalue" /> <a href="javascript:openbrowser('helpform','style_file','sty')">Select style file</a> </td><td></message> |
<message><input type="text" size="40" name="style_file_value" value="$stylevalue" /> <a href="javascript:openbrowser('helpform','style_file','sty')">Select style file</a> </td><tr><td></message> |
<message></td></tr></message> |
<choices allowempty="1" multichoice="true" variable="showallfoils"> |
|
<choice computer="1">Show all foils?</choice> |
|
</choices> |
|
<message></td></tr></message> |
RNDSEED |
RNDSEED |
&Apache::lonxml::xmlparse($r, 'helper', $xmlfrag); |
&Apache::lonxml::xmlparse($r, 'helper', $xmlfrag); |
$helper->{'VARS'}->{'style_file'}=$ENV{'form.style_file_value'}; |
$helper->{'VARS'}->{'style_file'}=$env{'form.style_file_value'}; |
} |
|
|
} |
} |
} |
|
|
|
|
Line 2155 RNDSEED
|
Line 2549 RNDSEED
|
} |
} |
|
|
$r->print($helper->display()); |
$r->print($helper->display()); |
|
if ($helper->{STATE} eq 'START') { |
|
&recently_generated($r); |
|
} |
&Apache::lonhelper::unregisterHelperTags(); |
&Apache::lonhelper::unregisterHelperTags(); |
|
|
return OK; |
return OK; |
Line 2195 no strict;
|
Line 2591 no strict;
|
@ISA = ("Apache::lonhelper::element"); |
@ISA = ("Apache::lonhelper::element"); |
use strict; |
use strict; |
use Apache::lonlocal; |
use Apache::lonlocal; |
|
use Apache::lonnet; |
|
|
my $maxColumns = 2; |
my $maxColumns = 2; |
|
# it'd be nice if these all worked |
|
#my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]", |
|
# "tabloid (ledger) [11x17 in]", "executive [7 1/2x10 in]", |
|
# "a2 [420x594 mm]", "a3 [297x420 mm]", "a4 [210x297 mm]", |
|
# "a5 [148x210 mm]", "a6 [105x148 mm]" ); |
my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]", |
my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]", |
"tabloid (ledger) [11x17 in]", "executive [7 1/2x10 in]", |
"a4 [210x297 mm]"); |
"a2 [420x594 mm]", "a3 [297x420 mm]", "a4 [210x297 mm]", |
|
"a5 [148x210 mm]", "a6 [105x148 mm]" ); |
|
|
|
# Tentative format: Orientation (L = Landscape, P = portrait) | Colnum | |
# Tentative format: Orientation (L = Landscape, P = portrait) | Colnum | |
# Paper type |
# Paper type |
Line 2236 sub render {
|
Line 2636 sub render {
|
</tr> |
</tr> |
<tr> |
<tr> |
<td> |
<td> |
<input type="radio" name="${var}.layout" value="L" /> Landscape<br /> |
<label><input type="radio" name="${var}.layout" value="L" /> Landscape </label><br /> |
<input type="radio" name="${var}.layout" value="P" checked='1' /> Portrait |
<label><input type="radio" name="${var}.layout" value="P" checked='1' /> Portrait </label> |
</td> |
</td> |
<td align="center"> |
<td align="center"> |
<select name="${var}.cols"> |
<select name="${var}.cols"> |
Line 2255 STATEHTML
|
Line 2655 STATEHTML
|
$result .= "</select></td><td>\n"; |
$result .= "</select></td><td>\n"; |
$result .= "<select name='${var}.paper'>\n"; |
$result .= "<select name='${var}.paper'>\n"; |
|
|
my %parmhash=&Apache::lonnet::coursedescription($ENV{'request.course.id'}); |
my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'}); |
my $DefaultPaperSize=$parmhash{'default_paper_size'}; |
my $DefaultPaperSize=lc($parmhash{'default_paper_size'}); |
|
$DefaultPaperSize=~s/\s//g; |
if ($DefaultPaperSize eq '') {$DefaultPaperSize='letter';} |
if ($DefaultPaperSize eq '') {$DefaultPaperSize='letter';} |
$i = 0; |
$i = 0; |
foreach (@paperSize) { |
foreach (@paperSize) { |
Line 2279 sub postprocess {
|
Line 2680 sub postprocess {
|
my $var = $self->{'variable'}; |
my $var = $self->{'variable'}; |
my $helper = Apache::lonhelper->getHelper(); |
my $helper = Apache::lonhelper->getHelper(); |
$helper->{VARS}->{$var} = |
$helper->{VARS}->{$var} = |
$ENV{"form.$var.layout"} . '|' . $ENV{"form.$var.cols"} . '|' . |
$env{"form.$var.layout"} . '|' . $env{"form.$var.cols"} . '|' . |
$ENV{"form.$var.paper"}; |
$env{"form.$var.paper"}; |
return 1; |
return 1; |
} |
} |
|
|
Line 2310 is no tag interface. You actually pass p
|
Line 2711 is no tag interface. You actually pass p
|
=cut |
=cut |
|
|
use Apache::lonhelper; |
use Apache::lonhelper; |
|
use Apache::lonnet; |
no strict; |
no strict; |
@ISA = ("Apache::lonhelper::element"); |
@ISA = ("Apache::lonhelper::element"); |
use strict; |
use strict; |
Line 2408 sub postprocess {
|
Line 2809 sub postprocess {
|
|
|
my $var = $self->{'variable'}; |
my $var = $self->{'variable'}; |
my $helper = Apache::lonhelper->getHelper(); |
my $helper = Apache::lonhelper->getHelper(); |
my $width = $helper->{VARS}->{$var .'.width'} = $ENV{"form.${var}.width"}; |
my $width = $helper->{VARS}->{$var .'.width'} = $env{"form.${var}.width"}; |
my $height = $helper->{VARS}->{$var .'.height'} = $ENV{"form.${var}.height"}; |
my $height = $helper->{VARS}->{$var .'.height'} = $env{"form.${var}.height"}; |
my $lmargin = $helper->{VARS}->{$var .'.lmargin'} = $ENV{"form.${var}.lmargin"}; |
my $lmargin = $helper->{VARS}->{$var .'.lmargin'} = $env{"form.${var}.lmargin"}; |
$helper->{VARS}->{$var .'.widthunit'} = $ENV{"form.${var}.widthunit"}; |
$helper->{VARS}->{$var .'.widthunit'} = $env{"form.${var}.widthunit"}; |
$helper->{VARS}->{$var .'.heightunit'} = $ENV{"form.${var}.heightunit"}; |
$helper->{VARS}->{$var .'.heightunit'} = $env{"form.${var}.heightunit"}; |
$helper->{VARS}->{$var .'.lmarginunit'} = $ENV{"form.${var}.lmarginunit"}; |
$helper->{VARS}->{$var .'.lmarginunit'} = $env{"form.${var}.lmarginunit"}; |
|
|
my $error = ''; |
my $error = ''; |
|
|