version 1.61, 2008/08/13 08:17:58
|
version 1.72, 2008/10/15 13:00:24
|
Line 169 sub propagate_id_change {
|
Line 169 sub propagate_id_change {
|
} |
} |
|
|
sub update_classlist { |
sub update_classlist { |
my ($cdom,$cnum,$udom,$uname,$user) = @_; |
my ($cdom,$cnum,$udom,$uname,$user,$newend) = @_; |
my ($uid,$classlistentry); |
my ($uid,$classlistentry); |
my $fullname = |
my $fullname = |
&Apache::lonnet::format_name($user->{'firstname'},$user->{'middlename'}, |
&Apache::lonnet::format_name($user->{'firstname'},$user->{'middlename'}, |
Line 180 sub update_classlist {
|
Line 180 sub update_classlist {
|
my @classinfo = split(/:/,$classhash{$uname.':'.$udom}); |
my @classinfo = split(/:/,$classhash{$uname.':'.$udom}); |
my $ididx=&Apache::loncoursedata::CL_ID() - 2; |
my $ididx=&Apache::loncoursedata::CL_ID() - 2; |
my $nameidx=&Apache::loncoursedata::CL_FULLNAME() - 2; |
my $nameidx=&Apache::loncoursedata::CL_FULLNAME() - 2; |
|
my $endidx = &Apache::loncoursedata::CL_END() - 2; |
|
my $startidx = &Apache::loncoursedata::CL_START() - 2; |
for (my $i=0; $i<@classinfo; $i++) { |
for (my $i=0; $i<@classinfo; $i++) { |
if ($i == $ididx) { |
if ($i == $endidx) { |
|
if ($newend ne '') { |
|
$classlistentry .= $newend.':'; |
|
} else { |
|
$classlistentry .= $classinfo[$i].':'; |
|
} |
|
} elsif ($i == $startidx) { |
|
if ($newend ne '') { |
|
if ($classinfo[$i] > $newend) { |
|
$classlistentry .= $newend.':'; |
|
} else { |
|
$classlistentry .= $classinfo[$i].':'; |
|
} |
|
} else { |
|
$classlistentry .= $classinfo[$i].':'; |
|
} |
|
} elsif ($i == $ididx) { |
if (defined($user->{'id'})) { |
if (defined($user->{'id'})) { |
$classlistentry .= $user->{'id'}.':'; |
$classlistentry .= $user->{'id'}.':'; |
} else { |
} else { |
$classlistentry .= $classinfo[$i].':'; |
$classlistentry .= $classinfo[$i].':'; |
} |
} |
} elsif ($i == $nameidx) { |
} elsif ($i == $nameidx) { |
$classlistentry .= $fullname.':'; |
if (defined($user->{'lastname'})) { |
|
$classlistentry .= $fullname.':'; |
|
} else { |
|
$classlistentry .= $classinfo[$i].':'; |
|
} |
} else { |
} else { |
$classlistentry .= $classinfo[$i].':'; |
$classlistentry .= $classinfo[$i].':'; |
} |
} |
Line 558 function verify(vf,sec_caller) {
|
Line 580 function verify(vf,sec_caller) {
|
if (tw==11) { foundrole=1; } |
if (tw==11) { foundrole=1; } |
if (tw==12) { founddomain=1; } |
if (tw==12) { founddomain=1; } |
} |
} |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddom); |
verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddomain); |
} |
} |
|
|
// |
// |
Line 987 sub date_setting_table {
|
Line 1009 sub date_setting_table {
|
} |
} |
my $perpetual = '<span class="LC_nobreak"><label><input type="checkbox" name="no_end_date"'; |
my $perpetual = '<span class="LC_nobreak"><label><input type="checkbox" name="no_end_date"'; |
if (defined($endtime) && $endtime == 0) { |
if (defined($endtime) && $endtime == 0) { |
$perpetual .= ' checked'; |
$perpetual .= ' checked="checked"'; |
} |
} |
$perpetual.= ' /> '.&mt('no ending date').'</label></span>'; |
$perpetual.= ' /> '.&mt('no ending date').'</label></span>'; |
if ($mode eq 'create_enrolldates') { |
if ($mode eq 'create_enrolldates') { |
Line 1273 sub print_userlist {
|
Line 1295 sub print_userlist {
|
$output_selector .= "\n".$option; |
$output_selector .= "\n".$option; |
} |
} |
$output_selector .= '</select>'; |
$output_selector .= '</select>'; |
$r->print('<label>'.&mt('Output Format: [_1]',$output_selector).'</label>'.(' 'x3)); |
$r->print('<label><span class="LC_nobreak">' |
} |
.&mt('Output Format: [_1]',$output_selector) |
$r->print('<label>'.&mt('User Status: [_1]',$status_select).'</label>'.(' 'x3)."\n"); |
.'</span></label>'.(' 'x3)); |
|
} |
|
$r->print('<label><span class="LC_nobreak">' |
|
.&mt('User Status: [_1]',$status_select) |
|
.'</span></label>'.(' 'x3)."\n"); |
my $roleselected = ''; |
my $roleselected = ''; |
if ($env{'form.showrole'} eq 'Any') { |
if ($env{'form.showrole'} eq 'Any') { |
$roleselected = ' selected="selected" '; |
$roleselected = ' selected="selected" '; |
Line 1315 sub print_userlist {
|
Line 1341 sub print_userlist {
|
if ($context eq 'course') { |
if ($context eq 'course') { |
if (($env{'form.showrole'} eq 'st') || ($env{'form.showrole'} eq 'Any')) { |
if (($env{'form.showrole'} eq 'st') || ($env{'form.showrole'} eq 'Any')) { |
my $classlist = &Apache::loncoursedata::get_classlist(); |
my $classlist = &Apache::loncoursedata::get_classlist(); |
%userlist = %{$classlist}; |
if (ref($classlist) eq 'HASH') { |
|
%userlist = %{$classlist}; |
|
} |
} |
} |
if ($env{'form.showrole'} ne 'st') { |
if ($env{'form.showrole'} ne 'st') { |
my $showroles; |
my $showroles; |
Line 1449 sub print_userlist {
|
Line 1477 sub print_userlist {
|
$permission,$env{'form.Status'},\%userlist,$keylist); |
$permission,$env{'form.Status'},\%userlist,$keylist); |
} |
} |
if (!$usercount) { |
if (!$usercount) { |
$r->print('<br />'.&mt('There are no users matching the search criteria.')); |
$r->print('<br /><span class="LC_warning">' |
|
.&mt('There are no users matching the search criteria.') |
|
.'</span>' |
|
); |
} |
} |
} |
} |
$r->print('<input type="hidden" name="phase" value="'. |
$r->print('<input type="hidden" name="phase" value="'. |
Line 1466 sub role_filter {
|
Line 1497 sub role_filter {
|
my ($role_select); |
my ($role_select); |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$role_select = &domain_roles_select(); |
$role_select = &domain_roles_select(); |
$output = '<label>'.&mt('Role Type: [_1]',$role_select).'</label>'; |
$output = '<label><span class="LC_nobreak">' |
|
.&mt('Role Type: [_1]',$role_select) |
|
.'</span></label>'; |
} else { |
} else { |
$role_select = '<select name="showrole">'."\n". |
$role_select = '<select name="showrole">'."\n". |
'<option value="Any" '.$roleselected.'>'. |
'<option value="Any" '.$roleselected.'>'. |
Line 1486 sub role_filter {
|
Line 1519 sub role_filter {
|
$role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>'; |
$role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>'; |
} |
} |
$role_select .= '</select>'; |
$role_select .= '</select>'; |
$output = '<label>'.&mt('Role: [_1]',$role_select).'</label>'; |
$output = '<label><span class="LC_nobreak">' |
|
.&mt('Role: [_1]',$role_select) |
|
.'</span></label>'; |
} |
} |
return $output; |
return $output; |
} |
} |
Line 1869 sub aggregate_user_info {
|
Line 1904 sub aggregate_user_info {
|
sub process_date_info { |
sub process_date_info { |
my ($userdata) = @_; |
my ($userdata) = @_; |
my $now = time; |
my $now = time; |
$userdata->{'status'} = 'Active'; |
$userdata->{'status'} = &mt('Active'); |
if ($userdata->{'start'} > 0) { |
if ($userdata->{'start'} > 0) { |
if ($now < $userdata->{'start'}) { |
if ($now < $userdata->{'start'}) { |
$userdata->{'status'} = 'Future'; |
$userdata->{'status'} = &mt('Future'); |
} |
} |
} |
} |
if ($userdata->{'end'} > 0) { |
if ($userdata->{'end'} > 0) { |
if ($now > $userdata->{'end'}) { |
if ($now > $userdata->{'end'}) { |
$userdata->{'status'} = 'Expired'; |
$userdata->{'status'} = &mt('Expired'); |
} |
} |
} |
} |
return; |
return; |
Line 2022 END
|
Line 2057 END
|
'aboutme' => "Display a user's personal page", |
'aboutme' => "Display a user's personal page", |
'owin' => "Open in a new window", |
'owin' => "Open in a new window", |
'modify' => "Modify a user's information", |
'modify' => "Modify a user's information", |
|
'clicker' => "Clicker-ID", |
); |
); |
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
if ($context eq 'domain' && $env{'form.roletype'} eq 'course') { |
$lt{'extent'} = &mt('Course(s): description, section(s), status'); |
$lt{'extent'} = &mt('Course(s): description, section(s), status'); |
Line 2219 END
|
Line 2255 END
|
time.'_'.rand(1000000000).'.csv'; |
time.'_'.rand(1000000000).'.csv'; |
unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) { |
unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) { |
$r->log_error("Couldn't open $CSVfilename for output $!"); |
$r->log_error("Couldn't open $CSVfilename for output $!"); |
$r->print("Problems occured in writing the csv file. ". |
$r->print(&mt('Problems occurred in writing the CSV file. ' |
"This error has been logged. ". |
.'This error has been logged. ' |
"Please alert your LON-CAPA administrator."); |
.'Please alert your LON-CAPA administrator.')); |
$CSVfile = undef; |
$CSVfile = undef; |
} |
} |
# |
# |
|
push @cols,'clicker'; |
# Write headers and data to file |
# Write headers and data to file |
print $CSVfile '"'.$results_description.'"'."\n"; |
print $CSVfile '"'.$results_description.'"'."\n"; |
print $CSVfile '"'.join('","',map { |
print $CSVfile '"'.join('","',map { |
&Apache::loncommon::csv_translate($lt{$_}) |
&Apache::loncommon::csv_translate($lt{$_}) |
} (@cols)).'"'."\n"; |
} (@cols))."\"\n"; |
} elsif ($mode eq 'excel') { |
} elsif ($mode eq 'excel') { |
|
push @cols,'clicker'; |
# Create the excel spreadsheet |
# Create the excel spreadsheet |
($excel_workbook,$excel_filename,$format) = |
($excel_workbook,$excel_filename,$format) = |
&Apache::loncommon::create_workbook($r); |
&Apache::loncommon::create_workbook($r); |
Line 2239 END
|
Line 2277 END
|
$excel_sheet->write($row++,0,$results_description,$format->{'h2'}); |
$excel_sheet->write($row++,0,$results_description,$format->{'h2'}); |
# |
# |
my @colnames = map {$lt{$_}} (@cols); |
my @colnames = map {$lt{$_}} (@cols); |
|
|
$excel_sheet->write($row++,0,\@colnames,$format->{'bold'}); |
$excel_sheet->write($row++,0,\@colnames,$format->{'bold'}); |
} |
} |
|
|
Line 2390 END
|
Line 2429 END
|
foreach my $item (@{$keylist}) { |
foreach my $item (@{$keylist}) { |
$in{$item} = $sdata->[$index{$item}]; |
$in{$item} = $sdata->[$index{$item}]; |
} |
} |
my $role = $in{'role'}; |
my $clickers = (&Apache::lonnet::userenvironment($in{'domain'},$in{'username'},'clickers'))[1]; |
|
if ($clickers!~/\w/) { $clickers='-'; } |
|
$in{'clicker'} = $clickers; |
|
my $role = $in{'role'}; |
$in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}]); |
$in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}]); |
if (! defined($in{'start'}) || $in{'start'} == 0) { |
if (! defined($in{'start'}) || $in{'start'} == 0) { |
$in{'start'} = &mt('none'); |
$in{'start'} = &mt('none'); |
Line 2510 END
|
Line 2552 END
|
foreach my $item (@cols) { |
foreach my $item (@cols) { |
push @line,&Apache::loncommon::csv_translate($in{$item}); |
push @line,&Apache::loncommon::csv_translate($in{$item}); |
} |
} |
print $CSVfile '"'.join('","',@line).'"'."\n"; |
print $CSVfile '"'.join('","',@line)."\"\n"; |
} elsif ($mode eq 'excel') { |
} elsif ($mode eq 'excel') { |
my $col = 0; |
my $col = 0; |
foreach my $item (@cols) { |
foreach my $item (@cols) { |
Line 2533 END
|
Line 2575 END
|
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
} elsif ($mode eq 'excel') { |
} elsif ($mode eq 'excel') { |
$excel_workbook->close(); |
$excel_workbook->close(); |
$r->print('<p><a href="'.$excel_filename.'">'. |
$r->print(&mt('[_1]Your Excel spreadsheet[_2] is ready for download.', '<p><a href="'.$excel_filename.'">','</a>')."</p>\n"); |
&mt('Your Excel spreadsheet').'</a> '.&mt('is ready for download').'.</p>'."\n"); |
|
} elsif ($mode eq 'csv') { |
} elsif ($mode eq 'csv') { |
close($CSVfile); |
close($CSVfile); |
$r->print('<a href="'.$CSVfilename.'">'. |
$r->print(&mt('[_1]Your CSV file[_2] is ready for download.', '<p><a href="'.$CSVfilename.'">','</a>')."</p>\n"); |
&mt('Your CSV file').'</a> is ready for download.'. |
|
"\n"); |
|
$r->rflush(); |
$r->rflush(); |
} |
} |
if ($mode eq 'autoenroll') { |
if ($mode eq 'autoenroll') { |
Line 3486 sub upfile_drop_add {
|
Line 3525 sub upfile_drop_add {
|
if ($context eq 'course') { |
if ($context eq 'course') { |
my ($cnum,$cdom) = &get_course_identity(); |
my ($cnum,$cdom) = &get_course_identity(); |
my $roster = &Apache::loncoursedata::get_classlist(); |
my $roster = &Apache::loncoursedata::get_classlist(); |
%userlist = %{$roster}; |
if (ref($roster) eq 'HASH') { |
|
%userlist = %{$roster}; |
|
} |
my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef, |
my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef, |
\@statuses,\@poss_roles); |
\@statuses,\@poss_roles); |
&gather_userinfo($context,'view',\%userlist,$indexhash,\%info, |
&gather_userinfo($context,'view',\%userlist,$indexhash,\%info, |
Line 3592 sub upfile_drop_add {
|
Line 3633 sub upfile_drop_add {
|
'</b>'); |
'</b>'); |
next; |
next; |
} else { |
} else { |
my $baddom = 0; |
if ($entries{$fields{'domain'}} |
if ($entries{$fields{'dom'}} |
|
ne &LONCAPA::clean_domain($entries{$fields{'domain'}})) { |
ne &LONCAPA::clean_domain($entries{$fields{'domain'}})) { |
$baddom = 1; |
|
} else { |
|
if (&Apache::lonnet::domain($entries{$fields{'domain'}}) eq '') { |
|
$baddom = 1; |
|
} |
|
} |
|
if ($baddom) { |
|
$r->print('<br />'. '<b>'.$entries{$fields{'domain'}}. |
$r->print('<br />'. '<b>'.$entries{$fields{'domain'}}. |
'</b>: '.&mt('Unacceptable domain for user [_2] [_3] [_4] [_5]',$fname,$mname,$lname,$gen).'</b>'); |
'</b>: '.&mt('Unacceptable domain for user [_2] [_3] [_4] [_5]',$fname,$mname,$lname,$gen).'</b>'); |
next; |
next; |
Line 3885 sub upfile_drop_add {
|
Line 3918 sub upfile_drop_add {
|
'<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'. |
'<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'. |
&mt('There are no students with current/future access to the course.'). |
&mt('There are no students with current/future access to the course.'). |
'</form>'."\n"); |
'</form>'."\n"); |
} else { |
} elsif (ref($classlist) eq 'HASH') { |
# Remove the students we just added from the list of students. |
# Remove the students we just added from the list of students. |
foreach my $line (@userdata) { |
foreach my $line (@userdata) { |
my %entries=&Apache::loncommon::record_sep($line); |
my %entries=&Apache::loncommon::record_sep($line); |
Line 4264 sub classlist_drop {
|
Line 4297 sub classlist_drop {
|
my ($scope,$uname,$udom,$now) = @_; |
my ($scope,$uname,$udom,$now) = @_; |
my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)}); |
my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)}); |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
my $user = $uname.':'.$udom; |
|
if (!&active_student_roles($cnum,$cdom,$uname,$udom)) { |
if (!&active_student_roles($cnum,$cdom,$uname,$udom)) { |
my $result = |
my %user; |
&Apache::lonnet::cput('classlist', |
my $result = &update_classlist($cdom,$cnum,$udom,$uname,\%user,$now); |
{ $user => $now },$cdom,$cnum); |
|
return &mt('Drop from classlist: [_1]', |
return &mt('Drop from classlist: [_1]', |
'<b>'.$result.'</b>').'<br />'; |
'<b>'.$result.'</b>').'<br />'; |
} |
} |