--- loncom/html/adm/helper/newslot.helper 2006/03/07 16:29:14 1.14 +++ loncom/html/adm/helper/newslot.helper 2015/09/23 23:05:04 1.31 @@ -1,5 +1,6 @@ - + OPTIONAL @@ -30,7 +31,7 @@ } - Name:
    +
Name:
   
@@ -64,12 +65,18 @@ return &{$helper->{DATA}{origslot}}('endtime'); + + if ($val < $helper->{'VARS'}{'starttime'}) { + return 'End time must be later than the start time.'; + } + return undef; +
Type:
- Instructor asssignable. + Instructor assignable. Student selectable. return &{$helper->{DATA}{origslot}}('type','preassigned'); @@ -78,7 +85,8 @@
- +

Description:
    @@ -96,9 +104,29 @@ return &{$helper->{DATA}{origslot}}('startreserve','anytime'); + + if (defined($val) && $val > $helper->{'VARS'}{'starttime'}) { + return 'Reservation time must come before the slot has started.'; + } + return undef; + + + +

Time students can no longer reserve:
    + + + + return &{$helper->{DATA}{origslot}}('endreserve','anytime'); + + + if (defined($val) && $val > $helper->{'VARS'}{'starttime'}) { + return 'Reservation end time must come before the slot has started.'; + } + return undef; + -

Maxium number of students allowed in this slot:
    +

Maximum number of students allowed in this slot:
    @@ -110,7 +138,7 @@ -

Period of time in which this slot is can only be uniquely chosen:
   Start: +

Period of time when this slot can only be uniquely chosen:
   Start: @@ -128,17 +156,52 @@ if (ref($default)) { return $default->[1]; } return 'anytime'; + + if (defined($val) && $val < $helper->{'VARS'}{'startunique'}) { + return 'End time must be later than the start time.'; + } + return undef; + + +

Message(s) triggered by reservation change by student + + + Sent to student + Sent to student and added to user notes + None sent and no record in user notes + + my $default=&{$helper->{DATA}{origslot}}('reservationmsg'); + if ($default eq 'only_student') { return $default; } + if ($default eq 'student_and_user_notes_screen') { return $default; } + return 'none'; + + $helper->{'VARS'}{'type'} eq 'preassigned' delete($helper->{'VARS'}{'startreserve'}); + delete($helper->{'VARS'}{'endreserve'}); delete($helper->{'VARS'}{'maxspace'}); delete($helper->{'VARS'}{'startunique'}); delete($helper->{'VARS'}{'endunique'}); + + +

Proctored access: + + + No proctor checkin required for access. + Require proctored checkin for access. + + my $default=&{$helper->{DATA}{origslot}}('proctor'); + if ($default) { return 'yes'; } + return 'no'; + + +

Secret word proctors use to checkin users:
    @@ -153,15 +216,26 @@

Slot is: + + usable for any resource. + restricted to resources in a specific folder/composite page. restricted to a specific resource. my $default=&{$helper->{DATA}{origslot}}('symb'); - if ($default) { return 'resource'; } - return 'any'; + if ($default) { + if ($default =~ /\.(page|sequence)$/) { + return 'map'; + } else { + return 'resource'; + } + } else { + return 'any'; + } +

IP restrictions:
    @@ -190,23 +264,35 @@ + - + PROCTOR - FINISH + + return $res->is_map() + return $res->symb() + + return &{$helper->{DATA}{origslot}}('symb'); + + + - - $helper->{'VARS'}{'type'} eq 'schedulable_student' - RESTRICTUSER - + + + + $helper->{'VARS'}{'useproctor'} eq 'no' + RESTRICTUSER + + + RESTRICTUSER + activeonly="1" emptyallowed="0"> my @defaults; my $default=&{$helper->{DATA}{origslot}}('proctor'); if ($default) { - $default=~ tr/@/:/; @defaults=(split(',',$default)); } return @defaults; @@ -215,7 +301,13 @@ - + + + $helper->{'VARS'}{'type'} ne 'schedulable_student' + FINISH + + FINISH

