--- loncom/homework/grades.pm 2010/04/12 22:19:53 1.613 +++ loncom/homework/grades.pm 2010/04/17 16:38:38 1.621 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.613 2010/04/12 22:19:53 www Exp $ +# $Id: grades.pm,v 1.621 2010/04/17 16:38:38 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -800,7 +800,7 @@ sub verifyreceipt { $contents. &Apache::loncommon::end_data_table()."\n"; } - return $string.&show_grading_menu_form($symb); + return $string; } #--- This is called by a number of programs. @@ -808,17 +808,18 @@ sub verifyreceipt { #--- Also called directly when one clicks on the subm button # on the problem page. sub listStudents { - my ($request,$symb) = @_; + my ($request,$symb,$submitonly) = @_; my $cdom = $env{"course.$env{'request.course.id'}.domain"}; my $cnum = $env{"course.$env{'request.course.id'}.num"}; my $getsec = $env{'form.section'} eq '' ? 'all' : $env{'form.section'}; my $getgroup = $env{'form.group'} eq '' ? 'all' : $env{'form.group'}; - my $submitonly= $env{'form.submitonly'} eq '' ? 'all' : $env{'form.submitonly'}; - my $viewgrade = $env{'form.showgrading'} eq 'yes' ? 'View/Grade/Regrade' : 'View'; + unless ($submitonly) { + $submitonly= $env{'form.submitonly'} eq '' ? 'all' : $env{'form.submitonly'}; + } my $result='

 ' - .&mt("$viewgrade Submissions for a Student or a Group of Students") + .&mt("View/Grade/Regrade Submissions for a Student or a Group of Students") .'

'; my ($partlist,$handgrade,$responseType) = &response_type($symb @@ -918,11 +919,10 @@ LISTJAVASCRIPT &build_section_inputs(). ''."\n". '
'."\n". - '
'."\n". ''."\n". ''."\n"; - if (exists($env{'form.gradingMenu'}) && exists($env{'form.Status'})) { + if (exists($env{'form.Status'})) { $gradeTable .= ''."\n"; } else { $gradeTable .= &Apache::lonhtmlcommon::row_title(&mt('Student Status')) @@ -937,7 +937,7 @@ LISTJAVASCRIPT .&Apache::lonhtmlcommon::end_pick_box(); $gradeTable .= '

' - .&mt('To '.lc($viewgrade)." a submission or a group of submissions, click on the check box(es) next to the student's name(s). Then click on the Next button.")."\n" + .&mt("To view/grade/regrade a submission or a group of submissions, click on the check box(es) next to the student's name(s). Then click on the Next button.")."\n" .'' .'

