[LON-CAPA-cvs] cvs: loncom /homework grades.pm
raeburn
raeburn at source.lon-capa.org
Sun Nov 8 17:23:52 EST 2020
raeburn Sun Nov 8 22:23:52 2020 EDT
Modified files:
/loncom/homework grades.pm
Log:
- Bug 6943
Load CSS files for resources being displayed in Grading interface, i.e.,
when "View Problem Text" is checked for "one student" or "all students".
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.776 loncom/homework/grades.pm:1.777
--- loncom/homework/grades.pm:1.776 Wed Sep 9 23:01:12 2020
+++ loncom/homework/grades.pm Sun Nov 8 22:23:52 2020
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.776 2020/09/09 23:01:12 raeburn Exp $
+# $Id: grades.pm,v 1.777 2020/11/08 22:23:52 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -11305,7 +11305,7 @@
}
sub startpage {
- my ($r,$symb,$crumbs,$onlyfolderflag,$nodisplayflag,$stuvcurrent,$stuvdisp,$nomenu,$js,$onload,$divforres) = @_;
+ my ($r,$symb,$crumbs,$onlyfolderflag,$nodisplayflag,$stuvcurrent,$stuvdisp,$nomenu,$head_extra,$onload,$divforres) = @_;
my %args;
if ($onload) {
my %loaditems = (
@@ -11315,11 +11315,11 @@
}
if ($nomenu) {
$args{'only_body'} = 1;
- $r->print(&Apache::loncommon::start_page("Student's Version",$js,\%args));
+ $r->print(&Apache::loncommon::start_page("Student's Version",$head_extra,\%args));
} else {
unshift(@$crumbs,{href=>&href_symb_cmd($symb,'gradingmenu'),text=>"Grading"});
$args{'bread_crumbs'} = $crumbs;
- $r->print(&Apache::loncommon::start_page('Grading',$js,\%args));
+ $r->print(&Apache::loncommon::start_page('Grading',$head_extra,\%args));
if ($env{'request.course.id'}) {
&Apache::lonquickgrades::startGradeScreen($r,($env{'form.symb'}?'probgrading':'grading'));
}
@@ -11337,6 +11337,61 @@
$r->print('<input type="submit" value="'.&mt('Next').' →" /></form>');
}
+sub css_links {
+ my ($currsymb,$level) = @_;
+ my ($links, at symbs,%cssrefs,%httpref);
+ if ($level eq 'map') {
+ my $navmap = Apache::lonnavmaps::navmap->new();
+ if (ref($navmap)) {
+ my ($map,undef,$url)=&Apache::lonnet::decode_symb($currsymb);
+ my @resources = $navmap->retrieveResources($map,sub { $_[0]->is_problem() },0,0);
+ foreach my $res (@resources) {
+ if (ref($res)) {
+ if ($res->symb()) {
+ push(@symbs,$res->symb());
+ }
+ }
+ }
+ }
+ } else {
+ @symbs = ($currsymb);
+ }
+ foreach my $symb (@symbs) {
+ my $css_href = &Apache::lonnet::EXT('resource.0.cssfile',$symb);
+ if ($css_href =~ /\S/) {
+ unless ($css_href =~ m{https?://}) {
+ my ($map,undef,$url)=&Apache::lonnet::decode_symb($symb);
+ my $proburl = &Apache::lonnet::clutter($url);
+ my ($probdir) = ($proburl =~ m{(.+)/[^/]+$});
+ unless ($css_href =~ m{^/}) {
+ $css_href = &Apache::lonnet::hreflocation($probdir,$css_href);
+ }
+ if ($css_href =~ m{^/(res|uploaded)/}) {
+ unless (($httpref{'httpref.'.$css_href}) |
+ (&Apache::lonnet::is_on_map($css_href))) {
+ my $thisurl = $proburl;
+ if ($env{'httpref.'.$proburl}) {
+ $thisurl = $env{'httpref.'.$proburl};
+ }
+ $httpref{'httpref.'.$css_href} = $thisurl;
+ }
+ }
+ }
+ $cssrefs{$css_href} = 1;
+ }
+ }
+ if (keys(%httpref)) {
+ &Apache::lonnet::appenv(\%httpref);
+ }
+ if (keys(%cssrefs)) {
+ foreach my $css_href (keys(%cssrefs)) {
+ next unless ($css_href =~ m{^(/res/|/uploaded/|https?://)});
+ $links .= '<link rel="stylesheet" type="text/css" href="'.$css_href.'" />'."\n";
+ }
+ }
+ return $links;
+}
+
sub handler {
my $request=$_[0];
&reset_caches();
@@ -11402,7 +11457,10 @@
} else {
$divforres = 1;
}
- &startpage($request,$symb,[{href=>"", text=>"Student Submissions"}],undef,undef,$stuvcurrent,$stuvdisp,undef,$js,$onload,$divforres);
+ my $csslinks = &css_links($symb);
+ my $head_extra = $js."\n".$csslinks;
+ &startpage($request,$symb,[{href=>"", text=>"Student Submissions"}],undef,undef,
+ $stuvcurrent,$stuvdisp,undef,$head_extra,$onload,$divforres);
if ($versionform) {
if ($divforres) {
$request->print('<div style="padding:0;clear:both;margin:0;border:0"></div>');
@@ -11415,7 +11473,10 @@
&choose_task_version_form($symb,$env{'form.student'},
$env{'form.userdom'},
$env{'form.inhibitmenu'});
- &startpage($request,$symb,[{href=>"", text=>"Previous Student Version"}],undef,undef,$stuvcurrent,$stuvdisp,$env{'form.inhibitmenu'},$js);
+ my $csslinks = &css_links($symb);
+ my $head_extra = $js."\n".$csslinks;
+ &startpage($request,$symb,[{href=>"", text=>"Previous Student Version"}],undef,undef,
+ $stuvcurrent,$stuvdisp,$env{'form.inhibitmenu'},$head_extra);
if ($versionform) {
$request->print($versionform);
}
@@ -11426,10 +11487,11 @@
{href=>'',text=>'Select student'}],1,1);
&pickStudentPage($request,$symb);
} elsif ($command eq 'displayPage' && $perm{'vgr'}) {
+ my $csslinks = &css_links($symb,'map');
&startpage($request,$symb,
[{href=>&href_symb_cmd($symb,'all_for_one'),text=>'Grade page/folder for one student'},
{href=>'',text=>'Select student'},
- {href=>'',text=>'Grade student'}],1,1);
+ {href=>'',text=>'Grade student'}],1,1,undef,undef,undef,$csslinks);
&displayPage($request,$symb);
} elsif ($command eq 'gradeByPage' && $perm{'mgr'}) {
&startpage($request,$symb,[{href=>&href_symb_cmd($symb,'all_for_one'),text=>'Grade page/folder for one student'},
@@ -11438,8 +11500,9 @@
{href=>'',text=>'Store grades'}],1,1);
&updateGradeByPage($request,$symb);
} elsif ($command eq 'processGroup' && $perm{'vgr'}) {
+ my $csslinks = &css_links($symb);
&startpage($request,$symb,[{href=>'',text=>'...'},
- {href=>'',text=>'Modify grades'}],undef,undef,undef,undef,undef,undef,undef,1);
+ {href=>'',text=>'Modify grades'}],undef,undef,undef,undef,undef,$csslinks,undef,1);
&processGroup($request,$symb);
} elsif ($command eq 'gradingmenu' && $perm{'vgr'}) {
&startpage($request,$symb);
More information about the LON-CAPA-cvs
mailing list