version 1.58, 2006/04/24 23:23:02
|
version 1.65, 2006/06/16 19:54:02
|
Line 36 use Apache::lonlocal;
|
Line 36 use Apache::lonlocal;
|
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::lonnavmaps(); |
use Apache::lonnavmaps(); |
use Date::Manip; |
use Date::Manip; |
|
use lib '/home/httpd/lib/perl/'; |
|
use LONCAPA; |
|
|
sub fail { |
sub fail { |
my ($r,$code)=@_; |
my ($r,$code)=@_; |
if ($code eq 'not_valid') { |
if ($code eq 'not_valid') { |
$r->print('<p>'.&mt('Unable to understand what resource you wanted to sign up for.').'</p>'); |
$r->print('<p>'.&mt('Unable to understand what resource you wanted to sign up for.').'</p>'); |
|
} elsif ($code eq 'not_available') { |
|
$r->print('<p>'.&mt('No slots are available.').'</p>'); |
} elsif ($code eq 'not_allowed') { |
} elsif ($code eq 'not_allowed') { |
$r->print('<p>'.&mt('Not allowed to sign up or change reservations at this time.').'</p>'); |
$r->print('<p>'.&mt('Not allowed to sign up or change reservations at this time.').'</p>'); |
} else { |
} else { |
Line 243 sub make_reservation {
|
Line 246 sub make_reservation {
|
my $value=&Apache::lonnet::EXT("resource.0.availablestudent",$symb, |
my $value=&Apache::lonnet::EXT("resource.0.availablestudent",$symb, |
$env{'user.domain'},$env{'user.name'}); |
$env{'user.domain'},$env{'user.name'}); |
&Apache::lonxml::debug("value is $value<br />"); |
&Apache::lonxml::debug("value is $value<br />"); |
if (&network_error($value)) { |
|
|
my $use_slots = &Apache::lonnet::EXT("resource.0.useslots"); |
|
&Apache::lonxml::debug("use_slots is $use_slots<br />"); |
|
|
|
if (&network_error($value) || &network_error($use_slots)) { |
return 'error: Unable to determine current status'; |
return 'error: Unable to determine current status'; |
} |
} |
|
|
|
my $parm_symb = $symb; |
|
my $parm_level = 1; |
|
if ($use_slots eq 'map') { |
|
my ($map) = &Apache::lonnet::decode_symb($symb); |
|
$parm_symb = &Apache::lonnet::symbread($map); |
|
$parm_level = 2; |
|
} |
|
|
foreach my $other_slot (split(/:/, $value)) { |
foreach my $other_slot (split(/:/, $value)) { |
if ($other_slot eq $slot_name) { |
if ($other_slot eq $slot_name) { |
my %consumed=&Apache::lonnet::dump('slot_reservations', $cdom, |
my %consumed=&Apache::lonnet::dump('slot_reservations', $cdom, |
Line 286 sub make_reservation {
|
Line 301 sub make_reservation {
|
|
|
my %reservation=('name' => $env{'user.name'}.':'.$env{'user.domain'}, |
my %reservation=('name' => $env{'user.name'}.':'.$env{'user.domain'}, |
'timestamp' => time, |
'timestamp' => time, |
'symb' => $symb); |
'symb' => $parm_symb); |
|
|
my $success=&Apache::lonnet::newput('slot_reservations', |
my $success=&Apache::lonnet::newput('slot_reservations', |
{"$slot_name\0$wanted" => |
{"$slot_name\0$wanted" => |
Line 300 sub make_reservation {
|
Line 315 sub make_reservation {
|
} |
} |
my $result=&Apache::lonparmset::storeparm_by_symb($symb, |
my $result=&Apache::lonparmset::storeparm_by_symb($symb, |
'0_availablestudent', |
'0_availablestudent', |
1, $new_value, 'string', |
$parm_level, $new_value, |
|
'string', |
$env{'user.name'}, |
$env{'user.name'}, |
$env{'user.domain'}); |
$env{'user.domain'}); |
&Apache::lonxml::debug("hrrm $result"); |
&Apache::lonxml::debug("hrrm $result"); |
Line 369 sub remove_registration_confirmation {
|
Line 385 sub remove_registration_confirmation {
|
'no' => 'No',); |
'no' => 'No',); |
$r->print(<<"END_CONFIRM"); |
$r->print(<<"END_CONFIRM"); |
<p> $msg </p> |
<p> $msg </p> |
<form action="/adm/slotrequest" method="POST"> |
<form action="/adm/slotrequest" method="post"> |
<input type="hidden" name="command" value="release" /> |
<input type="hidden" name="command" value="release" /> |
<input type="hidden" name="button" value="yes" /> |
<input type="hidden" name="button" value="yes" /> |
$hidden_input |
$hidden_input |
<input type="submit" value="$lt{'yes'}" /> |
<input type="submit" value="$lt{'yes'}" /> |
</form> |
</form> |
<form action="/adm/slotrequest" method="POST"> |
<form action="/adm/slotrequest" method="post"> |
<input type="hidden" name="command" value="showslots" /> |
<input type="hidden" name="command" value="showslots" /> |
<input type="submit" value="$lt{'no'}" /> |
<input type="submit" value="$lt{'no'}" /> |
</form> |
</form> |
Line 471 sub release_reservation {
|
Line 487 sub release_reservation {
|
} |
} |
} |
} |
|
|
|
my $use_slots = &Apache::lonnet::EXT("resource.0.useslots"); |
|
&Apache::lonxml::debug("use_slots is $use_slots<br />"); |
|
|
|
if (&network_error($use_slots)) { |
|
return (0,'error: Unable to determine current status'); |
|
} |
|
|
|
my $parm_level = 1; |
|
if ($use_slots eq 'map') { |
|
$parm_level = 2; |
|
} |
# store new parameter string |
# store new parameter string |
my $result=&Apache::lonparmset::storeparm_by_symb($symb, |
my $result=&Apache::lonparmset::storeparm_by_symb($symb, |
'0_availablestudent', |
'0_availablestudent', |
1, $new_param, 'string', |
$parm_level, $new_param, |
$uname,$udom); |
'string', $uname, $udom); |
|
|
my $msg; |
my $msg; |
if ($mgr eq 'F') { |
if ($mgr eq 'F') { |
Line 544 sub get_slot {
|
Line 571 sub get_slot {
|
$r->print("<p>Already have a reservation: $description1</p>"); |
$r->print("<p>Already have a reservation: $description1</p>"); |
if ($slot_name ne $env{'form.slotname'}) { |
if ($slot_name ne $env{'form.slotname'}) { |
$r->print(<<STUFF); |
$r->print(<<STUFF); |
<form method="POST" action="/adm/slotrequest"> |
<form method="post" action="/adm/slotrequest"> |
<input type="hidden" name="symb" value="$env{'form.symb'}" /> |
<input type="hidden" name="symb" value="$env{'form.symb'}" /> |
<input type="hidden" name="slotname" value="$env{'form.slotname'}" /> |
<input type="hidden" name="slotname" value="$env{'form.slotname'}" /> |
<input type="hidden" name="releaseslot" value="$slot_name" /> |
<input type="hidden" name="releaseslot" value="$slot_name" /> |
Line 589 STUFF
|
Line 616 STUFF
|
$r->print(<<STUFF); |
$r->print(<<STUFF); |
<p> <font color="red">Failed</font> to reserve a spot for $description. </p> |
<p> <font color="red">Failed</font> to reserve a spot for $description. </p> |
<p> |
<p> |
<form method="POST" action="/adm/slotrequest"> |
<form method="post" action="/adm/slotrequest"> |
<input type="submit" name="Try Again" value="$lt{'try'}" /> |
<input type="submit" name="Try Again" value="$lt{'try'}" /> |
<input type="hidden" name="symb" value="$env{'form.symb'}" /> |
<input type="hidden" name="symb" value="$env{'form.symb'}" /> |
<input type="hidden" name="slotname" value="$env{'form.slotname'}" /> |
<input type="hidden" name="slotname" value="$env{'form.slotname'}" /> |
Line 599 STUFF
|
Line 626 STUFF
|
</p> |
</p> |
<p> |
<p> |
or |
or |
<form method="POST" action="/adm/slotrequest"> |
<form method="post" action="/adm/slotrequest"> |
<input type="hidden" name="symb" value="$env{'form.symb'}" /> |
<input type="hidden" name="symb" value="$env{'form.symb'}" /> |
<input type="submit" name="requestattempt" value="$lt{'request'}" /> |
<input type="submit" name="requestattempt" value="$lt{'request'}" /> |
</form> |
</form> |
Line 738 sub show_choices {
|
Line 765 sub show_choices {
|
$command='get'; |
$command='get'; |
} |
} |
} |
} |
my $escsymb=&Apache::lonnet::escape($symb); |
my $escsymb=&escape($symb); |
$form=<<STUFF; |
$form=<<STUFF; |
<form method="POST" action="/adm/slotrequest"> |
<form method="post" action="/adm/slotrequest"> |
<input type="submit" name="Select" value="$text" /> |
<input type="submit" name="Select" value="$text" /> |
<input type="hidden" name="symb" value="$escsymb" /> |
<input type="hidden" name="symb" value="$escsymb" /> |
<input type="hidden" name="slotname" value="$slot" /> |
<input type="hidden" name="slotname" value="$slot" /> |
Line 837 sub remove_link {
|
Line 864 sub remove_link {
|
undef($udom); |
undef($udom); |
} |
} |
|
|
$slotname = &Apache::lonnet::escape($slotname); |
$slotname = &escape($slotname); |
$entry = &Apache::lonnet::escape($entry); |
$entry = &escape($entry); |
$uname = &Apache::lonnet::escape($uname); |
$uname = &escape($uname); |
$udom = &Apache::lonnet::escape($udom); |
$udom = &escape($udom); |
$symb = &Apache::lonnet::escape($symb); |
$symb = &escape($symb); |
|
|
return <<"END_LINK"; |
return <<"END_LINK"; |
<a href="/adm/slotrequest?command=remove_registration&slotname=$slotname&entry=$entry&uname=$uname&udom=$udom&symb=$symb" |
<a href="/adm/slotrequest?command=remove_registration&slotname=$slotname&entry=$entry&uname=$uname&udom=$udom&symb=$symb" |
>($remove)</a> |
>($remove)</a> |
END_LINK |
END_LINK |
|
|
Line 861 sub show_table {
|
Line 888 sub show_table {
|
my $available; |
my $available; |
if ($mgr eq 'F') { |
if ($mgr eq 'F') { |
$r->print('<div>'); |
$r->print('<div>'); |
$r->print('<form method="POST" action="/adm/slotrequest"> |
$r->print('<form method="post" action="/adm/slotrequest"> |
<input type="hidden" name="command" value="uploadstart" /> |
<input type="hidden" name="command" value="uploadstart" /> |
<input type="submit" name="start" value="'.&mt('Upload Slot List').'" /> |
<input type="submit" name="start" value="'.&mt('Upload Slot List').'" /> |
</form>'); |
</form>'); |
$r->print('<form method="POST" action="/adm/helper/newslot.helper"> |
$r->print('<form method="post" action="/adm/helper/newslot.helper"> |
<input type="submit" name="newslot" value="'.&mt('Create a New Slot').'" /> |
<input type="submit" name="newslot" value="'.&mt('Create a New Slot').'" /> |
</form>'); |
</form>'); |
$r->print('</div>'); |
$r->print('</div>'); |
Line 952 sub show_table {
|
Line 979 sub show_table {
|
my $name_filter = {'type' => $name_filter_type, |
my $name_filter = {'type' => $name_filter_type, |
'value' => $env{'form.name_filter_value'},}; |
'value' => $env{'form.name_filter_value'},}; |
|
|
|
|
#deleted slot filtering |
#deleted slot filtering |
|
#default to hide if no value |
|
$env{'form.deleted'} ||= 'hide'; |
my $hide_radio = |
my $hide_radio = |
&Apache::lonhtmlcommon::radio('deleted',$env{'form.deleted'},'hide'); |
&Apache::lonhtmlcommon::radio('deleted',$env{'form.deleted'},'hide'); |
my $show_radio = |
my $show_radio = |
&Apache::lonhtmlcommon::radio('deleted',$env{'form.deleted'},'show'); |
&Apache::lonhtmlcommon::radio('deleted',$env{'form.deleted'},'show'); |
|
|
$r->print('<form method="POST" action="/adm/slotrequest"> |
$r->print('<form method="post" action="/adm/slotrequest"> |
<input type="hidden" name="command" value="showslots" />'); |
<input type="hidden" name="command" value="showslots" />'); |
$r->print('<div>'); |
$r->print('<div>'); |
$r->print('<table class="inline"> |
$r->print('<table class="inline"> |
Line 1001 sub show_table {
|
Line 1031 sub show_table {
|
$r->print('</div>'); |
$r->print('</div>'); |
$r->print('<p><input type="submit" name="start" value="'.&mt('Update Display').'" /></p>'); |
$r->print('<p><input type="submit" name="start" value="'.&mt('Update Display').'" /></p>'); |
my $linkstart='<a href="/adm/slotrequest?command=showslots&order='; |
my $linkstart='<a href="/adm/slotrequest?command=showslots&order='; |
$r->print('<table class="thinborder"> |
$r->print(&Apache::loncommon::start_data_table(). |
<tr> |
&Apache::loncommon::start_data_table_header_row().' |
<th></th>'); |
<th></th>'); |
foreach my $which (@show_order) { |
foreach my $which (@show_order) { |
if ($which ne 'proctor' && exists($show{$which})) { |
if ($which ne 'proctor' && exists($show{$which})) { |
$r->print('<th>'.$linkstart.$which.'">'.$show_fields{$which}.'</a></th>'); |
$r->print('<th>'.$linkstart.$which.'">'.$show_fields{$which}.'</a></th>'); |
} |
} |
} |
} |
|
$r->print(&Apache::loncommon::end_data_table_header_row()); |
|
|
my %name_cache; |
my %name_cache; |
my $slotsort = sub { |
my $slotsort = sub { |
Line 1081 sub show_table {
|
Line 1112 sub show_table {
|
|
|
my $unique; |
my $unique; |
if (ref($slots{$slot}{'uniqueperiod'})) { |
if (ref($slots{$slot}{'uniqueperiod'})) { |
$unique=localtime($slots{$slot}{'uniqueperiod'}[0]).','. |
$unique=localtime($slots{$slot}{'uniqueperiod'}[0]).', '. |
localtime($slots{$slot}{'uniqueperiod'}[1]); |
localtime($slots{$slot}{'uniqueperiod'}[1]); |
} |
} |
|
|
Line 1122 sub show_table {
|
Line 1153 sub show_table {
|
if (exists($show{'proctor'})) { |
if (exists($show{'proctor'})) { |
$rowspan=2; |
$rowspan=2; |
@proctors= map { |
@proctors= map { |
my ($uname,$udom)=split(/@/,$_); |
my ($uname,$udom)=split(/:/,$_); |
my $fullname=$name_cache{$_}; |
my $fullname=$name_cache{$_}; |
if (!defined($fullname)) { |
if (!defined($fullname)) { |
$fullname = &Apache::loncommon::plainname($uname,$udom); |
$fullname = &Apache::loncommon::plainname($uname,$udom); |
Line 1139 sub show_table {
|
Line 1170 sub show_table {
|
EDITLINK |
EDITLINK |
|
|
my $delete=(<<"DELETELINK"); |
my $delete=(<<"DELETELINK"); |
<a href="/adm/slotrequest?command=delete&slotname=$slot">Delete</a> |
<a href="/adm/slotrequest?command=delete&slotname=$slot">Delete</a> |
DELETELINK |
DELETELINK |
|
|
my $remove_all=&remove_link($slot,'remove all').'<br />'; |
my $remove_all=&remove_link($slot,'remove all').'<br />'; |
Line 1150 DELETELINK
|
Line 1181 DELETELINK
|
undef($remove_all); |
undef($remove_all); |
} |
} |
|
|
$r->print("<tr>\n<td rowspan=\"$rowspan\">$edit $delete</td>\n"); |
my $row_start=&Apache::loncommon::start_data_table_row(); |
|
my $row_end=&Apache::loncommon::end_data_table_row(); |
|
$r->print($row_start. |
|
"\n<td rowspan=\"$rowspan\">$edit $delete</td>\n"); |
if (exists($show{'name'})) { |
if (exists($show{'name'})) { |
$colspan++;$r->print("<td>$slot</td>"); |
$colspan++;$r->print("<td>$slot</td>"); |
} |
} |
Line 1187 DELETELINK
|
Line 1221 DELETELINK
|
if (exists($show{'allowedusers'})) { |
if (exists($show{'allowedusers'})) { |
$colspan++;$r->print("<td>$allowedusers</td>\n"); |
$colspan++;$r->print("<td>$allowedusers</td>\n"); |
} |
} |
|
if (exists($show{'uniqueperiod'})) { |
|
$colspan++;$r->print("<td>$unique</td>\n"); |
|
} |
if (exists($show{'scheduled'})) { |
if (exists($show{'scheduled'})) { |
$colspan++;$r->print("<td>$remove_all $ids</td>\n</tr>\n"); |
$colspan++;$r->print("<td>$remove_all $ids</td>\n"); |
} |
} |
|
$r->print("$row_end\n"); |
if (exists($show{'proctor'})) { |
if (exists($show{'proctor'})) { |
$r->print(<<STUFF); |
$r->print(<<STUFF); |
<tr> |
$row_start |
<td colspan="$colspan">$proctors</td> |
<td colspan="$colspan">$proctors</td> |
</tr> |
$row_end |
STUFF |
STUFF |
} |
} |
} |
} |
$r->print('</table>'); |
$r->print('</table></form>'); |
} |
} |
|
|
sub upload_start { |
sub upload_start { |
Line 1525 sub handler {
|
Line 1563 sub handler {
|
&csv_upload_map($r); |
&csv_upload_map($r); |
} |
} |
} else { |
} else { |
my $symb=&Apache::lonnet::unescape($env{'form.symb'}); |
my $symb=&unescape($env{'form.symb'}); |
|
if (!defined($symb)) { |
|
&fail($r,'not_valid'); |
|
return OK; |
|
} |
my (undef,undef,$res)=&Apache::lonnet::decode_symb($symb); |
my (undef,undef,$res)=&Apache::lonnet::decode_symb($symb); |
my $useslots = &Apache::lonnet::EXT("resource.0.useslots",$symb); |
my $useslots = &Apache::lonnet::EXT("resource.0.useslots",$symb); |
if ($useslots ne 'resource') { |
if ($useslots ne 'resource' && $useslots ne 'map') { |
&fail($r,'not_valid'); |
&fail($r,'not_available'); |
return OK; |
return OK; |
} |
} |
$env{'request.symb'}=$symb; |
$env{'request.symb'}=$symb; |