'."\n";
my ($string,$contents,$matches) = ('','',0);
my (undef,undef,$fullname) = &getclasslist('all','0');
@@ -306,7 +307,7 @@ sub listStudents {
$viewgrade.
' Submissions for a Student or a Group of Students'.
'
'.
- 'Resource: '.$url.'
'.$result;
+ 'Problem: '.&Apache::lonnet::metadata($url,'title').''.$result;
$request->print(<
@@ -455,91 +456,175 @@ sub sub_page_js {
my $request = shift;
$request->print(<
- function updateRadio(radioButton,formtextbox,formsel,scores,weight) {
- 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 weight) {
+ var resp = confirm("You entered a value ("+pts+
+ ") greater than the weight for the part. Accept?");
+ if (resp == false) {
+ gradeBox.value = "";
+ return;
+ }
}
- return;
- }
- if (pts > weight) {
- var resp = confirm("You entered a value ("+pts+
- ") greater than the weight for the part. Accept?");
- if (resp == false) {
- formtextbox.value = "";
- return;
- }
+ for (var i=0; i
+SUBJAVASCRIPT
+}
- }
- document.SCORE.submit();
- }
+#--- javascript for essay type problem --
+sub sub_page_kw_js {
+ my $request = shift;
+ $request->print(<
//===================== Show list of keywords ====================
function keywords(keyform) {
@@ -797,9 +882,65 @@ function displaySavedMsg(ctr,msg,shwsel)
SUBJAVASCRIPT
}
+#--- displays the grading box, used in essay type problem and grading by page/sequence
+sub gradeBox {
+ my ($request,$symb,$uname,$udom,$counter,$partid,$record) = @_;
+
+ my $checkIcon = '';
+
+ my $wgt = &Apache::lonnet::EXT('resource.'.$partid.'.weight',$symb,$udom,$uname);
+ my $wgtmsg = ($wgt > 0 ? '(problem weight)' :
+ 'problem weight assigned by computer');
+ $wgt = ($wgt > 0 ? $wgt : '1');
+ my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ?
+ '' : $$record{'resource.'.$partid.'.awarded'}*$wgt);
+ my $result=''."\n";
+
+ $result.='
'.
+ 'Part '.$partid.' Points:
'."\n";
+
+ my $ctr = 0;
+ $result.='
'."\n"; # display radio buttons in a nice table 10 across
+ while ($ctr<=$wgt) {
+ $result.= '
'."\n";
+ return $result;
+}
sub show_problem {
- my ($request,$symb,$uname,$udom,$removeform) = @_;
+ my ($request,$symb,$uname,$udom,$removeform,$viewon) = @_;
my $rendered=&Apache::loncommon::get_student_view($symb,$uname,$udom,
$ENV{'request.course.id'});
if ($removeform) {
@@ -815,13 +956,15 @@ sub show_problem {
$rendered=~s|name="submit"|name="would_have_been_submit"|g;
}
my $result.='
';
- $result.='
';
- $result.=' View of the problem - '.$ENV{'form.fullname'}.
- '
'.$rendered.' ';
+ $result.='
';
+ $result.='
View of the problem - '.$ENV{'form.fullname'}.
+ '
';
- $request->print($result);
+ return $result;
+# $request->print($result);
}
# --------------------------- show submissions of a student, option to grade
@@ -843,13 +986,15 @@ sub submission {
# header info
if ($counter == 0) {
&sub_page_js($request);
+ &sub_page_kw_js($request);
$request->print('
Submission Record
'."\n".
- ' Resource: '.$url.''."\n");
+ ' Problem: '.
+ &Apache::lonnet::metadata($url,'title').''."\n");
# 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' or !$ENV{'form.vProb'}) {
- &show_problem($request,$symb,$uname,$udom,0);
+ $request->print(&show_problem($request,$symb,$uname,$udom,0,1));
}
# kwclr is the only variable that is guaranteed to be non blank
@@ -913,8 +1058,8 @@ KEYWORDS
}
if ($ENV{'form.vProb'} eq 'all') {
- $request->print('
';
@@ -1230,6 +1331,10 @@ sub processHandGrade {
while ($ctr < $ngrade) {
my ($uname,$udom) = split(/:/,$ENV{'form.unamedom'.$ctr});
my ($errorflag) = &saveHandGrade($request,$url,$symb,$uname,$udom,$ctr);
+ if ($errorflag eq 'no_score') {
+ $ctr++;
+ next;
+ }
my $includemsg = $ENV{'form.includemsg'.$ctr};
my ($subject,$message,$msgstatus) = ('','','');
@@ -1393,6 +1498,7 @@ sub saveHandGrade {
my $pts = ($ENV{'form.GD_BOX'.$newflg.'_'.$_} ne '' ?
$ENV{'form.GD_BOX'.$newflg.'_'.$_} :
$ENV{'form.RADVAL'.$newflg.'_'.$_});
+ return 'no_score' if ($pts eq '' && $ENV{'form.GD_SEL'.$newflg.'_'.$_} eq '');
my $wgt = $ENV{'form.WGT'.$newflg.'_'.$_} eq '' ? 1 :
$ENV{'form.WGT'.$newflg.'_'.$_};
my $partial= $pts/$wgt;
@@ -1601,7 +1707,8 @@ sub viewgrades {
my ($symb,$url) = ($ENV{'form.symb'},$ENV{'form.url'});
my $result='
Manual Grading
';
- $result.='Resource: '.$ENV{'form.url'}.''."\n";
+ $result.='Problem: '.&Apache::lonnet::metadata($ENV{'form.url'},'title')
+ .''."\n";
#view individual student submission form - called using Javascript viewOneStudent
$result.=&jscriptNform($url,$symb);
@@ -1777,7 +1884,8 @@ sub editgrades {
my $symb=$ENV{'form.symb'};
my $url =$ENV{'form.url'};
my $title='
';
my ($partlist,$handgrade) = &response_type($url);
my ($resptype,$hdgrade)=('','no');
for (sort keys(%$handgrade)) {
@@ -2185,7 +2294,8 @@ sub gradingmenu {
if (!$symb) {return '';}
my $result='