--- loncom/interface/lonmeta.pm	2007/03/12 19:10:48	1.204
+++ loncom/interface/lonmeta.pm	2008/11/18 19:14:22	1.215
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Metadata display handler
 #
-# $Id: lonmeta.pm,v 1.204 2007/03/12 19:10:48 banghart Exp $
+# $Id: lonmeta.pm,v 1.215 2008/11/18 19:14:22 jms Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -26,6 +26,99 @@
 # http://www.lon-capa.org/
 
 
+=head1 NAME
+
+Apache::lonmeta - display meta data
+
+=head1 SYNOPSIS
+
+Handler to display meta data
+
+This is part of the LearningOnline Network with CAPA project
+described at http://www.lon-capa.org.
+
+=head1 SUBROUTINES
+
+=over
+
+=item &get_dynamic_metadata_from_sql($url) :
+
+Queries sql database for dynamic metdata
+Returns a hash of hashes, with keys of urls which match $url
+Returned fields are given below.
+
+Examples:
+
+    %DynamicMetadata = &Apache::lonmeta::get_dynmaic_metadata_from_sql
+    ('/res/msu/korte/');
+
+    $DynamicMetadata{'/res/msu/korte/example.problem'}->{$field}
+
+=item dynamicmeta()
+
+Fetch and evaluate dynamic metadata
+
+=item access_count()
+
+=item alttag()
+
+Try to make an alt tag if there is none
+
+=item authordisplay()
+
+Author display
+
+=item evalgraph()
+
+Pretty display
+
+=item diffgraph()
+
+=item fieldnames()
+
+=item portfolio_linked_path()
+
+=item get_port_path_and_group()
+
+=item portfolio_display_uri()
+
+=item pre_select_course()
+
+=item select_course()
+
+=item prettyprint()
+
+Pretty printing of metadata field
+
+=item direct()
+
+Pretty input of metadata field
+
+=item selectbox()
+
+=item relatedfield()
+
+=item prettyinput()
+
+=item report_bombs()
+
+=item present_uneditable_metadata()
+
+=item present_editable_metadata()
+
+=item store_metadata()
+
+=item store_transferred_addedfields()
+
+=item store_portfolio_metadata()
+
+=item update_metadata_table()
+
+=back
+
+=cut
+
+
 package Apache::lonmeta;
 
 use strict;
@@ -42,24 +135,6 @@ use Apache::lonmsg;
 use LONCAPA qw(:DEFAULT :match);
 
 
