version 1.111, 2017/11/16 13:41:56
|
version 1.118, 2020/09/01 03:35:54
|
Line 83 sub real_handler {
|
Line 83 sub real_handler {
|
|
|
my $reinitresult; |
my $reinitresult; |
|
|
|
if ($env{'request.course.id'}) { |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my ($blocked,$blocktext) = |
|
&Apache::loncommon::blocking_status('grades',$cnum,$cdom); |
|
if ($blocked) { |
|
my $checkrole = "cm./$cdom/$cnum"; |
|
if ($env{'request.course.sec'} ne '') { |
|
$checkrole .= "/$env{'request.course.sec'}"; |
|
} |
|
unless ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) && |
|
($env{'request.role'} !~ m{^st\./$cdom/$cnum})) { |
|
&grades_blocked($r,$blocktext,$showPoints); |
|
return OK; |
|
} |
|
} |
|
} |
|
|
unless ($cangrade) { |
unless ($cangrade) { |
# Check for critical messages and redirect if present. |
# Check for critical messages and redirect if present. |
my ($redirect,$url) = &Apache::loncommon::critical_redirect(300,'grades'); |
my ($redirect,$url) = &Apache::loncommon::critical_redirect(300,'grades'); |
Line 204 ENDCLOSE
|
Line 222 ENDCLOSE
|
$r->print('<p><span class="LC_warning">'.&mt("Unknown Student/Employee ID: [_1]",$stdid).'</span></p>'); |
$r->print('<p><span class="LC_warning">'.&mt("Unknown Student/Employee ID: [_1]",$stdid).'</span></p>'); |
$stdid=''; |
$stdid=''; |
} |
} |
|
if (($uname eq '') && ($udom eq '')) { |
|
$uname = $env{'user.name'}; |
|
$udom = $env{'user.domain'}; |
|
} |
$r->print('<form method="post" name="quickform" action="/adm/quickgrades">'); |
$r->print('<form method="post" name="quickform" action="/adm/quickgrades">'); |
my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '. |
my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '. |
&Apache::loncommon::selectstudent_link('quickform','uname','udom'); |
&Apache::loncommon::selectstudent_link('quickform','uname','udom'); |
Line 219 ENDCLOSE
|
Line 241 ENDCLOSE
|
} |
} |
$r->rflush(); |
$r->rflush(); |
|
|
my $notshowSPRSlink = |
|
(($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'external') |
|
|| ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals')); |
|
my $notshowTotals= |
my $notshowTotals= |
$env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals'; |
$env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals'; |
my $showCategories= |
my $showCategories= |
Line 230 ENDCLOSE
|
Line 249 ENDCLOSE
|
my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)= |
my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)= |
&getData($showPoints,$uname,$udom); |
&getData($showPoints,$uname,$udom); |
|
|
if ($showCategories) { |
if (ref($navmap)) { |
&outputCategories($r,$showPoints,$notshowTotals, |
if ($showCategories) { |
$navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted); |
&outputCategories($r,$showPoints,$notshowTotals, |
|
$navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted); |
|
} else { |
|
&outputTable($r,$showPoints,$notshowTotals, |
|
$navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted); |
|
} |
} else { |
} else { |
&outputTable($r,$showPoints,$notshowTotals, |
if ($cangrade) { $r->print("\n</form>\n"); } |
$navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted); |
my $requrl = $r->uri; |
|
$env{'user.error.msg'} = "$requrl:bre:0:0:Navmap initialization failed."; |
|
return HTTP_NOT_ACCEPTABLE; |
} |
} |
if ($cangrade) { $r->print("\n</form>\n"); } |
if ($cangrade) { $r->print("\n</form>\n"); } |
&endGradeScreen($r); |
&endGradeScreen($r); |
Line 243 ENDCLOSE
|
Line 269 ENDCLOSE
|
|
|
} |
} |
|
|
|
sub grades_blocked { |
|
my ($r,$blocktext,$caller) = @_; |
|
my $title = 'Points Display'; |
|
if ($caller eq 'spreadsheet') { |
|
$title = 'Spreadsheet'; |
|
} elsif ($env{'course.'.$env{'request.course.id'}.'.grading'} ne 'standard') { |
|
$title = 'Completed Problems Display'; |
|
} |
|
my $brcrum = [{href=>"/adm/quickgrades",text => $title}]; |
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/quickgrades', |
|
text=> $title}); |
|
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs($title); |
|
&Apache::loncommon::content_type($r,'text/html'); |
|
&Apache::loncommon::no_cache($r); |
|
$r->send_http_header; |
|
$r->print(&Apache::loncommon::start_page($title). |
|
$breadcrumbs. |
|
$blocktext. |
|
&Apache::loncommon::end_page()); |
|
return; |
|
} |
|
|
sub getStudentCatGrade { |
sub getStudentCatGrade { |
my ($uname,$udom,%categories)=@_; |
my ($uname,$udom,%categories)=@_; |
my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)= |
my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)= |
Line 291 sub startGradeScreen {
|
Line 340 sub startGradeScreen {
|
|| ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories')); |
|| ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories')); |
my $notshowTotals= |
my $notshowTotals= |
$env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals'; |
$env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals'; |
|
my $showSPRSlink = |
|
$env{'course.'.$env{'request.course.id'}.'.grading'} eq 'spreadsheet'; |
my $showCategories= |
my $showCategories= |
$env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories'; |
$env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories'; |
|
|
|
my $allowed_to_view = &Apache::lonnet::allowed('vgr',$env{'request.course.id'}); |
|
if ((!$allowed_to_view) && ($env{'request.course.sec'} ne '')) { |
|
$allowed_to_view = &Apache::lonnet::allowed('vgr', |
|
"$env{'request.course.id'}/$env{'request.course.sec'}"); |
|
} |
|
|
my $allowed_to_view = &Apache::lonnet::allowed('vgr',$env{'request.course.id'}); |
my $allowed_to_edit = &Apache::lonnet::allowed('mgr',$env{'request.course.id'}); |
my $allowed_to_edit = &Apache::lonnet::allowed('mgr',$env{'request.course.id'}); |
if ((!$allowed_to_edit) && ($env{'request.course.sec'} ne '')) { |
|
$allowed_to_edit = &Apache::lonnet::allowed('mgr', |
|
"$env{'request.course.id'}/$env{'request.course.sec'}"); |
|
} |
|
|
if ($allowed_to_view) { |
if ($allowed_to_view) { |
my @notes; |
my @notes; |
Line 303 sub startGradeScreen {
|
Line 363 sub startGradeScreen {
|
push(@notes,&mt('Students do not see link to spreadsheet.')) if ($notshowSPRSlink); |
push(@notes,&mt('Students do not see link to spreadsheet.')) if ($notshowSPRSlink); |
push(@notes,&mt('Students will see points based on problem weights.')) if ($showPoints); |
push(@notes,&mt('Students will see points based on problem weights.')) if ($showPoints); |
push(@notes,&mt('Students will see points based on categories.')) if ($showCategories); |
push(@notes,&mt('Students will see points based on categories.')) if ($showCategories); |
|
push(@notes,&mt('Students will see link to spreadsheet.')) if ($showSPRSlink); |
push(@notes, &Apache::lonhtmlcommon::coursepreflink(&mt('Grade display settings'),'grading')); |
push(@notes, &Apache::lonhtmlcommon::coursepreflink(&mt('Grade display settings'),'grading')); |
$r->print(&Apache::loncommon::head_subbox(join(' ',@notes))); |
$r->print(&Apache::loncommon::head_subbox(join(' ',@notes))); |
} |
} |
Line 322 sub startGradeScreen {
|
Line 383 sub startGradeScreen {
|
&mt('Statistics and Reports').'</b></a></li>'); |
&mt('Statistics and Reports').'</b></a></li>'); |
|
|
$r->print("\n".'<li'.($mode eq 'chart'?' class="active"':'').'><a href="/adm/statistics?reportSelected=student_assessment"><b>'. |
$r->print("\n".'<li'.($mode eq 'chart'?' class="active"':'').'><a href="/adm/statistics?reportSelected=student_assessment"><b>'. |
&mt('Assessment Overview Chart').'</b></a></li>'); |
&mt('Assessment Chart').'</b></a></li>'); |
|
|
} |
} |
if ($allowed_to_edit) { |
if ($allowed_to_edit) { |
Line 343 sub startGradeScreen {
|
Line 404 sub startGradeScreen {
|
sub endGradeScreen { |
sub endGradeScreen { |
my ($r)=@_; |
my ($r)=@_; |
$r->print('</div></div></div>'.&Apache::loncommon::end_page()); |
$r->print('</div></div></div>'.&Apache::loncommon::end_page()); |
|
return; |
} |
} |
|
|
# ----------- |
# ----------- |
Line 415 sub getData {
|
Line 477 sub getData {
|
# Create the nav map |
# Create the nav map |
my $navmap = Apache::lonnavmaps::navmap->new($uname,$udom); |
my $navmap = Apache::lonnavmaps::navmap->new($uname,$udom); |
|
|
|
if (!defined($navmap)) { |
|
return (); |
|
} |
|
|
my $res = $navmap->firstResource(); # temp resource to access constants |
my $res = $navmap->firstResource(); # temp resource to access constants |
|
|
my $iterator = $navmap->getIterator(undef, undef, undef, 1); |
my $iterator = $navmap->getIterator(undef, undef, undef, 1); |
Line 444 sub getData {
|
Line 510 sub getData {
|
if ($curRes == $iterator->BEGIN_MAP()) {$depth++;} |
if ($curRes == $iterator->BEGIN_MAP()) {$depth++;} |
if ($curRes == $iterator->END_MAP()) { $depth--; } |
if ($curRes == $iterator->END_MAP()) { $depth--; } |
|
|
if (ref($curRes) && $curRes->is_problem() && !$curRes->randomout) |
if (ref($curRes) && $curRes->is_gradable() && !$curRes->randomout && |
|
($curRes->deeplink ne 'absent')) |
{ |
{ |
# Get number of correct, incorrect parts |
# Get number of correct, incorrect parts |
my $parts = $curRes->parts(); |
my $parts = $curRes->parts(); |
Line 642 sub outputTable {
|
Line 709 sub outputTable {
|
} |
} |
|
|
$r->print(&Apache::loncommon::end_data_table()); |
$r->print(&Apache::loncommon::end_data_table()); |
|
return; |
} |
} |
|
|
# |
# |