--- loncom/interface/lonmeta.pm 2004/04/14 21:22:44 1.71 +++ loncom/interface/lonmeta.pm 2004/05/07 17:17:58 1.77 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Metadata display handler # -# $Id: lonmeta.pm,v 1.71 2004/04/14 21:22:44 matthew Exp $ +# $Id: lonmeta.pm,v 1.77 2004/05/07 17:17:58 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -193,7 +193,8 @@ sub fieldnames { 'technical' => 'Resource is technically correct', 'avetries' => 'Average number of tries till solved', 'stdno' => 'Total number of students who have worked on this problem', - 'difficulty' => 'Degree of difficulty' + 'difficulty' => 'Degree of difficulty', + 'disc' => 'Degree of discrimination', ); } @@ -253,7 +254,22 @@ sub prettyprint { ($type eq 'sequsage_list')) { return join('
',map { my $url = &Apache::lonnet::clutter($_); - $_ = ''.&Apache::lonnet::gettitle($url).' '. + my $title = &Apache::lonnet::gettitle($url); + if ($title eq '') { + $title = 'Untitled'; + if ($url =~ /\.sequence$/) { + $title .= ' Sequence'; + } elsif ($url =~ /\.page$/) { + $title .= ' Page'; + } elsif ($url =~ /\.problem$/) { + $title .= ' Problem'; + } elsif ($url =~ /\.html$/) { + $title .= ' HTML document'; + } elsif ($url =~ m:/syllabus$:) { + $title .= ' Syllabus'; + } + } + $_ = ''.$title.' '. ''. ''.$url.''. '' @@ -268,17 +284,24 @@ sub prettyprint { return &evalgraph($value); } # Difficulty - if ($type eq 'difficulty') { + if ($type eq 'difficulty' || $type eq 'disc') { return &diffgraph($value); } # List of courses if ($type=~/\_list/) { - return join('
',map { - my %courseinfo=&Apache::lonnet::coursedescription($_); - ''. - $courseinfo{'description'}.''; - } split(/\s*\,\s*/,$value)); + my @Courses = split(/\s*\,\s*/,$value); + my $Str; + foreach my $course (@Courses) { + my %courseinfo = &Apache::lonnet::coursedescription($course); + if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') { + next; + } + if ($Str ne '') { $Str .= '
'; } + $Str .= ''. + $courseinfo{'description'}.''; + } + return $Str; } # No pretty print found return $value; @@ -322,7 +345,10 @@ sub relatedfield { sub prettyinput { my ($type,$value,$fieldname,$formname, - $relatedsearchflag,$relatedsep,$relatedvalue)=@_; + $relatedsearchflag,$relatedsep,$relatedvalue,$size)=@_; + if (! defined($size)) { + $size = 80; + } # Language if ($type eq 'language') { return &selectbox($fieldname, @@ -378,9 +404,9 @@ sub prettyinput { $value=~s/^\s+//gs; $value=~s/\s+$//gs; $value=~s/\s+/ /gs; - $value=~s/\"/\&quod\;/gs; + $value=~s/\"/\"\;/gs; return - ''. &relatedfield(1,$relatedsearchflag,$relatedsep,$fieldname, $relatedvalue); @@ -392,26 +418,13 @@ sub handler { # my $uri=$r->uri; # - # Check to see if this server is overloaded - my $loaderror=&Apache::lonnet::overloaderror($r); - if ($loaderror) { - return $loaderror; - } - # - # Check to see if original resource server is overloaded - my ($resdomain,$resuser)= - (&Apache::lonnet::declutter($uri)=~/^(\w+)\/(\w+)\//); - $loaderror=&Apache::lonnet::overloaderror - ($r,&Apache::lonnet::homeserver($resuser,$resdomain)); - if ($loaderror) { - return $loaderror; - } - # # Set document type &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; return OK if $r->header_only; # + my ($resdomain,$resuser)= + (&Apache::lonnet::declutter($uri)=~/^(\w+)\/(\w+)\//); $r->print(''. 'Catalog Information'. ''); @@ -496,8 +509,9 @@ sub present_uneditable_metadata { } else { $versiondisplay='Version: '.$currentversion; } - # crumbify displayed URL - $disuri=&Apache::lonhtmlcommon::crumbs($disuri); + # crumbify displayed URL uri target prefix form size + $disuri=&Apache::lonhtmlcommon::crumbs($disuri,undef, undef, undef,'+1'); + $disuri =~ s:
::g; # obsolete my $obsolete=$content{'obsolete'}; my $obsoletewarning=''; @@ -509,6 +523,10 @@ sub present_uneditable_metadata { # my %lt=&fieldnames(); my $table=''; + my $title = $content{'title'}; + if (! defined($title)) { + $title = 'Untitled Resource'; + } foreach ('title', 'author', 'subject', @@ -534,10 +552,12 @@ sub present_uneditable_metadata { } # $r->print(<$content{'title'} -

$disuri

+

$title

+

+$disuri
$obsoletewarning -$versiondisplay
+$versiondisplay +

$table
@@ -560,6 +580,8 @@ sub print_dynamic_metadata { $r->rflush(); my %items=&fieldnames(); my %dynmeta=&dynamicmeta($uri); + &Apache::lonnet::logthis('dynamic metadata keys:'.$/. + join("\n",keys(%dynmeta))); # # General Access and Usage Statistics if (exists($dynmeta{'count'}) || @@ -584,23 +606,88 @@ sub print_dynamic_metadata { } # # Assessment statistics - if ($uri=~/\.(problem|exam|quiz|assess|survey|form)$/ && - (exists($dynmeta{'stdno'}) || - exists($dynmeta{'avetries'}) || - exists($dynmeta{'difficulty'}))) { - # This is an assessment, print assessment data - $r->print( - '

'.&mt('Assessment Statistical Data').'

'. - ''); - foreach ('stdno','avetries','difficulty') { - $r->print(''. + if ($uri=~/\.(problem|exam|quiz|assess|survey|form)$/) { + if (exists($dynmeta{'stdno'}) || + exists($dynmeta{'avetries'}) || + exists($dynmeta{'difficulty'}) || + exists($dynmeta{'disc'})) { + # This is an assessment, print assessment data + $r->print('

'. + &mt('Overall Assessment Statistical Data'). + '

'. + '
'.$lt{$_}.'
'); + $r->print(''. '\n"); + &prettyprint('stdno',$dynmeta{'stdno'}). + ''."\n"); + foreach ('avetries','difficulty','disc') { + $r->print(''. + ''."\n"); + } + $r->print('
'.$lt{'stdno'}.''. - &prettyprint($_,$dynmeta{$_})."
'.$lt{$_}.''. + &prettyprint($_,sprintf('%5.2f',$dynmeta{$_})). + '
'); + } + if (exists($dynmeta{'stats'})) { + # + # New assessment statistics + $r->print('

'. + &mt('Detailed Assessment Statistical Data'). + '

'); + my $table = ''. + ''. + ''. + ''. + ''. + ''. + ''. + ''. + ''. + ''.$/; + foreach my $identifier (sort(keys(%{$dynmeta{'stats'}}))) { + my $data = $dynmeta{'stats'}->{$identifier}; + my $course = $data->{'course'}; + my %courseinfo = &Apache::lonnet::coursedescription($course); + if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') { + &Apache::lonnet::logthis('lookup for '.$course.' failed'); + next; + } + $table .= ''; + $table .= + ''; + $table .= + ''; + $table .= + ''; + foreach ('avetries','difficulty','disc') { + $table .= ''; + } + $table .= + ''; + $table .= + ''.$/; + } + $table .= '
CourseSection(s)Num StudentsMean TriesDegree of DifficultyDegree of DiscriminationTime of computation
'.$courseinfo{'description'}.''.$data->{'sections'}.''.$data->{'stdno'}.''; + if (exists($data->{$_})) { + $table .= sprintf('%.2f',$data->{$_}).' '; + } else { + $table .= ''; + } + $table .= ''. + &Apache::lonlocal::locallocaltime($data->{'timestamp'}). + '
'.$/; + $r->print($table); + } else { + $r->print('No new dynamic data found.'); } - $r->print(''); } else { - $r->print('

'.&mt('No Assessment Statistical Data is available for this resource').'

'); + $r->print('

'. + &mt('No Assessment Statistical Data is available for this resource'). + '

'); } + + # + # if (exists($dynmeta{'clear'}) || exists($dynmeta{'depth'}) || exists($dynmeta{'helpful'}) ||