--- loncom/interface/lonuserutils.pm 2016/11/09 00:32:45 1.178
+++ loncom/interface/lonuserutils.pm 2017/01/28 03:48:44 1.182
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Utility functions for managing LON-CAPA user accounts
#
-# $Id: lonuserutils.pm,v 1.178 2016/11/09 00:32:45 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.182 2017/01/28 03:48:44 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2307,7 +2307,7 @@ sub courses_selector {
my $allidlist = $idlist{$codetitles[0]};
$jscript .= &Apache::courseclassifier::courseset_js_start($formname,$longtitles_str,$allidlist);
$jscript .= $scripttext;
- $jscript .= &Apache::courseclassifier::javascript_code_selections($formname,@codetitles);
+ $jscript .= &Apache::courseclassifier::javascript_code_selections($formname,\@codetitles);
}
}
my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($cdom);
@@ -2572,9 +2572,13 @@ function username_display_launch(usernam
}
}
}
- if (target == 'modify') {
+ if ((target == 'modify') || (target == 'activity')) {
+ var nextaction = 'singleuser';
+ if (target == 'activity') {
+ nextaction = 'accesslogs';
+ }
if (document.$formname.userwin.checked == true) {
- var url = '/adm/createuser?srchterm='+username+'&srchdomain='+domain+'&phase=get_user_info&action=singleuser&srchin=dom&srchby=uname&srchtype=exact&popup=1';
+ var url = '/adm/createuser?srchterm='+username+'&srchdomain='+domain+'&phase=get_user_info&srchin=dom&srchby=uname&srchtype=exact&popup=1&action='+nextaction;
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no';
modifywin = window.open(url,'',options,1);
modifywin.focus();
@@ -2583,7 +2587,7 @@ function username_display_launch(usernam
document.$formname.srchterm.value=username;
document.$formname.srchdomain.value=domain;
document.$formname.phase.value='get_user_info';
- document.$formname.action.value = 'singleuser';
+ document.$formname.action.value = nextaction;
document.$formname.submit();
}
}
@@ -2629,6 +2633,7 @@ END
'owin' => "Open in a new window",
'modify' => "Modify a user's information",
'track' => "View a user's recent activity",
+ 'activity' => "View a user's access log",
);
my %lt = (%coltxt,%acttxt);
my $rolefilter = $env{'form.showrole'};
@@ -2719,12 +2724,17 @@ END
if ($permission->{'cusr'}) {
unshift (@linkdests,'modify');
}
- if (&Apache::lonnet::allowed('vsa', $env{'request.course.id'}) ||
- &Apache::lonnet::allowed('vsa', $env{'request.course.id'}.'/'.
- $env{'request.course.sec'})) {
- push(@linkdests,'track');
+ if ($context eq 'course') {
+ if (&Apache::lonnet::allowed('vsa', $env{'request.course.id'}) ||
+ &Apache::lonnet::allowed('vsa', $env{'request.course.id'}.'/'.
+ $env{'request.course.sec'})) {
+ push(@linkdests,'track');
+ }
+ } elsif ($context eq 'domain') {
+ if (&Apache::lonnet::allowed('vac',$env{'request.role.domain'})) {
+ push(@linkdests,'activity');
+ }
}
-
$output .= '
';
my $usernamelink = $env{'form.usernamelink'};
if ($usernamelink eq '') {
@@ -5823,7 +5833,7 @@ sub roles_by_context {
} elsif ($context eq 'author') {
@allroles = ('ca','aa');
} elsif ($context eq 'domain') {
- @allroles = ('li','ad','dg','dh','sc','au','dc');
+ @allroles = ('li','ad','dg','dh','da','sc','au','dc');
}
return @allroles;
}
@@ -5881,6 +5891,17 @@ sub get_permission {
}
}
}
+ if ($env{'request.course.id'}) {
+ my $user = $env{'user.name'}.':'.$env{'user.domain'};
+ if (($user ne '') && ($env{'course.'.$env{'request.course.id'}.'.internal.courseowner'} eq
+ $user)) {
+ $permission{'owner'} = 1;
+ } elsif (($user ne '') && ($env{'course.'.$env{'request.course.id'}.'.internal.co-owners'} ne '')) {
+ if (grep(/^\Q$user\E$/,split(/,/,$env{'course.'.$env{'request.course.id'}.'.internal.co-owners'}))) {
+ $permission{'co-owner'} = 1;
+ }
+ }
+ }
} elsif ($context eq 'author') {
$permission{'cusr'} = &authorpriv($env{'user.name'},$env{'request.role.domain'});
$permission{'view'} = $permission{'cusr'};
@@ -5906,6 +5927,9 @@ sub get_permission {
if (&Apache::lonnet::allowed('vur',$env{'request.role.domain'})) {
$permission{'view'} = 1;
}
+ if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
+ $permission{'owner'} = 1;
+ }
}
my $allowed = 0;
foreach my $perm (values(%permission)) {
@@ -6401,7 +6425,7 @@ END
}
sub custom_role_table {
- my ($crstype,$full,$levels,$levelscurrent,$prefix) = @_;
+ my ($crstype,$full,$levels,$levelscurrent,$prefix,$add_class,$id) = @_;
return unless ((ref($full) eq 'HASH') && (ref($levels) eq 'HASH') &&
(ref($levelscurrent) eq 'HASH'));
my %lt=&Apache::lonlocal::texthash (
@@ -6415,7 +6439,7 @@ sub custom_role_table {
system => '_s',
);
- my $output=&Apache::loncommon::start_data_table().
+ my $output=&Apache::loncommon::start_data_table($add_class,$id).
&Apache::loncommon::start_data_table_header_row().
' | '.$lt{'prv'}.' | '.$lt{'crl'}.' | '.$lt{'dml'}.
' | '.$lt{'ssl'}.' | '.
@@ -6672,5 +6696,116 @@ sub custom_role_update {
return %privs;
}
+sub adhoc_status_types {
+ my ($cdom,$context,$role,$selectedref,$othertitle,$usertypes,$types,$disabled) = @_;
+ my $output = &Apache::loncommon::start_data_table();
+ my $numinrow = 3;
+ my $rem;
+ if (ref($types) eq 'ARRAY') {
+ for (my $i=0; $i<@{$types}; $i++) {
+ if (defined($usertypes->{$types->[$i]})) {
+ my $rem = $i%($numinrow);
+ if ($rem == 0) {
+ if ($i > 0) {
+ $output .= &Apache::loncommon::end_data_table_row();
+ }
+ $output .= &Apache::loncommon::start_data_table_row();
+ }
+ my $check;
+ if (ref($selectedref) eq 'ARRAY') {
+ if (grep(/^\Q$types->[$i]\E$/,@{$selectedref})) {
+ $check = ' checked="checked"';
+ }
+ }
+ $output .= ''.
+ ' | ';
+ }
+ }
+ $rem = @{$types}%($numinrow);
+ }
+ my $colsleft = $numinrow - $rem;
+ if (($rem == 0) && (@{$types} > 0)) {
+ $output .= &Apache::loncommon::start_data_table_row();
+ }
+ if ($colsleft > 1) {
+ $output .= '';
+ } else {
+ $output .= ' | ';
+ }
+ my $defcheck;
+ if (ref($selectedref) eq 'ARRAY') {
+ if (grep(/^default$/,@{$selectedref})) {
+ $defcheck = ' checked="checked"';
+ }
+ }
+ $output .= ' | '.
+ &Apache::loncommon::end_data_table_row().
+ &Apache::loncommon::end_data_table();
+ return $output;
+}
+
+sub adhoc_staff {
+ my ($access,$context,$role,$selectedref,$adhocref,$disabled) = @_;
+ my $output;
+ if (ref($adhocref) eq 'HASH') {
+ my %by_fullname;
+ my $numinrow = 4;
+ my $rem;
+ my @personnel = keys(%{$adhocref});
+ if (@personnel) {
+ foreach my $person (@personnel) {
+ my ($uname,$udom) = split(/:/,$person);
+ my $fullname = &Apache::loncommon::plainname($uname,$udom,'lastname');
+ $by_fullname{$fullname} = $person;
+ }
+ my @sorted = sort(keys(%by_fullname));
+ my $count = scalar(@sorted);
+ $output = &Apache::loncommon::start_data_table();
+ for (my $i=0; $i<$count; $i++) {
+ my $rem = $i%($numinrow);
+ if ($rem == 0) {
+ if ($i > 0) {
+ $output .= &Apache::loncommon::end_data_table_row();
+ }
+ $output .= &Apache::loncommon::start_data_table_row();
+ }
+ my $check;
+ my $user = $by_fullname{$sorted[$i]};
+ if (ref($selectedref) eq 'ARRAY') {
+ if (grep(/^\Q$user\E$/,@{$selectedref})) {
+ $check = ' checked="checked"';
+ }
+ }
+ if ($i == $count-1) {
+ my $colsleft = $numinrow - $rem;
+ if ($colsleft > 1) {
+ $output .= '';
+ } else {
+ $output .= ' | ';
+ }
+ } else {
+ $output .= ' | ';
+ }
+ $output .= ' | ';
+ if ($i == $count-1) {
+ $output .= &Apache::loncommon::end_data_table_row();
+ }
+ }
+ $output .= &Apache::loncommon::end_data_table();
+ }
+ }
+ return $output;
+}
+
+
1;