--- loncom/interface/loncreatecourse.pm 2004/03/30 20:46:24 1.53 +++ loncom/interface/loncreatecourse.pm 2004/07/02 00:27:44 1.63 @@ -1,7 +1,7 @@ -# The LearningOnline Network +#meserver The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.53 2004/03/30 20:46:24 www Exp $ +# $Id: loncreatecourse.pm,v 1.63 2004/07/02 00:27:44 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,17 +42,34 @@ use localenroll; # ================================================ Get course directory listing +my @output=(); + sub crsdirlist { my ($courseid,$which)=@_; - unless ($which) { $which=''; } + @output=(); + return &innercrsdirlist($courseid,$which); +} + +sub innercrsdirlist { + my ($courseid,$which,$path)=@_; + my $dirptr=16384; + unless ($which) { $which=''; } else { $which.='/'; } + unless ($path) { $path=''; } else { $path.='/'; } my %crsdata=&Apache::lonnet::coursedescription($courseid); my @listing=&Apache::lonnet::dirlist ($which,$crsdata{'domain'},$crsdata{'num'}, &Apache::loncommon::propath($crsdata{'domain'},$crsdata{'num'})); - my @output=(); foreach (@listing) { unless ($_=~/^\./) { - push (@output,(split(/\&/,$_))[0]); + my @unpackline = split (/\&/,$_); + if ($unpackline[3]&$dirptr) { +# is a directory, recurse + &innercrsdirlist($courseid,$which.$unpackline[0], + $path.$unpackline[0]); + } else { +# is a file, put into output + push (@output,$path.$unpackline[0]); + } } } return @output; @@ -236,7 +253,8 @@ sub print_course_creation_page { my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript(); my $starttime = time; my $endtime = time+(6*30*24*60*60); # 6 months from now, approx - my $date_table = &Apache::londropadd::date_setting_table($starttime,$endtime,'createcourse'); + my $enroll_table = &Apache::londropadd::date_setting_table($starttime,$endtime,'create_enrolldates'); + my $access_table = &Apache::londropadd::date_setting_table($starttime,$endtime,'create_defaultdates'); my ($krbdef,$krbdefdom) = &Apache::loncommon::get_kerberos_defaults($defdom); my $javascript_validations=&Apache::londropadd::javascript_validations('createcourse',$krbdefdom); @@ -286,6 +304,8 @@ sub print_course_creation_page { 'dsuc' => "Disable student use of chatrooms", 'acco' => "Access Control", 'snak' => "Students need access key to enter course", + 'kaut' => + 'Key authority (<tt>id@domain</tt>) if other than course', 'cc' => "Course Coordinator", 'user' => "Username", 'ierc' => "Immediately expire own role as Course Coordinator", @@ -296,11 +316,13 @@ sub print_course_creation_page { 'no' => "No", 'audr' => "Automated drops", 'dacu' => "Duration of automated classlist updates", + 'dacc' => "Default start and end dates for student access", 'psam' => "Please select the authentication mechanism", 'pcda' => "Please choose the default authentication method to be used by new users added to this LON-CAPA domain by the automated enrollment process", 'nech' => "Notification of enrollment changes", 'nccl' => "Notification to course coordinator via LON-CAPA message when enrollment changes occur during the automated update?", 'irsp' => "Include retrieval of student photographs?", + 'rshm' => 'Resource Space Home', 'opco' => "Open Course" ); $r->print(<<ENDDOCUMENT); @@ -396,7 +418,7 @@ $lt{'asov'}. <p> <b>$lt{'scpf'}: </b> <input type="checkbox" name="setpolicy" checked> -</p><p> +<br /> <b>$lt{'scfc'}: </b> <input type="checkbox" name="setcontent" checked> </p> @@ -410,17 +432,16 @@ $lt{'asov'}. <h2>$lt{'acco'}</h2> <p> <b>$lt{'snak'}: </b> -<input type="checkbox" name="setkeys" /> +<input type="checkbox" name="setkeys" /><br /> +<b>$lt{'kaut'}: </b> +<input type="text" size="30" name="keyauth" /> +</p> +<h2>$lt{'rshm'}</h2> +<p> +<b>$lt{'rshm'}: </b> +<input type="text" name="reshome" size="30" value="/res/$defdom/" /> </p> -<h2>$lt{'cc'}</h2> <p> -<b>$lt{'user'}:</b> <input type="text" size="15" name="ccuname" /> -</p><p> -<b>$lt{'dmn'}:</b> $domform -</p><p> -<b>$lt{'ierc'}:</b> -<input type="checkbox" name="expireown" checked> -</p><p> <h2>$lt{'aens'}</h2> $lt{'aesc'} </p> @@ -432,8 +453,11 @@ $lt{'aesc'} <input type="radio" name="autodrops" value="1" />$lt{'yes'} <input type="radio" name="autodrops" value="0" checked="true" />$lt{'no'} </p><p> <b>$lt{'dacu'}</b> -$date_table +$enroll_table </p><p> +<b>$lt{'dacc'}</b> +$access_table +<p></p> <b>$lt{'psam'}.</b><br /> $lt{'pcda'}. </p><p> @@ -449,7 +473,18 @@ $lt{'nccl'}<br/> value="0" checked="true" />$lt{'no'} </p><p> <b>$lt{'irsp'}</b> <input type="radio" name="showphotos" value="1" />$lt{'yes'} <input type="radio" name="showphotos" value="0" checked="true" />$lt{'no'} +</p> +<hr /> +<h2>$lt{'cc'}</h2> +<p> +<b>$lt{'user'}:</b> <input type="text" size="15" name="ccuname" /> +</p><p> +<b>$lt{'dmn'}:</b> $domform </p><p> +<b>$lt{'ierc'}:</b> +<input type="checkbox" name="expireown" checked> +</p> +<p> <input type="hidden" name="phase" value="two" /> <input type="button" onClick="verify_message(this.form)" value="$lt{'opco'}"> </p> @@ -464,6 +499,7 @@ ENDDOCUMENT sub create_course { my $r=shift; my $topurl='/res/'.&Apache::lonnet::declutter($ENV{'form.topmap'}); + my $this_server = $Apache::lonnet::perlvar{'lonHostID'}; my $ccuname=$ENV{'form.ccuname'}; my $ccdomain=$ENV{'form.ccdomain'}; $ccuname=~s/\W//g; @@ -510,7 +546,8 @@ ENDENHEAD my $courseid=&Apache::lonnet::createcourse($ENV{'request.role.domain'}, $cdescr,$curl, $ENV{'form.course_home'}, - $ENV{'form.nonstandard'}); + $ENV{'form.nonstandard'}, + $ENV{'form.crscode'}); # Note: The testing routines depend on this being output; see # Utils::Course. This needs to at least be output as a comment @@ -546,6 +583,8 @@ ENDENHEAD $cenv{'description'}=$oldcenv{'description'}; # Mark as cloned $cenv{'clonedfrom'}=$cloneid; + delete($cenv{'default_enrollment_start_date'}); + delete($cenv{'default_enrollment_end_date'}); } } # @@ -610,7 +649,7 @@ ENDENHEAD if (@affiliates > 0) { my @badclasses = (); foreach my $class (@affiliates) { - my $addcheck = &localenroll::new_course($class,$cenv{'internal.courseowner'}); + my $addcheck = &Apache::lonnet::auto_new_course($crsunum,$crsudom,$class,$cenv{'internal.courseowner'}); unless ($addcheck eq 'ok') { push @badclasses, $class; } @@ -624,13 +663,17 @@ ENDENHEAD $r->print ("</ul><br/><br/></font>\n"); } } - my $startdate = &Apache::lonhtmlcommon::get_date_from_form('startdate'); - my $enddate = &Apache::lonhtmlcommon::get_date_from_form('enddate'); + my $enrollstart = &Apache::lonhtmlcommon::get_date_from_form('startenroll'); + my $enrollend = &Apache::lonhtmlcommon::get_date_from_form('endenroll'); + my $startaccess = &Apache::lonhtmlcommon::get_date_from_form('startaccess'); + my $endaccess = &Apache::lonhtmlcommon::get_date_from_form('endaccess'); if ($ENV{'form.no_end_date'}) { - $enddate = 0; + $endaccess = 0; } - $cenv{'internal.autostart'}=$startdate; - $cenv{'internal.autoend'}=$enddate; + $cenv{'internal.autostart'}=$enrollstart; + $cenv{'internal.autoend'}=$enrollend; + $cenv{'default_enrollment_start_date'}=$startaccess; + $cenv{'default_enrollment_end_date'}=$endaccess; if ($ENV{'form.showphotos'}) { $cenv{'internal.showphotos'}=$ENV{'form.showphotos'}; } @@ -663,9 +706,25 @@ ENDENHEAD $cenv{'question.email'}=$ccuname.':'.$ccdomain; } } + if ($ENV{'form.reshome'}) { + $cenv{'reshome'}=$ENV{'form.reshome'}.'/'; + $cenv{'reshome'}=~s/\/+$/\//; + } +# +# course has keyed access +# if ($ENV{'form.setkeys'}) { $cenv{'keyaccess'}='yes'; } +# if specified, key authority is not course, but user +# only active if keyaccess is yes + if ($ENV{'form.keyauth'}) { + $ENV{'form.keyauth'}=~s/[^\w\@]//g; + if ($ENV{'form.keyauth'}) { + $cenv{'keyauth'}=$ENV{'form.keyauth'}; + } + } + if ($ENV{'form.disresdis'}) { $cenv{'pch.roles.denied'}='st'; }