--- loncom/homework/grades.pm 2010/03/19 21:22:34 1.599 +++ loncom/homework/grades.pm 2010/03/21 18:31:45 1.601 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.599 2010/03/19 21:22:34 www Exp $ +# $Id: grades.pm,v 1.601 2010/03/21 18:31:45 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -8515,18 +8515,6 @@ sub show_grading_menu_form { return $result; } -# -- Retrieve choices for grading form -sub savedState { - my %savedState = (); - if ($env{'form.saveState'}) { - foreach (split(/:/,$env{'form.saveState'})) { - my ($key,$value) = split(/=/,$_,2); - $savedState{$key} = $value; - } - } - return \%savedState; -} - sub grading_menu { my ($request) = @_; my ($symb)=&get_symb($request); @@ -8537,7 +8525,6 @@ sub grading_menu { my %fields = ('symb'=>&Apache::lonenc::check_encrypt($symb), 'probTitle'=>$probTitle, 'command'=>'individual', - 'saveState'=>"", 'gradingMenu'=>1, 'showgrading'=>"yes"); @@ -8582,7 +8569,7 @@ 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 complete page/sequence/folder for one student', url => $url1d, permission => 'F', icon => 'edit-find-replace.png', @@ -8623,7 +8610,6 @@ sub grading_menu { '<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". # '<input type="hidden" name="handgrade" value="'.$hdgrade.'" />'."\n". '<input type="hidden" name="probTitle" value="'.$probTitle.'" />'."\n". - '<input type="hidden" name="saveState" value="" />'."\n". '<input type="hidden" name="gradingMenu" value="1" />'."\n". '<input type="hidden" name="showgrading" value="yes" />'."\n"; @@ -8675,129 +8661,57 @@ GRADINGMENUJS return $Str; } -sub individual { - my ($request)=@_; - &submit_options($request); -} sub ungraded { my ($request)=@_; &submit_options($request); } -sub table { - my ($request)=@_; - &submit_options($request); -} - -sub all_for_one { - my ($request)=@_; - &submit_options($request); -} - sub submit_options_sequence { my ($request) = @_; my ($symb)=&get_symb($request); if (!$symb) {return '';} - my $probTitle = &Apache::lonnet::gettitle($symb); - - my $receiptalert = &mt("Please enter a receipt number given by a student in the receipt box."); - $request->print(&Apache::lonhtmlcommon::scripttag(<<GRADINGMENUJS)); - function checkChoice(formname,val,cmdx) { - if (val <= 2) { - var cmd = radioSelection(formname.radioChoice); - var cmdsave = cmd; - } else { - cmd = cmdx; - cmdsave = 'submission'; - } - formname.command.value = cmd; - formname.saveState.value = "saveCmd="+cmdsave+":saveSec="+pullDownSelection(formname.section)+ - ":saveSub="+pullDownSelection(formname.submitonly)+":saveStatus="+pullDownSelection(formname.Status); - if (val < 5) formname.submit(); - if (val == 5) { - if (!checkReceiptNo(formname,'notOK')) { return false;} - formname.submit(); - } - if (val < 7) formname.submit(); - } - - function checkReceiptNo(formname,nospace) { - var receiptNo = formname.receipt.value; - var checkOpt = false; - if (nospace == "OK" && isNaN(receiptNo)) {checkOpt = true;} - if (nospace == "notOK" && (isNaN(receiptNo) || receiptNo == "")) {checkOpt = true;} - if (checkOpt) { - alert("$receiptalert"); - formname.receipt.value = ""; - formname.receipt.focus(); - return false; - } - return true; - } -GRADINGMENUJS &commonJSfunctions($request); -# my ($table,undef,$hdgrade) = &showResourceInfo($symb,$probTitle); my $result; - my (undef,$sections) = &getclasslist('all','0'); - my $savedState = &savedState(); - my $saveCmd = ($$savedState{'saveCmd'} eq '' ? 'submission' : $$savedState{'saveCmd'}); - my $saveSec = ($$savedState{'saveSec'} eq '' ? 'all' : $$savedState{'saveSec'}); - my $saveSub = ($$savedState{'saveSub'} eq '' ? 'all' : $$savedState{'saveSub'}); - my $saveStatus = ($$savedState{'saveStatus'} eq '' ? 'Active' : $$savedState{'saveStatus'}); - - # Preselect sections - my $selsec=""; - if (ref($sections)) { - foreach my $section (sort(@$sections)) { - $selsec.='<option value="'.$section.'" '. - ($saveSec eq $section ? 'selected="selected"':'').'>'.$section.'</option>'."\n"; - } - } $result.='<form action="/adm/grades" method="post" name="gradingMenu">'."\n". '<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". - '<input type="hidden" name="probTitle" value="'.$probTitle.'" />'."\n". - '<input type="hidden" name="saveState" value="" />'."\n". '<input type="hidden" name="gradingMenu" value="1" />'."\n". '<input type="hidden" name="showgrading" value="yes" />'."\n"; $result.=' <h2> - '.&mt('Grade Complete Folder for One Student').' -</h2> + '.&mt('Grade complete page/sequence/folder for one student').' +</h2>'. + &selectfield(0). + '<input type="hidden" name="command" value="pickStudentPage" /> + <div> + <input type="submit" value="'.&mt('Next').' →" /> + </div> + </div> + </form>'; + $result .= &show_grading_menu_form($symb); + return $result; +} -<div class="LC_columnSection"> - - <fieldset> - <legend> - '.&mt('Sections').' - </legend> - <select name="section" multiple="multiple" size="5">'."\n"; - $result.= $selsec; - $result.= '<option value="all" '.($saveSec eq 'all' ? 'selected="selected"' : ''). '>all</option></select> '; - $result.=' - </fieldset> - - <fieldset> - <legend> - '.&mt('Groups').' - </legend> - '.&Apache::lonstatistics::GroupSelect('group','multiple',5).' - </fieldset> - - <fieldset> - <legend> - '.&mt('Access Status').' - </legend> - '.&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,5,undef,'mult').' - </fieldset> - -</div> +sub submit_options_table { + my ($request) = @_; + my ($symb)=&get_symb($request); + if (!$symb) {return '';} + &commonJSfunctions($request); + my $result; -<br /> + $result.='<form action="/adm/grades" method="post" name="gradingMenu">'."\n". + '<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". + '<input type="hidden" name="gradingMenu" value="1" />'."\n". + '<input type="hidden" name="showgrading" value="yes" />'."\n"; - <input type="hidden" name="command" value="pickStudentPage" /> + $result.=' +<h2> + '.&mt('Grading table').' +</h2>'. + &selectfield(0). + '<input type="hidden" name="command" value="viewgrades" /> <div> <input type="submit" value="'.&mt('Next').' →" /> </div> @@ -8807,6 +8721,8 @@ GRADINGMENUJS return $result; } + + #--- Displays the submissions first page ------- sub submit_options { my ($request) = @_; @@ -8814,84 +8730,39 @@ sub submit_options { if (!$symb) {return '';} my $probTitle = &Apache::lonnet::gettitle($symb); - my $receiptalert = &mt("Please enter a receipt number given by a student in the receipt box."); - $request->print(&Apache::lonhtmlcommon::scripttag(<<GRADINGMENUJS)); - function checkChoice(formname,val,cmdx) { - if (val <= 2) { - var cmd = radioSelection(formname.radioChoice); - var cmdsave = cmd; - } else { - cmd = cmdx; - cmdsave = 'submission'; - } - formname.command.value = cmd; - formname.saveState.value = "saveCmd="+cmdsave+":saveSec="+pullDownSelection(formname.section)+ - ":saveSub="+pullDownSelection(formname.submitonly)+":saveStatus="+pullDownSelection(formname.Status); - if (val < 5) formname.submit(); - if (val == 5) { - if (!checkReceiptNo(formname,'notOK')) { return false;} - formname.submit(); - } - if (val < 7) formname.submit(); - } - - function checkReceiptNo(formname,nospace) { - var receiptNo = formname.receipt.value; - var checkOpt = false; - if (nospace == "OK" && isNaN(receiptNo)) {checkOpt = true;} - if (nospace == "notOK" && (isNaN(receiptNo) || receiptNo == "")) {checkOpt = true;} - if (checkOpt) { - alert("$receiptalert"); - formname.receipt.value = ""; - formname.receipt.focus(); - return false; - } - return true; - } -GRADINGMENUJS &commonJSfunctions($request); -# my ($table,undef,$hdgrade) = &showResourceInfo($symb,$probTitle); my $result; - my (undef,$sections) = &getclasslist('all','0'); - my $savedState = &savedState(); - my $saveCmd = ($$savedState{'saveCmd'} eq '' ? 'submission' : $$savedState{'saveCmd'}); - my $saveSec = ($$savedState{'saveSec'} eq '' ? 'all' : $$savedState{'saveSec'}); - my $saveSub = ($$savedState{'saveSub'} eq '' ? 'all' : $$savedState{'saveSub'}); - my $saveStatus = ($$savedState{'saveStatus'} eq '' ? 'Active' : $$savedState{'saveStatus'}); - - # Preselect sections - my $selsec=""; - if (ref($sections)) { - foreach my $section (sort(@$sections)) { - $selsec.='<option value="'.$section.'" '. - ($saveSec eq $section ? 'selected="selected"':'').'>'.$section.'</option>'."\n"; - } - } $result.='<form action="/adm/grades" method="post" name="gradingMenu">'."\n". '<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". -# '<input type="hidden" name="handgrade" value="'.$hdgrade.'" />'."\n". '<input type="hidden" name="probTitle" value="'.$probTitle.'" />'."\n". - '<input type="hidden" name="command" value="" />'."\n". - '<input type="hidden" name="saveState" value="" />'."\n". '<input type="hidden" name="gradingMenu" value="1" />'."\n". '<input type="hidden" name="showgrading" value="yes" />'."\n"; $result.=' <h2> - '.&mt('Grade Current Resource').' -</h2> + '.&mt('Select individual students to grade').' +</h2>'.&selectfield(1).' + <input type="hidden" name="command" value="submission" /> + <input type="submit" value="'.&mt('Next').' →" /> + </div> + </div> + -<div class="LC_columnSection"> + </form>'; + $result .= &show_grading_menu_form($symb); + return $result; +} + +sub selectfield { + my ($full)=@_; + my $result='<div class="LC_columnSection"> <fieldset> <legend> '.&mt('Sections').' </legend> - <select name="section" multiple="multiple" size="5">'."\n"; - $result.= $selsec; - $result.= '<option value="all" '.($saveSec eq 'all' ? 'selected="selected"' : ''). '>all</option></select> '; - $result.=' + '.&Apache::lonstatistics::SectionSelect('section','multiple',5).' </fieldset> <fieldset> @@ -8905,48 +8776,25 @@ GRADINGMENUJS <legend> '.&mt('Access Status').' </legend> - '.&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,5,undef,'mult').' - </fieldset> - + '.&Apache::lonhtmlcommon::StatusOptions(undef,undef,5,undef,'mult').' + </fieldset>'; + if ($full) { + $result.=' <fieldset> <legend> '.&mt('Submission Status').' - </legend> - <select name="submitonly" size="5"> - <option value="yes" '. ($saveSub eq 'yes' ? 'selected="selected"' : '').'>'.&mt('with submissions').'</option> - <option value="queued" '. ($saveSub eq 'queued' ? 'selected="selected"' : '').'>'.&mt('in grading queue').'</option> - <option value="graded" '. ($saveSub eq 'graded' ? 'selected="selected"' : '').'>'.&mt('with ungraded submissions').'</option> - <option value="incorrect" '.($saveSub eq 'incorrect' ? 'selected="selected"' : '').'>'.&mt('with incorrect submissions').'</option> - <option value="all" '. ($saveSub eq 'all' ? 'selected="selected"' : '').'>'.&mt('with any status').'</option> - </select> - </fieldset> - -</div> - -<br /> - <div> - <div> - <label> - <input type="radio" name="radioChoice" value="submission" '. - ($saveCmd eq 'submission' ? 'checked="checked"' : '').' /> '. - &mt('Select individual students to grade and view submissions.').' - </label> - </div> - <div> - <label> - <input type="radio" name="radioChoice" value="viewgrades" '. - ($saveCmd eq 'viewgrades' ? 'checked="checked"' : '').' /> '. - &mt('Grade all selected students in a grading table.').' - </label> - </div> - <div> - <input type="button" onclick="javascript:checkChoice(this.form,\'2\');" value="'.&mt('Next').' →" /> - </div> - </div> - - - </form>'; - $result .= &show_grading_menu_form($symb); + </legend>'. + &Apache::loncommon::select_form('all','submitonly', + (&Apache::lonlocal::texthash( + 'yes' => 'with submissions', + 'queued' => 'in grading queue', + 'graded' => 'with ungraded submissions', + 'incorrect' => 'with incorrect submissions', + 'all' => 'with any status'), + 'select_form_order' => ['yes','queued','graded','incorrect','all'])). + '</fieldset>'; + } + $result.='</div><br />'; return $result; } @@ -9039,13 +8887,11 @@ sub process_clicker { if (!$symb) {return '';} my $result=&checkforfile_js(); $env{'form.probTitle'} = &Apache::lonnet::gettitle($symb); -# my ($table) = &showResourceInfo($symb,$env{'form.probTitle'}); -# $result.=$table; $result.='<br /><table width="100%" border="0"><tr><td bgcolor="#777777">'."\n"; $result.='<table width="100%" border="0"><tr bgcolor="#e6ffff"><td>'."\n"; $result.=' <b>'.&mt('Specify a file containing the clicker information for this resource.'). '</b></td></tr>'."\n"; - $result.='<tr bgcolor=#ffffe6><td>'."\n"; + $result.='<tr bgcolor="#ffffe6"><td>'."\n"; # Attempt to restore parameters from last session, set defaults if not present my %Saveable_Parameters=&clicker_grading_parameters(); &Apache::loncommon::restore_course_settings('grades_clicker', @@ -9521,31 +9367,10 @@ sub handler { $request->print(&Apache::loncommon::start_page('Grading',undef, {'bread_crumbs' => $brcrum})); if ($symb eq '' && $command eq '') { - if ($env{'user.adv'}) { - if (($env{'form.codeone'}) && ($env{'form.codetwo'}) && - ($env{'form.codethree'})) { - my $token=$env{'form.codeone'}.'*'.$env{'form.codetwo'}.'*'. - $env{'form.codethree'}; - my ($tsymb,$tuname,$tudom,$tcrsid)= - &Apache::lonnet::checkin($token); - if ($tsymb) { - my ($map,$id,$url)=&Apache::lonnet::decode_symb($tsymb); - if (&Apache::lonnet::allowed('mgr',$tcrsid)) { - $request->print(&ssi_with_retries('/res/'.$url, $ssi_retries, - ('grade_username' => $tuname, - 'grade_domain' => $tudom, - 'grade_courseid' => $tcrsid, - 'grade_symb' => $tsymb))); - } else { - $request->print('<h3>Not authorized: '.$token.'</h3>'); - } - } else { - $request->print('<h3>Not a valid DocID: '.$token.'</h3>'); - } - } else { - $request->print(&Apache::lonxml::tokeninputfield()); - } - } +# +# Not called from a resource +# + } else { &init_perm(); if ($command eq 'submission' && $perm{'vgr'}) { @@ -9561,11 +9386,11 @@ sub handler { } elsif ($command eq 'gradingmenu' && $perm{'vgr'}) { $request->print(&grading_menu($request)); } elsif ($command eq 'individual' && $perm{'vgr'}) { - $request->print(&individual($request)); + $request->print(&submit_options($request)); } elsif ($command eq 'ungraded' && $perm{'vgr'}) { $request->print(&submit_options($request)); } elsif ($command eq 'table' && $perm{'vgr'}) { - $request->print(&submit_options($request)); + $request->print(&submit_options_table($request)); } elsif ($command eq 'all_for_one' && $perm{'vgr'}) { $request->print(&submit_options_sequence($request)); } elsif ($command eq 'viewgrades' && $perm{'vgr'}) {