version 1.49, 2006/03/07 16:15:48
|
version 1.54, 2006/03/30 04:34:32
|
Line 54 sub fail {
|
Line 54 sub fail {
|
|
|
sub start_page { |
sub start_page { |
my ($r,$title)=@_; |
my ($r,$title)=@_; |
my $html=&Apache::lonxml::xmlbegin(); |
$r->print(&Apache::loncommon::start_page($title)); |
$r->print($html.'<head><title>'.&mt($title).'</title></head>'); |
|
$r->print(&Apache::loncommon::bodytag($title)); |
|
} |
} |
|
|
sub end_page { |
sub end_page { |
my ($r)=@_; |
my ($r)=@_; |
$r->print(&Apache::loncommon::endbodytag().'</html>'); |
$r->print(&Apache::loncommon::end_page()); |
} |
} |
|
|
=pod |
=pod |
Line 550 sub allowed_slot {
|
Line 548 sub allowed_slot {
|
} |
} |
&Apache::lonxml::debug("$slot_name type good"); |
&Apache::lonxml::debug("$slot_name type good"); |
|
|
# its for a different set of users |
# reserve time not yet started |
if (defined($slot->{'allowedsection'})) { |
if ($slot->{'startreserve'} > time) { |
|
|
return 0; |
return 0; |
} |
} |
&Apache::lonxml::debug("$slot_name type good"); |
&Apache::lonxml::debug("$slot_name reserve good"); |
|
|
|
my $userallowed=0; |
# its for a different set of users |
# its for a different set of users |
if (defined($slot->{'allowedusers'})) { |
if (defined($slot->{'allowedsections'})) { |
|
if (!defined($env{'request.role.sec'}) |
return 0; |
&& grep(/^No section assigned$/, |
|
split(',',$slot->{'allowedsections'}))) { |
|
$userallowed=1; |
|
} |
|
if (defined($env{'request.role.sec'}) |
|
&& grep(/^\Q$env{'request.role.sec'}\E$/, |
|
split(',',$slot->{'allowedsections'}))) { |
|
$userallowed=1; |
|
} |
} |
} |
&Apache::lonxml::debug("$slot_name type good"); |
&Apache::lonxml::debug("$slot_name sections is $userallowed"); |
|
|
|
# its for a different set of users |
|
if (defined($slot->{'allowedusers'}) |
|
&& grep(/^\Q$env{'user.name'}:$env{'user.domain'}\E$/, |
|
split(',',$slot->{'allowedusers'}))) { |
|
$userallowed=1; |
|
} |
|
|
|
if (!defined($slot->{'allowedusers'}) |
|
&& !defined($slot->{'allowedsections'})) { |
|
$userallowed=1; |
|
} |
|
|
|
&Apache::lonxml::debug("$slot_name user is $userallowed"); |
|
return 0 if (!$userallowed); |
|
|
# not allowed for this resource |
# not allowed for this resource |
if (defined($slot->{'symb'}) |
if (defined($slot->{'symb'}) |
&& $slot->{'symb'} ne $symb) { |
&& $slot->{'symb'} ne $symb) { |
return 0; |
return 0; |
} |
} |
|
|
my $conflict = &check_for_conflict($symb,$slot_name,$slot,$slots, |
my $conflict = &check_for_conflict($symb,$slot_name,$slot,$slots, |
$consumed_uniqueperiods); |
$consumed_uniqueperiods); |
if ($conflict) { |
if ($conflict) { |
Line 656 STUFF
|
Line 678 STUFF
|
} |
} |
|
|
sub to_show { |
sub to_show { |
my ($slot,$when,$deleted) = @_; |
my ($slotname,$slot,$when,$deleted,$name) = @_; |
my $time=time; |
my $time=time; |
my $week=60*60*24*7; |
my $week=60*60*24*7; |
|
|
if ($deleted eq 'hide' && $slot->{'type'} eq 'deleted') { |
if ($deleted eq 'hide' && $slot->{'type'} eq 'deleted') { |
return 0; |
return 0; |
} |
} |
|
|
|
if ($name && $name->{'value'} =~ /\w/) { |
|
if ($name->{'type'} eq 'substring') { |
|
if ($slotname !~ /\Q$name->{'value'}\E/) { |
|
return 0; |
|
} |
|
} |
|
if ($name->{'type'} eq 'exact') { |
|
if ($slotname eq $name->{'value'}) { |
|
return 0; |
|
} |
|
} |
|
} |
|
|
if ($when eq 'any') { |
if ($when eq 'any') { |
return 1; |
return 1; |
} elsif ($when eq 'now') { |
} elsif ($when eq 'now') { |
Line 742 sub show_table {
|
Line 779 sub show_table {
|
$r->print('</div>'); |
$r->print('</div>'); |
} |
} |
|
|
my %Saveable_Parameters = ('show' => 'array', |
my %Saveable_Parameters = ('show' => 'array', |
'when' => 'scalar', |
'when' => 'scalar', |
'order' => 'scalar', |
'order' => 'scalar', |
'deleted' => 'scalar', |
'deleted' => 'scalar', |
|
'name_filter_type' => 'scalar', |
|
'name_filter_value' => 'scalar', |
); |
); |
&Apache::loncommon::store_course_settings('slotrequest', |
&Apache::loncommon::store_course_settings('slotrequest', |
\%Saveable_Parameters); |
\%Saveable_Parameters); |
Line 755 sub show_table {
|
Line 794 sub show_table {
|
my ($classlist,$section,$fullname)=&Apache::grades::getclasslist('all'); |
my ($classlist,$section,$fullname)=&Apache::grades::getclasslist('all'); |
&Apache::grades::reset_perm(); |
&Apache::grades::reset_perm(); |
|
|
|
# what to display filtering |
my %show_fields=&Apache::lonlocal::texthash( |
my %show_fields=&Apache::lonlocal::texthash( |
'name' => 'Slot Name', |
'name' => 'Slot Name', |
'description' => 'Description', |
'description' => 'Description', |
Line 780 sub show_table {
|
Line 820 sub show_table {
|
: keys(%show_fields); |
: keys(%show_fields); |
my %show = map { $_ => 1 } (@show); |
my %show = map { $_ => 1 } (@show); |
|
|
|
#when filtering setup |
my %when_fields=&Apache::lonlocal::texthash( |
my %when_fields=&Apache::lonlocal::texthash( |
'now' => 'Open now', |
'now' => 'Open now', |
'nextweek' => 'Open within the next week', |
'nextweek' => 'Open within the next week', |
Line 793 sub show_table {
|
Line 834 sub show_table {
|
my $when = (exists($env{'form.when'})) ? $env{'form.when'} |
my $when = (exists($env{'form.when'})) ? $env{'form.when'} |
: 'now'; |
: 'now'; |
|
|
|
#display of students setup |
my %stu_display_fields= |
my %stu_display_fields= |
&Apache::lonlocal::texthash('username' => 'User name', |
&Apache::lonlocal::texthash('username' => 'User name', |
'fullname' => 'Full name', |
'fullname' => 'Full name', |
Line 803 sub show_table {
|
Line 845 sub show_table {
|
: keys(%stu_display_fields); |
: keys(%stu_display_fields); |
my %stu_display = map { $_ => 1 } (@stu_display); |
my %stu_display = map { $_ => 1 } (@stu_display); |
|
|
|
#name filtering setup |
|
my %name_filter_type_fields= |
|
&Apache::lonlocal::texthash('substring' => 'Substring', |
|
'exact' => 'Exact', |
|
#'reg' => 'Regular Expression', |
|
); |
|
my @name_filter_type_order=('substring','exact'); |
|
|
|
$name_filter_type_fields{'select_form_order'} = \@name_filter_type_order; |
|
my $name_filter_type = |
|
(exists($env{'form.name_filter_type'})) ? $env{'form.name_filter_type'} |
|
: 'substring'; |
|
my $name_filter = {'type' => $name_filter_type, |
|
'value' => $env{'form.name_filter_value'},}; |
|
|
|
#deleted slot filtering |
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 = |
Line 815 sub show_table {
|
Line 873 sub show_table {
|
<tr><th>'.&mt('Show').'</th> |
<tr><th>'.&mt('Show').'</th> |
<th>'.&mt('Student Display').'</th> |
<th>'.&mt('Student Display').'</th> |
<th>'.&mt('Open').'</th> |
<th>'.&mt('Open').'</th> |
|
<th>'.&mt('Slot Name Filter').'</th> |
<th>'.&mt('Options').'</th> |
<th>'.&mt('Options').'</th> |
</tr> |
</tr> |
<tr><td>'.&Apache::loncommon::multiple_select_form('show',\@show,6,\%show_fields,\@show_order). |
<tr><td>'.&Apache::loncommon::multiple_select_form('show',\@show,6,\%show_fields,\@show_order). |
Line 826 sub show_table {
|
Line 885 sub show_table {
|
</td> |
</td> |
<td>'.&Apache::loncommon::select_form($when,'when',%when_fields). |
<td>'.&Apache::loncommon::select_form($when,'when',%when_fields). |
'</td> |
'</td> |
|
<td>'.&Apache::loncommon::select_form($name_filter_type, |
|
'name_filter_type', |
|
%name_filter_type_fields). |
|
'<br />'. |
|
&Apache::lonhtmlcommon::textbox('name_filter_value', |
|
$env{'form.name_filter_value'}, |
|
15). |
|
'</td> |
<td> |
<td> |
<table> |
<table> |
<tr> |
<tr> |
Line 879 sub show_table {
|
Line 946 sub show_table {
|
return $slots{$a}->{'starttime'} <=> $slots{$b}->{'starttime'}; |
return $slots{$a}->{'starttime'} <=> $slots{$b}->{'starttime'}; |
}; |
}; |
foreach my $slot (sort $slotsort (keys(%slots))) { |
foreach my $slot (sort $slotsort (keys(%slots))) { |
if (!&to_show($slots{$slot},$when,$env{'form.deleted'})) { next; } |
if (!&to_show($slot,$slots{$slot},$when, |
|
$env{'form.deleted'},$name_filter)) { next; } |
if (defined($slots{$slot}->{'type'}) |
if (defined($slots{$slot}->{'type'}) |
&& $slots{$slot}->{'type'} ne 'schedulable_student') { |
&& $slots{$slot}->{'type'} ne 'schedulable_student') { |
#next; |
#next; |
Line 891 sub show_table {
|
Line 959 sub show_table {
|
"^$slot\0"); |
"^$slot\0"); |
my ($tmp)=%consumed; |
my ($tmp)=%consumed; |
if ($tmp !~ /^error: /) { |
if ($tmp !~ /^error: /) { |
foreach my $entry (sort(keys(%consumed))) { |
foreach my $entry (sort { $consumed{$a}{name} cmp |
|
$consumed{$b}{name} } |
|
(keys(%consumed))) { |
my (undef,$id)=split("\0",$entry); |
my (undef,$id)=split("\0",$entry); |
my ($uname,$udom) = split('@',$consumed{$entry}{'name'}); |
my ($uname,$udom) = split('@',$consumed{$entry}{'name'}); |
$ids.= '<nobr>'; |
$ids.= '<nobr>'; |