--- loncom/interface/lonnavmaps.pm 2010/02/10 16:45:31 1.423.2.3 +++ loncom/interface/lonnavmaps.pm 2009/02/14 12:20:10 1.424 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.423.2.3 2010/02/10 16:45:31 raeburn Exp $ +# $Id: lonnavmaps.pm,v 1.424 2009/02/14 12:20:10 schulted Exp $ # # Copyright Michigan State University Board of Trustees # @@ -31,7 +31,7 @@ =head1 NAME -Apache::lonnavmaps - Subroutines to handle and render the navigation +Apache::lonnavmaps.pm =head1 SYNOPSIS @@ -530,9 +530,6 @@ my %colormap = # is not yet done and due in less than 24 hours my $hurryUpColor = "#FF0000"; -my $future_slots_checked = 0; -my $future_slots = 0; - sub close { if ($env{'environment.remotenavmap'} ne 'on') { return ''; } return(<symb()); if ($map=~/\.page$/) { my $url=&Apache::lonnet::clutter($map); - $anchor=&escape($res->shown_symb()); + $anchor=&escape($src->shown_symb()); return ($url,$res->shown_symb(),$anchor); } } @@ -637,35 +634,6 @@ sub getDescription { if ($status == $res->OPEN_LATER) { return &mt("Open ") .timeToHumanString($open,'start'); } - if ($res->simpleStatus($part) == $res->OPEN) { - unless (&Apache::lonnet::allowed('mgr',$env{'request.course.id'})) { - my ($slot_status,$slot_time,$slot_name)=$res->check_for_slot($part); - if ($slot_status == $res->UNKNOWN) { - return &mt('Reservation status unknown'); - } elsif ($slot_status == $res->RESERVED) { - return &mt('Reserved - ends [_1]', - timeToHumanString($slot_time,'end')); - } elsif ($slot_status == $res->RESERVED_LOCATION) { - return &mt('Reserved - specific location(s) - ends [_1]', - timeToHumanString($slot_time,'end')); - } elsif ($slot_status == $res->RESERVED_LATER) { - return &mt('Reserved - next open [_1]', - timeToHumanString($slot_time,'start')); - } elsif ($slot_status == $res->RESERVABLE) { - return &mt('Reservable ending [_1]', - timeToHumanString($slot_time,'end')); - } elsif ($slot_status == $res->RESERVABLE_LATER) { - return &mt('Reservable starting [_1]', - timeToHumanString($slot_time,'start')); - } elsif ($slot_status == $res->NOT_IN_A_SLOT) { - return &mt('Reserve a time/place to work'); - } elsif ($slot_status == $res->NOTRESERVABLE) { - return &mt('Reservation not available'); - } elsif ($slot_status == $res->WAITING_FOR_GRADE) { - return &mt('Submission in grading queue'); - } - } - } if ($status == $res->OPEN) { if ($due) { if ($res->is_practice()) { @@ -880,6 +848,11 @@ sub render_resource { my $link = $params->{"resourceLink"}; # The URL part is not escaped at this point, but the symb is... + # The stuff to the left of the ? must have ' replaced by \' since + # it will be quoted with ' in the href. + + my ($left,$right) = split(/\?/, $link); + $link = $left.'?'.$right; my $src = $resource->src(); my $it = $params->{"iterator"}; @@ -892,8 +865,7 @@ sub render_resource { my $location=&Apache::loncommon::lonhttpdurl("/adm/lonIcons"); # If this is a new branch, label it so if ($params->{'isNewBranch'}) { - $newBranchText = ''.
-                         &mt('Branch').''; + $newBranchText = "Branch"; } # links to open and close the folder @@ -994,9 +966,9 @@ sub render_resource { # Is this the current resource? if (!$params->{'displayedHereMarker'} && $resource->symb() eq $params->{'here'} ) { - $curMarkerBegin = '>'; - $curMarkerEnd = '<'; - $params->{'displayedHereMarker'} = 1; + $curMarkerBegin = ''; + $curMarkerEnd = ''; + $params->{'displayedHereMarker'} = 1; } if ($resource->is_problem() && $part ne '0' && @@ -1422,15 +1394,15 @@ sub render { my $location=&Apache::loncommon::lonhttpdurl("/adm/lonMisc"); if ($navmap->{LAST_CHECK}) { $result .= - ' '.&mt('New discussion since').' '. + ' '.&mt('New discussion since').' '. strftime("%A, %b %e at %I:%M %P", localtime($navmap->{LAST_CHECK})). '  '. - ' '.&mt('New message (click to open)').'

