--- loncom/interface/lonmodifycourse.pm 2007/09/24 23:29:53 1.32
+++ loncom/interface/lonmodifycourse.pm 2007/12/30 23:22:41 1.37
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# handler for DC-only modifiable course settings
#
-# $Id: lonmodifycourse.pm,v 1.32 2007/09/24 23:29:53 raeburn Exp $
+# $Id: lonmodifycourse.pm,v 1.37 2007/12/30 23:22:41 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,7 +33,7 @@ use Apache::lonnet;
use Apache::loncommon;
use Apache::lonhtmlcommon;
use Apache::lonlocal;
-use Apache::londropadd;
+use Apache::lonuserutils;
use Apache::lonpickcourse;
use LONCAPA::Enrollment;
use lib '/home/httpd/lib/perl';
@@ -108,22 +108,12 @@ sub print_course_search_page {
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.',
- 'tmod' => 'To view or modify these settings use the criteria below to select a course from this domain.',
- );
- $r->print('
'.
- &mt('Course settings which only a [_1] may modify.'
- ,$dctitle).'
'.
- &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).'
-
-
'.$lt{'some'}.'
-
'.$lt{'crqo'}.'
-
'.
-$lt{'tmod'}.' ('.$domdesc.')
-
- ');
+ $r->print(
+ '
'.&mt('Search for a course in the [_1] domain',$domdesc).'
'.
+ &mt('Actions available after selecting a course:').'
'.
+ '
'.&mt('Enter the course with the role of [_1]',$cctitle).'
'."\n".
+ '
'.&mt('View or modify course settings which only a [_1] may modify.'
+ ,$dctitle).'
'."\n".'
');
$r->print(&Apache::lonpickcourse::build_filters($filterlist,$type,
undef,undef,$filter,$action,'modifycourse'));
}
@@ -149,18 +139,22 @@ sub print_course_selection_page {
$filter{'domainfilter'} = $dom;
my %courses = &Apache::lonpickcourse::search_courses($r,$type,0,
\%filter);
- if (keys(%courses) > 0) {
- $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).'
');
- }
-
&Apache::lonpickcourse::display_matched_courses($r,$type,0,$action,
%courses);
return;
}
sub print_modification_menu {
- my ($r,$cdesc) = @_;
+ my ($r,$cdesc,$domdesc) = @_;
&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 =
(
{ text => 'Modify quota for group portfolio files',
@@ -174,8 +168,14 @@ sub print_modification_menu {
}
);
my $menu_html = '
'.&mt('View/Modify settings for: ').$cdesc.'
'."\n".
- ''."\n".
- &hidden_form_elements();
+ &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).'
+
+
'.$lt{'some'}.'
+
'.$lt{'crqo'}.'
+
+'."\n".
+ &hidden_form_elements();
+
foreach my $menu_item (@menu) {
$menu_html.='
';
$menu_html.='';
@@ -189,6 +189,16 @@ sub print_modification_menu {
return;
}
+sub print_ccrole_selected {
+ my ($r,$cdesc,$domdesc) = @_;
+ &print_header($r);
+ my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'});
+ $r->print('');
+}
+
sub print_settings_display {
my ($r,$cdom,$cnum,$cdesc,$type) = @_;
my %enrollvar = &get_enrollment_settings($cdom,$cnum);
@@ -239,7 +249,7 @@ sub print_settings_display {
'.$lt{'back'}.''.&mt('Modify [_1]-only settings',$dctitle).''."\n".
-&hidden_form_elements().
+&hidden_form_elements().
'');
}
@@ -368,9 +378,9 @@ all settings except course code, course
}
unless ($curr_authtype eq '') {
$curr_authfield = $curr_authtype.'arg';
- }
- my $javascript_validations=&Apache::londropadd::javascript_validations('modifycourse',$krbdefdom,$curr_authtype,$curr_authfield);
- my %param = ( formname => 'document.cmod',
+ }
+ my $javascript_validations=&Apache::lonuserutils::javascript_validations('modifycourse',$krbdefdom,$curr_authtype,$curr_authfield);
+ my %param = ( formname => 'document.'.$env{'form.phase'},
kerb_def_dom => $krbdefdom,
kerb_def_auth => $krbdef,
mode => 'modifycourse',
@@ -437,7 +447,7 @@ all settings except course code, course
my $mainheader = &mt('Course settings modifiable by [_1] only.',$dctitle);
my $hidden_elements = &hidden_form_elements();
$r->print(<
+
@@ -561,9 +571,17 @@ sub modify_course {
}
if ($changeowner == 1 || $changecode == 1) {
my $courseid_entry = &escape($cdom.'_'.$cnum).'='.&escape($description).':'.&escape($env{'form.coursecode'}).':'.&escape($env{'form.courseowner'}).':'.&escape($type);
- &Apache::lonnet::courseidput($cdom,$courseid_entry,&Apache::lonnet::homeserver($cnum,$cdom));
+ my %courseid_entry = (
+ $cdom.'_'.$cnum => {
+ description => $description,
+ inst_code => $env{'form.coursecode'},
+ owner => $env{'form.courseowner'},
+ type => $type,
+ },
+ );
+ &Apache::lonnet::courseidput($cdom,\%courseid_entry,
+ &Apache::lonnet::homeserver($cnum,$cdom),'notime');
}
-
foreach my $param (@modifiable_params) {
if ($currattr{$param} eq $newattr{$param}) {
push(@nochanges,$param);
@@ -573,17 +591,16 @@ sub modify_course {
push(@changes,$param);
}
}
-
if (@changes > 0) {
$chgresponse = &mt("The following automated enrollment parameters have been changed:
");
}
if (@nochanges > 0) {
$nochgresponse = &mt("The following automated enrollment parameters remain unchanged:
");
}
- if (@changes > 0) {
+ if (@changes > 0) {
my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,$cnum);
if ($putreply !~ /^ok$/) {
- $response = &mt("There was a problem processing your requested changes. The automated enrollment settings for this course have been left unchanged. ");
+ $response = &mt("There was a problem processing your requested changes. The automated enrollment settings for this course have been left unchanged. ").&mt('Error: ').$putreply;
} else {
foreach my $attr (@modifiable_params) {
if (grep/^$attr$/,@changes) {
@@ -781,8 +798,14 @@ function verify_quota(formname) {
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',
- $js));
+ $js,$starthash));
my $bread_text = "View/Modify Courses";
if ($cdesc ne '') {
$bread_text = "Course Settings: $cdesc";
@@ -800,28 +823,36 @@ sub print_footer {
sub check_course {
my ($r,$dom,$domdesc) = @_;
my ($ok_course,$description,$instcode,$owner);
- if (defined($env{'form.pickedcourse'})) {
- my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'});
- if ($cdom eq $dom) {
- my %courseIDs = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',
- $cnum,undef,undef,'.');
- if (keys(%courseIDs) > 0) {
- $ok_course = 'ok';
+ my %args = (
+ one_time => 1,
+ );
+ my %coursehash =
+ &Apache::lonnet::coursedescription($env{'form.pickedcourse'},\%args);
+ my $cnum = $coursehash{'num'};
+ my $cdom = $coursehash{'domain'};
+ if ($cdom eq $dom) {
+ my $description;
+ my %courseIDs = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',
+ $cnum,undef,undef,'.');
+ if (keys(%courseIDs) > 0) {
+ $ok_course = 'ok';
+ my ($instcode,$owner);
+ if (ref($courseIDs{$cdom.'_'.$cnum}) eq 'HASH') {
+ $description = $courseIDs{$cdom.'_'.$cnum}{'description'};
+ $instcode = $courseIDs{$cdom.'_'.$cnum}{'inst_code'};
+ $owner = $courseIDs{$cdom.'_'.$cnum}{'owner'};
+ } else {
($description,$instcode,$owner) =
- split(/:/,$courseIDs{$cdom.'_'.$cnum});
- $description = &unescape($description);
- $instcode = &unescape($instcode);
- if ($instcode) {
- $description .= " ($instcode)";
- }
+ split(/:/,$courseIDs{$cdom.'_'.$cnum});
}
+ $description = &unescape($description);
+ $instcode = &unescape($instcode);
+ if ($instcode) {
+ $description .= " ($instcode)";
+ }
+ return ($ok_course,$description);
}
}
-
- if ($ok_course ne 'ok') {
- $r->print(' '.&mt('The LON-CAPA course selected was not a valid course for the [_1] domain',$domdesc));
- }
- return ($ok_course,$description);
}
sub course_settings_descrip {
@@ -846,8 +877,9 @@ sub course_settings_descrip {
sub hidden_form_elements {
my $hidden_elements =
&Apache::lonhtmlcommon::echo_form_input(['gosearch','coursecode',
- 'numlocalcc','courseowner',
- 'login','coursequota','intarg', 'locarg','krbarg','krbver']);
+ 'prevphase','numlocalcc','courseowner','login','coursequota','intarg',
+ 'locarg','krbarg','krbver','counter'])."\n".
+ '';
return $hidden_elements;
}
@@ -867,21 +899,24 @@ sub handler {
&Apache::lonhtmlcommon::clear_breadcrumbs();
my $phase = $env{'form.phase'};
- &Apache::lonhtmlcommon::add_breadcrumb
+ if ($phase eq '') {
+ &Apache::lonhtmlcommon::add_breadcrumb
({href=>"/adm/modifycourse",
text=>"Course search"});
- if ($phase eq '') {
&print_course_search_page($r,$dom,$domdesc);
} else {
+ my $firstform = $phase;
+ if ($phase eq 'courselist') {
+ $firstform = 'filterpicker';
+ }
&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"});
if ($phase eq 'courselist') {
&print_course_selection_page($r,$dom,$domdesc);
} else {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:changePage(document.$phase,'menu')",
- text=>"Pick action"});
my ($checked,$cdesc) = &check_course($r,$dom,$domdesc);
my $type = $env{'form.type'};
if ($type eq '') {
@@ -889,8 +924,19 @@ sub handler {
}
if ($checked eq 'ok') {
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);
+ } elsif ($phase eq 'ccrole') {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"javascript:changePage(document.$phase,'ccrole')",
+ text=>"Enter course"});
+ &print_ccrole_selected($r,$cdesc,$domdesc);
} else {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"javascript:changePage(document.$phase,'menu')",
+ text=>"Pick action"});
my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'});
if ($phase eq 'setquota') {
&Apache::lonhtmlcommon::add_breadcrumb
@@ -926,7 +972,7 @@ sub handler {
}
}
} else {
- $r->print(&mt('The course you selected is not a valid course in this domain')." ($domdesc)");
+ $r->print(''.&mt('The course you selected is not a valid course in this domain')." ($domdesc)".'');
}
}
}