Diff for /loncom/html/adm/helper/newslot.helper between versions 1.30.4.1 and 1.36

version 1.30.4.1, 2018/06/27 14:35:09 version 1.36, 2023/07/07 03:52:41
Line 26 Line 26
   my $name=$helper->{VARS}{'origname'};    my $name=$helper->{VARS}{'origname'};
   my %slot=&Apache::lonnet::get('slots', [$name], $cdom, $cnum);    my %slot=&Apache::lonnet::get('slots', [$name], $cdom, $cnum);
   if (!ref($slot{$name})) { return $default; }    if (!ref($slot{$name})) { return $default; }
   if (!exists($slot{$name}{$which})) { return $default; }            if (($which eq 'ipdeny') || ($which eq 'ipallow')) {
   return $slot{$name}{$which};                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};
             }
       }        }
     </exec>      </exec>
     <message>      <message>
Line 243 Line 267
   
     <choices variable="restricttosymb">      <choices variable="restricttosymb">
       <choice nextstate="PROCTOR" computer='any'>usable for any resource.</choice>        <choice nextstate="PROCTOR" computer='any'>usable for any resource.</choice>
       <choice nextstate="RESOURCESELECT" computer='resource'>restricted to a specific resource.</choice>        <choice nextstate="MAPSELECT" computer='map'>restricted to resources in specific folder(s)/composite page(s).</choice>
         <choice nextstate="RESOURCESELECT" computer='resource'>restricted to specific resource(s).</choice>
       <defaultvalue>        <defaultvalue>
         my $default=&{$helper->{DATA}{origslot}}('symb');          my $default=&{$helper->{DATA}{origslot}}('symb');
         if ($default) { return 'resource'; }          if ($default) {
         return 'any';              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';
           }
       </defaultvalue>        </defaultvalue>
     </choices>      </choices>
   
       <message>
           </p><p>IP restrictions -- allow from all except: <br />&nbsp;&nbsp;&nbsp;
       </message>
   
       <string variable="ipdeny" size="30">
         <validator>
             return undef;
         </validator>
         <defaultvalue>
           return &{$helper->{DATA}{origslot}}('ipdeny');
         </defaultvalue>
       </string>
           
     <message>      <message>
  </p><p>IP restrictions:<br />&nbsp;&nbsp;&nbsp;         </p><p>IP restrictions -- deny from all except: <br />&nbsp;&nbsp;&nbsp;      
     </message>      </message>
     <string variable="ip" size="30">  
       <string variable="ipallow" size="30">
       <validator>        <validator>
           return undef;            return undef;
       </validator>        </validator>
       <defaultvalue>        <defaultvalue>
         return &{$helper->{DATA}{origslot}}('ip');          return &{$helper->{DATA}{origslot}}('ipallow');
       </defaultvalue>        </defaultvalue>
     </string>      </string>
   
       <message>
         </p><p>Does each student need to use a unique IP address to access a resource with this slot?</p>
       </message>
       <choices variable="iptied">
         <choice computer='no'>No. The student's IP address is not tied for later access to the same resource. </choice>
         <choice computer='yes'>Yes. The IP address on a student's first access to a resource is tied for later access.</choice>
         <choice computer='answer'>Yes. The IP address on a student's first access to a resource is tied for later access (including post-answer date).</choice>
         <defaultvalue>
           my $default=&{$helper->{DATA}{origslot}}('iptied');
           if ($default eq 'yes') { return 'yes'; }
           if ($default eq 'answer') { return 'answer'; }
           return 'no';
         </defaultvalue>
       </choices>
     <message>  </p>  </message>      <message>  </p>  </message>
   </state>    </state>
   
Line 270 Line 337
   
     <nextstate>PROCTOR</nextstate>      <nextstate>PROCTOR</nextstate>
   
     <resource variable="symb">      <resource variable="symb" multichoice="1">
       <filterfunc>return $res->is_problem()</filterfunc>        <filterfunc>return $res->is_map() || $res->is_problem() || $res->is_tool()</filterfunc>
         <choicefunc>return $res->is_problem() || || $res->is_tool()</choicefunc>
       <valuefunc>return $res->symb()</valuefunc>        <valuefunc>return $res->symb()</valuefunc>
       <defaultvalue>        <defaultvalue>
         return &{$helper->{DATA}{origslot}}('symb');          my @defaults;
           my $default=&{$helper->{DATA}{origslot}}('symb');
           if ($default) {
               @defaults=(split(/\s*,\s*/,$default));
           }
           return @defaults;
       </defaultvalue>        </defaultvalue>
     </resource>          </resource>    
   </state>    </state>
   
     <state name="MAPSELECT" title="Specify Optional Attributes">
   
       <nextstate>PROCTOR</nextstate>
   
       <resource variable="symb" multichoice="1">
         <filterfunc>return $res->is_map()</filterfunc>
         <valuefunc>return $res->symb()</valuefunc>
         <defaultvalue>
           my @defaults;
           my $default=&{$helper->{DATA}{origslot}}('symb');
           if ($default) {
               @defaults=(split(/\s*,\s*/,$default));
           }
           return @defaults;
         </defaultvalue>
       </resource>
     </state>
   
   <state name="PROCTOR" title="Specify Proctors"    <state name="PROCTOR" title="Specify Proctors"
  help="Slot_SpecifyProctors">   help="Slot_SpecifyProctors">
