--- loncom/interface/lonuserutils.pm 2010/08/10 04:00:16 1.109.2.4 +++ loncom/interface/lonuserutils.pm 2010/08/04 16:50:29 1.121 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.109.2.4 2010/08/10 04:00:16 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.121 2010/08/04 16:50:29 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,7 +36,6 @@ use Apache::loncommon(); use Apache::lonhtmlcommon; use Apache::lonlocal; use Apache::longroup; -use Apache::lonnavmaps; use LONCAPA qw(:DEFAULT :match); ############################################################### @@ -1186,10 +1185,8 @@ sub default_role_selector { 'exs' => "Existing sections", 'new' => "New section", ); - $options = '
\n"); + $r->print( + "\n\n" + .'' + .&list_submit_button(&mt('Update Display')) + ."
\n" + ); } my ($indexhash,$keylist) = &make_keylist_array(); my (%userlist,%userinfo,$clearcoursepick); @@ -1471,9 +1472,11 @@ sub print_userlist { $title = &mt('Select Communities'); $warning = &mt('Warning: data retrieval for multiple communities can take considerable time, as this operation is not currently optimized.'); } + my @standardnames = &Apache::loncommon::get_standard_codeitems(); my $courseform = &Apache::lonhtmlcommon::course_selection($formname,$numcodes, - $codetitles,$idlist,$idlist_titles,$crstype); + $codetitles,$idlist,$idlist_titles,$crstype, + \@standardnames); $r->print(''.&Apache::lonhtmlcommon::start_pick_box()."\n".
&Apache::lonhtmlcommon::start_pick_box()."\n".
&Apache::lonhtmlcommon::row_title($title,'LC_oddrow_value')."\n".
@@ -1691,7 +1694,7 @@ sub role_filter {
$role_select .= '';
$output = '';
+ .' ';
}
return $output;
}
@@ -1731,7 +1734,7 @@ sub section_group_filter {
}
if (@options > 0) {
my $currsel;
- $markup = ''.$lt{'owin'}.' ';
+ $output .= ''.$lt{'owin'}.' ';
}
$output .= "\n".' '."\n".
&Apache::loncommon::start_data_table().
@@ -2435,32 +2421,27 @@ END
}
}
foreach my $item (@cols) {
- if (grep(/^\Q$item\E$/,@sortable)) {
- $output .= "$lt{$item} \n";
- } else {
- $output .= "$lt{$item} \n";
- }
+ $output .= "$lt{$item} \n";
}
my %role_types = &role_type_names();
if ($context eq 'course' && $mode ne 'autoenroll') {
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') {
# Clicker display on or off?
- if ($clickersupport) {
- my %clicker_options = (
- 'on' => 'Show',
- 'off' => 'Hide',
- );
- my $clickerchg = 'on';
- if ($displayclickers eq 'on') {
- $clickerchg = 'off';
- }
- $output .= ' '."\n".' '
- .&mt('[_1]'.$clicker_options{$clickerchg}.'[_2] clicker id'
+ my %clicker_options = (
+ 'on' => 'Show',
+ 'off' => 'Hide',
+ );
+ my $clickerchg = 'on';
+ if ($displayclickers eq 'on') {
+ $clickerchg = 'off';
+ }
+ $output .= ' '."\n".' '
+ .&mt('[_1]'.$clicker_options{$clickerchg}.'[_2] clicker id'
,''
,'')
."\n".' '."\n";
- }
+
# Photo display on or off?
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
my %photo_options = &Apache::lonlocal::texthash(
@@ -2499,18 +2480,14 @@ END
$CSVfile = undef;
}
#
- if ($clickersupport) {
- push @cols,'clicker';
- }
+ push @cols,'clicker';
# Write headers and data to file
print $CSVfile '"'.$results_description.'"'."\n";
print $CSVfile '"'.join('","',map {
&Apache::loncommon::csv_translate($lt{$_})
} (@cols))."\"\n";
} elsif ($mode eq 'excel') {
- if ($clickersupport) {
- push @cols,'clicker';
- }
+ push @cols,'clicker';
# Create the excel spreadsheet
($excel_workbook,$excel_filename,$format) =
&Apache::loncommon::create_workbook($r);
@@ -2546,40 +2523,6 @@ END
Future => 'Future',
Expired => 'Expired',
);
- # If this is for a single course get last course "log-in" and submissions.
- my (%crslogins,%stusubmissions,%elapsed,$numparts,%nummultipart,$multipart);
- my $now = time;
- if ($context eq 'course') {
- if ($custommenu) {
- %crslogins=&Apache::lonnet::dump('nohist_crslastlogin',$cdom,$cnum);
- %stusubmissions=&Apache::lonnet::dump('nohist_submissiontracker',$cdom,$cnum);
- %elapsed = &Apache::lonlocal::texthash(
- -1 => 'more than a month ago',
- 2592000 => 'within last 30 days',
- 604800 => 'within last 7 days',
- 86400 => 'within last 24 hours',
- );
- my $navmap = Apache::lonnavmaps::navmap->new();
- if (defined($navmap)) {
- my @allres=$navmap->retrieveResources('/uploaded/'.$cdom.'/'.$cnum.'/default_1261144274.sequence',sub { $_[0]->is_problem() },0);
- foreach my $resource (@allres) {
- my @parts = $resource->parts();
- my $count = scalar(@parts);
- if ($count > 1) {
- $nummultipart{$count} ++;
- }
- $numparts += $count;
- }
- if (keys(%nummultipart) > 0) {
- $multipart = '
'.'contains';
- foreach my $key (sort {$a <=> $b} keys(%nummultipart)) {
- $multipart .= " nummultipart{$key} multipart questions (with $key parts)";
- }
- }
- }
- }
- }
-
# Get groups, role, permanent e-mail so we can sort on them if
# necessary.
foreach my $user (keys(%{$userlist})) {
@@ -2726,34 +2669,6 @@ END
} else {
$in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'});
}
- if ($context eq 'course') {
- if ($custommenu) {
- my $lastlogin = $crslogins{$in{'username'}.':'.$in{'domain'}.':'.$in{'section'}.':'.$role};
- if ($lastlogin ne '') {
- my $sincelogin = $now - $lastlogin;
- if ($sincelogin < 86400) {
- $in{'lastlogin'} = $elapsed{'86400'};
- } elsif ($sincelogin < 604800) {
- $in{'lastlogin'} = $elapsed{'604800'};
- } elsif ($sincelogin < 2592000 ) {
- $in{'lastlogin'} = $elapsed{'2592000'};
- } else {
- $in{'lastlogin'} = $elapsed{'-1'};
- }
- }
- }
- if ($role eq 'st') {
- my $numsub = $stusubmissions{$in{'username'}.':'.$in{'domain'}."\0attempts"} +
- $stusubmissions{$in{'username'}.':'.$in{'domain'}."\0pilotsubs"};
- if (!$numsub) {
- $in{'submissions'} = 'not attempted';
- } elsif ($numsub < $numparts) {
- $in{'submissions'} = 'incomplete ('.$numsub.'/'.$numparts.')';
- } else {
- $in{'submissions'} = 'completed';
- }
- }
- }
if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll' || $mode eq 'pickauthor') {
$r->print(&Apache::loncommon::start_data_table_row());
my $checkval;
@@ -2827,27 +2742,19 @@ END
$showitem = $ltstatus{$in{$item}};
}
$r->print(''.$showitem.' '."\n");
- } elsif ($item eq 'submissions') {
- if ($in{$item} =~ /^incomplete/) {
- $r->print(''.$in{$item}.$multipart.' ');
- } else {
- $r->print(''.$in{$item}.' '."\n");
- }
} else {
$r->print(''.$in{$item}.' '."\n");
}
}
if (($context eq 'course') && ($mode ne 'autoenroll')) {
if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') {
- if ($clickersupport) {
- if ($displayclickers eq 'on') {
- my $clickers =
+ if ($displayclickers eq 'on') {
+ my $clickers =
(&Apache::lonnet::userenvironment($in{'domain'},$in{'username'},'clickers'))[1];
- if ($clickers!~/\w/) { $clickers='-'; }
- $r->print(''.$clickers.' ');
- } else {
- $r->print(' ');
- }
+ if ($clickers!~/\w/) { $clickers='-'; }
+ $r->print(''.$clickers.' ');
+ } else {
+ $r->print(' ');
}
if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
if ($displayphotos eq 'on' && $role eq 'st' && $in{'photo'} ne '') {
@@ -3038,7 +2945,7 @@ sub print_username_link {
$output = $in->{'username'};
} else {
$output = '{'username'}','$in->{'domain'}'".')" />'.
+ "'$in->{'username'}','$in->{'domain'}'".')">'.
$in->{'username'}.'';
}
return $output;
@@ -3268,9 +3175,9 @@ ENDJS
my %lt = &Apache::lonlocal::texthash (
chac => 'Access dates to apply for selected users',
chse => 'Changes in section affiliation to apply to selected users',
- fors => 'For student roles changing the section, will result in a section switch as students may only be in one section of a course at a time.',
- forn => 'For a role in a course that is not a student role, a user may have roles in more than one section of a course at a time.',
- reta => "Retain each user's current section affiliations?",
+ fors => 'For student roles, changing the section will result in a section switch as students may only be in one section of a course at a time.',
+ forn => 'For a course role that is not "student", users may have roles in more than one section at a time.',
+ reta => "Retain each user's current section affiliations?",
dnap => '(Does not apply to student roles).',
);
my ($date_items,$headertext);
@@ -3288,14 +3195,13 @@ ENDJS
$permission,$crstype);
}
$output .= ''.$headertext.'
'.
- '