'. + ' '.&mt('New message (click to open)').'

'. ''; } else { $result .= '  '. - ' '.&mt('Discussions').''. - '   '.&mt('New message (click to open)'). + ' '.&mt('Discussions').''. + '   '.&mt('New message (click to open)'). ''; } @@ -3498,11 +3470,7 @@ sub navHash { my $self = shift; my $param = shift; my $id = shift; - my $arg = $param . ($id?$self->{ID}:""); - if (defined($arg)) { - return $self->{NAV_MAP}->navhash($arg); - } - return; + return $self->{NAV_MAP}->navhash($param . ($id?$self->{ID}:"")); } =pod @@ -3976,35 +3944,6 @@ sub awarded { if (!defined($part)) { $part = '0'; } return $self->{NAV_MAP}->{STUDENT_DATA}->{$self->symb()}->{'resource.'.$part.'.awarded'}; } -sub taskversion { - my $self = shift; my $part = shift; - $self->{NAV_MAP}->get_user_data(); - if (!defined($part)) { $part = '0'; } - return $self->{NAV_MAP}->{STUDENT_DATA}->{$self->symb()}->{'resource.'.$part.'.version'}; -} -sub taskstatus { - my $self = shift; my $part = shift; - $self->{NAV_MAP}->get_user_data(); - if (!defined($part)) { $part = '0'; } - return $self->{NAV_MAP}->{STUDENT_DATA}->{$self->symb()}->{'resource.'.$self->taskversion($part).'.'.$part.'.status'}; -} -sub solved { - my $self = shift; my $part = shift; - $self->{NAV_MAP}->get_user_data(); - if (!defined($part)) { $part = '0'; } - return $self->{NAV_MAP}->{STUDENT_DATA}->{$self->symb()}->{'resource.'.$part.'.solved'}; -} -sub checkedin { - my $self = shift; my $part = shift; - $self->{NAV_MAP}->get_user_data(); - if (!defined($part)) { $part = '0'; } - if ($self->is_task()) { - my $version = $self->taskversion($part); - return ($self->{NAV_MAP}->{STUDENT_DATA}->{$self->symb()}->{'resource.'.$version .'.'.$part.'.checkedin'},$self->{NAV_MAP}->{STUDENT_DATA}->{$self->symb()}->{'resource.'.$version .'.'.$part.'.checkedin.slot'}); - } else { - return ($self->{NAV_MAP}->{STUDENT_DATA}->{$self->symb()}->{'resource.'.$part.'.checkedin'},$self->{NAV_MAP}->{STUDENT_DATA}->{$self->symb()}->{'resource.'.$part.'.checkedin.slot'}); - } -} # this should work exactly like the copy in lonhomework.pm sub duedate { (my $self, my $part) = @_; @@ -4100,14 +4039,6 @@ sub part_display { } return $display; } -sub slot_control { - my $self=shift(); my $part = shift(); - if (!defined($part)) { $part = '0'; } - my $useslots = $self->parmval("useslots", $part); - my $availablestudent = $self->parmval("availablestudent", $part); - my $available = $self->parmval("available", $part); - return ($useslots,$availablestudent,$available); -} # Multiple things need this sub getReturnHash { @@ -4756,17 +4687,6 @@ sub TRIES_LEFT { return 20; } sub ANSWER_SUBMITTED { return 21; } sub PARTIALLY_CORRECT{ return 22; } -sub RESERVED_LATER { return 30; } -sub RESERVED { return 31; } -sub RESERVED_LOCATION { return 32; } -sub RESERVABLE { return 33; } -sub RESERVABLE_LATER { return 34; } -sub NOTRESERVABLE { return 35; } -sub NOT_IN_A_SLOT { return 36; } -sub NEEDS_CHECKIN { return 37; } -sub WAITING_FOR_GRADE { return 38; } -sub UNKNOWN { return 39; } - sub status { my $self = shift; my $part = shift; @@ -4858,108 +4778,6 @@ sub status { return OPEN; } -sub check_for_slot { - my $self = shift; - my $part = shift; - my ($use_slots,$available,$availablestudent) = $self->slot_control($part); - if (($use_slots ne '') && ($use_slots !~ /^\s*no\s*$/i)) { - my @slots = (split(/:/,$availablestudent),split(/:/,$available)); - my $cid=$env{'request.course.id'}; - my $cdom=$env{'course.'.$cid.'.domain'}; - my $cnum=$env{'course.'.$cid.'.num'}; - my $now = time; - if (@slots > 0) { - my %slots=&Apache::lonnet::get('slots',[@slots],$cdom,$cnum); - if (&Apache::lonnet::error(%slots)) { - return (UNKNOWN); - } - my @sorted_slots = &Apache::loncommon::sorted_slots(\@slots,\%slots); - my ($checkedin,$checkedinslot); - foreach my $slot_name (@sorted_slots) { - next if (!defined($slots{$slot_name}) || - !ref($slots{$slot_name})); - my $end = $slots{$slot_name}->{'endtime'}; - my $start = $slots{$slot_name}->{'starttime'}; - my $ip = $slots{$slot_name}->{'ip'}; - if ($self->simpleStatus() == OPEN) { - my $startreserve = $slots{$slot_name}->{'startreserve'}; - my @proctors; - if ($slots{$slot_name}->{'proctor'} ne '') { - @proctors = split(',',$slots{$slot_name}->{'proctor'}); - } - if ($end > $now) { - ($checkedin,$checkedinslot) = $self->checkedin(); - if ($startreserve < $now) { - if ($start > $now) { - return (RESERVED_LATER,$start,$slot_name); - } else { - if ($ip ne '') { - if (!&Apache::loncommon::check_ip_acc($ip)) { - return (RESERVED_LOCATION,$ip,$slot_name); - } - } - if (@proctors > 0) { - unless ((grep(/^\Q$checkedin\E/,@proctors)) && - ($checkedinslot eq $slot_name)) { - return (NEEDS_CHECKIN,undef,$slot_name); - } - } - return (RESERVED,$end,$slot_name); - } - } else { - if ($start > $now) { - return (RESERVABLE,$startreserve,$slot_name); - } - } - } - } - } - my ($is_correct,$got_grade); - if ($self->is_task()) { - my $taskstatus = $self->taskstatus(); - $is_correct = (($taskstatus eq 'pass') || - ($self->solved() =~ /^correct_/)); - $got_grade = ($self->solved() =~ /^(?:pass|fail)$/); - } else { - $got_grade = 1; - $is_correct = ($self->solved() =~ /^correct_/); - } - ($checkedin,$checkedinslot) = $self->checkedin(); - if ($checkedin) { - if (!$got_grade) { - return (WAITING_FOR_GRADE); - } elsif ($is_correct) { - return (CORRECT); - } - } - return(NOT_IN_A_SLOT); - } else { - if (!$future_slots_checked) { - $future_slots = &get_future_slots($cdom,$cnum,$now); - $future_slots_checked = 1; - } - if ($future_slots) { - return(NOT_IN_A_SLOT); - } - return(NOTRESERVABLE); - } - } - return; -} - -sub get_future_slots { - my ($cdom,$cnum,$now) = @_; - my %slots=&Apache::lonnet::dump('slots',$cdom,$cnum); - my $future_slots = 0; - foreach my $slot (keys(%slots)) { - if (($slots{$slot}->{'starttime'} > $now) && - ($slots{$slot}->{'endtime'} > $now)) { - $future_slots ++; - } - } - return $future_slots; -} - sub CLOSED { return 23; } sub ERROR { return 24; }