--- loncom/interface/lonmeta.pm 2007/01/18 23:20:56 1.195.2.1
+++ loncom/interface/lonmeta.pm 2008/12/10 18:43:32 1.218
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Metadata display handler
#
-# $Id: lonmeta.pm,v 1.195.2.1 2007/01/18 23:20:56 albertel Exp $
+# $Id: lonmeta.pm,v 1.218 2008/12/10 18:43:32 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -42,24 +42,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 +247,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',
@@ -631,9 +613,16 @@ sub prettyinput {
if ($meta_options{$item}) {
push(@cur_values_inst,$item);
} else {
- $cur_values_stu .= $item.',';
+ if ($item ne '') {
+ $cur_values_stu .= $item.',';
+ }
}
}
+ $cur_values_stu =~ s/,$//;
+ my @key_order = sort(keys(%meta_options));
+ unshift(@key_order,'');
+ $meta_options{''} = 'Not specified';
+ $meta_options{'select_form_order'} = \@key_order;
} else {
$cur_values_stu = $value;
}
@@ -645,6 +634,7 @@ sub prettyinput {
|| ($type eq 'author')||($type eq 'notes')
|| ($type eq 'abstract')|| ($type eq 'title')|| ($type eq 'standards')
|| (exists($env{$course_key.'.metadata.'.$type.'.added'}))) {
+
if ($values) {
if ($only_one) {
$output .= (&Apache::loncommon::select_form($cur_values_inst[0],'new_'.$type,%meta_options));
@@ -782,7 +772,6 @@ sub handler {
%Apache::lonpublisher::metadatakeys=();
my $result=&Apache::lonnet::getfile($fn);
&Apache::lonpublisher::metaeval($result);
- &Apache::lonnet::logthis("restricted is: ".$Apache::lonpublisher::metadatafields{'courserestricted'});
if ((!$Apache::lonpublisher::metadatafields{'courserestricted'}) ||
($env{'form.changecourse'} eq 'true')) {
&pre_select_course($r,$uri);
@@ -797,12 +786,14 @@ sub handler {
&present_editable_metadata($r,$uri,'groups');
} elsif ($uri=~m|^/~|) {
# Construction space
- $r->print(&Apache::loncommon::start_page('Edit Catalog nformation',
- undef,
+ $r->print(&Apache::loncommon::start_page('Edit Catalog Information',
+ "\n".'',
{'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);
@@ -830,10 +821,14 @@ sub report_bombs {
&Apache::lonmsg::clear_author_res_msg($uri);
}
my $clear=&mt('Clear all Messages in Subdirectory');
- $r->print(<print(<
-
+$cancel
+
ENDCLEAR
my %brokenurls =
&Apache::lonmsg::all_url_author_res_msg($author,$domain);
@@ -893,9 +888,9 @@ sub present_uneditable_metadata {
my $obsolete=$content{'obsolete'};
my $obsoletewarning='';
if (($obsolete) && ($env{'user.adv'})) {
- $obsoletewarning=''.
+ $obsoletewarning=''.
&mt('This resource has been marked obsolete by the author(s)').
- '
';
+ '
';
}
#
my %lt=&fieldnames();
@@ -932,23 +927,22 @@ sub present_uneditable_metadata {
'obsoletereplacement');
}
foreach my $field (@fields) {
- $table.=''.$lt{$field}.
- ' | '.
- &prettyprint($field,$content{$field}).' |
';
+ $table.=&Apache::lonhtmlcommon::row_title($lt{$field})
+ .&prettyprint($field,$content{$field})
+ .&Apache::lonhtmlcommon::row_closure();
delete($content{$field});
}
#
- $r->print(<$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);
}
@@ -975,17 +969,18 @@ sub print_dynamic_metadata {
exists($dynmeta{'goto'}) ||
exists($dynmeta{'course'})) {
$r->print(''.&mt('Access and Usage Statistics').'
'.
- '');
+ &Apache::lonhtmlcommon::start_pick_box());
foreach ('count',
'sequsage','sequsage_list',
'comefrom','comefrom_list',
'goto','goto_list',
'course','course_list') {
- $r->print(''.$lt{$_}.' | '.
- ''.
- &prettyprint($_,$dynmeta{$_})." |
\n");
+ $r->print(&Apache::lonhtmlcommon::row_title($lt{$_})
+ .&prettyprint($_,$dynmeta{$_})
+ .&Apache::lonhtmlcommon::row_closure()
+ );
}
- $r->print('
');
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
} else {
$r->print(''.&mt('No Access or Usages Statistics are available for this resource.').'
');
}
@@ -1000,35 +995,35 @@ sub print_dynamic_metadata {
$r->print(''.
&mt('Overall Assessment Statistical Data').
'
'.
- '');
- $r->print(''.$lt{'stdno'}.' | '.
- ''.
- &prettyprint('stdno',$dynmeta{'stdno'}).
- ' | '."
\n");
+ &Apache::lonhtmlcommon::start_pick_box());
+ $r->print(&Apache::lonhtmlcommon::row_title($lt{'stdno'})
+ .&prettyprint('stdno',$dynmeta{'stdno'})
+ .&Apache::lonhtmlcommon::row_closure()
+ );
foreach ('avetries','difficulty','disc') {
- $r->print(''.$lt{$_}.' | '.
- ''.
- &prettyprint($_,sprintf('%5.2f',$dynmeta{$_})).
- ' | '."
\n");
+ $r->print(&Apache::lonhtmlcommon::row_title($lt{$_})
+ .&prettyprint($_,sprintf('%5.2f',$dynmeta{$_}))
+ .&Apache::lonhtmlcommon::row_closure()
+ );
}
- $r->print('
');
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
}
if (exists($dynmeta{'stats'})) {
#
# New assessment statistics
$r->print(''.
- &mt('Detailed Assessment Statistical Data').
+ &mt('Recent Detailed Assessment Statistical Data').
'
');
- my $table = ''.
- ''.
- 'Course | '.
- 'Section(s) | '.
- 'Num Students | '.
- 'Mean Tries | '.
- 'Degree of Difficulty | '.
- 'Degree of Discrimination | '.
- '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'};
@@ -1039,9 +1034,9 @@ 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 .=
@@ -1056,16 +1051,15 @@ sub print_dynamic_metadata {
$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('No new dynamic data found.');
+ $r->print(&mt('No new dynamic data found.'));
}
} else {
$r->print(''.
@@ -1081,13 +1075,14 @@ sub print_dynamic_metadata {
exists($dynmeta{'correct'}) ||
exists($dynmeta{'technical'})){
$r->print(''.&mt('Evaluation Data').'
'.
- '
');
+ &Apache::lonhtmlcommon::start_pick_box());
foreach ('clear','depth','helpful','correct','technical') {
- $r->print(''.$lt{$_}.' | '.
- ''.
- &prettyprint($_,$dynmeta{$_})." |
\n");
+ $r->print(&Apache::lonhtmlcommon::row_title($lt{$_})
+ .&prettyprint($_,$dynmeta{$_})
+ .&Apache::lonhtmlcommon::row_closure()
+ );
}
- $r->print('
');
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
} else {
$r->print(''.&mt('No Evaluation Data is available for this resource.').'
');
}
@@ -1115,7 +1110,8 @@ sub print_dynamic_metadata {
# All other stuff
$r->print(''.
&mt('Additional Metadata (non-standard, parameters, exports)').
- '
');
+ '');
+ $r->print(&Apache::lonhtmlcommon::start_pick_box());
foreach (sort(keys(%content))) {
my $name=$_;
if ($name!~/\.display$/) {
@@ -1133,14 +1129,16 @@ sub print_dynamic_metadata {
$name.'.'.$_).'; ';
}
}
- $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());
}
}
- $r->print("
");
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
return;
}
@@ -1203,17 +1201,20 @@ ENDBOMBS
ENDDEL
} else {
- $r->print(''.$goback.'');
+ $r->print(''.$goback.'
');
+ if ($env{'form.clearmsg'}) {
+ my ($diruri) = ($disuri =~ m{(.*/)[^/]*});
+ $r->print(''.
+ &mt('Back To Directory').'
');
+ }
}
$r->print('
'.$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=();
@@ -1243,9 +1244,6 @@ ENDDEL
$displayfile