'; @@ -954,9 +954,7 @@ LISTJAVASCRIPT while ($loop < 2) { $gradeTable.=''.&mt('No.').''.&mt('Select').''. ''.&nameUserString('header').' '.&mt('Section/Group').''; - if ($env{'form.showgrading'} eq 'yes' - && $submitonly ne 'queued' - && $submitonly ne 'all') { + if (($submitonly ne 'queued') && ($submitonly ne 'all')) { foreach my $part (sort(@$partlist)) { my $display_part= &get_display_part((split(/_/,$part))[0],$symb); @@ -992,9 +990,7 @@ LISTJAVASCRIPT $status{'gradingqueue'} = $queue_status{'gradingqueue'}; } - if ($env{'form.showgrading'} eq 'yes' - && $submitonly ne 'queued' - && $submitonly ne 'all') { + if (($submitonly ne 'queued') && ($submitonly ne 'all')) { (%status) =&student_gradeStatus($symb,$udom,$uname,$partlist); my $submitted = 0; my $graded = 0; @@ -1035,7 +1031,7 @@ LISTJAVASCRIPT &nameUserString(undef,$$fullname{$student},$uname,$udom). ' '.$section.($group ne '' ?'/'.$group:'').''."\n"; - if ($env{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { + if ($submitonly ne 'all') { foreach (sort(keys(%status))) { next if ($_ =~ /^resource.*?submitted_by$/); $gradeTable.=' '.&mt($status{$_}).' '."\n"; @@ -1049,9 +1045,7 @@ LISTJAVASCRIPT } if ($ctr%2 ==1) { $gradeTable.='   '; - if ($env{'form.showgrading'} eq 'yes' - && $submitonly ne 'queued' - && $submitonly ne 'all') { + if (($submitonly ne 'queued') && ($submitonly ne 'all')) { foreach (@$partlist) { $gradeTable.=' '; } @@ -1082,7 +1076,6 @@ LISTJAVASCRIPT } elsif ($ctr == 1) { $gradeTable =~ s/type="checkbox"/type="checkbox" checked="checked"/; } - $gradeTable.=&show_grading_menu_form($symb); $request->print($gradeTable); return ''; } @@ -1136,7 +1129,7 @@ sub check_buttons { # Displays the submissions for one student or a group of students sub processGroup { - my ($request) = shift; + my ($request,$symb) = @_; my $ctr = 0; my @stuchecked = &Apache::loncommon::get_env_multiple('form.stuinfo'); my $total = scalar(@stuchecked)-1; @@ -1146,7 +1139,7 @@ sub processGroup { $env{'form.student'} = $uname; $env{'form.userdom'} = $udom; $env{'form.fullname'} = $fullname; - &submission($request,$ctr,$total); + &submission($request,$ctr,$total,$symb); $ctr++; } return ''; @@ -1284,7 +1277,6 @@ sub sub_page_js { } if (val == "Grade Student") { - formname.showgrading.value = "yes"; if (formname.Status.value == "") { formname.Status.value = "Active"; } @@ -1853,6 +1845,11 @@ sub files_exist { sub download_all_link { my ($r,$symb) = @_; + unless (&files_exist($r, $symb)) { + $r->print(&mt('There are currently no submitted documents.')); + return; + } + my $all_students = join("\n", &Apache::loncommon::get_env_multiple('form.stuinfo')); @@ -1865,7 +1862,14 @@ sub download_all_link { 'cgi.'.$identifier.'.parts' => $parts,}); $r->print(''. &mt('Download All Submitted Documents').''); - return + return; +} + +sub submit_download_link { + my ($request,$symb) = @_; + if (!$symb) { return ''; } +#FIXME: Figure out which type of problem this is and provide appropriate download + &download_all_link($request,$symb); } sub build_section_inputs { @@ -1896,7 +1900,6 @@ sub submission { $request->print('Unable to view requested student.('. $uname.':'.$udom.' in section '.$usec.' in course id '. $env{'request.course.id'}.')'); - $request->print(&show_grading_menu_form($symb)); return; } @@ -1912,10 +1915,7 @@ sub submission { # header info if ($counter == 0) { &sub_page_js($request); - &sub_page_kw_js($request) if ($env{'form.handgrade'} eq 'yes'); - if ($env{'form.handgrade'} eq 'yes' && &files_exist($request, $symb)) { - &download_all_link($request, $symb); - } + &sub_page_kw_js($request); $request->print('

 '.&mt('Submission Record').'

