--- 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);