version 1.19, 2006/05/16 21:03:42
|
version 1.30.6.2, 2020/04/08 20:54:58
|
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 25
|
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> |
Name: <br /> |
<br />Name: <br /> |
</message> |
</message> |
<string variable="name" size="30"> |
<string variable="name" size="30"> |
<validator> |
<validator> |
Line 75
|
Line 100
|
<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 84
|
Line 109
|
</state> |
</state> |
|
|
|
|
<state name="OPTIONAL" title="Specify Optional Attributes"> |
<state name="OPTIONAL" title="Specify Optional Attributes" |
|
help="Slot_OptionalAttributes"> |
<message> |
<message> |
<p>Description:<br /> |
<p>Description:<br /> |
</message> |
</message> |
Line 110
|
Line 136
|
</validator> |
</validator> |
</date> |
</date> |
<message> |
<message> |
</p><p>Maxium number of students allowed in this slot:<br /> |
</p><p>Time students can no longer reserve:<br /> |
|
</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> |
|
<message> |
|
</p><p>Maximum number of students allowed in this slot:<br /> |
</message> |
</message> |
<string variable="maxspace" size="4"> |
<string variable="maxspace" size="4"> |
<validator> |
<validator> |
Line 122
|
Line 162
|
</defaultvalue> |
</defaultvalue> |
</string> |
</string> |
<message> |
<message> |
</p><p>Period of time in which this slot is can only be uniquely chosen:<br /> Start: |
</p><p>Period of time when this slot can only be uniquely chosen:<br /> Start: |
</message> |
</message> |
<date variable="startunique" hoursminutes="1" anytime="1"> |
<date variable="startunique" hoursminutes="1" anytime="1"> |
<defaultvalue> |
<defaultvalue> |
Line 147
|
Line 187
|
return undef; |
return undef; |
</validator> |
</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'}{'endunique'}); |
|
</exec> |
</exec> |
|
<message> |
|
</p><p>Period of time when this slot can only be uniquely assigned:<br /> Start: |
|
</message> |
|
<date variable="startunique" hoursminutes="1" anytime="1"> |
|
<defaultvalue> |
|
my $default=&{$helper->{DATA}{origslot}}('uniqueperiod','anytime'); |
|
if ($default eq 'anytime') { return 'anytime' }; |
|
if (ref($default)) { return $default->[0]; } |
|
return 'anytime'; |
|
</defaultvalue> |
|
</date> |
|
<message><br /> End: </message> |
|
<date variable="endunique" hoursminutes="1" anytime="1"> |
|
<defaultvalue> |
|
my $default=&{$helper->{DATA}{origslot}}('uniqueperiod','anytime'); |
|
if ($default eq 'anytime') { return 'anytime' }; |
|
if (ref($default)) { return $default->[1]; } |
|
return 'anytime'; |
|
</defaultvalue> |
|
<validator> |
|
if (defined($val) && $val < $helper->{'VARS'}{'startunique'}) { |
|
return 'End time must be later than the start time.'; |
|
} |
|
return undef; |
|
</validator> |
|
</date> |
</condition> |
</condition> |
<message> |
<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> |
</p><p>Secret word proctors use to checkin users:<br /> |
</p><p>Secret word proctors use to checkin users:<br /> |
</message> |
</message> |
<string variable="secret" size="12"> |
<string variable="secret" size="12"> |
Line 171
|
Line 263
|
<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="RESOURCESELECT" computer='resource'>restricted to a specific resource.</choice> |
Line 180
|
Line 274
|
return 'any'; |
return 'any'; |
</defaultvalue> |
</defaultvalue> |
</choices> |
</choices> |
|
|
|
<message> |
|
</p><p>IP restrictions -- allow from all except:<br /> |
|
</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 /> |
</p><p>IP restrictions -- deny from all except: <br /> |
</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> </message> |
<message> </p> </message> |
Line 209
|
Line 318
|
</state> |
</state> |
|
|
|
|
<state name="PROCTOR" title="Specify Proctors"> |
<state name="PROCTOR" title="Specify Proctors" |
|
help="Slot_SpecifyProctors"> |
|
|
<nextstate>FINISH</nextstate> |
<skip> |
|
<clause>$helper->{'VARS'}{'useproctor'} eq 'no'</clause> |
|
<nextstate>RESTRICTUSER</nextstate> |
|
</skip> |
|
|
<condition> |
<nextstate>RESTRICTUSER</nextstate> |
<clause>$helper->{'VARS'}{'type'} eq 'schedulable_student'</clause> |
|
<nextstate>RESTRICTUSER</nextstate> |
|
</condition> |
|
|
|
<choices variable="useproctor"> |
|
<choice computer='no'>No proctor checkin required for access.</choice> |
|
<choice computer='yes'>Require proctored access.</choice> |
|
<defaultvalue> |
|
my $default=&{$helper->{DATA}{origslot}}('proctor'); |
|
if ($default) { return 'yes'; } |
|
return 'no'; |
|
</defaultvalue> |
|
</choices> |
|
|
|
<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'); |
Line 242
|
Line 342
|
</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> |
Line 269
|
Line 375
|
</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 281
|
Line 387
|
$slot{$which} = $helper->{'VARS'}{$which}; |
$slot{$which} = $helper->{'VARS'}{$which}; |
} |
} |
|
|
foreach my $which ('ip','description','maxspace','secret','symb') { |
foreach my $which ('description','maxspace','secret','symb') { |
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'}{'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) { |
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'}, |
Line 338
|
Line 477
|
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>'. |
Line 355
|
Line 497
|
$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; |