version 1.36, 2007/12/14 00:24:11
|
version 1.44, 2009/05/08 17:22:17
|
Line 43 sub get_dc_settable {
|
Line 43 sub get_dc_settable {
|
return ('courseowner','coursecode','authtype','autharg'); |
return ('courseowner','coursecode','authtype','autharg'); |
} |
} |
|
|
|
sub catalog_settable { |
|
my ($confhash) = @_; |
|
my @settable; |
|
if (ref($confhash) eq 'HASH') { |
|
if ($confhash->{'togglecats'} ne 'crs') { |
|
push(@settable,'togglecats'); |
|
} |
|
if ($confhash->{'categorize'} ne 'crs') { |
|
push(@settable,'categorize'); |
|
} |
|
} else { |
|
push(@settable,('togglecats','categorize')); |
|
} |
|
return @settable; |
|
} |
|
|
sub get_enrollment_settings { |
sub get_enrollment_settings { |
my ($cdom,$cnum) = @_; |
my ($cdom,$cnum) = @_; |
my %settings = &Apache::lonnet::dump('environment',$cdom,$cnum); |
my %settings = &Apache::lonnet::dump('environment',$cdom,$cnum); |
Line 102 sub print_course_search_page {
|
Line 118 sub print_course_search_page {
|
&print_header($r); |
&print_header($r); |
my $filterlist = ['descriptfilter', |
my $filterlist = ['descriptfilter', |
'instcodefilter','ownerfilter', |
'instcodefilter','ownerfilter', |
'ownerdomfilter','coursefilter']; |
'coursefilter']; |
my $filter = {}; |
my $filter = {}; |
|
my $numtitles; |
my $type = 'Course'; |
my $type = 'Course'; |
my $action = '/adm/modifycourse'; |
my $action = '/adm/modifycourse'; |
my $cctitle = &Apache::lonnet::plaintext('cc',$type); |
my $cctitle = &Apache::lonnet::plaintext('cc',$type); |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
my $dctitle = &Apache::lonnet::plaintext('dc'); |
my %lt=&Apache::lonlocal::texthash( |
$r->print( |
'some' => "Certain settings which control auto-enrollment of students from your institution's student information system.", |
'<h3>'.&mt('Search for a course in the [_1] domain',$domdesc).'</h3>'. |
'crqo' => 'The total disk space allocated for storage of portfolio files in all groups in a course.', |
&mt('Actions available after searching for a course:').'<ul>'. |
'tmod' => 'To view or modify these settings use the criteria below to select a course from this domain.', |
'<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.' |
$r->print('<h3>'. |
,$dctitle).'</li>'."\n".'</ul>'); |
&mt('Course settings which only a [_1] may modify.' |
|
,$dctitle).'</h3>'. |
|
&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).' |
|
<ul> |
|
<li>'.$lt{'some'}.'</li> |
|
<li>'.$lt{'crqo'}.'</li> |
|
</ul>'. |
|
$lt{'tmod'}.' ('.$domdesc.') |
|
<br /><br /> |
|
'); |
|
$r->print(&Apache::lonpickcourse::build_filters($filterlist,$type, |
$r->print(&Apache::lonpickcourse::build_filters($filterlist,$type, |
undef,undef,$filter,$action,'modifycourse')); |
undef,undef,$filter,$action,\$numtitles,'modifycourse')); |
} |
} |
|
|
sub print_course_selection_page { |
sub print_course_selection_page { |
Line 149 sub print_course_selection_page {
|
Line 156 sub print_course_selection_page {
|
$filter{'domainfilter'} = $dom; |
$filter{'domainfilter'} = $dom; |
my %courses = &Apache::lonpickcourse::search_courses($r,$type,0, |
my %courses = &Apache::lonpickcourse::search_courses($r,$type,0, |
\%filter); |
\%filter); |
if (keys(%courses) > 0) { |
&Apache::lonpickcourse::display_matched_courses($r,$type,0,$action,undef, |
$r->print(&mt("Click a 'Select' button to view or modify settings for a [_1] which may only be modified by a [_2] in this domain.",lc($type),$dctitle).'<br /><br />'); |
|
} |
|
|
|
&Apache::lonpickcourse::display_matched_courses($r,$type,0,$action, |
|
%courses); |
%courses); |
return; |
return; |
} |
} |
|
|
sub print_modification_menu { |
sub print_modification_menu { |
my ($r,$cdesc) = @_; |
my ($r,$cdesc,$domdesc,$dom) = @_; |
&print_header($r,$cdesc); |
&print_header($r,$cdesc); |
|
my $type = 'Course'; |
|
my $action = '/adm/modifycourse'; |
|
my $cctitle = &Apache::lonnet::plaintext('cc',$type); |
|
my $dctitle = &Apache::lonnet::plaintext('dc'); |
|
my %lt=&Apache::lonlocal::texthash( |
|
'some' => "Certain settings which control auto-enrollment of students from your institution's student information system.", |
|
'crqo' => 'The total disk space allocated for storage of portfolio files in all groups in a course.', |
|
); |
my @menu = |
my @menu = |
( |
( |
{ text => 'Modify quota for group portfolio files', |
{ text => 'Modify quota for group portfolio', |
phase => 'setquota', |
phase => 'setquota', |
}, |
}, |
{ text => 'Display current settings for automated enrollment', |
{ text => 'Display current settings for automated enrollment', |
Line 171 sub print_modification_menu {
|
Line 182 sub print_modification_menu {
|
}, |
}, |
{ text => 'Modify institutional code, course owner and/or default authentication', |
{ text => 'Modify institutional code, course owner and/or default authentication', |
phase => 'setparms', |
phase => 'setparms', |
} |
}, |
); |
); |
|
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom); |
|
my @additional_params = &catalog_settable($domconf{'coursecategories'}); |
|
if (@additional_params > 0) { |
|
push (@menu, { text => 'Modify course catalog settings for course', |
|
phase => 'catsettings', |
|
}); |
|
} |
my $menu_html = '<h3>'.&mt('View/Modify settings for: ').$cdesc.'</h3>'."\n". |
my $menu_html = '<h3>'.&mt('View/Modify settings for: ').$cdesc.'</h3>'."\n". |
'<form name="menu" method="post" action="/adm/modifycourse" />'."\n". |
&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).' |
&hidden_form_elements(); |
<ul> |
|
<li>'.$lt{'some'}.'</li> |
|
<li>'.$lt{'crqo'}.'</li>'."\n"; |
|
foreach my $item (@additional_params) { |
|
if ($item eq 'togglecats') { |
|
$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"; |
|
} elsif ($item eq 'categorize') { |
|
$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"; |
|
|
|
} |
|
} |
|
$menu_html .= ' </ul> |
|
<form name="menu" method="post" action="'.$action.'" />'."\n". |
|
&hidden_form_elements(); |
|
|
foreach my $menu_item (@menu) { |
foreach my $menu_item (@menu) { |
$menu_html.='<p>'; |
$menu_html.='<p>'; |
$menu_html.='<font size="+1">'; |
$menu_html.='<font size="+1">'; |
Line 189 sub print_modification_menu {
|
Line 221 sub print_modification_menu {
|
return; |
return; |
} |
} |
|
|
|
sub print_ccrole_selected { |
|
my ($r,$cdesc,$domdesc) = @_; |
|
&print_header($r); |
|
my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'}); |
|
$r->print('<form name="ccrole" method="post" action="/adm/roles"> |
|
<input type="hidden" name="selectrole" value="1" /> |
|
<input type="hidden" name="newrole" value="cc./'.$cdom.'/'.$cnum.'" /> |
|
</form>'); |
|
} |
|
|
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); |
Line 228 sub print_settings_display {
|
Line 270 sub print_settings_display {
|
$disp_table .= &Apache::loncommon::end_data_table()."\n"; |
$disp_table .= &Apache::loncommon::end_data_table()."\n"; |
&print_header($r,$cdesc); |
&print_header($r,$cdesc); |
$r->print(' |
$r->print(' |
<h3>'.$lt{'caes'}.'</h3> |
<h3>'.$lt{'caes'}.$cdesc.'</h3> |
<p> |
<p> |
<form action="/adm/modifycourse" method="post" name="viewparms"> |
<form action="/adm/modifycourse" method="post" name="viewparms"> |
'.$lt{'cose'}.'<ul><li>'.&mt('Settings that can be modified by a [_1] using the <a href="/adm/populate">Automated Enrollment Manager</a>.',$cctitle).'</li><li>'.&mt('Settings that may only be modified by a [_1] from this menu.',$dctitle).'</li></ul> |
'.$lt{'cose'}.'<ul><li>'.&mt('Settings that can be modified by a [_1] using the <a href="/adm/populate">Automated Enrollment Manager</a>.',$cctitle).'</li><li>'.&mt('Settings that may only be modified by a [_1] from this menu.',$dctitle).'</li></ul> |
Line 239 sub print_settings_display {
|
Line 281 sub print_settings_display {
|
</p><p> |
</p><p> |
<a href="javascript:changePage(document.viewparms,'."'menu'".')">'.$lt{'back'}.'</a> |
<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". |
<a href="javascript:changePage(document.viewparms,'."'setparms'".')">'.&mt('Modify [_1]-only settings',$dctitle).'</a>'."\n". |
&hidden_form_elements(). |
&hidden_form_elements(). |
'</form>'); |
'</form>'); |
} |
} |
|
|
Line 249 sub print_setquota {
|
Line 291 sub print_setquota {
|
my $cctitle = &Apache::lonnet::plaintext('cc',$type); |
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 $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 files', |
'cquo' => 'Disk space for storage of group portfolio', |
'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.', |
'each' => 'Each course group can be assigned a quota for portfolio files uploaded to the group.', |
'modi' => 'Modify quota', |
'modi' => 'Save', |
'back' => "Back to options page", |
'back' => "Back to options page", |
); |
); |
my %settings = &Apache::lonnet::get('environment',['internal.coursequota'],$cdom,$cnum); |
my %settings = &Apache::lonnet::get('environment',['internal.coursequota'],$cdom,$cnum); |
Line 279 ENDDOCUMENT
|
Line 321 ENDDOCUMENT
|
return; |
return; |
} |
} |
|
|
|
sub print_catsettings { |
|
my ($r,$cdom,$cnum,$cdesc) = @_; |
|
&print_header($r,$cdesc); |
|
my %lt = &Apache::lonlocal::texthash( |
|
'back' => 'Back to options page', |
|
); |
|
$r->print('<form action="/adm/modifycourse" method="post" name="catsettings">'. |
|
'<h3>'.&mt('Catalog Settings for Course').'</h3>'); |
|
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom); |
|
my @cat_params = &catalog_settable($domconf{'coursecategories'}); |
|
if (@cat_params > 0) { |
|
my %currsettings = |
|
&Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum); |
|
if (grep(/^togglecats$/,@cat_params)) { |
|
my $excludeon = ''; |
|
my $excludeoff = ' checked="checked" '; |
|
if ($currsettings{'hidefromcat'} eq 'yes') { |
|
$excludeon = $excludeoff; |
|
$excludeoff = ''; |
|
} |
|
$r->print('<h4>'.&mt('Visibility in Course Catalog').'</h4>'. |
|
&mt("Unless excluded, a course is listed in this domain's publicly accessible course 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 into at least one of the course categories defined for the domain.').'</li></ul>'. |
|
&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 />'); |
|
} |
|
if (grep(/^categorize$/,@cat_params)) { |
|
$r->print('<h4>'.&mt('Categorize Course').'</h4>'); |
|
if (ref($domconf{'coursecategories'}) eq 'HASH') { |
|
my $cathash = $domconf{'coursecategories'}{'cats'}; |
|
if (ref($cathash) eq 'HASH') { |
|
$r->print(&mt('Assign one or more categories to this course.').'<br /><br />'. |
|
&Apache::loncommon::assign_categories_table($cathash, |
|
$currsettings{'categories'})); |
|
} else { |
|
$r->print(&mt('No categories defined for this domain')); |
|
} |
|
} else { |
|
$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>'); |
|
} |
|
$r->print('<input type="button" name="chgcatsettings" value="'. |
|
&mt('Save').'" onclick="javascript:changePage(document.catsettings,'."'processcat'".');" />'); |
|
} 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". |
|
'<a href="javascript:changePage(document.catsettings,'."'menu'".');">'. |
|
$lt{'back'}.'</a>'); |
|
} |
|
$r->print(&hidden_form_elements().'</form>'."\n"); |
|
return; |
|
} |
|
|
sub print_course_modification_page { |
sub print_course_modification_page { |
my ($r,$cdom,$cnum,$cdesc,$domdesc) = @_; |
my ($r,$cdom,$cnum,$cdesc,$domdesc) = @_; |
my %longtype = &course_settings_descrip(); |
my %longtype = &course_settings_descrip(); |
Line 293 sub print_course_modification_page {
|
Line 388 sub print_course_modification_page {
|
'name' => "Name", |
'name' => "Name", |
'unme' => "Username:Domain", |
'unme' => "Username:Domain", |
'stus' => "Status", |
'stus' => "Status", |
'cquo' => "Disk space for storage of group portfolio files", |
'cquo' => "Disk space for storage of group portfolio", |
'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.", |
'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 ", |
'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 ", |
Line 498 sub modify_course {
|
Line 593 sub modify_course {
|
my @nochanges = (); |
my @nochanges = (); |
my @sections = (); |
my @sections = (); |
my @xlists = (); |
my @xlists = (); |
my $changecode = 0; |
my %changed = ( code => 0, |
my $changeowner = 0; |
owner => 0, |
|
); |
unless ($settings{'internal.sectionnums'} eq '') { |
unless ($settings{'internal.sectionnums'} eq '') { |
if ($settings{'internal.sectionnums'} =~ m/,/) { |
if ($settings{'internal.sectionnums'} =~ m/,/) { |
@sections = split/,/,$settings{'internal.sectionnums'}; |
@sections = split/,/,$settings{'internal.sectionnums'}; |
Line 522 sub modify_course {
|
Line 618 sub modify_course {
|
} |
} |
|
|
my $description = $settings{'description'}; |
my $description = $settings{'description'}; |
my %cenv = (); |
|
|
|
if ($env{'form.login'} eq 'krb') { |
if ($env{'form.login'} eq 'krb') { |
$newattr{'authtype'} = $env{'form.login'}; |
$newattr{'authtype'} = $env{'form.login'}; |
Line 549 sub modify_course {
|
Line 644 sub modify_course {
|
if ( exists($env{'form.courseowner'}) ) { |
if ( exists($env{'form.courseowner'}) ) { |
$newattr{'courseowner'}=$env{'form.courseowner'}; |
$newattr{'courseowner'}=$env{'form.courseowner'}; |
unless ( $newattr{'courseowner'} eq $currattr{'courseowner'} ) { |
unless ( $newattr{'courseowner'} eq $currattr{'courseowner'} ) { |
$changeowner = 1; |
$changed{'owner'} = 1; |
} |
} |
} |
} |
|
|
if ( exists($env{'form.coursecode'}) ) { |
if ( exists($env{'form.coursecode'}) ) { |
$newattr{'coursecode'}=$env{'form.coursecode'}; |
$newattr{'coursecode'}=$env{'form.coursecode'}; |
unless ( $newattr{'coursecode'} eq $currattr{'coursecode'} ) { |
unless ( $newattr{'coursecode'} eq $currattr{'coursecode'} ) { |
$changecode = 1; |
$changed{'code'} = 1; |
} |
} |
} |
} |
if ($changeowner == 1 || $changecode == 1) { |
if ($changed{'owner'} || $changed{'code'}) { |
my $courseid_entry = &escape($cdom.'_'.$cnum).'='.&escape($description).':'.&escape($env{'form.coursecode'}).':'.&escape($env{'form.courseowner'}).':'.&escape($type); |
my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum, |
my %courseid_entry = ( |
undef,undef,'.'); |
$cdom.'_'.$cnum => { |
if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') { |
description => $description, |
$crsinfo{$env{'form.pickedcourse'}}{'inst_code'} = $env{'form.coursecode'}; |
inst_code => $env{'form.coursecode'}, |
$crsinfo{$env{'form.pickedcourse'}}{'owner'} = $env{'form.courseowner'}; |
owner => $env{'form.courseowner'}, |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
type => $type, |
my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime'); |
}, |
} |
); |
|
&Apache::lonnet::courseidput($cdom,\%courseid_entry, |
|
&Apache::lonnet::homeserver($cnum,$cdom),'notime'); |
|
} |
} |
foreach my $param (@modifiable_params) { |
foreach my $param (@modifiable_params) { |
if ($currattr{$param} eq $newattr{$param}) { |
if ($currattr{$param} eq $newattr{$param}) { |
Line 599 sub modify_course {
|
Line 691 sub modify_course {
|
$nochgresponse .= "<li>$longtype{$attr} ".&mt("still set to \"").$currattr{$attr}."\".</li>"; |
$nochgresponse .= "<li>$longtype{$attr} ".&mt("still set to \"").$currattr{$attr}."\".</li>"; |
} |
} |
} |
} |
if ($changecode || $changeowner) { |
if ($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/>"); |
$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/>"); |
} else { |
} else { |
if (@sections > 0) { |
if (@sections > 0) { |
if ($changecode) { |
if ($changed{'code'}) { |
foreach my $sec (@sections) { |
foreach my $sec (@sections) { |
if ($sec =~ m/^(.+):/) { |
if ($sec =~ m/^(.+):/) { |
my $inst_course_id = $newattr{'coursecode'}.$1; |
my $inst_course_id = $newattr{'coursecode'}.$1; |
Line 621 sub modify_course {
|
Line 713 sub modify_course {
|
$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/>"); |
$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/>"); |
} |
} |
} |
} |
} elsif ($changeowner) { |
} 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 $inst_course_id = $newattr{'coursecode'}.$1; |
Line 637 sub modify_course {
|
Line 729 sub modify_course {
|
} 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/>"; |
$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/>"; |
} |
} |
if ( (@xlists > 0) && ($changeowner) ) { |
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 $outcome = &Apache::lonnet::auto_new_course($cnum,$cdom,$1,$newattr{'courseowner'}); |
Line 692 sub modify_quota {
|
Line 784 sub modify_quota {
|
); |
); |
$r->print(' |
$r->print(' |
<form action="/adm/modifycourse" method="post" name="processquota"> |
<form action="/adm/modifycourse" method="post" name="processquota"> |
<h3>'.&mt('Disk space for storage of group portfolio files for [_1]',$cdesc). |
<h3>'.&mt('Disk space for storage of group portfolio for [_1]',$cdesc). |
'</h3>'); |
'</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; |
Line 701 sub modify_quota {
|
Line 793 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 files remains unchanged as ').$env{'form.coursequota'}.' Mb'); |
$r->print(&mt('The disk space allocated for group portfolio remains unchanged as ').$env{'form.coursequota'}.' Mb'); |
} else { |
} else { |
my %cenv = ( |
my %cenv = ( |
'internal.coursequota' => $env{'form.coursequota'}, |
'internal.coursequota' => $env{'form.coursequota'}, |
Line 710 sub modify_quota {
|
Line 802 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 files in this course is the default quota for this domain:').' '.$defaultquota.' Mb'); |
$r->print(&mt('The disk space allocated for group portfolio in this course is the default quota for this domain:').' '.$defaultquota.' Mb'); |
} 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 files is now:').' '.$updatedsettings{'internal.coursequota'}.' Mb.'); |
$r->print(&mt('The disk space allocated for group portfolio is now:').' '.$updatedsettings{'internal.coursequota'}.' Mb.'); |
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; |
Line 740 sub modify_quota {
|
Line 832 sub modify_quota {
|
return; |
return; |
} |
} |
|
|
|
sub modify_catsettings { |
|
my ($r,$cdom,$cnum,$cdesc,$domdesc) = @_; |
|
&print_header($r,$cdesc); |
|
my %lt = &Apache::lonlocal::texthash( |
|
'back' => 'Back to options page', |
|
); |
|
my %desc = &Apache::lonlocal::texthash( |
|
'hidefromcat' => 'Excluded from course catalog', |
|
'categories' => 'Assigned categories for this course', |
|
); |
|
$r->print(' |
|
<form action="/adm/modifycourse" method="post" name="processcat"> |
|
<h3>'.&mt('Category settings').'</h3>'); |
|
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom); |
|
my @cat_params = &catalog_settable($domconf{'coursecategories'}); |
|
if (@cat_params > 0) { |
|
my (%cenv,@changes,@nochanges); |
|
my %currsettings = |
|
&Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum); |
|
my (@newcategories,%showitem); |
|
if (grep(/^togglecats$/,@cat_params)) { |
|
if ($currsettings{'hidefromcat'} ne $env{'form.hidefromcat'}) { |
|
push(@changes,'hidefromcat'); |
|
$cenv{'hidefromcat'} = $env{'form.hidefromcat'}; |
|
} else { |
|
push(@nochanges,'hidefromcat'); |
|
} |
|
if ($env{'form.hidefromcat'} eq 'yes') { |
|
$showitem{'hidefromcat'} = '"'.&mt('Yes')."'"; |
|
} else { |
|
$showitem{'hidefromcat'} = '"'.&mt('No').'"'; |
|
} |
|
} |
|
if (grep(/^categorize$/,@cat_params)) { |
|
my (@cats,@trails,%allitems,%idx,@jsarray); |
|
if (ref($domconf{'coursecategories'}) eq 'HASH') { |
|
my $cathash = $domconf{'coursecategories'}{'cats'}; |
|
if (ref($cathash) eq 'HASH') { |
|
&Apache::loncommon::extract_categories($cathash,\@cats,\@trails, |
|
\%allitems,\%idx,\@jsarray); |
|
} |
|
} |
|
@newcategories = &Apache::loncommon::get_env_multiple('form.usecategory'); |
|
if (@newcategories == 0) { |
|
$showitem{'categories'} = '"'.&mt('None').'"'; |
|
} else { |
|
$showitem{'categories'} = '<ul>'; |
|
foreach my $item (@newcategories) { |
|
$showitem{'categories'} .= '<li>'.$trails[$allitems{$item}].'</li>'; |
|
} |
|
$showitem{'categories'} .= '</ul>'; |
|
} |
|
my $catchg = 0; |
|
if ($currsettings{'categories'} ne '') { |
|
my @currcategories = split('&',$currsettings{'categories'}); |
|
foreach my $cat (@currcategories) { |
|
if (!grep(/^\Q$cat\E$/,@newcategories)) { |
|
$catchg = 1; |
|
last; |
|
} |
|
} |
|
if (!$catchg) { |
|
foreach my $cat (@newcategories) { |
|
if (!grep(/^\Q$cat\E$/,@currcategories)) { |
|
$catchg = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} else { |
|
if (@newcategories > 0) { |
|
$catchg = 1; |
|
} |
|
} |
|
if ($catchg) { |
|
$cenv{'categories'} = join('&',@newcategories); |
|
push(@changes,'categories'); |
|
} else { |
|
push(@nochanges,'categories'); |
|
} |
|
if (@changes > 0) { |
|
my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,$cnum); |
|
if ($putreply eq 'ok') { |
|
my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.', |
|
$cnum,undef,undef,'.'); |
|
if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') { |
|
if (grep(/^hidefromcat$/,@changes)) { |
|
$crsinfo{$env{'form.pickedcourse'}}{'hidefromcat'} = $env{'form.hidefromcat'}; |
|
} |
|
if (grep(/^categories$/,@changes)) { |
|
$crsinfo{$env{'form.pickedcourse'}}{'categories'} = $cenv{'categories'}; |
|
} |
|
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
|
my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime'); |
|
} |
|
$r->print(&mt('The following changes occurred').'<ul>'); |
|
foreach my $item (@changes) { |
|
$r->print('<li>'.&mt('[_1] now set to [_2]',$desc{$item},$showitem{$item}).'</li>'); |
|
} |
|
$r->print('</ul><br />'); |
|
} |
|
} |
|
if (@nochanges > 0) { |
|
$r->print(&mt('The following were unchanged').'<ul>'); |
|
foreach my $item (@nochanges) { |
|
$r->print('<li>'.&mt('[_1] still set to [_2]',$desc{$item},$showitem{$item}).'</li>'); |
|
} |
|
$r->print('</ul>'); |
|
} |
|
} |
|
} else { |
|
$r->print(&mt('Category settings for courses in this domain should be modified in course context (via "Set Course Environment").').'<br />'); |
|
} |
|
$r->print('<br />'."\n". |
|
'<a href="javascript:changePage(document.processcat,'."'menu'".')">'. |
|
$lt{'back'}.'</a>'); |
|
$r->print(&hidden_form_elements().'</form>'); |
|
return; |
|
} |
|
|
sub print_header { |
sub print_header { |
my ($r,$cdesc,$javascript_validations) = @_; |
my ($r,$cdesc,$javascript_validations) = @_; |
my $phase = "start"; |
my $phase = "start"; |
Line 788 function verify_quota(formname) {
|
Line 1000 function verify_quota(formname) {
|
</script> |
</script> |
ENDSCRIPT |
ENDSCRIPT |
} |
} |
|
my $starthash; |
|
if ($env{'form.phase'} eq 'ccrole') { |
|
$starthash = { |
|
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 Settings', |
$js)); |
$js,$starthash)); |
my $bread_text = "View/Modify Courses"; |
my $bread_text = "View/Modify Courses"; |
if ($cdesc ne '') { |
if ($cdesc ne '') { |
$bread_text = "Course Settings: $cdesc"; |
$bread_text = &mt('Course Settings: [_1]',$cdesc); |
} |
my $no_mt = 1; |
$r->print(&Apache::lonhtmlcommon::breadcrumbs($bread_text)); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs($bread_text,undef,undef, |
|
undef,undef,$no_mt)); |
|
} else { |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs($bread_text)); |
|
} |
return; |
return; |
} |
} |
|
|
Line 817 sub check_course {
|
Line 1039 sub check_course {
|
if ($cdom eq $dom) { |
if ($cdom eq $dom) { |
my $description; |
my $description; |
my %courseIDs = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.', |
my %courseIDs = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.', |
$cnum,undef,undef,'.'); |
$cnum,undef,undef,'.'); |
if (keys(%courseIDs) > 0) { |
if (keys(%courseIDs) > 0) { |
$ok_course = 'ok'; |
$ok_course = 'ok'; |
my ($instcode,$owner); |
my ($instcode,$owner); |
Line 861 sub course_settings_descrip {
|
Line 1083 sub course_settings_descrip {
|
sub hidden_form_elements { |
sub hidden_form_elements { |
my $hidden_elements = |
my $hidden_elements = |
&Apache::lonhtmlcommon::echo_form_input(['gosearch','coursecode', |
&Apache::lonhtmlcommon::echo_form_input(['gosearch','coursecode', |
'numlocalcc','courseowner', |
'prevphase','numlocalcc','courseowner','login','coursequota','intarg', |
'login','coursequota','intarg', 'locarg','krbarg','krbver']); |
'locarg','krbarg','krbver','counter','hidefromcat','usecategory'])."\n". |
|
'<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" />'; |
return $hidden_elements; |
return $hidden_elements; |
} |
} |
|
|
Line 882 sub handler {
|
Line 1105 sub handler {
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
|
my $phase = $env{'form.phase'}; |
my $phase = $env{'form.phase'}; |
&Apache::lonhtmlcommon::add_breadcrumb |
if ($phase eq '') { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/modifycourse", |
({href=>"/adm/modifycourse", |
text=>"Course search"}); |
text=>"Course search"}); |
if ($phase eq '') { |
|
&print_course_search_page($r,$dom,$domdesc); |
&print_course_search_page($r,$dom,$domdesc); |
} else { |
} else { |
|
my $firstform = $phase; |
|
if ($phase eq 'courselist') { |
|
$firstform = 'filterpicker'; |
|
} |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'courselist')", |
({href=>"javascript:changePage(document.$firstform,'')", |
|
text=>"Course search"}, |
|
{href=>"javascript:changePage(document.$phase,'courselist')", |
text=>"Choose a course"}); |
text=>"Choose a course"}); |
if ($phase eq 'courselist') { |
if ($phase eq 'courselist') { |
&print_course_selection_page($r,$dom,$domdesc); |
&print_course_selection_page($r,$dom,$domdesc); |
} else { |
} else { |
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"javascript:changePage(document.$phase,'menu')", |
|
text=>"Pick action"}); |
|
my ($checked,$cdesc) = &check_course($r,$dom,$domdesc); |
my ($checked,$cdesc) = &check_course($r,$dom,$domdesc); |
my $type = $env{'form.type'}; |
my $type = $env{'form.type'}; |
if ($type eq '') { |
if ($type eq '') { |
Line 904 sub handler {
|
Line 1130 sub handler {
|
} |
} |
if ($checked eq 'ok') { |
if ($checked eq 'ok') { |
if ($phase eq 'menu') { |
if ($phase eq 'menu') { |
&print_modification_menu($r,$cdesc); |
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"javascript:changePage(document.$phase,'menu')", |
|
text=>"Pick action"}); |
|
&print_modification_menu($r,$cdesc,$domdesc,$dom); |
|
} elsif ($phase eq 'ccrole') { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"javascript:changePage(document.$phase,'ccrole')", |
|
text=>"Enter course"}); |
|
&print_ccrole_selected($r,$cdesc,$domdesc); |
} else { |
} else { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"javascript:changePage(document.$phase,'menu')", |
|
text=>"Pick action"}); |
my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'}); |
my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'}); |
if ($phase eq 'setquota') { |
if ($phase eq 'setquota') { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'$phase')", |
({href=>"javascript:changePage(document.$phase,'$phase')", |
text=>"Set quota"}); |
text=>"Set quota"}); |
&print_setquota($r,$cdom,$cnum,$cdesc,$type) |
&print_setquota($r,$cdom,$cnum,$cdesc,$type); |
} elsif ($phase eq 'processquota') { |
} elsif ($phase eq 'processquota') { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'setquota')", |
({href=>"javascript:changePage(document.$phase,'setquota')", |
Line 938 sub handler {
|
Line 1175 sub handler {
|
({href=>"javascript:changePage(document.$phase,'$phase')", |
({href=>"javascript:changePage(document.$phase,'$phase')", |
text=>"Result"}); |
text=>"Result"}); |
&modify_course($r,$cdom,$cnum,$cdesc,$domdesc,$type); |
&modify_course($r,$cdom,$cnum,$cdesc,$domdesc,$type); |
|
} elsif ($phase eq 'catsettings') { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"javascript:changePage(document.$phase,'$phase')", |
|
text=>"Catalog settings"}); |
|
&print_catsettings($r,$cdom,$cnum,$cdesc,$type); |
|
} elsif ($phase eq 'processcat') { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"javascript:changePage(document.$phase,'catsettings')", |
|
text=>"Catalog settings"}); |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"javascript:changePage(document.$phase,'$phase')", |
|
text=>"Result"}); |
|
&modify_catsettings($r,$cdom,$cnum,$cdesc,$domdesc); |
} |
} |
} |
} |
} else { |
} else { |