Diff for /loncom/interface/loncreatecourse.pm between versions 1.55 and 1.72

version 1.55, 2004/05/04 20:43:21 version 1.72, 2004/12/03 22:29:17
Line 38  use Apache::londocs; Line 38  use Apache::londocs;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::londropadd;  use Apache::londropadd;
 use lib '/home/httpd/lib/perl';  use lib '/home/httpd/lib/perl';
 use localenroll;  
   
 # ================================================ Get course directory listing  # ================================================ Get course directory listing
   
   my @output=();
   
 sub crsdirlist {  sub crsdirlist {
     my ($courseid,$which)=@_;      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 %crsdata=&Apache::lonnet::coursedescription($courseid);
     my @listing=&Apache::lonnet::dirlist      my @listing=&Apache::lonnet::dirlist
  ($which,$crsdata{'domain'},$crsdata{'num'},   ($which,$crsdata{'domain'},$crsdata{'num'},
  &Apache::loncommon::propath($crsdata{'domain'},$crsdata{'num'}));   &Apache::loncommon::propath($crsdata{'domain'},$crsdata{'num'}));
     my @output=();  
     foreach (@listing) {      foreach (@listing) {
  unless ($_=~/^\./) {   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;      return @output;
Line 106  sub copyfile { Line 122  sub copyfile {
                      &readfile($origcrsid,$which),                       &readfile($origcrsid,$which),
     (      (
        '/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'         '/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'}.'/'
             )));              )));
     }      }
 }  }
Line 120  sub copydb { Line 138  sub copydb {
     my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid);      my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid);
     my %data=&Apache::lonnet::dump      my %data=&Apache::lonnet::dump
  ($which,$origcrsdata{'domain'},$origcrsdata{'num'});   ($which,$origcrsdata{'domain'},$origcrsdata{'num'});
       foreach my $key (keys(%data)) {
    if ($key=~/^internal./) { delete($data{$key}); }
       }
     return &Apache::lonnet::put      return &Apache::lonnet::put
  ($which,\%data,$newcrsdata{'domain'},$newcrsdata{'num'});   ($which,\%data,$newcrsdata{'domain'},$newcrsdata{'num'});
 }  }
