--- loncom/interface/lonmodifycourse.pm 2007/10/03 19:57:29 1.33
+++ 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.33 2007/10/03 19:57:29 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().
'');
}
@@ -369,8 +379,8 @@ 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(<
+
@@ -563,14 +573,14 @@ sub modify_course {
my $courseid_entry = &escape($cdom.'_'.$cnum).'='.&escape($description).':'.&escape($env{'form.coursecode'}).':'.&escape($env{'form.courseowner'}).':'.&escape($type);
my %courseid_entry = (
$cdom.'_'.$cnum => {
- description => &escape($description),
- inst_code => &escape($env{'form.coursecode'}),
- owner => &escape($env{'form.courseowner'}),
- type => &escape($type),
+ description => $description,
+ inst_code => $env{'form.coursecode'},
+ owner => $env{'form.courseowner'},
+ type => $type,
},
);
&Apache::lonnet::courseidput($cdom,\%courseid_entry,
- &Apache::lonnet::homeserver($cnum,$cdom));
+ &Apache::lonnet::homeserver($cnum,$cdom),'notime');
}
foreach my $param (@modifiable_params) {
if ($currattr{$param} eq $newattr{$param}) {
@@ -788,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";
@@ -807,31 +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 ($description,$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)";
- }
+ 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)";
}
+ return ($ok_course,$description);
}
}
- return ($ok_course,$description);
}
sub course_settings_descrip {
@@ -856,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;
}
@@ -877,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 '') {
@@ -899,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