version 1.47, 2009/10/23 16:14:43
|
version 1.49, 2009/11/23 21:45:18
|
Line 35 use Apache::lonhtmlcommon;
|
Line 35 use Apache::lonhtmlcommon;
|
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonuserutils; |
use Apache::lonuserutils; |
use Apache::lonpickcourse; |
use Apache::lonpickcourse; |
use LONCAPA::Enrollment; |
|
use lib '/home/httpd/lib/perl'; |
use lib '/home/httpd/lib/perl'; |
use LONCAPA; |
use LONCAPA; |
|
|
sub get_dc_settable { |
sub get_dc_settable { |
return ('courseowner','coursecode','authtype','autharg'); |
my ($type) = @_; |
|
if ($type eq 'Community') { |
|
return ('courseowner'); |
|
} else { |
|
return ('courseowner','coursecode','authtype','autharg'); |
|
} |
|
} |
|
|
|
sub autoenroll_keys { |
|
my $internals = ['coursecode','courseowner','authtype','autharg','autoadds','autodrops', |
|
'autostart','autoend','sectionnums','crosslistings']; |
|
my $accessdates = ['default_enrollment_start_date','default_enrollment_end_date']; |
|
return ($internals,$accessdates); |
} |
} |
|
|
sub catalog_settable { |
sub catalog_settable { |
my ($confhash) = @_; |
my ($confhash,$type) = @_; |
my @settable; |
my @settable; |
if (ref($confhash) eq 'HASH') { |
if (ref($confhash) eq 'HASH') { |
if ($confhash->{'togglecats'} ne 'crs') { |
if ($type eq 'Community') { |
push(@settable,'togglecats'); |
if ($confhash->{'togglecatscomm'} ne 'comm') { |
} |
push(@settable,'togglecats'); |
if ($confhash->{'categorize'} ne 'crs') { |
} |
push(@settable,'categorize'); |
if ($confhash->{'categorizecomm'} ne 'comm') { |
|
push(@settable,'categorize'); |
|
} |
|
} else { |
|
if ($confhash->{'togglecats'} ne 'crs') { |
|
push(@settable,'togglecats'); |
|
} |
|
if ($confhash->{'categorize'} ne 'crs') { |
|
push(@settable,'categorize'); |
|
} |
} |
} |
} else { |
} else { |
push(@settable,('togglecats','categorize')); |
push(@settable,('togglecats','categorize')); |
Line 61 sub catalog_settable {
|
Line 81 sub catalog_settable {
|
|
|
sub get_enrollment_settings { |
sub get_enrollment_settings { |
my ($cdom,$cnum) = @_; |
my ($cdom,$cnum) = @_; |
my %settings = &Apache::lonnet::dump('environment',$cdom,$cnum); |
my ($internals,$accessdates) = &autoenroll_keys(); |
|
my @items; |
|
if ((ref($internals) eq 'ARRAY') && (ref($accessdates) eq 'ARRAY')) { |
|
@items = map { 'internal.'.$_; } (@{$internals}); |
|
push(@items,@{$accessdates}); |
|
} |
|
my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum); |
my %enrollvar; |
my %enrollvar; |
$enrollvar{'autharg'} = ''; |
$enrollvar{'autharg'} = ''; |
$enrollvar{'authtype'} = ''; |
$enrollvar{'authtype'} = ''; |
my %lt=&Apache::lonlocal::texthash( |
foreach my $item (keys(%settings)) { |
'noen' => "No end date", |
|
); |
|
foreach my $item (keys %settings) { |
|
if ($item =~ m/^internal\.(.+)$/) { |
if ($item =~ m/^internal\.(.+)$/) { |
my $type = $1; |
my $type = $1; |
if ( ($type eq "autoadds") || ($type eq "autodrops") ) { |
if ( ($type eq "autoadds") || ($type eq "autodrops") ) { |
Line 79 sub get_enrollment_settings {
|
Line 102 sub get_enrollment_settings {
|
} |
} |
} elsif ( ($type eq "autostart") || ($type eq "autoend") ) { |
} elsif ( ($type eq "autostart") || ($type eq "autoend") ) { |
if ( ($type eq "autoend") && ($settings{$item} == 0) ) { |
if ( ($type eq "autoend") && ($settings{$item} == 0) ) { |
$enrollvar{$type} = $lt{'noen'}; |
$enrollvar{$type} = &mt('No end date'); |
} else { |
} else { |
$enrollvar{$type} = localtime($settings{$item}); |
$enrollvar{$type} = &Apache::lonlocal::locallocaltime($settings{$item}); |
} |
} |
} elsif ($type eq "sectionnums") { |
} elsif ($type eq "sectionnums") { |
$enrollvar{$type} = $settings{$item}; |
$enrollvar{$type} = $settings{$item}; |
Line 102 sub get_enrollment_settings {
|
Line 125 sub get_enrollment_settings {
|
} elsif ($item =~ m/^default_enrollment_(start|end)_date$/) { |
} elsif ($item =~ m/^default_enrollment_(start|end)_date$/) { |
my $type = $1; |
my $type = $1; |
if ( ($type eq 'end') && ($settings{$item} == 0) ) { |
if ( ($type eq 'end') && ($settings{$item} == 0) ) { |
$enrollvar{$item} = $lt{'noen'}; |
$enrollvar{$item} = &mt('No end date'); |
} elsif ( ($type eq 'start') && ($settings{$item} eq '') ) { |
} elsif ( ($type eq 'start') && ($settings{$item} eq '') ) { |
$enrollvar{$item} = 'When enrolled'; |
$enrollvar{$item} = 'When enrolled'; |
} else { |
} else { |
$enrollvar{$item} = localtime($settings{$item}); |
$enrollvar{$item} = &Apache::lonlocal::locallocaltime($settings{$item}); |
} |
} |
} |
} |
} |
} |
Line 115 sub get_enrollment_settings {
|
Line 138 sub get_enrollment_settings {
|
|
|
sub print_course_search_page { |
sub print_course_search_page { |
my ($r,$dom,$domdesc) = @_; |
my ($r,$dom,$domdesc) = @_; |
&print_header($r); |
my $action = '/adm/modifycourse'; |
|
my $type = $env{'form.type'}; |
|
if (!defined($env{'form.type'})) { |
|
$type = 'Course'; |
|
} |
|
&print_header($r,$type); |
my $filterlist = ['descriptfilter', |
my $filterlist = ['descriptfilter', |
'instcodefilter','ownerfilter', |
'instcodefilter','ownerfilter', |
'coursefilter']; |
'coursefilter']; |
my $filter = {}; |
my $filter = {}; |
my ($numtitles,$type,$cctitle,$dctitle); |
my ($numtitles,$cctitle,$dctitle); |
$type = $env{'form.type'}; |
my $ccrole = 'cc'; |
if (!defined($env{'form.type'})) { |
if ($type eq 'Community') { |
$type = 'Course'; |
$ccrole = 'co'; |
} |
} |
my $action = '/adm/modifycourse'; |
$cctitle = &Apache::lonnet::plaintext($ccrole,$type); |
$cctitle = &Apache::lonnet::plaintext('cc',$type); |
|
$dctitle = &Apache::lonnet::plaintext('dc'); |
$dctitle = &Apache::lonnet::plaintext('dc'); |
$r->print(&Apache::lonpickcourse::js_changer()); |
$r->print(&Apache::lonpickcourse::js_changer()); |
if ($type eq 'Course') { |
if ($type eq 'Community') { |
$r->print( |
$r->print('<h3>'.&mt('Search for a community in the [_1] domain',$domdesc).'</h3>'); |
'<h3>'.&mt('Search for a course in the [_1] domain',$domdesc).'</h3>'. |
} else { |
&mt('Actions available after searching for a course:').'<ul>'. |
$r->print('<h3>'.&mt('Search for a course in the [_1] domain',$domdesc).'</h3>'); |
'<li>'.&mt('Enter the course with the role of [_1]',$cctitle).'</li>'."\n". |
|
'<li>'.&mt('View or modify course settings which only a [_1] may modify.' |
|
,$dctitle).'</li>'."\n".'</ul>'); |
|
} else { |
|
$r->print( |
|
'<h3>'.&mt('Search for a community in the [_1] domain',$domdesc).'</h3>'. |
|
&mt('Actions available after searching for a community:').'<ul>'. |
|
'<li>'.&mt('Enter the community with the role of [_1]',$cctitle).'</li>'."\n". |
|
'<li>'.&mt('View or modify community settings which only a [_1] may modify.' |
|
,$dctitle).'</li>'."\n".'</ul>'); |
|
} |
} |
$r->print(&Apache::lonpickcourse::build_filters($filterlist,$type, |
$r->print(&Apache::lonpickcourse::build_filters($filterlist,$type, |
undef,undef,$filter,$action,\$numtitles,'modifycourse')); |
undef,undef,$filter,$action,\$numtitles,'modifycourse')); |
|
if ($type eq 'Community') { |
|
$r->print(&mt('Actions available after searching for a community:').'<ul>'. |
|
'<li>'.&mt('Enter the community with the role of [_1]',$cctitle).'</li>'."\n". |
|
'<li>'.&mt('View or modify community settings which only a [_1] may modify.',$dctitle). |
|
'</li>'."\n".'</ul>'); |
|
} else { |
|
$r->print(&mt('Actions available after searching for a course:').'<ul>'. |
|
'<li>'.&mt('Enter the course with the role of [_1]',$cctitle).'</li>'."\n". |
|
'<li>'.&mt('View or modify course settings which only a [_1] may modify.',$dctitle). |
|
'</li>'."\n".'</ul>'); |
|
} |
} |
} |
|
|
sub print_course_selection_page { |
sub print_course_selection_page { |
my ($r,$dom,$domdesc) = @_; |
my ($r,$dom,$domdesc) = @_; |
&print_header($r); |
my $type = $env{'form.type'}; |
|
if (!defined($type)) { |
|
$type = 'Course'; |
|
} |
|
&print_header($r,$type); |
|
|
# Criteria for course search |
# Criteria for course search |
my $filterlist = ['descriptfilter', |
my $filterlist = ['descriptfilter', |
'instcodefilter','ownerfilter', |
'instcodefilter','ownerfilter', |
'ownerdomfilter','coursefilter']; |
'ownerdomfilter','coursefilter']; |
my %filter; |
my %filter; |
my $type = $env{'form.type'}; |
|
if (!defined($type)) { |
|
$type = 'Course'; |
|
} |
|
my $action = '/adm/modifycourse'; |
my $action = '/adm/modifycourse'; |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
my $numtitles; |
my $numtitles; |
$r->print(&Apache::lonpickcourse::js_changer()); |
$r->print(&Apache::lonpickcourse::js_changer()); |
$r->print(&mt('Revise your search criteria for this domain').' ('.$domdesc.').<br /><br />'); |
$r->print(&mt('Revise your search criteria for this domain').' ('.$domdesc.').<br />'); |
$r->print(&Apache::lonpickcourse::build_filters($filterlist,$type, |
$r->print(&Apache::lonpickcourse::build_filters($filterlist,$type, |
undef,undef,\%filter,$action,\$numtitles)); |
undef,undef,\%filter,$action,\$numtitles)); |
$filter{'domainfilter'} = $dom; |
$filter{'domainfilter'} = $dom; |
Line 177 sub print_course_selection_page {
|
Line 205 sub print_course_selection_page {
|
} |
} |
|
|
sub print_modification_menu { |
sub print_modification_menu { |
my ($r,$cdesc,$domdesc,$dom) = @_; |
my ($r,$cdesc,$domdesc,$dom,$type) = @_; |
&print_header($r,$cdesc); |
&print_header($r,$type); |
my $type = 'Course'; |
my ($ccrole,$setquota_text,$setparams_text,$cat_text); |
|
if ($type eq 'Community') { |
|
$ccrole = 'co'; |
|
} else { |
|
$ccrole = 'cc'; |
|
} |
my $action = '/adm/modifycourse'; |
my $action = '/adm/modifycourse'; |
my $cctitle = &Apache::lonnet::plaintext('cc',$type); |
if ($type eq 'Community') { |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
$setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a community.'); |
my %lt=&Apache::lonlocal::texthash( |
$setparams_text = 'View/Modify community owner'; |
'some' => "Certain settings which control auto-enrollment of students from your institution's student information system.", |
$cat_text = 'View/Modify catalog settings for community'; |
'crqo' => 'The total disk space allocated for storage of portfolio files in all groups in a course.', |
} else { |
); |
$setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a course.'); |
|
$setparams_text = 'View/Modify course owner, institutional code, and default authentication'; |
|
$cat_text = 'View/Modify catalog settings for course'; |
|
} |
my @menu = |
my @menu = |
( |
( |
{ text => 'Modify quota for group portfolio', |
{ text => $setparams_text, |
phase => 'setquota', |
phase => 'setparms', |
}, |
|
{ text => 'Display current settings for automated enrollment', |
|
phase => 'viewparms', |
|
}, |
|
{ text => 'Modify institutional code, course owner and/or default authentication', |
|
phase => 'setparms', |
|
}, |
}, |
); |
{ text => 'View/Modify quota for group portfolio files', |
|
phase => 'setquota', |
|
} |
|
); |
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom); |
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom); |
my @additional_params = &catalog_settable($domconf{'coursecategories'}); |
my @additional_params = &catalog_settable($domconf{'coursecategories'},$type); |
if (@additional_params > 0) { |
if (@additional_params > 0) { |
push (@menu, { text => 'Modify course catalog settings for course', |
push (@menu, { text => $cat_text, |
phase => 'catsettings', |
phase => 'catsettings', |
}); |
}); |
} |
} |
my $menu_html = '<h3>'.&mt('View/Modify settings for: ').$cdesc.'</h3>'."\n". |
unless ($type eq 'Community') { |
&mt('Although almost all course settings can be modified by a [_1], a number of settings exist which only a [_2] may change:',$cctitle,$dctitle).' |
push(@menu, |
<ul> |
{ text => 'Display current settings for automated enrollment', |
<li>'.$lt{'some'}.'</li> |
phase => 'viewparms', |
<li>'.$lt{'crqo'}.'</li>'."\n"; |
} |
|
); |
|
} |
|
my $menu_html = '<h3>'.&mt('View/Modify settings for: '). |
|
' <span class="LC_nobreak">'.$cdesc.'</span></h3>'."\n"; |
|
if ($type eq 'Community') { |
|
$menu_html .= &mt('Although almost all community settings can be modified by a Coordinator, the following may only be set or modified by a Domain Coordinator:'); |
|
} else { |
|
$menu_html .= &mt('Although almost all course settings can be modified by a Course Coordinator, the following may only be set or modified by a Domain Coordinator:'); |
|
} |
|
$menu_html .= '<ul>'; |
|
if ($type eq 'Community') { |
|
$menu_html .= '<li>'.&mt('Community owner (permitted to assign Coordinator roles in the community).').'</li>'; |
|
} else { |
|
$menu_html .= '<li>'.&mt('Course owner (permitted to assign Course Coordinator roles in the course).').'</li>'. |
|
'<li>'.&mt("Institutional code and default authentication (both required for auto-enrollment of students from institutional datafeeds).").'</li>'; |
|
} |
|
$menu_html .= '<li>'.$setquota_text.'</li>'."\n"; |
foreach my $item (@additional_params) { |
foreach my $item (@additional_params) { |
if ($item eq 'togglecats') { |
if ($type eq 'Community') { |
$menu_html .= ' <li>'.&mt('Hiding a course from the course catalog (can be [_1]configured[_2] to be modifiable in course context)','<a href="/adm/domainprefs?actions=coursecategories&phase=display">','</a>').'</li>'."\n"; |
if ($item eq 'togglecats') { |
} elsif ($item eq 'categorize') { |
$menu_html .= ' <li>'.&mt('Hiding/unhiding a community from the catalog (although can be [_1]configured[_2] to be modifiable by a Coordinator in community context).','<a href="/adm/domainprefs?actions=coursecategories&phase=display">','</a>').'</li>'."\n"; |
$menu_html .= ' <li>'.&mt('Manual cataloging of a course (can be [_1]configured[_2] to be modifiable in course context)','<a href="/adm/domainprefs?actions=coursecategories&phase=display">','</a>').'</li>'."\n"; |
} elsif ($item eq 'categorize') { |
|
$menu_html .= ' <li>'.&mt('Manual cataloging of a community (although can be [_1]configured[_2] to be modifiable by a Coordinator in community context).','<a href="/adm/domainprefs?actions=coursecategories&phase=display">','</a>').'</li>'."\n"; |
|
} |
|
} else { |
|
if ($item eq 'togglecats') { |
|
$menu_html .= ' <li>'.&mt('Hiding/unhiding a course from the course catalog (although can be [_1]configured[_2] to be modifiable by a Course Coordinator in course context).','<a href="/adm/domainprefs?actions=coursecategories&phase=display">','</a>').'</li>'."\n"; |
|
} elsif ($item eq 'categorize') { |
|
$menu_html .= ' <li>'.&mt('Manual cataloging of a course (although can be [_1]configured[_2] to be modifiable by a Course Coordinator in course context).','<a href="/adm/domainprefs?actions=coursecategories&phase=display">','</a>').'</li>'."\n"; |
|
} |
} |
} |
} |
} |
$menu_html .= ' </ul> |
$menu_html .= ' </ul> |
<form name="menu" method="post" action="'.$action.'" />'."\n". |
<form name="menu" method="post" action="'.$action.'" />'."\n". |
&hidden_form_elements(); |
&hidden_form_elements(); |
|
|
foreach my $menu_item (@menu) { |
foreach my $menu_item (@menu) { |
$menu_html.='<p>'; |
$menu_html.='<h3>'; |
$menu_html.='<font size="+1">'; |
|
$menu_html.= |
$menu_html.= |
qq|<a href="javascript:changePage(document.menu,'$menu_item->{'phase'}')">|; |
qq|<a href="javascript:changePage(document.menu,'$menu_item->{'phase'}')">|; |
$menu_html.= &mt($menu_item->{'text'}).'</a></font>'; |
$menu_html.= &mt($menu_item->{'text'}).'</a>'; |
$menu_html.='</p>'; |
$menu_html.='</h3>'; |
} |
} |
|
|
$r->print($menu_html); |
$r->print($menu_html); |
Line 237 sub print_modification_menu {
|
Line 292 sub print_modification_menu {
|
} |
} |
|
|
sub print_ccrole_selected { |
sub print_ccrole_selected { |
my ($r,$cdesc,$domdesc) = @_; |
my ($r,$type) = @_; |
&print_header($r); |
&print_header($r,$type); |
my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'}); |
my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'}); |
$r->print('<form name="ccrole" method="post" action="/adm/roles"> |
$r->print('<form name="ccrole" method="post" action="/adm/roles"> |
<input type="hidden" name="selectrole" value="1" /> |
<input type="hidden" name="selectrole" value="1" /> |
Line 249 sub print_ccrole_selected {
|
Line 304 sub print_ccrole_selected {
|
sub print_settings_display { |
sub print_settings_display { |
my ($r,$cdom,$cnum,$cdesc,$type) = @_; |
my ($r,$cdom,$cnum,$cdesc,$type) = @_; |
my %enrollvar = &get_enrollment_settings($cdom,$cnum); |
my %enrollvar = &get_enrollment_settings($cdom,$cnum); |
my %longtype = &course_settings_descrip(); |
my %longtype = &course_settings_descrip($type); |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'cset' => "Course setting", |
'valu' => 'Current value', |
'valu' => "Current value", |
'cour' => 'Current settings are:', |
'caes' => 'Current automated enrollment settings for ', |
'cose' => "Settings which control auto-enrollment using classlists from your institution's student information system fall into two groups:", |
'cour' => "Course settings that control automated enrollment in this LON-CAPA course are currently:", |
'dcon' => 'Modifiable only by Domain Coordinator', |
'cose' => "Course settings for LON-CAPA courses that control auto-enrollment based on classlist data available from your institution's student information system fall into two groups:", |
'back' => 'Pick another action', |
'dcon' => "Modifiable by DC only", |
|
'back' => "Back to options page", |
|
); |
); |
|
my $ccrole = 'cc'; |
my $cctitle = &Apache::lonnet::plaintext('cc',$type); |
if ($type eq 'Community') { |
|
$ccrole = 'co'; |
|
} |
|
my $cctitle = &Apache::lonnet::plaintext($ccrole,$type); |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
my @modifiable_params = &get_dc_settable(); |
my @modifiable_params = &get_dc_settable($type); |
|
my ($internals,$accessdates) = &autoenroll_keys(); |
|
my @items; |
|
if ((ref($internals) eq 'ARRAY') && (ref($accessdates) eq 'ARRAY')) { |
|
@items = (@{$internals},@{$accessdates}); |
|
} |
my $disp_table = &Apache::loncommon::start_data_table()."\n". |
my $disp_table = &Apache::loncommon::start_data_table()."\n". |
&Apache::loncommon::start_data_table_header_row()."\n". |
&Apache::loncommon::start_data_table_header_row()."\n". |
"<th>$lt{'cset'}</th>\n". |
"<th> </th>\n". |
"<th>$lt{'valu'}</th>\n". |
"<th>$lt{'valu'}</th>\n". |
"<th>$lt{'dcon'}</th>\n". |
"<th>$lt{'dcon'}</th>\n". |
&Apache::loncommon::end_data_table_header_row()."\n"; |
&Apache::loncommon::end_data_table_header_row()."\n"; |
foreach my $key (sort(keys(%enrollvar))) { |
foreach my $item (@items) { |
$disp_table .= &Apache::loncommon::start_data_table_row()."\n". |
$disp_table .= &Apache::loncommon::start_data_table_row()."\n". |
"<td>$longtype{$key}</td>\n". |
"<td><b>$longtype{$item}</b></td>\n". |
"<td>$enrollvar{$key}</td>\n"; |
"<td>$enrollvar{$item}</td>\n"; |
if (grep(/^\Q$key\E$/,@modifiable_params)) { |
if (grep(/^\Q$item\E$/,@modifiable_params)) { |
$disp_table .= '<td>'.&mt('Yes').'</td>'."\n"; |
$disp_table .= '<td align="right">'.&mt('Yes').'</td>'."\n"; |
} else { |
} else { |
$disp_table .= '<td>'.&mt('No').'</td>'."\n"; |
$disp_table .= '<td align="right">'.&mt('No').'</td>'."\n"; |
} |
} |
$disp_table .= &Apache::loncommon::end_data_table_row()."\n"; |
$disp_table .= &Apache::loncommon::end_data_table_row()."\n"; |
} |
} |
$disp_table .= &Apache::loncommon::end_data_table()."\n"; |
$disp_table .= &Apache::loncommon::end_data_table()."\n"; |
&print_header($r,$cdesc); |
&print_header($r,$type); |
$r->print(' |
my $newrole = $ccrole.'./'.$cdom.'/'.$cnum; |
<h3>'.$lt{'caes'}.$cdesc.'</h3> |
my $escuri = &HTML::Entities::encode('/adm/roles?selectrole=1&'.$newrole. |
<form action="/adm/modifycourse" method="post" name="viewparms"> |
'=1&destinationurl=/adm/populate','&<>"'); |
<p> |
$r->print('<h3>'.&mt('Current automated enrollment settings for:'). |
'.$lt{'cose'}.' |
' <span class="LC_nobreak">'.$cdesc.'</span></h3>'. |
<ul><li> |
'<form action="/adm/modifycourse" method="post" name="viewparms">'."\n". |
'.&mt('Settings that can be modified by a [_1] using the [_2]Automated Enrollment Manager[_3].' |
'<p>'.$lt{'cose'}.'<ul>'. |
,$cctitle,'<a href="/adm/populate">','</a>').' |
'<li>'.&mt('Settings modifiable by a [_1] via the [_2]Automated Enrollment Manager[_3] in a course.',$cctitle,'<a href="'.$escuri.'">','</a>').'</li>'. |
</li><li> |
'<li>'.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, and default authentication[_3].',$dctitle,'<a href="javascript:changePage(document.viewparms,'."'setparms'".');">','</a>')."\n". |
'.&mt('Settings that may only be modified by a [_1] from this menu.',$dctitle).' |
'</li></ul></p>'. |
</li></ul> |
'<p>'.$lt{'cour'}.'</p><p>'.$disp_table.'</p><p>'. |
</p><p> |
'<a href="javascript:changePage(document.viewparms,'."'menu'".')">'.$lt{'back'}.'</a>'."\n". |
'.$lt{'cour'}.' |
&hidden_form_elements(). |
</p><p> |
'</p></form>' |
'.$disp_table.' |
); |
</p><p> |
|
<a href="javascript:changePage(document.viewparms,'."'menu'".')">'.$lt{'back'}.'</a> |
|
<a href="javascript:changePage(document.viewparms,'."'setparms'".')">'.&mt('Modify [_1]-only settings',$dctitle).'</a>'."\n". |
|
&hidden_form_elements(). |
|
'</p></form>'); |
|
} |
} |
|
|
sub print_setquota { |
sub print_setquota { |
my ($r,$cdom,$cnum,$cdesc,$type) = @_; |
my ($r,$cdom,$cnum,$cdesc,$type) = @_; |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
|
my $cctitle = &Apache::lonnet::plaintext('cc',$type); |
|
my $subdiv = &mt('Although a [_1] will assign the disk quota for each individual group, the size of the quota is constrained by the total disk space allocated by the [_2] for portfolio files in a course.',$cctitle,$dctitle); |
|
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'cquo' => 'Disk space for storage of group portfolio', |
'cquo' => 'Disk space for storage of group portfolio files for:', |
'gpqu' => 'Course portfolio files disk space', |
'gpqu' => 'Course portfolio files disk space', |
'each' => 'Each course group can be assigned a quota for portfolio files uploaded to the group.', |
|
'modi' => 'Save', |
'modi' => 'Save', |
'back' => "Back to options page", |
'back' => 'Pick another action', |
); |
); |
|
if ($type eq 'Community') { |
|
$lt{'gpqu'} = &mt('Community portfolio files disk space'); |
|
} |
my %settings = &Apache::lonnet::get('environment',['internal.coursequota'],$cdom,$cnum); |
my %settings = &Apache::lonnet::get('environment',['internal.coursequota'],$cdom,$cnum); |
my $coursequota = $settings{'internal.coursequota'}; |
my $coursequota = $settings{'internal.coursequota'}; |
if ($coursequota eq '') { |
if ($coursequota eq '') { |
$coursequota = 20; |
$coursequota = 20; |
} |
} |
&print_header($r,$cdesc); |
&print_header($r,$type); |
my $hidden_elements = &hidden_form_elements(); |
my $hidden_elements = &hidden_form_elements(); |
|
my $helpitem = &Apache::loncommon::help_open_topic('Modify_Course_Quota'); |
$r->print(<<ENDDOCUMENT); |
$r->print(<<ENDDOCUMENT); |
<form action="/adm/modifycourse" method="post" name="setquota"> |
<form action="/adm/modifycourse" method="post" name="setquota"> |
<h3>$lt{'cquo'}.</h3> |
<h3>$lt{'cquo'} <span class="LC_nobreak">$cdesc</span></h3> |
<p> |
<p> |
$lt{'each'}<br /> |
$helpitem $lt{'gpqu'}: <input type="text" size="4" name="coursequota" value="$coursequota" /> Mb |
$subdiv |
|
</p><p> |
|
$lt{'gpqu'}: <input type="text" size="4" name="coursequota" value="$coursequota" /> Mb |
|
<input type="button" onClick="javascript:verify_quota(this.form)" value="$lt{'modi'}" /> |
<input type="button" onClick="javascript:verify_quota(this.form)" value="$lt{'modi'}" /> |
</p> |
</p> |
$hidden_elements |
$hidden_elements |
Line 342 ENDDOCUMENT
|
Line 394 ENDDOCUMENT
|
} |
} |
|
|
sub print_catsettings { |
sub print_catsettings { |
my ($r,$cdom,$cnum,$cdesc) = @_; |
my ($r,$cdom,$cnum,$cdesc,$type) = @_; |
&print_header($r,$cdesc); |
&print_header($r,$type); |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'back' => 'Back to options page', |
'back' => 'Pick another action', |
|
'catset' => 'Catalog Settings for Course', |
|
'visi' => 'Visibility in Course/Community Catalog', |
|
'exclude' => 'Exclude from course catalog:', |
|
'categ' => 'Categorize Course', |
|
'assi' => 'Assign one or more categories and/or subcategories to this course.' |
); |
); |
|
if ($type eq 'Community') { |
|
$lt{'catset'} = &mt('Catalog Settings for Community'); |
|
$lt{'exclude'} = &mt('Exclude from course catalog'); |
|
$lt{'categ'} = &mt('Categorize Community'); |
|
$lt{'assi'} = &mt('Assign one or more subcategories to this community.'); |
|
} |
$r->print('<form action="/adm/modifycourse" method="post" name="catsettings">'. |
$r->print('<form action="/adm/modifycourse" method="post" name="catsettings">'. |
'<h3>'.&mt('Catalog Settings for Course').'</h3>'); |
'<h3>'.$lt{'catset'}.' <span class="LC_nobreak">'.$cdesc.'</span></h3>'); |
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom); |
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom); |
my @cat_params = &catalog_settable($domconf{'coursecategories'}); |
my @cat_params = &catalog_settable($domconf{'coursecategories'},$type); |
if (@cat_params > 0) { |
if (@cat_params > 0) { |
my %currsettings = |
my %currsettings = |
&Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum); |
&Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum); |
Line 361 sub print_catsettings {
|
Line 424 sub print_catsettings {
|
$excludeon = $excludeoff; |
$excludeon = $excludeoff; |
$excludeoff = ''; |
$excludeoff = ''; |
} |
} |
$r->print('<h4>'.&mt('Visibility in Course/Community Catalog').'</h4>'. |
$r->print('<br /><h4>'.$lt{'visi'}.'</h4>'. |
&mt("Unless excluded, a course/community is listed in this domain's publicly accessible Course/Community Catalog, if at least one of the following applies").':<ul>'. |
$lt{'exclude'}. |
'<li>'.&mt('Auto-cataloging is enabled and the course is assigned an institutional code').'</li>'. |
' <label><input name="hidefromcat" type="radio" value="yes" '.$excludeon.' />'.&mt('Yes').'</label> <label><input name="hidefromcat" type="radio" value="" '.$excludeoff.' />'.&mt('No').'</label><br /><p>'); |
'<li>'.&mt('The course has been categorized into at least one of the course categories defined for the domain.').'</li></ul>'. |
if ($type eq 'Community') { |
&mt('Exclude from course catalog').' <label><input name="hidefromcat" type="radio" value="yes" '.$excludeon.' />'.&mt('Yes').'</label> <label><input name="hidefromcat" type="radio" value="" '.$excludeoff.' />'.&mt('No').'</label><br />'); |
$r->print(&mt("If a community has been categorized using at least one of the categories defined for communities in the domain, it will be listed in the domain's publicly accessible Course/Community Catalog, unless excluded.")); |
|
} else { |
|
$r->print(&mt("Unless excluded, a course will be listed in the domain's publicly accessible Course/Community Catalog, if at least one of the following applies").':<ul>'. |
|
'<li>'.&mt('Auto-cataloging is enabled and the course is assigned an institutional code.').'</li>'. |
|
'<li>'.&mt('The course has been categorized using at least one of the course categories defined for the domain.').'</li></ul>'); |
|
} |
|
$r->print('</ul></p>'); |
} |
} |
if (grep(/^categorize$/,@cat_params)) { |
if (grep(/^categorize$/,@cat_params)) { |
$r->print('<h4>'.&mt('Categorize Course').'</h4>'); |
$r->print('<br /><h4>'.$lt{'categ'}.'</h4>'); |
if (ref($domconf{'coursecategories'}) eq 'HASH') { |
if (ref($domconf{'coursecategories'}) eq 'HASH') { |
my $cathash = $domconf{'coursecategories'}{'cats'}; |
my $cathash = $domconf{'coursecategories'}{'cats'}; |
if (ref($cathash) eq 'HASH') { |
if (ref($cathash) eq 'HASH') { |
$r->print(&mt('Assign one or more categories to this course.').'<br /><br />'. |
$r->print($lt{'assi'}.'<br /><br />'. |
&Apache::loncommon::assign_categories_table($cathash, |
&Apache::loncommon::assign_categories_table($cathash, |
$currsettings{'categories'})); |
$currsettings{'categories'},$type)); |
} else { |
} else { |
$r->print(&mt('No categories defined for this domain')); |
$r->print(&mt('No categories defined for this domain')); |
} |
} |
} else { |
} else { |
$r->print(&mt('No categories defined for this domain')); |
$r->print(&mt('No categories defined for this domain')); |
} |
} |
$r->print('<p>'.&mt('If auto-cataloging based on institutional code is enabled in the domain, a course will continue to be listed in the catalog of official courses, in addition to receiving a listing under any manually assigned categor(ies).').'</p>'); |
unless ($type eq 'Community') { |
|
$r->print('<p>'.&mt('If auto-cataloging based on institutional code is enabled in the domain, a course will continue to be listed in the catalog of official courses, in addition to receiving a listing under any manually assigned categor(ies).').'</p>'); |
|
} |
} |
} |
$r->print('<input type="button" name="chgcatsettings" value="'. |
$r->print('<p><input type="button" name="chgcatsettings" value="'. |
&mt('Save').'" onclick="javascript:changePage(document.catsettings,'."'processcat'".');" />'); |
&mt('Save').'" onclick="javascript:changePage(document.catsettings,'."'processcat'".');" /></p>'); |
} else { |
} else { |
$r->print('<span class="LC_warning">'.&mt('Catalog settings in this domain are set in course context via "Set Course Environment".').'</span><br /><br />'."\n". |
$r->print('<span class="LC_warning">'); |
|
if ($type eq 'Community') { |
|
$r->print(&mt('Catalog settings in this domain are set in community context via "Community Configuration".')); |
|
} else { |
|
$r->print(&mt('Catalog settings in this domain are set in course context via "Course Configuration".')); |
|
} |
|
$r->print('</span><br /><br />'."\n". |
'<a href="javascript:changePage(document.catsettings,'."'menu'".');">'. |
'<a href="javascript:changePage(document.catsettings,'."'menu'".');">'. |
$lt{'back'}.'</a>'); |
$lt{'back'}.'</a>'); |
} |
} |
Line 395 sub print_catsettings {
|
Line 472 sub print_catsettings {
|
} |
} |
|
|
sub print_course_modification_page { |
sub print_course_modification_page { |
my ($r,$cdom,$cnum,$cdesc,$domdesc) = @_; |
my ($r,$cdom,$cnum,$cdesc,$type) = @_; |
my %longtype = &course_settings_descrip(); |
|
my %enrollvar = &get_enrollment_settings($cdom,$cnum); |
|
my $ownertable; |
|
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'actv' => "Active", |
'actv' => "Active", |
'inac' => "Inactive", |
'inac' => "Inactive", |
'ccor' => "Course Coordinator", |
|
'noen' => "No end date", |
|
'ownr' => "Owner", |
'ownr' => "Owner", |
'name' => "Name", |
'name' => "Name", |
'unme' => "Username:Domain", |
'unme' => "Username:Domain", |
'stus' => "Status", |
'stus' => "Status", |
'cquo' => "Disk space for storage of group portfolio", |
'nocc' => 'There is currently no owner set for this course.', |
'gpqu' => "Course portfolio files disk space", |
|
'each' => "Each course group can be assigned a quota for portfolio files uploaded to the group.", |
|
'cose' => "Course settings for LON-CAPA courses that control automated student enrollment based on classlist data available from your institution's student information system fall into two groups: (a) settings that can be modified by a Course Coordinator using the ", |
|
'aenm' => "Automated Enrollment Manager", |
|
'andb' => " and (b) settings that may only be modified by a Domain Coordinator via this page.", |
|
'caes' => 'Current automated enrollment settings', |
|
'cour' => "Course settings that control automated enrollment in this LON-CAPA course |
|
are currently:", |
|
'nocc' => "There is currently no course owner set for this course. In addition, no active course coordinators from this LON-CAPA domain were found, so you will not be able assign a course owner. If you wish to assign a course owner, it is recommended that you use the 'User Roles' screen to add a course coordinator with a LON-CAPA account in this domain to the course.", |
|
'ccus' => "A course coordinator can use the 'Automated Enrollment Manager' to change |
|
all settings except course code, course owner, and default authentication method for students added to your course (who are also new to the LON-CAPA system at this domain).", |
|
'ccod' => "Course Code", |
|
'ccus' => "The course code is used during automated enrollment to map the internal LON-CAPA course ID for this course to the corresponding course section ID(s) used by the office responsible for providing official class lists for courses at your institution.", |
|
'cown' => "Course Owner", |
|
'cous' => "The course owner is used in the retrieval of class lists from your institution's student information system when access to class lists data incorporates validation of instructor status.", |
|
'tabl' => 'The table below contains a list of active course coordinators in this course, who are from this domain', |
|
'usrd' => 'Use the radio buttons to select a different course owner.', |
|
'deam' => "Default Authentication method", |
|
'deus' => "The default authentication method, and default authentication parameter (domain, initial password or argument) are used when automatic enrollment of students in a course requires addition of new user accounts in your domain, and the class list file contains empty entries for the <authtype> and <autharg> properties for the new student. If you choose 'internally authenticated', and leave the initial password field empty, the automated enrollment process will create a randomized password for each new student account that it adds to your LON-CAPA domain.", |
|
'gobt' => "Save", |
'gobt' => "Save", |
); |
); |
|
my ($ownertable,$ccrole,$javascript_validations,$authenitems,$ccname); |
my @coursepersonnel = &Apache::lonnet::getkeys('nohist_userroles',$cdom,$cnum); |
my %enrollvar = &get_enrollment_settings($cdom,$cnum); |
my @local_ccs = (); |
if ($type eq 'Community') { |
my %cc_status = (); |
$ccrole = 'co'; |
my %pname = (); |
$lt{'nocc'} = &mt('There is currently no owner set for this community.'); |
my $active_cc; |
} else { |
foreach my $person (@coursepersonnel) { |
$ccrole ='cc'; |
my ($role,$user) = split(/:/,$person,2); |
($javascript_validations,$authenitems) = &gather_authenitems($cdom,\%enrollvar); |
$user =~ s/:$//; |
} |
if (($role eq 'cc') && ($user ne '')) { |
$ccname = &Apache::lonnet::plaintext($ccrole,$type); |
if (!grep(/^\Q$user\E$/,@local_ccs)) { |
my %roleshash = &Apache::lonnet::get_my_roles($cnum,$cdom,'','',[$ccrole]); |
my ($ccname,$ccdom) = split(/:/,$user); |
my (@local_ccs,%cc_status,%pname); |
$active_cc = |
foreach my $item (keys(%roleshash)) { |
&Apache::loncommon::check_user_status($ccdom,$ccname,$cdom, |
my ($uname,$udom) = split(/:/,$item); |
$cnum,'cc'); |
if (!grep(/^\Q$uname\E:\Q$udom\E$/,@local_ccs)) { |
if ($active_cc eq 'active') { |
push(@local_ccs,$uname.':'.$udom); |
push(@local_ccs,$user); |
$pname{$uname.':'.$udom} = &Apache::loncommon::plainname($uname,$udom); |
$pname{$user} = &Apache::loncommon::plainname($ccname,$ccdom); |
$cc_status{$uname.':'.$udom} = $lt{'actv'}; |
$cc_status{$user} = $lt{'actv'}; |
|
} |
|
} |
|
} |
} |
} |
} |
if ( (!grep(/^$enrollvar{'courseowner'}$/,@local_ccs)) && |
if (($enrollvar{'courseowner'} ne '') && |
($enrollvar{'courseowner'} ne '') ) { |
(!grep(/^$enrollvar{'courseowner'}$/,@local_ccs))) { |
my ($owneruname,$ownerdom) = split(/:/,$enrollvar{'courseowner'}); |
|
push(@local_ccs,$enrollvar{'courseowner'}); |
push(@local_ccs,$enrollvar{'courseowner'}); |
|
my ($owneruname,$ownerdom) = split(/:/,$enrollvar{'courseowner'}); |
$pname{$enrollvar{'courseowner'}} = |
$pname{$enrollvar{'courseowner'}} = |
&Apache::loncommon::plainname($owneruname,$ownerdom); |
&Apache::loncommon::plainname($owneruname,$ownerdom); |
$active_cc = &Apache::loncommon::check_user_status($ownerdom,$owneruname, |
my $active_cc = &Apache::loncommon::check_user_status($ownerdom,$owneruname, |
$cdom,$cnum,'cc'); |
$cdom,$cnum,$ccrole); |
if ($active_cc eq 'active') { |
if ($active_cc eq 'active') { |
$cc_status{$enrollvar{'courseowner'}} = $lt{'actv'}; |
$cc_status{$enrollvar{'courseowner'}} = $lt{'actv'}; |
} else { |
} else { |
$cc_status{$enrollvar{'courseowner'}} = $lt{'inac'}; |
$cc_status{$enrollvar{'courseowner'}} = $lt{'inac'}; |
} |
} |
} |
} |
my $numlocalcc = @local_ccs; |
@local_ccs = sort(@local_ccs); |
|
if (@local_ccs == 0) { |
|
$ownertable = $lt{'nocc'}; |
|
} else { |
|
my $numlocalcc = scalar(@local_ccs); |
|
$ownertable = '<input type="hidden" name="numlocalcc" value="'.$numlocalcc.'" />'. |
|
&Apache::loncommon::start_data_table()."\n". |
|
&Apache::loncommon::start_data_table_header_row()."\n". |
|
'<th>'.$lt{'ownr'}.'</th>'. |
|
'<th>'.$lt{'name'}.'</th>'. |
|
'<th>'.$lt{'unme'}.'</th>'. |
|
'<th>'.$lt{'stus'}.'</th>'. |
|
&Apache::loncommon::end_data_table_header_row()."\n"; |
|
foreach my $cc (@local_ccs) { |
|
$ownertable .= &Apache::loncommon::start_data_table_row()."\n"; |
|
if ($cc eq $enrollvar{'courseowner'}) { |
|
$ownertable .= '<td><input type="radio" name="courseowner" value="'.$cc.'" checked="checked" /></td>'."\n"; |
|
} else { |
|
$ownertable .= '<td><input type="radio" name="courseowner" value="'.$cc.'" /></td>'."\n"; |
|
} |
|
$ownertable .= |
|
'<td>'.$pname{$cc}.'</td>'."\n". |
|
'<td>'.$cc.'</td>'."\n". |
|
'<td>'.$cc_status{$cc}.' '.$ccname.'</td>'."\n". |
|
&Apache::loncommon::end_data_table_row()."\n"; |
|
} |
|
$ownertable .= &Apache::loncommon::end_data_table(); |
|
} |
|
&print_header($r,$type,$javascript_validations); |
|
my $dctitle = &Apache::lonnet::plaintext('dc'); |
|
my $mainheader = &modifiable_only_title($type); |
|
my $hidden_elements = &hidden_form_elements(); |
|
$r->print('<form action="/adm/modifycourse" method="post" name="'.$env{'form.phase'}.'">'."\n". |
|
'<h3>'.$mainheader.' <span class="LC_nobreak">'.$cdesc.'</span></h3><p>'. |
|
&Apache::lonhtmlcommon::start_pick_box()); |
|
if ($type eq 'Community') { |
|
$r->print(&Apache::lonhtmlcommon::row_title( |
|
&Apache::loncommon::help_open_topic('Modify_Community_Owner'). |
|
' '.&mt('Community Owner'))."\n"); |
|
} else { |
|
$r->print(&Apache::lonhtmlcommon::row_title( |
|
&Apache::loncommon::help_open_topic('Modify_Course_Instcode'). |
|
' '.&mt('Course Code'))."\n". |
|
'<input type="text" size="10" name="coursecode" value="'.$enrollvar{'coursecode'}.'" />'. |
|
&Apache::lonhtmlcommon::row_closure(). |
|
&Apache::lonhtmlcommon::row_title( |
|
&Apache::loncommon::help_open_topic('Modify_Course_Defaultauth'). |
|
' '.&mt('Default Authentication method'))."\n". |
|
$authenitems."\n". |
|
&Apache::lonhtmlcommon::row_closure(). |
|
&Apache::lonhtmlcommon::row_title( |
|
&Apache::loncommon::help_open_topic('Modify_Course_Owner'). |
|
' '.&mt('Course Owner'))."\n"); |
|
} |
|
$r->print($ownertable."\n".&Apache::lonhtmlcommon::row_closure(1). |
|
&Apache::lonhtmlcommon::end_pick_box().'</p><p>'.$hidden_elements. |
|
'<input type="button" onclick="javascript:changePage(this.form,'."'processparms'".');'); |
|
if ($type eq 'Community') { |
|
$r->print('this.form.submit();"'); |
|
} else { |
|
$r->print('javascript:verify_message(this.form);"'); |
|
} |
|
$r->print('value="'.$lt{'gobt'}.'" /></p></form>'); |
|
return; |
|
} |
|
|
|
sub modifiable_only_title { |
|
my ($type) = @_; |
|
my $dctitle = &Apache::lonnet::plaintext('dc'); |
|
if ($type eq 'Community') { |
|
return &mt('Community settings modifiable only by [_1] for:',$dctitle); |
|
} else { |
|
return &mt('Course settings modifiable only by [_1] for:',$dctitle); |
|
} |
|
} |
|
|
my $helplink=&Apache::loncommon::help_open_topic('Modify_Course',&mt("Help on Modifying Courses")); |
sub gather_authenitems { |
|
my ($cdom,$enrollvar) = @_; |
my ($krbdef,$krbdefdom)=&Apache::loncommon::get_kerberos_defaults($cdom); |
my ($krbdef,$krbdefdom)=&Apache::loncommon::get_kerberos_defaults($cdom); |
my $curr_authtype = ''; |
my $curr_authtype = ''; |
my $curr_authfield = ''; |
my $curr_authfield = ''; |
if ($enrollvar{'authtype'} =~ /^krb/) { |
if (ref($enrollvar) eq 'HASH') { |
$curr_authtype = 'krb'; |
if ($enrollvar->{'authtype'} =~ /^krb/) { |
} elsif ($enrollvar{'authtype'} eq 'internal' ) { |
$curr_authtype = 'krb'; |
$curr_authtype = 'int'; |
} elsif ($enrollvar->{'authtype'} eq 'internal' ) { |
} elsif ($enrollvar{'authtype'} eq 'localauth' ) { |
$curr_authtype = 'int'; |
$curr_authtype = 'loc'; |
} elsif ($enrollvar->{'authtype'} eq 'localauth' ) { |
|
$curr_authtype = 'loc'; |
|
} |
} |
} |
unless ($curr_authtype eq '') { |
unless ($curr_authtype eq '') { |
$curr_authfield = $curr_authtype.'arg'; |
$curr_authfield = $curr_authtype.'arg'; |
} |
} |
my $javascript_validations=&Apache::lonuserutils::javascript_validations('modifycourse',$krbdefdom,$curr_authtype,$curr_authfield); |
my $javascript_validations = |
|
&Apache::lonuserutils::javascript_validations('modifycourse',$krbdefdom, |
|
$curr_authtype,$curr_authfield); |
my %param = ( formname => 'document.'.$env{'form.phase'}, |
my %param = ( formname => 'document.'.$env{'form.phase'}, |
kerb_def_dom => $krbdefdom, |
kerb_def_dom => $krbdefdom, |
kerb_def_auth => $krbdef, |
kerb_def_auth => $krbdef, |
mode => 'modifycourse', |
mode => 'modifycourse', |
curr_authtype => $curr_authtype, |
curr_authtype => $curr_authtype, |
curr_autharg => $enrollvar{'autharg'} |
curr_autharg => $enrollvar->{'autharg'} |
); |
); |
my (%authform,$authenitems); |
my (%authform,$authenitems); |
$authform{'krb'} = &Apache::loncommon::authform_kerberos(%param); |
$authform{'krb'} = &Apache::loncommon::authform_kerberos(%param); |
$authform{'int'} = &Apache::loncommon::authform_internal(%param); |
$authform{'int'} = &Apache::loncommon::authform_internal(%param); |
Line 499 all settings except course code, course
|
Line 628 all settings except course code, course
|
if ($authform{$item} ne '') { |
if ($authform{$item} ne '') { |
$authenitems .= $authform{$item}.'<br />'; |
$authenitems .= $authform{$item}.'<br />'; |
} |
} |
} |
|
if ($numlocalcc == 0) { |
|
$ownertable = $lt{'nocc'}; |
|
} |
|
|
|
if ($numlocalcc > 0) { |
|
@local_ccs = sort @local_ccs; |
|
$ownertable = qq( |
|
<input type="hidden" name="numlocalcc" value="$numlocalcc" /> |
|
<table> |
|
<tr> |
|
<td>$lt{'tabl'} - $cdom ($domdesc). $lt{'usrd'} |
|
</td> |
|
</tr> |
|
<tr><td> </td></tr> |
|
<tr> |
|
<td>). |
|
&Apache::loncommon::start_data_table()."\n". |
|
&Apache::loncommon::start_data_table_header_row()."\n". |
|
"<th>$lt{'ownr'}</th>\n". |
|
"<th>$lt{'name'}</th>\n". |
|
"<th>$lt{'unme'}</th>\n". |
|
"<th>$lt{'stus'}</th>\n". |
|
&Apache::loncommon::end_data_table_header_row()."\n"; |
|
foreach my $cc (@local_ccs) { |
|
$ownertable .= &Apache::loncommon::start_data_table_row()."\n"; |
|
if ($cc eq $enrollvar{'courseowner'}) { |
|
$ownertable .= '<td><input type="radio" name="courseowner" value="'.$cc.'" checked="checked" /></td>'."\n"; |
|
} else { |
|
$ownertable .= '<td><input type="radio" name="courseowner" value="'.$cc.'" /></td>'."\n"; |
|
} |
|
$ownertable .= |
|
'<td>'.$pname{$cc}.'</td>'."\n". |
|
'<td>'.$cc.'</td>'."\n". |
|
'<td>'.$cc_status{$cc}.' '.$lt{'ccor'}.'</td>'."\n". |
|
&Apache::loncommon::end_data_table_row()."\n"; |
|
} |
|
$ownertable .= &Apache::loncommon::end_data_table()." |
|
</td> |
|
</tr> |
|
</table>"; |
|
} |
|
&print_header($r,$cdesc,$javascript_validations); |
|
my $type = $env{'form.type'}; |
|
if ($type eq '') { |
|
$type = 'Course'; |
|
} |
} |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
return($javascript_validations,$authenitems); |
my $cctitle = &Apache::lonnet::plaintext('cc',$type); |
|
my $mainheader = &mt('Course settings modifiable by [_1] only.',$dctitle); |
|
my $hidden_elements = &hidden_form_elements(); |
|
$r->print(<<ENDDOCUMENT); |
|
<form action="/adm/modifycourse" method="post" name="$env{'form.phase'}"> |
|
<h3>$mainheader</h3> |
|
</p><p> |
|
<table width="100%" cellspacing="6" cellpadding="6"> |
|
<tr> |
|
<td colspan="2">Use the appropriate text boxes and radio buttons below to change some or all of the four automated enrollment settings that may only be changed by a Domain Coordinator. |
|
</tr> |
|
<tr> |
|
<td width="50%" valign="top"> |
|
<b>$lt{'ccod'}:</b> |
|
<input type="text" size="10" name="coursecode" value="$enrollvar{'coursecode'}"/><br/><br/> |
|
$lt{'ccus'} |
|
</td> |
|
<td width="50%" valign="top" rowspan="2"> |
|
<b>$lt{'cown'}:</b><br/><br/> |
|
$ownertable |
|
<br/><br/> |
|
$lt{'cous'} |
|
</td> |
|
</tr> |
|
<tr> |
|
<td width="50%" valign="top"> |
|
<b>$lt{'deam'}:</b><br/><br/> |
|
$authenitems |
|
<br/> |
|
$lt{'deus'}. |
|
</td> |
|
<td width="50%"> </td> |
|
</tr> |
|
</table> |
|
<table width="90%" cellpadding="5" cellspacing="0"> |
|
<tr> |
|
<td align="left"> |
|
$hidden_elements |
|
<input type="button" onClick="javascript:changePage(this.form,'processparms');javascript:verify_message(this.form)" value="$lt{'gobt'}" /> |
|
</td> |
|
</tr> |
|
</table> |
|
</form> |
|
<br/> |
|
<br/> |
|
ENDDOCUMENT |
|
return; |
|
} |
} |
|
|
sub modify_course { |
sub modify_course { |
my ($r,$cdom,$cnum,$cdesc,$domdesc,$type) = @_; |
my ($r,$cdom,$cnum,$cdesc,$domdesc,$type) = @_; |
my %longtype = &course_settings_descrip(); |
my %longtype = &course_settings_descrip($type); |
my %settings = &Apache::lonnet::get('environment',['internal.courseowner','internal.coursecode','internal.authtype','internal.autharg','internal.sectionnums','internal.crosslistings','description'],$cdom,$cnum); |
my @items = ('internal.courseowner','description'); |
my %currattr = (); |
unless ($type eq 'Community') { |
my %newattr = (); |
push(@items,('internal.coursecode','internal.authtype','internal.autharg', |
my %cenv = (); |
'internal.sectionnums','internal.crosslistings')); |
my $response; |
|
my $chgresponse; |
|
my $nochgresponse; |
|
my $warning; |
|
my $reply; |
|
my @changes = (); |
|
my @nochanges = (); |
|
my @sections = (); |
|
my @xlists = (); |
|
my %changed = ( code => 0, |
|
owner => 0, |
|
); |
|
unless ($settings{'internal.sectionnums'} eq '') { |
|
if ($settings{'internal.sectionnums'} =~ m/,/) { |
|
@sections = split/,/,$settings{'internal.sectionnums'}; |
|
} else { |
|
$sections[0] = $settings{'internal.sectionnums'}; |
|
} |
|
} |
|
unless ($settings{'internal.crosslistings'} eq'') { |
|
if ($settings{'internal.crosslistings'} =~ m/,/) { |
|
@xlists = split/,/,$settings{'internal.crosslistings'}; |
|
} else { |
|
$xlists[0] = $settings{'internal.crosslistings'}; |
|
} |
|
} |
} |
|
my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum); |
my @modifiable_params = &get_dc_settable(); |
my $description = $settings{'description'}; |
|
my ($ccrole,$response,$chgresponse,$nochgresponse,$reply,%currattr,%newattr,%cenv,%changed, |
|
@changes,@nochanges,@sections,@xlists,@warnings); |
|
my @modifiable_params = &get_dc_settable($type); |
foreach my $param (@modifiable_params) { |
foreach my $param (@modifiable_params) { |
my $attr = 'internal.'.$param; |
$currattr{$param} = $settings{'internal.'.$param}; |
$currattr{$param} = $settings{$attr}; |
|
} |
} |
|
if ($type eq 'Community') { |
my $description = $settings{'description'}; |
%changed = ( owner => 0 ); |
|
$ccrole = 'co'; |
if ($env{'form.login'} eq 'krb') { |
} else { |
$newattr{'authtype'} = $env{'form.login'}; |
%changed = ( code => 0, |
$newattr{'authtype'} .= $env{'form.krbver'}; |
owner => 0, |
$newattr{'autharg'} = $env{'form.krbarg'}; |
); |
} elsif ($env{'form.login'} eq 'int') { |
$ccrole = 'cc'; |
$newattr{'authtype'} ='internal'; |
unless ($settings{'internal.sectionnums'} eq '') { |
if ((defined($env{'form.intarg'})) && ($env{'form.intarg'})) { |
if ($settings{'internal.sectionnums'} =~ m/,/) { |
$newattr{'autharg'} = $env{'form.intarg'}; |
@sections = split/,/,$settings{'internal.sectionnums'}; |
} |
} else { |
} elsif ($env{'form.login'} eq 'loc') { |
$sections[0] = $settings{'internal.sectionnums'}; |
$newattr{'authtype'} = 'localauth'; |
} |
if ((defined($env{'form.locarg'})) && ($env{'form.locarg'})) { |
} |
$newattr{'autharg'} = $env{'form.locarg'}; |
unless ($settings{'internal.crosslistings'} eq'') { |
} |
if ($settings{'internal.crosslistings'} =~ m/,/) { |
} |
@xlists = split/,/,$settings{'internal.crosslistings'}; |
if ( $newattr{'authtype'}=~ /^krb/) { |
} else { |
if ($newattr{'autharg'} eq '') { |
$xlists[0] = $settings{'internal.crosslistings'}; |
$warning = '<p class="LC_warning">' |
} |
.&mt('As you did not include the default Kerberos domain' |
} |
|
if ($env{'form.login'} eq 'krb') { |
|
$newattr{'authtype'} = $env{'form.login'}; |
|
$newattr{'authtype'} .= $env{'form.krbver'}; |
|
$newattr{'autharg'} = $env{'form.krbarg'}; |
|
} elsif ($env{'form.login'} eq 'int') { |
|
$newattr{'authtype'} ='internal'; |
|
if ((defined($env{'form.intarg'})) && ($env{'form.intarg'})) { |
|
$newattr{'autharg'} = $env{'form.intarg'}; |
|
} |
|
} elsif ($env{'form.login'} eq 'loc') { |
|
$newattr{'authtype'} = 'localauth'; |
|
if ((defined($env{'form.locarg'})) && ($env{'form.locarg'})) { |
|
$newattr{'autharg'} = $env{'form.locarg'}; |
|
} |
|
} |
|
if ( $newattr{'authtype'}=~ /^krb/) { |
|
if ($newattr{'autharg'} eq '') { |
|
push(@warnings, |
|
&mt('As you did not include the default Kerberos domain' |
.' to be used for authentication in this class, the' |
.' to be used for authentication in this class, the' |
.' institutional data used by the automated' |
.' institutional data used by the automated' |
.' enrollment process must include the Kerberos' |
.' enrollment process must include the Kerberos' |
.' domain for each new student.') |
.' domain for each new student.')); |
.'</p>'; |
} |
|
} |
|
|
|
if ( exists($env{'form.coursecode'}) ) { |
|
$newattr{'coursecode'}=$env{'form.coursecode'}; |
|
unless ( $newattr{'coursecode'} eq $currattr{'coursecode'} ) { |
|
$changed{'code'} = 1; |
|
} |
} |
} |
} |
} |
|
|
Line 671 sub modify_course {
|
Line 710 sub modify_course {
|
$changed{'owner'} = 1; |
$changed{'owner'} = 1; |
} |
} |
} |
} |
|
|
if ( exists($env{'form.coursecode'}) ) { |
|
$newattr{'coursecode'}=$env{'form.coursecode'}; |
|
unless ( $newattr{'coursecode'} eq $currattr{'coursecode'} ) { |
|
$changed{'code'} = 1; |
|
} |
|
} |
|
if ($changed{'owner'} || $changed{'code'}) { |
if ($changed{'owner'} || $changed{'code'}) { |
my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum, |
my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum, |
undef,undef,'.'); |
undef,undef,'.'); |
if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') { |
if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') { |
$crsinfo{$env{'form.pickedcourse'}}{'inst_code'} = $env{'form.coursecode'}; |
if ($changed{'code'}) { |
$crsinfo{$env{'form.pickedcourse'}}{'owner'} = $env{'form.courseowner'}; |
$crsinfo{$env{'form.pickedcourse'}}{'inst_code'} = $env{'form.coursecode'}; |
|
} |
|
if ($changed{'owner'}) { |
|
$crsinfo{$env{'form.pickedcourse'}}{'owner'} = $env{'form.courseowner'}; |
|
} |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime'); |
my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime'); |
} |
} |
Line 692 sub modify_course {
|
Line 729 sub modify_course {
|
if ($currattr{$param} eq $newattr{$param}) { |
if ($currattr{$param} eq $newattr{$param}) { |
push(@nochanges,$param); |
push(@nochanges,$param); |
} else { |
} else { |
my $attr = 'internal.'.$param; |
$cenv{'internal.'.$param} = $newattr{$param}; |
$cenv{$attr} = $newattr{$param}; |
|
push(@changes,$param); |
push(@changes,$param); |
} |
} |
} |
} |
if (@changes > 0) { |
if (@changes > 0) { |
$chgresponse = &mt("The following automated enrollment parameters have been changed:<br/><ul>"); |
$chgresponse = &mt("The following settings have been changed:<br/><ul>"); |
} |
} |
if (@nochanges > 0) { |
if (@nochanges > 0) { |
$nochgresponse = &mt("The following automated enrollment parameters remain unchanged:<br/><ul>"); |
$nochgresponse = &mt("The following settings remain unchanged:<br/><ul>"); |
} |
} |
if (@changes > 0) { |
if (@changes > 0) { |
my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,$cnum); |
my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,$cnum); |
if ($putreply !~ /^ok$/) { |
if ($putreply !~ /^ok$/) { |
$response = &mt("There was a problem processing your requested changes. The automated enrollment settings for this course have been left unchanged.<br/>").&mt('Error: ').$putreply; |
$response = '<p class="LC_error">'. |
|
&mt('There was a problem processing your requested changes.').'<br />'; |
|
if ($type eq 'Community') { |
|
$response .= &mt('Settings for this community have been left unchanged.'); |
|
} else { |
|
$response .= &mt('Settings for this course have been left unchanged.'); |
|
} |
|
$response .= '<br/>'.&mt('Error: ').$putreply.'</p>'; |
} else { |
} else { |
foreach my $attr (@modifiable_params) { |
foreach my $attr (@modifiable_params) { |
if (grep/^$attr$/,@changes) { |
if (grep/^\Q$attr\E$/,@changes) { |
$chgresponse .= "<li>$longtype{$attr} ".&mt("now set to \"").$newattr{$attr}."\".</li>"; |
$chgresponse .= '<li>'.$longtype{$attr}.' '.&mt('now set to:').' "'.$newattr{$attr}.'".</li>'; |
} else { |
} else { |
$nochgresponse .= "<li>$longtype{$attr} ".&mt("still set to \"").$currattr{$attr}."\".</li>"; |
$nochgresponse .= '<li>'.$longtype{$attr}.' '.&mt('still set to:').' "'.$currattr{$attr}.'".</li>'; |
} |
} |
} |
} |
if ($changed{'code'} || $changed{'owner'}) { |
if (($type ne 'Community') && ($changed{'code'} || $changed{'owner'})) { |
if ( $newattr{'courseowner'} eq '') { |
if ( $newattr{'courseowner'} eq '') { |
$warning .= &mt("There is no owner associated with this LON-CAPA course. If automated enrollment in LON-CAPA courses at your institution requires validation of course owners, automated enrollment will fail for this course.<br/>"); |
push(@warnings,&mt('There is no owner associated with this LON-CAPA course.'). |
|
'<br />'.&mt('If automated enrollment at your institution requires validation of course owners, automated enrollment will fail.')); |
} else { |
} else { |
if (@sections > 0) { |
if (@sections > 0) { |
if ($changed{'code'}) { |
if ($changed{'code'}) { |
foreach my $sec (@sections) { |
foreach my $sec (@sections) { |
if ($sec =~ m/^(.+):/) { |
if ($sec =~ m/^(.+):/) { |
|
my $instsec = $1; |
my $inst_course_id = $newattr{'coursecode'}.$1; |
my $inst_course_id = $newattr{'coursecode'}.$1; |
my $course_check = &Apache::lonnet::auto_validate_courseID($cnum,$cdom,$inst_course_id); |
my $course_check = &Apache::lonnet::auto_validate_courseID($cnum,$cdom,$inst_course_id); |
if ($course_check eq 'ok') { |
if ($course_check eq 'ok') { |
my $outcome = &Apache::lonnet::auto_new_course($cnum,$cdom,$inst_course_id,$newattr{'courseowner'}); |
my $outcome = &Apache::lonnet::auto_new_course($cnum,$cdom,$inst_course_id,$newattr{'courseowner'}); |
unless ($outcome eq 'ok') { |
unless ($outcome eq 'ok') { |
$warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $1 for the following reason: $outcome.<br/>"); |
|
|
push(@warnings,&mt('If automatic enrollment is enabled for "[_1]" automated enrollment may fail for "[_2]" - section: [_3], for the following reason: "[_4]"',$description,$newattr{'coursecode'},$instsec,$outcome).'<br/>'); |
} |
} |
} else { |
} else { |
$warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $1 for the following reason: $course_check.<br/>"); |
push(@warnings,&mt('If automatic enrollment is enabled for "[_1]" automated enrollment may fail for "[_2]" - section: [_3], for the following reason: "[_4]"',$description,$newattr{'coursecode'},$instsec,$course_check)); |
} |
} |
} else { |
} else { |
$warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $sec because this is not a valid section entry.<br/>"); |
push(@warnings,&mt('If automatic enrollment is enabled for "[_1]", automated enrollment may fail for "[_2]" - section: [_3], because this is not a valid section entry.',$description,$newattr{'coursecode'},$sec)); |
} |
} |
} |
} |
} elsif ($changed{'owner'}) { |
} elsif ($changed{'owner'}) { |
foreach my $sec (@sections) { |
foreach my $sec (@sections) { |
if ($sec =~ m/^(.+):/) { |
if ($sec =~ m/^(.+):/) { |
my $inst_course_id = $newattr{'coursecode'}.$1; |
my $instsec = $1; |
|
my $inst_course_id = $newattr{'coursecode'}.$instsec; |
my $outcome = &Apache::lonnet::auto_new_course($cnum,$cdom,$inst_course_id,$newattr{'courseowner'}); |
my $outcome = &Apache::lonnet::auto_new_course($cnum,$cdom,$inst_course_id,$newattr{'courseowner'}); |
unless ($outcome eq 'ok') { |
unless ($outcome eq 'ok') { |
$warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $1 for the following reason: $outcome.<br/>"); |
push(@warnings,&mt('If automatic enrollment is enabled for "[_1]", automated enrollment may fail for "[_2]" - section [_3] for the following reason: "[_4]".',$description,$newattr{'coursecode'},$instsec,$outcome)); |
} |
} |
} else { |
} else { |
$warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $sec because this is not a valid section entry.<br/>"); |
push(@warnings,&mt('If automatic enrollment is enabled for "[_1]", automated enrollment may fail for "[_2]" - section [_3] because this is not a valid section entry.',$description,$newattr{'coursecode'},$sec)); |
} |
} |
} |
} |
} |
} |
} else { |
} else { |
$warning .= &mt("As no section numbers are currently listed for LON-CAPA course: ").$description.&mt(", automated enrollment will not occur for any sections of coursecode: ").$newattr{'coursecode'}."<br/>"; |
push(@warnings,&mt('As no section numbers are currently listed for "[_1]" automated enrollment will not occur for any sections of institutional course code: "[_2]".',$description,$newattr{'coursecode'})); |
} |
} |
if ( (@xlists > 0) && ($changed{'owner'}) ) { |
if ( (@xlists > 0) && ($changed{'owner'}) ) { |
foreach my $xlist (@xlists) { |
foreach my $xlist (@xlists) { |
if ($xlist =~ m/^(.+):/) { |
if ($xlist =~ m/^(.+):/) { |
my $outcome = &Apache::lonnet::auto_new_course($cnum,$cdom,$1,$newattr{'courseowner'}); |
my $instxlist = $1; |
|
my $outcome = &Apache::lonnet::auto_new_course($cnum,$cdom,$instxlist,$newattr{'courseowner'}); |
unless ($outcome eq 'ok') { |
unless ($outcome eq 'ok') { |
$warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for crosslisted class: ").$1.&mt(" for the following reason: $outcome.<br/>"); |
push(@warnings,&mt('If automatic enrollment is enabled for "[_1]", automated enrollment may fail for crosslisted class "[_2]" for the following reason: "[_3]".',$description,$instxlist,$outcome)); |
} |
} |
} |
} |
} |
} |
Line 768 sub modify_course {
|
Line 816 sub modify_course {
|
} |
} |
} else { |
} else { |
foreach my $attr (@modifiable_params) { |
foreach my $attr (@modifiable_params) { |
$nochgresponse .= "<li>$longtype{$attr} ".&mt("still set to")." \"".$currattr{$attr}."\".</li>"; |
$nochgresponse .= '<li>'.$longtype{$attr}.' '.&mt('still set to').' "'.$currattr{$attr}.'".</li>'; |
} |
} |
} |
} |
|
|
Line 778 sub modify_course {
|
Line 826 sub modify_course {
|
if (@nochanges > 0) { |
if (@nochanges > 0) { |
$nochgresponse .= "</ul><br/><br/>"; |
$nochgresponse .= "</ul><br/><br/>"; |
} |
} |
unless ($warning eq '') { |
my ($warning,$numwarnings); |
$warning = &mt("The following warning messages were generated as a result of applying the changes you specified to course settings that can affect the automated enrollment process:<br/><br/>").$warning; |
my $numwarnings = scalar(@warnings); |
|
if ($numwarnings) { |
|
$warning = &mt('The following [quant,_1,warning was,warnings were] generated when applying your changes to automated enrollment:',$numwarnings).'<p><ul>'; |
|
foreach my $warn (@warnings) { |
|
$warning .= '<li><span class="LC_warning">'.$warn.'</span></li>'; |
|
} |
|
$warning .= '</ul></p>'; |
} |
} |
if ($response eq '') { |
if ($response) { |
$reply = $chgresponse.$nochgresponse.$warning; |
|
} else { |
|
$reply = $response; |
$reply = $response; |
|
} else { |
|
$reply = $chgresponse.$nochgresponse.$warning; |
} |
} |
&print_header($r,$cdesc); |
&print_header($r,$type); |
$reply = '<h3>'. |
my $mainheader = &modifiable_only_title($type); |
&mt('Result of Changes to Automated Enrollment Settings.'). |
$reply = '<h3>'.$mainheader.' <span class="LC_nobreak">'.$cdesc.'</span></h3>'."\n". |
'</h3>'."\n". |
'<p>'.$reply.'</p>'."\n". |
'<table><tr><td>'.$reply.'</td></tr></table>'. |
|
'<form action="/adm/modifycourse" method="post" name="processparms">'. |
'<form action="/adm/modifycourse" method="post" name="processparms">'. |
&hidden_form_elements(). |
&hidden_form_elements(). |
'<a href="javascript:changePage(document.processparms,'."'menu'".')">'.&mt('Back to options page').'</a> |
'<a href="javascript:changePage(document.processparms,'."'menu'".')">'. |
</form>'; |
&mt('Pick another action').'</a>'; |
|
if ($numwarnings) { |
|
my $newrole = $ccrole.'./'.$cdom.'/'.$cnum; |
|
my $escuri = &HTML::Entities::encode('/adm/roles?selectrole=1&'.$newrole. |
|
'=1&destinationurl=/adm/populate','&<>"'); |
|
|
|
$reply .= '<br /><a href="'.$escuri.'">'. |
|
&mt('Go to Automated Enrollment Manager for course').'</a>'; |
|
} |
|
$reply .= '</form>'; |
$r->print($reply); |
$r->print($reply); |
return; |
return; |
} |
} |
|
|
sub modify_quota { |
sub modify_quota { |
my ($r,$cdom,$cnum,$cdesc,$domdesc) = @_; |
my ($r,$cdom,$cnum,$cdesc,$domdesc,$type) = @_; |
&print_header($r,$cdesc); |
&print_header($r,$type); |
|
$r->print('<form action="/adm/modifycourse" method="post" name="processquota">'."\n". |
my %lt = &Apache::lonlocal::texthash( |
'<h3>'.&mt('Disk space for storage of group portfolio files for:'). |
'back' => 'Back to options page', |
' <span class="LC_nobreak">'.$cdesc.'</span></h3><br />'); |
); |
|
$r->print(' |
|
<form action="/adm/modifycourse" method="post" name="processquota"> |
|
<h3>'.&mt('Disk space for storage of group portfolio for [_1]',$cdesc). |
|
'</h3>'); |
|
my %oldsettings = &Apache::lonnet::get('environment',['internal.coursequota'],$cdom,$cnum); |
my %oldsettings = &Apache::lonnet::get('environment',['internal.coursequota'],$cdom,$cnum); |
my $defaultquota = 20; |
my $defaultquota = 20; |
if ($env{'form.coursequota'} ne '') { |
if ($env{'form.coursequota'} ne '') { |
Line 817 sub modify_quota {
|
Line 874 sub modify_quota {
|
if ($newquota =~ /^\s*(\d+\.?\d*|\.\d+)\s*$/) { |
if ($newquota =~ /^\s*(\d+\.?\d*|\.\d+)\s*$/) { |
$newquota = $1; |
$newquota = $1; |
if ($oldsettings{'internal.coursequota'} eq $env{'form.coursequota'}) { |
if ($oldsettings{'internal.coursequota'} eq $env{'form.coursequota'}) { |
$r->print(&mt('The disk space allocated for group portfolio remains unchanged as ').$env{'form.coursequota'}.' Mb'); |
$r->print(&mt('The disk space allocated for group portfolio files remains unchanged as [_1] Mb.',$env{'form.coursequota'})); |
} else { |
} else { |
my %cenv = ( |
my %cenv = ( |
'internal.coursequota' => $env{'form.coursequota'}, |
'internal.coursequota' => $env{'form.coursequota'}, |
Line 826 sub modify_quota {
|
Line 883 sub modify_quota {
|
$cnum); |
$cnum); |
if (($oldsettings{'internal.coursequota'} eq '') && |
if (($oldsettings{'internal.coursequota'} eq '') && |
($env{'form.coursequota'} == $defaultquota)) { |
($env{'form.coursequota'} == $defaultquota)) { |
$r->print(&mt('The disk space allocated for group portfolio in this course is the default quota for this domain:').' '.$defaultquota.' Mb'); |
if ($type eq 'Community') { |
|
$r->print(&mt('The disk space allocated for group portfolio files in this community is the default quota for this domain: [_1] Mb.',$defaultquota)); |
|
} else { |
|
$r->print(&mt('The disk space allocated for group portfolio files in this course is the default quota for this domain: [_1] Mb.',$defaultquota)); |
|
} |
} else { |
} else { |
if ($putreply eq 'ok') { |
if ($putreply eq 'ok') { |
my %updatedsettings = &Apache::lonnet::get('environment',['internal.coursequota'],$cdom,$cnum); |
my %updatedsettings = &Apache::lonnet::get('environment',['internal.coursequota'],$cdom,$cnum); |
$r->print(&mt('The disk space allocated for group portfolio is now:').' '.$updatedsettings{'internal.coursequota'}.' Mb.'); |
$r->print(&mt('The disk space allocated for group portfolio files is now: [_1] Mb.',$updatedsettings{'internal.coursequota'})); |
my $usage = &Apache::longroup::sum_quotas($cdom.'_'.$cnum); |
my $usage = &Apache::longroup::sum_quotas($cdom.'_'.$cnum); |
if ($usage >= $updatedsettings{'internal.coursequota'}) { |
if ($usage >= $updatedsettings{'internal.coursequota'}) { |
my $newoverquota; |
my $newoverquota; |
if ($usage < $oldsettings{'internal.coursequota'}) { |
if ($usage < $oldsettings{'internal.coursequota'}) { |
$newoverquota = 'now'; |
$newoverquota = 'now'; |
} |
} |
$r->print('<br /><br />'. |
$r->print('<p>'); |
&mt('Disk usage [_1] exceeds the quota for this course.',$newoverquota).' '. |
if ($type eq 'Community') { |
&mt('Upload of new portfolio files and assignment of a non-zero Mb quota to new groups in the course will not be possible until some files have been deleted, and total usage is below course quota.')); |
$r->print(&mt('Disk usage [_1] exceeds the quota for this community.',$newoverquota).' '. |
|
&mt('Upload of new portfolio files and assignment of a non-zero Mb quota to new groups in the community will not be possible until some files have been deleted, and total usage is below community quota.')); |
|
} else { |
|
$r->print(&mt('Disk usage [_1] exceeds the quota for this course.',$newoverquota).' '. |
|
&mt('Upload of new portfolio files and assignment of a non-zero Mb quota to new groups in the course will not be possible until some files have been deleted, and total usage is below course quota.')); |
|
} |
|
$r->print('</p>'); |
} |
} |
} else { |
} else { |
$r->print(&mt('There was an error')); |
$r->print(&mt('An error occurred storing the quota for group portfolio files: '). |
|
$putreply); |
} |
} |
} |
} |
} |
} |
Line 850 sub modify_quota {
|
Line 918 sub modify_quota {
|
$r->print(&mt('The new quota requested contained invalid characters, so the quota is unchanged.')); |
$r->print(&mt('The new quota requested contained invalid characters, so the quota is unchanged.')); |
} |
} |
} |
} |
$r->print(qq|<br /><br /> |
$r->print('<p>'. |
<a href="javascript:changePage(document.processquota,'menu')">$lt{'back'}</a>|); |
'<a href="javascript:changePage(document.processquota,'."'menu'".')">'. |
|
&mt('Pick another action').'</a>'); |
$r->print(&hidden_form_elements().'</form>'); |
$r->print(&hidden_form_elements().'</form>'); |
return; |
return; |
} |
} |
|
|
sub modify_catsettings { |
sub modify_catsettings { |
my ($r,$cdom,$cnum,$cdesc,$domdesc) = @_; |
my ($r,$cdom,$cnum,$cdesc,$domdesc,$type) = @_; |
&print_header($r,$cdesc); |
&print_header($r,$type); |
my %lt = &Apache::lonlocal::texthash( |
my ($ccrole,%desc); |
'back' => 'Back to options page', |
if ($type eq 'Community') { |
); |
$desc{'hidefromcat'} = &mt('Excluded from community catalog'); |
my %desc = &Apache::lonlocal::texthash( |
$desc{'categories'} = &mt('Assigned categories for this community'); |
'hidefromcat' => 'Excluded from course catalog', |
$ccrole = 'co'; |
'categories' => 'Assigned categories for this course', |
} else { |
); |
$desc{'hidefromcat'} = &mt('Excluded from course catalog'); |
|
$desc{'categories'} = &mt('Assigned categories for this course'); |
|
$ccrole = 'cc'; |
|
} |
$r->print(' |
$r->print(' |
<form action="/adm/modifycourse" method="post" name="processcat"> |
<form action="/adm/modifycourse" method="post" name="processcat"> |
<h3>'.&mt('Category settings').'</h3>'); |
<h3>'.&mt('Category settings').'</h3>'); |
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom); |
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom); |
my @cat_params = &catalog_settable($domconf{'coursecategories'}); |
my @cat_params = &catalog_settable($domconf{'coursecategories'},$type); |
if (@cat_params > 0) { |
if (@cat_params > 0) { |
my (%cenv,@changes,@nochanges); |
my (%cenv,@changes,@nochanges); |
my %currsettings = |
my %currsettings = |
Line 951 sub modify_catsettings {
|
Line 1023 sub modify_catsettings {
|
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime'); |
my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime'); |
} |
} |
$r->print(&mt('The following changes occurred').'<ul>'); |
$r->print(&mt('The following changes occurred:').'<ul>'); |
foreach my $item (@changes) { |
foreach my $item (@changes) { |
$r->print('<li>'.&mt('[_1] now set to [_2]',$desc{$item},$showitem{$item}).'</li>'); |
$r->print('<li>'.&mt('[_1] now set to: [_2]',$desc{$item},$showitem{$item}).'</li>'); |
} |
} |
$r->print('</ul><br />'); |
$r->print('</ul><br />'); |
} |
} |
} |
} |
if (@nochanges > 0) { |
if (@nochanges > 0) { |
$r->print(&mt('The following were unchanged').'<ul>'); |
$r->print(&mt('The following were unchanged:').'<ul>'); |
foreach my $item (@nochanges) { |
foreach my $item (@nochanges) { |
$r->print('<li>'.&mt('[_1] still set to [_2]',$desc{$item},$showitem{$item}).'</li>'); |
$r->print('<li>'.&mt('[_1] still set to: [_2]',$desc{$item},$showitem{$item}).'</li>'); |
} |
} |
$r->print('</ul>'); |
$r->print('</ul>'); |
} |
} |
} |
} |
} else { |
} else { |
$r->print(&mt('Category settings for courses in this domain should be modified in course context (via "Set Course Environment").').'<br />'); |
my $newrole = $ccrole.'./'.$cdom.'/'.$cnum; |
|
my $escuri = &HTML::Entities::encode('/adm/roles?selectrole=1&'.$newrole. |
|
'=1&destinationurl=/adm/courseprefs','&<>"'); |
|
if ($type eq 'Community') { |
|
$r->print(&mt('Category settings for communities in this domain should be modified in community context (via "[_1]Community Configuration[_2]").','<a href="$escuri">','</a>').'<br />'); |
|
} else { |
|
$r->print(&mt('Category settings for courses in this domain should be modified in course context (via "[_1]Course Configuration[_2]").','<a href="$escuri">','</a>').'<br />'); |
|
} |
} |
} |
$r->print('<br />'."\n". |
$r->print('<br />'."\n". |
'<a href="javascript:changePage(document.processcat,'."'menu'".')">'. |
'<a href="javascript:changePage(document.processcat,'."'menu'".')">'. |
$lt{'back'}.'</a>'); |
&mt('Pick another action').'</a>'); |
$r->print(&hidden_form_elements().'</form>'); |
$r->print(&hidden_form_elements().'</form>'); |
return; |
return; |
} |
} |
|
|
sub print_header { |
sub print_header { |
my ($r,$cdesc,$javascript_validations) = @_; |
my ($r,$type,$javascript_validations) = @_; |
my $phase = "start"; |
my $phase = "start"; |
if ( exists($env{'form.phase'}) ) { |
if ( exists($env{'form.phase'}) ) { |
$phase = $env{'form.phase'}; |
$phase = $env{'form.phase'}; |
Line 1030 ENDSCRIPT
|
Line 1109 ENDSCRIPT
|
add_entries => {'onload' => "javascript:document.ccrole.submit();"}, |
add_entries => {'onload' => "javascript:document.ccrole.submit();"}, |
}; |
}; |
} |
} |
$r->print(&Apache::loncommon::start_page('View/Modify Course Settings', |
$r->print(&Apache::loncommon::start_page('View/Modify Course/Community Settings', |
$js,$starthash)); |
$js,$starthash)); |
my $bread_text = "View/Modify Courses"; |
my $bread_text = "View/Modify Courses/Communities"; |
if ($cdesc ne '') { |
if ($type eq 'Community') { |
$bread_text = &mt('Course Settings: [_1]',$cdesc); |
$bread_text = 'Community Settings'; |
my $no_mt = 1; |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs($bread_text,undef,undef, |
|
undef,undef,$no_mt)); |
|
} else { |
} else { |
$r->print(&Apache::lonhtmlcommon::breadcrumbs($bread_text)); |
$bread_text = 'Course Settings'; |
} |
} |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs($bread_text)); |
return; |
return; |
} |
} |
|
|
Line 1086 sub check_course {
|
Line 1163 sub check_course {
|
} |
} |
|
|
sub course_settings_descrip { |
sub course_settings_descrip { |
my %longtype = &Apache::lonlocal::texthash( |
my ($type) = @_; |
|
my %longtype; |
|
if ($type eq 'Community') { |
|
%longtype = &Apache::lonlocal::texthash( |
|
'courseowner' => "Username:domain of community owner", |
|
); |
|
|
|
} else { |
|
%longtype = &Apache::lonlocal::texthash( |
'authtype' => 'Default authentication method', |
'authtype' => 'Default authentication method', |
'autharg' => 'Default authentication parameter', |
'autharg' => 'Default authentication parameter', |
'autoadds' => 'Automated adds', |
'autoadds' => 'Automated adds', |
Line 1098 sub course_settings_descrip {
|
Line 1183 sub course_settings_descrip {
|
'coursecode' => 'Official course code', |
'coursecode' => 'Official course code', |
'courseowner' => "Username:domain of course owner", |
'courseowner' => "Username:domain of course owner", |
'notifylist' => 'Course Coordinators to be notified of enrollment changes', |
'notifylist' => 'Course Coordinators to be notified of enrollment changes', |
'sectionnums' => 'Course section number(:LON-CAPA section)', |
'sectionnums' => 'Course section number:LON-CAPA section', |
'crosslistings' => 'Crosslisted class(:LON-CAPA section)', |
'crosslistings' => 'Crosslisted class:LON-CAPA section', |
); |
); |
|
} |
return %longtype; |
return %longtype; |
} |
} |
|
|
Line 1135 sub handler {
|
Line 1221 sub handler {
|
if ($phase eq '') { |
if ($phase eq '') { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/modifycourse", |
({href=>"/adm/modifycourse", |
text=>"Course search"}); |
text=>"Course/Community search"}); |
&print_course_search_page($r,$dom,$domdesc); |
&print_course_search_page($r,$dom,$domdesc); |
} else { |
} else { |
my $firstform = $phase; |
my $firstform = $phase; |
if ($phase eq 'courselist') { |
if ($phase eq 'courselist') { |
$firstform = 'filterpicker'; |
$firstform = 'filterpicker'; |
|
} |
|
my $choose_text; |
|
my $type = $env{'form.type'}; |
|
if ($type eq '') { |
|
$type = 'Course'; |
|
} |
|
if ($type eq 'Community') { |
|
$choose_text = "Choose a community"; |
|
} else { |
|
$choose_text = "Choose a course"; |
} |
} |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$firstform,'')", |
({href=>"javascript:changePage(document.$firstform,'')", |
text=>"Course search"}, |
text=>"Course/Community search"}, |
{href=>"javascript:changePage(document.$phase,'courselist')", |
{href=>"javascript:changePage(document.$phase,'courselist')", |
text=>"Choose a course"}); |
text=>$choose_text}); |
if ($phase eq 'courselist') { |
if ($phase eq 'courselist') { |
&print_course_selection_page($r,$dom,$domdesc); |
&print_course_selection_page($r,$dom,$domdesc); |
} else { |
} else { |
my ($checked,$cdesc) = &check_course($r,$dom,$domdesc); |
my ($checked,$cdesc) = &check_course($r,$dom,$domdesc); |
my $type = $env{'form.type'}; |
|
if ($type eq '') { |
|
$type = 'Course'; |
|
} |
|
if ($checked eq 'ok') { |
if ($checked eq 'ok') { |
|
my $enter_text; |
|
if ($type eq 'Community') { |
|
$enter_text = 'Enter community'; |
|
} else { |
|
$enter_text = 'Enter course'; |
|
} |
if ($phase eq 'menu') { |
if ($phase eq 'menu') { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'menu')", |
({href=>"javascript:changePage(document.$phase,'menu')", |
text=>"Pick action"}); |
text=>"Pick action"}); |
&print_modification_menu($r,$cdesc,$domdesc,$dom); |
&print_modification_menu($r,$cdesc,$domdesc,$dom,$type); |
} elsif ($phase eq 'ccrole') { |
} elsif ($phase eq 'ccrole') { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'ccrole')", |
({href=>"javascript:changePage(document.$phase,'ccrole')", |
text=>"Enter course"}); |
text=>$enter_text}); |
&print_ccrole_selected($r,$cdesc,$domdesc); |
&print_ccrole_selected($r,$type); |
} else { |
} else { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'menu')", |
({href=>"javascript:changePage(document.$phase,'menu')", |
Line 1183 sub handler {
|
Line 1281 sub handler {
|
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'$phase')", |
({href=>"javascript:changePage(document.$phase,'$phase')", |
text=>"Result"}); |
text=>"Result"}); |
&modify_quota($r,$cdom,$cnum,$cdesc,$domdesc); |
&modify_quota($r,$cdom,$cnum,$cdesc,$domdesc,$type); |
} elsif ($phase eq 'viewparms') { |
} elsif ($phase eq 'viewparms') { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'viewparms')", |
({href=>"javascript:changePage(document.$phase,'viewparms')", |
Line 1193 sub handler {
|
Line 1291 sub handler {
|
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'$phase')", |
({href=>"javascript:changePage(document.$phase,'$phase')", |
text=>"Change settings"}); |
text=>"Change settings"}); |
&print_course_modification_page($r,$cdom,$cnum,$cdesc,$domdesc); |
&print_course_modification_page($r,$cdom,$cnum,$cdesc,$type); |
} elsif ($phase eq 'processparms') { |
} elsif ($phase eq 'processparms') { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'setparms')", |
({href=>"javascript:changePage(document.$phase,'setparms')", |
Line 1214 sub handler {
|
Line 1312 sub handler {
|
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'$phase')", |
({href=>"javascript:changePage(document.$phase,'$phase')", |
text=>"Result"}); |
text=>"Result"}); |
&modify_catsettings($r,$cdom,$cnum,$cdesc,$domdesc); |
&modify_catsettings($r,$cdom,$cnum,$cdesc,$domdesc,$type); |
} |
} |
} |
} |
} else { |
} else { |
$r->print('<span class="LC_error">'.&mt('The course you selected is not a valid course in this domain')." ($domdesc)".'</span>'); |
$r->print('<span class="LC_error">'); |
|
if ($type eq 'Community') { |
|
$r->print(&mt('The course you selected is not a valid course in this domain')); |
|
} else { |
|
$r->print(&mt('The community you selected is not a valid community in this domain')); |
|
} |
|
$r->print(" ($domdesc)</span>"); |
} |
} |
} |
} |
} |
} |
&print_footer($r); |
&print_footer($r); |
} else { |
} else { |
$env{'user.error.msg'}= |
$env{'user.error.msg'}= |
"/adm/modifycourse:ccc:0:0:Cannot modify course settings"; |
"/adm/modifycourse:ccc:0:0:Cannot modify course/community settings"; |
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} |
} |
return OK; |
return OK; |