version 1.34, 2005/11/21 19:50:36
|
version 1.38, 2006/01/24 06:41:16
|
Line 325 sub delete_slot {
|
Line 325 sub delete_slot {
|
my ($cnum,$cdom)=&get_course(); |
my ($cnum,$cdom)=&get_course(); |
my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, |
my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, |
"^$slot_name\0"); |
"^$slot_name\0"); |
|
my ($tmp) = %consumed; |
|
if ($tmp =~ /error: 2/) { undef(%consumed); } |
|
|
if (%slot && !%consumed) { |
if (%slot && !%consumed) { |
$slot{'type'} = 'deleted'; |
$slot{'type'} = 'deleted'; |
Line 524 STUFF
|
Line 526 STUFF
|
} |
} |
|
|
sub to_show { |
sub to_show { |
my ($when,$slot) = @_; |
my ($slot,$when,$deleted) = @_; |
my $time=time; |
my $time=time; |
my $week=60*60*24*7; |
my $week=60*60*24*7; |
if ($when eq 'now') { |
if ($deleted eq 'hide' && $slot->{'type'} eq 'deleted') { |
|
return 0; |
|
} |
|
if ($when eq 'any') { |
|
return 1; |
|
} elsif ($when eq 'now') { |
if ($time > $slot->{'starttime'} && |
if ($time > $slot->{'starttime'} && |
$time < $slot->{'endtime'}) { |
$time < $slot->{'endtime'}) { |
return 1; |
return 1; |
Line 605 sub show_table {
|
Line 612 sub show_table {
|
$r->print('</div>'); |
$r->print('</div>'); |
} |
} |
|
|
my %Saveable_Parameters = ('show' => 'array', |
my %Saveable_Parameters = ('show' => 'array', |
'when' => 'scalar', |
'when' => 'scalar', |
'order' => 'scalar'); |
'order' => 'scalar', |
|
'deleted' => 'scalar', |
|
); |
&Apache::loncommon::store_course_settings('slotrequest',\%Saveable_Parameters); |
&Apache::loncommon::store_course_settings('slotrequest',\%Saveable_Parameters); |
&Apache::loncommon::restore_course_settings('slotrequest',\%Saveable_Parameters); |
&Apache::loncommon::restore_course_settings('slotrequest',\%Saveable_Parameters); |
|
|
Line 620 sub show_table {
|
Line 628 sub show_table {
|
'endtime' => 'End Time', |
'endtime' => 'End Time', |
'startreserve' => 'Time students can start reserving', |
'startreserve' => 'Time students can start reserving', |
'secret' => 'Secret Word', |
'secret' => 'Secret Word', |
'maxspace' => 'Maxium # of students', |
'maxspace' => 'Maximum # of students', |
'ip' => 'IP or DNS restrictions', |
'ip' => 'IP or DNS restrictions', |
'symb' => 'Resource slot is restricted to.', |
'symb' => 'Resource slot is restricted to.', |
'uniqueperiod' => 'Period of time slot is unique', |
'uniqueperiod' => 'Period of time slot is unique', |
Line 634 sub show_table {
|
Line 642 sub show_table {
|
my %show = map { $_ => 1 } (@show); |
my %show = map { $_ => 1 } (@show); |
|
|
my %when_fields=&Apache::lonlocal::texthash( |
my %when_fields=&Apache::lonlocal::texthash( |
'now' => 'Open now', |
'now' => 'Open now', |
'nextweek' => 'Open within the next week', |
'nextweek' => 'Open within the next week', |
'lastweek' => 'Were open last week', |
'lastweek' => 'Were open last week', |
'willopen' => 'Will open later', |
'willopen' => 'Will open later', |
'wereopen' => 'Were open'); |
'wereopen' => 'Were open', |
my @when_order=('now','nextweek','lastweek','willopen','wereopen'); |
'any' => 'Anytime', |
|
); |
|
my @when_order=('any','now','nextweek','lastweek','willopen','wereopen'); |
$when_fields{'select_form_order'} = \@when_order; |
$when_fields{'select_form_order'} = \@when_order; |
my $when = (exists($env{'form.when'})) ? $env{'form.when'} |
my $when = (exists($env{'form.when'})) ? $env{'form.when'} |
: 'now'; |
: 'now'; |
|
|
|
my $hide_radio = |
|
&Apache::lonhtmlcommon::radio('deleted',$env{'form.deleted'},'hide'); |
|
my $show_radio = |
|
&Apache::lonhtmlcommon::radio('deleted',$env{'form.deleted'},'show'); |
|
|
$r->print('<form method="POST" action="/adm/slotrequest"> |
$r->print('<form method="POST" action="/adm/slotrequest"> |
<input type="hidden" name="command" value="showslots" />'); |
<input type="hidden" name="command" value="showslots" />'); |
$r->print('<div>'); |
$r->print('<div>'); |
$r->print('<table class="inline"><tr><th>'.&mt('Show').'</th><th>'.&mt('Open').'</th></tr><tr><td>'.&Apache::loncommon::multiple_select_form('show',\@show,6,\%show_fields,\@show_order). |
$r->print('<table class="inline"> |
'</td><td>'.&Apache::loncommon::select_form($when,'when',%when_fields). |
<tr><th>'.&mt('Show').'</th> |
'</td></tr></table>'); |
<th>'.&mt('Open').'</th> |
|
<th>'.&mt('Options').'</th> |
|
</tr> |
|
<tr><td>'.&Apache::loncommon::multiple_select_form('show',\@show,6,\%show_fields,\@show_order). |
|
'</td> |
|
<td>'.&Apache::loncommon::select_form($when,'when',%when_fields). |
|
'</td> |
|
<td> |
|
<table> |
|
<tr> |
|
<td rowspan="2">Deleted slots:</td> |
|
<td><label>'.$show_radio.'Show</label></td> |
|
</tr> |
|
<tr> |
|
<td><label>'.$hide_radio.'Hide</label></td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
</table>'); |
$r->print('</div>'); |
$r->print('</div>'); |
$r->print('<p><input type="submit" name="start" value="'.&mt('Update Display').'" /></p>'); |
$r->print('<p><input type="submit" name="start" value="'.&mt('Update Display').'" /></p>'); |
my $linkstart='<a href="/adm/slotrequest?command=showslots&order='; |
my $linkstart='<a href="/adm/slotrequest?command=showslots&order='; |
Line 691 sub show_table {
|
Line 725 sub show_table {
|
return $slots{$a}->{'starttime'} <=> $slots{$b}->{'starttime'}; |
return $slots{$a}->{'starttime'} <=> $slots{$b}->{'starttime'}; |
}; |
}; |
foreach my $slot (sort $slotsort (keys(%slots))) { |
foreach my $slot (sort $slotsort (keys(%slots))) { |
if (!&to_show($when,$slots{$slot})) { next; } |
if (!&to_show($slots{$slot},$when,$env{'form.deleted'})) { next; } |
if (defined($slots{$slot}->{'type'}) |
if (defined($slots{$slot}->{'type'}) |
&& $slots{$slot}->{'type'} ne 'schedulable_student') { |
&& $slots{$slot}->{'type'} ne 'schedulable_student') { |
#next; |
#next; |
Line 700 sub show_table {
|
Line 734 sub show_table {
|
my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, |
my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, |
"^$slot\0"); |
"^$slot\0"); |
my $ids; |
my $ids; |
foreach my $entry (sort(keys(%consumed))) { |
|
my (undef,$id)=split("\0",$entry); |
my ($tmp)=%consumed; |
my ($uname,$udom) = split('@',$consumed{$entry}{'name'}); |
if ($tmp !~ /^error: /) { |
my $name = &Apache::loncommon::plainname($uname,$udom); |
foreach my $entry (sort(keys(%consumed))) { |
$ids.= '<nobr>'.$name.&remove_link($slot,$entry,$uname,$udom, |
my (undef,$id)=split("\0",$entry); |
$consumed{$entry}{'symb'}) |
my ($uname,$udom) = split('@',$consumed{$entry}{'name'}); |
.'</nobr><br />'; |
my $name = &Apache::loncommon::plainname($uname,$udom); |
|
$ids.= '<nobr>'.$name.&remove_link($slot,$entry,$uname,$udom, |
|
$consumed{$entry}{'symb'}) |
|
.'</nobr><br />'; |
|
} |
} |
} |
|
|
my $start=($slots{$slot}->{'starttime'}? |
my $start=($slots{$slot}->{'starttime'}? |
Line 1097 sub handler {
|
Line 1135 sub handler {
|
} else { |
} else { |
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); |
if ($res !~ /\.task$/) { |
my $useslots = &Apache::lonnet::EXT("resource.0.useslots",$symb); |
|
if ($useslots ne 'resource') { |
&fail($r,'not_valid'); |
&fail($r,'not_valid'); |
return OK; |
return OK; |
} |
} |
$env{'request.symb'}=$symb; |
$env{'request.symb'}=$symb; |
my ($status) = &Apache::lonhomework::check_task_access('0'); |
my $type = ($res =~ /\.task$/) ? 'Task' |
|
: 'problem'; |
|
my ($status) = &Apache::lonhomework::check_slot_access('0',$type); |
if ($status eq 'CAN_ANSWER' || |
if ($status eq 'CAN_ANSWER' || |
$status eq 'NEEDS_CHECKIN' || |
$status eq 'NEEDS_CHECKIN' || |
$status eq 'WAITING_FOR_GRADE') { |
$status eq 'WAITING_FOR_GRADE') { |