![]() ![]() | ![]() |
- mode <head> </headh> <</body> elimination
1: # The LearningOnline Network 2: # Pick a CODE from the list of possible CODEs 3: # 4: # $Id: lonpickcode.pm,v 1.9 2006/03/15 22:11:04 albertel Exp $ 5: # 6: # Copyright Michigan State University Board of Trustees 7: # 8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA). 9: # 10: # LON-CAPA is free software; you can redistribute it and/or modify 11: # it under the terms of the GNU General Public License as published by 12: # the Free Software Foundation; either version 2 of the License, or 13: # (at your option) any later version. 14: # 15: # LON-CAPA is distributed in the hope that it will be useful, 16: # but WITHOUT ANY WARRANTY; without even the implied warranty of 17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18: # GNU General Public License for more details. 19: # 20: # You should have received a copy of the GNU General Public License 21: # along with LON-CAPA; if not, write to the Free Software 22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23: # 24: # /home/httpd/html/adm/gpl.txt 25: # 26: # http://www.lon-capa.org/ 27: # 28: 29: package Apache::lonpickcode; 30: 31: use strict; 32: use Apache::Constants qw(:common); 33: use Apache::loncommon(); 34: use Apache::grades(); 35: use Apache::lonlocal; 36: use Apache::lonnet; 37: 38: sub get_code_freq { 39: my ($r)=@_; 40: my %codes; 41: my %scantron_config= 42: &Apache::grades::get_scantron_config($env{'form.scantron_format'}); 43: $r->rflush(); 44: my ($scanlines,$scan_data)=&Apache::grades::scantron_getfile(); 45: for (my $i=0;$i<=$scanlines->{'count'};$i++) { 46: my $line=&Apache::grades::scantron_get_line($scanlines,$scan_data,$i); 47: if ($line=~/^[\s\cz]*$/) { next; } 48: my $scan_record= 49: &Apache::grades::scantron_parse_scanline($line,$i, 50: \%scantron_config, 51: $scan_data,1); 52: push(@{$codes{$$scan_record{'scantron.CODE'}}},$$scan_record{'scantron.PaperID'}); 53: 54: } 55: return %codes; 56: } 57: 58: sub handler { 59: my $r = shift; 60: &Apache::loncommon::content_type($r,'text/html'); 61: $r->send_http_header; 62: return OK if $r->header_only; 63: 64: &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, 65: ['curCODE','scantron_selectfile', 66: 'form','scantron_format','symb', 67: 'scantron_CODElist','command']); 68: 69: if (!($env{'request.course.id'}) && 70: (&Apache::lonnet::allowed('usc',$env{'request.course.id'}))) { 71: $r->print(&Apache::loncommon::start_page(). 72: &mt('Access not allowed.'). 73: &Apache::loncommon::end_page()); 74: return OK; 75: } 76: if ($env{'form.command'} eq 'codelist') { 77: &code_list($r); 78: } elsif ($env{'form.command'} eq 'showcodes') { 79: &show_codes($r); 80: } else { 81: &picking_a_code($r); 82: } 83: $r->print(&Apache::loncommon::end_page()); 84: return OK; 85: } 86: 87: sub code_list { 88: my ($r,$secondview)=@_; 89: if (!$secondview) { 90: $r->print(&Apache::loncommon::start_page("View CODEs")); 91: $r->print("<p>".&mt('Select a set of saved CODEs to view.')."</p>"); 92: } else { 93: $r->print("<p>".&mt('Select another set of saved CODEs to view.')."</p>"); 94: } 95: $r->print("<form method='POST' action='/adm/pickcode' name='pickcode'>"); 96: $r->print(&Apache::grades::scantron_CODElist()); 97: $r->print("<input type='hidden' name='command' value='showcodes' />"); 98: $r->print("<input type='hidden' name='symb' value='".$env{'form.symb'}."' />"); 99: $r->print("<input type='hidden' name='url' value='".$env{'form.url'}."' />"); 100: $r->print("<input type='submit' name='submit' value='".&mt("View")."' />"); 101: $r->print("</form>"); 102: $r->print(&Apache::grades::show_grading_menu_form($env{'form.symb'}, 103: $env{'form.url'})); 104: } 105: 106: sub show_codes { 107: my ($r)=@_; 108: $r->print(&Apache::loncommon::start_page("View CODEs")); 109: my %codes=&Apache::grades::get_codes(); 110: $r->print("<h2>".$env{'form.scantron_CODElist'}."</h2>"); 111: $r->print('<pre>'); 112: foreach my $code (sort(keys(%codes))) { 113: $r->print($code."\n"); 114: } 115: $r->print('</pre>'); 116: &code_list($r,1); 117: } 118: 119: sub picking_a_code { 120: my ($r)=@_; 121: $r->print(&Apache::loncommon::start_page("Selecting a CODE")); 122: $r->print(<<ENDSCRIPT); 123: <script> 124: function gochoose(newcode) { 125: opener.document.$env{'form.form'}.scantron_CODE_selectedvalue.value=newcode; 126: var slct=opener.document.$env{'form.form'}.scantron_CODE_resolution; 127: var i; 128: for (i=0;i<slct.length;i++) { 129: if (slct[i].value=='use_found') { slct[i].checked=true; } 130: } 131: self.close(); 132: } 133: </script> 134: ENDSCRIPT 135: 136: 137: $r->print("<p>The CODE on the paper is <tt><b>".$env{'form.curCODE'}. 138: "</b></tt>. Please Select a new one.</p>\n".'<form>'); 139: my %codes=&Apache::grades::get_codes(); 140: my %code_freq=&get_code_freq($r); 141: my $num_matches=length($env{'form.curCODE'}); 142: for (my $i=$num_matches;$i>=0;$i--) { 143: my $to_print="<p> CODEs with $i matches</p>"; 144: $to_print.='<table border="1"><tr><td></td><td>CODE</td><td>exams using this CODE</td>'; 145: my $print; 146: foreach my $code (sort(keys(%codes))) { 147: if (&Apache::grades::num_matches($env{'form.curCODE'},$code) != $i) { next; } 148: $print=1; 149: my ($count,$list); 150: if (!ref($code_freq{$code})) { 151: $count=0; 152: } else { 153: $count=scalar(@{$code_freq{$code}}); 154: $list=' - '.join(', ',@{$code_freq{$code}}); 155: } 156: $to_print.='<tr><td>'. 157: '<input type="button" value="'.&mt('Select'). 158: '" onClick="gochoose(\''.$code.'\')" /></td>'. 159: '<td><tt>'.$code.'</tt></td><td>'.$count. 160: $list.'</td></tr>'; 161: delete($codes{$code}); 162: } 163: $to_print.='</table>'; 164: if ($print) { $r->print($to_print); } 165: } 166: $r->print('</form>'); 167: } 168: 169: 1; 170: __END__