--- loncom/interface/loncreateuser.pm	2003/04/30 15:49:45	1.52
+++ loncom/interface/loncreateuser.pm	2003/06/19 21:46:38	1.55
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Create a user
 #
-# $Id: loncreateuser.pm,v 1.52 2003/04/30 15:49:45 matthew Exp $
+# $Id: loncreateuser.pm,v 1.55 2003/06/19 21:46:38 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -46,7 +46,7 @@
 # 05/10,10/16 Gerd Kortemeyer 
 # 02/11/02 Matthew Hall
 #
-# $Id: loncreateuser.pm,v 1.52 2003/04/30 15:49:45 matthew Exp $
+# $Id: loncreateuser.pm,v 1.55 2003/06/19 21:46:38 www Exp $
 ###
 
 package Apache::loncreateuser;
@@ -54,6 +54,7 @@ package Apache::loncreateuser;
 use strict;
 use Apache::Constants qw(:common :http);
 use Apache::lonnet;
+use Apache::loncommon;
 
 my $loginscript; # piece of javascript used in two separate instances
 my $generalrule;
@@ -254,7 +255,7 @@ END
         foreach ('firstname','middlename','lastname','generation') {
            if (&Apache::lonnet::allowed('mau',$ccdomain)) {
               $r->print(<<"END");            
-<td><input type="text" name="c$_" value="$userenv{$_}" size="15"/></td>
+<td><input type="text" name="c$_" value="$userenv{$_}" size="15" /></td>
 END
            } else {
                $r->print('<td>'.$userenv{$_}.'</td>');
@@ -272,7 +273,7 @@ END
 <hr />
 <h3>Revoke Existing Roles</h3>
 <table border=2>
-<tr><th>Revoke</th><th>Role</th><th>Extent</th><th>Start</th><th>End</th>
+<tr><th>Revoke</th><th>Delete</th><th>Role</th><th>Extent</th><th>Start</th><th>End</th>
 END
 	   foreach my $area (keys(%rolesdump)) {
                next if ($area =~ /^rolesdef/);
@@ -283,19 +284,26 @@ END
                    split(/_/,$role);
                my $bgcol='ffffff';
                my $allowed=0;
+               my $delallowed=0;
                if ($area =~ /^\/(\w+)\/(\d\w+)/ ) {
                    my %coursedata=
                        &Apache::lonnet::coursedescription($1.'_'.$2);
 		   my $carea;
 		   if (defined($coursedata{'description'})) {
-		       $carea='Course: '.$coursedata{'description'};
+		       $carea='Course: '.$coursedata{'description'}.
+                              '<br />Domain: '.$1;
 		   } else {
 		       $carea='Unavailable course: '.$area;
 		   }
                    $inccourses{$1.'_'.$2}=1;
-                   if (&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) {
+                   if ((&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) ||
+                       (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {
                        $allowed=1;
                    }
+                   if ((&Apache::lonnet::allowed('dro',$1)) ||
+                       (&Apache::lonnet::allowed('dro',$ccdomain))) {
+                       $delallowed=1;
+                   }
                    # Compute the background color based on $area
                    $bgcol=$1.'_'.$2;
                    $bgcol=~s/[^8-9b-e]//g;
@@ -307,9 +315,15 @@ END
                } else {
                    # Determine if current user is able to revoke privileges
                    if ($area=~ /^\/(\w+)\//) {
-                       if (&Apache::lonnet::allowed('c'.$role_code,$1)) {
+                       if ((&Apache::lonnet::allowed('c'.$role_code,$1)) ||
+                       (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {
                            $allowed=1;
                        }
+                       if (((&Apache::lonnet::allowed('dro',$1))  ||
+                            (&Apache::lonnet::allowed('dro',$ccdomain))) &&
+                           ($role_code ne 'dc')) {
+                           $delallowed=1;
+                       }
                    } else {
                        if (&Apache::lonnet::allowed('c'.$role_code,'/')) {
                            $allowed=1;
@@ -333,6 +347,12 @@ END
                } else {
                    $row.='&nbsp;';
                }
+	       $row.='</td><td>';
+               if ($delallowed) {
+                   $row.= '<input type="checkbox" name="del:'.$thisrole.'">';
+               } else {
+                   $row.='&nbsp;';
+               }
                $row.= '</td><td>'.&Apache::lonnet::plaintext($role_code).
                       '</td><td>'.$area.
                       '</td><td>'.($role_start_time?localtime($role_start_time)
@@ -412,16 +432,7 @@ ENDBADAUTH
 		$authform_other="<p>$authformkrb</p>".
                     "<p>$authformint</p><p>$authformfsys</p>";
 	    }
-	    $authformcurrent=<<ENDCURRENTAUTH;
-<table border='1'>
-<tr>
-<td><font color='#ff0000'>* * * WARNING * * *</font></td>
-<td><font color='#ff0000'>* * * WARNING * * *</font></td>
-</tr>
-<tr><td bgcolor='#cbbcbb'>$authformcurrent</td>
-<td bgcolor='#cbbcbb'>Changing this value will overwrite existing authentication for the user; you should notify the user of this change.</td></tr>
-</table>
-ENDCURRENTAUTH
+            $authformcurrent.=' <i>(will override current values)</i><br />';
             if (&Apache::lonnet::allowed('mau',$ENV{'request.role.domain'})) {
 		# Current user has login modification privileges
 		$r->print(<<ENDOTHERAUTHS);
@@ -729,22 +740,43 @@ END
 	                     $ENV{'course.'.$cid.'.home'}).'<br>');
 		}
 	    } 
+	} elsif ($_=~/^form\.del/) {
+	    if ($_=~/^form\.del\:([^\_]+)\_([^\_]+)$/) {
+	        $r->print('Deleting '.$2.' in '.$1.': '.
+                     &Apache::lonnet::assignrole($ENV{'form.ccdomain'},
+                     $ENV{'form.ccuname'},$1,$2,$now,0,1).'<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.ccuname'}.':'.
+                             $ENV{'form.ccdomain'}).'='.
+                         &Apache::lonnet::escape($now.':'),
+	                     $ENV{'course.'.$cid.'.home'}).'<br>');
+		}
+	    } 
 	} elsif ($_=~/^form\.act/) {
 	    if ($_=~/^form\.act\_([^\_]+)\_([^\_]+)\_([^\_]+)$/) {
 		# Activate roles for sections with 3 id numbers
 		# set start, end times, and the url for the class
-		my $start = ( $ENV{'form.start_'.$1.'_'.$2} ? 
-			      $ENV{'form.start_'.$1.'_'.$2} : 
+
+		my $start = ( $ENV{'form.start_'.$1.'_'.$2.'_'.$3} ? 
+			      $ENV{'form.start_'.$1.'_'.$2.'_'.$3} : 
 			      $now );
-		my $end   = ( $ENV{'form.end_'.$1.'_'.$2} ? 
-			      $ENV{'form.end_'.$1.'_'.$2} :
+		my $end   = ( $ENV{'form.end_'.$1.'_'.$2.'_'.$3} ? 
+			      $ENV{'form.end_'.$1.'_'.$2.'_'.$3} :
 			      0 );
 		my $url='/'.$1.'/'.$2;
 		if ($ENV{'form.sec_'.$1.'_'.$2.'_'.$3}) {
 		    $url.='/'.$ENV{'form.sec_'.$1.'_'.$2.'_'.$3};
 		}
 		# Assign the role and report it
-		$r->print('Assigning: '.$3.' in '.$url.': '.
+		$r->print('Assigning: '.$3.' in '.$url.
+                         ($start?', starting '.localtime($start):'').
+                         ($end?', ending '.localtime($end):'').': '.
                           &Apache::lonnet::assignrole(
                               $ENV{'form.ccdomain'},$ENV{'form.ccuname'},
                               $url,$3,$end,$start).