'); # option to display problem, only once else it cause problems @@ -1960,7 +1960,6 @@ sub submission { ''."\n". ''."\n". ''."\n". - ''."\n". ''."\n". ''."\n". ''."\n". @@ -1994,7 +1993,7 @@ sub submission { } $request->print($prnmsg); - if ($env{'form.handgrade'} eq 'yes' && $env{'form.showgrading'} eq 'yes') { + if ($env{'form.handgrade'} eq 'yes') { # # Print out the keyword options line # @@ -2206,9 +2205,7 @@ KEYWORDS } $request->print($lastsubonly); } elsif ($env{'form.lastSub'} eq 'datesub') { -# my (undef,$responseType,undef,$parts) = &showResourceInfo($symb); - my ($parts,$handgrade,$responseType) = &response_type($symb); - + my ($parts,$handgrade,$responseType) = &response_type($symb); $request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom)); } elsif ($env{'form.lastSub'} =~ /^(last|all)$/) { $request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom, @@ -2220,15 +2217,12 @@ KEYWORDS $request->print(''."\n"); # return if view submission with no grading option - if ($env{'form.showgrading'} eq '' || (!&canmodify($usec))) { +# FIXME: the logic seems off here. Why show the grade button if you cannot grade? + if (!&canmodify($usec)) { my $toGrade.='  '."\n" if (&canmodify($usec)); $toGrade.=''."\n"; - if (($env{'form.command'} eq 'submission') || - ($env{'form.command'} eq 'processGroup' && $counter == $total)) { - $toGrade.=''.&show_grading_menu_form($symb); - } $request->print($toGrade); return; } else { @@ -2328,7 +2322,6 @@ KEYWORDS $endform.=""; $endform.=''; - $endform.=&show_grading_menu_form($symb); $request->print($endform); } return ''; @@ -2701,7 +2694,6 @@ sub processHandGrade { my $the_end = '

'.&mt('LON-CAPA User Message').'


'."\n"; $the_end.=&mt('Message: No more students for this section or class.').'

'."\n"; $the_end.=&mt('Click on the button below to return to the grading menu.').'

'."\n"; - $the_end.=&show_grading_menu_form($symb); $request->print($the_end); } return ''; @@ -3432,7 +3424,6 @@ sub viewgrades { $section_display, $stu_status). ''; } - $result.=&show_grading_menu_form($symb); return $result; } @@ -3715,8 +3706,7 @@ sub editgrades { &Apache::loncommon::end_data_table_row(); } } - $result .= &Apache::loncommon::end_data_table(). - &show_grading_menu_form($symb); + $result .= &Apache::loncommon::end_data_table(); my $msg = '

'. &mt('Number of records updated = [_1] for [quant,_2,student].', $rec_update,$count).'
'. @@ -3938,7 +3928,6 @@ ENDUPFORM &mt("How do I create a CSV file from a spreadsheet")) .''."\n"; $result.='

'."\n"; - $result.=&show_grading_menu_form($symb); return $result; } @@ -3985,7 +3974,6 @@ sub csvuploadmap { } } &csvuploadmap_footer($request,$i,$keyfields); - $request->print(&show_grading_menu_form($symb)); return ''; } @@ -4029,7 +4017,6 @@ ENDPICK # FIXME do a check for any invalid user ids?... $request->print('


'."\n"); - $request->print(&show_grading_menu_form($symb)); return ''; } @@ -4158,7 +4145,6 @@ sub csvuploadassign { $request->print(join(', ',@notallowed)); } $request->print("
\n"); - $request->print(&show_grading_menu_form($symb)); return $error_msg; } #------------- end of section for handling csv file upload --------- @@ -4288,7 +4274,6 @@ LISTJAVASCRIPT $studentTable.=''."\n"; - $studentTable.=&show_grading_menu_form($symb); $request->print($studentTable); return ''; @@ -4343,7 +4328,6 @@ sub displayPage { if (!&canview($usec)) { $request->print(''.&mt('Unable to view requested student. ([_1])',$env{'form.student'}).''); - $request->print(&show_grading_menu_form($symb)); return; } my $result='

 '.$env{'form.title'}.'

