--- loncom/interface/lonpdfupload.pm	2009/04/04 21:47:41	1.3
+++ loncom/interface/lonpdfupload.pm	2009/05/21 03:09:01	1.7
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Publication Handler
 #
-# $Id: lonpdfupload.pm,v 1.3 2009/04/04 21:47:41 bisitz Exp $
+# $Id: lonpdfupload.pm,v 1.7 2009/05/21 03:09:01 onken Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -65,7 +65,7 @@ sub handler() {
     $env{'request.uri'}=$r->uri;
     $r->content_type('text/html');
     $r->send_http_header();
-    $r->print(&Apache::loncommon::start_page('Upload-PDF-Form'));
+    $r->print(&Apache::loncommon::start_page(&mt('Upload PDF Form')));
 
     #load post data into environment
     &Apache::lonacc::get_posted_cgi($r);
@@ -80,10 +80,16 @@ sub handler() {
     }
 
     #link to course-content
-    $r->print("    <br />\n    <a href='/adm/navmaps'>\n      ".&mt("Navigate Contents")."\n    </a>\n    <br />");
+    $r->print('<hr />'
+             .'<p>'."\n"
+             .'<a href="/adm/navmaps">'."\n"
+             .&mt("Navigate Contents")."\n"
+             .'</a>'."\n"
+             .'</p>'."\n"
+    );
 
     #&dumpenv($r); #debug -> prints the environment
-    $r->print("  </body> \n</html>\n");
+    $r->print(&Apache::loncommon::end_page());
     return OK;
 }
 