Line 317 Line 407
     </message>      </message>
   
     <message>      <message>
       Select sections to limit slot availability to: <br />&nbsp;&nbsp;&nbsp;        <h3>Select sections to limit slot availability to: </h3>&nbsp;&nbsp;&nbsp;
     </message>      </message>
     <section variable="allowedsections" multichoice="1" allowempty="1">      <section variable="allowedsections" multichoice="1" allowempty="1">
       <defaultvalue>        <defaultvalue>
         return join('|||',   return join('|||',
     split(',',&{$helper->{DATA}{origslot}}('allowedsections')));      split(',',&{$helper->{DATA}{origslot}}('allowedsections')));
       </defaultvalue>        </defaultvalue>
     </section>      </section>
     <message>      <message>
       Select users to limit slot availability to: <br />&nbsp;&nbsp;&nbsp;        <br /><h3>Select users to limit slot availability to: </h3>&nbsp;&nbsp;&nbsp;
     </message>      </message>
     <student variable="allowedusers" multichoice="1" coursepersonnel="1"      <student variable="allowedusers" multichoice="1" coursepersonnel="1"
              activeonly="1" emptyallowed="1">               activeonly="1" emptyallowed="1">
Line 349 Line 439
     $slot{$which} = $helper->{'VARS'}{$which};      $slot{$which} = $helper->{'VARS'}{$which};
  }   }
   
  foreach my $which ('ip','description','maxspace','secret','symb') {   foreach my $which ('description','maxspace','secret') {
     if ( $helper->{'VARS'}{$which} =~/\S/ ) {      if ( $helper->{'VARS'}{$which} =~/\S/ ) {
  $slot{$which} = $helper->{'VARS'}{$which};   $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'}{'type'} eq 'schedulable_student') {
             if (($helper->{'VARS'}{'reservationmsg'} eq 'only_student') ||              if (($helper->{'VARS'}{'reservationmsg'} eq 'only_student') ||
                ($helper->{'VARS'}{'reservationmsg'} eq 'student_and_user_notes_screen')) {                 ($helper->{'VARS'}{'reservationmsg'} eq 'student_and_user_notes_screen')) {
Line 364 Line 474
             }              }
         }          }
   
           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) {   if ( $helper->{'VARS'}{'startreserve'} > 0) {
  $slot{'startreserve'} = $helper->{'VARS'}{'startreserve'};   $slot{'startreserve'} = $helper->{'VARS'}{'startreserve'};
  }   }
Line 378 Line 499
      $helper->{'VARS'}{'endunique'}];       $helper->{'VARS'}{'endunique'}];
  }   }
   
           if ( $helper->{'VARS'}{'iptied'} =~ /^(yes|answer)$/ ) {
               $slot{'iptied'} = lc($helper->{'VARS'}{'iptied'});
           }
   
         if ( $helper->{'VARS'}{'useproctor'} eq 'yes'          if ( $helper->{'VARS'}{'useproctor'} eq 'yes'
      && $helper->{'VARS'}{'proctor'} =~/\S/ ) {       && $helper->{'VARS'}{'proctor'} =~/\S/ ) {
     my @names;      my @names;
Line 387 Line 512
  my ($uname,$udomain)=split(/:/,$user);   my ($uname,$udomain)=split(/:/,$user);
  push(@names,"$uname:$udomain");   push(@names,"$uname:$udomain");
     }      }
     # make sure the usernmaes are unique      # make sure the usernames are unique
     my %proctors = map { ($_,1) } @names;      my %proctors = map { ($_,1) } @names;
     $slot{'proctor'}=join(',',sort(keys(%proctors)));      $slot{'proctor'}=join(',',sort(keys(%proctors)));
  }   }
Line 428 Line 553
                  "\n".'<li> Type: '.$slot{'type'}.'</li>';                   "\n".'<li> Type: '.$slot{'type'}.'</li>';
         my %labels =          my %labels =
              map {($_->[0],$_->[1])} &Apache::slotrequest::csvupload_fields();               map {($_->[0],$_->[1])} &Apache::slotrequest::csvupload_fields();
         foreach my $which ('ip','description','maxspace','secret','symb',          foreach my $which ('ip','description','maxspace','secret',
    'allowedsections','allowedusers') {     'allowedsections','allowedusers') {
     if (exists($slot{$which})) {      if (exists($slot{$which})) {
  $result.="\n".'<li> '.$labels{$which}.': '.   $result.="\n".'<li> '.$labels{$which}.': '.
     &HTML::Entities::encode($slot{$which}).'</li>';      &HTML::Entities::encode($slot{$which}).'</li>';
     }      }
  }   }
           if (exists($slot{'iptied'})) {
               $result.="\n".'<li> '.$labels{'iptied'}.': ';
               if ($slot{'iptied'} eq 'yes') {
                   $result.=&Apache::lonlocal::mt('yes');
               } elsif ($slot{'iptied'} eq 'answer') {
                   $result.=&Apache::lonlocal::mt('yes, including post-answer date');
               }
               $result.='</li>';
           }
           if (exists($slot{'symb'})) {
               $result.="\n".'<li> '.$labels{'symb'}.': ';
               if ($slot{'symb'} =~ /,/) {
                   $result.='<ul>';
                   foreach my $symb (split(/\s*,\s*/,$slot{'symb'})) {
                       $result.='<li>'.&HTML::Entities::encode($symb).'</li>';
                   }
                   $result.='</ul>';
               } else {
                   $result.=&HTML::Entities::encode($slot{'symb'});
               }
               $result.='</li>';
           }
  if (exists($slot{'startreserve'})) {   if (exists($slot{'startreserve'})) {
     $result.="\n".'<li> '.$labels{'startreserve'}.': '.      $result.="\n".'<li> '.$labels{'startreserve'}.': '.
     &Apache::lonlocal::locallocaltime($slot{'startreserve'}).'</li>';      &Apache::lonlocal::locallocaltime($slot{'startreserve'}).'</li>';

Removed from v.1.30.4.1  
changed lines
  Added in v.1.36


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>