[LON-CAPA-cvs] cvs: loncom(GCI_3) /interface lonprintout.pm

raeburn raeburn@source.lon-capa.org
Thu, 25 Feb 2010 04:55:31 -0000


raeburn		Thu Feb 25 04:55:31 2010 EDT

  Modified files:              (Branch: GCI_3)
    /loncom/interface	lonprintout.pm 
  Log:
  - Customization for GCI_3.
    - One-click generation of PDF of Concept Test questions 
      (1 column, portrait, 8 .5 x 11 in paper, without answers). 
  
  
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.568.4.1 loncom/interface/lonprintout.pm:1.568.4.2
--- loncom/interface/lonprintout.pm:1.568.4.1	Thu Feb 25 04:37:28 2010
+++ loncom/interface/lonprintout.pm	Thu Feb 25 04:55:30 2010
@@ -2,7 +2,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.568.4.1 2010/02/25 04:37:28 raeburn Exp $
+# $Id: lonprintout.pm,v 1.568.4.2 2010/02/25 04:55:30 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1890,7 +1890,7 @@
 }
 
 sub output_data {
-    my ($r,$helper,$rparmhash) = @_;
+    my ($r,$helper,$rparmhash,$is_custom) = @_;
     my %parmhash = %$rparmhash;
     $ssi_error = 0;		# This will be set nonzero by failing ssi's.
     $resources_printed = '';
@@ -1931,6 +1931,11 @@
                   {'href' => '',
                    'text' => 'Preparing Printout'}];
 
+    if ($is_custom) {
+        $brcrum = [{'href' => '',
+                   'text' => 'Preparing Printout'}];
+    }
+
     my $start_page  = &Apache::loncommon::start_page('Preparing Printout',
                                                      $js,
                                                      {'bread_crumbs' => $brcrum,});
@@ -1992,7 +1997,6 @@
 	&Apache::lonnet::delenv('construct.style');
     }
 
-
     if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') {
       #-- single document - problem, page, html, xml, ...
 	my ($currentURL,$cleanURL);
@@ -2938,17 +2942,109 @@
     
     &init_perm();
 
+    my ($helper,$is_custom);
+    if ((&Apache::loncommon::needs_gci_custom()) &&
+        ($env{'request.role.domain'} eq 'gcitest')) {
+        if ($r->header_only) {
+            if ($env{'browser.mathml'}) {
+                &Apache::loncommon::content_type($r,'text/xml');
+            } else {
+                &Apache::loncommon::content_type($r,'text/html');
+            }
+            $r->send_http_header;
+            return OK;
+        }
+        # Send header, nocache
+        if ($env{'browser.mathml'}) {
+            &Apache::loncommon::content_type($r,'text/xml');
+        } else {
+            &Apache::loncommon::content_type($r,'text/html');
+        }
+        &Apache::loncommon::no_cache($r);
+        $r->send_http_header;
+        $r->rflush();
 
-
-    my $helper = printHelper($r);
-    if (!ref($helper)) {
-	return $helper;
+        my ($navmap_error,$resources,@master_seq);
+        my $navmap = Apache::lonnavmaps::navmap->new();
+        if (!defined($navmap)) {
+            my $brcrum = [{'href' => '',
+                           'text' => 'Preparing Printout'}];
+
+            my $start_page  =
+                &Apache::loncommon::start_page('Preparing Printout','',
+                                               {'bread_crumbs' => $brcrum,});
+            my $endpage = &Apache::loncommon::end_page();
+
+            my $navmap_error = '<span class="LC_error">'.&mt('An error occurred retrieving information about the course.').'<br />'.&mt('It is recommended that you re-select the concept test by clicking on the "Review Questions" tab and then clicking on the "Manage Tests" tab again.').'</span>';
+            $r->print($start_page.$navmap_error.$endpage);
+            return OK;
+        } else {
+            my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+            my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+            my @allres=$navmap->retrieveResources('/uploaded/'.$cdom.'/'.$cnum.'/default_1261144274.sequence');
+            foreach my $resource (@allres) {
+                next if ($resource->is_map());
+                my $symb = $resource->symb();
+                push(@master_seq,$symb);
+            }
+            $resources = join('|||',@master_seq);
+            my ($sequence,$middle_thingy,$urlp) =
+                &Apache::lonnet::decode_symb($master_seq[0]);
+
+            my $assignment = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header');
+
+            $helper = {
+                   VARS => {
+                            ANON_CODE_STORAGE_NAME => '',
+                            ANSWER_TYPE => 'yes',
+                            CODE_OPTION => '',
+                            EMPTY_PAGES => '',
+                            FINISHPAGE => '',
+                            FORMAT => 'P|1|letter|no',
+                            LATEX_TYPE => 'batchmode',
+                            NUMBER_TO_PRINT_TOTAL => '',
+                            PRINT_ANNOTATIONS => 'no',
+                            PRINT_DISCUSSIONS => 'no',
+                            PRINT_TYPE => 'map_problems',
+                            RESOURCES => $resources,
+                            REUSE_OLD_CODES => '',
+                            SEQUENCE => '',
+                            SINGLE_CODE => '',
+                            SPLIT_PDFS => '',
+                            STUDENTS => '',
+                            TABLE_CONTENTS => 'no',
+                            TABLE_INDEX => 'no',
+                            assignment => $assignment,
+                            construction => '',
+                            curseed => '',
+                            filename => '',
+                            fontsize => 'normalsize',
+                            pagesize => '',
+                            'pagesize.height' => '9.8',
+                            'pagesize.heightunit' => 'in',
+                            'pagesize.lmargin' => '-0.57',
+                            'pagesize.lmarginunit' => 'in',
+                            'pagesize.width' => '7.1',
+                            'pagesize.widthunit' => 'in',
+                            postdata => $urlp,
+                            probstatus => '',
+                            showallfoils => '',
+                            student_sort => '',
+                            style_file => '',
+                            symb => $master_seq[0],
+                           }
+                         };
+            $env{'form.assignment'} = $assignment;
+            $is_custom = 1;
+        }
+    } else {
+        $helper = printHelper($r);
+        if (!ref($helper)) {
+            return $helper;
+        }
     }
-   
 
     %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});
- 
-
 
 
     #  If a figure conversion queue file exists for this user.domain
@@ -2957,13 +3053,13 @@
 
     my $conversion_queuefile = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat";
     if(-e $conversion_queuefile) {
-	unlink $conversion_queuefile;
+        unlink $conversion_queuefile;
     }
-    
 
-    &output_data($r,$helper,\%parmhash);
+
+    &output_data($r,$helper,\%parmhash,$is_custom);
     return OK;
-} 
+}
 
 use Apache::lonhelper;