--- loncom/interface/lonmeta.pm 2004/04/14 18:56:36 1.69
+++ 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.69 2004/04/14 18:56:36 matthew Exp $
+# $Id: lonmeta.pm,v 1.77 2004/05/07 17:17:58 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -114,21 +114,21 @@ sub evalgraph {
return '';
}
my $val=int($value*10.+0.5)-10;
- my $output='
';
+ my $output='
';
if ($val>=20) {
- $output.='
 
';
+ $output.='
 
';
} else {
- $output.='
'.
- '
';
+ $output.='
'.
+ '
';
}
$output.='
';
if ($val>20) {
- $output.='
'.
- '
';
+ $output.='
'.
+ '
';
} else {
- $output.='
 
';
+ $output.='
 
';
}
- $output.='
('.$value.')
';
+ $output.='
('.sprintf("%5.2f",$value).')
';
return $output;
}
@@ -140,15 +140,15 @@ sub diffgraph {
my $val=int(40.0*$value+0.5);
my @colors=('#FF9933','#EEAA33','#DDBB33','#CCCC33',
'#BBDD33','#CCCC33','#DDBB33','#EEAA33');
- my $output='
';
+ my $output='
';
for (my $i=0;$i<8;$i++) {
if ($val>$i*5) {
- $output.='
';
+ $output.='
';
} else {
- $output.='
';
+ $output.='
';
}
}
- $output.='
('.$value.')
';
+ $output.='
('.sprintf("%3.2f",$value).')
';
return $output;
}
@@ -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',
);
}
@@ -252,9 +253,26 @@ sub prettyprint {
($type eq 'comefrom_list') ||
($type eq 'sequsage_list')) {
return join(' ',map {
- my $url=&Apache::lonnet::clutter($_);
- ''.&Apache::lonnet::gettitle($url).''.
- &Apache::lonhtmlcommon::crumbs($url,'preview','',undef,'+0');
+ my $url = &Apache::lonnet::clutter($_);
+ 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.''.
+ ''
} split(/\s*\,\s*/,$value));
}
# Evaluations
@@ -266,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;
@@ -320,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,
@@ -376,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);
@@ -390,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'.
'');
@@ -450,10 +465,10 @@ sub report_bombs {
&Apache::lonmsg::all_url_author_res_msg($author,$domain);
foreach (sort(keys(%brokenurls))) {
if ($_=~/^\Q$uri\E/) {
- $r->print(&Apache::lonhtmlcommon::crumbs
- (&Apache::lonnet::clutter($_)).
- &Apache::lonmsg::retrieve_author_res_msg($_).
- '');
+ $r->print
+ (''.$_.''.
+ &Apache::lonmsg::retrieve_author_res_msg($_).
+ '');
}
}
} else {
@@ -494,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='';
@@ -507,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',
@@ -532,10 +552,12 @@ sub present_uneditable_metadata {
}
#
$r->print(<$content{'title'}
-
'.&mt('No Access or Usages Statistics are available for this resource.').'
');
}
- $r->print('
');
#
# Assessment statistics
if ($uri=~/\.(problem|exam|quiz|assess|survey|form)$/) {
- # This is an assessment, print assessment data
- $r->print(
- '
'.&mt('Assessment Statistical Data').'
'.
+ if (exists($dynmeta{'stdno'}) ||
+ exists($dynmeta{'avetries'}) ||
+ exists($dynmeta{'difficulty'}) ||
+ exists($dynmeta{'disc'})) {
+ # This is an assessment, print assessment data
+ $r->print('