@@ -116,7 +122,7 @@ END
 
 sub get_javascripts() {
     
-    my $message = &mt('Please choose a PDF-File');
+    my $message = &mt('Please choose a PDF-File.');
 
     # simple test if the upload ends with ".pdf"
     # it's only for giving a message to the user
@@ -139,42 +145,29 @@ END
 
 
 sub get_uploadform() {
-    my $result = <<END
-    <p height='25'> 
-    </p>
-    <form method="post" enctype="multipart/form-data" onsubmit="return checkFilename(this);">
-      <input type="hidden" name="type" value="upload" />
-      <div align="center">
-        <table bgcolor="#000000" width="450" cellspacing="0" cellpadding="0" border="0">
-          <tr>
-            <td>
-              <table cellspacing="1" cellpadding="2" border="0" width="100%">
-                <tr>
-                  <td colspan="2" bgcolor="#99EEEE">
-                    <b>PDF-Formular einsenden</b>
-                  </td>
-                </tr>
-                <tr>
-                  <td bgcolor="#F8F8F8">
-                      Datei ausw&auml;hlen
-                  </td>
-                  <td bgcolor="#F8F8F8">
-                    <input type="file" name="file" id="filename" />
-                  </td>
-                </tr>
-                <tr>
-                  <td bgcolor="#F8F8F8" colspan="2" align="right" style="margin-right: 30px;">
-                    <input type="submit" name="Uploaded" value="Absenden" />
-                  </td>
-                </tr>
-                </table>
-              </td>
-           </tr>
-        </table>
-      </div>
-    </form>    
-END
-;
+    
+    my %lt = &Apache::lonlocal::texthash(
+                 'title'  => 'Upload a PDF Form with filled Form Fields', 
+                 'chFile' => 'File',
+                 'submit' => 'Upload',
+             );
+
+    my $result = 
+        '<br />'
+       .'<form method="post" enctype="multipart/form-data" onsubmit="return checkFilename(this);">'
+       .'<input type="hidden" name="type" value="upload" />'
+       .&Apache::lonhtmlcommon::start_pick_box()
+       .&Apache::lonhtmlcommon::row_headline()
+       .'<h2>'.$lt{'title'}.'</h2>'
+       .&Apache::lonhtmlcommon::row_closure()
+       .&Apache::lonhtmlcommon::row_title($lt{'chFile'})
+       .'<input type="file" name="file" id="filename" />'
+       .&Apache::lonhtmlcommon::row_closure(1)
+       .&Apache::lonhtmlcommon::end_pick_box()
+       .'<input type="submit" name="Uploaded" value="'.$lt{'submit'}.'" />'
+       .'</form>'
+       .'<br />';
+
   return $result;
 }
 
@@ -187,7 +180,9 @@ sub processPDF {
     if (scalar @pdfdata) {    
         &grade_pdf(@pdfdata);
     } else {
-        $result .= "<h2>".&mt("Can't find any valid PDF-formfields")."</h2>";
+        $result .= '<p class="LC_error">'
+                  .&mt("Can't find any valid PDF formfields.")
+                  .'</p>';
     }
 }
 
@@ -222,13 +217,20 @@ sub grade_pdf {
     my $debug = ();
 
     $debug  .= "Found: ". scalar @pdfdata." Entries \n";
-    $result .= "<table width='80%'>\n";
+    $result .= '<h2>'.&mt('Results of PDF Form problems').'</h2>';
+    $result .= &Apache::loncommon::start_data_table()
+              .&Apache::loncommon::start_data_table_header_row()
+              .'<th>'.&mt('Problem Name').'</th>'
+              .'<th>'.&mt('Grading').'</th>'
+              .&Apache::loncommon::start_data_table_header_row()
+              .&Apache::loncommon::end_data_table_header_row();
+
     foreach my $entry (sort(@pdfdata)) {
         if ($entry =~ /^meta.*/) {
             $debug .= 'found: metadata -> '.$entry . "<br />";
             my ($label, $value) = ($entry =~ /^([^?]*)\?(.*)/);
             my ($domain, $user) = split('&', $value);
-            $user =~ s/(.*)\n/$1/; #TODO find an other way
+            $user =~ s/(.*)\n/$1/; #TODO is that equals to chomp?
             
             if($user ne $env{'user.name'} or  $domain ne $env{'user.domain'}) {
                 return "<pre>".&mt('Wrong username in PDF-File').": $user $domain -> $env{'user.domain'} $env{'user.name'} </pre>";    
@@ -241,7 +243,7 @@ sub grade_pdf {
             my ($map,$id,$resource)=&Apache::lonnet::decode_symb($symb);  
             $value =~ s/(.*)\n/$1/; 
 
-            #fehlerhafte Radiobuttons rausfiltern (Bug in CABAReT Stage)
+            #filter incorrect radiobuttons (Bug in CABAReT Stage)
             if($type eq 'radiobuttonresponse' && $value eq 'Off' ) {
                 next;
             }
@@ -252,7 +254,7 @@ sub grade_pdf {
                  $problems{$symb.$part}{$HWVAL} = $value;
             } else {
                  $problems{$symb.$part} =  { 'resource' => $resource,
-                                        'symb' => $symb,
+                                        'symb' => &Apache::lonenc::encrypted($symb),
                                         'submitted' => $part,
                                         $submit => 'Answer',
                                         $HWVAL => $value};
@@ -262,42 +264,46 @@ sub grade_pdf {
             next;
         }
     }
-    $result .= $debug;
+    #$result .= $debug;
 
     foreach my $key (sort (keys %problems)) {
         my %problem = %{$problems{$key}};
         my ($problemname, $grade) = &grade_problem(%problem);
-        $result .= "<tr style='background-color: #EEF5F5;'><td>$problemname</td><td style='background-color: ";
+
+        $result .= &Apache::loncommon::start_data_table_row();
+        $result .= "<td>$problemname</td><td class='";
         if($grade eq "EXACT_ANS") {
-            $result .= "#DDFFDD";
+            $result .= "LC_answer_correct";
         } else { 
-            $result .= "#DD5555";
+            $result .= "LC_answer_charged_try";
         }
-        $result .= "'>$grade</td></tr>";
-
+        $result .= "'>$grade</span></td>";
+        $result .= &Apache::loncommon::end_data_table_row();
     }
-    $result .= "\n</table>";
+    $result .= &Apache::loncommon::end_data_table();
+
 
     return $result;        
 }
 
 sub grade_problem {
     my %problem = @_;
+    my ($title, $part) = ();
 
-    my ($content) =  &Apache::loncommon::ssi_with_retries('/res/'.
-            $problem{'resource'}, 5, %problem);
+    &Apache::loncommon::ssi_with_retries('/res/'.$problem{'resource'}, 5, %problem);
 
-    $content =~ s/.*class="LC_current_location".*>(.*)<\/td>.*/$1/g;
-    $content = $1;
-
-    my $part = $problem{submitted};
+    $title = &Apache::lonnet::gettitle($problem{'symb'});    
+    $part = $problem{submitted};
     $part =~ s/part_(.*)/$1/;
-    $content .= " - Part $part";
+    unless($part eq '0') {
+        #add information about part number
+        $title .= " - Part $part";
+    }
  
     my %problemhash = &Apache::lonnet::restore($problem{'symb'});
     my $grade = $problemhash{"resource.$part.award"};
 
-    return ($content, $grade);    
+    return ($title, $grade);    
 }
 
 sub dumpenv  {