--- loncom/html/adm/helper/newslot.helper 2023/07/07 04:12:23 1.30.4.1.4.1 +++ loncom/html/adm/helper/newslot.helper 2015/09/27 22:35:50 1.32 @@ -26,32 +26,8 @@ my $name=$helper->{VARS}{'origname'}; my %slot=&Apache::lonnet::get('slots', [$name], $cdom, $cnum); if (!ref($slot{$name})) { return $default; } - if (($which eq 'ipdeny') || ($which eq 'ipallow')) { - if (!exists($slot{$name}{'ip'})) { return $default; } - } else { - if (!exists($slot{$name}{$which})) { return $default; } - } - if (($which eq 'ipdeny') || ($which eq 'ipallow')) { - my @allows; - my @denies; - foreach my $item (split(',',$slot{$name}{'ip'})) { - $item =~ s/^\s*//; - $item =~ s/\s*$//; - if ($item =~ /^\!(.+)$/) { - push(@denies,$1); - } else { - push(@allows,$item); - } - } - if ($which eq 'ipdeny') { - return join(',',@denies); - } - if ($which eq 'ipallow') { - return join(',',@allows); - } - } else { - return $slot{$name}{$which}; - } + if (!exists($slot{$name}{$which})) { return $default; } + return $slot{$name}{$which}; } @@ -208,34 +184,11 @@ delete($helper->{'VARS'}{'startreserve'}); delete($helper->{'VARS'}{'endreserve'}); delete($helper->{'VARS'}{'maxspace'}); + delete($helper->{'VARS'}{'startunique'}); + delete($helper->{'VARS'}{'endunique'}); - -

Period of time when this slot can only be uniquely assigned:
   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'; - - - if (defined($val) && $val < $helper->{'VARS'}{'startunique'}) { - return 'End time must be later than the start time.'; - } - return undef; - - +

Proctored access: @@ -267,37 +220,37 @@ usable for any resource. - restricted to a specific resource. + restricted to resources in specific folder(s)/composite page(s). + restricted to specific resource(s). my $default=&{$helper->{DATA}{origslot}}('symb'); - if ($default) { return 'resource'; } - return 'any'; + if ($default) { + my @symbs; + if ($default =~ /,/) { + @symbs = split(/\s*,\s*/,$default); + } else { + @symbs = ($default); + } + if (grep(/\.(page|sequence)$/,@symbs)) { + return 'map'; + } else { + return 'resource'; + } + } else { + return 'any'; + } - - -

IP restrictions -- allow from all except:
    - - - - - return undef; - - - return &{$helper->{DATA}{origslot}}('ipdeny'); - - - + -

IP restrictions -- deny from all except:
    +

IP restrictions:
    - - + return undef; - return &{$helper->{DATA}{origslot}}('ipallow'); + return &{$helper->{DATA}{origslot}}('ip');

@@ -308,15 +261,38 @@ PROCTOR - - return $res->is_problem() + + return $res->is_map() || $res->is_problem() + return $res->is_problem() return $res->symb() - return &{$helper->{DATA}{origslot}}('symb'); + my @defaults; + my $default=&{$helper->{DATA}{origslot}}('symb'); + if ($default) { + @defaults=(split(/\s*,\s*/,$default)); + } + return @defaults; + + + PROCTOR + + + return $res->is_map() + return $res->symb() + + my @defaults; + my $default=&{$helper->{DATA}{origslot}}('symb'); + if ($default) { + @defaults=(split(/\s*,\s*/,$default)); + } + return @defaults; + + + @@ -355,16 +331,16 @@
- Select sections to limit slot availability to:
    +

Select sections to limit slot availability to:

   
- return join('|||', + return join('|||', split(',',&{$helper->{DATA}{origslot}}('allowedsections')));
- Select users to limit slot availability to:
    +

Select users to limit slot availability to:

   
@@ -387,32 +363,12 @@ $slot{$which} = $helper->{'VARS'}{$which}; } - foreach my $which ('description','maxspace','secret','symb') { + foreach my $which ('ip','description','maxspace','secret') { if ( $helper->{'VARS'}{$which} =~/\S/ ) { $slot{$which} = $helper->{'VARS'}{$which}; } } - if ($helper->{'VARS'}{'ipdeny'} =~/\S/ ) { - foreach my $item (split(',',$helper->{'VARS'}{'ipdeny'})) { - $item =~ s/^\s*//; - $item =~ s/\s*$//; - $slot{'ip'} .= '!'.$item.','; - } - } - - if ($helper->{'VARS'}{'ipallow'} =~/\S/ ) { - foreach my $item (split(',',$helper->{'VARS'}{'ipallow'})) { - $item =~ s/^\s*//; - $item =~ s/\s*$//; - $slot{'ip'} .= $item.','; - } - } - - if ($slot{'ip'} ne '') { - $slot{'ip'} =~s /,$//; - } - if ($helper->{'VARS'}{'type'} eq 'schedulable_student') { if (($helper->{'VARS'}{'reservationmsg'} eq 'only_student') || ($helper->{'VARS'}{'reservationmsg'} eq 'student_and_user_notes_screen')) { @@ -422,6 +378,17 @@ } } + if (($helper->{'VARS'}{'restricttosymb'} =~ /^(map|resource)$/) && + ($helper->{'VARS'}{'symb'} =~ /\S/)) { + my @symbs; + foreach my $symb (split(/\|\|\|/, $helper->{'VARS'}{'symb'})) { + push(@symbs,$symb); + } + # make sure the symbs are unique + my %symbs = map { ($_,1) } @symbs; + $slot{'symb'}=join(',',sort(keys(%symbs))); + } + if ( $helper->{'VARS'}{'startreserve'} > 0) { $slot{'startreserve'} = $helper->{'VARS'}{'startreserve'}; } @@ -445,7 +412,7 @@ my ($uname,$udomain)=split(/:/,$user); push(@names,"$uname:$udomain"); } - # make sure the usernmaes are unique + # make sure the usernames are unique my %proctors = map { ($_,1) } @names; $slot{'proctor'}=join(',',sort(keys(%proctors))); } @@ -486,13 +453,26 @@ "\n".'
  • Type: '.$slot{'type'}.'
  • '; my %labels = map {($_->[0],$_->[1])} &Apache::slotrequest::csvupload_fields(); - foreach my $which ('ip','description','maxspace','secret','symb', + foreach my $which ('ip','description','maxspace','secret', 'allowedsections','allowedusers') { if (exists($slot{$which})) { $result.="\n".'
  • '.$labels{$which}.': '. &HTML::Entities::encode($slot{$which}).'
  • '; } } + if (exists($slot{'symb'})) { + $result.="\n".'
  • '.$labels{'symb'}.': '; + if ($slot{'symb'} =~ /,/) { + $result.=''; + } else { + $result.=&HTML::Entities::encode($slot{'symb'}); + } + $result.='
  • '; + } if (exists($slot{'startreserve'})) { $result.="\n".'
  • '.$labels{'startreserve'}.': '. &Apache::lonlocal::locallocaltime($slot{'startreserve'}).'
  • ';