version 1.214, 2008/11/17 14:06:14
|
version 1.218, 2008/12/10 18:43:32
|
Line 26
|
Line 26
|
# http://www.lon-capa.org/ |
# 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 HANDLER SUBROUTINE |
|
|
|
handler() |
|
|
|
=head1 OTHER 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; |
package Apache::lonmeta; |
|
|
use strict; |
use strict; |
Line 1023 sub present_uneditable_metadata {
|
Line 888 sub present_uneditable_metadata {
|
my $obsolete=$content{'obsolete'}; |
my $obsolete=$content{'obsolete'}; |
my $obsoletewarning=''; |
my $obsoletewarning=''; |
if (($obsolete) && ($env{'user.adv'})) { |
if (($obsolete) && ($env{'user.adv'})) { |
$obsoletewarning='<p><font color="red">'. |
$obsoletewarning='<p><span class="LC_warning">'. |
&mt('This resource has been marked obsolete by the author(s)'). |
&mt('This resource has been marked obsolete by the author(s)'). |
'</font></p>'; |
'</span></p>'; |
} |
} |
# |
# |
my %lt=&fieldnames(); |
my %lt=&fieldnames(); |
Line 1062 sub present_uneditable_metadata {
|
Line 927 sub present_uneditable_metadata {
|
'obsoletereplacement'); |
'obsoletereplacement'); |
} |
} |
foreach my $field (@fields) { |
foreach my $field (@fields) { |
$table.='<tr><td bgcolor="#AAAAAA">'.$lt{$field}. |
$table.=&Apache::lonhtmlcommon::row_title($lt{$field}) |
'</td><td bgcolor="#CCCCCC">'. |
.&prettyprint($field,$content{$field}) |
&prettyprint($field,$content{$field}).'</td></tr>'; |
.&Apache::lonhtmlcommon::row_closure(); |
delete($content{$field}); |
delete($content{$field}); |
} |
} |
# |
# |
$r->print(<<ENDHEAD); |
$r->print("<h2>$title</h2>" |
<h2>$title</h2> |
.'<p>' |
<p> |
.$disuri.'<br />' |
$disuri<br /> |
.$obsoletewarning |
$obsoletewarning |
.$versiondisplay |
$versiondisplay |
.'</p>' |
</p> |
.&Apache::lonhtmlcommon::start_pick_box() |
<table cellspacing="2" border="0"> |
.$table |
$table |
.&Apache::lonhtmlcommon::end_pick_box() |
</table> |
); |
ENDHEAD |
|
if (!$uploaded && $env{'user.adv'}) { |
if (!$uploaded && $env{'user.adv'}) { |
&print_dynamic_metadata($r,$uri,\%content); |
&print_dynamic_metadata($r,$uri,\%content); |
} |
} |
Line 1105 sub print_dynamic_metadata {
|
Line 969 sub print_dynamic_metadata {
|
exists($dynmeta{'goto'}) || |
exists($dynmeta{'goto'}) || |
exists($dynmeta{'course'})) { |
exists($dynmeta{'course'})) { |
$r->print('<h4>'.&mt('Access and Usage Statistics').'</h4>'. |
$r->print('<h4>'.&mt('Access and Usage Statistics').'</h4>'. |
'<table cellspacing="2" border="0">'); |
&Apache::lonhtmlcommon::start_pick_box()); |
foreach ('count', |
foreach ('count', |
'sequsage','sequsage_list', |
'sequsage','sequsage_list', |
'comefrom','comefrom_list', |
'comefrom','comefrom_list', |
'goto','goto_list', |
'goto','goto_list', |
'course','course_list') { |
'course','course_list') { |
$r->print('<tr><td bgcolor="#AAAAAA">'.$lt{$_}.'</td>'. |
$r->print(&Apache::lonhtmlcommon::row_title($lt{$_}) |
'<td bgcolor="#CCCCCC">'. |
.&prettyprint($_,$dynmeta{$_}) |
&prettyprint($_,$dynmeta{$_})."</td></tr>\n"); |
.&Apache::lonhtmlcommon::row_closure() |
|
); |
} |
} |
$r->print('</table>'); |
$r->print(&Apache::lonhtmlcommon::end_pick_box()); |
} else { |
} else { |
$r->print('<h4>'.&mt('No Access or Usages Statistics are available for this resource.').'</h4>'); |
$r->print('<h4>'.&mt('No Access or Usages Statistics are available for this resource.').'</h4>'); |
} |
} |
Line 1130 sub print_dynamic_metadata {
|
Line 995 sub print_dynamic_metadata {
|
$r->print('<h4>'. |
$r->print('<h4>'. |
&mt('Overall Assessment Statistical Data'). |
&mt('Overall Assessment Statistical Data'). |
'</h4>'. |
'</h4>'. |
'<table cellspacing="2" border="0">'); |
&Apache::lonhtmlcommon::start_pick_box()); |
$r->print('<tr><td bgcolor="#AAAAAA">'.$lt{'stdno'}.'</td>'. |
$r->print(&Apache::lonhtmlcommon::row_title($lt{'stdno'}) |
'<td bgcolor="#CCCCCC">'. |
.&prettyprint('stdno',$dynmeta{'stdno'}) |
&prettyprint('stdno',$dynmeta{'stdno'}). |
.&Apache::lonhtmlcommon::row_closure() |
'</td>'."</tr>\n"); |
); |
foreach ('avetries','difficulty','disc') { |
foreach ('avetries','difficulty','disc') { |
$r->print('<tr><td bgcolor="#AAAAAA">'.$lt{$_}.'</td>'. |
$r->print(&Apache::lonhtmlcommon::row_title($lt{$_}) |
'<td bgcolor="#CCCCCC">'. |
.&prettyprint($_,sprintf('%5.2f',$dynmeta{$_})) |
&prettyprint($_,sprintf('%5.2f',$dynmeta{$_})). |
.&Apache::lonhtmlcommon::row_closure() |
'</td>'."</tr>\n"); |
); |
} |
} |
$r->print('</table>'); |
$r->print(&Apache::lonhtmlcommon::end_pick_box()); |
} |
} |
if (exists($dynmeta{'stats'})) { |
if (exists($dynmeta{'stats'})) { |
# |
# |
Line 1149 sub print_dynamic_metadata {
|
Line 1014 sub print_dynamic_metadata {
|
$r->print('<h4>'. |
$r->print('<h4>'. |
&mt('Recent Detailed Assessment Statistical Data'). |
&mt('Recent Detailed Assessment Statistical Data'). |
'</h4>'); |
'</h4>'); |
my $table = '<table cellspacing="2" border="0">'. |
my $table=&Apache::loncommon::start_data_table() |
'<tr>'. |
.&Apache::loncommon::start_data_table_header_row() |
'<th>'.&mt('Course').'</th>'. |
.'<th>'.&mt('Course').'</th>' |
'<th>'.&mt('Section(s)').'</th>'. |
.'<th>'.&mt('Section(s)').'</th>' |
'<th>'.&mt('Num Student').'s</th>'. |
.'<th>'.&mt('Num Students').'</th>' |
'<th>'.&mt('Mean Tries').'</th>'. |
.'<th>'.&mt('Mean Tries').'</th>' |
'<th>'.&mt('Degree of Difficulty').'</th>'. |
.'<th>'.&mt('Degree of Difficulty').'</th>' |
'<th>'.&mt('Degree of Discrimination').'</th>'. |
.'<th>'.&mt('Degree of Discrimination').'</th>' |
'<th>'.&mt('Time of computation').'</th>'. |
.'<th>'.&mt('Time of computation').'</th>' |
'</tr>'.$/; |
.&Apache::loncommon::end_data_table_header_row().$/; |
foreach my $identifier (sort(keys(%{$dynmeta{'stats'}}))) { |
foreach my $identifier (sort(keys(%{$dynmeta{'stats'}}))) { |
my $data = $dynmeta{'stats'}->{$identifier}; |
my $data = $dynmeta{'stats'}->{$identifier}; |
my $course = $data->{'course'}; |
my $course = $data->{'course'}; |
Line 1169 sub print_dynamic_metadata {
|
Line 1034 sub print_dynamic_metadata {
|
&Apache::lonnet::logthis('lookup for '.$course.' failed'); |
&Apache::lonnet::logthis('lookup for '.$course.' failed'); |
next; |
next; |
} |
} |
$table .= '<tr>'; |
$table .= &Apache::loncommon::start_data_table_row(); |
$table .= |
$table .= |
'<td><nobr>'.$courseinfo{'description'}.'</nobr></td>'; |
'<td><span class="LC_nobreak">'.$courseinfo{'description'}.'</span></td>'; |
$table .= |
$table .= |
'<td align="right">'.$data->{'sections'}.'</td>'; |
'<td align="right">'.$data->{'sections'}.'</td>'; |
$table .= |
$table .= |
Line 1186 sub print_dynamic_metadata {
|
Line 1051 sub print_dynamic_metadata {
|
$table .= '</td>'; |
$table .= '</td>'; |
} |
} |
$table .= |
$table .= |
'<td><nobr>'. |
'<td><span class="LC_nobreak">'. |
&Apache::lonlocal::locallocaltime($data->{'timestamp'}). |
&Apache::lonlocal::locallocaltime($data->{'timestamp'}). |
'</nobr></td>'; |
'</span></td>'; |
$table .= |
$table .= &Apache::loncommon::end_data_table_row().$/; |
'</tr>'.$/; |
|
} |
} |
$table .= '</table>'.$/; |
$table .= &Apache::loncommon::end_data_table().$/; |
$r->print($table); |
$r->print($table); |
} else { |
} else { |
$r->print(&mt('No new dynamic data found.')); |
$r->print(&mt('No new dynamic data found.')); |
Line 1211 sub print_dynamic_metadata {
|
Line 1075 sub print_dynamic_metadata {
|
exists($dynmeta{'correct'}) || |
exists($dynmeta{'correct'}) || |
exists($dynmeta{'technical'})){ |
exists($dynmeta{'technical'})){ |
$r->print('<h4>'.&mt('Evaluation Data').'</h4>'. |
$r->print('<h4>'.&mt('Evaluation Data').'</h4>'. |
'<table cellspacing="2" border="0">'); |
&Apache::lonhtmlcommon::start_pick_box()); |
foreach ('clear','depth','helpful','correct','technical') { |
foreach ('clear','depth','helpful','correct','technical') { |
$r->print('<tr><td bgcolor="#AAAAAA">'.$lt{$_}.'</td>'. |
$r->print(&Apache::lonhtmlcommon::row_title($lt{$_}) |
'<td bgcolor="#CCCCCC">'. |
.&prettyprint($_,$dynmeta{$_}) |
&prettyprint($_,$dynmeta{$_})."</td></tr>\n"); |
.&Apache::lonhtmlcommon::row_closure() |
|
); |
} |
} |
$r->print('</table>'); |
$r->print(&Apache::lonhtmlcommon::end_pick_box()); |
} else { |
} else { |
$r->print('<h4>'.&mt('No Evaluation Data is available for this resource.').'</h4>'); |
$r->print('<h4>'.&mt('No Evaluation Data is available for this resource.').'</h4>'); |
} |
} |
Line 1245 sub print_dynamic_metadata {
|
Line 1110 sub print_dynamic_metadata {
|
# All other stuff |
# All other stuff |
$r->print('<h3>'. |
$r->print('<h3>'. |
&mt('Additional Metadata (non-standard, parameters, exports)'). |
&mt('Additional Metadata (non-standard, parameters, exports)'). |
'</h3><table border="0" cellspacing="1">'); |
'</h3>'); |
|
$r->print(&Apache::lonhtmlcommon::start_pick_box()); |
foreach (sort(keys(%content))) { |
foreach (sort(keys(%content))) { |
my $name=$_; |
my $name=$_; |
if ($name!~/\.display$/) { |
if ($name!~/\.display$/) { |
Line 1263 sub print_dynamic_metadata {
|
Line 1129 sub print_dynamic_metadata {
|
$name.'.'.$_).'; '; |
$name.'.'.$_).'; '; |
} |
} |
} |
} |
$r->print('<tr><td bgcolor="#bbccbb"><font size="-1" color="#556655">'.$display.'</font></td><td bgcolor="#ccddcc"><font size="-1" color="#556655">'.$content{$name}); |
$r->print(&Apache::lonhtmlcommon::row_title($display) |
|
.$content{$name} |
|
); |
if ($otherinfo) { |
if ($otherinfo) { |
$r->print(' ('.$otherinfo.')'); |
$r->print(' ('.$otherinfo.')'); |
} |
} |
$r->print("</font></td></tr>\n"); |
$r->print(&Apache::lonhtmlcommon::row_closure()); |
} |
} |
} |
} |
$r->print("</table>"); |
$r->print(&Apache::lonhtmlcommon::end_pick_box()); |
return; |
return; |
} |
} |
|
|
Line 1509 ENDEDIT
|
Line 1377 ENDEDIT
|
my ($outcome,$result) = &store_metadata($fn,$uri,'store'); |
my ($outcome,$result) = &store_metadata($fn,$uri,'store'); |
$r->print($result); |
$r->print($result); |
} |
} |
$r->print($output.'<br /><input type="submit" title="Save Metadata" name="store" value="'. |
$r->print($output.'<br /><input type="submit" title="'.&mt('Save Metadata').'" name="store" value="'. |
&mt('Save').'" />'); |
&mt('Save').'" />'); |
|
|
if ($file_type eq 'portfolio' || $file_type eq 'groups') { |
if ($file_type eq 'portfolio' || $file_type eq 'groups') { |
Line 1675 sub update_metadata_table {
|
Line 1543 sub update_metadata_table {
|
1; |
1; |
__END__ |
__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 |