Slots are by default available to all users in a course, if you would like this slot to be restricted to a subset of users you can specify restrictions.

@@ -242,7 +334,7 @@
- + Created Slot @@ -260,23 +352,39 @@ } } + if ($helper->{'VARS'}{'type'} eq 'schedulable_student') { + if (($helper->{'VARS'}{'reservationmsg'} eq 'only_student') || + ($helper->{'VARS'}{'reservationmsg'} eq 'student_and_user_notes_screen')) { + $slot{'reservationmsg'} = $helper->{'VARS'}{'reservationmsg'}; + } else { + $slot{'reservationmsg'} = 'none'; + } + } + if ( $helper->{'VARS'}{'startreserve'} > 0) { $slot{'startreserve'} = $helper->{'VARS'}{'startreserve'}; } + if ( $helper->{'VARS'}{'endreserve'} > 0) { + $slot{'endreserve'} = $helper->{'VARS'}{'endreserve'}; + } + if ( $helper->{'VARS'}{'startunique'} > 0 && $helper->{'VARS'}{'endunique'} > 0 ) { $slot{'uniqueperiod'} = [$helper->{'VARS'}{'startunique'}, $helper->{'VARS'}{'endunique'}]; } - if ( $helper->{'VARS'}{'proctor'} =~/\S/ ) { + if ( $helper->{'VARS'}{'useproctor'} eq 'yes' + && $helper->{'VARS'}{'proctor'} =~/\S/ ) { my @names; + # just need the username/domain throw away the other data + # that returns foreach my $user (split(/\|\|\|/, $helper->{'VARS'}{'proctor'})) { my ($uname,$udomain)=split(/:/,$user); - push(@names,"$uname\@$udomain"); + push(@names,"$uname:$udomain"); } - # make sure the usenrmaes are unique + # make sure the usernmaes are unique my %proctors = map { ($_,1) } @names; $slot{'proctor'}=join(',',sort(keys(%proctors))); } @@ -288,8 +396,9 @@ } if ( $helper->{'VARS'}{'allowedusers'} =~/\S/ ) { - my @names; + # just need the username/domain throw away the other data + # that returns foreach my $item (split(/\|\|\|/, $helper->{'VARS'}{'allowedusers'})) { my ($uname,$udomain)=split(/:/,$item); @@ -307,6 +416,9 @@ my $ret = &Apache::lonnet::cput('slots', {$helper->{'VARS'}{'name'} => \%slot}, $cdom,$cname); + if ($ret eq 'ok') { + &Apache::lonnet::devalidate_slots_cache($cname,$cdom); + } $result.="\n ".'Name: '.&HTML::Entities::encode($helper->{'VARS'}{'name'}).''. "\n".'
  • Starts: '.&Apache::lonlocal::locallocaltime($slot{'starttime'}).'
  • '. "\n".'
  • Ends: '.&Apache::lonlocal::locallocaltime($slot{'endtime'}).'
  • '. @@ -324,6 +436,18 @@ $result.="\n".'
  • '.$labels{'startreserve'}.': '. &Apache::lonlocal::locallocaltime($slot{'startreserve'}).'
  • '; } + + if (exists($slot{'endreserve'})) { + $result.="\n".'
  • '.$labels{'endreserve'}.': '. + &Apache::lonlocal::locallocaltime($slot{'endreserve'}).'
  • '; + } + + if (exists($slot{'reservationmsg'})) { + my %options = &Apache::slotrequest::slot_reservationmsg_options(); + $result.="\n".'
  • '.$labels{'reservationmsg'}.': '. + $options{$slot{'reservationmsg'}}.'
  • '; + } + if (exists($slot{'proctor'})) { my $proctors = $slot{'proctor'}; $proctors =~ s/,/, /g;