--- loncom/interface/lonmodifycourse.pm 2009/11/09 03:50:27 1.48
+++ loncom/interface/lonmodifycourse.pm 2010/07/08 23:19:19 1.56
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# handler for DC-only modifiable course settings
#
-# $Id: lonmodifycourse.pm,v 1.48 2009/11/09 03:50:27 raeburn Exp $
+# $Id: lonmodifycourse.pm,v 1.56 2010/07/08 23:19:19 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -49,20 +49,30 @@ sub get_dc_settable {
sub autoenroll_keys {
my $internals = ['coursecode','courseowner','authtype','autharg','autoadds','autodrops',
- 'autostart','autoend','sectionnums','crosslistings'];
+ 'autostart','autoend','sectionnums','crosslistings',
+ 'co-owners'];
my $accessdates = ['default_enrollment_start_date','default_enrollment_end_date'];
return ($internals,$accessdates);
}
sub catalog_settable {
- my ($confhash) = @_;
+ my ($confhash,$type) = @_;
my @settable;
if (ref($confhash) eq 'HASH') {
- if ($confhash->{'togglecats'} ne 'crs') {
- push(@settable,'togglecats');
- }
- if ($confhash->{'categorize'} ne 'crs') {
- push(@settable,'categorize');
+ if ($type eq 'Community') {
+ if ($confhash->{'togglecatscomm'} ne 'comm') {
+ push(@settable,'togglecats');
+ }
+ 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 {
push(@settable,('togglecats','categorize'));
@@ -97,7 +107,7 @@ sub get_enrollment_settings {
} else {
$enrollvar{$type} = &Apache::lonlocal::locallocaltime($settings{$item});
}
- } elsif ($type eq "sectionnums") {
+ } elsif (($type eq 'sectionnums') || ($type eq 'co-owners')) {
$enrollvar{$type} = $settings{$item};
$enrollvar{$type} =~ s/,/, /g;
} elsif ($type eq "authtype"
@@ -139,7 +149,7 @@ sub print_course_search_page {
'instcodefilter','ownerfilter',
'coursefilter'];
my $filter = {};
- my ($numtitles,$cctitle,$dctitle);
+ my ($numtitles,$cctitle,$dctitle,@codetitles);
my $ccrole = 'cc';
if ($type eq 'Community') {
$ccrole = 'co';
@@ -153,7 +163,8 @@ sub print_course_search_page {
$r->print('
'.&mt('Search for a course in the [_1] domain',$domdesc).'
');
}
$r->print(&Apache::lonpickcourse::build_filters($filterlist,$type,
- undef,undef,$filter,$action,\$numtitles,'modifycourse'));
+ undef,undef,$filter,$action,\$numtitles,'modifycourse',
+ undef,undef,undef,\@codetitles));
if ($type eq 'Community') {
$r->print(&mt('Actions available after searching for a community:').''.
'- '.&mt('Enter the community with the role of [_1]',$cctitle).'
'."\n".
@@ -182,14 +193,16 @@ sub print_course_selection_page {
my %filter;
my $action = '/adm/modifycourse';
my $dctitle = &Apache::lonnet::plaintext('dc');
- my $numtitles;
+ my ($numtitles,@codetitles);
$r->print(&Apache::lonpickcourse::js_changer());
$r->print(&mt('Revise your search criteria for this domain').' ('.$domdesc.').
');
$r->print(&Apache::lonpickcourse::build_filters($filterlist,$type,
- undef,undef,\%filter,$action,\$numtitles));
+ undef,undef,\%filter,$action,\$numtitles,
+ undef,undef,undef,undef,\@codetitles));
$filter{'domainfilter'} = $dom;
my %courses = &Apache::lonpickcourse::search_courses($r,$type,0,
- \%filter,$numtitles);
+ \%filter,$numtitles,undef,
+ undef,undef,\@codetitles);
&Apache::lonpickcourse::display_matched_courses($r,$type,0,$action,undef,undef,undef,
%courses);
return;
@@ -198,53 +211,81 @@ sub print_course_selection_page {
sub print_modification_menu {
my ($r,$cdesc,$domdesc,$dom,$type) = @_;
&print_header($r,$type);
- my ($ccrole,$setquota_text,$setparams_text,$cat_text);
+ my ($ccrole,$categorytitle,$setquota_text,$setparams_text,$cat_text);
if ($type eq 'Community') {
$ccrole = 'co';
} else {
$ccrole = 'cc';
}
- my $action = '/adm/modifycourse';
if ($type eq 'Community') {
+ $categorytitle = 'View/Modify Community Settings';
$setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a community.');
$setparams_text = 'View/Modify community owner';
$cat_text = 'View/Modify catalog settings for community';
} else {
+ $categorytitle = 'View/Modify Course Settings';
$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 =
- (
- { text => $setparams_text,
- phase => 'setparms',
- },
- { text => 'View/Modify quota for group portfolio files',
- phase => 'setquota',
- }
- );
+
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom);
- my @additional_params = &catalog_settable($domconf{'coursecategories'});
- if (@additional_params > 0) {
- push (@menu, { text => $cat_text,
- phase => 'catsettings',
- });
+ my @additional_params = &catalog_settable($domconf{'coursecategories'},$type);
+
+ sub phaseurl {
+ my $phase = shift;
+ return "javascript:changePage(document.menu,'$phase')"
}
- unless ($type eq 'Community') {
- push(@menu,
- { text => 'Display current settings for automated enrollment',
- phase => 'viewparms',
- }
+ my @menu =
+ ({ categorytitle => $categorytitle,
+ items => [
+ {
+ linktext => $setparams_text,
+ url => &phaseurl('setparms'),
+ permission => 1,
+ #help => '',
+ icon => 'crsconf.png',
+ linktitle => ''
+ },
+ {
+ linktext => 'View/Modify quota for group portfolio files',
+ url => &phaseurl('setquota'),
+ permission => 1,
+ #help => '',
+ icon => 'groupportfolioquota.png',
+ linktitle => ''
+ },
+ {
+ linktext => $cat_text,
+ url => &phaseurl('catsettings'),
+ permission => (@additional_params > 0),
+ #help => '',
+ icon => 'ccatconf.png',
+ linktitle => ''
+ },
+ {
+ linktext => 'Display current settings for automated enrollment',
+ url => &phaseurl('viewparms'),
+ permission => ($type ne 'Community'),
+ #help => '',
+ icon => 'roles.png',
+ linktitle => ''
+ },
+ ]
+ },
);
- }
- my $menu_html = ''.&mt('View/Modify settings for: ').
- ' '.$cdesc.'
'."\n";
+
+ my $menu_html =
+ ''
+ .&mt('View/Modify settings for: [_1]',
+ ''.$cdesc.'')
+ .'
'."\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 .= '
';
+ $menu_html .= ''."\n".'';
if ($type eq 'Community') {
$menu_html .= '- '.&mt('Community owner (permitted to assign Coordinator roles in the community).').'
';
} else {
@@ -255,30 +296,27 @@ sub print_modification_menu {
foreach my $item (@additional_params) {
if ($type eq 'Community') {
if ($item eq 'togglecats') {
- $menu_html .= ' - '.&mt('Hiding/unhiding a community from the catalog (although can be [_1]configured[_2] to be modifiable by a Coordinator in community context).','','').'
'."\n";
+ $menu_html .= ' - '.&mt('Hiding/unhiding a community from the catalog (although can be [_1]configured[_2] to be modifiable by a Coordinator in community context).','','').'
'."\n";
} elsif ($item eq 'categorize') {
- $menu_html .= ' - '.&mt('Manual cataloging of a community (although can be [_1]configured[_2] to be modifiable by a Coordinator in community context).','','').'
'."\n";
+ $menu_html .= ' - '.&mt('Manual cataloging of a community (although can be [_1]configured[_2] to be modifiable by a Coordinator in community context).','','').'
'."\n";
}
} else {
if ($item eq 'togglecats') {
- $menu_html .= ' - '.&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).','','').'
'."\n";
+ $menu_html .= ' - '.&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).','','').'
'."\n";
} elsif ($item eq 'categorize') {
- $menu_html .= ' - '.&mt('Manual cataloging of a course (although can be [_1]configured[_2] to be modifiable by a Course Coordinator in course context).','','').'
'."\n";
+ $menu_html .= ' - '.&mt('Manual cataloging of a course (although can be [_1]configured[_2] to be modifiable by a Course Coordinator in course context).','','').'
'."\n";
}
}
}
- $menu_html .= '
-
'."\n".
- &hidden_form_elements();
- foreach my $menu_item (@menu) {
- $menu_html.='';
- }
+ $menu_html .=
+ ' '
+ .'');
return;
}
@@ -326,7 +364,7 @@ sub print_settings_display {
"$longtype{$item} | \n".
"$enrollvar{$item} | \n";
if (grep(/^\Q$item\E$/,@modifiable_params)) {
- $disp_table .= ''.&mt('Yes').' | '."\n";
+ $disp_table .= ''.&mt('Yes').' | '."\n";
} else {
$disp_table .= ''.&mt('No').' | '."\n";
}
@@ -399,12 +437,12 @@ sub print_catsettings {
$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 categories and/or subcategories to this community.');
+ $lt{'assi'} = &mt('Assign one or more subcategories to this community.');
}
$r->print('