Line 185  sub copyresourcedb { Line 206  sub copyresourcedb {
 sub copyuserfiles {  sub copyuserfiles {
     my ($origcrsid,$newcrsid)=@_;      my ($origcrsid,$newcrsid)=@_;
     foreach (&crsdirlist($origcrsid,'userfiles')) {      foreach (&crsdirlist($origcrsid,'userfiles')) {
  &copyfile($origcrsid,$newcrsid,$_);   if ($_ !~m|^scantron_|) {
       &copyfile($origcrsid,$newcrsid,$_);
    }
     }      }
 }  }
 # ========================================================== Copy all userfiles  # ========================================================== Copy all userfiles
Line 233  sub print_course_creation_page { Line 256  sub print_course_creation_page {
  ($ENV{'request.role.domain'},'clonedomain').   ($ENV{'request.role.domain'},'clonedomain').
      &Apache::loncommon::selectcourse_link       &Apache::loncommon::selectcourse_link
      ('ccrs','clonecourse','clonedomain');       ('ccrs','clonecourse','clonedomain');
     my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript();      my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript($ENV{'request.role.domain'});
     my $starttime = time;      my $starttime = time;
     my $endtime = time+(6*30*24*60*60); # 6 months from now, approx      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) =      my ($krbdef,$krbdefdom) =
     &Apache::loncommon::get_kerberos_defaults($defdom);      &Apache::loncommon::get_kerberos_defaults($defdom);
     my $javascript_validations=&Apache::londropadd::javascript_validations('createcourse',$krbdefdom);      my $javascript_validations=&Apache::londropadd::javascript_validations('createcourse',$krbdefdom);
Line 260  sub print_course_creation_page { Line 284  sub print_course_creation_page {
                     'snid' => "Section Numbers and corresponding LON-CAPA section/group IDs",                      '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",                      '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",                      '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",                      'crco' => "Course Content",
                     'cncr' => "Completely new course",                      'cncr' => "Completely new course",
                     'cecr' => "Clone an existing course",                       'cecr' => "Clone an existing course", 
Line 286  sub print_course_creation_page { Line 310  sub print_course_creation_page {
                     'dsuc' => "Disable student use of chatrooms",                      'dsuc' => "Disable student use of chatrooms",
                     'acco' => "Access Control",                      'acco' => "Access Control",
                     'snak' => "Students need access key to enter course",                      'snak' => "Students need access key to enter course",
       'kaut' => 
       'Key authority (<tt>id@domain</tt>) if other than course',
                     'cc'   => "Course Coordinator",                      'cc'   => "Course Coordinator",
                     'user' => "Username",                      'user' => "Username",
                     'ierc' => "Immediately expire own role as Course Coordinator",                      'ierc' => "Immediately expire own role as Course Coordinator",
Line 296  sub print_course_creation_page { Line 322  sub print_course_creation_page {
                     'no'   => "No",                      'no'   => "No",
                     'audr' => "Automated drops",                      'audr' => "Automated drops",
                     'dacu' => "Duration of automated classlist updates",                      'dacu' => "Duration of automated classlist updates",
                       'dacc' => "Default start and end dates for student access",
                     'psam' => "Please select the authentication mechanism",                      '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",                      '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",                      'nech' => "Notification of enrollment changes",
Line 335  $helplink Line 362  $helplink
 <form action="/adm/createcourse" method="post" name="ccrs">  <form action="/adm/createcourse" method="post" name="ccrs">
 <h2>$lt{'cinf'}</h2>  <h2>$lt{'cinf'}</h2>
 <p>  <p>
 <b>$lt{'ctit'}:</b>  <label><b>$lt{'ctit'}:</b>
 <input type="text" size="50" name="title">  <input type="text" size="50" name="title" /></label>
 </p><p>  </p><p>
 <b>$lt{'chsr'}:</b>$course_home  <label>
 </p><p>      <b>$lt{'chsr'}:</b>$course_home
 <b>$lt{'cidn'} ($lt{'opt'})</b>  </label>
 <input type="text" size="30" name="crsid">  </p><p>
   <label>
       <b>$lt{'cidn'} ($lt{'opt'})</b>
       <input type="text" size="30" name="crsid" />
   </label>
 </p><p>  </p><p>
 <h2>$lt{'iinf'}</h2>  <h2>$lt{'iinf'}</h2>
 <p>  <p>
 $lt{'stat'}  $lt{'stat'}
 </p><p>  </p><p>
 <b>$lt{'ccod'}</b>  <label>
 <input type="text" size="30" name="crscode" /><br/>      <b>$lt{'ccod'}</b>
       <input type="text" size="30" name="crscode" />
   </label>
   <br/>
 ($lt{'toin'})  ($lt{'toin'})
 </p><p>  </p><p>
 <b>$lt{'snid'}</b>  <label>
  <input type="text" size="30" name="crssections" /><br/>      <b>$lt{'snid'}</b>
       <input type="text" size="30" name="crssections" />
   </label>
   <br/>
 ($lt{'csli'})  ($lt{'csli'})
 </p><p>  </p><p>
 <b>$lt{'crcs'}</b>  <label>
 <input type="text" size="30" name="crsxlist" /><br/>      <b>$lt{'crcs'}</b>
       <input type="text" size="30" name="crsxlist" />
   </label>
   <br/>
 ($lt{'cscs'})  ($lt{'cscs'})
 </p>  </p>
 <h2>$lt{'crco'}</h2>  <h2>$lt{'crco'}</h2>
Line 364  $lt{'stat'} Line 404  $lt{'stat'}
 <tr><th>$lt{'cncr'}</th><th>$lt{'cecr'}</th></tr>  <tr><th>$lt{'cncr'}</th><th>$lt{'cecr'}</th></tr>
 <tr><td>  <tr><td>
 <p>  <p>
 <b>$lt{'map'}:</b>  <label>
 <input type="text" size="50" name="topmap">      <b>$lt{'map'}:</b>
       <input type="text" size="50" name="topmap" />
   </label>
 <a href="javascript:openbrowser('ccrs','topmap')">$lt{'smap'}</a>  <a href="javascript:openbrowser('ccrs','topmap')">$lt{'smap'}</a>
 </p><p>  </p><p>
 <b>$lt{'sacr'}</b><br />   <label for="nonstd"><b>$lt{'sacr'}</b></label>
   <br />
 ($lt{'ocik'}):  ($lt{'ocik'}):
 <input type="checkbox" name="nonstandard">  <input id="nonstd" type="checkbox" name="nonstandard" />
 </p>  </p><p>
 <p>  
 <b>$lt{'fres'}</b><br />($lt{'stco'}):  <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>
 &nbsp;  &nbsp;
 <input type="radio" name="firstres" value="syl" checked>$lt{'sllb'}  <label>
       <input type="radio" name="firstres" value="syl" checked />$lt{'sllb'}
   </label>
 &nbsp;  &nbsp;
 <input type="radio" name="firstres" value="nav">$lt{'navi'}  <label>
       <input type="radio" name="firstres" value="nav" />$lt{'navi'}
   </label>
 </p>  </p>
 </td><td>  </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 />
   <label>
       $lt{'dmn'}: $cloneform
   </label>
 <br />  <br />
 $lt{'dmn'}:   &nbsp;<br />
 $cloneform<br />&nbsp;<br />  
 $lt{'asov'}.  $lt{'asov'}.
 </td></tr>  </td></tr>
 </table>  </table>
 <h2>$lt{'assp'}</h2>  <h2>$lt{'assp'}</h2>
 <p>  <p>
 <b>$lt{'oaas'}: </b>  <label>
 <input type="checkbox" name="openall" />      <b>$lt{'oaas'}: </b>
       <input type="checkbox" name="openall" />
   </label>
 </p>  </p>
 <h2>$lt{'mssg'}</h2>  <h2>$lt{'mssg'}</h2>
 <p>  <p>
 <b>$lt{'scpf'}: </b>  <label>
 <input type="checkbox" name="setpolicy" checked>      <b>$lt{'scpf'}: </b>
       <input type="checkbox" name="setpolicy" checked />
   </label>
 <br />  <br />
 <b>$lt{'scfc'}: </b>  <label>
 <input type="checkbox" name="setcontent" checked>      <b>$lt{'scfc'}: </b>
       <input type="checkbox" name="setcontent" checked />
   </label>
 </p>  </p>
 <h2>$lt{'cmmn'}</h2>  <h2>$lt{'cmmn'}</h2>
 <p>  <p>
 <b>$lt{'dsrd'}: </b>  <label>
 <input type="checkbox" name="disresdis" /> <br />      <b>$lt{'dsrd'}: </b>
 <b>$lt{'dsuc'}: </b>      <input type="checkbox" name="disresdis" />
 <input type="checkbox" name="disablechat" />  </label>
   <br />
   <label>
       <b>$lt{'dsuc'}: </b>
       <input type="checkbox" name="disablechat" />
   </label>
 </p>  </p>
 <h2>$lt{'acco'}</h2>  <h2>$lt{'acco'}</h2>
 <p>  <p>
 <b>$lt{'snak'}: </b>  <label>
 <input type="checkbox" name="setkeys" />      <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>  </p>
 <h2>$lt{'rshm'}</h2>  <h2>$lt{'rshm'}</h2>
 <p>  <p>
 <b>$lt{'rshm'}: </b>  <label>
 <input type="text" name="reshome" size="30" value="/res/$defdom/" />      <b>$lt{'rshm'}: </b>
       <input type="text" name="reshome" size="30" value="/res/$defdom/" />
   </label>
 </p>  </p>
 <p>  <p>
 <h2>$lt{'aens'}</h2>  <h2>$lt{'aens'}</h2>
Line 424  $lt{'aesc'} Line 497  $lt{'aesc'}
 </p>  </p>
 <p>  <p>
 <b>$lt{'aadd'}</b>  <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>  </p><p>
 <b>$lt{'audr'}</b>  <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>  </p><p>
 <b>$lt{'dacu'}</b>  <b>$lt{'dacu'}</b>
 $date_table  $enroll_table
 </p><p>  </p><p>
   <b>$lt{'dacc'}</b>
   $access_table
   <p></p>
 <b>$lt{'psam'}.</b><br />  <b>$lt{'psam'}.</b><br />
 $lt{'pcda'}.  $lt{'pcda'}.
 </p><p>  </p><p>
Line 443  $locform Line 522  $locform
 </p><p>  </p><p>
 <b>$lt{'nech'}</b><br />  <b>$lt{'nech'}</b><br />
 $lt{'nccl'}<br/>  $lt{'nccl'}<br/>
 <input type="radio" name="notify" value="1" />$lt{'yes'} <input type="radio" name="notify"  <label>
 value="0" checked="true" />$lt{'no'}      <input type="radio" name="notify" value="1" />$lt{'yes'}
 </p><p>  </label> 
 <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="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>  </p>
 <hr />  <hr />
 <h2>$lt{'cc'}</h2>  <h2>$lt{'cc'}</h2>
 <p>  <p>
 <b>$lt{'user'}:</b> <input type="text" size="15" name="ccuname" />  <label>
 </p><p>      <b>$lt{'user'}:</b> <input type="text" size="15" name="ccuname" />
 <b>$lt{'dmn'}:</b> $domform  </label>
 </p><p>  </p><p>
 <b>$lt{'ierc'}:</b>  <label>
 <input type="checkbox" name="expireown" checked>      <b>$lt{'dmn'}:</b> $domform
   </label>
   </p><p>
   <label>
       <b>$lt{'ierc'}:</b>
       <input type="checkbox" name="expireown" checked />
   </label>
 </p>  </p>
 <p>  <p>
 <input type="hidden" name="phase" value="two" />  <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>  </p>
 </form>  </form>
 </body>  </body>
Line 473  ENDDOCUMENT Line 568  ENDDOCUMENT
 sub create_course {  sub create_course {
     my $r=shift;      my $r=shift;
     my $topurl='/res/'.&Apache::lonnet::declutter($ENV{'form.topmap'});      my $topurl='/res/'.&Apache::lonnet::declutter($ENV{'form.topmap'});
       my $this_server = $Apache::lonnet::perlvar{'lonHostID'};
     my $ccuname=$ENV{'form.ccuname'};      my $ccuname=$ENV{'form.ccuname'};
     my $ccdomain=$ENV{'form.ccdomain'};      my $ccdomain=$ENV{'form.ccdomain'};
     $ccuname=~s/\W//g;      $ccuname=~s/\W//g;
Line 519  ENDENHEAD Line 615  ENDENHEAD
     my $courseid=&Apache::lonnet::createcourse($ENV{'request.role.domain'},      my $courseid=&Apache::lonnet::createcourse($ENV{'request.role.domain'},
                                                $cdescr,$curl,                                                 $cdescr,$curl,
                                                $ENV{'form.course_home'},                                                 $ENV{'form.course_home'},
                                                $ENV{'form.nonstandard'});                                                 $ENV{'form.nonstandard'},
                                                  $ENV{'form.crscode'},
                                                  $ENV{'form.ccuname'});
   
     # Note: The testing routines depend on this being output; see       # Note: The testing routines depend on this being output; see 
     # Utils::Course. This needs to at least be output as a comment      # Utils::Course. This needs to at least be output as a comment
Line 553  ENDENHEAD Line 651  ENDENHEAD
     $cenv{'url'}=$oldcenv{'url'};      $cenv{'url'}=$oldcenv{'url'};
 # Restore title  # Restore title
     $cenv{'description'}=$oldcenv{'description'};      $cenv{'description'}=$oldcenv{'description'};
   # restore grading mode
       if (defined($oldcenv{'grading'})) {
    $cenv{'grading'}=$oldcenv{'grading'};
       }
 # Mark as cloned  # Mark as cloned
     $cenv{'clonedfrom'}=$cloneid;      $cenv{'clonedfrom'}=$cloneid;
     delete($cenv{'default_enrollment_start_date'});      delete($cenv{'default_enrollment_start_date'});
Line 562  ENDENHEAD Line 664  ENDENHEAD
 #  #
 # Set environment (will override cloned, if existing)  # Set environment (will override cloned, if existing)
 #  #
     my @affiliates = ();  # Used to accumulate sections and crosslistings      my @sections = ();
       my @xlists = ();
     if ($ENV{'form.crsid'}) {      if ($ENV{'form.crsid'}) {
         $cenv{'courseid'}=$ENV{'form.crsid'};          $cenv{'courseid'}=$ENV{'form.crsid'};
     }      }
     if ($ENV{'form.crscode'}) {      if ($ENV{'form.crscode'}) {
         $cenv{'internal.coursecode'}=$ENV{'form.crscode'};          $cenv{'internal.coursecode'}=$ENV{'form.crscode'};
     }      }
       if ($ccuname) {
           $cenv{'internal.courseowner'} = $ccuname;
       } else {
           $cenv{'internal.courseowner'} = $ENV{'user.name'};
       }
   
       my @badclasses = (); # Used to accumulate sections/crosslistings that did not pass classlist access check for course owner.
     if ($ENV{'form.crssections'}) {      if ($ENV{'form.crssections'}) {
         $cenv{'internal.sectionnums'}=$ENV{'form.crssections'};          $cenv{'internal.sectionnums'} = '';
         my @sections = ();          if ($ENV{'form.crssections'} =~ m/,/) {
         if ($cenv{'internal.sectionnums'} =~ m/,/) {              @sections = split/,/,$ENV{'form.crssections'};
             @sections = split/,/,$cenv{'internal.sectionnums'};  
         } else {          } else {
             $sections[0] = $cenv{'internal.sectionnums'};              $sections[0] = $ENV{'form.crssections'};
         }          }
         if (@sections > 0) {          if (@sections > 0) {
             foreach (@sections) {              foreach my $item (@sections) {
                 my ($sec,$gp) = split/:/,$_;                   my ($sec,$gp) = split/:/,$item;
                 push @affiliates,$ENV{'form.crscode'}.$sec;                  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 {
                       push @badclasses, $class;
                   }
             }              }
               $cenv{'internal.sectionnums'} =~ s/,$//;
         }          }
     }      }
 # do not hide course coordinator from staff listing,   # do not hide course coordinator from staff listing, 
 # even if privileged  # even if privileged
     $cenv{'nothideprivileged'}=$ccuname.':'.$ccdomain;      $cenv{'nothideprivileged'}=$ccuname.':'.$ccdomain;
     if ($ENV{'form.crsxlist'}) {      if ($ENV{'form.crsxlist'}) {
        $cenv{'internal.crosslistings'}=$ENV{'form.crsxlist'};          $cenv{'internal.crosslistings'}='';
        my @xlists = ();          if ($ENV{'form.crsxlist'} =~ m/,/) {
         if ($cenv{'internal.crosslistings'} =~ m/,/) {              @xlists = split/,/,$ENV{'form.crsxlist'};
             @xlists = split/,/,$cenv{'internal.crosslistings'};  
         } else {          } else {
             $xlists[0] = $cenv{'internal.crosslistings'};              $xlists[0] = $ENV{'form.crsxlist'};
         }          }
         if (@xlists > 0) {          if (@xlists > 0) {
             foreach (@xlists) {              foreach my $item (@xlists) {
                 my ($xl,$gp) = split/:/,$_;                  my ($xl,$gp) = split/:/,$item;
                 push @affiliates,$xl;                  my $addcheck =  &Apache::lonnet::auto_new_course($crsunum,$crsudom,$xl,$cenv{'internal.courseowner'});
                   if ($addcheck eq 'ok') {
                       $cenv{'internal.crosslistings'} .= $item.',';
                   } else {
                       push @badclasses, $xl;
                   }
             }              }
               $cenv{'internal.crosslistings'} =~ s/,$//;
         }          }
     }      }
     if ($ENV{'form.autoadds'}) {      if ($ENV{'form.autoadds'}) {
Line 610  ENDENHEAD Line 731  ENDENHEAD
     }      }
     if ($ENV{'form.notify'}) {      if ($ENV{'form.notify'}) {
       if ($ccuname) {        if ($ccuname) {
         $cenv{'internal.notifylist'} = $ccuname;          $cenv{'internal.notifylist'} = $ccuname.'@'.$ccdomain;
       }        }
     }      }
     if ($ccuname) {      if (@badclasses > 0) {
         $cenv{'internal.courseowner'} = $ccuname;          my %lt=&Apache::lonlocal::texthash(
     } else {                  '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',
         $cenv{'internal.courseowner'} = $ENV{'user.name'};                  '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'
     if (@affiliates > 0) {          );
         my @badclasses = ();          $r->print('<font color="red">'.$lt{'tclb'}.' ('.$cenv{'internal.courseowner'}.') - '.$lt{'dnhr'}.' ('.$lt{'adby'}.').<br /><ul>'."\n");
         foreach my $class (@affiliates) {          foreach (@badclasses) {
             my $addcheck =  &localenroll::new_course($class,$cenv{'internal.courseowner'});              $r->print("<li>$_</li>\n");
             unless ($addcheck eq 'ok') {  
                 push @badclasses, $class;   
             }  
         }  
         if (@badclasses > 0) {  
             $r->print('<font color="red">'.  
                       "The courses listed below were 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 ($cenv{'internal.courseowner'}) - does not have rights to access enrollment in these classes (as determined by your instititution's policies on access to official classlists).<br/><ul>\n");  
             foreach (@badclasses) {  
                 $r->print("<li>$_</li>\n");  
             }  
             $r->print ("</ul><br/><br/></font>\n");  
         }          }
           $r->print ("</ul><br /><br /></font>\n");
     }      }
     my $startdate = &Apache::lonhtmlcommon::get_date_from_form('startdate');      my $enrollstart = &Apache::lonhtmlcommon::get_date_from_form('startenroll');
     my $enddate   = &Apache::lonhtmlcommon::get_date_from_form('enddate');      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'}) {      if ($ENV{'form.no_end_date'}) {
       $enddate = 0;        $endaccess = 0;
     }      }
     $cenv{'internal.autostart'}=$startdate;      $cenv{'internal.autostart'}=$enrollstart;
     $cenv{'internal.autoend'}=$enddate;      $cenv{'internal.autoend'}=$enrollend;
       $cenv{'default_enrollment_start_date'}=$startaccess;
       $cenv{'default_enrollment_end_date'}=$endaccess;
     if ($ENV{'form.showphotos'}) {      if ($ENV{'form.showphotos'}) {
       $cenv{'internal.showphotos'}=$ENV{'form.showphotos'};        $cenv{'internal.showphotos'}=$ENV{'form.showphotos'};
     }      }
Line 678  ENDENHEAD Line 793  ENDENHEAD
  $cenv{'reshome'}=$ENV{'form.reshome'}.'/';   $cenv{'reshome'}=$ENV{'form.reshome'}.'/';
  $cenv{'reshome'}=~s/\/+$/\//;   $cenv{'reshome'}=~s/\/+$/\//;
     }      }
   #
   # course has keyed access
   #
     if ($ENV{'form.setkeys'}) {      if ($ENV{'form.setkeys'}) {
        $cenv{'keyaccess'}='yes';         $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'}) {      if ($ENV{'form.disresdis'}) {
         $cenv{'pch.roles.denied'}='st';          $cenv{'pch.roles.denied'}='st';
     }      }
Line 703  ENDENHEAD Line 830  ENDENHEAD
     $cenv{'internal.encpref'}=100+int(9*rand(99));      $cenv{'internal.encpref'}=100+int(9*rand(99));
     #      #
     # By default, use standard grading      # By default, use standard grading
     $cenv{'grading'} = 'standard';      if (!defined($cenv{'grading'})) { $cenv{'grading'} = 'standard'; }
   
     $r->print('<br />'.&mt('Setting environment').': '.                       $r->print('<br />'.&mt('Setting environment').': '.                 
           &Apache::lonnet::put('environment',\%cenv,$crsudom,$crsunum).'<br>');            &Apache::lonnet::put('environment',\%cenv,$crsudom,$crsunum).'<br>');

Removed from v.1.55  
changed lines
  Added in v.1.72


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>