@@ -454,29 +474,321 @@ LON-CAPA domain: Set Ending Date
Full Update
Full update
-(also dropping students)
+(also print list of users not enrolled anymore)
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)
+
+
+
+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(
+ '