Diff for /loncom/homework/grades.pm between versions 1.599 and 1.601

version 1.599, 2010/03/19 21:22:34 version 1.601, 2010/03/21 18:31:45
Line 8515  sub show_grading_menu_form { Line 8515  sub show_grading_menu_form {
     return $result;      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 {  sub grading_menu {
     my ($request) = @_;      my ($request) = @_;
     my ($symb)=&get_symb($request);      my ($symb)=&get_symb($request);
Line 8537  sub grading_menu { Line 8525  sub grading_menu {
     my %fields = ('symb'=>&Apache::lonenc::check_encrypt($symb),      my %fields = ('symb'=>&Apache::lonenc::check_encrypt($symb),
                   'probTitle'=>$probTitle,                    'probTitle'=>$probTitle,
                   'command'=>'individual',                    'command'=>'individual',
                   'saveState'=>"",  
                   'gradingMenu'=>1,                    'gradingMenu'=>1,
                   'showgrading'=>"yes");                    'showgrading'=>"yes");
           
Line 8582  sub grading_menu { Line 8569  sub grading_menu {
                                 icon => 'edit-find-replace.png',                                  icon => 'edit-find-replace.png',
                                 linktitle => 'Grade current resource for all students.'                                  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,                                  url => $url1d,
                                 permission => 'F',                                  permission => 'F',
                                 icon => 'edit-find-replace.png',                                  icon => 'edit-find-replace.png',
Line 8623  sub grading_menu { Line 8610  sub grading_menu {
     '<input type="hidden" name="symb"        value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\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="handgrade"   value="'.$hdgrade.'" />'."\n".
  '<input type="hidden" name="probTitle"   value="'.$probTitle.'" />'."\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="gradingMenu" value="1" />'."\n".
  '<input type="hidden" name="showgrading" value="yes" />'."\n";   '<input type="hidden" name="showgrading" value="yes" />'."\n";
   
Line 8675  GRADINGMENUJS Line 8661  GRADINGMENUJS
     return $Str;          return $Str;    
 }  }
   
 sub individual {  
     my ($request)=@_;  
     &submit_options($request);  
 }  
   
 sub ungraded {  sub ungraded {
     my ($request)=@_;      my ($request)=@_;
     &submit_options($request);      &submit_options($request);
 }  }
   
 sub table {  
     my ($request)=@_;  
     &submit_options($request);  
 }  
   
 sub all_for_one {  
     my ($request)=@_;  
     &submit_options($request);  
 }  
   
 sub submit_options_sequence {  sub submit_options_sequence {
     my ($request) = @_;      my ($request) = @_;
     my ($symb)=&get_symb($request);      my ($symb)=&get_symb($request);
     if (!$symb) {return '';}      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);      &commonJSfunctions($request);
 #    my ($table,undef,$hdgrade) = &showResourceInfo($symb,$probTitle);  
     my $result;      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".      $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="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="gradingMenu" value="1" />'."\n".
         '<input type="hidden" name="showgrading" value="yes" />'."\n";          '<input type="hidden" name="showgrading" value="yes" />'."\n";
   
     $result.='      $result.='
 <h2>  <h2>
   '.&mt('Grade Complete Folder for One Student').'    '.&mt('Grade complete page/sequence/folder for one student').'
 </h2>  </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">  sub submit_options_table {
         my ($request) = @_;
     <fieldset>      my ($symb)=&get_symb($request);
       <legend>      if (!$symb) {return '';}
        '.&mt('Sections').'      &commonJSfunctions($request);
       </legend>      my $result;
       <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>  
   
 <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>              <div>
               <input type="submit" value="'.&mt('Next').' &rarr;" />                <input type="submit" value="'.&mt('Next').' &rarr;" />
             </div>              </div>
Line 8807  GRADINGMENUJS Line 8721  GRADINGMENUJS
     return $result;      return $result;
 }  }
   
   
   
 #--- Displays the submissions first page -------  #--- Displays the submissions first page -------
 sub submit_options {  sub submit_options {
     my ($request) = @_;      my ($request) = @_;
Line 8814  sub submit_options { Line 8730  sub submit_options {
     if (!$symb) {return '';}      if (!$symb) {return '';}
     my $probTitle = &Apache::lonnet::gettitle($symb);      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);      &commonJSfunctions($request);
 #    my ($table,undef,$hdgrade) = &showResourceInfo($symb,$probTitle);  
     my $result;      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".      $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="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="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="gradingMenu" value="1" />'."\n".
  '<input type="hidden" name="showgrading" value="yes" />'."\n";   '<input type="hidden" name="showgrading" value="yes" />'."\n";
   
     $result.='      $result.='
 <h2>  <h2>
   '.&mt('Grade Current Resource').'    '.&mt('Select individual students to grade').'
 </h2>  </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>      <fieldset>
       <legend>        <legend>
        '.&mt('Sections').'         '.&mt('Sections').'
       </legend>        </legend>
       <select name="section" multiple="multiple" size="5">'."\n";        '.&Apache::lonstatistics::SectionSelect('section','multiple',5).'
     $result.= $selsec;  
     $result.= '<option value="all" '.($saveSec eq 'all' ? 'selected="selected"' : ''). '>all</option></select> &nbsp; ';  
     $result.='  
     </fieldset>      </fieldset>
       
     <fieldset>      <fieldset>
Line 8905  GRADINGMENUJS Line 8776  GRADINGMENUJS
       <legend>        <legend>
         '.&mt('Access Status').'          '.&mt('Access Status').'
       </legend>        </legend>
       '.&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,5,undef,'mult').'        '.&Apache::lonhtmlcommon::StatusOptions(undef,undef,5,undef,'mult').'
     </fieldset>      </fieldset>';
         if ($full) {
          $result.='
     <fieldset>      <fieldset>
       <legend>        <legend>
         '.&mt('Submission Status').'          '.&mt('Submission Status').'
       </legend>        </legend>'.
       <select name="submitonly" size="5">         &Apache::loncommon::select_form('all','submitonly',
          <option value="yes" '.      ($saveSub eq 'yes'       ? 'selected="selected"' : '').'>'.&mt('with submissions').'</option>            (&Apache::lonlocal::texthash(
          <option value="queued" '.   ($saveSub eq 'queued'    ? 'selected="selected"' : '').'>'.&mt('in grading queue').'</option>               'yes'       => 'with submissions',
          <option value="graded" '.   ($saveSub eq 'graded'    ? 'selected="selected"' : '').'>'.&mt('with ungraded submissions').'</option>               'queued'    => 'in grading queue',
          <option value="incorrect" '.($saveSub eq 'incorrect' ? 'selected="selected"' : '').'>'.&mt('with incorrect submissions').'</option>               'graded'    => 'with ungraded submissions',
                  <option value="all" '.      ($saveSub eq 'all'       ? 'selected="selected"' : '').'>'.&mt('with any status').'</option>               'incorrect' => 'with incorrect submissions',
       </select>               'all'       => 'with any status'),
     </fieldset>               'select_form_order' => ['yes','queued','graded','incorrect','all'])).
        '</fieldset>';
 </div>      }
       $result.='</div><br />';
 <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);  
     return $result;      return $result;
 }  }
   
Line 9039  sub process_clicker { Line 8887  sub process_clicker {
     if (!$symb) {return '';}      if (!$symb) {return '';}
     my $result=&checkforfile_js();      my $result=&checkforfile_js();
     $env{'form.probTitle'} = &Apache::lonnet::gettitle($symb);      $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.='<br /><table width="100%" border="0"><tr><td bgcolor="#777777">'."\n";
     $result.='<table width="100%" border="0"><tr bgcolor="#e6ffff"><td>'."\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.').      $result.='&nbsp;<b>'.&mt('Specify a file containing the clicker information for this resource.').
         '</b></td></tr>'."\n";          '</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  # Attempt to restore parameters from last session, set defaults if not present
     my %Saveable_Parameters=&clicker_grading_parameters();      my %Saveable_Parameters=&clicker_grading_parameters();
     &Apache::loncommon::restore_course_settings('grades_clicker',      &Apache::loncommon::restore_course_settings('grades_clicker',
Line 9521  sub handler { Line 9367  sub handler {
     $request->print(&Apache::loncommon::start_page('Grading',undef,      $request->print(&Apache::loncommon::start_page('Grading',undef,
                                           {'bread_crumbs' => $brcrum}));                                            {'bread_crumbs' => $brcrum}));
     if ($symb eq '' && $command eq '') {      if ($symb eq '' && $command eq '') {
  if ($env{'user.adv'}) {  #
     if (($env{'form.codeone'}) && ($env{'form.codetwo'}) &&  # Not called from a resource
  ($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());  
     }  
  }  
     } else {      } else {
  &init_perm();   &init_perm();
  if ($command eq 'submission' && $perm{'vgr'}) {   if ($command eq 'submission' && $perm{'vgr'}) {
Line 9561  sub handler { Line 9386  sub handler {
  } elsif ($command eq 'gradingmenu' && $perm{'vgr'}) {   } elsif ($command eq 'gradingmenu' && $perm{'vgr'}) {
     $request->print(&grading_menu($request));      $request->print(&grading_menu($request));
  } elsif ($command eq 'individual' && $perm{'vgr'}) {   } elsif ($command eq 'individual' && $perm{'vgr'}) {
     $request->print(&individual($request));      $request->print(&submit_options($request));
         } elsif ($command eq 'ungraded' && $perm{'vgr'}) {          } elsif ($command eq 'ungraded' && $perm{'vgr'}) {
             $request->print(&submit_options($request));              $request->print(&submit_options($request));
         } elsif ($command eq 'table' && $perm{'vgr'}) {          } 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'}) {          } elsif ($command eq 'all_for_one' && $perm{'vgr'}) {
             $request->print(&submit_options_sequence($request));              $request->print(&submit_options_sequence($request));
  } elsif ($command eq 'viewgrades' && $perm{'vgr'}) {   } elsif ($command eq 'viewgrades' && $perm{'vgr'}) {

Removed from v.1.599  
changed lines
  Added in v.1.601


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>