Diff for /loncom/interface/lonmodifycourse.pm between versions 1.19 and 1.26

version 1.19, 2005/09/16 16:01:18 version 1.26, 2006/07/11 02:28:22
Line 1 Line 1
   # The LearningOnline Network with CAPA
   # automated enrollment course setup handler
   #
   # $Id$
   #
 # Copyright Michigan State University Board of Trustees  # Copyright Michigan State University Board of Trustees
 #  #
 # This file is part of the LearningOnline Network with CAPA (LON-CAPA).  # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
Line 30  use Apache::lonlocal; Line 35  use Apache::lonlocal;
 use Apache::londropadd;  use Apache::londropadd;
 use LONCAPA::Enrollment;  use LONCAPA::Enrollment;
 use lib '/home/httpd/lib/perl';  use lib '/home/httpd/lib/perl';
   use LONCAPA;
   
 sub print_course_selection_page {  sub print_course_selection_page {
     my ($r,$tasklongref) = @_;      my ($r,$tasklongref) = @_;
Line 45  sub print_course_selection_page { Line 51  sub print_course_selection_page {
     );      );
                                                                                                                                                                               
 # Determine the courses  # Determine the courses
     my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.');      my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.',undef,undef,'.');
     &print_header($r,$tasklongref);      &print_header($r,$tasklongref);
     $r->print(<<ENDBLOCK);      $r->print(<<ENDBLOCK);
 <form action="/adm/modifycourse" method="post" name="cmod">  <form action="/adm/modifycourse" method="post" name="cmod">
Line 96  ENDBLOCK Line 102  ENDBLOCK
             if ($item =~ m/^($dom)_(\w+)$/) {              if ($item =~ m/^($dom)_(\w+)$/) {
                 $crs = $2;                  $crs = $2;
                 if ($courseIDs{$item} =~ /^([^:]*):([^:]*):([^:]*)/) {                  if ($courseIDs{$item} =~ /^([^:]*):([^:]*):([^:]*)/) {
                     $description = &Apache::lonnet::unescape($1);                      $description = &unescape($1);
                     $owner = &Apache::lonnet::unescape($3);                      $owner = &unescape($3);
                       if (($owner ne '') && ($owner !~ /^([^:]+):([^:]+)$/)) {
                           $owner = $owner.':'.$dom;
                       }
                 } elsif ($courseIDs{$item} =~ /^([^:]*):([^:]*)$/) {                  } elsif ($courseIDs{$item} =~ /^([^:]*):([^:]*)$/) {
                     $description = &Apache::lonnet::unescape($1);                      $description = &unescape($1);
                 } else {                     } else {   
                     $description = &Apache::lonnet::unescape($courseIDs{$item});                      $description = &unescape($courseIDs{$item});
                 }                  }
 # Get course owner  # Get course owner
                 if ($owner eq '') {                  if ($owner eq '') {
Line 111  ENDBLOCK Line 120  ENDBLOCK
                     }                      }
                 }                  }
                 unless ($owner eq '') {                  unless ($owner eq '') {
                     $ownername = &Apache::loncommon::plainname($owner,$dom);                      my ($owneruname,$ownerdom);
                       if ($owner =~ /^([^:]+):([^:]+)$/) {
                           $owneruname = $1;
                           $ownerdom = $2;             
                       } else {
                           $owneruname = $owner;
                           $ownerdom = $dom;
                       }
                       $ownername = &Apache::loncommon::plainname($owneruname,
                                                                  $ownerdom);
                 }                  }
                 $r->print("<option value=\"$crs\">$showcode -- $description ---------- $ownername");                  $r->print("<option value=\"$crs\">$showcode -- $description ---------- $ownername");
             }              }
