Diff for /loncom/html/adm/helper/newslot.helper between versions 1.14 and 1.32

version 1.14, 2006/03/07 16:29:14 version 1.32, 2015/09/27 22:35:50
Line 1 Line 1
 <helper title="Slot Creation" requiredpriv="mgq">  <helper title="Slot Creation" requiredpriv="mgq">
   <state name="START" title="Specify Required Attributes">    <state name="START" title="Specify Required Attributes"
            help="Slot_RequiredAttributes">
   
     <nextstate>OPTIONAL</nextstate>      <nextstate>OPTIONAL</nextstate>
   
Line 30 Line 31
       }        }
     </exec>      </exec>
     <message>      <message>
         Name: <br />&nbsp;&nbsp;&nbsp;          <br />Name: <br />&nbsp;&nbsp;&nbsp;
     </message>      </message>
     <string variable="name" size="30">      <string variable="name" size="30">
       <validator>        <validator>
Line 64 Line 65
       <defaultvalue>        <defaultvalue>
         return &{$helper->{DATA}{origslot}}('endtime');          return &{$helper->{DATA}{origslot}}('endtime');
       </defaultvalue>        </defaultvalue>
         <validator>
            if ($val < $helper->{'VARS'}{'starttime'}) {
        return 'End time must be later than the start time.';
            }
    return undef;
         </validator>
     </date>      </date>
     <message>      <message>
       <br />Type:        <br />Type:
     </message>      </message>
     <choices variable="type">      <choices variable="type">
       <choice computer='preassigned'>Instructor asssignable.</choice>        <choice computer='preassigned'>Instructor assignable.</choice>
       <choice computer='schedulable_student'>Student selectable.</choice>        <choice computer='schedulable_student'>Student selectable.</choice>
       <defaultvalue>        <defaultvalue>
         return &{$helper->{DATA}{origslot}}('type','preassigned');          return &{$helper->{DATA}{origslot}}('type','preassigned');
Line 78 Line 85
   </state>    </state>
   
   
   <state name="OPTIONAL" title="Specify Optional Attributes">    <state name="OPTIONAL" title="Specify Optional Attributes"
    help="Slot_OptionalAttributes">
     <message>      <message>
         <p>Description:<br />&nbsp;&nbsp;&nbsp;          <p>Description:<br />&nbsp;&nbsp;&nbsp;
     </message>      </message>
Line 96 Line 104
         <defaultvalue>          <defaultvalue>
           return &{$helper->{DATA}{origslot}}('startreserve','anytime');            return &{$helper->{DATA}{origslot}}('startreserve','anytime');
         </defaultvalue>          </defaultvalue>
           <validator>
              if (defined($val) && $val > $helper->{'VARS'}{'starttime'}) {
          return 'Reservation time must come before the slot has started.';
              }
      return undef;
           </validator>
         </date>
         <message>
           </p><p>Time students can no longer reserve:<br />&nbsp;&nbsp;&nbsp;
         </message>
         <date variable="endreserve" hoursminutes="1" anytime="1">
           <defaultvalue>
             return &{$helper->{DATA}{origslot}}('endreserve','anytime');
           </defaultvalue>
           <validator>
              if (defined($val) && $val > $helper->{'VARS'}{'starttime'}) {
                  return 'Reservation end time must come before the slot has started.';
              }
              return undef;
           </validator>
       </date>        </date>
       <message>        <message>
          </p><p>Maxium number of students allowed in this slot:<br />&nbsp;&nbsp;&nbsp;           </p><p>Maximum number of students allowed in this slot:<br />&nbsp;&nbsp;&nbsp;
       </message>        </message>
       <string variable="maxspace" size="4">        <string variable="maxspace" size="4">
         <validator>          <validator>
Line 110 Line 138
         </defaultvalue>          </defaultvalue>
       </string>        </string>
       <message>        <message>
          </p><p>Period of time in which this slot is can only be uniquely chosen:<br />&nbsp;&nbsp;&nbsp;Start:           </p><p>Period of time when this slot can only be uniquely chosen:<br />&nbsp;&nbsp;&nbsp;Start:
       </message>        </message>
       <date variable="startunique" hoursminutes="1" anytime="1">        <date variable="startunique" hoursminutes="1" anytime="1">
         <defaultvalue>          <defaultvalue>
