version 1.27, 2002/04/17 13:55:35
|
version 1.33, 2002/04/29 14:36:23
|
Line 75 ENDHEAD
|
Line 75 ENDHEAD
|
|
|
# =========== Drop student from all sections of a course, except optional $csec |
# =========== Drop student from all sections of a course, except optional $csec |
sub modifystudent { |
sub modifystudent { |
my ($udom,$unam,$courseid,$csec)=@_; |
my ($udom,$unam,$courseid,$csec,$desiredhost)=@_; |
# if $csec is undefined, drop the student from all the courses matching |
# if $csec is undefined, drop the student from all the courses matching |
# this one. If $csec is defined, drop them from all other sections of |
# this one. If $csec is defined, drop them from all other sections of |
# this course and add them to section $csec |
# this course and add them to section $csec |
Line 97 sub modifystudent {
|
Line 97 sub modifystudent {
|
my $now=time; |
my $now=time; |
if (!($start && ($now<$start)) || !($end && ($now>$end))) { |
if (!($start && ($now<$start)) || !($end && ($now>$end))) { |
my $reply=&Apache::lonnet::modifystudent |
my $reply=&Apache::lonnet::modifystudent |
($udom,$unam,'','','','','','','',$section,time); |
($udom,$unam,'','','','','','','', |
|
$section,time,undef,undef,$desiredhost); |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
|
|
|
# ============ build a domain and server selection form |
|
sub domain_form { |
|
my ($defdom) = @_; |
|
# Set up domain and server selection forms |
|
# |
|
# Get the domains |
|
my @domains = &Apache::loncommon::get_domains(); |
|
# build up the menu information to be passed to |
|
# &Apache::loncommon::linked_select_forms |
|
my %select_menus; |
|
foreach my $dom (@domains) { |
|
# set up the text for this domain |
|
$select_menus{$dom}->{'text'}= $dom; |
|
# we want a choice of 'default' as the default in the second menu |
|
$select_menus{$dom}->{'default'}= 'default'; |
|
$select_menus{$dom}->{'select2'}->{'default'} = 'default'; |
|
# Now build up the other items in the second menu |
|
my %servers = &Apache::loncommon::get_home_servers($dom); |
|
foreach my $server (keys(%servers)) { |
|
$select_menus{$dom}->{'select2'}->{$server} |
|
= "$server $servers{$server}"; |
|
} |
|
} |
|
my $result = &Apache::loncommon::linked_select_forms |
|
('studentform',' with home server ',$defdom, |
|
'lcdomain','lcserver',\%select_menus); |
|
return $result; |
|
} |
|
|
# ============================================================== Menu Phase One |
# ============================================================== Menu Phase One |
sub menu_phase_one { |
sub menu_phase_one { |
my $r=shift; |
my $r=shift; |
Line 146 to this page if the data selected is ins
|
Line 176 to this page if the data selected is ins
|
<input type="hidden" name="upfile_associate" |
<input type="hidden" name="upfile_associate" |
value="$ENV{'form.upfile_associate'}" /> |
value="$ENV{'form.upfile_associate'}" /> |
<hr /> |
<hr /> |
<script> |
<script type="text/javascript" language="Javascript"> |
$javascript |
$javascript |
$javascript_validations |
$javascript_validations |
</script> |
</script> |
Line 155 ENDPICK
|
Line 185 ENDPICK
|
|
|
sub javascript_validations { |
sub javascript_validations { |
my ($krbdefdom)=@_; |
my ($krbdefdom)=@_; |
|
my %param = ( formname => 'studentform', |
|
kerb_def_dom => $krbdefdom ); |
|
my $authheader = &Apache::loncommon::authform_header(%param); |
return (<<ENDPICK); |
return (<<ENDPICK); |
function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec) { |
function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec) { |
var foundatype=0; |
var foundatype=0; |
var message=''; |
var message=''; |
if (founduname==0) { |
if (founduname==0) { |
alert('You need to specify at least the username field'); |
alert('You need to specify the username field'); |
return; |
return; |
} |
} |
if (vf.login[0].checked) { |
if (current.radiovalue == null || current.radiovalue == 'nochange') { |
foundatype=1; |
// They did not check any of the login radiobuttons. |
if (vf.krbdom.value=='') { |
alert('You must choose an authentication type'); |
alert('You need to specify the Kerberos domain'); |
return; |
return; |
|
} |
|
} |
} |
if (vf.login[1].checked) { |
foundatype=1; |
foundatype=1; |
if (current.argfield == null || current.argfield == '') { |
if ((vf.intpwd.value=='') && (foundpwd==0)) { |
var alertmsg = ''; |
alert('You need to specify the initial password'); |
switch (current.value) { |
|
case 'krb': |
|
alertmsg = 'You need to specify the Kerberos domain'; |
|
break; |
|
case 'loc': |
|
case 'fsys': |
|
alertmsg = 'You need to specify the initial password'; |
|
break; |
|
case 'fsys': |
|
alertmsg = ''; |
|
break; |
|
default: |
|
alertmsg = ''; |
|
} |
|
if (alertmsg != '') { |
|
alert(alertmsg); |
return; |
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 name fields specified. '; } |
if (foundname==0) { message='No name fields specified. '; } |
if (foundid==0) { message+='No ID or student number field specified. '; } |
if (foundid==0) { message+='No ID or student number field specified. '; } |
if (foundsec==0) { message+='No section or group field specified. '; } |
if (foundsec==0) { message+='No section or group field specified. '; } |
Line 212 function verify_message (vf,founduname,f
|
Line 251 function verify_message (vf,founduname,f
|
} |
} |
} |
} |
|
|
function setkrb(vf) { |
|
if (vf.krbdom.value!='') { |
|
clearpwd(vf); |
|
vf.login[0].checked=true; |
|
vf.krbdom.value=vf.krbdom.value.toUpperCase(); |
|
vf.intpwd.value=''; |
|
vf.locarg.value=''; |
|
} |
|
} |
|
|
|
function setint(vf) { |
|
if (vf.intpwd.value!='') { |
|
clearpwd(vf); |
|
vf.login[1].checked=true; |
|
vf.krbdom.value=''; |
|
vf.locarg.value=''; |
|
} |
|
} |
|
|
|
function setloc(vf) { |
|
if (vf.locarg.value!='') { |
|
vf.login[2].checked=true; |
|
vf.krbdom.value=''; |
|
vf.intpwd.value=''; |
|
} |
|
} |
|
|
|
function clickkrb(vf) { |
|
vf.krbdom.value='$krbdefdom'; |
|
clearpwd(vf); |
|
vf.intpwd.value=''; |
|
vf.locarg.value=''; |
|
} |
|
|
|
function clickint(vf) { |
|
vf.krbdom.value=''; |
|
vf.locarg.value=''; |
|
} |
|
|
|
function clickloc(vf) { |
|
vf.krbdom.value=''; |
|
vf.intpwd.value=''; |
|
} |
|
|
|
function pclose() { |
function pclose() { |
parmwin=window.open("/adm/rat/empty.html","LONCAPAparms", |
parmwin=window.open("/adm/rat/empty.html","LONCAPAparms", |
Line 283 function clickloc(vf) {
|
Line 279 function clickloc(vf) {
|
pclose(); |
pclose(); |
} |
} |
|
|
|
$authheader |
ENDPICK |
ENDPICK |
|
|
} |
} |
|
|
sub phase_two_javascript_forward_associate { |
sub phase_two_javascript_forward_associate { |
Line 335 function flip(vf,tf) {
|
Line 333 function flip(vf,tf) {
|
} |
} |
} |
} |
if (nw==9) { |
if (nw==9) { |
vf.login[1].checked=true; |
changed_radio('int',document.studentform); |
vf.intpwd.value=''; |
set_auth_radio_buttons('int',document.studentform); |
vf.krbdom.value=''; |
vf.intarg.value=''; |
|
vf.krbarg.value=''; |
vf.locarg.value=''; |
vf.locarg.value=''; |
} |
} |
} |
} |
Line 390 function flip(vf,tf) {
|
Line 389 function flip(vf,tf) {
|
} |
} |
// intial password specified, pick internal authentication |
// intial password specified, pick internal authentication |
if (tf==8 && nw!=0) { |
if (tf==8 && nw!=0) { |
vf.login[1].checked=true; |
changed_radio('int',document.studentform); |
vf.intpwd.value=''; |
set_auth_radio_buttons('int',document.studentform); |
vf.krbdom.value=''; |
vf.krbarg.value=''; |
|
vf.intarg.value=''; |
vf.locarg.value=''; |
vf.locarg.value=''; |
} |
} |
} |
} |
Line 408 ENDPICK
|
Line 408 ENDPICK
|
|
|
sub phase_two_end { |
sub phase_two_end { |
my ($r,$i,$keyfields,$defdom,$today,$halfyear)=@_; |
my ($r,$i,$keyfields,$defdom,$today,$halfyear)=@_; |
|
my %param = ( formname => 'document.studentform'); |
|
my $krbform = &Apache::loncommon::authform_kerberos(%param); |
|
my $intform = &Apache::loncommon::authform_internal(%param); |
|
my $locform = &Apache::loncommon::authform_local(%param); |
|
my $domform = &domain_form($defdom); |
$r->print(<<ENDPICK); |
$r->print(<<ENDPICK); |
</table> |
</table> |
<input type=hidden name=nfields value=$i> |
<input type=hidden name=nfields value=$i> |
Line 415 sub phase_two_end {
|
Line 420 sub phase_two_end {
|
<h3>Login Type</h3> |
<h3>Login Type</h3> |
<p>Note: this will not take effect if the user already exists</p> |
<p>Note: this will not take effect if the user already exists</p> |
<p> |
<p> |
<input type="radio" name="login" value="krb" onClick="clickkrb(this.form);" /> |
$krbform |
Kerberos authenticated with domain |
|
<input type="text" size="10" name="krbdom" onChange="setkrb(this.form);" /> |
|
</p> |
</p> |
<p> |
<p> |
<input type="radio" name="login" value="int" onClick="clickint(this.form);" /> |
$intform |
Internally authenticated (with initial password |
|
<input type="text" size="10" name="intpwd" onChange="setint(this.form);" />) |
|
</p> |
</p> |
<p> |
<p> |
<input type="radio" name="login" value="loc" onClick="clickloc(this.form);" /> |
$locform |
Local Authentication with argument |
|
<input type="text" size="10" name="locarg" onChange="setloc(this.form);" /> |
|
</p> |
</p> |
<h3>LON-CAPA Domain for Students</h3> |
<h3>LON-CAPA Domain for Students</h3> |
LON-CAPA domain: <input type=text size=10 value=$defdom name=lcdomain><p> |
LON-CAPA domain: $domform <p> |
<h3>Starting and Ending Dates</h3> |
<h3>Starting and Ending Dates</h3> |
<input type="hidden" value='' name="pres_value" > |
<input type="hidden" value='' name="pres_value" > |
<input type="hidden" value='' name="pres_type" > |
<input type="hidden" value='' name="pres_type" > |
Line 504 sub menu_phase_two_upload {
|
Line 503 sub menu_phase_two_upload {
|
sub enroll_single_student { |
sub enroll_single_student { |
my $r=shift; |
my $r=shift; |
$r->print('<h3>Enrolling Student</h3>'); |
$r->print('<h3>Enrolling Student</h3>'); |
|
$r->print($ENV{'form.cuname'}." in domain ".$ENV{'form.lcdomain'}); |
if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&& |
if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&& |
($ENV{'form.cdomain'})&&($ENV{'form.cdomain'}!~/\W/)) { |
($ENV{'form.lcdomain'})&&($ENV{'form.lcdomain'}!~/\W/)) { |
|
# Deal with home server selection |
|
my $domain=$ENV{'form.lcdomain'}; |
|
my $desiredhost = $ENV{'form.lcserver'}; |
|
if (lc($desiredhost) eq 'default') { |
|
$desiredhost = undef; |
|
} else { |
|
my %home_servers = &Apache::loncommon::get_home_servers($domain); |
|
if (! exists($home_servers{$desiredhost})) { |
|
$r->print('<font color="#ff0000">Error:</font>'. |
|
'Invalid home server specified'); |
|
return; |
|
} |
|
} |
|
$r->print(" with server $desiredhost :"); |
|
# End of home server selection logic |
my $amode=''; |
my $amode=''; |
my $genpwd=''; |
my $genpwd=''; |
if ($ENV{'form.login'} eq 'krb') { |
if ($ENV{'form.login'} eq 'krb') { |
$amode='krb4'; |
$amode='krb4'; |
$genpwd=$ENV{'form.krbdom'}; |
$genpwd=$ENV{'form.krbarg'}; |
} elsif ($ENV{'form.login'} eq 'int') { |
} elsif ($ENV{'form.login'} eq 'int') { |
$amode='internal'; |
$amode='internal'; |
$genpwd=$ENV{'form.intpwd'}; |
$genpwd=$ENV{'form.intarg'}; |
} elsif ($ENV{'form.login'} eq 'loc') { |
} elsif ($ENV{'form.login'} eq 'loc') { |
$amode='localauth'; |
$amode='localauth'; |
$genpwd=$ENV{'form.locarg'}; |
$genpwd=$ENV{'form.locarg'}; |
if (!$genpwd) { $genpwd=" "; } |
if (!$genpwd) { $genpwd=" "; } |
} |
} |
if (($amode) && ($genpwd)) { |
if (($amode) && ($genpwd)) { |
&modifystudent($ENV{'form.cdomain'},$ENV{'form.cuname'}, |
&modifystudent($ENV{'form.lcdomain'},$ENV{'form.cuname'}, |
$ENV{'request.course.id'},$ENV{'form.csec'}); |
$ENV{'request.course.id'},$ENV{'form.csec'}, |
|
$desiredhost); |
$r->print(&Apache::lonnet::modifystudent( |
$r->print(&Apache::lonnet::modifystudent( |
$ENV{'form.cdomain'},$ENV{'form.cuname'}, |
$ENV{'form.lcdomain'},$ENV{'form.cuname'}, |
$ENV{'form.cstid'},$amode,$genpwd, |
$ENV{'form.cstid'},$amode,$genpwd, |
$ENV{'form.cfirst'},$ENV{'form.cmiddle'}, |
$ENV{'form.cfirst'},$ENV{'form.cmiddle'}, |
$ENV{'form.clast'},$ENV{'form.cgen'}, |
$ENV{'form.clast'},$ENV{'form.cgen'}, |
$ENV{'form.csec'},$ENV{'form.enddate'}, |
$ENV{'form.csec'},$ENV{'form.enddate'}, |
$ENV{'form.startdate'},$ENV{'form.forceid'})); |
$ENV{'form.startdate'},$ENV{'form.forceid'}, |
|
$desiredhost)); |
} else { |
} else { |
$r->print('Invalid login mode or password'); |
$r->print('Invalid login mode or password'); |
} |
} |
Line 546 sub menu_phase_two_enroll {
|
Line 563 sub menu_phase_two_enroll {
|
my $halfyear = $today+15552000; |
my $halfyear = $today+15552000; |
my $defdom=$r->dir_config('lonDefDomain'); |
my $defdom=$r->dir_config('lonDefDomain'); |
my $javascript_validations=&javascript_validations($krbdefdom); |
my $javascript_validations=&javascript_validations($krbdefdom); |
|
# Set up authentication forms |
|
my %param = ( formname => 'document.studentform'); |
|
my $krbform = &Apache::loncommon::authform_kerberos(%param); |
|
my $intform = &Apache::loncommon::authform_internal(%param); |
|
my $locform = &Apache::loncommon::authform_local(%param); |
|
# Set up domain selection form |
|
my $domform = &domain_form($defdom); |
|
# Print it all out |
$r->print(<<ENDSENROLL); |
$r->print(<<ENDSENROLL); |
<script> |
<script type="text/javascript" language="Javascript"> |
function verify(vf) { |
function verify(vf) { |
var founduname=0; |
var founduname=0; |
var foundpwd=0; |
var foundpwd=0; |
Line 556 function verify(vf) {
|
Line 581 function verify(vf) {
|
var foundsec=0; |
var foundsec=0; |
var tw; |
var tw; |
if ((typeof(vf.cuname.value) !="undefined") && (vf.cuname.value!='') && |
if ((typeof(vf.cuname.value) !="undefined") && (vf.cuname.value!='') && |
(typeof(vf.cdomain.value)!="undefined") && (vf.cdomain.value!='')) { |
(typeof(vf.lcdomain.value)!="undefined") && (vf.lcdomain.value!='')) { |
founduname=1; |
founduname=1; |
} |
} |
if ((typeof(vf.cfirst.value)!="undefined") && (vf.cfirst.value!='') && |
if ((typeof(vf.cfirst.value)!="undefined") && (vf.cfirst.value!='') && |
Line 595 Generation: <input type="text" name="cg
|
Line 620 Generation: <input type="text" name="cg
|
|
|
<h3>Login Data</h3> |
<h3>Login Data</h3> |
<p>Username: <input type="text" name="cuname" size="15"></p> |
<p>Username: <input type="text" name="cuname" size="15"></p> |
<p>Domain: <input type="text" name="cdomain" size="10" value="$defdom"></p> |
<p>Domain: $domform</p> |
<p>Note: login settings below will not take effect if the user already exists |
<p>Note: login settings below will not take effect if the user already exists |
</p><p> |
</p><p> |
<input type="radio" name="login" value="krb" onClick="clickkrb(this.form);"> |
$krbform |
Kerberos authenticated with domain |
|
<input type="text" name="krbdom" size="10" onChange="setkrb(this.form);"> |
|
</p><p> |
</p><p> |
<input type="radio" name="login" value="int" onClick="clickint(this.form);"> |
$intform |
Internally authenticated (with initial password |
|
<input type="text" name="intpwd" size="10" onChange="setint(this.form);">) |
|
</p><p> |
</p><p> |
<input type="radio" name="login" value="loc" onClick="clickloc(this.form);" /> |
$locform |
Local Authentication with argument |
|
<input type="text" name="locarg" size="10" onChange="setloc(this.form);" /> |
|
</p><p> |
</p><p> |
<h3>Starting and Ending Dates</h3> |
<h3>Starting and Ending Dates</h3> |
<input type="hidden" value='' name="pres_value"> |
<input type="hidden" value='' name="pres_value"> |
Line 681 sub show_drop_list {
|
Line 700 sub show_drop_list {
|
my ($r,%currentlist)=@_; |
my ($r,%currentlist)=@_; |
my $cid=$ENV{'request.course.id'}; |
my $cid=$ENV{'request.course.id'}; |
$r->print(<<'END'); |
$r->print(<<'END'); |
|
<script> |
|
function checkAll(field) |
|
{ |
|
for (i = 0; i < field.length; i++) |
|
field[i].checked = true ; |
|
} |
|
|
|
function uncheckAll(field) |
|
{ |
|
for (i = 0; i < field.length; i++) |
|
field[i].checked = false ; |
|
} |
|
</script> |
|
<p> |
<input type="hidden" name="phase" value="four"> |
<input type="hidden" name="phase" value="four"> |
<table border=2> |
<table border=2> |
<tr><th> </th><th>username</th><th>domain</th> |
<tr><th> </th><th>username</th><th>domain</th> |
Line 715 END
|
Line 748 END
|
} |
} |
} |
} |
$r->print('</table><br>'); |
$r->print('</table><br>'); |
$r->print('<input type=submit value="Drop Students">'); |
$r->print(<<"END"); |
|
</p><p> |
|
<input type="button" value="check all" onclick="javascript:checkAll(document.studentform.droplist)"> |
|
<input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.droplist)"> |
|
<p><input type=submit value="Drop Students"></p> |
|
END |
} |
} |
|
|
# ================================================= Drop/Add from uploaded file |
# ================================================= Drop/Add from uploaded file |
Line 740 sub upfile_drop_add {
|
Line 778 sub upfile_drop_add {
|
my $enddate = $ENV{'form.enddate'}; |
my $enddate = $ENV{'form.enddate'}; |
if ($startdate=~/\D/) { $startdate=''; } |
if ($startdate=~/\D/) { $startdate=''; } |
if ($enddate=~/\D/) { $enddate=''; } |
if ($enddate=~/\D/) { $enddate=''; } |
# |
# Determine domain and desired host (home server) |
my $domain=$ENV{'form.lcdomain'}; |
my $domain=$ENV{'form.lcdomain'}; |
|
my $desiredhost = $ENV{'form.lcserver'}; |
|
if (lc($desiredhost) eq 'default') { |
|
$desiredhost = undef; |
|
} else { |
|
my %home_servers = &Apache::loncommon::get_home_servers($domain); |
|
if (! exists($home_servers{$desiredhost})) { |
|
$r->print('<font color="#ff0000">Error:</font>'. |
|
'Invalid home server specified'); |
|
return; |
|
} |
|
} |
# Determine authentication mechanism |
# Determine authentication mechanism |
my $amode = ''; |
my $amode = ''; |
my $genpwd = ''; |
my $genpwd = ''; |
if ($ENV{'form.login'} eq 'krb') { |
if ($ENV{'form.login'} eq 'krb') { |
$amode='krb4'; |
$amode='krb4'; |
$genpwd=$ENV{'form.krbdom'}; |
$genpwd=$ENV{'form.krbarg'}; |
} elsif ($ENV{'form.login'} eq 'int') { |
} elsif ($ENV{'form.login'} eq 'int') { |
$amode='internal'; |
$amode='internal'; |
if ((defined($ENV{'form.intpwd'})) && ($ENV{'form.intpwd'})) { |
if ((defined($ENV{'form.intarg'})) && ($ENV{'form.intarg'})) { |
$genpwd=$ENV{'form.intpwd'}; |
$genpwd=$ENV{'form.intarg'}; |
} |
} |
} elsif ($ENV{'form.login'} eq 'loc') { |
} elsif ($ENV{'form.login'} eq 'loc') { |
$amode='localauth'; |
$amode='localauth'; |
Line 824 sub upfile_drop_add {
|
Line 873 sub upfile_drop_add {
|
} |
} |
} |
} |
if ($password) { |
if ($password) { |
&modifystudent($domain,$username,$cid,$sec); |
&modifystudent($domain,$username,$cid,$sec, |
|
$desiredhost); |
my $reply=&Apache::lonnet::modifystudent |
my $reply=&Apache::lonnet::modifystudent |
($domain,$username,$id,$amode,$password, |
($domain,$username,$id,$amode,$password, |
$fname,$mname,$lname,$gen,$sec,$enddate, |
$fname,$mname,$lname,$gen,$sec,$enddate, |
$startdate,$ENV{'form.forceid'}); |
$startdate,$ENV{'form.forceid'},$desiredhost); |
if ($reply ne 'ok') { |
if ($reply ne 'ok') { |
$r->print('<p><b>'. |
$r->print('<p><b>'. |
'Error enrolling '.$username.': '. |
'Error enrolling '.$username.': '. |
Line 897 sub drop_student_list {
|
Line 947 sub drop_student_list {
|
# ================================================================ Main Handler |
# ================================================================ Main Handler |
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
$Apache::lonxml::debug=1; |
|
if ($r->header_only) { |
if ($r->header_only) { |
$r->content_type('text/html'); |
$r->content_type('text/html'); |
$r->send_http_header; |
$r->send_http_header; |