--- loncom/interface/slotrequest.pm 2005/11/21 18:55:41 1.33 +++ loncom/interface/slotrequest.pm 2005/11/21 21:20:06 1.35 @@ -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.33 2005/11/21 18:55:41 albertel Exp $ +# $Id: slotrequest.pm,v 1.35 2005/11/21 21:20:06 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -316,6 +316,38 @@ sub release_slot { return 1; } +sub delete_slot { + my ($r)=@_; + + my $slot_name = $env{'form.slotname'}; + my %slot=&Apache::lonnet::get_slot($slot_name); + + my ($cnum,$cdom)=&get_course(); + my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum, + "^$slot_name\0"); + + if (%slot && !%consumed) { + $slot{'type'} = 'deleted'; + my $ret = &Apache::lonnet::cput('slots', {$slot_name => \%slot}, + $cdom, $cnum); + if ($ret eq 'ok') { + $r->print("

Slot $slot_name marked as deleted.

"); + } else { + $r->print("

An error ($ret) occurse when attempting to delete Slot $slot_name.

"); + } + } else { + if (%consumed) { + $r->print("

Slot $slot_name has active reservations.

"); + } else { + $r->print("

Slot $slot_name does not exist.

"); + } + } + $r->print('

'. + &mt('Return to slot list').'

'); + $r->print('

'. + &mt('Return to last resource').'

'); +} + sub get_slot { my ($r,$symb)=@_; @@ -492,10 +524,15 @@ STUFF } sub to_show { - my ($when,$slot) = @_; + my ($slot,$when,$deleted) = @_; my $time=time; 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'} && $time < $slot->{'endtime'}) { return 1; @@ -573,10 +610,11 @@ sub show_table { $r->print(''); } - my %Saveable_Parameters = ('show' => 'array', - 'when' => 'scalar', - 'order' => 'scalar'); - + my %Saveable_Parameters = ('show' => 'array', + 'when' => 'scalar', + 'order' => 'scalar', + 'deleted' => 'scalar', + ); &Apache::loncommon::store_course_settings('slotrequest',\%Saveable_Parameters); &Apache::loncommon::restore_course_settings('slotrequest',\%Saveable_Parameters); @@ -602,22 +640,48 @@ sub show_table { my %show = map { $_ => 1 } (@show); my %when_fields=&Apache::lonlocal::texthash( - 'now' => 'Open now', + 'now' => 'Open now', 'nextweek' => 'Open within the next week', 'lastweek' => 'Were open last week', 'willopen' => 'Will open later', - 'wereopen' => 'Were open'); - my @when_order=('now','nextweek','lastweek','willopen','wereopen'); + 'wereopen' => 'Were open', + 'any' => 'Anytime', + ); + my @when_order=('any','now','nextweek','lastweek','willopen','wereopen'); $when_fields{'select_form_order'} = \@when_order; my $when = (exists($env{'form.when'})) ? $env{'form.when'} : '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('
'); $r->print('
'); - $r->print('
'.&mt('Show').''.&mt('Open').'
'.&Apache::loncommon::multiple_select_form('show',\@show,6,\%show_fields,\@show_order). - ''.&Apache::loncommon::select_form($when,'when',%when_fields). - '
'); + $r->print(' + + + + + + + + +
'.&mt('Show').''.&mt('Open').''.&mt('Options').'
'.&Apache::loncommon::multiple_select_form('show',\@show,6,\%show_fields,\@show_order). + ''.&Apache::loncommon::select_form($when,'when',%when_fields). + ' + + + + + + + + +
Deleted slots:
+
'); $r->print('
'); $r->print('

'); my $linkstart='Edit EDITLINK - - $r->print("\n$edit\n"); + + my $delete=(<<"DELETELINK"); +Delete +DELETELINK + if ($ids ne '') { undef($delete); } + + $r->print("\n$edit $delete\n"); if (exists($show{'name'})) { $colspan++;$r->print("$slot"); } @@ -1040,6 +1109,8 @@ sub handler { &remove_registration($r); } elsif ($env{'form.command'} eq 'release' && $mgr eq 'F') { &release_slot($r,undef,undef,undef,$mgr); + } elsif ($env{'form.command'} eq 'delete' && $mgr eq 'F') { + &delete_slot($r); } elsif ($env{'form.command'} eq 'uploadstart' && $mgr eq 'F') { &upload_start($r); } elsif ($env{'form.command'} eq 'csvuploadmap' && $mgr eq 'F') {