--- loncom/interface/slotrequest.pm 2006/03/30 04:35:58 1.55 +++ loncom/interface/slotrequest.pm 2006/04/24 23:23:02 1.58 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler for requesting to have slots added to a students record # -# $Id: slotrequest.pm,v 1.55 2006/03/30 04:35:58 albertel Exp $ +# $Id: slotrequest.pm,v 1.58 2006/04/24 23:23:02 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -254,7 +254,7 @@ sub make_reservation { if (&network_error($value)) { return 'error: Unable to determine current status'; } - my $me=$env{'user.name'}.'@'.$env{'user.domain'}; + my $me=$env{'user.name'}.':'.$env{'user.domain'}; foreach my $key (keys(%consumed)) { if ($consumed{$key}->{'name'} eq $me) { my $num=(split('\0',$key))[1]; @@ -284,7 +284,7 @@ sub make_reservation { return undef; } - my %reservation=('name' => $env{'user.name'}.'@'.$env{'user.domain'}, + my %reservation=('name' => $env{'user.name'}.':'.$env{'user.domain'}, 'timestamp' => time, 'symb' => $symb); @@ -397,7 +397,7 @@ sub release_all_slot { foreach my $entry (sort { $consumed{$a}{'name'} cmp $consumed{$b}{'name'} } (keys(%consumed))) { - my ($uname,$udom) = split('@',$consumed{$entry}{'name'}); + my ($uname,$udom) = split(':',$consumed{$entry}{'name'}); my ($result,$msg) = &release_reservation($slot_name,$uname,$udom, $consumed{$entry}{'symb'},$mgr); @@ -465,7 +465,7 @@ sub release_reservation { my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, "^$slot_name\0"); foreach my $entry (keys(%consumed)) { - if ( $consumed{$entry}->{'name'} eq ($uname.'@'.$udom) ) { + if ( $consumed{$entry}->{'name'} eq ($uname.':'.$udom) ) { &Apache::lonnet::del('slot_reservations',[$entry], $cdom,$cnum); } @@ -1055,14 +1055,14 @@ sub show_table { $consumed{$b}{name} } (keys(%consumed))) { my (undef,$id)=split("\0",$entry); - my ($uname,$udom) = split('@',$consumed{$entry}{'name'}); + my ($uname,$udom) = split(':',$consumed{$entry}{'name'}); $ids.= ''; foreach my $item (@stu_display_order) { if ($stu_display{$item}) { if ($item eq 'fullname') { $ids.=$fullname->{"$uname:$udom"}.' '; } elsif ($item eq 'username') { - $ids.="$uname\@$udom "; + $ids.="$uname:$udom "; } } } @@ -1142,14 +1142,15 @@ EDITLINK Delete DELETELINK - my $remove_all=&remove_link($slot,'remove all'); + my $remove_all=&remove_link($slot,'remove all').'
'; if ($ids ne '') { undef($delete); } - if ($slots{$slot}{'type'} ne 'schedulable_student') { + if ($slots{$slot}{'type'} ne 'schedulable_student' + || $ids eq '') { undef($remove_all); } - $r->print("\n$edit $delete $remove_all\n"); + $r->print("\n$edit $delete\n"); if (exists($show{'name'})) { $colspan++;$r->print("$slot"); } @@ -1187,7 +1188,7 @@ DELETELINK $colspan++;$r->print("$allowedusers\n"); } if (exists($show{'scheduled'})) { - $colspan++;$r->print("$ids\n\n"); + $colspan++;$r->print("$remove_all $ids\n\n"); } if (exists($show{'proctor'})) { $r->print(< $slot{'endtime'}) { + push(@errors,"$name not created -- Slot starts after it ends"); + next; + } + if ($entries{$fields{'startreserve'}}) { $slot{'startreserve'}= &UnixDate($entries{$fields{'startreserve'}},"%s"); } + if (defined($slot{'startreserve'}) + && $slot{'startreserve'} > $slot{'starttime'}) { + push(@errors,"$name not created -- Slot's reservation start time is after the slot's start time."); + next; + } + foreach my $key ('ip','proctor','description','maxspace', 'secret','symb') { if ($entries{$fields{$key}}) { $slot{$key}=$entries{$fields{$key}}; } } + if ($entries{$fields{'uniqueperiod'}}) { my ($start,$end)=split(',',$entries{$fields{'uniqueperiod'}}); my @times=(&UnixDate($start,"%s"), &UnixDate($end,"%s")); $slot{'uniqueperiod'}=\@times; } + if (defined($slot{'uniqueperiod'}) + && $slot{'uniqueperiod'}[0] > $slot{'uniqueperiod'}[1]) { + push(@errors,"$name not created -- Slot's unique period start time is later than the unique period's end time."); + next; + } &Apache::lonnet::cput('slots',{$name=>\%slot},$cdom,$cname); $r->print('.');