Diff for /loncom/interface/Attic/londropadd.pm between versions 1.102 and 1.103

version 1.102, 2004/02/20 19:44:59 version 1.103, 2004/02/26 22:42:21
Line 1100  sub print_drop_menu { Line 1100  sub print_drop_menu {
   
 # ============================================== view classlist  # ============================================== view classlist
 sub print_html_classlist {  sub print_html_classlist {
     my $r=shift;      my ($r,$mode) = @_;
     if (! exists($ENV{'form.sortby'})) {      if (! exists($ENV{'form.sortby'})) {
         $ENV{'form.sortby'} = 'username';          $ENV{'form.sortby'} = 'username';
     }      }
Line 1108  sub print_html_classlist { Line 1108  sub print_html_classlist {
         $ENV{'form.Status'} = 'Active';          $ENV{'form.Status'} = 'Active';
     }      }
     my $status_select = &Apache::lonhtmlcommon::StatusOptions      my $status_select = &Apache::lonhtmlcommon::StatusOptions
         ($ENV{'form.Status'},'studentform');          ($ENV{'form.Status'});
     my $cid=$ENV{'request.course.id'};      my $cid=$ENV{'request.course.id'};
     my $cdom=$ENV{'course.'.$cid.'.domain'};      my $cdom=$ENV{'course.'.$cid.'.domain'};
     my $cnum=$ENV{'course.'.$cid.'.num'};      my $cnum=$ENV{'course.'.$cid.'.num'};
 # -------------------------------------------------------- Get course personnel      #
       # List course personnel
     my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);      my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);
     $r->print('<table border="2">');      $r->print('<br /><table border="2">');
     foreach (sort keys %coursepersonnel) {      foreach (sort keys %coursepersonnel) {
  $r->print('<tr><td>'.$_.'</td><td>');   $r->print('<tr><td>'.$_.'</td><td>');
         foreach (split(/\,/,$coursepersonnel{$_})) {          foreach (split(/\,/,$coursepersonnel{$_})) {
Line 1126  sub print_html_classlist { Line 1127  sub print_html_classlist {
         $r->print('</td></tr>');          $r->print('</td></tr>');
     }      }
     $r->print('</table>');      $r->print('</table>');
 # --------------------------------------------------------------- Student roles      #
       # Interface output
     my $CCL=&mt('Current Class List');      my $CCL=&mt('Current Class List');
     $r->print(<<END);      $r->print('<input type="hidden" name="action" value="'.
 <input type="hidden" name="action" value="$ENV{'form.action'}" />                $ENV{'form.action'}.'" />');
 <input type="hidden" name="state"  value="" />      $r->print("<p>\n");
 <p>  
 <font size="+1">$CCL</font>  
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
 END  
     if ($ENV{'form.action'} ne 'modifystudent') {      if ($ENV{'form.action'} ne 'modifystudent') {
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash('csv' => "CSV",
    'ef'   => "Excel format",                                             'excel' => "Excel",
                    'ss'   => "Student Status",                                             'html'  => 'HTML');
    );          $r->print('<font size="+1">');
         $r->print(<<END);          my $output_selector = '<select size="1" name="state" >';
 <font size="+1">          if ($ENV{'form.state'} !~ /^(csv|excel|html)$/ ) {
 <a href="javascript:document.studentform.state.value='csv';document.studentform.submit();">CSV format</a>              $ENV{'form.state'} = 'html';
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;          }
 <a href="javascript:document.studentform.state.value='excel';document.studentform.submit();">$lt{'ef'}</a>          foreach my $outputformat ('html','csv','excel') {
 </font>              my $option = '<option value="'.$outputformat.'" ';
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;              if ($outputformat eq $ENV{'form.state'}) {
 $lt{'ss'}:                  $option .= 'checked ';
 END              }
               $option .='>'.$lt{$outputformat}.'</option>';
               $output_selector .= "\n".$option;
           }
           $output_selector .= '</select>';
           $r->print(&mt('Output Format: [_1]',$output_selector).('&nbsp;'x3));
     }      }
     $r->print($status_select."</p>\n");      $r->print(&mt('Student Status: [_1]',$status_select)."\n");
       $r->print('<input type="submit" value="'.&mt('Refresh Display').'" />'."\n</p>\n");
   
       #
       # Print the classlist
       $r->print('<h2>'.&mt('Current Class List').'</h2>');
     my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();      my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
     if (! defined($classlist)) {      if (! defined($classlist)) {
         $r->print(&mt('There are no students currently enrolled.')."\n");          $r->print(&mt('There are no students currently enrolled.')."\n");
Line 1159  END Line 1167  END
         if ($ENV{'form.action'} eq 'modifystudent') {          if ($ENV{'form.action'} eq 'modifystudent') {
             &show_class_list($r,'view','modify','modifystudent',              &show_class_list($r,'view','modify','modifystudent',
                              $ENV{'form.Status'},$classlist,$keylist);                               $ENV{'form.Status'},$classlist,$keylist);
         } else {          } elsif (! defined($mode) || $mode eq '') {
             &show_class_list($r,'view','aboutme','classlist',              &show_class_list($r,'view','aboutme','classlist',
                              $ENV{'form.Status'},$classlist,$keylist);                               $ENV{'form.Status'},$classlist,$keylist);
           } elsif ($mode eq 'csv' || $mode eq 'excel') {
               &show_class_list($r,$mode,'nolink','csv',
                                $ENV{'form.Status'},$classlist,$keylist);
         }          }
     }      }
 }  }
   
 # ============================================== view classlist  
 sub print_formatted_classlist {  
     my $r=shift;  
     my $mode = shift;  
     my $cid=$ENV{'request.course.id'};  
     my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();  
     if (! defined($classlist)) {  
         $r->print(&mt('There are no students currently enrolled.')."\n");  
     } else {  
         &show_class_list($r,$mode,'nolink','csv',  
                          $ENV{'form.Status'},$classlist,$keylist);  
     }  
 }  
   
 # =================================================== Show student list to drop  # =================================================== Show student list to drop
 sub show_class_list {  sub show_class_list {
     my ($r,$mode,$linkto,$action,$statusmode,$classlist,$keylist)=@_;      my ($r,$mode,$linkto,$action,$statusmode,$classlist,$keylist)=@_;
Line 1188  sub show_class_list { Line 1185  sub show_class_list {
     # Variables for excel output      # Variables for excel output
     my ($excel_workbook, $excel_sheet, $excel_filename,$row);      my ($excel_workbook, $excel_sheet, $excel_filename,$row);
     #      #
       # Variables for csv output
       my ($CSVfile,$CSVfilename);
       #
     my $sortby = $ENV{'form.sortby'};      my $sortby = $ENV{'form.sortby'};
     if ($sortby !~ /^(username|domain|section|fullname|id)$/) {      if ($sortby !~ /^(username|domain|section|fullname|id)$/) {
         $sortby = 'username';          $sortby = 'username';
     }      }
     # Print out header       # Print out header 
       $r->print(<<END);
   <input type="hidden" name="sortby" value="$sortby" />
   <input type="hidden" name="sname"  value="" />
   <input type="hidden" name="sdom"   value="" />
   END
     if ($mode eq 'view') {      if ($mode eq 'view') {
         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 users personal page.'));
Line 1226  sub show_class_list { Line 1231  sub show_class_list {
 </tr>  </tr>
 END  END
     } elsif ($mode eq 'csv') {      } elsif ($mode eq 'csv') {
    #
    # Open a file
    $CSVfilename = '/prtspool/'.
       $ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'.
               time.'_'.rand(1000000000).'.csv';
    unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) {
       $r->log_error("Couldn't open $CSVfilename for output $!");
       $r->print("Problems occured in writing the csv file.  ".
         "This error has been logged.  ".
         "Please alert your LON-CAPA administrator.");
       $CSVfile = undef;
    }
    #
    # Write headers and data to file
         if($statusmode eq 'Expired') {          if($statusmode eq 'Expired') {
             $r->print(&mt('Students with expired roles'));              print $CSVfile '"'.&mt('Students with expired roles').'"'."\n";
         }          }
         if ($statusmode eq 'Any') {          if ($statusmode eq 'Any') {
             $r->print('"'.join('","',(&mt("username"),&mt("domain"),"ID",              print $CSVfile '"'.join('","',map {
                       &mt("student name"),&mt("section"),&mt("status"))).   &Apache::loncommon::csv_translate(&mt($_))
                       '"'."\n");                  } ("username","domain","ID","student name",
                      "section","status")).'"'."\n";
         } else {          } else {
             $r->print('"'.join('","',(&mt("username"),&mt("domain"),"ID",              print $CSVfile '"'.join('","',map {
                       &mt("student name"),&mt("section"))).'"'."\n");   &Apache::loncommon::csv_translate(&mt($_))
                   } ("username","domain","ID","student name",
                      "section")).'"'."\n";
         }          }
     } elsif ($mode eq 'excel') {      } elsif ($mode eq 'excel') {
         # Create the excel spreadsheet          # Create the excel spreadsheet
Line 1305  END Line 1327  END
 </tr>  </tr>
 END  END
         } elsif ($mode eq 'csv') {          } elsif ($mode eq 'csv') {
               next if (! defined($CSVfile));
             # no need to bother with $linkto              # no need to bother with $linkto
             my @line = ();              my @line = ();
             foreach ($username,$domain,$id,$name,$section) {              foreach ($username,$domain,$id,$name,$section) {
Line 1313  END Line 1336  END
             if ($statusmode eq 'Any') {              if ($statusmode eq 'Any') {
                 push @line,&Apache::loncommon::csv_translate($status);                  push @line,&Apache::loncommon::csv_translate($status);
             }              }
             my $tmp = $";              print $CSVfile '"'.join('","',@line).'"'."\n";
             $" = '","';  
             $r->print("\"@line\"\n");  
             $" = $tmp;  
         } elsif ($mode eq 'excel') {          } elsif ($mode eq 'excel') {
             $excel_sheet->write($row++,0,[$username,$domain,$id,              $excel_sheet->write($row++,0,[$username,$domain,$id,
                                           $name,$section,$status]);                                            $name,$section,$status]);
Line 1328  END Line 1348  END
         $excel_workbook->close();          $excel_workbook->close();
         $r->print('<p><a href="'.$excel_filename.'">'.          $r->print('<p><a href="'.$excel_filename.'">'.
                   &mt('Your Excel spreadsheet').'</a> '.&mt('is ready for download').'.</p>'."\n");                    &mt('Your Excel spreadsheet').'</a> '.&mt('is ready for download').'.</p>'."\n");
       } elsif ($mode eq 'csv') {
           close($CSVfile);
           $r->print('<a href="'.$CSVfilename.'">'.
                     &mt('Your CSV file').'</a> is ready for download.'.
                     "\n");
           $r->rflush();
     }      }
 }  }
   
Line 2121  sub handler { Line 2147  sub handler {
     #      #
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['state','action']);                                              ['state','action']);
     if (exists($ENV{'form.state'}) && ($ENV{'form.state'} eq 'csv')) {      # Start page
         $r->content_type('text/csv');      &Apache::loncommon::content_type($r,'text/html');
     } else {      $r->send_http_header;
         # Start page      $r->print(&header());
         &Apache::loncommon::content_type($r,'text/html');  
         $r->send_http_header;  
         $r->print(&header());  
     }  
     #      #
     # Main switch on form.action and form.state, as appropriate      # Main switch on form.action and form.state, as appropriate
     if (! exists($ENV{'form.action'})) {      if (! exists($ENV{'form.action'})) {
Line 2193  sub handler { Line 2215  sub handler {
         $r->print(&Apache::lonhtmlcommon::breadcrumbs          $r->print(&Apache::lonhtmlcommon::breadcrumbs
                   (undef,'View Classlist'));                    (undef,'View Classlist'));
         if (! exists($ENV{'form.state'})) {          if (! exists($ENV{'form.state'})) {
             &print_html_classlist($r);              &print_html_classlist($r,undef);
         } elsif ($ENV{'form.state'} eq 'csv') {          } elsif ($ENV{'form.state'} eq 'csv') {
             &print_formatted_classlist($r,'csv');              &print_html_classlist($r,'csv');
         } elsif ($ENV{'form.state'} eq 'excel') {          } elsif ($ENV{'form.state'} eq 'excel') {
             &print_formatted_classlist($r,'excel');              &print_html_classlist($r,'excel');
         } else {          } else {
             &print_html_classlist($r);              &print_html_classlist($r,undef);
         }          }
     } elsif ($ENV{'form.action'} eq 'modifystudent') {      } elsif ($ENV{'form.action'} eq 'modifystudent') {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
Line 2228  sub handler { Line 2250  sub handler {
     }      }
     #      #
     # Finish up      # Finish up
     if (exists($ENV{'form.state'}) && ($ENV{'form.state'} eq 'csv')) {      $r->print('</form></body></html>');
         $r->print("\n");  
     } else {  
         $r->print('</form></body></html>');  
     }  
     return OK;      return OK;
 }  }
   

Removed from v.1.102  
changed lines
  Added in v.1.103


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