'.&mt('If you would like to associate this resource ([_1]) with a current or previous course, please select one from the list below, otherwise select, \'None\'',''.$res_uri.'').'
');
+ $r->print(''.&mt('If you would like to associate this resource ([_1]) with a current or previous course, please select one from the list below, otherwise select, "None".',''.$res_uri.'').'
');
$output = &select_course();
$r->print($output.'$title
-
-$disuri
-$obsoletewarning
-$versiondisplay
-
-
-ENDHEAD
+ $r->print("$title
"
+ .''
+ .$disuri.'
'
+ .$obsoletewarning
+ .$versiondisplay
+ .'
'
+ .&Apache::lonhtmlcommon::start_pick_box()
+ .$table
+ .&Apache::lonhtmlcommon::end_pick_box()
+ );
if (!$uploaded && $env{'user.adv'}) {
&print_dynamic_metadata($r,$uri,\%content);
}
@@ -1099,25 +968,32 @@ sub print_dynamic_metadata {
my %dynmeta=&dynamicmeta($uri);
#
# General Access and Usage Statistics
+ $r->print(''.&mt('Access and Usage Statistics').'
');
if (exists($dynmeta{'count'}) ||
exists($dynmeta{'sequsage'}) ||
exists($dynmeta{'comefrom'}) ||
exists($dynmeta{'goto'}) ||
exists($dynmeta{'course'})) {
- $r->print(''.&mt('Access and Usage Statistics').'
'.
- '');
- foreach ('count',
- 'sequsage','sequsage_list',
- 'comefrom','comefrom_list',
- 'goto','goto_list',
- 'course','course_list') {
- $r->print(''.$lt{$_}.' | '.
- ''.
- &prettyprint($_,$dynmeta{$_})." |
\n");
+ $r->print(&Apache::lonhtmlcommon::start_pick_box());
+ my @counts = ('count','sequsage','sequsage_list',
+ 'comefrom','comefrom_list','goto',
+ 'goto_list','course','course_list');
+ my $rownum = 0;
+ foreach my $item (@counts) {
+ my $lastrow = '';
+ $rownum ++;
+ $lastrow = 1 if ($rownum == @counts);
+ $r->print(&Apache::lonhtmlcommon::row_title($lt{$item})
+ .&prettyprint($item,$dynmeta{$item})
+ .&Apache::lonhtmlcommon::row_closure($lastrow)
+ );
}
- $r->print('
');
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
} else {
- $r->print(''.&mt('No Access or Usages Statistics are available for this resource.').'
');
+ $r->print(''
+ .&mt('No Access or Usages Statistics are available for this resource.')
+ .'
'
+ );
}
#
# Assessment statistics
@@ -1130,35 +1006,41 @@ sub print_dynamic_metadata {
$r->print(''.
&mt('Overall Assessment Statistical Data').
'
'.
- '');
- $r->print(''.$lt{'stdno'}.' | '.
- ''.
- &prettyprint('stdno',$dynmeta{'stdno'}).
- ' | '."
\n");
- foreach ('avetries','difficulty','disc') {
- $r->print(''.$lt{$_}.' | '.
- ''.
- &prettyprint($_,sprintf('%5.2f',$dynmeta{$_})).
- ' | '."
\n");
- }
- $r->print('
');
- }
+ &Apache::lonhtmlcommon::start_pick_box());
+ $r->print(&Apache::lonhtmlcommon::row_title($lt{'stdno'})
+ .&prettyprint('stdno',$dynmeta{'stdno'})
+ .&Apache::lonhtmlcommon::row_closure()
+ );
+ my @stats = ('avetries','difficulty','disc');
+ my $rownum = 0;
+ foreach my $item (@stats) {
+ my $lastrow = '';
+ $rownum ++;
+ $lastrow = 1 if ($rownum == @stats);
+ $r->print(&Apache::lonhtmlcommon::row_title($lt{$item})
+ .&prettyprint($item,sprintf('%5.2f',$dynmeta{$item}))
+ .&Apache::lonhtmlcommon::row_closure($lastrow)
+ );
+ }
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
+ }
+ #
+ # New assessment statistics
+ $r->print(''
+ .&mt('Recent Detailed Assessment Statistical Data')
+ .'
'
+ );
if (exists($dynmeta{'stats'})) {
- #
- # New assessment statistics
- $r->print(''.
- &mt('Recent Detailed Assessment Statistical Data').
- '
');
- my $table = ''.
- ''.
- ''.&mt('Course').' | '.
- ''.&mt('Section(s)').' | '.
- ''.&mt('Num Student').'s | '.
- ''.&mt('Mean Tries').' | '.
- ''.&mt('Degree of Difficulty').' | '.
- ''.&mt('Degree of Discrimination').' | '.
- ''.&mt('Time of computation').' | '.
- '
'.$/;
+ my $table=&Apache::loncommon::start_data_table()
+ .&Apache::loncommon::start_data_table_header_row()
+ .''.&mt('Course').' | '
+ .''.&mt('Section(s)').' | '
+ .''.&mt('Num Students').' | '
+ .''.&mt('Mean Tries').' | '
+ .''.&mt('Degree of Difficulty').' | '
+ .''.&mt('Degree of Discrimination').' | '
+ .''.&mt('Time of computation').' | '
+ .&Apache::loncommon::end_data_table_header_row().$/;
foreach my $identifier (sort(keys(%{$dynmeta{'stats'}}))) {
my $data = $dynmeta{'stats'}->{$identifier};
my $course = $data->{'course'};
@@ -1169,33 +1051,35 @@ sub print_dynamic_metadata {
&Apache::lonnet::logthis('lookup for '.$course.' failed');
next;
}
- $table .= '';
+ $table .= &Apache::loncommon::start_data_table_row();
$table .=
- ''.$courseinfo{'description'}.' | ';
+ ''.$courseinfo{'description'}.' | ';
$table .=
''.$data->{'sections'}.' | ';
$table .=
''.$data->{'stdno'}.' | ';
- foreach ('avetries','difficulty','disc') {
+ foreach my $item ('avetries','difficulty','disc') {
$table .= '';
- if (exists($data->{$_})) {
- $table .= sprintf('%.2f',$data->{$_}).' ';
+ if (exists($data->{$item})) {
+ $table .= sprintf('%.2f',$data->{$item}).' ';
} else {
$table .= '';
}
$table .= ' | ';
}
$table .=
- ''.
+ ''.
&Apache::lonlocal::locallocaltime($data->{'timestamp'}).
- ' | ';
- $table .=
- ' |
'.$/;
+ '';
+ $table .= &Apache::loncommon::end_data_table_row().$/;
}
- $table .= '
'.$/;
+ $table .= &Apache::loncommon::end_data_table().$/;
$r->print($table);
} else {
- $r->print(&mt('No new dynamic data found.'));
+ $r->print(''
+ .&mt('No new dynamic data found.')
+ .'
'
+ );
}
} else {
$r->print(''.
@@ -1204,73 +1088,105 @@ sub print_dynamic_metadata {
}
#
- #
+ # Evaluation Data
+ $r->print(''.&mt('Evaluation Data').'
');
if (exists($dynmeta{'clear'}) ||
exists($dynmeta{'depth'}) ||
exists($dynmeta{'helpful'}) ||
exists($dynmeta{'correct'}) ||
exists($dynmeta{'technical'})){
- $r->print(''.&mt('Evaluation Data').'
'.
- '
');
- foreach ('clear','depth','helpful','correct','technical') {
- $r->print(''.$lt{$_}.' | '.
- ''.
- &prettyprint($_,$dynmeta{$_})." |
\n");
+ $r->print(&Apache::lonhtmlcommon::start_pick_box());
+ my @criteria = ('clear','depth','helpful','correct','technical');
+ my $rownum = 0;
+ foreach my $item (@criteria) {
+ my $lastrow = '';
+ $rownum ++;
+ $lastrow = 1 if ($rownum == @criteria);
+ $r->print(&Apache::lonhtmlcommon::row_title($lt{$item})
+ .&prettyprint($item,$dynmeta{$item})
+ .&Apache::lonhtmlcommon::row_closure($lastrow)
+ );
}
- $r->print('
');
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
} else {
- $r->print(''.&mt('No Evaluation Data is available for this resource.').'
');
+ $r->print(''
+ .&mt('No Evaluation Data is available for this resource.')
+ .'
'
+ );
}
+ # Evaluation Comments
$uri=~/^\/res\/($match_domain)\/($match_username)\//;
if ((($env{'user.domain'} eq $1) && ($env{'user.name'} eq $2))
|| ($env{'user.role.ca./'.$1.'/'.$2})) {
+ $r->print(''.&mt('Evaluation Comments').'
'
+ .'('
+ .&mt('visible to author and co-authors only')
+ .')
'
+ );
if (exists($dynmeta{'comments'})) {
- $r->print(''.&mt('Evaluation Comments').' ('.
- &mt('visible to author and co-authors only').
- ')
'.
- ''.$dynmeta{'comments'}.'
');
+ $r->print(''.$dynmeta{'comments'}.'
');
} else {
- $r->print(''.&mt('There are no Evaluation Comments on this resource.').'
');
+ $r->print(''
+ .&mt('There are no Evaluation Comments on this resource.')
+ .'
'
+ );
}
my $bombs = &Apache::lonmsg::retrieve_author_res_msg($uri);
if (defined($bombs) && $bombs ne '') {
- $r->print(''.&mt('Error Messages').' ('.
- &mt('visible to author and co-authors only').')'.
- '
'.$bombs);
- } else {
- $r->print(''.&mt('There are currently no Error Messages for this resource.').'
');
- }
+ $r->print(''
+ .''.&mt('Error Messages').'
'
+ .'('
+ .&mt('visible to author and co-authors only')
+ .')
'
+ .$bombs
+ );
+ } #else {
+ # $r->print(''.&mt('There are currently no Error Messages for this resource.').'
');
+ #}
}
#
# All other stuff
$r->print(''.
&mt('Additional Metadata (non-standard, parameters, exports)').
- '
');
- foreach (sort(keys(%content))) {
- my $name=$_;
- if ($name!~/\.display$/) {
+ '');
+ $r->print(&Apache::lonhtmlcommon::start_pick_box());
+ my @names;
+ foreach my $key (sort(keys(%content))) {
+ if ($key!~/\.display$/) {
+ push(@names,$key);
+ }
+ }
+ if (@names > 0) {
+ my $rownum = 0;
+ foreach my $name (@names) {
+ my $lastrow = '';
+ $rownum ++;
+ $lastrow = 1 if ($rownum == @names);
+
my $display=&Apache::lonnet::metadata($uri,
$name.'.display');
if (! $display) {
$display=$name;
};
my $otherinfo='';
- foreach ('name','part','type','default') {
+ foreach my $item ('name','part','type','default') {
if (defined(&Apache::lonnet::metadata($uri,
- $name.'.'.$_))) {
- $otherinfo.=' '.$_.'='.
+ $name.'.'.$item))) {
+ $otherinfo.=' '.$item.'='.
&Apache::lonnet::metadata($uri,
- $name.'.'.$_).'; ';
+ $name.'.'.$item).'; ';
}
}
- $r->print(''.$display.' | '.$content{$name});
+ $r->print(&Apache::lonhtmlcommon::row_title($display)
+ .$content{$name}
+ );
if ($otherinfo) {
$r->print(' ('.$otherinfo.')');
}
- $r->print(" |
\n");
+ $r->print(&Apache::lonhtmlcommon::row_closure($lastrow));
}
}
- $r->print("
");
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
return;
}
@@ -1342,11 +1258,11 @@ ENDDEL
}
$r->print('
'.$bombs);
} else {
- my $displayfile=&mt('Catalog Information for [_1]',$disuri);
+ my $displayfile=&mt('Metadata for [_1]',$disuri);
if ($disuri=~/\/default$/) {
my $dir=$disuri;
$dir=~s/default$//;
- $displayfile=&mt('Default Cataloging Information for Directory [_1]',$dir);
+ $displayfile=&mt('Default Metadata for Directory [_1]',$dir);
}
%Apache::lonpublisher::metadatafields=();
%Apache::lonpublisher::metadatakeys=();
@@ -1509,8 +1425,8 @@ ENDEDIT
my ($outcome,$result) = &store_metadata($fn,$uri,'store');
$r->print($result);
}
- $r->print($output.'
');
+ $r->print($output.'
');
if ($file_type eq 'portfolio' || $file_type eq 'groups') {
my ($port_path,$group) = &get_port_path_and_group($uri);
@@ -1571,26 +1487,26 @@ sub store_metadata {
$output .= $result;
} else {
if (! ($mfh=Apache::File->new('>'.$fn))) {
- $output .= '';
+ $output .= '';
if ($caller eq 'transfer') {
$output .= &mt('Could not transfer data in added fields to notes');
} else {
$output .= &mt('Could not write metadata');
}
- $output .= ', '.&mt('FAIL').'
';
+ $output .= ', '.&mt('FAIL').'';
$outcome = 'fail';
} else {
print $mfh ($file_content);
close($mfh);
&update_metadata_table($uri);
- $output .= '';
+ $output .= '';
if ($caller eq 'transfer') {
$output .= &mt('Transferred data in added fields to notes');
} else {
$output .= &mt('Wrote Metadata');
}
$output .= ' '.&Apache::lonlocal::locallocaltime(time).
- '
';
+ '';
$outcome = 'ok';
}
}
@@ -1618,25 +1534,25 @@ sub store_portfolio_metadata {
$env{'form.'.$formname.'.filename'}=$new_fn;
my $result =&Apache::lonnet::userfileupload($formname,'',$path);
if ($result =~ /(error|notfound)/) {
- $output = '';
+ $output = '';
if ($caller eq 'transfer') {
$output .=
&mt('Could not transfer data in added fields to notes');
} else {
$output .= &mt('Could not write metadata');
}
- $output .= ', '.&mt('FAIL').'
';
+ $output .= ', '.&mt('FAIL').'';
$outcome = 'fail';
} else {
&update_metadata_table($uri);
- $output = '';
+ $output = '';
if ($caller eq 'transfer') {
$output .= &mt('Transferred data in added fields to notes');
} else {
$output .= &mt('Wrote Metadata');
}
$output .= ' '.&Apache::lonlocal::locallocaltime(time).
- '
';
+ '';
$outcome = 'ok';
}
return ($outcome,$output);
@@ -1675,3 +1591,95 @@ sub update_metadata_table {
1;
__END__
+
+=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