version 1.9, 2007/09/07 00:09:07
|
version 1.14, 2012/12/31 14:29:08
|
Line 34 use strict;
|
Line 34 use strict;
|
use Apache::loncoursedata(); |
use Apache::loncoursedata(); |
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
|
use Apache::courseprefs(); |
use Apache::Constants qw(:common :http REDIRECT); |
use Apache::Constants qw(:common :http REDIRECT); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
Line 60 sub handler {
|
Line 61 sub handler {
|
$r->send_http_header; |
$r->send_http_header; |
return OK; |
return OK; |
} |
} |
# &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
# ['action','state']); |
['register','forceedit','action','symb','todocs']); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/viewclasslist", |
|
text=>"View Classlist", |
|
faq=>9,bug=>'Instructor Interface',}); |
|
# Needs to be in a course |
|
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 71 sub handler {
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
# |
# |
my $start_page = &Apache::loncommon::start_page('Classlist'); |
my $start_page; |
my $breadcrumbs= &Apache::lonhtmlcommon::breadcrumbs(undef, |
if ($env{'form.register'}) { |
'Enrollment Manager'); |
$start_page = &Apache::loncommon::start_page('Classlist',undef, |
|
{'force_register' => $env{'form.register'}}); |
|
} else { |
|
my $brcrum = [{'href' => 'adm/viewclasslist', |
|
'text' => 'View Classlist'},]; |
|
$start_page = &Apache::loncommon::start_page('Classlist',undef, |
|
{'bread_crumbs' => $brcrum}); |
|
} |
$r->print(<<ENDHEADER); |
$r->print(<<ENDHEADER); |
$start_page |
$start_page |
$breadcrumbs |
|
ENDHEADER |
ENDHEADER |
|
|
# Get classlist view settings |
# Get classlist view settings |
my %viewsettings = &retrieve_view_settings(); |
my %viewsettings = &retrieve_view_settings(); |
|
|
# Print classlist |
if (($env{'form.forceedit'}) || ($env{'form.action'} eq 'setconfig')) { |
if (keys(%viewsettings) > 0) { |
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) { |
$r->print(&html_classlist($r,\%viewsettings)); |
my $crstype = &Apache::loncommon::course_type(); |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $rosterprefs = &roster_prefs($crstype); |
|
my $allitems = {}; |
|
if ($env{'form.action'} eq 'setconfig') { |
|
my %values=&Apache::lonnet::dump('environment',$cdom,$cnum); |
|
if (keys(%values) > 0) { |
|
my ($numchanged,%changes,%disallowed); |
|
my $prefs = { |
|
classlists => $rosterprefs, |
|
}; |
|
$changes{'classlists'} = {}; |
|
&Apache::courseprefs::process_changes($cdom,'classlists',\%values, |
|
$rosterprefs, |
|
$changes{'classlists'}, |
|
$allitems,\%disallowed,$crstype); |
|
my $message; |
|
if (keys(%{$changes{'classlists'}}) > 0) { |
|
my $actions = ['classlists']; |
|
$message = |
|
&Apache::courseprefs::store_changes($cdom,$cnum,$actions, |
|
$actions,$prefs,\%values, |
|
\%changes,$crstype); |
|
} else { |
|
if ($crstype eq 'Community') { |
|
$message = &mt('No changes made to community settings.'); |
|
} else { |
|
$message = &mt('No changes made to course settings.'); |
|
} |
|
} |
|
$r->print(&Apache::loncommon::confirmwrapper($message)); |
|
} else { |
|
$r->print('<div class="LC_info">'. |
|
&mt('Unable to retrieve current settings.').'<br />'. |
|
&mt('No changes saved.'). |
|
'</div>'); |
|
} |
|
} else { |
|
my $current = {}; |
|
my @settings = ('student_classlist_view','student_classlist_opt_in', |
|
'student_classlist_portfiles'); |
|
foreach my $setting (@settings) { |
|
$current->{$setting} = $env{"course.$env{'request.course.id'}.$setting"}; |
|
} |
|
my ($output,$rowtotal) = |
|
&Apache::courseprefs::print_config_box($r,$cdom,'display', |
|
'viewableroster', |
|
$rosterprefs,$current, |
|
$allitems,$crstype); |
|
if ($output) { |
|
$r->print('<form method="post" name="display" action="/adm/viewclasslist">'."\n". |
|
'<input type="hidden" name="action" value="setconfig" />'."\n". |
|
'<input type="hidden" name="register" value="'.$env{'form.register'}.'" />'."\n". |
|
'<input type="hidden" name="forceedit" value="'.$env{'form.forceedit'}.'" />'."\n"); |
|
if ($env{'form.symb'}) { |
|
$r->print('<input type="hidden" name="symb" value="'.$env{'form.symb'}.'" />'."\n"); |
|
} |
|
if ($env{'form.symb'}) { |
|
$r->print('<input type="hidden" name="todocs" value="'.$env{'form.todocs'}.'" />'."\n"); |
|
} |
|
$r->print('<div class="LC_left_float">'. |
|
$output. |
|
'</div><br clear="all" />'. |
|
'<input type="submit" value="'.&mt('Save').'" />'. |
|
'</form>'); |
|
} else { |
|
$r->print('<div class="LC_info">'. |
|
&mt('No student-viewable course roster settings available.'). |
|
'</div>'); |
|
} |
|
} |
|
} else { |
|
$r->print('<div class="LC_info">'. |
|
&mt('You do not have rights to modify student-viewable course roster settings.'). |
|
'</div>'); |
|
} |
} else { |
} else { |
$r->print('<h3>'. |
|
&mt("Display of a student-viewable course roster is not currently enabled."). |
# Print classlist |
'</h3>'); |
if (keys(%viewsettings) > 0) { |
|
$r->print(&html_classlist($r,\%viewsettings)); |
|
} else { |
|
$r->print('<div class="LC_info">'. |
|
&mt("Display of a student-viewable course roster is not currently enabled."). |
|
'</div>'); |
|
} |
} |
} |
# |
# |
# Finish up |
# Finish up |
Line 123 sub retrieve_view_settings {
|
Line 206 sub retrieve_view_settings {
|
return %viewsettings; |
return %viewsettings; |
} |
} |
|
|
|
sub roster_prefs { |
|
my ($crstype) = @_; |
|
my %lt; |
|
if ($crstype eq 'Community') { |
|
%lt = &Apache::lonlocal::texthash ( |
|
stuv => 'Member-viewable membership list options', |
|
stul => 'Member agreement needed to be listed', |
|
); |
|
} else { |
|
%lt = &Apache::lonlocal::texthash( |
|
stuv => 'Student-viewable classlist options', |
|
stul => 'Student agreement needed to be listed', |
|
); |
|
} |
|
$lt{'incl'} = &mt('Include link to accessible portfolio files'); |
|
|
|
return |
|
{ text => 'Student-viewable roster settings', |
|
header => [ {col1 => 'Setting', |
|
col2 => $lt{'stuv'}}], |
|
ordered => ['student_classlist_view', |
|
'student_classlist_opt_in', |
|
'student_classlist_portfiles'], |
|
itemtext => { |
|
student_classlist_view => $lt{'stuv'}, |
|
student_classlist_opt_in => $lt{'stul'}, |
|
student_classlist_portfiles => $lt{'incl'}, |
|
}, |
|
}; |
|
} |
|
|
sub html_classlist { |
sub html_classlist { |
my ($r,$viewsettings) = @_; |
my ($r,$viewsettings) = @_; |
my ($Str,$title,$secdisplay,$cid,$cdom,$cnum,$listtype,%publicroster); |
my ($Str,$title,$secdisplay,$cid,$cdom,$cnum,$listtype,%publicroster); |
Line 262 sub html_classlist {
|
Line 376 sub html_classlist {
|
'<td>'.(' 'x2). |
'<td>'.(' 'x2). |
&Apache::loncommon::messagewrapper |
&Apache::loncommon::messagewrapper |
('<img src="/adm/lonIcons/mailto.gif" border="0" /> '. |
('<img src="/adm/lonIcons/mailto.gif" border="0" /> '. |
$username.'@'.$domain,$username,$domain).'</td>'; |
$username.':'.$domain,$username,$domain).'</td>'; |
if (! $viewsettings->{'limit_to_section'}) { |
if (! $viewsettings->{'limit_to_section'}) { |
$Str .= '<td>'.$section.'</td>'; |
$Str .= '<td>'.$section.'</td>'; |
} |
} |
Line 337 sub process_student_prefs {
|
Line 451 sub process_student_prefs {
|
my $putresult = &Apache::lonnet::put('environment', |
my $putresult = &Apache::lonnet::put('environment', |
\%changeHash,$udom,$uname); |
\%changeHash,$udom,$uname); |
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
&Apache::lonnet::appenv(%changeHash); |
&Apache::lonnet::appenv(\%changeHash); |
my $result = &Apache::lonnet::put('publicroster',{$student => $showinroster,},$cdom,$cnum); |
my $result = &Apache::lonnet::put('publicroster',{$student => $showinroster,},$cdom,$cnum); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
$output .= &mt('Display of your name in the student-viewable roster set to <b>[_1]</b>.',$visibility); |
$output .= &mt('Display of your name in the student-viewable roster set to <b>[_1]</b>.',$visibility); |