--- loncom/interface/lonprintout.pm 2012/06/11 11:07:33 1.619 +++ loncom/interface/lonprintout.pm 2012/12/08 20:10:26 1.625 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.619 2012/06/11 11:07:33 foxr Exp $ +# $Id: lonprintout.pm,v 1.625 2012/12/08 20:10:26 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -582,14 +582,17 @@ sub printable { sub get_print_dates { my $res = shift; my $partsref = $res->parts(); - my @parts = @$partsref; + my @parts; + if (ref($partsref) eq 'ARRAY') { + @parts = @{$partsref}; + } my $open_date; my $close_date; my @open_dates; my @close_dates; - if (defined(@parts) && (scalar(@parts) > 0)) { + if (@parts) { foreach my $part (@parts) { my $partopen = $res->parmval('printstartdate', $part); my $partclose = $res->parmval('printenddate', $part); @@ -632,7 +635,7 @@ sub course_print_dates { # Don't bother looping over undefined or empty parts arraY; - if (defined(@parts) && (scalar(@parts) > 0)) { + if (@parts) { foreach my $part (@parts) { my ($partopen, $partclose) = $navmap->course_printdates($res, $part); push(@open_dates, $partopen); @@ -658,7 +661,7 @@ sub map_print_dates { # Don't bother looping over undefined or empty parts arraY; - if (defined(@parts) && (scalar(@parts) > 0)) { + if (@parts) { foreach my $part (@parts) { my ($partopen, $partclose) = $navmap->map_printdates($res, $part); push(@open_dates, $partopen); @@ -715,7 +718,7 @@ sub incomplete { # print_resources. # sub master_seq_to_person_seq { - my ($helper, $seq, $who) = @_; + my ($helper, $seq, $who, $code) = @_; my ($username, $userdomain, $usersection) = split(/:/, $who); @@ -729,7 +732,8 @@ sub master_seq_to_person_seq { my @output_seq; my ($map, $id, $url) = &Apache::lonnet::decode_symb($helper->{VARS}->{'symb'}); - my $navmap = Apache::lonnavmaps::navmap->new($username, $userdomain); + my $navmap = Apache::lonnavmaps::navmap->new($username, $userdomain, + $code); my $iterator = $navmap->getIterator($navmap->firstResource(), $navmap->finishResource(), {}, 1); @@ -2057,6 +2061,7 @@ sub unsupported { my $result.= &print_latex_header($mode); if ($currentURL=~m|^(/adm/wrapper/)?ext/|) { $currentURL=~s|^(/adm/wrapper/)?ext/|http://|; + $currentURL=~s|^http://https://|https://|; my $title=&Apache::lonnet::gettitle($symb); $title = &Apache::lonxml::latex_special_symbols($title); $result.=' \strut \\\\ '.$title.' \strut \\\\ '.$currentURL.' '; @@ -2136,6 +2141,8 @@ sub print_page_in_course { my @page_resources = $navmap->retrieveResources($resource_src); $result .= &print_page_in_course($helper, $rparmhash, $resource_src, \@page_resources); + } elsif ($resource->ext()) { + $result .= &unsupported($currentURL,$mode,$symb); } # these resources go through the XML transformer: @@ -2602,6 +2609,7 @@ sub print_construction_sequence { # For item 100, filtering was done at the helper level. sub output_data { + my ($r,$helper,$rparmhash) = @_; my %parmhash = %$rparmhash; $ssi_error = 0; # This will be set nonzero by failing ssi's. @@ -2875,7 +2883,6 @@ ENDPART ($print_type eq 'select_sequences') or ($print_type eq 'map_incomplete_problems_seq') ) { - #-- produce an output string if (($print_type eq 'map_problems') or @@ -3198,7 +3205,6 @@ ENDPART 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'}; my @lines = &Apache::grades::get_scantronformat_file(); my ($code_type,$code_length,$bubbles_per_row)=('letter',6,10); @@ -3215,6 +3221,19 @@ ENDPART } } } + my ($randomorder,$randompick); + if ($helper->{VARS}{'symb'}) { + my $navmap = Apache::lonnavmaps::navmap->new(); + if (defined($navmap)) { + my ($map,$id,$resource) = + &Apache::lonnet::decode_symb($helper->{VARS}{'symb'}); + if ($map) { + my $res = $navmap->getResourceByUrl($map); + $randomorder = $res->randomorder(); + $randompick = $res->randompick(); + } + } + } my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth)); $moreenv{'problem_split'} = $parmhash{'problem_stream_switch'}; $moreenv{'instructor_comments'}='hide'; @@ -3276,9 +3295,16 @@ ENDPART } else { $moreenv{'CODE'}=&num_to_letters($code); } + my $actual_seq = \@master_seq; + if ($randomorder) { + $env{'form.CODE'} = $moreenv{'CODE'}; + $actual_seq = master_seq_to_person_seq($helper,\@master_seq,undef, + $moreenv{'CODE'}); + delete($env{'form.CODE'}); + } my ($output,$fullname, $printed)= &print_resources($r,$helper,'anonymous',$type,\%moreenv, - \@master_seq,$flag_latex_header_remove, + $actual_seq,$flag_latex_header_remove, $LaTeXwidth); $resources_printed .= ":"; $print_array[$file_num].=$output; @@ -3530,7 +3556,6 @@ sub print_resources { my $namepostfix = "\\\\"; # Both anon and not anon should get the same vspace. - # # Figure out if we need to filter the output by # the incomplete problems for that person @@ -3797,7 +3822,6 @@ sub handler { } &init_perm(); - my $helper = printHelper($r); if (!ref($helper)) { return $helper; @@ -4216,7 +4240,7 @@ sub printHelper { 'RESOURCES', 'PAGESIZE', $map, - ! $isProblem, '', + $isProblem, '', $symbFilter, $start_new_option); $helperFragment .= &generate_resource_chooser('CHOOSE_PROBLEMS_HTML',