Diff for /loncom/interface/Attic/londropadd.pm between versions 1.141 and 1.142

version 1.141, 2006/05/01 19:37:33 version 1.142, 2006/05/11 20:09:47
Line 307  sub javascript_validations { Line 307  sub javascript_validations {
          ipass    => 'You need to specify the initial password.',           ipass    => 'You need to specify the initial password.',
          name     => 'The optional name field was not specified.',           name     => 'The optional name field was not specified.',
          snum     => 'The optional student number field was not specified.',           snum     => 'The optional student number field was not specified.',
          section  => 'The optional section or group field was not specified.',            section  => 'The optional section field was not specified.', 
          email    => 'The optional email address field was not specified.',           email    => 'The optional email address field was not specified.',
          continue => 'Continue enrollment?',           continue => 'Continue enrollment?',
          );           );
Line 393  END Line 393  END
     }      }
 END  END
     }      }
       my $section_checks;
     my $optional_checks = '';      my $optional_checks = '';
     if ( ($mode eq 'createcourse') || ($mode eq 'modifycourse') ) {      if ( ($mode eq 'createcourse') || ($mode eq 'modifycourse') ) {
         $optional_checks = (<<END);          $optional_checks = (<<END);
Line 400  END Line 401  END
 }  }
 END  END
     } else {      } else {
           $section_checks = &section_check_js();
         $optional_checks = (<<END);          $optional_checks = (<<END);
     var message='';      var message='';
     if (foundname==0) {       if (foundname==0) { 
Line 440  END Line 442  END
     if ( ($mode eq 'auth') || ($mode eq 'createcourse') || ($mode eq 'modifycourse')  ) {      if ( ($mode eq 'auth') || ($mode eq 'createcourse') || ($mode eq 'modifycourse')  ) {
         $result .= $auth_checks;          $result .= $auth_checks;
     }      }
     $result .= $optional_checks;      $result .= $optional_checks."\n".$section_checks;
     if ( ($mode eq 'auth') || ($mode eq 'createcourse') || ($mode eq 'modifycourse')  ) {      if ( ($mode eq 'auth') || ($mode eq 'createcourse') || ($mode eq 'modifycourse')  ) {
         $result .= $authheader;          $result .= $authheader;
     }      }
Line 451  END Line 453  END
 ###############################################################  ###############################################################
 sub upload_manager_javascript_forward_associate {  sub upload_manager_javascript_forward_associate {
     return(<<ENDPICK);      return(<<ENDPICK);
 function verify(vf) {  function verify(vf,sec_caller) {
     var founduname=0;      var founduname=0;
     var foundpwd=0;      var foundpwd=0;
     var foundname=0;      var foundname=0;
Line 544  ENDPICK Line 546  ENDPICK
 ###############################################################  ###############################################################
 sub upload_manager_javascript_reverse_associate {  sub upload_manager_javascript_reverse_associate {
     return(<<ENDPICK);      return(<<ENDPICK);
 function verify(vf) {  function verify(vf,sec_caller) {
     var founduname=0;      var founduname=0;
     var foundpwd=0;      var foundpwd=0;
     var foundname=0;      var foundname=0;
Line 640  sub print_upload_manager_footer { Line 642  sub print_upload_manager_footer {
     $Str .= &mt('Disable ID/Student Number Safeguard and Force Change '.      $Str .= &mt('Disable ID/Student Number Safeguard and Force Change '.
                 'of Conflicting IDs (only do if you know what you are doing)').                  'of Conflicting IDs (only do if you know what you are doing)').
                 "</label>\n</p><p>\n";                  "</label>\n</p><p>\n";
     $Str .= '<input type="button" onClick="javascript:verify(this.form)" '.      $Str .= '<input type="button"'. 
                 'onClick="javascript:verify(this.form,this.form.csec)" '.
         'value="Update Class List" />'."<br />\n";          'value="Update Class List" />'."<br />\n";
     $Str .= &mt('Note: for large courses, this operation may be time '.      $Str .= &mt('Note: for large courses, this operation may be time '.
                 'consuming');                  'consuming');
Line 701  sub print_upload_manager_form { Line 704  sub print_upload_manager_form {
              ['lname',&mt('Last Name'),       $env{'form.lname_choice'}],               ['lname',&mt('Last Name'),       $env{'form.lname_choice'}],
              ['gen',  &mt('Generation'),      $env{'form.gen_choice'}],               ['gen',  &mt('Generation'),      $env{'form.gen_choice'}],
              ['id',   &mt('ID/Student Number'),$env{'form.id_choice'}],               ['id',   &mt('ID/Student Number'),$env{'form.id_choice'}],
              ['sec',  &mt('Group/Section'),   $env{'form.sec_choice'}],               ['sec',  &mt('Section'),          $env{'form.sec_choice'}],
              ['ipwd', &mt('Initial Password'),$env{'form.ipwd_choice'}],               ['ipwd', &mt('Initial Password'),$env{'form.ipwd_choice'}],
              ['email',&mt('EMail Address'),   $env{'form.email_choice'}]);               ['email',&mt('EMail Address'),   $env{'form.email_choice'}]);
  if ($env{'form.upfile_associate'} eq 'reverse') {   if ($env{'form.upfile_associate'} eq 'reverse') {
Line 1074  END Line 1077  END
         # Print it all out          # Print it all out
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
    'cd'   => "Course Data",     'cd'   => "Course Data",
                    'gs'   => "Group/Section",                     'gs'   => "Section",
                    'idsn' => "ID/Student Number",                     'idsn' => "ID/Student Number",
                    'disn' => "Disable ID/Student Number Safeguard and Force Change of Conflicting IDs (only do if you know what you are doing)",                     'disn' => "Disable ID/Student Number Safeguard and Force Change of Conflicting IDs (only do if you know what you are doing)",
                    'eas'  => "Enroll as student",                     'eas'  => "Enroll as student",
Line 1085  END Line 1088  END
 <input type="hidden" name="cuname" value="$username" />  <input type="hidden" name="cuname" value="$username" />
 <input type="hidden" name="lcdomain" value="$domain" />  <input type="hidden" name="lcdomain" value="$domain" />
 <script type="text/javascript" language="Javascript">  <script type="text/javascript" language="Javascript">
 function verify(vf) {  function verify(vf,sec_caller) {
     var founduname=0;      var founduname=0;
     var foundpwd=0;      var foundpwd=0;
     var foundname=0;      var foundname=0;
Line 1102  function verify(vf) { Line 1105  function verify(vf) {
     }      }
     if ((typeof(vf.csec.value)!="undefined") && (vf.csec.value!='')) {      if ((typeof(vf.csec.value)!="undefined") && (vf.csec.value!='')) {
         foundsec=1;          foundsec=1;
           if (validate(sec_caller) == "error") {
               return;
           }
     }      }
     if ((typeof(vf.cstid.value)!="undefined") && (vf.cstid.value!='')) {      if ((typeof(vf.cstid.value)!="undefined") && (vf.cstid.value!='')) {
  foundid=1;   foundid=1;
Line 1138  $lt{'idsn'}: <input type="text" name="cs Line 1144  $lt{'idsn'}: <input type="text" name="cs
 $lt{'disn'}  $lt{'disn'}
 </label>  </label>
 </p><p>  </p><p>
 <input type="button" onClick="verify(this.form)" value="$lt{'eas'}">  <input type="button" onClick="verify(this.form,this.form.csec)" value="$lt{'eas'}">
 </p>  </p>
 END  END
     return;      return;
Line 1243  sub print_html_classlist { Line 1249  sub print_html_classlist {
 sub show_class_list {  sub show_class_list {
     my ($r,$mode,$linkto,$statusmode,$classlist,$keylist)=@_;      my ($r,$mode,$linkto,$statusmode,$classlist,$keylist)=@_;
     my $cid=$env{'request.course.id'};      my $cid=$env{'request.course.id'};
       my $cdom = $env{'course.'.$cid.'.domain'};
       my $cnum = $env{'course.'.$cid.'.num'};
       my ($classgroups) = &Apache::loncoursedata::get_group_memberships(
                                                 $classlist,$keylist,$cdom,$cnum);
     #      #
     # Variables for excel output      # Variables for excel output
     my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format);      my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format);
Line 1251  sub show_class_list { Line 1261  sub show_class_list {
     my ($CSVfile,$CSVfilename);      my ($CSVfile,$CSVfilename);
     #      #
     my $sortby = $env{'form.sortby'};      my $sortby = $env{'form.sortby'};
     if ($sortby !~ /^(username|domain|section|fullname|id|start|end|type)$/) {      if ($sortby !~ /^(username|domain|section|groups|fullname|id|start|end|type)$/) {
         $sortby = 'username';          $sortby = 'username';
     }      }
     if (! exists($env{'form.displayphotos'})) {      if (! exists($env{'form.displayphotos'})) {
Line 1271  END Line 1281  END
 END  END
     if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll') {      if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll') {
         if ($linkto eq 'aboutme') {          if ($linkto eq 'aboutme') {
             $r->print(&mt('Select a user name to view the users personal page.'));              $r->print(&mt("Select a user name to view the user's personal page."));
         } elsif ($linkto eq 'modify') {          } elsif ($linkto eq 'modify') {
             $r->print(&mt('Select a user name to modify the students information'));              $r->print(&mt("Select a user name to modify the student's information"));
         }          }
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash(
                                            'usrn'   => "username",                                             'usrn'   => "username",
                                            'dom'    => "domain",                                             'dom'    => "domain",
                                            'sn'     => "student name",                                             'sn'     => "student name",
                                            'sec'    => "section",                                             'sec'    => "section",
                                              'grp'    => "active groups",
                                            'start'  => "start date",                                             'start'  => "start date",
                                            'end'    => "end date",                                             'end'    => "end date",
                                            'type'   => "enroll type/action",                                             'type'   => "enroll type/action",
Line 1333  function photowindow(photolink) { Line 1344  function photowindow(photolink) {
        <a href="javascript:document.studentform.sortby.value='start';document.studentform.submit();">$lt{'start'}</a>         <a href="javascript:document.studentform.sortby.value='start';document.studentform.submit();">$lt{'start'}</a>
     </th><th>      </th><th>
        <a href="javascript:document.studentform.sortby.value='end';document.studentform.submit();">$lt{'end'}</a>         <a href="javascript:document.studentform.sortby.value='end';document.studentform.submit();">$lt{'end'}</a>
       </th><th>
          <a href="javascript:document.studentform.sortby.value='groups';document.studentform.submit();">$lt{'grp'}</a>
     </th>      </th>
 END  END
         if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {          if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
Line 1373  END Line 1386  END
             print $CSVfile '"'.join('","',map {              print $CSVfile '"'.join('","',map {
  &Apache::loncommon::csv_translate(&mt($_))   &Apache::loncommon::csv_translate(&mt($_))
                 } ("username","domain","ID","student name",                  } ("username","domain","ID","student name",
                    "section","start date","end date","status")).'"'."\n";                     "section","start date","end date","status","active groups"))
                     .'"'."\n";
         } else {          } else {
             print $CSVfile '"'.join('","',map {              print $CSVfile '"'.join('","',map {
  &Apache::loncommon::csv_translate(&mt($_))   &Apache::loncommon::csv_translate(&mt($_))
                 } ("username","domain","ID","student name",                  } ("username","domain","ID","student name",
                    "section","start date","end date")).'"'."\n";                     "section","start date","end date","active groups")).'"'."\n";
         }          }
     } elsif ($mode eq 'excel') {      } elsif ($mode eq 'excel') {
         # Create the excel spreadsheet          # Create the excel spreadsheet
Line 1393  END Line 1407  END
         #          #
         $excel_sheet->write($row++,0,["username","domain","ID",          $excel_sheet->write($row++,0,["username","domain","ID",
                                       "student name","section",                                        "student name","section",
                                       "start date","end date","status"],                                        "start date","end date","status",
                                         "active groups"],
                             $format->{'bold'});                              $format->{'bold'});
     }      }
     #      #
Line 1403  END Line 1418  END
     foreach (@$keylist) {      foreach (@$keylist) {
         $index{$_} = $i++;          $index{$_} = $i++;
     }      }
       $index{'groups'} = scalar(@{$keylist});
     my $index  = $index{$sortby};      my $index  = $index{$sortby};
     my $second = $index{'username'};      my $second = $index{'username'};
     my $third  = $index{'domain'};      my $third  = $index{'domain'};
Line 1420  END Line 1436  END
     my $lockcount = 0;      my $lockcount = 0;
     foreach my $student (@Sorted_Students) {      foreach my $student (@Sorted_Students) {
         my $sdata = $classlist->{$student};          my $sdata = $classlist->{$student};
           my $groups = $classgroups->{$student};
         my $username = $sdata->[$index{'username'}];          my $username = $sdata->[$index{'username'}];
         my $domain   = $sdata->[$index{'domain'}];          my $domain   = $sdata->[$index{'domain'}];
         my $section  = $sdata->[$index{'section'}];          my $section  = $sdata->[$index{'section'}];
           my $active_groups;
           if (ref($groups->{active}) eq 'HASH') {
               $active_groups = join(', ',keys(%{$groups->{'active'}}));
           }
         my $name     = $sdata->[$index{'fullname'}];          my $name     = $sdata->[$index{'fullname'}];
         my $id       = $sdata->[$index{'id'}];          my $id       = $sdata->[$index{'id'}];
         my $status   = $sdata->[$index{'status'}];          my $status   = $sdata->[$index{'status'}];
Line 1488  END Line 1509  END
     <td>$section</td>      <td>$section</td>
     <td>$start</td>      <td>$start</td>
     <td>$end</td>      <td>$end</td>
       <td>$active_groups</td>
 END  END
             if ($env{'course.'.$env{'request.course.id'}.              if ($env{'course.'.$env{'request.course.id'}.
  '.internal.showphoto'}) {   '.internal.showphoto'}) {
Line 1523  END Line 1545  END
             if ($statusmode eq 'Any') {              if ($statusmode eq 'Any') {
                 push @line,&Apache::loncommon::csv_translate($status);                  push @line,&Apache::loncommon::csv_translate($status);
             }              }
               push @line,&Apache::loncommon::csv_translate($active_groups);
             print $CSVfile '"'.join('","',@line).'"'."\n";              print $CSVfile '"'.join('","',@line).'"'."\n";
         } elsif ($mode eq 'excel') {          } elsif ($mode eq 'excel') {
             $excel_sheet->write($row,0,[$username,$domain,$id,              $excel_sheet->write($row,0,[$username,$domain,$id,
Line 1538  END Line 1561  END
                 }                                      }                    
             }              }
             $excel_sheet->write($row,$col++,$status);              $excel_sheet->write($row,$col++,$status);
               $excel_sheet->write($row,$col++,$active_groups);
             $row++;              $row++;
         }          }
     }      }
Line 1634  sub print_modify_student_form { Line 1658  sub print_modify_student_form {
                    'sec'   => "Section",                     'sec'   => "Section",
                    'sm'    => "Submit Modifications",                     'sm'    => "Submit Modifications",
        );         );
     $r->print(<<END);  # Check if section name is valid
       my $section_check = &section_check_js();
       $r->print(<<"END");
   <script type="text/javascript">
   $section_check
   function secverify(formname,caller) {
       if (validate(caller) == "error") {
           return;
       } else {
           formname.submit();
       }
   }
   </script>
 <p>  <p>
 <font size="+1">  <font size="+1">
 $lt{'odcc'}  $lt{'odcc'}
Line 1670  $lt{'disn'} Line 1706  $lt{'disn'}
 </p>  </p>
 <p>$current_date_description</p>  <p>$current_date_description</p>
 <p>$date_table</p>  <p>$date_table</p>
 <input type="submit" value="$lt{'sm'}" />  <input type="button" value="$lt{'sm'}" onClick="secverify(this.form,this.form.section)" />
 END  END
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
     return;      return;
Line 1894  sub show_drop_list { Line 1930  sub show_drop_list {
                                                 ['sortby']);                                                  ['sortby']);
     }      }
     my $sortby = $env{'form.sortby'};      my $sortby = $env{'form.sortby'};
     if ($sortby !~ /^(username|domain|section|fullname|id|start|end)$/) {      if ($sortby !~ /^(username|domain|section|groups|fullname|id|start|end)$/) {
         $sortby = 'username';          $sortby = 'username';
     }      }
       my $cdom = $env{'course.'.$cid.'.domain'};
       my $cnum = $env{'course.'.$cid,'.num'};
       my ($classgroups) = &Apache::loncoursedata::get_group_memberships(
                                                         $classlist,$cdom,$cnum);
     #      #
     my $action = "drop";      my $action = "drop";
     $r->print(<<END);      $r->print(<<END);
Line 1924  my %lt=&Apache::lonlocal::texthash('usrn Line 1964  my %lt=&Apache::lonlocal::texthash('usrn
                                    'sec'    => "section",                                     'sec'    => "section",
                                    'start'  => "start date",                                     'start'  => "start date",
                                    'end'    => "end date",                                     'end'    => "end date",
                                      'groups' => "active groups",
                                    );                                     );
     if ($nosort) {      if ($nosort) {
  $r->print(&Apache::loncommon::start_data_table());   $r->print(&Apache::loncommon::start_data_table());
Line 1937  my %lt=&Apache::lonlocal::texthash('usrn Line 1978  my %lt=&Apache::lonlocal::texthash('usrn
     <th>$lt{'sec'}</th>      <th>$lt{'sec'}</th>
     <th>$lt{'start'}</th>      <th>$lt{'start'}</th>
     <th>$lt{'end'}</th>      <th>$lt{'end'}</th>
       <th>$lt{'groups'}</th>
 </tr>  </tr>
 END  END
   
Line 1958  END Line 2000  END
        <a href="/adm/dropadd?action=$action&sortby=start">$lt{'start'}</a>         <a href="/adm/dropadd?action=$action&sortby=start">$lt{'start'}</a>
     </th><th>      </th><th>
        <a href="/adm/dropadd?action=$action&sortby=end">$lt{'end'}</a>         <a href="/adm/dropadd?action=$action&sortby=end">$lt{'end'}</a>
       </th><th>
          <a href="/adm/dropadd?action=$action&sortby=groups">$lt{'groups'}</a>
     </th>      </th>
 </tr>  </tr>
 END  END
Line 1969  END Line 2013  END
     foreach (@$keylist) {      foreach (@$keylist) {
         $index{$_} = $i++;          $index{$_} = $i++;
     }      }
       $index{'groups'} = scalar(@$keylist);
     my $index  = $index{$sortby};      my $index  = $index{$sortby};
     my $second = $index{'username'};      my $second = $index{'username'};
     my $third  = $index{'domain'};      my $third  = $index{'domain'};
Line 1989  END Line 2034  END
         my $id       = $sdata->[$index{'id'}];          my $id       = $sdata->[$index{'id'}];
         my $start    = $sdata->[$index{'start'}];          my $start    = $sdata->[$index{'start'}];
         my $end      = $sdata->[$index{'end'}];          my $end      = $sdata->[$index{'end'}];
           my $groups = $classgroups->{$student};
           my $active_groups;
           if (ref($groups->{active}) eq 'HASH') {
               $active_groups = join(', ',keys(%{$groups->{'active'}}));
           }
         if (! defined($start) || $start == 0) {          if (! defined($start) || $start == 0) {
             $start = &mt('none');              $start = &mt('none');
         } else {          } else {
Line 2012  END Line 2062  END
     <td>$section</td>      <td>$section</td>
     <td>$start</td>      <td>$start</td>
     <td>$end</td>      <td>$end</td>
       <td>$active_groups</td>
 END  END
         $r->print(&Apache::loncommon::end_data_table_row());          $r->print(&Apache::loncommon::end_data_table_row());
     }      }
Line 2146  sub upfile_drop_add { Line 2197  sub upfile_drop_add {
         my $count=0;          my $count=0;
         my $flushc=0;          my $flushc=0;
         my %student=();          my %student=();
           # Get information about course groups
           my %curr_groups = &Apache::loncommon::coursegroups();
         # Get new classlist          # Get new classlist
         foreach (@studentdata) {          foreach (@studentdata) {
             my %entries=&Apache::loncommon::record_sep($_);              my %entries=&Apache::loncommon::record_sep($_);
Line 2186  sub upfile_drop_add { Line 2239  sub upfile_drop_add {
                     }                      }
                     # remove non alphanumeric values from section                      # remove non alphanumeric values from section
                     $sec =~ s/\W//g;                      $sec =~ s/\W//g;
                       if ($sec eq "none" || $sec eq 'all') {
                           $r->print('<br />'.
         &mt('<b>[_1]</b>: Unable to enroll: section name "[_2]" for user [_3] [_4] [_5] [_6] is a reserved word.',
                           $username,$sec,$fname,$mname,$lname,$gen));
                           next;
                       } elsif (($sec ne '') && (exists($curr_groups{$sec}))) {
                           $r->print('<br />'.
         &mt('<b>[_1]</b>: Unable to enroll: section name "[_2]" for user [_3] [_4] [_5] [_6] is a course group. Section names and group names must be distinct.',
                           $username,$sec,$fname,$mname,$lname,$gen));
                           next;
                       }
                     # determine student id number                      # determine student id number
                     my $id='';                      my $id='';
                     if (defined($fields{'id'})) {                      if (defined($fields{'id'})) {
Line 2301  sub drop_student_list { Line 2365  sub drop_student_list {
     $r->print('<p>'.&mt('Re-enrollment will re-activate data.')) if ($count);      $r->print('<p>'.&mt('Re-enrollment will re-activate data.')) if ($count);
 }  }
   
   sub section_check_js {
       my $groupslist;
       my %curr_groups = &Apache::loncommon::coursegroups();
       if (%curr_groups) {
           $groupslist = join('","',sort(keys(%curr_groups)));
       }
       return <<"END";
   function validate(caller) {
       var groups = new Array("$groupslist");
       var secname = caller.value;
       if ((secname == 'all') || (secname == 'none')) {
           alert("'"+secname+"' may not be used as the name for a section, as it is a reserved word.\\nPlease choose a different section name.");
           return 'error';
       }
       if (secname != '') {
           for (var k=0; k<groups.length; k++) {
               if (secname == groups[k]) {
                   alert("'"+secname+"' may not be used as the name for a section, as it is the name of a course group.\\nSection names and group names must be distinct. Please choose a different section name.");
                   return 'error';
               }
           }
       }
       return 'ok';
   }
   END
   }
   
 ###################################################################  ###################################################################
 ###################################################################  ###################################################################
   

Removed from v.1.141  
changed lines
  Added in v.1.142


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