'.&mt('Open after').' '.
+ ''.&mt('Open after').' '.
&Apache::lonhtmlcommon::date_setter($chooserform,'start',$starttime,'','','','','','','',1,1).
- ' '.&mt('Closed before').' '.
+ ' '.&mt('Closed before').' '.
&Apache::lonhtmlcommon::date_setter($chooserform,'end',$endtime,'','','','','','','',1,1).
'
'.
' '.
'';
}
if ($env{'form.command'} eq 'manageresv') {
- $output .= '
';
+ $output .= ''.
+ ''.&mt('Action').' '.&mt('Name').' ';
} else {
- $output .= &Apache::loncommon::start_data_table();
+ $output .= &Apache::loncommon::start_data_table().
+ &Apache::loncommon::start_data_table_header_row().
+ ''.&mt('Action').' '.&mt('Name').' '.
+ &Apache::loncommon::end_data_table_header_row();
}
foreach my $slot (@{$available}) {
my $description=&get_description($slot,$slots->{$slot});
@@ -3445,6 +3458,61 @@ sub slot_reservationmsg_options {
return %options;
}
+sub get_user_breadcrumbs {
+ my ($symb) = @_;
+ my ($mapurl, $rid, $resurl) = &Apache::lonnet::decode_symb($symb);
+ return [] unless (&Apache::lonnet::symbverify($symb,$resurl));
+ my $coursetitle = $env{'course.'.$env{'request.course.id'}.'.description'};
+ my $maptitle = &Apache::lonnet::gettitle($mapurl);
+ my $restitle = &Apache::lonnet::gettitle($symb);
+ my $crstype = &Apache::loncommon::course_type();
+ my ($ltiscope,$ltiuri);
+ my (@crumbs,@mapcrumbs);
+ if (($env{'request.course.id'}) && ($env{'request.lti.login'})) {
+ ($ltiscope,$ltiuri) =
+ &LONCAPA::ltiutils::lti_provider_scope($env{'request.lti.uri'},
+ $env{'course.'.$env{'request.course.id'}.'.domain'},
+ $env{'course.'.$env{'request.course.id'}.'.num'});
+ }
+ if (($resurl ne '/adm/navmaps') && ($mapurl ne '') &&
+ (!(($crstype eq 'Placement') && !$env{'request.role.adv'}))) {
+ unless ($ltiscope eq 'resource') {
+ if (($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) &&
+ !(($ltiscope eq 'map') && (&Apache::lonnet::clutter($resurl) eq $ltiuri))) {
+ my $navmap = Apache::lonnavmaps::navmap->new();
+ if (ref($navmap)) {
+ @mapcrumbs = $navmap->recursed_crumbs($mapurl,$restitle);
+ }
+ }
+ }
+ }
+ unless ((($crstype eq 'Placement') && (!$env{'request.role.adv'})) ||
+ ($ltiscope eq 'map') || ($ltiscope eq 'resource')) {
+ @crumbs = ({text => $crstype.' Contents',
+ href => "javascript:gopost('/adm/navmaps','')"});
+ }
+ if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) {
+ if (@mapcrumbs) {
+ push(@crumbs,@mapcrumbs);
+ } elsif (!(($crstype eq 'Placement') && (!$env{'request.role.adv'})) &&
+ ($ltiscope ne 'map') && ($ltiscope ne 'resource')) {
+ push(@crumbs, {text => '...',
+ no_mt => 1});
+ }
+ }
+ unless ((($crstype eq 'Placement') && (!$env{'request.role.adv'})) || (@mapcrumbs) ||
+ (!$maptitle) || ($maptitle eq 'default.sequence') ||
+ ($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'}) ||
+ ($ltiscope eq 'resource')) {
+ push(@crumbs, {text => $maptitle, no_mt => 1,
+ href => &Apache::lonnet::clutter($mapurl).'?navmap=1'});
+ }
+ if ($restitle && !@mapcrumbs) {
+ push(@crumbs,{text => $restitle, no_mt => 1});
+ }
+ return \@crumbs;
+}
+
sub handler {
my $r=shift;
@@ -3458,7 +3526,7 @@ sub handler {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});
my %crumb_titles = &slot_command_titles();
- my ($brcrum,$bread_crumbs_component);
+ my ($symb,$brcrum,$bread_crumbs_component);
my $vgr=&Apache::lonnet::allowed('vgr',$env{'request.course.id'});
my $mgr=&Apache::lonnet::allowed('mgr',$env{'request.course.id'});
@@ -3488,6 +3556,12 @@ sub handler {
$title = 'Manage Reservations';
$brcrum =[{href=>"/adm/slotrequest?command=manageresv",text=>$title}];
}
+ if ($env{'form.requestattempt'}) {
+ $symb=&unescape($env{'form.symb'});
+ if ($symb) {
+ $brcrum = &get_user_breadcrumbs($symb);
+ }
+ }
my ($cnum,$cdom)=&get_course();
%slots = &Apache::lonnet::get_course_slots($cnum,$cdom);
$consumed_uniqueperiods = &get_consumed_uniqueperiods(\%slots);
@@ -3507,19 +3581,32 @@ sub handler {
} elsif ($env{'form.command'} eq 'release') {
if ($env{'form.context'} eq 'usermanage') {
$brcrum =[{href=>"/adm/slotrequest?command=manageresv",
- text=>$crumb_titles{'showslots'}}];
+ text=>$crumb_titles{'manageresv'}}];
$title = 'Manage Reservations';
if (ref($brcrum) eq 'ARRAY') {
push(@{$brcrum},{href=>"/adm/slotrequest?command=$env{'form.command'}",text=>$crumb_titles{$env{'form.command'}}});
}
+ } elsif ($env{'form.context'} eq 'user') {
+ if ($env{'form.symb'}) {
+ $symb=&unescape($env{'form.symb'});
+ $brcrum = &get_user_breadcrumbs($symb);
+ } else {
+ $brcrum =[];
+ }
+ }
+ } elsif (($env{'form.command'} eq 'get') && ($env{'form.context'} eq 'user')) {
+ if ($env{'form.symb'}) {
+ $symb=&unescape($env{'form.symb'});
+ $brcrum = &get_user_breadcrumbs($symb);
+ } else {
+ $brcrum =[];
}
} else {
$brcrum =[];
}
- my ($symb,$js,$available,$allavailable,$got_slots);
+ my ($js,$available,$allavailable,$got_slots);
$available = [];
if ($env{'form.requestattempt'}) {
- $symb=&unescape($env{'form.symb'});
@{$got_slots}=&check_for_reservation($symb,'allslots');
}
if (($env{'form.requestattempt'}) || ($env{'form.command'} eq 'manageresv')) {
@@ -3566,7 +3653,7 @@ sub handler {
} elsif (($env{'form.command'} eq 'slotlog') && ($vgr eq 'F')) {
&show_reservations_log($r);
} else {
- my $symb=&unescape($env{'form.symb'});
+ $symb = &unescape($env{'form.symb'});
if (!defined($symb)) {
&fail($r,'not_valid');
return OK;
@@ -3591,9 +3678,9 @@ sub handler {
return OK;
}
if ($env{'form.requestattempt'}) {
- $r->print('');
- $r->print(&show_choices($symb,undef,undef,undef,\%slots,$consumed_uniqueperiods,$available,$got_slots));
- $r->print('
');
+ $r->print(''.
+ &show_choices($symb,undef,0,undef,\%slots,$consumed_uniqueperiods,$available,$got_slots).
+ '
');
} elsif ($env{'form.command'} eq 'release') {
&release_slot($r,$symb);
} elsif ($env{'form.command'} eq 'get') {