-
- Select | Username |
- Fullname | Domain |
- Grade Status |
+ yes
+ Submissions:
+ last sub only
+ last sub & parts info
+ all details
+
+
+
+
+
ENDTABLEST
if ($ENV{'form.url'}) {
$request->print(''."\n");
@@ -157,23 +184,38 @@ ENDTABLEST
}
$request->print(''."\n");
- my ($classlist) = &getclasslist($getsec,'0');
- foreach my $student ( sort(@{ $$classlist{$getsec} }) ) {
- my ($sname,$sdom) = split(/:/,$student);
- my ($type,$status) = &student_gradeStatus($ENV{'form.url'},$cdom,$sname);
- next if ($status eq 'nothing' && $submitonly eq 'yes');
+ my ($classlist,$seclist,$ids,$stusec,$fullname) = &getclasslist($getsec,'0');
+
+ $result='');
@@ -191,13 +233,13 @@ sub processGroup {
return;
}
foreach (@stuchecked) {
- my ($sname,$sdom,$fullname) = split(/:/);
- $ENV{'form.student'} = $sname;
+ my ($uname,$udom,$fullname) = split(/:/);
+ $ENV{'form.student'} = $uname;
$ENV{'form.fullname'} = $fullname;
&submission($request,$ctr,$total);
$ctr++;
}
- return 'The End';
+ return '';
}
sub userError {
@@ -226,28 +268,32 @@ sub finduser {
}
sub getclasslist {
- my ($getsec,$hideexpired) = @_;
- my ($coursedomain,$coursenum) = split(/_/,$ENV{'request.course.id'});
- my %classlist=&Apache::lonnet::dump('classlist',$coursedomain,$coursenum);
- my $now = time;
- my (@holdsec,@sections);
- foreach my $student (keys(%classlist)) {
- my ($end,$start)=split(/:/,$classlist{$student});
- # still a student?
- if (($hideexpired) && ($end) && ($end < $now)) {
- next;
- }
- my ($unam,$udom) = split(/:/,$student,2);
- my $section = &Apache::lonnet::usection($udom,$unam,$ENV{'request.course.id'});
- $section = ($section ne '-1' ? $section : 'no');
- push @holdsec,$section;
- push (@{ $classlist{$getsec} }, $student) if ($getsec eq 'all' || $getsec eq $section);
- }
- my %seen = ();
- foreach my $item (@holdsec) {
- push (@sections, $item) unless $seen{$item}++;
- }
- return (\%classlist,\@sections);
+ my ($getsec,$hideexpired) = @_;
+ my %classlist=&Apache::lonnet::dump('classlist',
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ my $now = time;
+ my (@holdsec,@sections,%allids,%stusec,%fullname);
+ foreach (keys(%classlist)) {
+ my ($end,$start,$id,$section,$fullname)=split(/:/,$classlist{$_});
+ # still a student?
+ if (($hideexpired) && ($end) && ($end < $now)) {
+ next;
+ }
+ $section = ($section ne '' ? $section : 'no');
+ push @holdsec,$section;
+ if ($getsec eq 'all' || $getsec eq $section) {
+ push (@{ $classlist{$getsec} }, $_);
+ $allids{$_}=$id;
+ $stusec{$_}=$section;
+ $fullname{$_}=$fullname;
+ }
+ }
+ my %seen = ();
+ foreach my $item (@holdsec) {
+ push (@sections, $item) unless $seen{$item}++;
+ }
+ return (\%classlist,\@sections,\%allids,\%stusec,\%fullname);
}
sub getpartlist {
@@ -264,14 +310,13 @@ sub getpartlist {
sub viewstudentgrade {
my ($url,$symb,$courseid,$student,@parts) = @_;
- my $result ='';
my $cellclr = '"#ffffdd"';
my ($username,$domain) = split(/:/,$student);
my $fullname = &get_fullname($username,$domain);
my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$username);
- $result.="$username | $fullname | $domain | \n";
+ my $result=" $username | $fullname | $domain | \n";
foreach my $part (@parts) {
my ($temp,$part,$type)=split(/_/,$part);
my $score=$record{"resource.$part.$type"};
@@ -282,14 +327,14 @@ sub viewstudentgrade {
my ($status,$foo)=split(/_/,$score,2);
$result.=" | \n";
}
}
- $result.=' | ';
+ $result.='';
return $result;
}
@@ -322,7 +367,7 @@ sub setstudentgrade {
if ($newscore eq 'incorrect') { $newscore = 'incorrect_by_override'; }
if ($newscore eq 'excused') { $newscore = 'excused'; }
if ($newscore eq 'ungraded') { $newscore = 'ungraded_attempted'; }
- if ($newscore eq 'partial') { $newscore = 'correct_partially_by_override'; }
+# if ($newscore eq 'partial') { $newscore = 'correct_partially_by_override'; }
} else {
#$result.="$stuname:$part:$type:unchanged $oldscore to $newscore: \n";
}
@@ -350,271 +395,6 @@ sub setstudentgrade {
sub submission {
my ($request,$counter,$total) = @_;
- if ($counter == 0) {
- $request->print(<
- function updateRadio(radioButton,formtextbox,formsel,wgt) {
- var pts = formtextbox.value;
- var resetbox =false;
- if (isNaN(pts) || pts < 0) {
- alert("A number equal or greater than 0 is expected. Entered value = "+pts);
- for (var i=0; i 0 && pts < wgt) {
- formsel[4].selected = true;
- }
- if (pts == wgt) {
- formsel[0].selected = true;
- }
- return;
- }
-
- function keywords(keyform) {
- var keywds = keyform.value;
- var nret = prompt("Keywords list, separated by a space. Add/delete to list if desired.",keywds);
- if (nret==null) return;
- keyform.value = nret;
- return;
- }
-
-//===================== Script to add keyword(s) ==================
- function getSel() {
- if (document.getSelection) txt = document.getSelection();
- else if (document.selection) txt = document.selection.createRange().text;
- else return;
- var cleantxt = txt.replace(new RegExp('([\\f\\n\\r\\t\\v ])+', 'g')," ");
- if (cleantxt=="") {
- alert("Select a word or group of words from document and then click this link.");
- return;
- }
- var nret = prompt("Add selection to keyword list?",cleantxt);
- if (nret==null) return;
- var curlist = document.SCORE.keywords.value;
- document.SCORE.keywords.value = curlist+" "+nret;
- return;
- }
-
-//====================== Script for composing message ==============
- function msgCenter(msgform,usrctr,fullname) {
- var Nmsg = msgform.savemsgN.value;
- savedMsgHeader(Nmsg,usrctr,fullname);
- var subject = msgform.msgsub.value;
- displaySubject(subject);
- for (var i=1; i<=Nmsg; i++) {
- var message = eval("document.SCORE.savemsg"+i+".value");
- displaySavedMsg(i,message);
- }
- newmsg = eval("document.SCORE.newmsg"+usrctr+".value");
- newMsg(newmsg);
- msgTail();
- return;
- }
-
-function savedMsgHeader(Nmsg,usrctr,fullname) {
- var height = 30*Nmsg+250;
- var scrollbar = "no";
- if (height > 600) {
- height = 600;
- scrollbar = "yes";
- }
- pWin = window.open('', 'MessageCenter', 'toolbar=no,location=no,scrollbars='+scrollbar+',width=600,height='+height);
- pWin.document.write("");
- pWin.document.write("Message Central");
-
- pWin.document.write("
-SUBJAVASCRIPT
-}
(my $url=$ENV{'form.url'})=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--;
if ($ENV{'form.student'} eq '') { &moreinfo($request,'Need student login id'); return ''; }
my ($uname,$udom) = &finduser($ENV{'form.student'});
@@ -623,89 +403,105 @@ SUBJAVASCRIPT
my $symb=($ENV{'form.symb'} ne '' ? $ENV{'form.symb'} : (&Apache::lonnet::symbread($url)));
if ($symb eq '') { $request->print("Unable to handle ambiguous references:$url:."); return ''; }
my $last = ($ENV{'form.lastSub'} eq 'last' ? 'last' : '');
-#
-# header info
+
+ # header info
if ($counter == 0) {
+ &sub_page_js($request);
$request->print(' Submission Record'.
' Resource: '.$url.'');
- }
-#
-# option to display problem, only once else it cause problems with the form later since the problem has a form.
- if ($ENV{'form.vProb'} eq 'yes' && $counter == 0) {
- my $rendered=&Apache::loncommon::get_student_view($symb,$uname,$udom,
- $ENV{'request.course.id'});
- my $companswer=&Apache::loncommon::get_student_answers($symb,$uname,$udom,
- $ENV{'request.course.id'});
- my $result.='';
- $result.='';
- $result.='Student\'s view of the problem | '.$rendered.' ';
- $result.='Correct answer: '.$companswer;
- $result.=' | ';
- $result.=' |
';
- $request->print($result);
- }
-#
-# beginning of form
- if ($counter == 0) {
- my %keyhash = &Apache::lonnet::get
- ('nohist_handgrade',[$symb.'_keywords'],
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ # option to display problem, only once else it cause problems with the form later
+ # since the problem has a form.
+ if ($ENV{'form.vProb'} eq 'yes') {
+ my $rendered=&Apache::loncommon::get_student_view($symb,$uname,$udom,
+ $ENV{'request.course.id'});
+ my $companswer=&Apache::loncommon::get_student_answers($symb,$uname,$udom,
+ $ENV{'request.course.id'});
+ my $result.='';
+ $result.='';
+ $result.='Student\'s view of the problem | '.$rendered.' ';
+ $result.='Correct answer: '.$companswer;
+ $result.=' | ';
+ $result.=' |
';
+ $request->print($result);
+ }
+ # kwclr is the only variable that is guaranteed to be non blank if this subroutine has been called once.
+ my %keyhash = ();
+ if ($ENV{'form.kwclr'} eq '') {
+ %keyhash = &Apache::lonnet::dump('nohist_handgrade',
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+
+ my $loginuser = $ENV{'user.name'}.':'.$ENV{'user.domain'};
+ $ENV{'form.keywords'} = $keyhash{$symb.'_keywords'} ne '' ? $keyhash{$symb.'_keywords'} : '';
+ $ENV{'form.kwclr'} = $keyhash{$loginuser.'_kwclr'} ne '' ? $keyhash{$loginuser.'_kwclr'} : 'red';
+ $ENV{'form.kwsize'} = $keyhash{$loginuser.'_kwsize'} ne '' ? $keyhash{$loginuser.'_kwsize'} : '0';
+ $ENV{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : '';
+ $ENV{'form.msgsub'} = $keyhash{$symb.'_subject'} ne '' ?
+ $keyhash{$symb.'_subject'} : &Apache::lonnet::metadata($url,'title');
+ $ENV{'form.savemsgN'} = $keyhash{$symb.'_savemsgN'} ne '' ? $keyhash{$symb.'_savemsgN'} : '0';
+
+ }
$request->print('
|