[LON-CAPA-cvs] cvs: loncom /homework grades.pm /interface/statistics lonstathelpers.pm
raeburn
raeburn at source.lon-capa.org
Wed Aug 26 14:13:40 EDT 2020
raeburn Wed Aug 26 18:13:40 2020 EDT
Modified files:
/loncom/interface/statistics lonstathelpers.pm
/loncom/homework grades.pm
Log:
- Problem selector for "Content Grading" screen only needs a radiobutton
for each resource.
- Order of args passed to lonstathelper::problem_selector() changed.
smallbox, onclick args not passed by any callers of the routine --
added for lonquickgrades.pm rev. 1.75, but use discontinued in
rev. 1.84).
-------------- next part --------------
Index: loncom/interface/statistics/lonstathelpers.pm
diff -u loncom/interface/statistics/lonstathelpers.pm:1.75 loncom/interface/statistics/lonstathelpers.pm:1.76
--- loncom/interface/statistics/lonstathelpers.pm:1.75 Mon Dec 18 23:51:19 2017
+++ loncom/interface/statistics/lonstathelpers.pm Wed Aug 26 18:13:39 2020
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonstathelpers.pm,v 1.75 2017/12/18 23:51:19 raeburn Exp $
+# $Id: lonstathelpers.pm,v 1.76 2020/08/26 18:13:39 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -142,10 +142,12 @@
####################################################
####################################################
sub problem_selector {
- my ($AcceptedResponseTypes,$sequence_addendum,$symbmode,$all,$prefix,$smallbox,$onclick,
- $include_tools) = @_;
+ my ($AcceptedResponseTypes,$sequence_addendum,$symbmode,$all,$prefix,
+ $byres,$include_tools,$smallbox,$onclick) = @_;
# all: also make sequences selectable
# prefix: prefix for all form names
+# byres: radiobutton shown per resource
+# include_tools: external tools included
# smallbox: use smaller box
# onclick: javascript to execute when clicked
my $Str;
@@ -164,6 +166,29 @@
foreach my $seq (@sequences) {
my $seq_str = '';
foreach my $res (&get_resources($navmap,$seq,$include_tools)) {
+ my $title = $res->compTitle;
+ if (! defined($title) || $title eq '') {
+ ($title) = ($res->src =~ m:/([^/]*)$:);
+ }
+ my $totalresps = 0;
+ if ($byres) {
+ foreach my $part (@{$res->parts}) {
+ $totalresps += scalar($res->responseIds($part));
+ }
+ my $value = &HTML::Entities::encode($res->symb(),'<>&"');
+ my $checked;
+ if ($env{'form.problemchoice'} eq $res->symb()) {
+ $checked = ' checked="checked"';
+ }
+ $seq_str .= &Apache::loncommon::start_data_table_row().
+ '<td rowspan="'.$totalresps.'" style="vertical-align:middle">'.
+ '<label><input type="radio" name="symb" value="'.$value.'"'.$checked.' />'.
+ $title.'</label>';
+ my $link = $res->link.'?symb='.&escape($res->shown_symb);
+ $seq_str .= (' 'x2).
+ '<a target="preview" href="'.$link.'">'.&mt('view').'</a></td>';
+ }
+ my %partsseen;
foreach my $part (@{$res->parts}) {
my (@response_ids, at response_types);
if ($res->is_tool) {
@@ -177,52 +202,79 @@
my $respid = $response_ids[$i];
my $resptype = $response_types[$i];
if ($resptype =~ m/$AcceptedResponseTypes/) {
- my $value = &make_target_id({symb=>$res->symb,
- part=>$part,
- respid=>$respid,
- resptype=>$resptype});
- my $checked = '';
- if ($env{'form.problemchoice'} eq $value) {
- $checked = ' checked="checked"';
- }
- my $title = $res->compTitle;
- if (! defined($title) || $title eq '') {
- ($title) = ($res->src =~ m:/([^/]*)$:);
- }
- $seq_str .= &Apache::loncommon::start_data_table_row().
- ($symbmode?
- '<td><input type="radio" id="'.$prefix.$rb_count.'" name="'.$prefix.'symb" value="'.&HTML::Entities::encode($res->symb,'<>&"').'" '.$checked.' '.
- $jsadd.
- ' /></td>'
- :qq{<td><input type="radio" id="$rb_count" name="problemchoice" value="$value"$checked /></td>}).
- '<td><label for="'.$prefix.$rb_count.'">'.$resptype.'</label></td>'.
- '<td><label for="'.$prefix.$rb_count.'">'.$title.'</label>';
- if (scalar(@response_ids) > 1) {
- $seq_str .= &mt('response').' '.$respid;
+ if ($byres) {
+ unless (exists($partsseen{$part})) {
+ my $parttitle = $part;
+ if ($part eq '0') {
+ $parttitle = '';
+ }
+ if ($parttitle ne '') {
+ $parttitle = (' 'x2).&mt('part').': '.$parttitle;
+ }
+ if (keys(%partsseen)) {
+ $seq_str .= &Apache::loncommon::continue_data_table_row();
+ }
+ unless ($partsseen{$part}) {
+ $seq_str .= '<td rowspan="'.scalar(@response_ids).'" style="vertical-align:middle">'.
+ $parttitle.'</td>';
+ $partsseen{$part} = scalar(@response_ids);
+ }
+ }
+ $seq_str .= '<td>'.$resptype;
+ if (scalar(@response_ids) > 1) {
+ $seq_str .= ' '.&mt('id').': '.$respid;
+ }
+ $seq_str .= '</td>'. &Apache::loncommon::end_data_table_row()."\n";
+ } else {
+ my $value = &make_target_id({symb=>$res->symb,
+ part=>$part,
+ respid=>$respid,
+ resptype=>$resptype});
+ my $checked = '';
+ if ($env{'form.problemchoice'} eq $value) {
+ $checked = ' checked="checked"';
+ }
+ $seq_str .= &Apache::loncommon::start_data_table_row().
+ ($symbmode?
+ '<td><input type="radio" id="'.$prefix.$rb_count.'" name="'.$prefix.'symb" value="'.&HTML::Entities::encode($res->symb,'<>&"').'" '.$checked.' '.
+ $jsadd.
+ ' /></td>'
+ :qq{<td><input type="radio" id="$rb_count" name="problemchoice" value="$value"$checked /></td>}).
+ '<td><label for="'.$prefix.$rb_count.'">'.$resptype.'</label></td>'.
+ '<td><label for="'.$prefix.$rb_count.'">'.$title.'</label>';
+ if (scalar(@response_ids) > 1) {
+ $seq_str .= &mt('response').' '.$respid;
+ }
+ my $link = $res->link.'?symb='.&escape($res->shown_symb);
+ $seq_str .= (' 'x2).
+ '<a target="preview" href="'.$link.'">'.&mt('view').'</a>';
+ $seq_str .= "</td>". &Apache::loncommon::end_data_table_row()."\n";
+ $rb_count++;
}
- my $link = $res->link.'?symb='.&escape($res->shown_symb);
- $seq_str .= (' 'x2).
- '<a target="preview" href="'.$link.'">'.&mt('view').'</a>';
- $seq_str .= "</td>". &Apache::loncommon::end_data_table_row()."\n";
- $rb_count++;
}
}
}
}
if ($seq_str ne '') {
- $Str .= &Apache::loncommon::start_data_table_header_row().
- '<th colspan="3">'.
- ($all?'<input type="radio" id="'.$prefix.'s'.$rb_count.'" name="'.$prefix.'symb" value="'.&HTML::Entities::encode($seq->symb,'<>&').'" '.$jsadd.' />':'').
- $seq->compTitle.'</th>'.
- &Apache::loncommon::end_data_table_header_row()."\n".$seq_str;
- if (defined($sequence_addendum)) {
+ if ($byres) {
$Str .= &Apache::loncommon::start_data_table_header_row().
- ('<td> </td>'x2).
- '<td align="right">'.$sequence_addendum.'</td>'.
- &Apache::loncommon::end_data_table_header_row()."\n";
+ '<th colspan="3">'.$seq->compTitle.'</th>'.
+ &Apache::loncommon::end_data_table_header_row().
+ $seq_str;
+ } else {
+ $Str .= &Apache::loncommon::start_data_table_header_row().
+ '<th colspan="3">'.
+ ($all?'<input type="radio" id="'.$prefix.'s'.$rb_count.'" name="'.$prefix.'symb" value="'.&HTML::Entities::encode($seq->symb,'<>&').'" '.$jsadd.' />':'').
+ $seq->compTitle.'</th>'.
+ &Apache::loncommon::end_data_table_header_row()."\n".$seq_str;
+ if (defined($sequence_addendum)) {
+ $Str .= &Apache::loncommon::start_data_table_header_row().
+ ('<td> </td>'x2).
+ '<td align="right">'.$sequence_addendum.'</td>'.
+ &Apache::loncommon::end_data_table_header_row()."\n";
+ }
}
}
-
}
$Str .= &Apache::loncommon::end_data_table().&Apache::loncommon::end_scrollbox()."\n";
return $Str;
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.770 loncom/homework/grades.pm:1.771
--- loncom/homework/grades.pm:1.770 Wed May 20 22:02:57 2020
+++ loncom/homework/grades.pm Wed Aug 26 18:13:40 2020
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.770 2020/05/20 22:02:57 raeburn Exp $
+# $Id: grades.pm,v 1.771 2020/08/26 18:13:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -11145,7 +11145,7 @@
sub select_problem {
my ($r)=@_;
$r->print('<h3>'.&mt('Select the problem or one of the problems you want to grade').'</h3><form action="/adm/grades">');
- $r->print(&Apache::lonstathelpers::problem_selector('.',undef,1,undef,undef,undef,undef,1));
+ $r->print(&Apache::lonstathelpers::problem_selector('.',undef,1,undef,undef,1,1));
$r->print('<input type="hidden" name="command" value="gradingmenu" />');
$r->print('<input type="submit" value="'.&mt('Next').' →" /></form>');
}
More information about the LON-CAPA-cvs
mailing list