[LON-CAPA-cvs] cvs: loncom /homework grades.pm /interface courseprefs.pm loncommon.pm lonparmset.pm lonpickstudent.pm
raeburn
raeburn at source.lon-capa.org
Wed Feb 12 11:25:57 EST 2020
raeburn Wed Feb 12 16:25:57 2020 EDT
Modified files:
/loncom/interface lonparmset.pm lonpickstudent.pm loncommon.pm
courseprefs.pm
/loncom/homework grades.pm
Log:
- Parameter setting via table mode for users with both student and non-student
roles.
- Pop-up launched via "Select User" link shows appropriate table(s) of users.
-------------- next part --------------
Index: loncom/interface/lonparmset.pm
diff -u loncom/interface/lonparmset.pm:1.595 loncom/interface/lonparmset.pm:1.596
--- loncom/interface/lonparmset.pm:1.595 Mon Feb 10 19:48:56 2020
+++ loncom/interface/lonparmset.pm Wed Feb 12 16:25:47 2020
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.595 2020/02/10 19:48:56 raeburn Exp $
+# $Id: lonparmset.pm,v 1.596 2020/02/12 16:25:47 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2420,9 +2420,37 @@
sub usermenu {
my ($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,$usersgroups,$pssymb)=@_;
my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '.
- &Apache::loncommon::selectstudent_link('parmform','uname','udom');
- my $selscript=&Apache::loncommon::studentbrowser_javascript();
+ &Apache::loncommon::selectstudent_link('parmform','uname','udom','condition').
+ &Apache::lonhtmlcommon::scripttag(<<ENDJS);
+function setCourseadv(form,caller) {
+ if (caller.value == 'st') {
+ form.courseadv.value = 'none';
+ } else {
+ form.courseadv.value = '';
+ }
+ return;
+}
+ENDJS
+ my (%chkroles,$stuonly,$courseadv);
+ if ($env{'form.userroles'} eq 'any') {
+ $chkroles{'any'} = ' checked="checked"';
+ } else {
+ $chkroles{'st'} = ' checked="checked"';
+ $courseadv = 'none';
+ }
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
+ if ($crstype eq 'Community') {
+ $stuonly = &mt('member only');
+ } else {
+ $stuonly = &mt('student only');
+ }
+ $chooseopt .= '<br /><span class="LC_cusr_subheading">'.
+ &mt("User's role").': '.
+ '<label><input type="radio" name="userroles" value="st"'.$chkroles{'st'}.' onclick="setCourseadv(this.form,this);" />'.
+ $stuonly.'</label> '.
+ '<label><input type="radio" name="userroles" value="any"'.$chkroles{'any'}.' onclick="setCourseadv(this.form,this);" />'.
+ &mt('any role').'</label><input type="hidden" id="courseadv" name="courseadv" value="'.$courseadv.'" /></span>';
my $sections='';
my %sectionhash = &Apache::loncommon::get_sections();
@@ -3064,21 +3092,101 @@
$csec=&Apache::lonnet::getsection($udom,$uname,
$env{'request.course.id'});
if ($csec eq '-1') {
- $message=
- '<p class="LC_warning">'.
- &mt('User [_1] at domain [_2] not in this course',
- "'".$uname."'","'".$udom."'").
- '</p>';
- $uname='';
- if ($env{'request.course.sec'} ne '') {
- $csec=$env{'request.course.sec'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
+ if ($env{'form.userroles'} eq 'any') {
+ if (($env{'user.name'} eq $uname) && ($env{'user.domain'} eq $udom)) {
+ $csec = $env{'request.course.sec'};
+ $message = '<span class="LC_info">';
+ if ($crstype eq 'Community') {
+ $message .= &mt('User [_1] at domain [_2] has a non-member role in this community',
+ $uname,$udom);
+ } else {
+ $message .= &mt('User [_1] at domain [_2] has a non-student role in this course',
+ $uname,$udom);
+ }
+ $message .= '</span>';
+ } else {
+ my @possroles = ('in','ep','ta','cr');
+ if ($crstype eq 'Community') {
+ unshift(@possroles,'co');
+ } else {
+ unshift(@possroles,'cc');
+ }
+ my %not_student_roles =
+ &Apache::lonnet::get_my_roles($uname,$udom,'userroles',['active'],
+ \@possroles,[$udom],1,1);
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my %sections_by_role;
+ foreach my $role (keys(%not_student_roles)) {
+ if ($role =~ /^\Q$cnum:$cdom:\E([^:]+):(|[^:]+)$/) {
+ my ($rolename,$sec) = ($1,$2);
+ if ($rolename =~ m{^cr/}) {
+ $rolename = 'cr';
+ }
+ push(@{$sections_by_role{$rolename}},$sec);
+ }
+ }
+ my $numroles = scalar(keys(%sections_by_role));
+ if ($numroles) {
+ foreach my $role (@possroles) {
+ if (ref($sections_by_role{$role}) eq 'ARRAY') {
+ my @secs = sort { $a <=> $b } @{$sections_by_role{$role}};
+ $csec = $secs[0];
+ last;
+ }
+ }
+ }
+ if ($csec eq '-1') {
+ $message = '<span class="LC_warning">';
+ if ($crstype eq 'Community') {
+ $message .= &mt('User [_1] at domain [_2] does not have a role in this community',
+ $uname,$udom);
+ } else {
+ $message .= &mt('User [_1] at domain [_2] does not have a role in this course',
+ $uname,$udom);
+ }
+ $message .= '</span>';
+ $uname='';
+ if ($env{'request.course.sec'} ne '') {
+ $csec=$env{'request.course.sec'};
+ } else {
+ $csec=$env{'form.csec'};
+ }
+ $cgroup=$env{'form.cgroup'};
+ } else {
+ $message = '<span class="LC_info">';
+ if ($crstype eq 'Community') {
+ $message .= &mt('User [_1] at domain [_2] has a non-member role in this community',
+ $uname,$udom);
+ } else {
+ $message .= &mt('User [_1] at domain [_2] has a non-student role in this course',
+ $uname,$udom);
+ }
+ $message .= '</span>';
+ }
+ }
} else {
- $csec=$env{'form.csec'};
+ $message = '<span class="LC_warning">';
+ if ($crstype eq 'Community') {
+ $message .= &mt('User [_1] at domain [_2] does not have a member role in this community',
+ $uname,$udom);
+ } else {
+ $message .= &mt('User [_1] at domain [_2] does not have a student role in this course',
+ $uname,$udom);
+ }
+ $message .= '</span>';
+ $uname='';
+ if ($env{'request.course.sec'} ne '') {
+ $csec=$env{'request.course.sec'};
+ } else {
+ $csec=$env{'form.csec'};
+ }
+ $cgroup=$env{'form.cgroup'};
}
- $cgroup=$env{'form.cgroup'};
} elsif ($env{'request.course.sec'} ne '') {
if ($csec ne $env{'request.course.sec'}) {
- $message='<span class="LC_error">'.
+ $message='<span class="LC_warning">'.
&mt("User '[_1]' at domain '[_2]' not in section '[_3]'",
$uname,$udom,$env{'request.course.sec'}).
'</span>';
@@ -3086,19 +3194,22 @@
$csec=$env{'request.course.sec'};
}
$cgroup=$env{'form.cgroup'};
- } else {
+ }
+ if ($uname ne '') {
my %name=&Apache::lonnet::userenvironment($udom,$uname,
('firstname','middlename','lastname','generation','id'));
- $message="\n<p>\n".&mt("Full Name").": ".
- $name{'firstname'}.' '.$name{'middlename'}.' '
- .$name{'lastname'}.' '.$name{'generation'}.
- "<br />\n".&mt('Student/Employee ID').": ".$name{'id'}.'<p>';
- }
- @usersgroups = &Apache::lonnet::get_users_groups(
- $udom,$uname,$env{'request.course.id'});
- if (@usersgroups > 0) {
- unless (grep(/^\Q$cgroup\E$/, at usersgroups)) {
- $cgroup = $usersgroups[0];
+ $message .= "\n<p>\n".&mt('Full Name').': '
+ .$name{'firstname'}.' '.$name{'middlename'}.' '
+ .$name{'lastname'}.' '.$name{'generation'}
+ ."<br />\n".&mt('Student/Employee ID').': '.$name{'id'}.'</p>';
+ @usersgroups = &Apache::lonnet::get_users_groups(
+ $udom,$uname,$env{'request.course.id'});
+ if (@usersgroups > 0) {
+ unless (grep(/^\Q$cgroup\E$/, at usersgroups)) {
+ $cgroup = $usersgroups[0];
+ }
+ } else {
+ $cgroup = '';
}
}
}
Index: loncom/interface/lonpickstudent.pm
diff -u loncom/interface/lonpickstudent.pm:1.32 loncom/interface/lonpickstudent.pm:1.33
--- loncom/interface/lonpickstudent.pm:1.32 Mon Jul 15 16:13:22 2013
+++ loncom/interface/lonpickstudent.pm Wed Feb 12 16:25:47 2020
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Pick a student from the classlist
#
-# $Id: lonpickstudent.pm,v 1.32 2013/07/15 16:13:22 bisitz Exp $
+# $Id: lonpickstudent.pm,v 1.33 2020/02/12 16:25:47 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -50,18 +50,20 @@
&Apache::loncommon::get_unprocessed_cgi
($ENV{'QUERY_STRING'},['filter','form','unameelement','udomelement',
- 'roles','courseadvonly','clicker']);
+ 'roles','courseadv','clicker']);
# Allowed?
my $allowed;
- my $scope = $env{'request.course.id'};
- if (!($allowed = &Apache::lonnet::allowed('srm',$scope))) {
- $scope .= '/'.$env{'request.course.sec'};
- $allowed = &Apache::lonnet::allowed('srm',$scope);
- if ($allowed) { $allowed = 'section'; }
+ if ($env{'request.course.id'}) {
+ if (!($allowed = &Apache::lonnet::allowed('srm',$env{'request.course.id'}))) {
+ if ($env{'request.course.sec'}) {
+ $allowed = &Apache::lonnet::allowed('srm',
+ "$env{'request.course.id'}/$env{'request.course.sec'}");
+ if ($allowed) { $allowed = 'section'; }
+ }
+ }
}
- unless (($env{'form.roles'}) ||
- (($env{'request.course.id'}) && ($allowed))) {
+ unless (($env{'form.roles'}) || ($allowed)) {
$r->print(&mt('No context.').
&Apache::loncommon::end_page());
return OK;
@@ -77,16 +79,23 @@
<input type="text" name="filter" value="$encoded_filter" />
<input type="submit" name="Change" value="$change" />
FILTER
- foreach my $name ('form','unameelement','udomelement','roles') {
+ foreach my $name ('form','unameelement','udomelement','roles','courseadv','clicker') {
my $value = &HTML::Entities::encode($env{"form.$name"},'<>&"');
$filterbutton .= <<HIDDEN;
<input type="hidden" name="$name" value="$value" />
HIDDEN
}
- unless ($env{'form.courseadvonly'}) {
- $filtermsg = '<br />'.
- &mt('Showing users with a name starting with [_1]',
- $filterbutton).'<br />';
+ unless ($env{'form.courseadv'} eq 'only') {
+ if ($env{'request.course.id'}) {
+ my $crstype = &Apache::loncommon::course_type();
+ my $showrole = &Apache::lonnet::plaintext('st',$crstype);
+ $filtermsg = &mt("Showing users with role of '[_1]' with name starting: [_2]",
+ $showrole,$filterbutton);
+ } else {
+ $filtermsg =
+ &mt('Showing users with a name starting with [_1]',
+ $filterbutton);
+ }
}
if ($filter eq '') {
$filter = '.'
@@ -110,32 +119,34 @@
$r->print('<form action="">');
if ($allowed && (!$env{'form.roles'})) {
+ unless ($env{'form.courseadv'} eq 'none') {
# -------------------------------------------------------- Get course personnel
- $r->print('<h3>'.$env{'course.'.$env{'request.course.id'}.'.description'}.
- '</h3>');
- my %coursepersonnel=
- &Apache::lonnet::get_course_adv_roles();
- $r->print(&Apache::loncommon::start_data_table());
- foreach my $role (sort(keys(%coursepersonnel))) {
- foreach my $user (split(/\,/,$coursepersonnel{$role})) {
- my ($puname,$pudom)=split(/\:/,$user);
- $r->print(&Apache::loncommon::start_data_table_row().
- '<td>'.
- '<input type="button" value="'.&mt('Select').'" onclick="gochoose('.
- "'".$puname."','".$pudom."')".'" /></td><td>'.$role.'</td><td>'.
- &Apache::loncommon::aboutmewrapper(&Apache::loncommon::plainname($puname,$pudom),$puname,$pudom).'</td>'.
- &Apache::loncommon::end_data_table_row());
- }
- }
- $r->print(&Apache::loncommon::end_data_table().'<p> ');
-
- $r->print($filtermsg);
+ $r->print('<h3>'.$env{'course.'.$env{'request.course.id'}.'.description'}.
+ '</h3>');
+ my %coursepersonnel=
+ &Apache::lonnet::get_course_adv_roles();
+ $r->print(&Apache::loncommon::start_data_table());
+ foreach my $role (sort(keys(%coursepersonnel))) {
+ foreach my $user (split(/\,/,$coursepersonnel{$role})) {
+ my ($puname,$pudom)=split(/\:/,$user);
+ $r->print(&Apache::loncommon::start_data_table_row().
+ '<td>'.
+ '<input type="button" value="'.&mt('Select').'" onclick="gochoose('.
+ "'".$puname."','".$pudom."')".'" /></td><td>'.$role.'</td><td>'.
+ &Apache::loncommon::aboutmewrapper(&Apache::loncommon::plainname($puname,$pudom),$puname,$pudom).'</td>'.
+ &Apache::loncommon::end_data_table_row());
+ }
+ }
+ $r->print(&Apache::loncommon::end_data_table().'<br /><hr />');
+ }
- $r->print('</p>');
+ if ($filtermsg ne '') {
+ $r->print('<p>'.$filtermsg.'</p>');
+ }
$r->rflush();
- unless ($env{'form.courseadvonly'}) {
+ unless ($env{'form.courseadv'} eq 'only') {
# ------------------------------------------------------------------ Students
@@ -276,7 +287,7 @@
}
$r->print('</form>'.&Apache::loncommon::end_page());
return OK;
-}
+}
1;
__END__
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.1336 loncom/interface/loncommon.pm:1.1337
--- loncom/interface/loncommon.pm:1.1336 Wed Feb 5 21:48:05 2020
+++ loncom/interface/loncommon.pm Wed Feb 12 16:25:48 2020
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.1336 2020/02/05 21:48:05 raeburn Exp $
+# $Id: loncommon.pm,v 1.1337 2020/02/12 16:25:48 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -436,7 +436,7 @@
<script type="text/javascript" language="Javascript">
// <![CDATA[
var stdeditbrowser;
- function openstdbrowser(formname,uname,udom,clicker,roleflag,ignorefilter,courseadvonly) {
+ function openstdbrowser(formname,uname,udom,clicker,roleflag,ignorefilter,courseadv) {
var url = '/adm/pickstudent?';
var filter;
if (!ignorefilter) {
@@ -451,7 +451,12 @@
'&udomelement='+udom+
'&clicker='+clicker;
if (roleflag) { url+="&roles=1"; }
- if (courseadvonly) { url+="&courseadvonly=1"; }
+ if (courseadv == 'condition') {
+ if (document.getElementById('courseadv')) {
+ courseadv = document.getElementById('courseadv').value;
+ }
+ }
+ if ((courseadv == 'only') || (courseadv == 'none')) { url+="&courseadv="+courseadv; }
var title = 'Student_Browser';
var options = 'scrollbars=1,resizable=1,menubar=0';
options += ',width=700,height=600';
@@ -483,7 +488,7 @@
}
sub selectstudent_link {
- my ($form,$unameele,$udomele,$courseadvonly,$clickerid)=@_;
+ my ($form,$unameele,$udomele,$courseadv,$clickerid)=@_;
my $callargs = "'".&Apache::lonhtmlcommon::entity_encode($form)."','".
&Apache::lonhtmlcommon::entity_encode($unameele)."','".
&Apache::lonhtmlcommon::entity_encode($udomele)."'";
@@ -494,8 +499,12 @@
return '';
}
$callargs.=",'".&Apache::lonhtmlcommon::entity_encode($clickerid)."'";
- if ($courseadvonly) {
- $callargs .= ",'',1,1";
+ if ($courseadv eq 'only') {
+ $callargs .= ",'',1,'$courseadv'";
+ } elsif ($courseadv eq 'none') {
+ $callargs .= ",'','','$courseadv'";
+ } elsif ($courseadv eq 'condition') {
+ $callargs .= ",'','','$courseadv'";
}
return '<span class="LC_nobreak">'.
'<a href="javascript:openstdbrowser('.$callargs.');">'.
Index: loncom/interface/courseprefs.pm
diff -u loncom/interface/courseprefs.pm:1.88 loncom/interface/courseprefs.pm:1.89
--- loncom/interface/courseprefs.pm:1.88 Sat Sep 1 22:28:55 2018
+++ loncom/interface/courseprefs.pm Wed Feb 12 16:25:48 2020
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set configuration settings for a course
#
-# $Id: courseprefs.pm,v 1.88 2018/09/01 22:28:55 raeburn Exp $
+# $Id: courseprefs.pm,v 1.89 2020/02/12 16:25:48 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -3759,7 +3759,7 @@
my $domform = &Apache::loncommon::select_dom_form($cdom,$item.'_udom_'.$num,$includeempty);
my $selectlink =
&Apache::loncommon::selectstudent_link('display',$item.'_uname_'.$num,
- $item.'_udom_'.$num,1);
+ $item.'_udom_'.$num,'only');
my $output =
'<table><tr><td align="center">'.&mt('Username').'<br />'.
'<input type="text" name="'.$item.'_uname_'.$num.'" value="" /></td>'.
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.761 loncom/homework/grades.pm:1.762
--- loncom/homework/grades.pm:1.761 Wed Mar 6 15:45:29 2019
+++ loncom/homework/grades.pm Wed Feb 12 16:25:56 2020
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.761 2019/03/06 15:45:29 raeburn Exp $
+# $Id: grades.pm,v 1.762 2020/02/12 16:25:56 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -10400,7 +10400,7 @@
"\n".&mt("Username").": <input type='text' name='uname".$id."' /> ".
"\n".&mt("Domain").": ".
&Apache::loncommon::select_dom_form($env{'course.'.$env{'request.course.id'}.'.domain'},'udom'.$id).' '.
- &Apache::loncommon::selectstudent_link('clickeranalysis','uname'.$id,'udom'.$id,0,$id);
+ &Apache::loncommon::selectstudent_link('clickeranalysis','uname'.$id,'udom'.$id,'',$id);
$unknown_count++;
}
}
More information about the LON-CAPA-cvs
mailing list