--- loncom/interface/loncreatecourse.pm 2004/07/12 17:55:35 1.64 +++ loncom/interface/loncreatecourse.pm 2004/12/07 01:31:17 1.73 @@ -1,7 +1,7 @@ -#meserver The LearningOnline Network +# The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.64 2004/07/12 17:55:35 raeburn Exp $ +# $Id: loncreatecourse.pm,v 1.73 2004/12/07 01:31:17 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -38,7 +38,6 @@ use Apache::londocs; use Apache::lonlocal; use Apache::londropadd; use lib '/home/httpd/lib/perl'; -use localenroll; # ================================================ Get course directory listing @@ -123,7 +122,9 @@ sub copyfile { &readfile($origcrsid,$which), ( '/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/' - => '/uploaded/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/' + => '/uploaded/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/', + '/public/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/' + => '/public/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/' ))); } } @@ -137,6 +138,9 @@ sub copydb { my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid); my %data=&Apache::lonnet::dump ($which,$origcrsdata{'domain'},$origcrsdata{'num'}); + foreach my $key (keys(%data)) { + if ($key=~/^internal./) { delete($data{$key}); } + } return &Apache::lonnet::put ($which,\%data,$newcrsdata{'domain'},$newcrsdata{'num'}); } @@ -202,7 +206,9 @@ sub copyresourcedb { sub copyuserfiles { my ($origcrsid,$newcrsid)=@_; foreach (&crsdirlist($origcrsid,'userfiles')) { - ©file($origcrsid,$newcrsid,$_); + if ($_ !~m|^scantron_|) { + ©file($origcrsid,$newcrsid,$_); + } } } # ========================================================== Copy all userfiles @@ -250,7 +256,7 @@ sub print_course_creation_page { ($ENV{'request.role.domain'},'clonedomain'). &Apache::loncommon::selectcourse_link ('ccrs','clonecourse','clonedomain'); - my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript(); + my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript($ENV{'request.role.domain'}); my $starttime = time; my $endtime = time+(6*30*24*60*60); # 6 months from now, approx my $enroll_table = &Apache::londropadd::date_setting_table($starttime,$endtime,'create_enrolldates'); @@ -278,7 +284,7 @@ sub print_course_creation_page { 'snid' => "Section Numbers and corresponding LON-CAPA section/group IDs", 'csli' => "a comma separated list of institutional section numbers, each separated by a colon from the (optional) corresponding section/group ID to be used in LON-CAPA e.g., 001:1,002:2", 'crcs' => "Crosslisted courses", - 'cscs' => "a comma separated list of course sections crosslisted with the current course, with each entry including the institutional course section name followed by a colon and then the (optional) groupID to be used in LON-CAPA, e.g., fs03ent231001:ent1,fs03bot231001:bot1,fs03zol231002:bot2", + 'cscs' => "a comma separated list of course sections crosslisted with the current course, with each entry including the institutional course section name followed by a colon and then the (optional) groupID to be used in LON-CAPA, e.g., fs03ent231001:ent1,fs03bot231001:bot1,fs03zol231002:zol2", 'crco' => "Course Content", 'cncr' => "Completely new course", 'cecr' => "Clone an existing course", @@ -356,28 +362,41 @@ $helplink <form action="/adm/createcourse" method="post" name="ccrs"> <h2>$lt{'cinf'}</h2> <p> -<b>$lt{'ctit'}:</b> -<input type="text" size="50" name="title"> +<label><b>$lt{'ctit'}:</b> +<input type="text" size="50" name="title" /></label> </p><p> -<b>$lt{'chsr'}:</b>$course_home -</p><p> -<b>$lt{'cidn'} ($lt{'opt'})</b> -<input type="text" size="30" name="crsid"> +<label> + <b>$lt{'chsr'}:</b>$course_home +</label> +</p><p> +<label> + <b>$lt{'cidn'} ($lt{'opt'})</b> + <input type="text" size="30" name="crsid" /> +</label> </p><p> <h2>$lt{'iinf'}</h2> <p> $lt{'stat'} </p><p> -<b>$lt{'ccod'}</b> -<input type="text" size="30" name="crscode" /><br/> +<label> + <b>$lt{'ccod'}</b> + <input type="text" size="30" name="crscode" /> +</label> +<br/> ($lt{'toin'}) </p><p> -<b>$lt{'snid'}</b> - <input type="text" size="30" name="crssections" /><br/> +<label> + <b>$lt{'snid'}</b> + <input type="text" size="30" name="crssections" /> +</label> +<br/> ($lt{'csli'}) </p><p> -<b>$lt{'crcs'}</b> -<input type="text" size="30" name="crsxlist" /><br/> +<label> + <b>$lt{'crcs'}</b> + <input type="text" size="30" name="crsxlist" /> +</label> +<br/> ($lt{'cscs'}) </p> <h2>$lt{'crco'}</h2> @@ -385,61 +404,92 @@ $lt{'stat'} <tr><th>$lt{'cncr'}</th><th>$lt{'cecr'}</th></tr> <tr><td> <p> -<b>$lt{'map'}:</b> -<input type="text" size="50" name="topmap"> +<label> + <b>$lt{'map'}:</b> + <input type="text" size="50" name="topmap" /> +</label> <a href="javascript:openbrowser('ccrs','topmap')">$lt{'smap'}</a> </p><p> -<b>$lt{'sacr'}</b><br /> +<label for="nonstd"><b>$lt{'sacr'}</b></label> +<br /> ($lt{'ocik'}): -<input type="checkbox" name="nonstandard"> -</p> -<p> +<input id="nonstd" type="checkbox" name="nonstandard" /> +</p><p> <b>$lt{'fres'}</b><br />($lt{'stco'}): -<input type="radio" name="firstres" value="blank">$lt{'blnk'} +<label> + <input type="radio" name="firstres" value="blank" />$lt{'blnk'} +</label> -<input type="radio" name="firstres" value="syl" checked>$lt{'sllb'} +<label> + <input type="radio" name="firstres" value="syl" checked />$lt{'sllb'} +</label> -<input type="radio" name="firstres" value="nav">$lt{'navi'} +<label> + <input type="radio" name="firstres" value="nav" />$lt{'navi'} +</label> </p> </td><td> -$lt{'cid'}: <input input type="text" size="25" name="clonecourse" value="" /> +<label> + $lt{'cid'}: <input type="text" size="25" name="clonecourse" value="" /> +</label> <br /> -$lt{'dmn'}: -$cloneform<br /> <br /> +<label> + $lt{'dmn'}: $cloneform +</label> +<br /> + <br /> $lt{'asov'}. </td></tr> </table> <h2>$lt{'assp'}</h2> <p> -<b>$lt{'oaas'}: </b> -<input type="checkbox" name="openall" /> +<label> + <b>$lt{'oaas'}: </b> + <input type="checkbox" name="openall" /> +</label> </p> <h2>$lt{'mssg'}</h2> <p> -<b>$lt{'scpf'}: </b> -<input type="checkbox" name="setpolicy" checked> +<label> + <b>$lt{'scpf'}: </b> + <input type="checkbox" name="setpolicy" checked /> +</label> <br /> -<b>$lt{'scfc'}: </b> -<input type="checkbox" name="setcontent" checked> +<label> + <b>$lt{'scfc'}: </b> + <input type="checkbox" name="setcontent" checked /> +</label> </p> <h2>$lt{'cmmn'}</h2> <p> -<b>$lt{'dsrd'}: </b> -<input type="checkbox" name="disresdis" /> <br /> -<b>$lt{'dsuc'}: </b> -<input type="checkbox" name="disablechat" /> +<label> + <b>$lt{'dsrd'}: </b> + <input type="checkbox" name="disresdis" /> +</label> +<br /> +<label> + <b>$lt{'dsuc'}: </b> + <input type="checkbox" name="disablechat" /> +</label> </p> <h2>$lt{'acco'}</h2> <p> -<b>$lt{'snak'}: </b> -<input type="checkbox" name="setkeys" /><br /> -<b>$lt{'kaut'}: </b> -<input type="text" size="30" name="keyauth" /> +<label> + <b>$lt{'snak'}: </b> + <input type="checkbox" name="setkeys" /> +</label> +<br /> +<label> + <b>$lt{'kaut'}: </b> + <input type="text" size="30" name="keyauth" /> +</label> </p> <h2>$lt{'rshm'}</h2> <p> -<b>$lt{'rshm'}: </b> -<input type="text" name="reshome" size="30" value="/res/$defdom/" /> +<label> + <b>$lt{'rshm'}: </b> + <input type="text" name="reshome" size="30" value="/res/$defdom/" /> +</label> </p> <p> <h2>$lt{'aens'}</h2> @@ -447,10 +497,13 @@ $lt{'aesc'} </p> <p> <b>$lt{'aadd'}</b> -<input type="radio" name="autoadds" value="1" />$lt{'yes'} <input type="radio" name="autoadds" value="0" checked="true" />$lt{'no'} +<label><input type="radio" name="autoadds" value="1" />$lt{'yes'}</label> +<label><input type="radio" name="autoadds" value="0" checked="true" />$lt{'no'} +</label> </p><p> <b>$lt{'audr'}</b> -<input type="radio" name="autodrops" value="1" />$lt{'yes'} <input type="radio" name="autodrops" value="0" checked="true" />$lt{'no'} +<label><input type="radio" name="autodrops" value="1" />$lt{'yes'}</label> +<label><input type="radio" name="autodrops" value="0" checked="true" />$lt{'no'}</label> </p><p> <b>$lt{'dacu'}</b> $enroll_table @@ -469,24 +522,40 @@ $locform </p><p> <b>$lt{'nech'}</b><br /> $lt{'nccl'}<br/> -<input type="radio" name="notify" value="1" />$lt{'yes'} <input type="radio" name="notify" -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'} +<label> + <input type="radio" name="notify" value="1" />$lt{'yes'} +</label> +<label> + <input type="radio" name="notify" value="0" checked="true" />$lt{'no'} +</label> +</p><p> +<b>$lt{'irsp'}</b> +<label> + <input type="radio" name="showphotos" value="1" />$lt{'yes'} +</label> +<label> + <input type="radio" name="showphotos" value="0" checked="true" />$lt{'no'} +</label> </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> +<label> + <b>$lt{'user'}:</b> <input type="text" size="15" name="ccuname" /> +</label> +</p><p> +<label> + <b>$lt{'dmn'}:</b> $domform +</label> +</p><p> +<label> + <b>$lt{'ierc'}:</b> + <input type="checkbox" name="expireown" checked /> +</label> </p> <p> <input type="hidden" name="phase" value="two" /> -<input type="button" onClick="verify_message(this.form)" value="$lt{'opco'}"> +<input type="button" onClick="verify_message(this.form)" value="$lt{'opco'}" /> </p> </form> </body> @@ -547,7 +616,8 @@ ENDENHEAD $cdescr,$curl, $ENV{'form.course_home'}, $ENV{'form.nonstandard'}, - $ENV{'form.crscode'}); + $ENV{'form.crscode'}, + $ENV{'form.ccuname'}); # Note: The testing routines depend on this being output; see # Utils::Course. This needs to at least be output as a comment @@ -581,6 +651,10 @@ ENDENHEAD $cenv{'url'}=$oldcenv{'url'}; # Restore title $cenv{'description'}=$oldcenv{'description'}; +# restore grading mode + if (defined($oldcenv{'grading'})) { + $cenv{'grading'}=$oldcenv{'grading'}; + } # Mark as cloned $cenv{'clonedfrom'}=$cloneid; delete($cenv{'default_enrollment_start_date'}); @@ -617,9 +691,8 @@ ENDENHEAD my ($sec,$gp) = split/:/,$item; my $class = $ENV{'form.crscode'}.$sec; my $addcheck = &Apache::lonnet::auto_new_course($crsunum,$crsudom,$class,$cenv{'internal.courseowner'}); - if ($addcheck eq 'ok') { - $cenv{'internal.sectionnums'} .= $item.','; - } else { + $cenv{'internal.sectionnums'} .= $item.','; + unless ($addcheck eq 'ok') { push @badclasses, $class; } } @@ -640,9 +713,8 @@ ENDENHEAD foreach my $item (@xlists) { my ($xl,$gp) = split/:/,$item; my $addcheck = &Apache::lonnet::auto_new_course($crsunum,$crsudom,$xl,$cenv{'internal.courseowner'}); - if ($addcheck eq 'ok') { - $cenv{'internal.crosslistings'} .= $item.','; - } else { + $cenv{'internal.crosslistings'} .= $item.','; + unless ($addcheck eq 'ok') { push @badclasses, $xl; } } @@ -657,12 +729,12 @@ ENDENHEAD } if ($ENV{'form.notify'}) { if ($ccuname) { - $cenv{'internal.notifylist'} = $ccuname; + $cenv{'internal.notifylist'} = $ccuname.'@'.$ccdomain; } } if (@badclasses > 0) { my %lt=&Apache::lonlocal::texthash( - 'tclb' => 'The courses listed below have not been included as sections or crosslistings affiliated with your new LON-CAPA course. If automated course roster updates are enabled for this class, these particular sections/crosslistings will not contribute towards enrollment, because the user identified as the course owner for this LON-CAPA course', + 'tclb' => 'The courses listed below were included as sections or crosslistings affiliated with your new LON-CAPA course. However, if automated course roster updates are enabled for this class, these particular sections/crosslistings will not contribute towards enrollment, because the user identified as the course owner for this LON-CAPA course', 'dnhr' => 'does not have rights to access enrollment in these classes', 'adby' => 'as determined by the policies of your institution on access to official classlists' ); @@ -756,7 +828,7 @@ ENDENHEAD $cenv{'internal.encpref'}=100+int(9*rand(99)); # # By default, use standard grading - $cenv{'grading'} = 'standard'; + if (!defined($cenv{'grading'})) { $cenv{'grading'} = 'standard'; } $r->print('<br />'.&mt('Setting environment').': '. &Apache::lonnet::put('environment',\%cenv,$crsudom,$crsunum).'<br>');