Line 128 Line 156
           if (ref($default)) { return $default->[1]; }            if (ref($default)) { return $default->[1]; }
           return 'anytime';            return 'anytime';
         </defaultvalue>          </defaultvalue>
           <validator>
              if (defined($val) && $val < $helper->{'VARS'}{'startunique'}) {
          return 'End time must be later than the start time.';
              }
      return undef;
           </validator>
       </date>        </date>
         <message>
           </p><p>Message(s) triggered by reservation change by student 
         </message>
       <choices variable="reservationmsg">
         <choice computer='only_student'>Sent to student</choice>
         <choice computer='student_and_user_notes_screen'>Sent to student and added to user notes</choice>
         <choice computer='none'>None sent and no record in user notes</choice>
         <defaultvalue>
           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';
         </defaultvalue>
       </choices>
     </condition>      </condition>
     <condition>      <condition>
       <clause>$helper->{'VARS'}{'type'} eq 'preassigned'</clause>        <clause>$helper->{'VARS'}{'type'} eq 'preassigned'</clause>
       <exec>        <exec>
         delete($helper->{'VARS'}{'startreserve'});          delete($helper->{'VARS'}{'startreserve'});
           delete($helper->{'VARS'}{'endreserve'});
         delete($helper->{'VARS'}{'maxspace'});          delete($helper->{'VARS'}{'maxspace'});
         delete($helper->{'VARS'}{'startunique'});          delete($helper->{'VARS'}{'startunique'});
         delete($helper->{'VARS'}{'endunique'});          delete($helper->{'VARS'}{'endunique'});
       </exec>        </exec>
     </condition>      </condition>
   
       <message>
         </p><p>Proctored access:
       </message>
       <choices variable="useproctor">
         <choice computer='no'>No proctor checkin required for access.</choice>
         <choice computer='yes'>Require proctored checkin for access.</choice>
         <defaultvalue>
           my $default=&{$helper->{DATA}{origslot}}('proctor');
           if ($default) { return 'yes'; }
           return 'no';
         </defaultvalue>
       </choices>
   
     <message>      <message>
       </p><p>Secret word proctors use to checkin users:<br />&nbsp;&nbsp;&nbsp;        </p><p>Secret word proctors use to checkin users:<br />&nbsp;&nbsp;&nbsp;
     </message>      </message>
Line 153 Line 216
     <message>      <message>
       </p><p>Slot is:        </p><p>Slot is:
     </message>      </message>
       <helpicon file="Slot_ChoosingResources" />
   
     <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>      <message>
  </p><p>IP restrictions:<br />&nbsp;&nbsp;&nbsp;         </p><p>IP restrictions:<br />&nbsp;&nbsp;&nbsp;      
     </message>      </message>
Line 181 Line 261
   
     <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()</filterfunc>
         <choicefunc>return $res->is_problem()</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">
   
   <state name="PROCTOR" title="Specify Proctors">      <nextstate>PROCTOR</nextstate>
   
     <nextstate>FINISH</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>
   
     <condition>    <state name="PROCTOR" title="Specify Proctors"
        <clause>$helper->{'VARS'}{'type'} eq 'schedulable_student'</clause>   help="Slot_SpecifyProctors">
        <nextstate>RESTRICTUSER</nextstate>  
     </condition>      <skip>
         <clause>$helper->{'VARS'}{'useproctor'} eq 'no'</clause>
         <nextstate>RESTRICTUSER</nextstate>
       </skip>
   
       <nextstate>RESTRICTUSER</nextstate>
   
     <student variable="proctor" multichoice="1" coursepersonnel="1"      <student variable="proctor" multichoice="1" coursepersonnel="1"
              activeonly="1" emptyallowed="1">               activeonly="1" emptyallowed="0">
       <defaultvalue>        <defaultvalue>
         my @defaults;          my @defaults;
         my $default=&{$helper->{DATA}{origslot}}('proctor');          my $default=&{$helper->{DATA}{origslot}}('proctor');
         if ($default) {          if ($default) {
     $default=~ tr/@/:/;  
     @defaults=(split(',',$default));       @defaults=(split(',',$default)); 
  }   }
         return @defaults;          return @defaults;
Line 215 Line 318
   </state>    </state>
   
   
   <state name="RESTRICTUSER" title="Restrict slot availability">    <state name="RESTRICTUSER" title="Restrict slot availability"
    help="Slot_RestrictAvailibility">
       <skip>
          <clause>$helper->{'VARS'}{'type'} ne 'schedulable_student'</clause>
          <nextstate>FINISH</nextstate>
       </skip>
   
     <nextstate>FINISH</nextstate>      <nextstate>FINISH</nextstate>
     <message>      <message>
       <p>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.</p>        <p>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.</p>
     </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 242 Line 351
   </state>    </state>
   
   
   <state name="FINISH" title="Creating/Modfying Slot">    <state name="FINISH" title="Creating/Modifying Slot">
     <message> Created Slot  </message>      <message> Created Slot  </message>
     <final>      <final>
       <finalcode>        <finalcode>
