version 1.30.4.1.4.2, 2023/07/07 04:18:18
|
version 1.36, 2023/07/07 03:52:41
|
Line 50
|
Line 50
|
return join(',',@allows); |
return join(',',@allows); |
} |
} |
} else { |
} else { |
return $slot{$name}{$which}; |
return $slot{$name}{$which}; |
} |
} |
} |
} |
</exec> |
</exec> |
Line 267
|
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> |
<message> |
</p><p>IP restrictions -- allow from all except: <br /> |
</p><p>IP restrictions -- allow from all except: <br /> |
</message> |
</message> |
|
|
<string variable="ipdeny" size="30"> |
<string variable="ipdeny" size="30"> |
Line 287
|
Line 301
|
return &{$helper->{DATA}{origslot}}('ipdeny'); |
return &{$helper->{DATA}{origslot}}('ipdeny'); |
</defaultvalue> |
</defaultvalue> |
</string> |
</string> |
|
|
<message> |
<message> |
</p><p>IP restrictions -- deny from all except: <br /> |
</p><p>IP restrictions -- deny from all except: <br /> |
</message> |
</message> |
|
|
<string variable="ipallow" size="30"> |
<string variable="ipallow" size="30"> |
Line 300
|
Line 314
|
return &{$helper->{DATA}{origslot}}('ipallow'); |
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 308
|
Line 337
|
|
|
<nextstate>PROCTOR</nextstate> |
<nextstate>PROCTOR</nextstate> |
|
|
<resource variable="symb"> |
<resource variable="symb" multichoice="1"> |
<filterfunc>return $res->is_problem() || $res->is_tool()</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 355
|
Line 407
|
</message> |
</message> |
|
|
<message> |
<message> |
Select sections to limit slot availability to: <br /> |
<h3>Select sections to limit slot availability to: </h3> |
</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 /> |
<br /><h3>Select users to limit slot availability to: </h3> |
</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 387
|
Line 439
|
$slot{$which} = $helper->{'VARS'}{$which}; |
$slot{$which} = $helper->{'VARS'}{$which}; |
} |
} |
|
|
foreach my $which ('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}; |
} |
} |
Line 408
|
Line 460
|
$slot{'ip'} .= $item.','; |
$slot{'ip'} .= $item.','; |
} |
} |
} |
} |
|
|
if ($slot{'ip'} ne '') { |
if ($slot{'ip'} ne '') { |
$slot{'ip'} =~s /,$//; |
$slot{'ip'} =~s /,$//; |
} |
} |
Line 422
|
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 436
|
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 445
|
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 486
|
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>'; |