-############################################################
-############################################################
-##
-## &get_dynamic_metadata_from_sql($url)
-## 
-## Queries sql database for dynamic metdata
-## Returns a hash of hashes, with keys of urls which match $url
-## Returned fields are given below.
-##
-## Examples:
-## 
-## %DynamicMetadata = &Apache::lonmeta::get_dynmaic_metadata_from_sql
-##     ('/res/msu/korte/');
-##
-## $DynamicMetadata{'/res/msu/korte/example.problem'}->{$field}
-##
-############################################################
-############################################################
 sub get_dynamic_metadata_from_sql {
     my ($url) = shift();
     my ($authordom,$author)=($url=~m{^/res/($match_domain)/($match_username)/});
@@ -265,7 +340,7 @@ sub fieldnames {
          'correct'    => 'Material appears to be correct',
          'technical'  => 'Resource is technically correct', 
          'avetries'   => 'Average number of tries till solved',
-         'stdno'      => 'Total number of students who have worked on this problem',
+         'stdno'      => 'Statistics calculated for number of students',
          'difficulty' => 'Degree of difficulty',
          'disc'       => 'Degree of discrimination',
 	     'dependencies' => 'Resources used by this resource',
@@ -811,7 +886,7 @@ sub handler {
 						 {'domain' => $resdomain,}));
         &present_editable_metadata($r,$uri);
     } else {
-        $r->print(&Apache::loncommon::start_page('Catalog Information',
+        $r->print(&Apache::loncommon::start_page('Metadata',
 						 undef,
 						 {'domain' => $resdomain,}));
         &present_uneditable_metadata($r,$uri);
@@ -839,10 +914,14 @@ sub report_bombs {
 	    &Apache::lonmsg::clear_author_res_msg($uri);
 	}
         my $clear=&mt('Clear all Messages in Subdirectory');
-	$r->print(<<ENDCLEAR);
+        my $cancel=&mt('Back to Directory');
+        my $cancelurl=$uri;
+        $cancelurl=~s/^\Q$domain\E/\/priv/;
+        $r->print(<<ENDCLEAR);
 <form method="post">
 <input type="submit" name="clearbombs" value="$clear" />
-</form>
+<a href="$cancelurl">$cancel</a>
+</form><hr />
 ENDCLEAR
         my %brokenurls = 
             &Apache::lonmsg::all_url_author_res_msg($author,$domain);
@@ -1026,17 +1105,17 @@ sub print_dynamic_metadata {
             #
             # New assessment statistics
             $r->print('<h4>'.
-                      &mt('Detailed Assessment Statistical Data').
+                      &mt('Recent Detailed Assessment Statistical Data').
                       '</h4>');
             my $table = '<table cellspacing="2" border="0">'.
                 '<tr>'.
-                '<th>Course</th>'.
-                '<th>Section(s)</th>'.
-                '<th>Num Students</th>'.
-                '<th>Mean Tries</th>'.
-                '<th>Degree of Difficulty</th>'.
-                '<th>Degree of Discrimination</th>'.
-                '<th>Time of computation</th>'.
+                '<th>'.&mt('Course').'</th>'.
+                '<th>'.&mt('Section(s)').'</th>'.
+                '<th>'.&mt('Num Student').'s</th>'.
+                '<th>'.&mt('Mean Tries').'</th>'.
+                '<th>'.&mt('Degree of Difficulty').'</th>'.
+                '<th>'.&mt('Degree of Discrimination').'</th>'.
+                '<th>'.&mt('Time of computation').'</th>'.
                 '</tr>'.$/;
             foreach my $identifier (sort(keys(%{$dynmeta{'stats'}}))) {
                 my $data = $dynmeta{'stats'}->{$identifier};
@@ -1074,7 +1153,7 @@ sub print_dynamic_metadata {
             $table .= '</table>'.$/;
             $r->print($table);
         } else {
-            $r->print('No new dynamic data found.');
+            $r->print(&mt('No new dynamic data found.'));
         }
     } else {
         $r->print('<h4>'.
@@ -1212,22 +1291,20 @@ ENDBOMBS
 <input type="submit" name="clearmsg" value="$clear" />
 ENDDEL
         } else {
-            $r->print('<p><a href="'.$disuri.'" />'.$goback.'</a></p>');
+            $r->print('<p><a href="'.$disuri.'">'.$goback.'</a></p>');
 	    if ($env{'form.clearmsg'}) {
 		my ($diruri) = ($disuri =~ m{(.*/)[^/]*});
-		$r->print('<p><a href="'.$diruri.'" />'.
+		$r->print('<p><a href="'.$diruri.'">'.
 			  &mt('Back To Directory').'</a></p>');
 	    }
 	}
 	$r->print('<br />'.$bombs);
     } else {
-        my $displayfile='Catalog Information for '.$disuri;
+        my $displayfile=&mt('Metadata for [_1]',$disuri);
         if ($disuri=~/\/default$/) {
             my $dir=$disuri;
             $dir=~s/default$//;
-            $displayfile=
-                &mt('Default Cataloging Information for Directory').' '.
-                $dir;
+            $displayfile=&mt('Default Metadata for Directory [_1]',$dir);
         }
         %Apache::lonpublisher::metadatafields=();
         %Apache::lonpublisher::metadatakeys=();
@@ -1312,6 +1389,11 @@ ENDEDIT
 		$Apache::lonpublisher::metadatafields{'owner'} =
 		    $env{'user.name'}.':'.$env{'user.domain'};
 	    }
+	    if (! $Apache::lonpublisher::metadatafields{'author'}) {
+		$Apache::lonpublisher::metadatafields{'author'} =
+		    &Apache::loncommon::plainname($env{'user.name'},
+						  $env{'user.domain'});
+	    }
 	    if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') {
 
                 if ($file_type eq 'portfolio') {
@@ -1327,7 +1409,7 @@ ENDEDIT
                         ".description"}.'</strong>').'<br />');
                 }
 	    } else {
-		$r->print('<a href="'.$uri.'?changecourse=true">This resource is not associated with a course.</a><br />');
+		$r->print('<a href="'.$uri.'?changecourse=true">'.&mt('This resource is not associated with a course.').'</a><br />');
 	    }
 	}
 	if (@added_order) {
@@ -1385,8 +1467,8 @@ ENDEDIT
             my ($outcome,$result) = &store_metadata($fn,$uri,'store');
             $r->print($result);
 	}
-	$r->print($output.'<br /><input type="submit" name="store" value="'.
-                  &mt('Store Catalog Information').'" />');
+	$r->print($output.'<br /><input type="submit" title="Save Metadata" name="store" value="'.
+                  &mt('Save').'" />');
 
 	if ($file_type eq 'portfolio' || $file_type eq 'groups') {
 	    my ($port_path,$group) = &get_port_path_and_group($uri);