--- loncom/interface/loncreateuser.pm 2001/03/02 22:06:43 1.5 +++ loncom/interface/loncreateuser.pm 2001/04/12 19:43:49 1.12 @@ -16,7 +16,7 @@ # # 2/14 Gerd Kortemeyer) # -# 2/14,2/17,2/19,2/20,2/21,2/22,2/23,3/2 Gerd Kortemeyer +# 2/14,2/17,2/19,2/20,2/21,2/22,2/23,3/2,3/17,3/24,04/12 Gerd Kortemeyer # package Apache::loncreateuser; @@ -101,6 +101,8 @@ sub phase_two { <input type="hidden" value='' name="pres_value"> <input type="hidden" value='' name="pres_type"> <input type="hidden" value='' name="pres_marker"> +<input type=hidden name=cuname value="$ccuname"> +<input type=hidden name=cdomain value="$ccdomain"> ENDENHEAD my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain); @@ -114,80 +116,8 @@ ENDENHEAD } %ENV; if ($uhome eq 'no_host') { $r->print(<<ENDNUSER); -<h3>New user $ccuname at $ccdomain</h3> +<h2>New user $ccuname at $ccdomain</h2> <script> -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 ((vf.cuname.value!=undefined) && (vf.cuname.value!='') && - (vf.cdomain.value!=undefined) && (vf.cdomain.value!='')) { - founduname=1; - } - if ((vf.cfirst.value!=undefined) && (vf.cfirst.value!='') && - (vf.clast.value!=undefined) && (vf.clast.value!='')) { - foundname=1; - } - if ((vf.csec.value!=undefined) && (vf.csec.value!='')) { - foundsec=1; - } - if ((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 (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)<Math.round(vf.startdate.value)) { - alert('Ending date is before starting date'); - return; - } - } - if (message!='') { - message+='Continue enrollment?'; - if (confirm(message)) { - pclose(); - vf.submit(); - } - } else { - pclose(); - vf.submit(); - } -} - function setkrb(vf) { if (vf.krbdom.value!='') { vf.login[0].checked=true; @@ -221,13 +151,7 @@ Generation: <input type=text name=cgen s ID/Student Number: <input type=text name=cstid size=10><p> -Group/Section: <input type=text name=csec size=5><p> - <h3>Login Data</h3> -Username: <input type=text name=cuname size=15><p> -Domain: <input type=text size=10 value=$defdom name=cdomain><p> -Note: login settings below will not take effect if the user already exists<p> - <input type=radio name=login value=krb onClick="clickkrb(this.form);"> Kerberos authenticated with domain <input type=text size=10 name=krbdom onChange="setkrb(this.form);"><p> @@ -236,9 +160,7 @@ Internally authenticated (with initial p <input type=text size=10 name=intpwd onChange="setint(this.form);">) ENDNUSER } else { - $r->print('<h3>Existing user '.$ccuname.' at '.$ccdomain.'</h3>'); - $r->print('<input type=hidden name=cuname value='.$ccuname.'>'); - $r->print('<input type=hidden name=cdomain value='.$ccdomain.'>'); + $r->print('<h2>Existing user '.$ccuname.' at '.$ccdomain.'</h2>'); my $rolesdump=&Apache::lonnet::reply( "dump:$ccdomain:$ccuname:roles",$uhome); @@ -260,7 +182,7 @@ ENDNUSER my %coursedata=&Apache::lonnet::coursedescription($1.'_'.$2); my $carea='Course: '.$coursedata{'description'}; $inccourses{$1.'_'.$2}=1; - if (&Apache::lonnet::allowed('c'.$trole,$1.'_'.$2)) { + if (&Apache::lonnet::allowed('c'.$trole,$1.'/'.$2)) { $allows=1; } $bgcol=$1.'_'.$2; @@ -271,11 +193,15 @@ ENDNUSER } $area=$carea; } else { - if ($1) { + if ($area=~/^\/(\w+)\//) { $incdomains{$1}=1; if (&Apache::lonnet::allowed('c'.$trole,$1)) { $allows=1; } + } else { + if (&Apache::lonnet::allowed('c'.$trole,'/')) { + $allows=1; + } } } @@ -302,21 +228,44 @@ ENDNUSER $r->print('</table>'); } } - $r->print('<hr><h4>Add Roles</h4><h5>System Level</h5>'); - $r->print('<h5>Domain Level</h5>'); + $r->print('<hr><h3>Add Roles</h3><h4>System Level</h4>'); +# +# Domain level +# + $r->print('<h4>Domain Level</h4>'. + '<table border=2><tr><th>Activate</th><th>Role</th><th>Extent</th>'. + '<th>Start</th><th>End</th></tr>'); map { my $thisdomain=$_; map { if (&Apache::lonnet::allowed('c'.$_,$thisdomain)) { - $r->print($_.' - '.$thisdomain.'<br>'); + my $plrole=&Apache::lonnet::plaintext($_); + $r->print(<<ENDDROW); +<tr> +<td><input type=checkbox name="act_$thisdomain\_$_"></td> +<td>$plrole</td> +<td>$thisdomain</td> +<td><input type=hidden name="start_$thisdomain\_$_" value=''> +<a href= +"javascript:pjump('date_start','Start Date $plrole',document.cu.start_$thisdomain\_$_.value,'start_$thisdomain\_$_','cu.pres','dateset')">Set Start Date</a></td> +<td><input type=hidden name="end_$thisdomain\_$_" value=''> +<a href= +"javascript:pjump('date_end','End Date $plrole',document.cu.end_$thisdomain\_$_.value,'end_$thisdomain\_$_','cu.pres','dateset')">Set End Date</a></td> +</tr> +ENDDROW } - } ('dc','cc','li','dg','au'); + } ('dc','li','dg','au'); } sort keys %incdomains; - $r->print('<h5>Course Level</h5>'. + $r->print('</table>'); +# +# Course level +# + $r->print('<h4>Course Level</h4>'. '<table border=2><tr><th>Activate</th><th>Role</th><th>Extent</th>'. '<th>Group/Section</th><th>Start</th><th>End</th></tr>'); map { my $thiscourse=$_; + $thiscourse=~s/\_/\//g; my %coursedata=&Apache::lonnet::coursedescription($thiscourse); my $area=$coursedata{'description'}; my $bgcol=$thiscourse; @@ -341,10 +290,10 @@ ENDNUSER ENDROW } - } ('st','ta','ep','ad','in'); + } ('st','ta','ep','ad','in','cc'); } sort keys %inccourses; $r->print('</table>'); - $r->print('<input type=submit value="Modify Roles">'); + $r->print('<input type=submit value="Modify User">'); $r->print('</form></body></html>'); } @@ -361,6 +310,7 @@ sub phase_three { <img align=right src=/adm/lonIcons/lonlogos.gif> <h1>Create User, Change User Privileges</h1> ENDTHREEHEAD + $r->print('<h2>'.$ENV{'form.cuname'}.' at '.$ENV{'form.cdomain'}.'</h2>'); if ($ENV{'form.makeuser'}) { $r->print('<h3>Creating User</h3>'); if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&& @@ -375,15 +325,14 @@ ENDTHREEHEAD $genpwd=$ENV{'form.intpwd'}; } if (($amode) && ($genpwd)) { - &dropstudent($ENV{'form.cdomain'},$ENV{'form.cuname'}, - $ENV{'request.course.id'},$ENV{'form.csec'}); - $r->print(&Apache::lonnet::modifystudent( + $r->print('Generating user: '.&Apache::lonnet::modifyuser( $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'})); + $ENV{'form.clast'},$ENV{'form.cgen'})); + $r->print('<br>Home server: '.&Apache::lonnet::homeserver + ($ENV{'form.cuname'},$ENV{'form.cdomain'})); + } else { $r->print('Invalid login mode or password'); } @@ -391,15 +340,24 @@ ENDTHREEHEAD $r->print('Invalid username or domain'); } } - $r->print('<h4>'.$ENV{'form.cuname'}.' at '.$ENV{'form.cdomain'}.'</h4>'); my $now=time; -# sub assignrole { -# my ($udom,$uname,$url,$role,$end,$start)=@_; + $r->print('<h3>Modifying Roles</h3>'); map { if (($_=~/^form\.rev\:([^\_]+)\_([^\_]+)$/) && ($ENV{$_})) { $r->print('Revoking '.$2.' in '.$1.': '. &Apache::lonnet::assignrole($ENV{'form.cdomain'},$ENV{'form.cuname'}, $1,$2,$now).'<br>'); + if ($2 eq 'st') { + $1=~/^\/(\w+)\/(\w+)/; + my $cid=$1.'_'.$2; + $r->print('Drop from classlist: '. + &Apache::lonnet::critical('put:'.$ENV{'course.'.$cid.'.domain'}.':'. + $ENV{'course.'.$cid.'.num'}.':classlist:'. + &Apache::lonnet::escape($ENV{'form.cuname'}.':'. + $ENV{'form.cdomain'}).'='. + &Apache::lonnet::escape($now.':'), + $ENV{'course.'.$cid.'.home'}).'<br>'); + } } } keys %ENV; map { @@ -419,7 +377,31 @@ ENDTHREEHEAD $r->print('Assigning: '.$3.' in '.$url.': '. &Apache::lonnet::assignrole($ENV{'form.cdomain'},$ENV{'form.cuname'}, $url,$3,$end,$start).'<br>'); - } + if ($3 eq 'st') { + $url=~/^\/(\w+)\/(\w+)/; + my $cid=$1.'_'.$2; + $r->print('Add to classlist: '. + &Apache::lonnet::critical('put:'.$ENV{'course.'.$cid.'.domain'}.':'. + $ENV{'course.'.$cid.'.num'}.':classlist:'. + &Apache::lonnet::escape($ENV{'form.cuname'}.':'. + $ENV{'form.cdomain'}).'='. + &Apache::lonnet::escape($end.':'.$start), + $ENV{'course.'.$cid.'.home'}).'<br>'); + } + } elsif (($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) && ($ENV{$_})) { + my $url='/'.$1.'/'; + my $start=$now; + if ($ENV{'form.start_'.$1.'_'.$2}) { + $start=$ENV{'form.start_'.$1.'_'.$2}; + } + my $end=0; + if ($ENV{'form.end_'.$1.'_'.$2}) { + $end=$ENV{'form.end_'.$1.'_'.$2}; + } + $r->print('Assigning: '.$2.' in '.$url.': '. + &Apache::lonnet::assignrole($ENV{'form.cdomain'},$ENV{'form.cuname'}, + $url,$2,$end,$start).'<br>'); + } } keys %ENV; $r->print('</body></html>'); } @@ -451,7 +433,7 @@ sub handler { } } else { $ENV{'user.error.msg'}= - "/adm/createcourse:mau:0:0:Cannot modify user data"; + "/adm/createuser:mau:0:0:Cannot modify user data"; return HTTP_NOT_ACCEPTABLE; } return OK;