Diff for /loncom/interface/loncreatecourse.pm between versions 1.46 and 1.60

version 1.46, 2003/12/11 17:31:23 version 1.60, 2004/06/17 18:31:24
Line 1 Line 1
 # The LearningOnline Network  #meserver The LearningOnline Network
 # Create a course  # Create a course
 #  #
 # $Id$  # $Id$
Line 25 Line 25
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
 # (My Desk  ###
 #  
 # (Internal Server Error Handler  
 #  
 # (Login Screen  
 # 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14,  
 # 1/14/00,5/29,5/30,6/1,6/29,7/1,11/9 Gerd Kortemeyer)  
 #  
 # 3/1/1 Gerd Kortemeyer)  
 #  
 # 3/1 Gerd Kortemeyer)  
 #  
 # 2/14,2/16,2/17,7/6 Gerd Kortemeyer  
 #  
 package Apache::loncreatecourse;  package Apache::loncreatecourse;
   
 use strict;  use strict;
Line 54  use localenroll; Line 42  use localenroll;
   
 # ================================================ Get course directory listing  # ================================================ Get course directory listing
   
   #FIXME - doesn't support directories under /userfiles/ BUG#2999
 sub crsdirlist {  sub crsdirlist {
     my ($courseid,$which)=@_;      my ($courseid,$which)=@_;
     unless ($which) { $which=''; }      unless ($which) { $which=''; }
Line 63  sub crsdirlist { Line 52  sub crsdirlist {
  &Apache::loncommon::propath($crsdata{'domain'},$crsdata{'num'}));   &Apache::loncommon::propath($crsdata{'domain'},$crsdata{'num'}));
     my @output=();      my @output=();
     foreach (@listing) {      foreach (@listing) {
    #FIXME if list is a DIR need to recurse
  unless ($_=~/^\./) {   unless ($_=~/^\./) {
     push (@output,(split(/\&/,$_))[0]);      push (@output,(split(/\&/,$_))[0]);
  }   }
Line 248  sub print_course_creation_page { Line 238  sub print_course_creation_page {
     my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript();      my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript();
     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 298  sub print_course_creation_page { Line 289  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 308  sub print_course_creation_page { Line 301  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",
                     'nccl' => "Notification to course coordinator via LON-CAPA message when enrollment changes occur during the automated update?",                      'nccl' => "Notification to course coordinator via LON-CAPA message when enrollment changes occur during the automated update?",
                     'irsp' => "Include retrieval of student photographs?",                      'irsp' => "Include retrieval of student photographs?",
       'rshm' => 'Resource Space Home',
                     'opco' => "Open Course"                      'opco' => "Open Course"
        );         );
     $r->print(<<ENDDOCUMENT);      $r->print(<<ENDDOCUMENT);
Line 402  $lt{'asov'}. Line 397  $lt{'asov'}.
 <h2>$lt{'assp'}</h2>  <h2>$lt{'assp'}</h2>
 <p>  <p>
 <b>$lt{'oaas'}: </b>  <b>$lt{'oaas'}: </b>
 <input type="checkbox" name="openall" checked>  <input type="checkbox" name="openall" />
 </p>  </p>
 <h2>$lt{'mssg'}</h2>  <h2>$lt{'mssg'}</h2>
 <p>  <p>
 <b>$lt{'scpf'}: </b>  <b>$lt{'scpf'}: </b>
 <input type="checkbox" name="setpolicy" checked>  <input type="checkbox" name="setpolicy" checked>
 </p><p>  <br />
 <b>$lt{'scfc'}: </b>  <b>$lt{'scfc'}: </b>
 <input type="checkbox" name="setcontent" checked>  <input type="checkbox" name="setcontent" checked>
 </p>  </p>
Line 422  $lt{'asov'}. Line 417  $lt{'asov'}.
 <h2>$lt{'acco'}</h2>  <h2>$lt{'acco'}</h2>
 <p>  <p>
 <b>$lt{'snak'}: </b>  <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>  </p>
 <h2>$lt{'cc'}</h2>  
 <p>  <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>  <h2>$lt{'aens'}</h2>
 $lt{'aesc'}  $lt{'aesc'}
 </p>  </p>
Line 444  $lt{'aesc'} Line 438  $lt{'aesc'}
 <input type="radio" name="autodrops" value="1" />$lt{'yes'} <input type="radio" name="autodrops" value="0" checked="true" />$lt{'no'}  <input type="radio" name="autodrops" value="1" />$lt{'yes'} <input type="radio" name="autodrops" value="0" checked="true" />$lt{'no'}
 </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 461  $lt{'nccl'}<br/> Line 458  $lt{'nccl'}<br/>
 value="0" checked="true" />$lt{'no'}  value="0" checked="true" />$lt{'no'}
 </p><p>  </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'}  <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>  </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="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>
Line 476  ENDDOCUMENT Line 484  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 495  ENDENHEAD Line 504  ENDENHEAD
     #      #
     # Check the veracity of the course coordinator      # Check the veracity of the course coordinator
     if (&Apache::lonnet::homeserver($ccuname,$ccdomain) eq 'no_host') {      if (&Apache::lonnet::homeserver($ccuname,$ccdomain) eq 'no_host') {
         $r->print(&mt('No such user').' '.$ccuname.' '.&mt('at').' '.$ccdomain.'</body></html>');   $r->print('<form action="/adm/createuser" method="post" name="crtuser">');
           $r->print(&mt('No such user').' '.$ccuname.' '.&mt('at').' '.$ccdomain.'.<br />');
    $r->print(&mt("Please click Back on your browser and select another user, or "));
    $r->print('
       <input type="hidden" name="phase" value="get_user_info" />
               <input type="hidden" name="ccuname" value="'.$ccuname.'" />
               <input type="hidden" name="ccdomain" value="'.$ccdomain.'" />
               <input name="userrole" type="submit" value="'.
     &mt('Create User').'" />
    </form></body></html>');
  return;   return;
     }      }
     # Check the proposed home server for the course      # Check the proposed home server for the course
Line 549  ENDENHEAD Line 567  ENDENHEAD
     $cenv{'description'}=$oldcenv{'description'};      $cenv{'description'}=$oldcenv{'description'};
 # Mark as cloned  # Mark as cloned
     $cenv{'clonedfrom'}=$cloneid;      $cenv{'clonedfrom'}=$cloneid;
       delete($cenv{'default_enrollment_start_date'});
       delete($cenv{'default_enrollment_end_date'});
  }   }
     }      }
 #  #
Line 576  ENDENHEAD Line 596  ENDENHEAD
             }              }
         }          }
     }      }
   # do not hide course coordinator from staff listing, 
   # even if privileged
       $cenv{'nothideprivileged'}=$ccuname.':'.$ccdomain;
     if ($ENV{'form.crsxlist'}) {      if ($ENV{'form.crsxlist'}) {
        $cenv{'internal.crosslistings'}=$ENV{'form.crsxlist'};         $cenv{'internal.crosslistings'}=$ENV{'form.crsxlist'};
        my @xlists = ();         my @xlists = ();
Line 610  ENDENHEAD Line 633  ENDENHEAD
     if (@affiliates > 0) {      if (@affiliates > 0) {
         my @badclasses = ();          my @badclasses = ();
         foreach my $class (@affiliates) {          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') {              unless ($addcheck eq 'ok') {
                 push @badclasses, $class;                   push @badclasses, $class; 
             }              }
Line 624  ENDENHEAD Line 647  ENDENHEAD
             $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 663  ENDENHEAD Line 690  ENDENHEAD
            $cenv{'question.email'}=$ccuname.':'.$ccdomain;             $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'}) {      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 680  ENDENHEAD Line 723  ENDENHEAD
     # Use new Randomseed      # Use new Randomseed
     #      #
     $cenv{'rndseed'}=&Apache::lonnet::latest_rnd_algorithm_id();;      $cenv{'rndseed'}=&Apache::lonnet::latest_rnd_algorithm_id();;
       $cenv{'receiptalg'}=&Apache::lonnet::latest_receipt_algorithm_id();;
       #
       # The encryption code and receipt prefix for this course
       #
       $cenv{'internal.encseed'}=$Apache::lonnet::perlvar{'lonReceipt'}.$$.time.int(rand(9999));
       $cenv{'internal.encpref'}=100+int(9*rand(99));
     #      #
     # By default, use standard grading      # By default, use standard grading
     $cenv{'grading'} = 'standard';      $cenv{'grading'} = 'standard';
Line 700  ENDENHEAD Line 749  ENDENHEAD
 #  #
 # Set first page  # Set first page
 #  #
     unless (($ENV{'form.nonstandard'}) || ($ENV{'form.firstres'} eq 'blank')) {      unless (($ENV{'form.nonstandard'}) || ($ENV{'form.firstres'} eq 'blank')
       || ($cloneid)) {
  $r->print(&mt('Setting first resource').': ');   $r->print(&mt('Setting first resource').': ');
         my ($errtext,$fatal)=          my ($errtext,$fatal)=
            &Apache::londocs::mapread($crsunum,$crsudom,'default.sequence');             &Apache::londocs::mapread($crsunum,$crsudom,'default.sequence');
Line 739  ENDENHEAD Line 789  ENDENHEAD
  $r->print(   $r->print(
  '<p><a href="/adm/managekeys?cid='.$crsudom.'_'.$crsunum.'">'.&mt('Manage Access Keys').'</a></p>');   '<p><a href="/adm/managekeys?cid='.$crsudom.'_'.$crsunum.'">'.&mt('Manage Access Keys').'</a></p>');
     }      }
   # Flush the course logs so reverse user roles immediately updated
       &Apache::lonnet::flushcourselogs();
     $r->print('<p>'.&mt('Roles will be active at next login').'.</p></body></html>');      $r->print('<p>'.&mt('Roles will be active at next login').'.</p></body></html>');
 }  }
   

Removed from v.1.46  
changed lines
  Added in v.1.60


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