Line 160  sub print_course_modification_page { Line 178  sub print_course_modification_page {
             'noen' => "No end date",              'noen' => "No end date",
             'ownr' => "Owner",              'ownr' => "Owner",
             'name' => "Name",              'name' => "Name",
             'unme' => "Username",              'unme' => "Username:Domain",
             'stus' => "Status",              'stus' => "Status",
             'aecs' => "Automated Enrollment Course Settings",              'aecs' => "Automated Enrollment Course Settings",
             'cose' => "Course settings for LON-CAPA courses that control automated student enrollment based on classlist data available from your institution's student information system fall into two groups: (a) settings that can be modified by a Course Coordinator using the ",              'cose' => "Course settings for LON-CAPA courses that control automated student enrollment based on classlist data available from your institution's student information system fall into two groups: (a) settings that can be modified by a Course Coordinator using the ",
Line 190  all settings except course code, course Line 208  all settings except course code, course
     $enrollvar{'autharg'} = '';      $enrollvar{'autharg'} = '';
     $enrollvar{'authtype'} = '';      $enrollvar{'authtype'} = '';
     foreach my $item (keys %settings) {      foreach my $item (keys %settings) {
         if ($item =~ m/^internal\.(.+)$/) {   if ($item =~ m/^internal\.(.+)$/) {
             if ( ($1 eq "autoadds") || ($1 eq "autodrops") ) {      my $type = $1;
   
               if ( ($type eq "autoadds") || ($type eq "autodrops") ) {
         if ($settings{$item} == 1) {          if ($settings{$item} == 1) {
             $enrollvar{$1} = "ON";              $enrollvar{$type} = "ON";
         } else {          } else {
             $enrollvar{$1} = "OFF";              $enrollvar{$type} = "OFF";
         }          }
             } elsif ( ($1 eq "autostart") || ($1 eq "autoend") ) {              } elsif ( ($type eq "autostart") || ($type eq "autoend") ) {
         if ( ($1 eq "autoend") && ($settings{$item} == 0) ) {          if ( ($type eq "autoend") && ($settings{$item} == 0) ) {
             $enrollvar{$1} = $lt{'noen'};              $enrollvar{$type} = $lt{'noen'};
         } else {          } else {
             $enrollvar{$1} = localtime($settings{$item});              $enrollvar{$type} = localtime($settings{$item});
         }          }
             } elsif ($1 eq "courseowner" || $1 eq "authtype" || $1 eq "autharg" || $1 eq "sectionnums" || $1 eq "coursecode" || $1 eq "crosslistings") {      } elsif ($type eq "sectionums") {
         $enrollvar{$1} = $settings{$item};   $enrollvar{$type} = $settings{$item};
    $enrollvar{$type} =~ s/,/, /g;
               } elsif ($type eq "authtype" 
        || $type eq "autharg"    || $type eq "coursecode"
        || $type eq "crosslistings") {
           $enrollvar{$type} = $settings{$item};
               } elsif ($type eq 'courseowner') {
                   if ($settings{$item} =~ /^[^:]+:[^:]+$/) {
                       $enrollvar{$type} = $settings{$item};
                   } else {
                       if ($settings{$item} ne '') {
                           $enrollvar{$type} = $settings{$item}.':'.$dom;
                       }
                   }
             }              }
         } elsif ($item =~ m/^default_enrollment_(start|end)_date$/) {          } elsif ($item =~ m/^default_enrollment_(start|end)_date$/) {
             if ( ($1 eq 'end') && ($settings{$item} == 0) ) {      my $type = $1;
               if ( ($type eq 'end') && ($settings{$item} == 0) ) {
                 $enrollvar{$item} = $lt{'noen'};                  $enrollvar{$item} = $lt{'noen'};
             } elsif ( ($1 eq 'start') && ($settings{$item} eq '') ) {              } elsif ( ($type eq 'start') && ($settings{$item} eq '') ) {
                 $enrollvar{$item} = 'When enrolled';                  $enrollvar{$item} = 'When enrolled';
             } else {              } else {
                 $enrollvar{$item} = localtime($settings{$item});                  $enrollvar{$item} = localtime($settings{$item});
Line 222  all settings except course code, course Line 256  all settings except course code, course
     my %cc_status = ();      my %cc_status = ();
     my %pname = ();      my %pname = ();
     my $active_cc;      my $active_cc;
     foreach (@coursepersonnel) {      foreach my $person (@coursepersonnel) {
         my @roleinfo = split/:/,$_;          my ($role,$user) = split(/:/,$person,2);
         if ( ($roleinfo[0] eq 'cc')  && ($roleinfo[2] eq $dom) )  {          $user =~ s/:$//;
             unless (grep/^$roleinfo[1]$/,@local_ccs) {          if (($role eq 'cc') && ($user ne ''))  {
                 $active_cc = &Apache::loncommon::check_user_status($roleinfo[2],$roleinfo[1],$dom,$course,'cc');              if (!grep(/^\Q$user\E$/,@local_ccs)) {
                   my ($ccname,$ccdom) = split(/:/,$user);
                   $active_cc = 
                      &Apache::loncommon::check_user_status($ccdom,$ccname,$dom,
                                                            $course,'cc');
                 if ($active_cc eq 'active') {                  if ($active_cc eq 'active') {
                     push @local_ccs, $roleinfo[1];                      push(@local_ccs,$user);
                     $pname{$roleinfo[1]} = &Apache::loncommon::plainname($roleinfo[1],$roleinfo[2]);                      $pname{$user} = &Apache::loncommon::plainname($ccname,$ccdom);
                     $cc_status{$roleinfo[1]} = $lt{'actv'};                      $cc_status{$user} = $lt{'actv'};
                 }                  }
             }              }
         }          }
     }      }
     unless ( (grep/^$enrollvar{'courseowner'}$/,@local_ccs) || ($enrollvar{'courseowner'} eq '') )  {      if ( (!grep(/^$enrollvar{'courseowner'}$/,@local_ccs)) && 
         push @local_ccs, $enrollvar{'courseowner'};               ($enrollvar{'courseowner'} ne '') )  {
         $pname{$enrollvar{'courseowner'}} =  &Apache::loncommon::plainname($enrollvar{'courseowner'},$dom);          my ($owneruname,$ownerdom) = split(/:/,$enrollvar{'courseowner'});
         $active_cc = &Apache::loncommon::check_user_status($dom,$enrollvar{'coursecode'},$dom,$course,'cc');          push(@local_ccs,$enrollvar{'courseowner'});
           $pname{$enrollvar{'courseowner'}} = 
                            &Apache::loncommon::plainname($owneruname,$ownerdom);
           $active_cc = &Apache::loncommon::check_user_status($ownerdom,$owneruname,
                                                              $dom,$course,'cc');
         if ($active_cc eq 'active') {          if ($active_cc eq 'active') {
             $cc_status{$enrollvar{'courseowner'}} = $lt{'actv'};              $cc_status{$enrollvar{'courseowner'}} = $lt{'actv'};
         } else {          } else {
Line 246  all settings except course code, course Line 288  all settings except course code, course
         }          }
     }      }
     my $numlocalcc = @local_ccs;      my $numlocalcc = @local_ccs;
     my $bodytag=&Apache::loncommon::bodytag(&mt("Modify Course Settings"));  
     my $helplink=&Apache::loncommon::help_open_topic('Modify_Course',&mt("Help on Modifying Courses"));      my $helplink=&Apache::loncommon::help_open_topic('Modify_Course',&mt("Help on Modifying Courses"));
     my ($krbdef,$krbdefdom)=&Apache::loncommon::get_kerberos_defaults($dom);      my ($krbdef,$krbdefdom)=&Apache::loncommon::get_kerberos_defaults($dom);
     my $curr_authtype = '';      my $curr_authtype = '';
Line 336  all settings except course code, course Line 378  all settings except course code, course
             my $colflag = $i%2;              my $colflag = $i%2;
             $ownertable .= "<tr bgcolor=\"$bgcolors[$colflag]\" align=\"left\">";              $ownertable .= "<tr bgcolor=\"$bgcolors[$colflag]\" align=\"left\">";
             if ($local_ccs[$i] eq $enrollvar{'courseowner'}) {              if ($local_ccs[$i] eq $enrollvar{'courseowner'}) {
                   $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" checked=\"true\"/></td>";                    $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" checked=\"checked\" /></td>";
             } else {              } else {
                 $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" /></td>";                  $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" /></td>";
             }              }
Line 521  sub modify_course { Line 563  sub modify_course {
         }          }
     }      }
     if ($changeowner == 1 || $changecode == 1) {      if ($changeowner == 1 || $changecode == 1) {
         my $courseid_entry = &Apache::lonnet::escape($dom.'_'.$crs).'='.&Apache::lonnet::escape($description).':'.&Apache::lonnet::escape($env{'form.coursecode'}).':'.&Apache::lonnet::escape($env{'form.courseowner'});          my $courseid_entry = &escape($dom.'_'.$crs).'='.&escape($description).':'.&escape($env{'form.coursecode'}).':'.&escape($env{'form.courseowner'});
         &Apache::lonnet::courseidput($dom,$courseid_entry,&Apache::lonnet::homeserver($crs,$dom));          &Apache::lonnet::courseidput($dom,$courseid_entry,&Apache::lonnet::homeserver($crs,$dom));
     }      }
   
Line 635  sub modify_course { Line 677  sub modify_course {
 sub print_header {  sub print_header {
     my ($r,$tasklongref,$description,$javascriptref) = @_;      my ($r,$tasklongref,$description,$javascriptref) = @_;
     my %lt =&Apache::lonlocal::texthash(      my %lt =&Apache::lonlocal::texthash(
              'vmcs' => 'View/Modify Course Settings',  
              'chco' => 'Choose a course',               'chco' => 'Choose a course',
              'main' => 'Main Menu',               'main' => 'Main Menu',
              'comg' => 'Course Manager',               'comg' => 'Course Manager',
Line 648  sub print_header { Line 689  sub print_header {
         $description = $lt{'comg'};          $description = $lt{'comg'};
     }      }
     my $page = '';      my $page = '';
     my $bodytag=&Apache::loncommon::bodytag($lt{'vmcs'});  
     if ($action eq 'start') {        if ($action eq 'start') {  
         $page = "<b>$lt{'chco'}</b>";          $page = "<b>$lt{'chco'}</b>";
     } else {      } else {
Line 660  sub print_header { Line 701  sub print_header {
             $page .=  " -&gt; <b>".$$tasklongref{$action}."</b>";              $page .=  " -&gt; <b>".$$tasklongref{$action}."</b>";
         }          }
     }      }
     my $html=&Apache::lonxml::xmlbegin();  
     $r->print("      my $js;
 $html  
 <head>  
 ");  
     if ($action eq 'display') {      if ($action eq 'display') {
         $r->print("   $js = '<script  type="text/javascript">
 <script language=\"JavaScript\" type=\"text/javascript\">                    '.$$javascriptref.'
 $$javascriptref                 </script>';
 </script>");  
     }      }
       $r->print(&Apache::loncommon::start_page('View/Modify Course Settings',
        $js));
     $r->print(<<ENDTHIS);      $r->print(<<ENDTHIS);
 <title>The LearningOnline Network with CAPA</title>  
 </head>  
 $bodytag  
 <table width="100%" border="0" cellpadding="0" cellspacing="0">  <table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>   <tr>
   <td bgcolor="#CCCC99">    <td bgcolor="#CCCC99">
Line 690  ENDTHIS Line 726  ENDTHIS
 }  }
   
 sub print_footer {  sub print_footer {
     my $r = shift;      my ($r) = @_;
     $r->print(<<ENDBASE);      $r->print('<br />'.&Apache::loncommon::end_page());
 <br/>  
 </body>  
 </html>  
 ENDBASE  
     return;      return;
 }  }
   
 sub check_course {  sub check_course {
     my ($dom,$course) = @_;      my ($dom,$course) = @_;
     my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.');      my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.',undef,undef,'.');
     foreach my $key (sort keys %courseIDs) {      foreach my $key (sort keys %courseIDs) {
         if ($key =~ m/^($dom)_(\w+)$/) {          if ($key =~ m/^($dom)_(\w+)$/) {
             if ($2 eq $course) {              if ($2 eq $course) {
Line 737  sub handler { Line 769  sub handler {
                        'default_enrollment_start_date' => 'Date of first student access',                         'default_enrollment_start_date' => 'Date of first student access',
                        'default_enrollment_end_date' => 'Date of last student access',                         'default_enrollment_end_date' => 'Date of last student access',
                        'coursecode' => 'Official course code',                         'coursecode' => 'Official course code',
                        'courseowner' => "Username of course owner (\@$dom)",                         'courseowner' => "Username:domain of course owner",
                        'notifylist' => 'Course Coordinators to be notified of enrollment changes',                         'notifylist' => 'Course Coordinators to be notified of enrollment changes',
                        'sectionnums' => 'Course section number(:groupID)',                         'sectionnums' => 'Course section number(:groupID)',
                        'crosslistings' => 'Crosslisted class(:groupID)',                         'crosslistings' => 'Crosslisted class(:groupID)',

Removed from v.1.19  
changed lines
  Added in v.1.26


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