--- loncom/html/adm/helper/newslot.helper 2005/10/14 22:17:33 1.3 +++ loncom/html/adm/helper/newslot.helper 2005/11/02 22:07:52 1.7 @@ -1,5 +1,29 @@ + + if (!exists($helper->{'VARS'}{'name'}) || + $helper->{'VARS'}{'name'} !~ /\S/) { + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); + if (exists($env{'form.name'}) || + $env{'form.name'} =~ /\S/) { + $helper->{'VARS'}{'name'}=$env{'form.name'}; + } + } + $helper->{DATA}{origslot} = sub { + my ($which,$default)=@_; + if (!exists($helper->{'VARS'}{'name'}) || + $helper->{'VARS'}{'name'} !~ /\S/) { + return $default; + } + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $name=$helper->{'VARS'}{'name'}; + my %slot=&Apache::lonnet::get('slots', [$name], $cdom, $cnum); + if (!ref($slot{$name})) { return $default; } + if (!exists($slot{$name}{$which})) { return $default; } + return $slot{$name}{$which}; + } + Name:
    @@ -11,23 +35,34 @@ if ($val=~/\s$/) { return 'Must not contain spaces'; } return undef; + + return $helper->{'VARS'}{'name'}; +
Start time:
   
- + + + return &{$helper->{DATA}{origslot}}('starttime'); + +
End time:
   
- + + + return &{$helper->{DATA}{origslot}}('endtime'); + +
Type:
Instructor asssignable. - Student selectable. + Student selectable. - return 'preassigned'; + return &{$helper->{DATA}{origslot}}('type','preassigned');
@@ -38,26 +73,69 @@

Description:
    - - - -

Time students can start reserving:
    - - - - 'anytime' - - - -

Maxium number of students allowed in this slot:
    - - - - - if ($val ne '' && $val=~/\D/) { return 'Must be numeric.'; } - return undef; - + + + return &{$helper->{DATA}{origslot}}('description'); + + + $helper->{'VARS'}{'type'} eq 'schedulable_student' + + +

Time students can start reserving:
    + + + + + return &{$helper->{DATA}{origslot}}('startreserve','anytime'); + + + + +

Maxium number of students allowed in this slot:
    + + + + + if ($val ne '' && $val=~/\D/) { return 'Must be numeric.'; } + return undef; + + + return &{$helper->{DATA}{origslot}}('maxspace'); + + + + +

Period of time in which this slot is can only be uniquely chosen:
   Start: + + + + + my $default=&{$helper->{DATA}{origslot}}('uniqueperiod','anytime'); + if ($default eq 'anytime') { return 'anytime' }; + if (ref($default)) { return $default->[0]; } + return 'anytime'; + + +
   End:
+ + + my $default=&{$helper->{DATA}{origslot}}('uniqueperiod','anytime'); + if ($default eq 'anytime') { return 'anytime' }; + if (ref($default)) { return $default->[1]; } + return 'anytime'; + + + + + $helper->{'VARS'}{'type'} eq 'preassigned' + + delete($helper->{'VARS'}{'startreserve'}); + delete($helper->{'VARS'}{'maxspace'}); + delete($helper->{'VARS'}{'startunique'}); + delete($helper->{'VARS'}{'endunique'}); + +

Secret word proctors use to checkin users:
    @@ -67,28 +145,23 @@ return undef; + + return &{$helper->{DATA}{origslot}}('secret'); + -

Period of time in which this slot is can only be uniquely chosen:
   Start: - - - - 'anytime' - -
   End:
- - 'anytime' - - -

Slot is: - usable for any resource. + usable for any resource. restricted to a specific resource. - 'any' + + my $default=&{$helper->{DATA}{origslot}}('symb'); + if ($default) { return 'resource'; } + return 'any'; + @@ -99,6 +172,9 @@ return undef; + + return &{$helper->{DATA}{origslot}}('ip'); +

@@ -106,9 +182,26 @@ return $res->is_problem() return $res->symb() - FINISH + PROCTOR + + return &{$helper->{DATA}{origslot}}('symb'); + + + + + my @defaults; + my $default=&{$helper->{DATA}{origslot}}('proctor'); + if ($default) { + $default=~ tr/@/:/; + @defaults=(split(',',$default)); + } + return @defaults; + + + Created Slot @@ -119,7 +212,7 @@ foreach my $which ('type','starttime','endtime') { $slot{$which} = $helper->{'VARS'}{$which}; } - foreach my $which ('ip','proctor','description','maxspace', + foreach my $which ('ip','description','maxspace', 'secret','symb') { if ( $helper->{'VARS'}{$which} =~/\S/ ) { $slot{$which} = $helper->{'VARS'}{$which}; @@ -130,25 +223,38 @@ $slot{'uniqueperiod'} = [$helper->{'VARS'}{'startunique'}, $helper->{'VARS'}{'endunique'}]; } + if ( $helper->{'VARS'}{'proctor'} =~/\S/ ) { + my @names; + foreach my $user (split(/\|\|\|/, $helper->{'VARS'}{'proctor'})) { + my ($uname,$udomain)=split(/:/,$user); + push(@names,"$uname\@$udomain"); + } + $slot{'proctor'}=join(',',@names); + } my $cname = $env{'course.'.$env{'request.course.id'}.'.num'}; my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $ret = &Apache::lonnet::cput('slots', {$helper->{'VARS'}{'name'} => \%slot}, $cdom,$cname); - $result.="\n".'
  • Name: '.&HTML::Entities::encode($slot{name}).'
  • '. - "\n".'
  • Starts: '.&Apache::lonlocal::locallocaltime($slot{start}).'
  • '. - "\n".'
  • Ends: '.&Apache::lonlocal::locallocaltime($slot{end}).'
  • '. + $result.="\n ".'Name: '.&HTML::Entities::encode($helper->{'VARS'}{'name'}).''. + "\n".'
  • Starts: '.&Apache::lonlocal::locallocaltime($slot{'starttime'}).'
  • '. + "\n".'
  • Ends: '.&Apache::lonlocal::locallocaltime($slot{'endtime'}).'
  • '. "\n".'
  • Type: '.$slot{'type'}.'
  • '; my %labels = map {($_->[0],$_->[1])} &Apache::slotrequest::csvupload_fields(); - foreach my $which ('ip','proctor','description','maxspace', - 'secret','symb') { + foreach my $which ('ip','description','maxspace','secret','symb') { if (exists($slot{$which})) { $result.="\n".'
  • '.$labels{$which}.': '. &HTML::Entities::encode($slot{$which}).'
  • '; } } + if (exists($slot{'proctor'})) { + my $proctors = $slot{'proctor'}; + $proctors =~ s/,/, /g; + $result.="\n".'
  • '.$labels{'proctor'}.': '. + &HTML::Entities::encode($proctors).'
  • '; + } if (exists($slot{'uniqueperiod'})) { $result.= "\n".'
  • '.$labels{'uniqueperiod'}.': '. @@ -159,7 +265,7 @@ } return $result; - /adm/flip?postdata=return: + /adm/slotrequest?command=showslots