--- loncom/interface/statistics/lonstudentsubmissions.pm	2006/05/30 12:46:50	1.45
+++ loncom/interface/statistics/lonstudentsubmissions.pm	2010/03/26 13:25:17	1.57
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonstudentsubmissions.pm,v 1.45 2006/05/30 12:46:50 www Exp $
+# $Id: lonstudentsubmissions.pm,v 1.57 2010/03/26 13:25:17 onken Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -66,12 +66,14 @@ sub BuildStudentSubmissionsPage {
     my @Students = @Apache::lonstatistics::Students;
     #
     if (@Students < 1) {
-        $r->print('<h2>There are no students in the sections selected</h2>');
+        $r->print('<div class="LC_warning">'
+                 .&mt('There are no students in the sections selected.')
+                 .'</div>');
     }
     #
     my @CacheButtonHTML = 
         &Apache::lonstathelpers::manage_caches($r,'Statistics','stats_status',
-                                   '<h3>'.&mt('Loading student data').'</h3>');
+                                   '<div class="LC_info">'.&mt('Loading student data...').'</div>');
     $r->rflush();
     #
     if (exists($env{'form.problemchoice'}) && 
@@ -103,7 +105,7 @@ sub BuildStudentSubmissionsPage {
         # Get resource objects
         my $navmap = Apache::lonnavmaps::navmap->new();
         if (!defined($navmap)) {
-            $r->print('<h1>'.&mt("Internal error").'</h1>');
+            $r->print('<div class="LC_error">'.&mt("Internal error").'</div>');
             return;
         }
         my %already_seen;
@@ -145,7 +147,7 @@ sub BuildStudentSubmissionsPage {
                   &mt('Computing correct answers greatly increasese the amount of time required to prepare a report.').
                   '</p>');
         $r->print('<p>'.
-                  &mt('please select problems and use the <b>Prepare Report</b> button to continue.').
+                  &mt('Please select problems and use the [_1]Prepare Report[_2] button to continue.','<b>','</b>').
                   '</p>');
         $r->print(&Apache::lonstathelpers::MultipleProblemSelector
                   (undef,'problemchoice','Statistics'));
@@ -223,7 +225,12 @@ sub prepare_html_output {
     my @extra_resp_headers = &get_extra_response_headers();
     #
     # Create the table header
-    my @student_columns = ('username','domain','id','section');
+    my @student_columns = @Apache::lonstatistics::SelectedStudentData;
+    foreach (@student_columns) {
+        if($_ eq 'all') {
+            @student_columns = ('fullname','username','domain','id','section','status','groups','comments');
+        }
+    }
     #
     my %headers;
     my $student_column_count = scalar(@student_columns);
@@ -263,9 +270,10 @@ sub prepare_html_output {
                     $headers{'response'} .=
                         '<th colspan="'.scalar(@headers).'">'.
                         &mt('Response [_1]',$responses->[$i]).'</th>';
-                    $headers{'student'}.= '<th>'.join('</th><th><nobr>',
+                    $headers{'student'}.= '<th><span class="LC_nobreak">'.
+                                          join('</span></th><th><span class="LC_nobreak">',
                                                       @headers).
-                                                          '</nobr></th>';
+                                                          '</span></th>';
                 }
             }
             if ($part_span == 0) {
@@ -282,7 +290,7 @@ sub prepare_html_output {
                 $headers{'part'} .= qq{<th colspan="$part_span">$tmpname</th>};
                 $nonempty_part_headers = 1;
             } else {
-                $headers{'part'} .= qq{<th colspan="$part_span">&nbsp</th>};
+                $headers{'part'} .= qq{<th colspan="$part_span">&nbsp;</th>};
             }
             $prob_span += $part_span;
         }
@@ -323,8 +331,16 @@ sub prepare_html_output {
         }
         last if ($c->aborted());
         foreach my $field (@student_columns) {
-            $student_row_data .= 
-                '<td valign="top">'.$student->{$field}.'</td>';
+            $student_row_data .= '<td valign="center">';
+            # handle comments like in lonstudentassessment.pm
+            if($field eq 'comments') {
+                $student_row_data .= 
+                        '<a href="/adm/'.$student->{'domain'}.'/'.
+                        $student->{'username'}.'/'.'aboutme#coursecomment">'.&mt('Comments').'</a>';
+            } else {
+                $student_row_data .= $student->{$field};
+            }
+            $student_row_data .= '</td>';
         }
         #
         # Figure out what it is we need to output for this student
@@ -499,7 +515,7 @@ sub html_essay_results {
         if (defined($respid)) {
             $id .= ' '.$respid;
         }
-        $Str .= '<nobr>'.$id.'</nobr>'.('&nbsp;'x4);
+        $Str .= '<span class="LC_nobreak">'.$id.'</span>'.('&nbsp;'x4);
     }
     #
     shift(@$headers); # Get rid of the Submission header
@@ -508,11 +524,11 @@ sub html_essay_results {
         $correct = &html_format_essay_sub($response->{'Correct'});
         shift(@$headers);
     }
-    $Str .= '<nobr>'.
+    $Str .= '<span class="LC_nobreak">'.
         join('',
              map {
                  ('&nbsp;'x4).&mt($_.': [_1]',$response->{$_});
-             } @$headers).'</nobr>';
+             } @$headers).'</span>';
     if (@$headers || ! $single_response) {
         $Str .= '<br />';
     }
@@ -565,7 +581,7 @@ sub html_non_essay_results {
     if ($resptype eq 'radiobutton') {
         $submission = &HTML::Entities::encode($submission,'<>&"');
         $submission =~ s/=([^=])$//;
-        $submission = '<nobr>'.$submission.'</nobr>';
+        $submission = '<span class="LC_nobreak">'.$submission.'</span>';
     }
     $response->{'Submission'} = $submission;
     #
@@ -928,9 +944,13 @@ sub prepare_csv_output {
             time.'_'.rand(1000000000).'.csv';
     unless ($outputfile = Apache::File->new('>/home/httpd'.$filename)) {
         $r->log_error("Couldn't open $filename for output $!");
-        $r->print("Problems occured in writing the csv file.  ".
-                  "This error has been logged.  ".
-                  "Please alert your LON-CAPA administrator.");
+        $r->print(
+            '<p class="LC_error">'
+           .&mt('Problems occurred in writing the CSV file.')
+           .' '.&mt('This error has been logged.')
+           .' '.&mt('Please alert your LON-CAPA administrator.')
+           .'</p>'
+        );
         $outputfile = undef;
     }
     #
@@ -1046,9 +1066,9 @@ sub prepare_csv_output {
     # Close the progress window
     &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
     #
-    # Tell the user where to get their csv file
+    # Tell the user where to get their CSV file
     $r->print('<br />'.
-              '<a href="'.$filename.'">'.&mt('Your csv file.').'</a>'."\n");
+              '<a href="'.$filename.'">'.&mt('Your CSV file.').'</a>'."\n");
     $r->rflush();
     return;
 }
@@ -1086,15 +1106,18 @@ sub CreateInterface {
     my $Str = '';
     $Str .= &Apache::lonhtmlcommon::breadcrumbs('Student Submission Reports');
     $Str .= '<p>';
-    $Str .= '<table cellspacing="5">'."\n";
-    $Str .= '<tr>';
+    $Str .= &Apache::loncommon::start_data_table();
+    $Str .= &Apache::loncommon::start_data_table_header_row();
     $Str .= '<th>'.&mt('Sections').'</th>';
     $Str .= '<th>'.&mt('Groups').'</th>';
-    $Str .= '<th>'.&mt('Enrollment Status').'</th>';
-    $Str .= '<th>'.&mt('Output as [_1]',$output_selector).'</th>';
-    $Str .= '</tr>'."\n";
+    $Str .= '<th>'.&mt('Student Data').&Apache::loncommon::help_open_topic("Chart_Student_Data").'</th>';
+    $Str .= '<th>'.&mt('Access Status').'</th>';
+    $Str .= '<th>'.&mt('Options').'</th>';
+    $Str .= '<th>'.&mt('Output Format').'</th>';
+    $Str .= &Apache::loncommon::end_data_table_header_row();
     #
-    $Str .= '<tr><td align="center">'."\n";
+    $Str .= &Apache::loncommon::start_data_table_row();
+    $Str .= '<td align="center">'."\n";
     $Str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5);
     $Str .= '</td>';
     #
@@ -1102,6 +1125,10 @@ sub CreateInterface {
     $Str .= &Apache::lonstatistics::GroupSelect('Group','multiple',5);
     $Str .= '</td>';
     #
+    $Str .= '<td align="center">'."\n";
+    $Str .= &Apache::lonstatistics::StudentDataSelect('StudentData','multiple', 5,undef);
+    $Str .= '</td>';
+    #
     $Str .= '<td align="center">';
     $Str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5);
     $Str .= '</td>';
@@ -1109,14 +1136,14 @@ sub CreateInterface {
     # Render problem checkbox
     my $prob_checkbox = '<input type="checkbox" name="renderprob" ';
     if (exists($env{'form.renderprob'}) && $env{'form.renderprob'} eq 'true') {
-        $prob_checkbox .= 'checked ';
+        $prob_checkbox .= 'checked="checked" ';
     }
     $prob_checkbox .= 'value="true" />';
     #
     # Compute correct answers checkbox
     my $ans_checkbox = '<input type="checkbox" name="correctans" ';
     if (exists($env{'form.correctans'}) && $env{'form.correctans'} eq 'true') {
-        $ans_checkbox .= 'checked ';
+        $ans_checkbox .= 'checked="checked" ';
     }
     $ans_checkbox .= 'value="true" />';
     #
@@ -1124,7 +1151,7 @@ sub CreateInterface {
     my $all_sub_checkbox = '<input type="checkbox" name="all_sub" ';
     if (exists($env{'form.all_sub'}) && 
         $env{'form.all_sub'} eq 'true') {
-        $all_sub_checkbox .= 'checked ';
+        $all_sub_checkbox .= 'checked="checked" ';
     }
     $all_sub_checkbox.= 'value="true" />';
     #
@@ -1132,30 +1159,37 @@ sub CreateInterface {
     my $prob_status_checkbox = '<input type="checkbox" name="prob_status" ';
     if (exists($env{'form.prob_status'}) && 
         $env{'form.prob_status'} eq 'true') {
-        $prob_status_checkbox .= 'checked ';
+        $prob_status_checkbox .= 'checked="checked" ';
     }
     $prob_status_checkbox .= 'value="true" />';
     #
-    $Str .= '<td align="right" valign="top">'.
-        '<label><b>'.
-        &mt('Show problem [_1]',$prob_checkbox).'</b></label><br />'.
-        '<label><b>'.
-        &mt('Show correct answers [_1]',$ans_checkbox).'</b></label><br />'.
-        '<label><b>'.
-        &mt('Show all submissions [_1]',$all_sub_checkbox).
-        '</b></label><br />'.
-        '<label><b>'.
-        &mt('Show problem grading [_1]',$prob_status_checkbox).
-        '</b></label><br />'.
-        '</td>';
-    #
-    $Str .= '</tr>'."\n";
-    $Str .= '</table>'."\n";
-    #
-    $Str .= '<p><nobr>'.&mt('Status: [_1]',
-                         '<input type="text" '.
-                         'name="stats_status" size="60" value="" />').
-            '</nobr>'.'</p>';    
+    $Str .=
+        '<td valign="top">'
+       .'<label>'
+       .$prob_checkbox.&mt('Show problem')
+       .'</label><br />'
+       .'<label>'
+       .' '.$ans_checkbox.&mt('Show correct answers')
+       .'</label><br />'
+       .'<label>'
+       .$all_sub_checkbox.&mt('Show all submissions')
+       .'</label><br />'
+       .'<label>'
+       .$prob_status_checkbox.&mt('Show problem grading')
+       .'</label>'
+       .'</td>';
+    #
+    $Str .= '<td align="center" valign="top">'.$output_selector.'</td>';
+    #
+    $Str .= &Apache::loncommon::end_data_table_row();
+    $Str .= &Apache::loncommon::end_data_table();
+    #
+    $Str .= '<p><span class="LC_nobreak">'
+           .&mt('Status: [_1]',
+                    '<input type="text" name="stats_status"'
+                   .' size="60" value="" readonly="readonly" />')
+           .'</span></p>';
+    $Str .= '</p>';
     ##
     return $Str;
 }