--- loncom/interface/Attic/londropadd.pm 2001/02/13 21:24:18 1.10
+++ loncom/interface/Attic/londropadd.pm 2002/01/04 15:56:07 1.18
@@ -1,12 +1,37 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
+# $Id: londropadd.pm,v 1.18 2002/01/04 15:56:07 www Exp $
+#
+# Copyright Michigan State University Board of Trustees
+#
+# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
+#
+# LON-CAPA is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# LON-CAPA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with LON-CAPA; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# /home/httpd/html/adm/gpl.txt
+#
+# http://www.lon-capa.org/
+#
# (Handler to set parameters for assessments
#
# (Handler to resolve ambiguous file locations
#
# (TeX Content Handler
#
+# YEAR=2000
# 05/29/00,05/30,10/11 Gerd Kortemeyer)
#
# 10/11,10/12,10/16 Gerd Kortemeyer)
@@ -15,7 +40,14 @@
# 12/08,12/12 Gerd Kortemeyer)
#
# 12/26,12/27,12/28,
-# 01/01/01,01/15,02/10,02/13 Gerd Kortemeyer
+# YEAR=2001
+# 01/01/01,01/15,02/10,02/13,02/14,02/22 Gerd Kortemeyer
+# 8/6 Scott Harrison
+# Guy Albertelli
+# 9/25 Gerd Kortemeyer
+# 12/19 Guy Albertelli
+# YEAR=2002
+# 1/4 Gerd Kortemeyer
package Apache::londropadd;
@@ -147,7 +179,7 @@ sub dropstudent {
if ($key=~/^$courseid(?:\/)*(\w+)*\_st$/) {
my $section=$1;
if ($key eq $courseid.'_st') { $section=''; }
- if ($section ne $csec) {
+ if (((!$section) && (!$csec)) || ($section ne $csec)) {
my ($dummy,$end,$start)=split(/\_/,
&Apache::lonnet::unescape($value));
my $now=time;
@@ -189,8 +221,8 @@ sub menu_phase_one {
Enroll a single student
-
Drop a student
-
+
Drop students
+
ENDUPFORM
}
@@ -257,6 +289,10 @@ function verify(vf) {
return;
}
}
+ if (vf.login[2].checked) {
+ foundatype=1;
+ //An argument is not required
+ }
if (foundatype==0) {
alert('You need to set the login type');
return;
@@ -315,6 +351,7 @@ function flip(vf,tf) {
vf.login[1].checked=true;
vf.intpwd.value='';
vf.krbdom.value='';
+ vf.locarg.value='';
}
}
@@ -411,14 +448,14 @@ ENDPICK
'id:ID/Student Number','sec:Group/Section',
'ipwd:Initial Password');
$r->print('
');
- if (defined($sone{$i})) {
- $r->print($sone{$i}."\n");
+ if (defined($sone{$_})) {
+ $r->print($sone{$_}."\n");
}
- if (defined($stwo{$i})) {
- $r->print($stwo{$i}."\n");
+ if (defined($stwo{$_})) {
+ $r->print($stwo{$_}."\n");
}
- if (defined($sthree{$i})) {
- $r->print($sthree{$i}."\n");
+ if (defined($sthree{$_})) {
+ $r->print($sthree{$_}."\n");
}
$r->print('
');
$i++;
@@ -431,12 +468,22 @@ ENDPICK
Login Type
-
+
Note: this will not take effect if the user already exists
@@ -454,29 +501,329 @@ LON-CAPA domain: Set Ending Date
Full Update
Full update
-(also dropping students)
+(also print list of users not enrolled anymore)
+
ID/Student Number
+
+Disable ID/Student Number Safeguard and Force Change of Conflicting IDs
+(only do if you know what you are doing)
Note: for large courses, this operation might be time consuming.
ENDPICK
}
+# ======================================================= Enroll single student
+
+sub enroll_single_student {
+ my $r=shift;
+ $r->print('
Enrolling Student
');
+ if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&&
+ ($ENV{'form.cdomain'})&&($ENV{'form.cdomain'}!~/\W/)) {
+ my $amode='';
+ my $genpwd='';
+ if ($ENV{'form.login'} eq 'krb') {
+ $amode='krb4';
+ $genpwd=$ENV{'form.krbdom'};
+ } elsif ($ENV{'form.login'} eq 'int') {
+ $amode='internal';
+ $genpwd=$ENV{'form.intpwd'};
+ } elsif ($ENV{'form.login'} eq 'loc') {
+ $amode='localauth';
+ $genpwd=$ENV{'form.locarg'};
+ if (!$genpwd) { $genpwd=" "; }
+ }
+ if (($amode) && ($genpwd)) {
+ &dropstudent($ENV{'form.cdomain'},$ENV{'form.cuname'},
+ $ENV{'request.course.id'},$ENV{'form.csec'});
+ $r->print(&Apache::lonnet::modifystudent(
+ $ENV{'form.cdomain'},$ENV{'form.cuname'},
+ $ENV{'form.cstid'},$amode,$genpwd,
+ $ENV{'form.cfirst'},$ENV{'form.cmiddle'},
+ $ENV{'form.clast'},$ENV{'form.cgen'},
+ $ENV{'form.csec'},$ENV{'form.enddate'},
+ $ENV{'form.startdate'}));
+ } else {
+ $r->print('Invalid login mode or password');
+ }
+ } else {
+ $r->print('Invalid username or domain');
+ }
+}
+
# ======================================================= Menu Phase Two Enroll
sub menu_phase_two_enroll {
my $r=shift;
+
+ $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
+ my $krbdefdom=$1;
+ $krbdefdom=~tr/a-z/A-Z/;
+
+ my $today=time;
+ my $halfyear=$today+15552000;
+
+ my $defdom=$r->dir_config('lonDefDomain');
+
+ $r->print(<
+function verify(vf) {
+ var founduname=0;
+ var foundpwd=0;
+ var foundname=0;
+ var foundid=0;
+ var foundsec=0;
+ var foundatype=0;
+ var tw;
+ var message='';
+ if ((typeof(vf.cuname.value)!="undefined") && (vf.cuname.value!='') &&
+ (typeof(vf.cdomain.value)!="undefined") && (vf.cdomain.value!='')) {
+ founduname=1;
+ }
+ if ((typeof(vf.cfirst.value)!="undefined") && (vf.cfirst.value!='') &&
+ (typeof(vf.clast.value)!="undefined") && (vf.clast.value!='')) {
+ foundname=1;
+ }
+ if ((typeof(vf.csec.value)!="undefined") && (vf.csec.value!='')) {
+ foundsec=1;
+ }
+ if ((typeof(vf.cstid.value)!="undefined") && (vf.cstid.value!='')) {
+ foundid=1;
+ }
+ if (founduname==0) {
+ alert('You need to specify at least the username and domain fields');
+ return;
+ }
+ if (vf.login[0].checked) {
+ foundatype=1;
+ if (vf.krbdom.value=='') {
+ alert('You need to specify the Kerberos domain');
+ return;
+ }
+ }
+ if (vf.login[1].checked) {
+ foundatype=1;
+ if ((vf.intpwd.value=='') && (foundpwd==0)) {
+ alert('You need to specify the initial password');
+ return;
+ }
+ }
+ if (vf.login[2].checked) {
+ foundatype=1;
+ //An argument is not required
+ }
+ if (foundatype==0) {
+ alert('You need to set the login type');
+ return;
+ }
+ if (foundname==0) { message='No first and last name specified. '; }
+ if (foundid==0) { message+='No ID or student number field specified. '; }
+ if (foundsec==0) { message+='No section or group field specified. '; }
+ if (vf.startdate.value=='') {
+ message+='No starting date set. ';
+ }
+ if (vf.enddate.value=='') {
+ message+='No ending date set. ';
+ }
+ if ((vf.enddate.value!='') && (vf.startdate.value!='')) {
+ if (Math.round(vf.enddate.value)
+
+
+Disable ID/Student Number Safeguard and Force Change of Conflicting IDs
+(only do if you know what you are doing)
+
+
+ENDSENROLL
}
# ========================================================= Menu Phase Two Drop
sub menu_phase_two_drop {
my $r=shift;
+ my $cid=$ENV{'request.course.id'};
+ my $classlst=&Apache::lonnet::reply
+ ('dump:'.$ENV{'course.'.$cid.'.domain'}.':'.
+ $ENV{'course.'.$cid.'.num'}.':classlist',
+ $ENV{'course.'.$cid.'.home'});
+ my %currentlist=();
+ my $now=time;
+ unless ($classlst=~/^error\:/) {
+ map {
+ my ($name,$value)=split(/\=/,$_);
+ my ($end,$start)=split(/\:/,
+ &Apache::lonnet::unescape($value));
+ my $active=1;
+ if (($end) && ($now>$end)) { $active=0; }
+ if ($active) {
+ $currentlist{&Apache::lonnet::unescape($name)}=1;
+ }
+ } split(/\&/,$classlst);
+# ----------------------------------------------------------- Print out choices
+ &show_drop_list($r,%currentlist);
+ } else {
+ $r->print(
+ '
Could not access classlist: '.$classlst.
+ '
');
+ }
+}
+
+# =================================================== Show student list to drop
+
+sub show_drop_list {
+ my ($r,%currentlist)=@_;
+ my $cid=$ENV{'request.course.id'};
+
+ $r->print('');
+ $r->print('
');
+ map {
+ my ($sname,$sdom)=split(/\:/,$_);
+ my %reply=&Apache::lonnet::idrget($sdom,$sname);
+ my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid);
+ my @reply=split(/[\&\=]/,&Apache::lonnet::reply(
+ 'get:'.$sdom.':'.$sname.
+ ':environment:firstname&middlename&lastname&generation',
+ &Apache::lonnet::homeserver($sname,$sdom)));
+ $r->print(
+ '