version 1.15, 2013/07/15 17:00:19
|
version 1.21, 2023/11/05 19:59:54
|
Line 62 sub handler {
|
Line 62 sub handler {
|
return OK; |
return OK; |
} |
} |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['register','forceedit','action','symb','todocs']); |
['register','forceedit','action', |
|
'symb','todocs','only_body']); |
if (! ($env{'request.course.fn'})) { |
if (! ($env{'request.course.fn'})) { |
$env{'user.error.msg'}= |
$env{'user.error.msg'}= |
"/adm/viewclasslist:not in course role"; |
"/adm/viewclasslist:not in course role"; |
Line 76 sub handler {
|
Line 77 sub handler {
|
$start_page = &Apache::loncommon::start_page('Classlist',undef, |
$start_page = &Apache::loncommon::start_page('Classlist',undef, |
{'force_register' => $env{'form.register'}}); |
{'force_register' => $env{'form.register'}}); |
} else { |
} else { |
my $brcrum = [{'href' => 'adm/viewclasslist', |
my $args = {}; |
'text' => 'View Classlist'},]; |
if ($env{'form.only_body'}) { |
|
$args->{'only_body'} = 1; |
|
} else { |
|
my $brcrum = [{'href' => 'adm/viewclasslist', |
|
'text' => 'View Classlist'},]; |
|
$args->{'bread_crumbs'} = $brcrum; |
|
} |
$start_page = &Apache::loncommon::start_page('Classlist',undef, |
$start_page = &Apache::loncommon::start_page('Classlist',undef, |
{'bread_crumbs' => $brcrum}); |
$args); |
} |
} |
$r->print(<<ENDHEADER); |
$r->print(<<ENDHEADER); |
$start_page |
$start_page |
Line 87 ENDHEADER
|
Line 94 ENDHEADER
|
|
|
# Get classlist view settings |
# Get classlist view settings |
my %viewsettings = &retrieve_view_settings(); |
my %viewsettings = &retrieve_view_settings(); |
|
my $crstype = &Apache::loncommon::course_type(); |
|
|
if (($env{'form.forceedit'}) || ($env{'form.action'} eq 'setconfig')) { |
if (($env{'form.forceedit'}) || ($env{'form.action'} eq 'setconfig')) { |
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) { |
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) { |
my $crstype = &Apache::loncommon::course_type(); |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $rosterprefs = &roster_prefs($crstype); |
my $rosterprefs = &roster_prefs($crstype); |
Line 103 ENDHEADER
|
Line 110 ENDHEADER
|
classlists => $rosterprefs, |
classlists => $rosterprefs, |
}; |
}; |
$changes{'classlists'} = {}; |
$changes{'classlists'} = {}; |
&Apache::courseprefs::process_changes($cdom,'classlists',\%values, |
&Apache::courseprefs::process_changes($cdom,$cnum,'classlists',\%values, |
$rosterprefs, |
$rosterprefs, |
$changes{'classlists'}, |
$changes{'classlists'}, |
$allitems,\%disallowed,$crstype); |
$allitems,\%disallowed,$crstype); |
Line 136 ENDHEADER
|
Line 143 ENDHEADER
|
$current->{$setting} = $env{"course.$env{'request.course.id'}.$setting"}; |
$current->{$setting} = $env{"course.$env{'request.course.id'}.$setting"}; |
} |
} |
my ($output,$rowtotal) = |
my ($output,$rowtotal) = |
&Apache::courseprefs::print_config_box($r,$cdom,'display', |
&Apache::courseprefs::print_config_box($r,$cdom,$cnum,'display', |
'viewableroster', |
'viewableroster', |
$rosterprefs,$current, |
$rosterprefs,$current, |
$allitems,$crstype); |
$allitems,$crstype); |
Line 157 ENDHEADER
|
Line 164 ENDHEADER
|
'<input type="submit" value="'.&mt('Save').'" />'. |
'<input type="submit" value="'.&mt('Save').'" />'. |
'</form>'); |
'</form>'); |
} else { |
} else { |
$r->print('<div class="LC_info">'. |
$r->print('<div class="LC_info">'); |
&mt('No student-viewable course roster settings available.'). |
if ($crstype eq 'Community') { |
'</div>'); |
$r->print(&mt('No member-viewable community roster settings available.')); |
|
} else { |
|
$r->print(&mt('No student-viewable course roster settings available.')); |
|
} |
|
$r->print('</div>'); |
} |
} |
} |
} |
} else { |
} else { |
$r->print('<div class="LC_info">'. |
$r->print('<div class="LC_info">'); |
&mt('You do not have rights to modify student-viewable course roster settings.'). |
if ($crstype eq 'Community') { |
'</div>'); |
$r->print(&mt('You do not have rights to modify member-viewable community roster settings.')); |
|
} else { |
|
$r->print(&mt('You do not have rights to modify student-viewable course roster settings.')); |
|
} |
|
$r->print('</div>'); |
} |
} |
} else { |
} else { |
|
|
# Print classlist |
# Print classlist |
if (keys(%viewsettings) > 0) { |
if (keys(%viewsettings) > 0) { |
$r->print(&html_classlist($r,\%viewsettings)); |
$r->print(&html_classlist($r,$crstype,\%viewsettings)); |
} else { |
} else { |
$r->print('<div class="LC_info">'. |
$r->print('<div class="LC_info">'); |
&mt("Display of a student-viewable course roster is not currently enabled."). |
if ($crstype eq 'Community') { |
'</div>'); |
$r->print(&mt("Display of a member-viewable community roster is not currently enabled.")); |
|
} else { |
|
$r->print(&mt("Display of a student-viewable course roster is not currently enabled.")); |
|
} |
|
$r->print('</div>'); |
} |
} |
} |
} |
# |
# |
Line 211 sub roster_prefs {
|
Line 230 sub roster_prefs {
|
my %lt; |
my %lt; |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
%lt = &Apache::lonlocal::texthash ( |
%lt = &Apache::lonlocal::texthash ( |
|
svrs => 'Member-viewable roster settings', |
stuv => 'Member-viewable membership list options', |
stuv => 'Member-viewable membership list options', |
stul => 'Member agreement needed to be listed', |
stul => 'Member agreement needed to be listed', |
); |
); |
} else { |
} else { |
%lt = &Apache::lonlocal::texthash( |
%lt = &Apache::lonlocal::texthash( |
|
svrs => 'Student-viewable roster settings', |
stuv => 'Student-viewable classlist options', |
stuv => 'Student-viewable classlist options', |
stul => 'Student agreement needed to be listed', |
stul => 'Student agreement needed to be listed', |
); |
); |
Line 223 sub roster_prefs {
|
Line 244 sub roster_prefs {
|
$lt{'incl'} = &mt('Include link to accessible portfolio files'); |
$lt{'incl'} = &mt('Include link to accessible portfolio files'); |
|
|
return |
return |
{ text => 'Student-viewable roster settings', |
{ text => $lt{'svrs'}, |
header => [ {col1 => 'Setting', |
header => [ {col1 => 'Setting', |
col2 => $lt{'stuv'}}], |
col2 => $lt{'stuv'}}], |
ordered => ['student_classlist_view', |
ordered => ['student_classlist_view', |
Line 238 sub roster_prefs {
|
Line 259 sub roster_prefs {
|
} |
} |
|
|
sub html_classlist { |
sub html_classlist { |
my ($r,$viewsettings) = @_; |
my ($r,$crstype,$viewsettings) = @_; |
my ($Str,$title,$secdisplay,$cid,$cdom,$cnum,$listtype,%publicroster); |
my ($Str,$title,$secdisplay,$cid,$cdom,$cnum,$listtype,%publicroster); |
my $fullroster = &Apache::loncoursedata::get_classlist(); |
my $fullroster = &Apache::loncoursedata::get_classlist(); |
my $classlist; |
my $classlist; |
|
|
|
my $singular = 'student'; |
|
my $plural = 'students'; |
|
my $titleplural = 'Students'; |
|
my $heading = &mt('Student-viewable course roster'); |
|
|
|
if ($crstype eq 'Community') { |
|
$singular = 'member'; |
|
$plural = 'members'; |
|
$titleplural = 'Members'; |
|
$heading = &mt('Member-viewable community roster'); |
|
} |
|
|
if ($env{'form.action'} eq 'setenv') { |
if ($env{'form.action'} eq 'setenv') { |
$Str .= &process_student_prefs(); |
$Str .= &process_student_prefs($crstype); |
} |
} |
$Str .= '<h2>'.&mt('Student-viewable course roster').'</h2>'; |
|
|
$Str .= '<h2>'.$heading.'</h2>'; |
|
|
$cid = $env{'request.course.id'}; |
$cid = $env{'request.course.id'}; |
$cdom = $env{'course.'.$cid.'.domain'}; |
$cdom = $env{'course.'.$cid.'.domain'}; |
Line 254 sub html_classlist {
|
Line 288 sub html_classlist {
|
|
|
if ($viewsettings->{'limit_to_section'}) { |
if ($viewsettings->{'limit_to_section'}) { |
if ($env{'request.course.sec'} eq '') { |
if ($env{'request.course.sec'} eq '') { |
$title = '<h3>'.&mt('Students with no section').'</h3>'; |
$title = &mt($titleplural.' with no section'); |
$listtype = 'without a section'; |
$listtype = 'without a section'; |
} else { |
} else { |
$title ='<h3>'.&mt('Students in section "[_1]"', |
$title = &mt($titleplural.' in section "[_1]"', |
$env{'request.course.sec'}).'</h3>'; |
$env{'request.course.sec'}); |
$listtype = 'in the section'; |
$listtype = 'in the section'; |
$secdisplay = " ($env{'request.course.sec'}) "; |
$secdisplay = " ($env{'request.course.sec'}) "; |
} |
} |
} else { |
} else { |
$title .= '<h3>'.&mt('Students in any section').'</h3>'; |
$title = &mt($titleplural.' in any section'); |
$listtype = 'in the course'; |
$listtype = 'in the course'; |
|
if ($crstype eq 'Community') { |
|
$listtype = 'in the community'; |
|
} |
} |
} |
|
|
if ($viewsettings->{'student_opt_in'}) { |
if ($viewsettings->{'student_opt_in'}) { |
if ($env{'request.role'} =~ /^st/) { |
if ($env{'request.role'} =~ /^st/) { |
$Str .= &print_roster_form(); |
$Str .= &print_roster_form($crstype); |
} |
} |
%publicroster = &Apache::lonnet::dump('publicroster',$cdom,$cnum); |
%publicroster = &Apache::lonnet::dump('publicroster',$cdom,$cnum); |
} |
} |
|
|
$Str .= $title; |
$Str .= '<h3>'.$title.'</h3>'; |
|
|
my $fullcount = 0; |
my $fullcount = 0; |
my $publiccount = 0; |
my $publiccount = 0; |
Line 303 sub html_classlist {
|
Line 339 sub html_classlist {
|
$displaycount = $publiccount; |
$displaycount = $publiccount; |
if ($fullcount > $publiccount) { |
if ($fullcount > $publiccount) { |
if ($publiccount) { |
if ($publiccount) { |
$Str .= &mt('Only students who have opted to be listed in the roster ([_1] out of [_2] students) are shown.',$publiccount,$fullcount).'<br />'; |
$Str .= &mt('Only '.$plural.' who have opted to be listed in the roster ([_1] out of [_2] '.$plural.') are shown.',$publiccount,$fullcount).'<br />'; |
} else { |
} else { |
if ($fullcount == 1) { |
if ($fullcount == 1) { |
$Str .= &mt('The single student '.$listtype.'[_1] has opted not to be listed in the roster.',$secdisplay); |
$Str .= &mt('The single '.$singular.' '.$listtype.'[_1] has opted not to be listed in the roster.',$secdisplay); |
} else { |
} else { |
$Str .= &mt('None of the [_1] students '.$listtype.'[_2] have opted to be listed in the roster.',$fullcount,$secdisplay); |
$Str .= &mt('None of the [_1] '.$plural.' '.$listtype.'[_2] have opted to be listed in the roster.',$fullcount,$secdisplay); |
} |
} |
return $Str; |
return $Str; |
} |
} |
} else { |
} else { |
if ($fullcount > 1) { |
if ($fullcount > 1) { |
$Str .= &mt('All [_1] students '.$listtype.'[_2] have opted to be listed in the roster.',$fullcount,$secdisplay); |
$Str .= &mt('All [_1] '.$plural.' '.$listtype.'[_2] have opted to be listed in the roster.',$fullcount,$secdisplay); |
} elsif ($fullcount == 1) { |
} elsif ($fullcount == 1) { |
$Str .= &mt('The single student '.$listtype.'[_1] has opted to be listed in the roster.',$secdisplay); |
$Str .= &mt('The single '.$singular.' '.$listtype.'[_1] has opted to be listed in the roster.',$secdisplay); |
} |
} |
} |
} |
} else { |
} else { |
$displaycount = $fullcount; |
$displaycount = $fullcount; |
if ($fullcount > 1) { |
if ($fullcount > 1) { |
$Str .= &mt('All [_1] students '.$listtype.'[_2] are listed in the roster.',$fullcount,$secdisplay); |
$Str .= &mt('All [_1] '.$plural.' '.$listtype.'[_2] are listed in the roster.',$fullcount,$secdisplay); |
} elsif ($fullcount == 1) { |
} elsif ($fullcount == 1) { |
$Str .= &mt('There is only a single student '.$listtype.'[_1]',$secdisplay); |
$Str .= &mt('There is only a single '.$singular.' '.$listtype.'[_1]',$secdisplay); |
} |
} |
} |
} |
undef($fullroster); |
undef($fullroster); |
|
|
if (!$displaycount) { |
if (!$displaycount) { |
$Str .= &mt('There are currently no students to display.'); |
$Str .= &mt('There are currently no '.$plural.' to display.'); |
return $Str; |
return $Str; |
} |
} |
|
|
Line 347 sub html_classlist {
|
Line 383 sub html_classlist {
|
$Str .= '<br />'.&Apache::loncommon::start_data_table()."\n". |
$Str .= '<br />'.&Apache::loncommon::start_data_table()."\n". |
&Apache::loncommon::start_data_table_header_row()."\n". |
&Apache::loncommon::start_data_table_header_row()."\n". |
'<th></th>'. # for the count |
'<th></th>'. # for the count |
'<th>'.&mt('Student').'</th>'. |
'<th>'.&mt('Name').'</th>'. |
'<th>'.&mt('Username').'</th>'; |
'<th>'.&mt('Username').'</th>'; |
if (! $viewsettings->{'limit_to_section'}) { |
if (! $viewsettings->{'limit_to_section'}) { |
$Str .= '<th>'.&mt('Section').'</th>'; |
$Str .= '<th>'.&mt('Section').'</th>'; |
Line 400 sub html_classlist {
|
Line 436 sub html_classlist {
|
} |
} |
|
|
sub print_roster_form { |
sub print_roster_form { |
|
my ($crstype) = @_; |
my $cid = $env{'request.course.id'}; |
my $cid = $env{'request.course.id'}; |
my $showinroster = $env{'environment.internal.'.$cid.'.showinroster'}; |
my $showinroster = $env{'environment.internal.'.$cid.'.showinroster'}; |
my ($showoff,$showon); |
my ($showoff,$showon); |
Line 410 sub print_roster_form {
|
Line 447 sub print_roster_form {
|
$showoff = ' checked="checked" '; |
$showoff = ' checked="checked" '; |
$showon = ' '; |
$showon = ' '; |
} |
} |
|
my $singular = 'student'; |
|
if ($crstype eq 'Community') { |
|
$singular = 'member'; |
|
} |
my $output = |
my $output = |
'<div class="LC_left_float">' |
'<div class="LC_left_float">' |
.'<fieldset><legend>'.&mt('Your roster setting').'</legend>'; |
.'<fieldset><legend>'.&mt('Your roster setting').'</legend>'; |
if ($showinroster) { |
if ($showinroster) { |
$output .= &mt('You are currently listed in the student-viewable roster.'); |
$output .= &mt("You are currently listed in the $singular-viewable roster."); |
} else { |
} else { |
$output .= &mt('You are currently [_1]not[_2] listed in the student-viewable roster.','<b>','</b>'); |
$output .= &mt("You are currently [_1]not[_2] listed in the $singular-viewable roster.",'<b>','</b>'); |
} |
} |
$output .= '<br />'.&mt('Include yourself in the roster?').' '. |
$output .= '<br />'.&mt('Include yourself in the roster?').' '. |
'<form name="studentparm" method="post" action="">'. |
'<form name="studentparm" method="post" action="">'. |
Line 430 sub print_roster_form {
|
Line 471 sub print_roster_form {
|
} |
} |
|
|
sub process_student_prefs { |
sub process_student_prefs { |
|
my ($crstype) = @_; |
my $cid = $env{'request.course.id'}; |
my $cid = $env{'request.course.id'}; |
my $cdom = $env{'course.'.$cid.'.domain'}; |
my $cdom = $env{'course.'.$cid.'.domain'}; |
my $cnum = $env{'course.'.$cid.'.num'}; |
my $cnum = $env{'course.'.$cid.'.num'}; |
Line 446 sub process_student_prefs {
|
Line 488 sub process_student_prefs {
|
if ($pubroster{$student}) { |
if ($pubroster{$student}) { |
$sturoster = 1; |
$sturoster = 1; |
} |
} |
|
|
|
my $singular = 'student'; |
|
if ($crstype eq 'Community') { |
|
$singular = 'member'; |
|
} |
my $output; |
my $output; |
if ($sturoster ne $showinroster) { |
if ($sturoster ne $showinroster) { |
my %changeHash = ( |
my %changeHash = ( |
Line 459 sub process_student_prefs {
|
Line 506 sub process_student_prefs {
|
if ($result eq 'ok') { |
if ($result eq 'ok') { |
$output .= |
$output .= |
&Apache::lonhtmlcommon::confirm_success( |
&Apache::lonhtmlcommon::confirm_success( |
&mt('Display of your name in the student-viewable roster set to [_1].','<b>'.$visibility.'</b>')); |
&mt("Display of your name in the $singular-viewable roster set to [_1].",'<b>'.$visibility.'</b>')); |
} else { |
} else { |
$output .= |
$output .= |
&Apache::lonhtmlcommon::confirm_success( |
&Apache::lonhtmlcommon::confirm_success( |
Line 473 sub process_student_prefs {
|
Line 520 sub process_student_prefs {
|
} else { |
} else { |
$output .= |
$output .= |
&Apache::lonhtmlcommon::confirm_success( |
&Apache::lonhtmlcommon::confirm_success( |
&mt('Display of your name in the student-viewable roster unchanged (set to [_1]).','<b>'.$visibility.'</b>')); |
&mt("Display of your name in the $singular-viewable roster unchanged (set to [_1]).",'<b>'.$visibility.'</b>')); |
} |
} |
$output = &Apache::loncommon::confirmwrapper($output); |
$output = &Apache::loncommon::confirmwrapper($output); |
return $output; |
return $output; |