--- loncom/homework/grades.pm 2020/08/31 01:14:06 1.774
+++ loncom/homework/grades.pm 2021/01/05 21:53:44 1.781
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.774 2020/08/31 01:14:06 raeburn Exp $
+# $Id: grades.pm,v 1.781 2021/01/05 21:53:44 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -293,6 +293,17 @@ sub showResourceInfo {
$result .= '';
}
$result .= '
';
+ if (!keys(%partsseen)) {
+ $result = '';
+ if ($uploads) {
+ return ''.
+ ''.
+ &mt('No dropbox items or essayresponse items with uploadedfiletypes set.').
+ '
';
+ } else {
+ return '
';
+ }
+ }
return $result;
}
@@ -1155,8 +1166,31 @@ LISTJAVASCRIPT
$nocompmsg = '';
}
$gradeTable .= &Apache::lonhtmlcommon::row_title($viewtitle)
- .$submission_options
- .&Apache::lonhtmlcommon::row_closure()
+ .$submission_options;
+# Check if any gradable
+ my $showmore;
+ if ($perm{'mgr'}) {
+ my @sections;
+ if ($env{'request.course.sec'} ne '') {
+ @sections = ($env{'request.course.sec'});
+ } else {
+ @sections = &Apache::loncommon::get_env_multiple('form.section');
+ }
+ if (grep(/^all$/,@sections)) {
+ $showmore = 1;
+ } else {
+ foreach my $sec (@sections) {
+ if (&canmodify($sec)) {
+ $showmore = 1;
+ last;
+ }
+ }
+ }
+ }
+
+ if ($showmore) {
+ $gradeTable .=
+ &Apache::lonhtmlcommon::row_closure()
.&Apache::lonhtmlcommon::row_title(&mt('Send Messages'))
.''
.''
.&Apache::lonhtmlcommon::row_closure();
- $gradeTable .= &Apache::lonhtmlcommon::row_title(&mt('Grading Increments'))
+ $gradeTable .=
+ &Apache::lonhtmlcommon::row_title(&mt('Grading Increments'))
.'';
+ }
$gradeTable .=
&build_section_inputs().
''."\n".
@@ -3241,7 +3277,7 @@ sub processHandGrade {
# Keywords sorted in alphabatical order
my $loginuser = $env{'user.name'}.':'.$env{'user.domain'};
$env{'form.keywords'} =~ s/,\s{0,}|\s+/ /g;
- $env{'form.keywords'} =~ s/^\s+|\s+$//;
+ $env{'form.keywords'} =~ s/^\s+|\s+$//g;
my (@keywords) = sort(split(/\s+/,$env{'form.keywords'}));
$env{'form.keywords'} = join(' ',@keywords);
$keyhash{$symb.'_keywords'} = $env{'form.keywords'};
@@ -3966,7 +4002,26 @@ sub viewgrades {
}
my ($common_header,$specific_header,@sections,$section_display);
- @sections = &Apache::loncommon::get_env_multiple('form.section');
+ if ($env{'request.course.sec'} ne '') {
+ @sections = ($env{'request.course.sec'});
+ } else {
+ @sections = &Apache::loncommon::get_env_multiple('form.section');
+ }
+
+# Check if Save button should be usable
+ my $disabled = ' disabled="disabled"';
+ if ($perm{'mgr'}) {
+ if (grep(/^all$/,@sections)) {
+ undef($disabled);
+ } else {
+ foreach my $sec (@sections) {
+ if (&canmodify($sec)) {
+ undef($disabled);
+ last;
+ }
+ }
+ }
+ }
if (grep(/^all$/,@sections)) {
@sections = ('all');
if ($group_display) {
@@ -4158,7 +4213,7 @@ sub viewgrades {
}
$result.=&Apache::loncommon::end_data_table();
$result.=''."\n";
- $result.=''."\n";
if ($ctr == 0) {
my $stu_status = join(' or ',&Apache::loncommon::get_env_multiple('form.Status'));
@@ -5398,10 +5453,14 @@ sub displayPage {
}
$curRes = $iterator->next();
}
+ my $disabled;
+ unless (&canmodify($usec)) {
+ $disabled = ' disabled="disabled"';
+ }
$studentTable.=
''."\n".
- ''.
''."\n";
$request->print($studentTable);
@@ -9461,7 +9520,7 @@ END
if ($count > 1) {
$formatextra = ''.
''.
- &mt('Bubblesheet type:').' '.
+ &mt('Bubblesheet type').': '.
&scantron_scantab().'
';
$onclick = ' onclick="toggleScantab(this.form);"';
$formatjs = <<"END";
@@ -10371,37 +10430,47 @@ sub grading_menu {
$fields{'command'} = 'initialverifyreceipt';
my $url5 = &Apache::lonhtmlcommon::build_url('grades/',\%fields);
-
+
+ my %permissions;
+ if ($perm{'mgr'}) {
+ $permissions{'either'} = 'F';
+ $permissions{'mgr'} = 'F';
+ }
+ if ($perm{'vgr'}) {
+ $permissions{'either'} = 'F';
+ $permissions{'vgr'} = 'F';
+ }
+
my @menu = ({ categorytitle=>'Hand Grading',
items =>[
{ linktext => 'Select individual students to grade',
url => $url1a,
- permission => 'F',
+ permission => $permissions{'either'},
icon => 'grade_students.png',
linktitle => 'Grade current resource for a selection of students.'
},
{ linktext => 'Grade ungraded submissions',
url => $url1b,
- permission => 'F',
+ permission => $permissions{'either'},
icon => 'ungrade_sub.png',
linktitle => 'Grade all submissions that have not been graded yet.'
},
{ linktext => 'Grading table',
url => $url1c,
- permission => 'F',
+ permission => $permissions{'either'},
icon => 'grading_table.png',
linktitle => 'Grade current resource for all students.'
},
{ linktext => 'Grade page/folder for one student',
url => $url1d,
- permission => 'F',
+ permission => $permissions{'either'},
icon => 'grade_PageFolder.png',
linktitle => 'Grade all resources in current page/sequence/folder for one student.'
},
{ linktext => 'Download submissions',
url => $url1e,
- permission => 'F',
+ permission => $permissions{'either'},
icon => 'download_sub.png',
linktitle => 'Download all students submissions.'
}]},
@@ -10410,25 +10479,25 @@ sub grading_menu {
{ linktext => 'Upload Scores',
url => $url2,
- permission => 'F',
+ permission => $permissions{'mgr'},
icon => 'uploadscores.png',
linktitle => 'Specify a file containing the class scores for current resource.'
},
{ linktext => 'Process Clicker',
url => $url3,
- permission => 'F',
+ permission => $permissions{'mgr'},
icon => 'addClickerInfoFile.png',
linktitle => 'Specify a file containing the clicker information for this resource.'
},
{ linktext => 'Grade/Manage/Review Bubblesheets',
url => $url4,
- permission => 'F',
+ permission => $permissions{'mgr'},
icon => 'bubblesheet.png',
linktitle => 'Grade bubblesheet exams, upload/download bubblesheet data files, and review previously graded bubblesheet exams.'
},
{ linktext => 'Verify Receipt Number',
url => $url5,
- permission => 'F',
+ permission => $permissions{'either'},
icon => 'receipt_number.png',
linktitle => 'Verify a system-generated receipt number for correct problem solution.'
}
@@ -11294,7 +11363,7 @@ sub navmap_errormsg {
}
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 = (
@@ -11304,11 +11373,11 @@ sub startpage {
}
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'));
}
@@ -11391,8 +11460,19 @@ sub handler {
} else {
$divforres = 1;
}
- &startpage($request,$symb,[{href=>"", text=>"Student Submissions"}],undef,undef,$stuvcurrent,$stuvdisp,undef,$js,$onload,$divforres);
+ my $head_extra = $js;
+ unless ($env{'form.vProb'} eq 'no') {
+ my $csslinks = &Apache::loncommon::css_links($symb);
+ if ($csslinks) {
+ $head_extra .= "\n$csslinks";
+ }
+ }
+ &startpage($request,$symb,[{href=>"", text=>"Student Submissions"}],undef,undef,
+ $stuvcurrent,$stuvdisp,undef,$head_extra,$onload,$divforres);
if ($versionform) {
+ if ($divforres) {
+ $request->print('');
+ }
$request->print($versionform);
}
($env{'form.student'} eq '' ? &listStudents($request,$symb,'',$divforres) : &submission($request,0,0,$symb,$divforres,$command));
@@ -11401,7 +11481,15 @@ sub handler {
&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 $head_extra = $js;
+ unless ($env{'form.vProb'} eq 'no') {
+ my $csslinks = &Apache::loncommon::css_links($symb);
+ if ($csslinks) {
+ $head_extra .= "\n$csslinks";
+ }
+ }
+ &startpage($request,$symb,[{href=>"", text=>"Previous Student Version"}],undef,undef,
+ $stuvcurrent,$stuvdisp,$env{'form.inhibitmenu'},$head_extra);
if ($versionform) {
$request->print($versionform);
}
@@ -11412,10 +11500,14 @@ sub handler {
{href=>'',text=>'Select student'}],1,1);
&pickStudentPage($request,$symb);
} elsif ($command eq 'displayPage' && $perm{'vgr'}) {
+ my $csslinks;
+ unless ($env{'form.vProb'} eq 'no') {
+ $csslinks = &Apache::loncommon::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'},
@@ -11424,8 +11516,12 @@ sub handler {
{href=>'',text=>'Store grades'}],1,1);
&updateGradeByPage($request,$symb);
} elsif ($command eq 'processGroup' && $perm{'vgr'}) {
+ my $csslinks;
+ unless ($env{'form.vProb'} eq 'no') {
+ $csslinks = &Apache::loncommon::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);
@@ -11545,6 +11641,7 @@ sub handler {
[{href=>&href_symb_cmd($symb,'downloadfilesselect'), text=>'Select which submissions to download'},
{href=>'', text=>'Download submitted files'}],
undef,undef,undef,undef,undef,undef,undef,1);
+ $request->print('');
&submit_download_link($request,$symb);
} elsif ($command) {
&startpage($request,$symb,[{href=>'', text=>'Access denied'}]);