'; @@ -4361,14 +4345,12 @@ sub displayPage { my $navmap = Apache::lonnavmaps::navmap->new(); unless (ref($navmap)) { $request->print(&navmap_errormsg()); - $request->print(&show_grading_menu_form($symb)); return; } my ($mapUrl, $id, $resUrl)=&Apache::lonnet::decode_symb($env{'form.page'}); my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps if (!$map) { $request->print(''.&mt('Unable to view requested sequence. ([_1])',$resUrl).''); - $request->print(&show_grading_menu_form($symb)); return; } my $iterator = $navmap->getIterator($map->map_start(), @@ -4483,7 +4465,6 @@ sub displayPage { ''. ''."\n"; - $studentTable.=&show_grading_menu_form($symb); $request->print($studentTable); return ''; @@ -4621,7 +4602,6 @@ sub updateGradeByPage { my $usec=$classlist->{$env{'form.student'}}[5]; if (!&canmodify($usec)) { $request->print(''.&mt('Unable to modify requested student ([_1])',$env{'form.student'}).''); - $request->print(&show_grading_menu_form($env{'form.symb'})); return; } my $result='

 '.$env{'form.title'}.'

'; @@ -4640,7 +4620,6 @@ sub updateGradeByPage { my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps if (!$map) { $request->print(''.&mt('Unable to grade requested sequence ([_1]).',$resUrl).''); - $request->print(&show_grading_menu_form($symb)); return; } my $iterator = $navmap->getIterator($map->map_start(), @@ -4766,7 +4745,6 @@ sub updateGradeByPage { } $studentTable.=&Apache::loncommon::end_data_table(); - $studentTable.=&show_grading_menu_form($env{'form.symb'}); my $grademsg=($changeflag == 0 ? &mt('No score was changed or updated.') : &mt('The scores were changed for [quant,_1,problem].', $changeflag)); @@ -5139,7 +5117,6 @@ sub scantron_selectphase { return; } my $default_form_data=&defaultFormData($symb); - my $grading_menu_button=&show_grading_menu_form($symb); my $file_selector=&scantron_uploads($file2grade); my $format_selector=&scantron_scantab(); my $CODE_selector=&scantron_CODElist(); @@ -5301,7 +5278,6 @@ sub scantron_selectphase { &Apache::loncommon::end_data_table_row()."\n". &Apache::loncommon::end_data_table()."\n". '
'); - $r->print($grading_menu_button); return; } @@ -6226,7 +6202,7 @@ sub scantron_do_warning { '); } - $r->print("
".&show_grading_menu_form($symb)); + $r->print("
"); return ''; } @@ -6374,7 +6350,7 @@ sub scantron_validate_file { $r->print(" ".&mt("this scanline saving it for later.")); } } - $r->print("
".&show_grading_menu_form($symb)); + $r->print("
"); return ''; } @@ -7637,7 +7613,6 @@ SCANTRONFORM if ($ssi_error) { $r->print(""); &ssi_print_error($r); - $r->print(&show_grading_menu_form($symb)); &Apache::lonnet::remove_lock($lock); return ''; # Dunno why the other returns return '' rather than just returning. } @@ -7715,7 +7690,6 @@ SCANTRONFORM $ssi_error = 0; # So end of handler error message does not trigger. $r->print(""); &ssi_print_error($r); - $r->print(&show_grading_menu_form($symb)); &Apache::lonnet::remove_lock($lock); return ''; # Why return ''? Beats me. } @@ -7743,7 +7717,6 @@ SCANTRONFORM $ssi_error = 0; # So end of handler error message does not trigger. $r->print(""); &ssi_print_error($r); - $r->print(&show_grading_menu_form($symb)); &Apache::lonnet::remove_lock($lock); delete($completedstudents{$uname}); return ''; @@ -7799,7 +7772,6 @@ SCANTRONFORM # $r->print("

took $lasttime

"); $r->print(""); - $r->print(&show_grading_menu_form($symb)); return ''; } @@ -7935,9 +7907,7 @@ sub scantron_upload_scantron_data_save { !&Apache::lonnet::allowed('usc', $env{'form.domainid'}.'_'.$env{'form.courseid'})) { $r->print(&mt("You are not allowed to upload bubblesheet data to the requested course.")."
"); - if ($symb) { - $r->print(&show_grading_menu_form($symb)); - } else { + unless ($symb) { $r->print($doanotherupload); } return ''; @@ -8078,7 +8048,6 @@ sub scantron_download_scantron_data { '.&mt('The requested file name was invalid.').'

'); - $r->print(&show_grading_menu_form($symb)); return; } my $orig='/uploaded/'.$cdom.'/'.$cname.'/scantron_orig_'.$file; @@ -8101,14 +8070,12 @@ sub scantron_download_scantron_data { '','').'

'); - $r->print(&show_grading_menu_form($symb)); return ''; } sub checkscantron_results { my ($r,$symb) = @_; if (!$symb) {return '';} - my $grading_menu_button=&show_grading_menu_form($symb); my $cid = $env{'request.course.id'}; my %lettdig = &letter_to_digits(); my $numletts = scalar(keys(%lettdig)); @@ -8261,7 +8228,7 @@ sub checkscantron_results { &Apache::loncommon::end_data_table()).'
'. &mt('Differences can occur if submissions were modified using manual grading after a bubblesheet grading pass.').'
'.&mt('If unexpected discrepancies were detected, it is recommended that you inspect the original bubblesheets.'); } - $r->print('
'.$grading_menu_button); + $r->print('
'); return; } @@ -8403,15 +8370,11 @@ sub letter_to_digits { #-------------------------- Menu interface ------------------------- # -#--- Show a Grading Menu button - Calls the next routine --- -sub show_grading_menu_form { - my ($symb)=@_; - my $result.='
'."\n". - ''."\n". - ''."\n". - ''."\n". - '
'."\n"; - return $result; +#--- Href with symb and command --- + +sub href_symb_cmd { + my ($symb,$cmd)=@_; + return '/adm/grades?symb='.&HTML::Entities::encode(&Apache::lonenc::check_encrypt($symb),'<>&"').'&command='.$cmd; } sub grading_menu { @@ -8419,9 +8382,7 @@ sub grading_menu { if (!$symb) {return '';} my %fields = ('symb'=>&Apache::lonenc::check_encrypt($symb), - 'command'=>'individual', - 'gradingMenu'=>1, - 'showgrading'=>"yes"); + 'command'=>'individual'); my $url1a = &Apache::lonhtmlcommon::build_url('grades/',\%fields); @@ -8434,6 +8395,9 @@ sub grading_menu { $fields{'command'}='all_for_one'; my $url1d=&Apache::lonhtmlcommon::build_url('grades/',\%fields); + $fields{'command'}='downloadfilesselect'; + my $url1e=&Apache::lonhtmlcommon::build_url('grades/',\%fields); + $fields{'command'} = 'csvform'; my $url2 = &Apache::lonhtmlcommon::build_url('grades/',\%fields); @@ -8467,11 +8431,17 @@ sub grading_menu { icon => 'edit-find-replace.png', linktitle => 'Grade current resource for all students.' }, - { linktext => 'Grade complete page/sequence/folder for one student', + { linktext => 'Grade page/folder for one student', url => $url1d, permission => 'F', icon => 'edit-find-replace.png', linktitle => 'Grade all resources in current page/sequence/folder for one student.' + }, + { linktext => 'Download submissions', + url => $url1e, + permission => 'F', + icon => 'edit-find-replace.png', + linktitle => 'Download all students submissions.' }]}, { categorytitle=>'Automated Grading', items =>[ @@ -8494,7 +8464,7 @@ sub grading_menu { icon => 'stat.png', linktitle => 'Grade scantron exams, upload/download scantron data files, and review previously graded scantron exams.' }, - { linktext => 'Verify Receipt No.', + { linktext => 'Verify Receipt Number', url => $url5, permission => 'F', icon => 'edit-find-replace.png', @@ -8508,9 +8478,7 @@ sub grading_menu { my $Str; $Str .= '
'; $Str .= ''. - ''."\n". - ''."\n". - ''."\n"; + ''."\n"; $Str .= &Apache::lonhtmlcommon::generate_menu(@menu); return $Str; @@ -8529,13 +8497,10 @@ sub submit_options_sequence { my $result; $result.=''."\n". - ''."\n". - ''."\n". - ''."\n"; - + ''."\n"; $result.='

- '.&mt('Grade complete page/sequence/folder for one student').' + '.&mt('Grade page/folder for one student').'

'. &selectfield(0). ' @@ -8544,7 +8509,6 @@ sub submit_options_sequence {
'; - $result .= &show_grading_menu_form($symb); return $result; } @@ -8555,9 +8519,7 @@ sub submit_options_table { my $result; $result.='
'."\n". - ''."\n". - ''."\n". - ''."\n"; + ''."\n"; $result.='

@@ -8570,11 +8532,30 @@ sub submit_options_table { '; - $result .= &show_grading_menu_form($symb); return $result; } +sub submit_options_download { + my ($request,$symb) = @_; + if (!$symb) {return '';} + + &commonJSfunctions($request); + + my $result='
'."\n". + ''."\n"; + $result.=' +

+ '.&mt('Select Students for Which to Download Submissions').' +

'.&selectfield(1).' + + + + + +
'; + return $result; +} #--- Displays the submissions first page ------- sub submit_options { @@ -8585,10 +8566,7 @@ sub submit_options { my $result; $result.='
'."\n". - ''."\n". - ''."\n". - ''."\n"; - + ''."\n"; $result.='

'.&mt('Select individual students to grade').' @@ -8600,7 +8578,6 @@ sub submit_options { '; - $result .= &show_grading_menu_form($symb); return $result; } @@ -8829,7 +8806,6 @@ ENDUPFORM ENDUPFORM $result.=''."\n". '

'."\n"; - $result.=&show_grading_menu_form($symb); return $result; } @@ -8843,11 +8819,11 @@ sub process_clicker_file { my $result=''; if (($env{'form.gradingmechanism'} eq 'specific') && ($env{'form.specificid'}!~/\w/)) { $result.=''.&mt('You need to specify a clicker ID for the correct answer').''; - return $result.&show_grading_menu_form($symb); + return $result; } if (($env{'form.gradingmechanism'} eq 'given') && ($env{'form.givenanswer'}!~/\S/)) { $result.=''.&mt('You need to specify the correct answer').''; - return $result.&show_grading_menu_form($symb); + return $result; } my $foundgiven=0; if ($env{'form.gradingmechanism'} eq 'given') { @@ -8894,7 +8870,7 @@ sub process_clicker_file { $result.="

\n"; if ($number==0) { $result.=''.&mt('No IDs found to determine correct answer').''; - return $result.&show_grading_menu_form($symb); + return $result; } } if (length($env{'form.upfile'}) < 2) { @@ -8902,7 +8878,7 @@ sub process_clicker_file { '', '', ''.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').''); - return $result.&show_grading_menu_form($symb); + return $result; } # Were able to get all the info needed, now analyze the file @@ -8941,7 +8917,7 @@ ENDHEADER '
'; if (($env{'form.gradingmechanism'} eq 'given') && ($number!=$foundgiven)) { $result.=''.&mt('Number of given answers does not agree with number of questions in file.').''; - return $result.&show_grading_menu_form($symb); + return $result; } # Remember Question Titles # FIXME: Possibly need delimiter other than ":" @@ -9003,7 +8979,7 @@ ENDHEADER } $result.=''."\n". '

'."\n"; - return $result.&show_grading_menu_form($symb); + return $result; } sub iclicker_eval { @@ -9173,7 +9149,7 @@ ENDHEADER $result.='
'.&mt('Successfully stored grades for [quant,_1,student].',$storecount). ''."\n". '

'."\n"; - return $result.&show_grading_menu_form($symb); + return $result; } sub navmap_errormsg { @@ -9185,7 +9161,7 @@ sub navmap_errormsg { sub startpage { my ($r,$symb,$crumbs,$onlyfolderflag,$nodisplayflag) = @_; - unshift(@$crumbs,{href=>"/adm/grades?command=gradingmenu&symb=".&HTML::Entities::encode($symb,'<>&"'),text=>"Grading"}); + unshift(@$crumbs,{href=>&href_symb_cmd($symb,'gradingmenu'),text=>"Grading"}); $r->print(&Apache::loncommon::start_page('Grading',undef, {'bread_crumbs' => $crumbs})); unless ($nodisplayflag) { @@ -9235,68 +9211,84 @@ sub handler { &startpage($request,$symb,[{href=>"", text=>"Student Submissions"}]); ($env{'form.student'} eq '' ? &listStudents($request,$symb) : &submission($request,0,0,$symb)); } elsif ($command eq 'pickStudentPage' && $perm{'vgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>&href_symb_cmd($symb,'all_for_one'),text=>'Grade page/folder for one student'}, + {href=>'',text=>'Select student'}],1,1); &pickStudentPage($request,$symb); } elsif ($command eq 'displayPage' && $perm{'vgr'}) { - &startpage($request,$symb); + &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); &displayPage($request,$symb); } elsif ($command eq 'gradeByPage' && $perm{'mgr'}) { - &startpage($request,$symb); + &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'}, + {href=>'',text=>'Store grades'}],1,1); &updateGradeByPage($request,$symb); } elsif ($command eq 'processGroup' && $perm{'vgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'',text=>'...'}, + {href=>'',text=>'Modify grades'}]); &processGroup($request,$symb); } elsif ($command eq 'gradingmenu' && $perm{'vgr'}) { &startpage($request,$symb); $request->print(&grading_menu($request,$symb)); } elsif ($command eq 'individual' && $perm{'vgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'',text=>'Select individual students to grade'}]); $request->print(&submit_options($request,$symb)); } elsif ($command eq 'ungraded' && $perm{'vgr'}) { - &startpage($request,$symb); - $request->print(&submit_options($request,$symb)); + &startpage($request,$symb,[{href=>'',text=>'Grade ungraded submissions'}]); + $request->print(&listStudents($request,$symb,'graded')); } elsif ($command eq 'table' && $perm{'vgr'}) { - &startpage($request,$symb,[{href=>"", text=>"Grading table"}],1); + &startpage($request,$symb,[{href=>"", text=>"Grading table"}]); $request->print(&submit_options_table($request,$symb)); } elsif ($command eq 'all_for_one' && $perm{'vgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'',text=>'Grade page/folder for one student'}],1,1); $request->print(&submit_options_sequence($request,$symb)); } elsif ($command eq 'viewgrades' && $perm{'vgr'}) { - &startpage($request,$symb,[{href=>"/adm/grades?symb=".&HTML::Entities::encode($symb,'<>&"')."&command=table", text=>"Grading table"},{href=>'', text=>"Modify grades"}],1); + &startpage($request,$symb,[{href=>&href_symb_cmd($symb,"table"), text=>"Grading table"},{href=>'', text=>"Modify grades"}]); $request->print(&viewgrades($request,$symb)); } elsif ($command eq 'handgrade' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'',text=>'...'}, + {href=>'',text=>'Store grades'}]); $request->print(&processHandGrade($request,$symb)); } elsif ($command eq 'editgrades' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>&href_symb_cmd($symb,"table"), text=>"Grading table"}, + {href=>&href_symb_cmd($symb,'viewgrades').'&group=all§ion=all&Status=Active', + text=>"Modify grades"}, + {href=>'', text=>"Store grades"}]); $request->print(&editgrades($request,$symb)); } elsif ($command eq 'initialverifyreceipt' && $perm{'vgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'',text=>'Verify Receipt Number'}]); $request->print(&initialverifyreceipt($request,$symb)); } elsif ($command eq 'verify' && $perm{'vgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>&href_symb_cmd($symb,"initialverifyreceipt"),text=>'Verify Receipt Number'}, + {href=>'',text=>'Verification Result'}]); $request->print(&verifyreceipt($request,$symb)); } elsif ($command eq 'processclicker' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Process clicker'}]); $request->print(&process_clicker($request,$symb)); } elsif ($command eq 'processclickerfile' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>&href_symb_cmd($symb,'processclicker'), text=>'Process clicker'}, + {href=>'', text=>'Process clicker file'}]); $request->print(&process_clicker_file($request,$symb)); } elsif ($command eq 'assignclickergrades' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>&href_symb_cmd($symb,'processclicker'), text=>'Process clicker'}, + {href=>'', text=>'Process clicker file'}, + {href=>'', text=>'Store grades'}]); $request->print(&assign_clicker_grades($request,$symb)); } elsif ($command eq 'csvform' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&upcsvScores_form($request,$symb)); } elsif ($command eq 'csvupload' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&csvupload($request,$symb)); } elsif ($command eq 'csvuploadmap' && $perm{'mgr'} ) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&csvuploadmap($request,$symb)); } elsif ($command eq 'csvuploadoptions' && $perm{'mgr'}) { if ($env{'form.associate'} ne 'Reverse Association') { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&csvuploadoptions($request,$symb)); } else { if ( $env{'form.upfile_associate'} ne 'reverse' ) { @@ -9304,43 +9296,51 @@ sub handler { } else { $env{'form.upfile_associate'} = 'forward'; } - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&csvuploadmap($request,$symb)); } } elsif ($command eq 'csvuploadassign' && $perm{'mgr'} ) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&csvuploadassign($request,$symb)); } elsif ($command eq 'scantron_selectphase' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&scantron_selectphase($request,undef,$symb)); } elsif ($command eq 'scantron_warning' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&scantron_do_warning($request,$symb)); } elsif ($command eq 'scantron_validate' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&scantron_validate_file($request,$symb)); } elsif ($command eq 'scantron_process' && $perm{'mgr'}) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&scantron_process_students($request,$symb)); } elsif ($command eq 'scantronupload' && (&Apache::lonnet::allowed('usc',$env{'request.role.domain'})|| &Apache::lonnet::allowed('usc',$env{'request.course.id'}))) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&scantron_upload_scantron_data($request,$symb)); } elsif ($command eq 'scantronupload_save' && (&Apache::lonnet::allowed('usc',$env{'request.role.domain'})|| &Apache::lonnet::allowed('usc',$env{'request.course.id'}))) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&scantron_upload_scantron_data_save($request,$symb)); } elsif ($command eq 'scantron_download' && &Apache::lonnet::allowed('usc',$env{'request.course.id'})) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); $request->print(&scantron_download_scantron_data($request,$symb)); } elsif ($command eq 'checksubmissions' && $perm{'vgr'}) { - &startpage($request,$symb); - $request->print(&checkscantron_results($request,$symb)); + &startpage($request,$symb,[{href=>'', text=>'Grade/Manage/Review Bubblesheets'}],1,1); + $request->print(&checkscantron_results($request,$symb)); + } elsif ($command eq 'downloadfilesselect' && $perm{'vgr'}) { + &startpage($request,$symb,[{href=>'', text=>'Select which submissions to download'}]); + $request->print(&submit_options_download($request,$symb)); + } elsif ($command eq 'downloadfileslink' && $perm{'vgr'}) { + &startpage($request,$symb, + [{href=>&href_symb_cmd($symb,'downloadfilesselect'), text=>'Select which submissions to download'}, + {href=>'', text=>'Download submissions'}]); + &submit_download_link($request,$symb); } elsif ($command) { - &startpage($request,$symb); + &startpage($request,$symb,[{href=>'', text=>'Access denied'}]); $request->print('

'.&mt('Access Denied ([_1])',$command).'

'); } }