--- 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').' &rarr;" />
+            </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> &nbsp; ';
-    $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').' &rarr;" />
             </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').' &rarr;" />
+            </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> &nbsp; ';
-    $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').' &rarr;" />
-            </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.='&nbsp;<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'}) {