Line 254 Line 363
     $slot{$which} = $helper->{'VARS'}{$which};      $slot{$which} = $helper->{'VARS'}{$which};
  }   }
   
  foreach my $which ('ip','description','maxspace','secret','symb') {   foreach my $which ('ip','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'}{'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'}{'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'};
  }   }
   
           if ( $helper->{'VARS'}{'endreserve'} > 0) {
               $slot{'endreserve'} = $helper->{'VARS'}{'endreserve'};
           }
   
  if ( $helper->{'VARS'}{'startunique'} > 0 &&   if ( $helper->{'VARS'}{'startunique'} > 0 &&
      $helper->{'VARS'}{'endunique'} > 0 ) {       $helper->{'VARS'}{'endunique'} > 0 ) {
     $slot{'uniqueperiod'} = [$helper->{'VARS'}{'startunique'},      $slot{'uniqueperiod'} = [$helper->{'VARS'}{'startunique'},
      $helper->{'VARS'}{'endunique'}];       $helper->{'VARS'}{'endunique'}];
  }   }
   
         if ( $helper->{'VARS'}{'proctor'} =~/\S/ ) {          if ( $helper->{'VARS'}{'useproctor'} eq 'yes'
        && $helper->{'VARS'}{'proctor'} =~/\S/ ) {
     my @names;      my @names;
       # just need the username/domain throw away the other data 
               # that <student> returns
     foreach my $user (split(/\|\|\|/, $helper->{'VARS'}{'proctor'})) {      foreach my $user (split(/\|\|\|/, $helper->{'VARS'}{'proctor'})) {
  my ($uname,$udomain)=split(/:/,$user);   my ($uname,$udomain)=split(/:/,$user);
  push(@names,"$uname\@$udomain");   push(@names,"$uname:$udomain");
     }      }
     # make sure the usenrmaes 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 288 Line 424
  }   }
   
         if ( $helper->{'VARS'}{'allowedusers'} =~/\S/ ) {          if ( $helper->{'VARS'}{'allowedusers'} =~/\S/ ) {
   
     my @names;      my @names;
       # just need the username/domain throw away the other data 
               # that <student> returns
     foreach my $item (split(/\|\|\|/,      foreach my $item (split(/\|\|\|/,
     $helper->{'VARS'}{'allowedusers'})) {      $helper->{'VARS'}{'allowedusers'})) {
  my ($uname,$udomain)=split(/:/,$item);   my ($uname,$udomain)=split(/:/,$item);
Line 307 Line 444
         my $ret = &Apache::lonnet::cput('slots',          my $ret = &Apache::lonnet::cput('slots',
  {$helper->{'VARS'}{'name'} => \%slot},   {$helper->{'VARS'}{'name'} => \%slot},
  $cdom,$cname);   $cdom,$cname);
           if ($ret eq 'ok') {
               &Apache::lonnet::devalidate_slots_cache($cname,$cdom);
           }
         $result.="\n ".'Name: '.&HTML::Entities::encode($helper->{'VARS'}{'name'}).'</li>'.          $result.="\n ".'Name: '.&HTML::Entities::encode($helper->{'VARS'}{'name'}).'</li>'.
     "\n".'<li> Starts: '.&Apache::lonlocal::locallocaltime($slot{'starttime'}).'</li>'.      "\n".'<li> Starts: '.&Apache::lonlocal::locallocaltime($slot{'starttime'}).'</li>'.
                  "\n".'<li> Ends: '.&Apache::lonlocal::locallocaltime($slot{'endtime'}).'</li>'.                   "\n".'<li> Ends: '.&Apache::lonlocal::locallocaltime($slot{'endtime'}).'</li>'.
                  "\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{'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>';
  }   }
   
           if (exists($slot{'endreserve'})) {
               $result.="\n".'<li> '.$labels{'endreserve'}.': '.
                       &Apache::lonlocal::locallocaltime($slot{'endreserve'}).'</li>';
           }
   
           if (exists($slot{'reservationmsg'})) {
               my %options = &Apache::slotrequest::slot_reservationmsg_options();
               $result.="\n".'<li> '.$labels{'reservationmsg'}.': '.
                             $options{$slot{'reservationmsg'}}.'</li>';
           }
   
         if (exists($slot{'proctor'})) {          if (exists($slot{'proctor'})) {
     my $proctors = $slot{'proctor'};      my $proctors = $slot{'proctor'};
     $proctors =~ s/,/, /g;      $proctors =~ s/,/, /g;

Removed from v.1.14  
changed lines
  Added in v.1.32


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