version 1.407, 2007/06/15 22:10:15
|
version 1.408, 2007/06/15 22:12:49
|
Line 6129 sub init_perm {
|
Line 6129 sub init_perm {
|
} |
} |
|
|
sub gather_clicker_ids { |
sub gather_clicker_ids { |
my %clicker_ids=(); |
my %clicker_ids; |
|
|
my $classlist = &Apache::loncoursedata::get_classlist(); |
my $classlist = &Apache::loncoursedata::get_classlist(); |
|
|
Line 6142 sub gather_clicker_ids {
|
Line 6142 sub gather_clicker_ids {
|
my $username = $classlist->{$student}->[$username_idx]; |
my $username = $classlist->{$student}->[$username_idx]; |
my $domain = $classlist->{$student}->[$domain_idx]; |
my $domain = $classlist->{$student}->[$domain_idx]; |
my $clickers = |
my $clickers = |
(&Apache::lonnet::userenvironment($domain,$username,'clickers'))[1]; |
(&Apache::lonnet::userenvironment($domain,$username,'clickers'))[1]; |
foreach my $id (split(/\,/,$clickers)) { |
foreach my $id (split(/\,/,$clickers)) { |
$id=~s/^0+//; |
$id=~s/^0+//; |
if (exists($clicker_ids{$id})) { |
if (exists($clicker_ids{$id})) { |
$clicker_ids{$id}.=','.$username.':'.$domain; |
$clicker_ids{$id}.=','.$username.':'.$domain; |
} else { |
} else { |
$clicker_ids{$id}=$username.':'.$domain; |
$clicker_ids{$id}=$username.':'.$domain; |
} |
} |
} |
} |
} |
} |
Line 6156 sub gather_clicker_ids {
|
Line 6156 sub gather_clicker_ids {
|
} |
} |
|
|
sub gather_adv_clicker_ids { |
sub gather_adv_clicker_ids { |
my %clicker_ids=(); |
my %clicker_ids; |
my $cnum=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cnum=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum); |
my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum); |
Line 6164 sub gather_adv_clicker_ids {
|
Line 6164 sub gather_adv_clicker_ids {
|
foreach my $person (split(/\,/,$coursepersonnel{$element})) { |
foreach my $person (split(/\,/,$coursepersonnel{$element})) { |
my ($puname,$pudom)=split(/\:/,$person); |
my ($puname,$pudom)=split(/\:/,$person); |
my $clickers = |
my $clickers = |
(&Apache::lonnet::userenvironment($pudom,$puname,'clickers'))[1]; |
(&Apache::lonnet::userenvironment($pudom,$puname,'clickers'))[1]; |
foreach my $id (split(/\,/,$clickers)) { |
foreach my $id (split(/\,/,$clickers)) { |
$id=~s/^0+//; |
$id=~s/^0+//; |
if (exists($clicker_ids{$id})) { |
if (exists($clicker_ids{$id})) { |
$clicker_ids{$id}.=','.$puname.':'.$pudom; |
$clicker_ids{$id}.=','.$puname.':'.$pudom; |
} else { |
} else { |
$clicker_ids{$id}=$puname.':'.$pudom; |
$clicker_ids{$id}=$puname.':'.$pudom; |
} |
} |
} |
} |
} |
} |
} |
} |
Line 6199 sub process_clicker {
|
Line 6199 sub process_clicker {
|
my $pcorrect=&mt("Percentage points for correct solution"); |
my $pcorrect=&mt("Percentage points for correct solution"); |
my $pincorrect=&mt("Percentage points for incorrect solution"); |
my $pincorrect=&mt("Percentage points for incorrect solution"); |
my $selectform=&Apache::loncommon::select_form('iclicker','upfiletype', |
my $selectform=&Apache::loncommon::select_form('iclicker','upfiletype', |
('iclicker' => 'i>clicker')); |
('iclicker' => 'i>clicker')); |
|
|
$result.=<<ENDUPFORM; |
$result.=<<ENDUPFORM; |
<script type="text/javascript"> |
<script type="text/javascript"> |
Line 6270 sub process_clicker_file {
|
Line 6270 sub process_clicker_file {
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my ($result) = &showResourceInfo($symb,$env{'form.probTitle'}); |
my ($result) = &showResourceInfo($symb,$env{'form.probTitle'}); |
if (($env{'form.gradingmechanism'} eq 'specific') && ($env{'form.specificid'}!~/\w/)) { |
if (($env{'form.gradingmechanism'} eq 'specific') && ($env{'form.specificid'}!~/\w/)) { |
$result.='<span class="LC_error">'.&mt('You need to specify a clicker ID for the correct answer').'</span>'; |
$result.='<span class="LC_error">'.&mt('You need to specify a clicker ID for the correct answer').'</span>'; |
return $result.&show_grading_menu_form($symb); |
return $result.&show_grading_menu_form($symb); |
} |
} |
my %clicker_ids=&gather_clicker_ids(); |
my %clicker_ids=&gather_clicker_ids(); |
my %correct_ids=(); |
my %correct_ids; |
if ($env{'form.gradingmechanism'} eq 'personnel') { |
if ($env{'form.gradingmechanism'} eq 'personnel') { |
%correct_ids=&gather_adv_clicker_ids(); |
%correct_ids=&gather_adv_clicker_ids(); |
} |
} |
if ($env{'form.gradingmechanism'} eq 'specific') { |
if ($env{'form.gradingmechanism'} eq 'specific') { |
my $correct_id=$env{'form.specificid'}; |
my $correct_id=$env{'form.specificid'}; |
$correct_id=~tr/a-z/A-Z/; |
$correct_id=~tr/a-z/A-Z/; |
$correct_id=~s/\s//gs; |
$correct_id=~s/\s//gs; |
$correct_id=~s/^0+//; |
$correct_id=~s/^0+//; |
$correct_ids{$correct_id}='specified'; |
$correct_ids{$correct_id}='specified'; |
} |
} |
if ($env{'form.gradingmechanism'} eq 'attendance') { |
if ($env{'form.gradingmechanism'} eq 'attendance') { |
$result.=&mt('Score based on attendance only'); |
$result.=&mt('Score based on attendance only'); |
} else { |
} else { |
my $number=0; |
my $number=0; |
$result.='<h3>'.&mt('Correctness determined by the following IDs').'</h3>'; |
$result.='<h3>'.&mt('Correctness determined by the following IDs').'</h3>'; |
foreach my $id (sort(keys(%correct_ids))) { |
foreach my $id (sort(keys(%correct_ids))) { |
$result.='<tt>'.$id.'</tt> - '; |
$result.='<tt>'.$id.'</tt> - '; |
if ($correct_ids{$id} eq 'specified') { |
if ($correct_ids{$id} eq 'specified') { |
$result.=&mt('specified'); |
$result.=&mt('specified'); |
} else { |
} else { |
my ($uname,$udom)=split(/\:/,$correct_ids{$id}); |
my ($uname,$udom)=split(/\:/,$correct_ids{$id}); |
$result.=&Apache::loncommon::plainname($uname,$udom); |
$result.=&Apache::loncommon::plainname($uname,$udom); |
} |
} |
$result.='<br />'; |
$result.='<br />'; |
$number++; |
$number++; |
} |
} |
if ($number==0) { |
if ($number==0) { |
$result.='<span class="LC_error">'.&mt('No IDs found to determine correct answer').'</span>'; |
$result.='<span class="LC_error">'.&mt('No IDs found to determine correct answer').'</span>'; |
return $result.&show_grading_menu_form($symb); |
return $result.&show_grading_menu_form($symb); |
} |
} |
} |
} |
if (length($env{'form.upfile'}) < 2) { |
if (length($env{'form.upfile'}) < 2) { |
$result.=&mt('[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.', |
$result.=&mt('[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.', |
Line 6313 sub process_clicker_file {
|
Line 6313 sub process_clicker_file {
|
'<span class="LC_filename">'.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').'</span>'); |
'<span class="LC_filename">'.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').'</span>'); |
return $result.&show_grading_menu_form($symb); |
return $result.&show_grading_menu_form($symb); |
} |
} |
my %responses=(); |
my %responses; |
my @questiontitles=(); |
my @questiontitles; |
my $errormsg=''; |
my $errormsg=''; |
my $number=0; |
my $number=0; |
if ($env{'form.upfiletype'} eq 'iclicker') { |
if ($env{'form.upfiletype'} eq 'iclicker') { |
($errormsg,$number)=&iclicker_eval(\@questiontitles,\%responses); |
($errormsg,$number)=&iclicker_eval(\@questiontitles,\%responses); |
} |
} |
$result.='<br />'.&mt('Found [_1] questions',$number).'<br />'; |
$result.='<br />'.&mt('Found [_1] questions',$number).'<br />'; |
foreach my $id (keys %responses) { |
foreach my $id (keys %responses) { |
$result.='<br />'.$id.' - '.$responses{$id}; |
$result.='<br />'.$id.' - '.$responses{$id}; |
} |
} |
return $result.&show_grading_menu_form($symb); |
return $result.&show_grading_menu_form($symb); |
} |
} |
Line 6332 sub iclicker_eval {
|
Line 6332 sub iclicker_eval {
|
my $number=0; |
my $number=0; |
my $errormsg=''; |
my $errormsg=''; |
foreach my $line (split(/[\n\r]/,$env{'form.upfile'})) { |
foreach my $line (split(/[\n\r]/,$env{'form.upfile'})) { |
chomp($line); |
chomp($line); |
foreach my $quoted ($line=~/\,\s*\"([^\"]*)\"\s*\,/g) { |
foreach my $quoted ($line=~/\,\s*\"([^\"]*)\"\s*\,/g) { |
my $replace=$quoted; |
my $replace=$quoted; |
$replace=~s/\,//g; |
$replace=~s/\,//g; |
&Apache::lonnet::logthis($quoted.' - '.$replace.'<br />'); |
&Apache::lonnet::logthis($quoted.' - '.$replace.'<br />'); |
$line=~s/\,\s*\"\Q$quoted\E\"\s*\,/,$replace,/gs; |
$line=~s/\,\s*\"\Q$quoted\E\"\s*\,/,$replace,/gs; |
} |
} |
my @entries=split(/\,/,$line); |
my @entries=split(/\,/,$line); |
if ($entries[0] eq 'Question') { |
if ($entries[0] eq 'Question') { |
for (my $i=3;$i<$#entries;$i+=6) { |
for (my $i=3;$i<$#entries;$i+=6) { |
$$questiontitles[$number]=$entries[$i]; |
$$questiontitles[$number]=$entries[$i]; |
$number++; |
$number++; |
} |
} |
} |
} |
if ($entries[0]=~/^\#/) { |
if ($entries[0]=~/^\#/) { |
my $id=$entries[0]; |
my $id=$entries[0]; |
my @idresponses=(); |
my @idresponses; |
$id=~s/^[\#0]+//; |
$id=~s/^[\#0]+//; |
for (my $i=0;$i<$number;$i++) { |
for (my $i=0;$i<$number;$i++) { |
my $idx=3+$i*6; |
my $idx=3+$i*6; |
push(@idresponses,$entries[$idx]); |
push(@idresponses,$entries[$idx]); |
} |
} |
$$responses{$id}=join(',',@idresponses); |
$$responses{$id}=join(',',@idresponses); |
} |
} |
} |
} |
return ($errormsg,$number); |
return ($errormsg,$number); |
} |
} |