--- loncom/homework/grades.pm 2007/06/25 22:23:27 1.399.2.2 +++ loncom/homework/grades.pm 2007/05/20 21:10:46 1.400 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.399.2.2 2007/06/25 22:23:27 albertel Exp $ +# $Id: grades.pm,v 1.400 2007/05/20 21:10:46 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -94,7 +94,6 @@ sub get_symb { return (); } } - &Apache::lonenc::check_decrypt(\$symb); return ($symb); } @@ -494,7 +493,7 @@ sub jscriptNform { ' }'."\n". ''."\n"; $jscript.= '
'."\n". - ''."\n". + ''."\n". ''."\n". ''."\n". ''."\n". @@ -744,7 +743,7 @@ LISTJAVASCRIPT '
'."\n". ''."\n". ''."\n". - ''."\n". + ''."\n". ''."\n"; if (exists($env{'form.gradingMenu'}) && exists($env{'form.Status'})) { @@ -1753,7 +1752,7 @@ sub submission { ''."\n". ''."\n". ''."\n". - ''."\n". + ''."\n". ''."\n". ''."\n". ''."\n". @@ -1960,8 +1959,8 @@ KEYWORDS ($env{'form.lastSub'} eq 'hdgrade' && $$handgrade{$$part[0].'_'.$$part[1]} eq 'yes')) { my $display_part=&get_display_part($partid,$symb); - $lastsubonly.='Part: '. - $display_part.' ( ID '.$respid. + $lastsubonly.='Debug -'.'Part: '. + $display_part.' ( hhhh ID '.$respid. ' )   '; my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record); if (@$files) { @@ -2170,10 +2169,18 @@ sub processHandGrade { } my $includemsg = $env{'form.includemsg'.$ctr}; my ($subject,$message,$msgstatus) = ('','',''); - my $restitle = &Apache::lonnet::gettitle($symb); - my ($feedurl,$showsymb) = - &get_feedurl_and_symb($symb,$uname,$udom); - my $messagetail; + my $restitle = &Apache::lonnet::gettitle($symb); + my $encrypturl=&Apache::lonnet::EXT('resource.0.encrypturl', + $symb,$udom,$uname); + my ($feedurl,$baseurl,$showsymb,$messagetail); + $feedurl = &Apache::lonnet::clutter($url); + if ($encrypturl =~ /^yes$/i) { + $baseurl = &Apache::lonenc::encrypted($feedurl,1); + $showsymb = &Apache::lonenc::encrypted($symb,1); + } else { + $baseurl = $feedurl; + $showsymb = $symb; + } if ($includemsg =~ /savemsg|newmsg\Q$ctr\E/) { $subject = $env{'form.msgsub'} if ($includemsg =~ /msgsub/); unless ($subject=~/\w/) { $subject=&mt('Grading Feedback'); } @@ -2186,12 +2193,12 @@ sub processHandGrade { if ($env{'form.withgrades'.$ctr}) { $message.="\n\nPoint".($pts > 1 ? 's':'').' awarded = '.$pts.' out of '.$wgt; $messagetail = " for $env{'form.probTitle'}"; + $baseurl."?symb=$showsymb\">$env{'form.probTitle'}"; } $msgstatus = &Apache::lonmsg::user_normal_msg($uname,$udom,$subject, $message.$messagetail, - undef,$feedurl,undef, + undef,$baseurl,undef, undef,undef,$showsymb, $restitle); $request->print('
'.&mt('Sending message to [_1]:[_2]',$uname,$udom).': '. @@ -2208,16 +2215,26 @@ sub processHandGrade { if ($errorflag eq 'not_allowed') { $request->print("".&mt('Not allowed to modify grades for [_1]',"$collaborator:$udom").""); next; - } elsif ($message ne '') { - my ($baseurl,$showsymb) = - &get_feedurl_and_symb($symb,$collaborator, - $udom); - if ($env{'form.withgrades'.$ctr}) { - $messagetail = " for $env{'form.probTitle'}"; + + } + $msgstatus = + &Apache::lonmsg::user_normal_msg($collaborator,$udom,$subject,$message.$messagetail,undef,$baseurl,undef,undef,undef,$showsymb,$restitle); } - $msgstatus = - &Apache::lonmsg::user_normal_msg($collaborator,$udom,$subject,$message.$messagetail,undef,$baseurl,undef,undef,undef,$showsymb,$restitle); } } } @@ -2571,31 +2588,28 @@ sub handback_files { $message .= "".&Apache::lonnet::gettitle($symb)."
"; $message .= ' The returned file(s) are named: '. $file_msg; $message .= " and can be found in your portfolio space."; - my ($feedurl,$showsymb) = - &get_feedurl_and_symb($symb,$domain,$stuname); + my $url = (&Apache::lonnet::decode_symb($symb))[2]; + my $feedurl = &Apache::lonnet::clutter($url); + my $encrypturl=&Apache::lonnet::EXT('resource.0.encrypturl', + $symb,$domain,$stuname); + my ($baseurl,$showsymb); + if ($encrypturl =~ /^yes$/i) { + $baseurl = &Apache::lonenc::encrypted($feedurl,1); + $showsymb = &Apache::lonenc::encrypted($symb,1); + } else { + $baseurl = $feedurl; + $showsymb = $symb; + } my $restitle = &Apache::lonnet::gettitle($symb); my $msgstatus = &Apache::lonmsg::user_normal_msg($stuname,$domain,$subject. ' (File Returned) ['.$restitle.']',$message,undef, - $feedurl,undef,undef,undef,$showsymb,$restitle); + $baseurl,undef,undef,undef,$showsymb,$restitle); } } return; } -sub get_feedurl_and_symb { - my ($symb,$uname,$udom) = @_; - my (undef,undef,$url) = &Apache::lonnet::decode_symb($symb); - $url = &Apache::lonnet::clutter($url); - my $encrypturl=&Apache::lonnet::EXT('resource.0.encrypturl', - $symb,$udom,$uname); - if ($encrypturl =~ /^yes$/i) { - &Apache::lonenc::encrypted(\$url,1); - &Apache::lonenc::encrypted(\$symb,1); - } - return ($url,$symb); -} - sub get_submitted_files { my ($udom,$uname,$partid,$respid,$record) = @_; my @files; @@ -2956,7 +2970,7 @@ sub viewgrades { #beginning of class grading form $result.= ''."\n". - ''."\n". + ''."\n". ''."\n". ''."\n". ''."\n". @@ -3458,7 +3472,6 @@ sub csvuploadmap_header { my ($result) = &showResourceInfo($symb,$env{'form.probTitle'}); my $checked=(($env{'form.noFirstLine'})?' checked="checked"':''); my $ignore=&mt('Ignore First Line'); - $symb = &Apache::lonenc::check_encrypt($symb); $request->print(<

Uploading Class Grades

@@ -3553,7 +3566,6 @@ sub upcsvScores_form { my $upload=&mt("Upload Scores"); my $upfile_select=&Apache::loncommon::upfile_select_html(); my $ignore=&mt('Ignore First Line'); - $symb = &Apache::lonenc::check_encrypt($symb); $result.=< @@ -3862,7 +3874,7 @@ LISTJAVASCRIPT $result.=''."\n". ''."\n". ''."\n". - ''."\n". + ''."\n". ''."
\n"; $result.=' '.&mt('Use CODE:').' '. @@ -3986,7 +3998,7 @@ sub displayPage { ''."\n". ''."\n". ''."\n". - ''."\n". + ''."\n". ''."\n". ''."\n"; @@ -4358,7 +4370,7 @@ sub updateGradeByPage { sub defaultFormData { my ($symb)=@_; return ' - '."\n". + '."\n". ''."\n". ''."\n"; } @@ -5927,7 +5939,7 @@ DOWNLOAD sub show_grading_menu_form { my ($symb)=@_; my $result.='
'."\n". - ''."\n". + ''."\n". ''."\n". ''."\n". ''."\n". @@ -6002,7 +6014,7 @@ GRADINGMENUJS my $saveStatus = ($$savedState{'saveStatus'} eq '' ? 'Active' : $$savedState{'saveStatus'}); $result.=''."\n". - ''."\n". + ''."\n". ''."\n". ''."\n". ''."\n". @@ -6066,6 +6078,11 @@ GRADINGMENUJS ''. ' '.&mt('scores from file').' '."\n"; +# $result.=''. +# ''. +# ' '.&mt('clicker file').' '."\n"; + + $result.=''. ' scantron forms'."\n"; @@ -6113,6 +6130,80 @@ sub init_perm { } } +sub gather_clicker_ids { + my %clickerids=(); + + my $classlist = &Apache::loncoursedata::get_classlist(); + + # Set up a couple variables. + my $usernameidx = &Apache::loncoursedata::CL_SNAME(); + my $domainidx = &Apache::loncoursedata::CL_SDOM(); + + foreach my $student (keys %$classlist) { + + my $username = $classlist->{$student}->[$usernameidx]; + my $domain = $classlist->{$student}->[$domainidx]; + my $clickers = + (&Apache::lonnet::userenvironment($domain,$username,'clickers'))[1]; + foreach my $id (split(/\,/,$clickers)) { + if (exists($clickerids{$id})) { + $clickerids{$id}.=','.$username.':'.$domain; + } else { + $clickerids{$id}=$username.':'.$domain; + } + } + } + return %clickerids; +} + +sub process_clicker { + my ($r)=@_; + my ($symb)=&get_symb($r); + if (!$symb) {return '';} + my $result=&checkforfile_js(); + $env{'form.probTitle'} = &Apache::lonnet::gettitle($symb); + my ($table) = &showResourceInfo($symb,$env{'form.probTitle'}); + $result.=$table; + $result.='
'."\n"; + $result.=''."\n"; + $result.='
'."\n"; + $result.=' '.&mt('Specify a file containing the clicker information for this resource'). + '.
'."\n"; + my $upload=&mt("Upload File"); + my $type=&mt("Type"); + my $selectform=&Apache::loncommon::select_form('iclicker','upfiletype', + ('iclicker' => 'iClicker')); + + $result.=< + + + + + +
+
+ +ENDUPFORM + $result.='
'."\n". + '


'."\n"; + $result.=&show_grading_menu_form($symb); + return $result; +} + +sub process_clicker_file { + my ($r)=@_; + my ($symb)=&get_symb($r); + if (!$symb) {return '';} + my ($result) = &showResourceInfo($symb,$env{'form.probTitle'}); + $result.=&show_grading_menu_form($symb); + my %clickerids=&gather_clicker_ids(); + foreach my $key (keys %clickerids) { + $result.='
'.$key.' - '.$clickerids{$key}; + } + return $result; +} + sub handler { my $request=$_[0]; @@ -6180,6 +6271,10 @@ sub handler { $request->print(&editgrades($request)); } elsif ($command eq 'verify' && $perm{'vgr'}) { $request->print(&verifyreceipt($request)); + } elsif ($command eq 'processclicker' && $perm{'mgr'}) { + $request->print(&process_clicker($request)); + } elsif ($command eq 'processclickerfile' && $perm{'mgr'}) { + $request->print(&process_clicker_file($request)); } elsif ($command eq 'csvform' && $perm{'mgr'}) { $request->print(&upcsvScores_form($request)); } elsif ($command eq 'csvupload' && $perm{'mgr'}) {