version 1.56, 2006/03/30 05:20:44
|
version 1.59, 2006/04/25 15:32:20
|
Line 243 sub make_reservation {
|
Line 243 sub make_reservation {
|
my $value=&Apache::lonnet::EXT("resource.0.availablestudent",$symb, |
my $value=&Apache::lonnet::EXT("resource.0.availablestudent",$symb, |
$env{'user.domain'},$env{'user.name'}); |
$env{'user.domain'},$env{'user.name'}); |
&Apache::lonxml::debug("value is $value<br />"); |
&Apache::lonxml::debug("value is $value<br />"); |
if (&network_error($value)) { |
|
|
my $use_slots = &Apache::lonnet::EXT("resource.0.useslots"); |
|
&Apache::lonxml::debug("use_slots is $use_slots<br />"); |
|
|
|
if (&network_error($value) || &network_error($use_slots)) { |
return 'error: Unable to determine current status'; |
return 'error: Unable to determine current status'; |
} |
} |
|
|
|
my $parm_symb = $symb; |
|
my $parm_level = 1; |
|
if ($use_slots eq 'sequence') { |
|
my ($map) = &Apache::lonnet::decode_symb($symb); |
|
$parm_symb = &Apache::lonnet::symbread($map); |
|
$parm_level = 2; |
|
} |
|
|
foreach my $other_slot (split(/:/, $value)) { |
foreach my $other_slot (split(/:/, $value)) { |
if ($other_slot eq $slot_name) { |
if ($other_slot eq $slot_name) { |
my %consumed=&Apache::lonnet::dump('slot_reservations', $cdom, |
my %consumed=&Apache::lonnet::dump('slot_reservations', $cdom, |
Line 254 sub make_reservation {
|
Line 266 sub make_reservation {
|
if (&network_error($value)) { |
if (&network_error($value)) { |
return 'error: Unable to determine current status'; |
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)) { |
foreach my $key (keys(%consumed)) { |
if ($consumed{$key}->{'name'} eq $me) { |
if ($consumed{$key}->{'name'} eq $me) { |
my $num=(split('\0',$key))[1]; |
my $num=(split('\0',$key))[1]; |
Line 284 sub make_reservation {
|
Line 296 sub make_reservation {
|
return undef; |
return undef; |
} |
} |
|
|
my %reservation=('name' => $env{'user.name'}.'@'.$env{'user.domain'}, |
my %reservation=('name' => $env{'user.name'}.':'.$env{'user.domain'}, |
'timestamp' => time, |
'timestamp' => time, |
'symb' => $symb); |
'symb' => $parm_symb); |
|
|
my $success=&Apache::lonnet::newput('slot_reservations', |
my $success=&Apache::lonnet::newput('slot_reservations', |
{"$slot_name\0$wanted" => |
{"$slot_name\0$wanted" => |
Line 300 sub make_reservation {
|
Line 312 sub make_reservation {
|
} |
} |
my $result=&Apache::lonparmset::storeparm_by_symb($symb, |
my $result=&Apache::lonparmset::storeparm_by_symb($symb, |
'0_availablestudent', |
'0_availablestudent', |
1, $new_value, 'string', |
$parm_level, $new_value, |
|
'string', |
$env{'user.name'}, |
$env{'user.name'}, |
$env{'user.domain'}); |
$env{'user.domain'}); |
&Apache::lonxml::debug("hrrm $result"); |
&Apache::lonxml::debug("hrrm $result"); |
Line 397 sub release_all_slot {
|
Line 410 sub release_all_slot {
|
|
|
foreach my $entry (sort { $consumed{$a}{'name'} cmp |
foreach my $entry (sort { $consumed{$a}{'name'} cmp |
$consumed{$b}{'name'} } (keys(%consumed))) { |
$consumed{$b}{'name'} } (keys(%consumed))) { |
my ($uname,$udom) = split('@',$consumed{$entry}{'name'}); |
my ($uname,$udom) = split(':',$consumed{$entry}{'name'}); |
my ($result,$msg) = |
my ($result,$msg) = |
&release_reservation($slot_name,$uname,$udom, |
&release_reservation($slot_name,$uname,$udom, |
$consumed{$entry}{'symb'},$mgr); |
$consumed{$entry}{'symb'},$mgr); |
Line 465 sub release_reservation {
|
Line 478 sub release_reservation {
|
my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, |
my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, |
"^$slot_name\0"); |
"^$slot_name\0"); |
foreach my $entry (keys(%consumed)) { |
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], |
&Apache::lonnet::del('slot_reservations',[$entry], |
$cdom,$cnum); |
$cdom,$cnum); |
} |
} |
} |
} |
|
|
|
my $use_slots = &Apache::lonnet::EXT("resource.0.useslots"); |
|
&Apache::lonxml::debug("use_slots is $use_slots<br />"); |
|
|
|
if (&network_error($use_slots)) { |
|
return (0,'error: Unable to determine current status'); |
|
} |
|
|
|
my $parm_level = 1; |
|
if ($use_slots eq 'sequence') { |
|
$parm_level = 2; |
|
} |
# store new parameter string |
# store new parameter string |
my $result=&Apache::lonparmset::storeparm_by_symb($symb, |
my $result=&Apache::lonparmset::storeparm_by_symb($symb, |
'0_availablestudent', |
'0_availablestudent', |
1, $new_param, 'string', |
$parm_level, $new_param, |
$uname,$udom); |
'string', $uname, $udom); |
|
|
my $msg; |
my $msg; |
if ($mgr eq 'F') { |
if ($mgr eq 'F') { |
Line 1055 sub show_table {
|
Line 1079 sub show_table {
|
$consumed{$b}{name} } |
$consumed{$b}{name} } |
(keys(%consumed))) { |
(keys(%consumed))) { |
my (undef,$id)=split("\0",$entry); |
my (undef,$id)=split("\0",$entry); |
my ($uname,$udom) = split('@',$consumed{$entry}{'name'}); |
my ($uname,$udom) = split(':',$consumed{$entry}{'name'}); |
$ids.= '<nobr>'; |
$ids.= '<nobr>'; |
foreach my $item (@stu_display_order) { |
foreach my $item (@stu_display_order) { |
if ($stu_display{$item}) { |
if ($stu_display{$item}) { |
if ($item eq 'fullname') { |
if ($item eq 'fullname') { |
$ids.=$fullname->{"$uname:$udom"}.' '; |
$ids.=$fullname->{"$uname:$udom"}.' '; |
} elsif ($item eq 'username') { |
} elsif ($item eq 'username') { |
$ids.="<tt>$uname\@$udom</tt> "; |
$ids.="<tt>$uname:$udom</tt> "; |
} |
} |
} |
} |
} |
} |
Line 1420 sub csv_upload_assign {
|
Line 1444 sub csv_upload_assign {
|
if ($entries{$fields{'endtime'}}) { |
if ($entries{$fields{'endtime'}}) { |
$slot{'endtime'}=&UnixDate($entries{$fields{'endtime'}},"%s"); |
$slot{'endtime'}=&UnixDate($entries{$fields{'endtime'}},"%s"); |
} |
} |
|
|
|
# start/endtime must be defined and greater than zero |
|
if (!$slot{'starttime'}) { |
|
push(@errors,"$name not created -- Invalid start time"); |
|
next; |
|
} |
|
if (!$slot{'endtime'}) { |
|
push(@errors,"$name not created -- Invalid end time"); |
|
next; |
|
} |
|
if ($slot{'starttime'} > $slot{'endtime'}) { |
|
push(@errors,"$name not created -- Slot starts after it ends"); |
|
next; |
|
} |
|
|
if ($entries{$fields{'startreserve'}}) { |
if ($entries{$fields{'startreserve'}}) { |
$slot{'startreserve'}= |
$slot{'startreserve'}= |
&UnixDate($entries{$fields{'startreserve'}},"%s"); |
&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', |
foreach my $key ('ip','proctor','description','maxspace', |
'secret','symb') { |
'secret','symb') { |
if ($entries{$fields{$key}}) { |
if ($entries{$fields{$key}}) { |
$slot{$key}=$entries{$fields{$key}}; |
$slot{$key}=$entries{$fields{$key}}; |
} |
} |
} |
} |
|
|
if ($entries{$fields{'uniqueperiod'}}) { |
if ($entries{$fields{'uniqueperiod'}}) { |
my ($start,$end)=split(',',$entries{$fields{'uniqueperiod'}}); |
my ($start,$end)=split(',',$entries{$fields{'uniqueperiod'}}); |
my @times=(&UnixDate($start,"%s"), |
my @times=(&UnixDate($start,"%s"), |
&UnixDate($end,"%s")); |
&UnixDate($end,"%s")); |
$slot{'uniqueperiod'}=\@times; |
$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); |
&Apache::lonnet::cput('slots',{$name=>\%slot},$cdom,$cname); |
$r->print('.'); |
$r->print('.'); |
Line 1501 sub handler {
|
Line 1552 sub handler {
|
my $symb=&Apache::lonnet::unescape($env{'form.symb'}); |
my $symb=&Apache::lonnet::unescape($env{'form.symb'}); |
my (undef,undef,$res)=&Apache::lonnet::decode_symb($symb); |
my (undef,undef,$res)=&Apache::lonnet::decode_symb($symb); |
my $useslots = &Apache::lonnet::EXT("resource.0.useslots",$symb); |
my $useslots = &Apache::lonnet::EXT("resource.0.useslots",$symb); |
if ($useslots ne 'resource') { |
if ($useslots ne 'resource' && $useslots ne 'sequence') { |
&fail($r,'not_valid'); |
&fail($r,'not_valid'); |
return OK; |
return OK; |
} |
} |