Diff for /loncom/interface/lonhelper.pm between versions 1.161.2.1 and 1.174

version 1.161.2.1, 2007/10/02 00:33:02 version 1.174, 2009/06/12 15:31:30
Line 188  use Apache::lonlocal; Line 188  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::longroup;  use Apache::longroup;
 use Apache::lonselstudent;  use Apache::lonselstudent;
   
   
 use LONCAPA;  use LONCAPA;
   
 # Register all the tags with the helper, so the helper can   # Register all the tags with the helper, so the helper can 
Line 529  sub process { Line 531  sub process {
     # Phase 1: Post processing for state of previous screen (which is actually      # Phase 1: Post processing for state of previous screen (which is actually
     # the "current state" in terms of the helper variables), if it wasn't the       # the "current state" in terms of the helper variables), if it wasn't the 
     # beginning state.      # beginning state.
     if ($self->{STATE} ne "START" || $env{"form.SUBMIT"} eq &mt("Next ->")) {      if ($self->{STATE} ne "START" || $env{"form.SUBMIT"} eq &mt("Next")) {
  my $prevState = $self->{STATES}{$self->{STATE}};   my $prevState = $self->{STATES}{$self->{STATE}};
         $prevState->postprocess();          $prevState->postprocess();
     }      }
Line 587  sub display { Line 589  sub display {
  &Apache::loncommon::browser_and_searcher_javascript().   &Apache::loncommon::browser_and_searcher_javascript().
  "\n".'</script>';   "\n".'</script>';
   
       # Breadcrumbs
       my $brcrum = [{'href' => '',
                      'text' => 'Helper'}];
       # FIXME: Dynamically add context sensitive breadcrumbs
       #        depending on the caller,
       #        e.g. printing, parametrization, etc.
       # FIXME: Add breadcrumbs to reflect current helper state
   
     $result .= &Apache::loncommon::start_page($self->{TITLE},      $result .= &Apache::loncommon::start_page($self->{TITLE},
       $browser_searcher_js);                                                $browser_searcher_js,
                                                     {'bread_crumbs' => $brcrum,});
     my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"');  
     my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"');      my $previous = HTML::Entities::encode(&mt("Back"), '<>&"');
       my $next = HTML::Entities::encode(&mt("Next"), '<>&"');
     # FIXME: This should be parameterized, not concatenated - Jeremy      # FIXME: This should be parameterized, not concatenated - Jeremy
   
   
     if (!$state->overrideForm()) { $result.="<form name='helpform' method='POST'>"; }      if (!$state->overrideForm()) { $result.='<form name="helpform" method="post">'; }
     if ($stateHelp) {      if ($stateHelp) {
  $stateHelp = &Apache::loncommon::help_open_topic($stateHelp);   $stateHelp = &Apache::loncommon::help_open_topic($stateHelp);
     }      }
Line 624  HEADER Line 635  HEADER
             $result .= "<a href=\"$returnPage\">" . &mt("End Helper") . "</a>";              $result .= "<a href=\"$returnPage\">" . &mt("End Helper") . "</a>";
         }          }
         else {          else {
             $result .= '<nobr><input name="back" type="button" ';              $result .= '<span class="LC_nobreak"><input name="back" type="button" ';
             $result .= 'value="' . $previous . '" onclick="history.go(-1)" /> ';              $result .= 'value="' . $previous . '" onclick="history.go(-1)" /> ';
             $result .= '<input name="SUBMIT" type="submit" value="' . $next . '" /></nobr>';              $result .= '<input name="SUBMIT" type="submit" value="' . $next . '" /></span>';
         }          }
     }      }
   
Line 643  HEADER Line 654  HEADER
             $result .= "<a href=\"$returnPage\">" . &mt('End Helper') . "</a>";              $result .= "<a href=\"$returnPage\">" . &mt('End Helper') . "</a>";
         }          }
         else {          else {
             $result .= '<nobr><input name="back" type="button" ';              $result .= '<span class="LC_nobreak"><input name="back" type="button" ';
             $result .= 'value="' . $previous . '" onclick="history.go(-1)" /> ';              $result .= 'value="' . $previous . '" onclick="history.go(-1)" /> ';
             $result .= '<input name="SUBMIT" type="submit" value="' . $next . '" /></nobr>';              $result .= '<input name="SUBMIT" type="submit" value="' . $next . '" /></span>';
         }          }
     }      }
   
Line 1008  sub start_message { Line 1019  sub start_message {
     if (defined($token->[2]{'nextstate'})) {      if (defined($token->[2]{'nextstate'})) {
         $paramHash->{NEXTSTATE} = $token->[2]{'nextstate'};          $paramHash->{NEXTSTATE} = $token->[2]{'nextstate'};
     }      }
       if (defined($token->[2]{'type'})) {
           $paramHash->{TYPE} = $token->[2]{'type'};
       }
     return '';      return '';
 }  }
   
Line 1023  sub end_message { Line 1037  sub end_message {
   
 sub render {  sub render {
     my $self = shift;      my $self = shift;
       
       if ($self->{TYPE} =~ /^\s*warning\s*$/i) {
    $self->{MESSAGE_TEXT} = 
        '<span class="LC_warning">'. $self->{MESSAGE_TEXT}.'</span>';
       }
       if ($self->{TYPE} =~ /^\s*error\s*$/i) {
    $self->{MESSAGE_TEXT} = 
        '<span class="LC_error">'. $self->{MESSAGE_TEXT}.'</span>';
       }
     return $self->{MESSAGE_TEXT};      return $self->{MESSAGE_TEXT};
 }  }
 # If a NEXTSTATE was given, switch to it  # If a NEXTSTATE was given, switch to it
Line 1497  sub postprocess { Line 1519  sub postprocess {
     my $self = shift;      my $self = shift;
     my $chosenValue = $env{'form.' . $self->{'variable'} . '_forminput'};      my $chosenValue = $env{'form.' . $self->{'variable'} . '_forminput'};
   
   
     if (!defined($chosenValue) && !$self->{'allowempty'}) {      if (!defined($chosenValue) && !$self->{'allowempty'}) {
         $self->{ERROR_MSG} =           $self->{ERROR_MSG} = 
     &mt("You must choose one or more choices to continue.");      &mt("You must choose one or more choices to continue.");
         return 0;          return 0;
     }      }
   
   
   
     if (ref($chosenValue)) {      if (ref($chosenValue)) {
         $helper->{VARS}->{$self->{'variable'}} = join('|||', @$chosenValue);          $helper->{VARS}->{$self->{'variable'}} = join('|||', @$chosenValue);
     }      }
Line 1714  no strict; Line 1739  no strict;
 use strict;  use strict;
 use Apache::lonlocal; # A localization nightmare  use Apache::lonlocal; # A localization nightmare
 use Apache::lonnet;  use Apache::lonnet;
 use Time::localtime;  use DateTime;
   
 BEGIN {  BEGIN {
     &Apache::lonhelper::register('Apache::lonhelper::date',      &Apache::lonhelper::register('Apache::lonhelper::date',
Line 1764  sub render { Line 1789  sub render {
     my $time=time;      my $time=time;
     my ($anytime,$onclick);      my ($anytime,$onclick);
   
   
     # first check VARS for a valid new value from the user      # first check VARS for a valid new value from the user
     # then check DEFAULT_VALUE for a valid default time value      # then check DEFAULT_VALUE for a valid default time value
     # otherwise pick now as reasonably good time      # otherwise pick now as reasonably good time
   
     if (defined($helper->{VARS}{$var})      if (defined($helper->{VARS}{$var})
  &&  $helper->{VARS}{$var} > 0) {   &&  $helper->{VARS}{$var} > 0) {
  $date = localtime($helper->{VARS}{$var});          $date = &get_date_object($helper->{VARS}{$var}); 
     } elsif (defined($self->{DEFAULT_VALUE})) {      } elsif (defined($self->{DEFAULT_VALUE})) {
         my $valueFunc = eval($self->{DEFAULT_VALUE});          my $valueFunc = eval($self->{DEFAULT_VALUE});
         die('Error in default value code for variable ' .           die('Error in default value code for variable ' . 
Line 1779  sub render { Line 1803  sub render {
         $time = &$valueFunc($helper, $self);          $time = &$valueFunc($helper, $self);
  if (lc($time) eq 'anytime') {   if (lc($time) eq 'anytime') {
     $anytime=1;      $anytime=1;
     $date = localtime(time);      $date = &get_date_object(time);
     $date->min(0);      $date->min(0);
  } elsif (defined($time) && $time ne 0) {   } elsif (defined($time) && $time ne 0) {
     $date = localtime($time);      $date = &get_date_object($time);
  } else {   } else {
     # leave date undefined so it'll default to now      # leave date undefined so it'll default to now
  }   }
     }      }
   
     if (!defined($date)) {      if (!defined($date)) {
  $date = localtime(time);   $date = &get_date_object(time);
  $date->min(0);   $date->min(0);
     }      }
   
Line 1806  sub render { Line 1830  sub render {
     my $i;      my $i;
     $result .= "<select $onclick name='${var}month'>\n";      $result .= "<select $onclick name='${var}month'>\n";
     for ($i = 0; $i < 12; $i++) {      for ($i = 0; $i < 12; $i++) {
         if ($i == $date->mon) {          if (($i + 1) == $date->mon) {
             $result .= "<option value='$i' selected='selected'>";              $result .= "<option value='$i' selected='selected'>";
         } else {          } else {
             $result .= "<option value='$i'>";              $result .= "<option value='$i'>";
         }          }
         $result .= &mt($months[$i]) . "</option>\n";          $result .= &mt($months[$i])."</option>\n";
     }      }
     $result .= "</select>\n";      $result .= "</select>\n";
   
Line 1830  sub render { Line 1854  sub render {
     # Year      # Year
     $result .= "<select $onclick name='${var}year'>\n";      $result .= "<select $onclick name='${var}year'>\n";
     for ($i = 2000; $i < 2030; $i++) { # update this after 64-bit dates      for ($i = 2000; $i < 2030; $i++) { # update this after 64-bit dates
         if ($date->year + 1900 == $i) {          if ($date->year == $i) {
             $result .= "<option selected='selected'>";              $result .= "<option selected='selected'>";
         } else {          } else {
             $result .= "<option>";              $result .= "<option>";
Line 1885  sub render { Line 1909  sub render {
         }          }
         $result .= "</select>\n";          $result .= "</select>\n";
     }      }
       $result  .= ' '.$date->time_zone_short_name().' ';
     if ($self->{'anytime'}) {      if ($self->{'anytime'}) {
  $result.=(<<CHECK);   $result.=(<<CHECK);
 <script type="text/javascript">  <script type="text/javascript">
Line 1912  sub postprocess { Line 1937  sub postprocess {
     if ($env{'form.' . $var . 'anytime'}) {      if ($env{'form.' . $var . 'anytime'}) {
  $helper->{VARS}->{$var} = undef;   $helper->{VARS}->{$var} = undef;
     } else {      } else {
  my $month = $env{'form.' . $var . 'month'};    my $month = $env{'form.' . $var . 'month'};
           $month ++;
  my $day = $env{'form.' . $var . 'day'};    my $day = $env{'form.' . $var . 'day'}; 
  my $year = $env{'form.' . $var . 'year'};    my $year = $env{'form.' . $var . 'year'}; 
  my $min = 0;    my $min = 0; 
Line 1922  sub postprocess { Line 1948  sub postprocess {
     $hour = $env{'form.' . $var . 'hour'};      $hour = $env{'form.' . $var . 'hour'};
  }   }
   
  my $chosenDate;   my ($chosenDate,$checkDate);
  eval {$chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);};          my $timezone = &Apache::lonlocal::gettimezone();
           my $dt;
    eval {
                  $dt = DateTime->new( year   => $year,
                                       month  => $month,
                                       day    => $day,
                                       hour   => $hour,
                                       minute => $min,
                                       second => 0,
                                       time_zone => $timezone,
                                );
           };
   
  my $error = $@;   my $error = $@;
           if (!$error) {
               $chosenDate  = $dt->epoch;
               $checkDate = &get_date_object($chosenDate);
           }
   
  # Check to make sure that the date was not automatically co-erced into a    # Check to make sure that the date was not automatically co-erced into a 
  # valid date, as we want to flag that as an error   # valid date, as we want to flag that as an error
  # This happens for "Feb. 31", for instance, which is coerced to March 2 or   # This happens for "Feb. 31", for instance, which is coerced to March 2 or
  # 3, depending on if it's a leap year   # 3, depending on if it's a leap year
  my $checkDate = localtime($chosenDate);  
   
  if ($error || $checkDate->mon != $month || $checkDate->mday != $day ||   if ($error || $checkDate->mon != $month || $checkDate->mday != $day ||
     $checkDate->year + 1900 != $year) {      $checkDate->year != $year) {
     unless (Apache::lonlocal::current_language()== ~/^en/) {      unless (Apache::lonlocal::current_language()== ~/^en/) {
  $self->{ERROR_MSG} = &mt("Invalid date entry");   $self->{ERROR_MSG} = &mt("Invalid date entry");
  return 0;   return 0;
     }      }
     # LOCALIZATION FIXME: Needs to be parameterized      # LOCALIZATION FIXME: Needs to be parameterized
     $self->{ERROR_MSG} = "Can't use " . $months[$month] . " $day, $year as a "      $self->{ERROR_MSG} = "Can't use ".$months[$env{'form.'.$var.'month'}].                                 " $day, $year as a ".
  . "date because it doesn't exist. Please enter a valid date.";                   "date because it doesn't exist. Please enter a valid date.";
   
     return 0;      return 0;
  }   }
Line 1963  sub postprocess { Line 2004  sub postprocess {
   
     return 1;      return 1;
 }  }
   
   sub get_date_object {
       my ($epoch) = @_;
       my $dt = DateTime->from_epoch(epoch => $epoch)
                        ->set_time_zone(&Apache::lonlocal::gettimezone());
       my $lang = Apache::lonlocal::current_language();
       if ($lang ne '') {
           eval {
               $dt->set_locale($lang);
           };
       }
       return $dt;
   }
   
 1;  1;
   
 package Apache::lonhelper::resource;  package Apache::lonhelper::resource;
Line 1989  folders that have all of their contained Line 2044  folders that have all of their contained
 be filtered out. The 'addstatus' attribute, if true, will add the icon  be filtered out. The 'addstatus' attribute, if true, will add the icon
 and long status display columns to the display. The 'addparts'  and long status display columns to the display. The 'addparts'
 attribute will add in a part selector beside problems that have more  attribute will add in a part selector beside problems that have more
 than 1 part.  than 1 part. The 'includecourse' attribute if true, will include
   the toplevel default.sequence in the results.
   
 =head3 SUB-TAGS  =head3 SUB-TAGS
   
Line 2062  sub start_resource { Line 2118  sub start_resource {
  $helper->declareVar($paramHash->{'variable'}.'_part');   $helper->declareVar($paramHash->{'variable'}.'_part');
     }      }
     $paramHash->{'closeallpages'} = $token->[2]{'closeallpages'};      $paramHash->{'closeallpages'} = $token->[2]{'closeallpages'};
       $paramHash->{'include_top_level_map'} = $token->[2]{'includecourse'};
     return '';      return '';
 }  }
   
Line 2387  RADIO Line 2444  RADIO
                                        'resource_no_folder_link' => 1,                                         'resource_no_folder_link' => 1,
        'closeAllPages' => $self->{'closeallpages'},         'closeAllPages' => $self->{'closeallpages'},
                                        'suppressEmptySequences' => $self->{'suppressEmptySequences'},                                         'suppressEmptySequences' => $self->{'suppressEmptySequences'},
          'include_top_level_map' => $self->{'include_top_level_map'},
                                        'iterator_map' => $mapUrl }                                         'iterator_map' => $mapUrl }
                                        );                                         );
   
Line 2402  sub postprocess { Line 2460  sub postprocess {
         $self->{ERROR_MSG} = 'You must choose at least one resource to continue.';          $self->{ERROR_MSG} = 'You must choose at least one resource to continue.';
         return 0;          return 0;
     }      }
       # For each of the attached options.  If it's env var is undefined, set it to
       # an empty string instead.. an undef'd env var means no choices selected.
       #
   
       my $option_vars = $self->{OPTION_VARS};
       if ($option_vars) {
    foreach my $var (@$option_vars) {
       my $env_name = "form.".$var."_forminput";
       if (!defined($env{$env_name})) {
    $env{$env_name} = '';
    $helper->{VARS}->{$var} = '';
       }
    }
       }
   
   
     if (defined($self->{NEXTSTATE})) {      if (defined($self->{NEXTSTATE})) {
         $helper->changeState($self->{NEXTSTATE});          $helper->changeState($self->{NEXTSTATE});
Line 2818  BUTTONS Line 2891  BUTTONS
     &Apache::loncacc::constructaccess($subdir,      &Apache::loncacc::constructaccess($subdir,
      $Apache::lonnet::perlvar{'lonDefDomain'});       $Apache::lonnet::perlvar{'lonDefDomain'});
  $metadir='/res/'.$domain.'/'.$user.'/'.$2;   $metadir='/res/'.$domain.'/'.$user.'/'.$2;
         @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');          @fileList = &Apache::lonnet::dirlist($subdir,$domain,$user,undef,undef,'/');
     } elsif ($subdir =~ m|^~([^/]+)/(.*)$|) {      } elsif ($subdir =~ m|^~([^/]+)/(.*)$|) {
  $subdir='/home/'.$1.'/public_html/'.$2;   $subdir='/home/'.$1.'/public_html/'.$2;
  my ($user,$domain)=    my ($user,$domain)= 
     &Apache::loncacc::constructaccess($subdir,      &Apache::loncacc::constructaccess($subdir,
      $Apache::lonnet::perlvar{'lonDefDomain'});       $Apache::lonnet::perlvar{'lonDefDomain'});
  $metadir='/res/'.$domain.'/'.$user.'/'.$2;   $metadir='/res/'.$domain.'/'.$user.'/'.$2;
         @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');          @fileList = &Apache::lonnet::dirlist($subdir,$domain,$user,undef,undef,'/');
     } else {      } else {
         # local library server resource space          # local library server resource space
         @fileList = &Apache::lonnet::dirlist($subdir, $env{'user.domain'}, $env{'user.name'}, '');          @fileList = &Apache::lonnet::dirlist($subdir,$env{'user.domain'},$env{'user.name'},undef,undef,'/');
     }      }
   
     # Sort the fileList into order      # Sort the fileList into order
Line 3498  sub render { Line 3571  sub render {
  }   }
  my $finish=&mt('Finish Course Initialization');   my $finish=&mt('Finish Course Initialization');
     }      }
     my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"');      my $previous = HTML::Entities::encode(&mt("Back"), '<>&"');
     my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"');      my $next = HTML::Entities::encode(&mt("Next"), '<>&"');
     my $target = " target='loncapaclient'";      my $target = " target='loncapaclient'";
     if (($env{'browser.interface'} eq 'textual') ||      if ($env{'environment.remote'} eq 'off') {  $target='';  }
         ($env{'environment.remote'} eq 'off')) {  $target='';  }  
     $result .= "<center>\n" .      $result .= "<center>\n" .
  "<form action='".$actionURL."' method='post' $target>\n" .   "<form action='".$actionURL."' method='post' $target>\n" .
  "<input type='button' onclick='history.go(-1)' value='$previous' />" .   "<input type='button' onclick='history.go(-1)' value='$previous' />" .
Line 3589  sub render { Line 3661  sub render {
           
     # Print the granularity, depending on the action      # Print the granularity, depending on the action
     if ($vars->{GRANULARITY} eq 'whole_course') {      if ($vars->{GRANULARITY} eq 'whole_course') {
         $resourceString .= '<li>'.&mt('for <b>all resources in the course</b>').'</li>';          $resourceString .= '<li>'.&mt('for [_1]all resources in the course[_2]','<b>','</b>').'</li>';
  if ($vars->{TARGETS} eq 'course') {   if ($vars->{TARGETS} eq 'course') {
     $level = 14; # general course, see lonparmset.pm perldoc      $level = 14; # general course, see lonparmset.pm perldoc
  } elsif ($vars->{TARGETS} eq 'section') {   } elsif ($vars->{TARGETS} eq 'section') {
Line 3604  sub render { Line 3676  sub render {
         $paramlevel = 'general';          $paramlevel = 'general';
     } elsif ($vars->{GRANULARITY} eq 'map') {      } elsif ($vars->{GRANULARITY} eq 'map') {
         my $navmap = Apache::lonnavmaps::navmap->new();          my $navmap = Apache::lonnavmaps::navmap->new();
         my $res = $navmap->getByMapPc($vars->{RESOURCE_ID});          if (defined($navmap)) {
         my $title = $res->compTitle();               my $res = $navmap->getByMapPc($vars->{RESOURCE_ID});
         $symb = $res->symb();               my $title = $res->compTitle();
         $resourceString .= '<li>'.&mt('for the map named [_1]',"<b>$title</b>").'</li>';               $symb = $res->symb();
                $resourceString .= '<li>'.&mt('for the map named [_1]',"<b>$title</b>").'</li>';
           } else {
               $resourceString .= '<li>'.&mt('for the map ID [_1] (name unavailable)','<b>'.$vars->{RESOURCE_ID}.'</b>').'</li>';
               &Apache::lonnet::logthis('Retrieval of map title failed in lonhelper.pm - could not create navmap object for course.');
   
           }
  if ($vars->{TARGETS} eq 'course') {   if ($vars->{TARGETS} eq 'course') {
     $level = 13; # general course, see lonparmset.pm perldoc      $level = 13; # general course, see lonparmset.pm perldoc
  } elsif ($vars->{TARGETS} eq 'section') {   } elsif ($vars->{TARGETS} eq 'section') {
Line 3620  sub render { Line 3698  sub render {
         $affectedResourceId = $vars->{RESOURCE_ID};          $affectedResourceId = $vars->{RESOURCE_ID};
         $paramlevel = 'map';          $paramlevel = 'map';
     } else {      } else {
         my $navmap = Apache::lonnavmaps::navmap->new();  
         my $res = $navmap->getById($vars->{RESOURCE_ID});  
         my $part = $vars->{RESOURCE_ID_part};          my $part = $vars->{RESOURCE_ID_part};
  if ($part ne 'All Parts' && $part) { $parm_name=~s/^0/$part/; } else { $part=&mt('All Parts'); }   if ($part ne 'All Parts' && $part) { $parm_name=~s/^0/$part/; } else { $part=&mt('All Parts'); }
         $symb = $res->symb();          my $navmap = Apache::lonnavmaps::navmap->new();
         my $title = $res->compTitle();          if (defined($navmap)) {
         $resourceString .= '<li>'.&mt('for the resource named [_1] part [_2]',"<b>$title</b>","<b>$part</b>").'</li>';              my $res = $navmap->getById($vars->{RESOURCE_ID});
               $symb = $res->symb();
               my $title = $res->compTitle();
               $resourceString .= '<li>'.&mt('for the resource named [_1] part [_2]',"<b>$title</b>","<b>$part</b>").'</li>';
           } else {
               $resourceString .= '<li>'.&mt('for the resource ID [_1] (name unavailable) part [_2]','<b>'.$vars->{RESOURCE_ID}.'</b>',"<b>$part</b>").'</li>';
               &Apache::lonnet::logthis('Retrieval of resource title failed in lonhelper.pm - could not create navmap object for course.');
           }
  if ($vars->{TARGETS} eq 'course') {   if ($vars->{TARGETS} eq 'course') {
     $level = 10; # general course, see lonparmset.pm perldoc      $level = 10; # general course, see lonparmset.pm perldoc
  } elsif ($vars->{TARGETS} eq 'section') {   } elsif ($vars->{TARGETS} eq 'section') {
Line 3640  sub render { Line 3723  sub render {
         $paramlevel = 'full';          $paramlevel = 'full';
     }      }
   
     my $result = "<form name='helpform' method='POST' action='/adm/parmset#$affectedResourceId&$parm_name&$level'>\n";      my $result = "<form name='helpform' method='post' action='/adm/parmset#$affectedResourceId&$parm_name&$level'>\n";
     $result .= "<input type='hidden' name='action' value='settable' />\n";      $result .= "<input type='hidden' name='action' value='settable' />\n";
     $result .= "<input type='hidden' name='dis' value='helper' />\n";      $result .= "<input type='hidden' name='dis' value='helper' />\n";
     $result .= "<input type='hidden' name='pscat' value='".      $result .= "<input type='hidden' name='pscat' value='".
Line 3705  sub render { Line 3788  sub render {
           
     # Print targets      # Print targets
     if ($vars->{TARGETS} eq 'course') {      if ($vars->{TARGETS} eq 'course') {
         $result .= '<li>'.&mt('for <b>all students in course</b>').'</li>';          $result .= '<li>'.&mt('for [_1]all students in course[_2]','<b>','</b>').'</li>';
     } elsif ($vars->{TARGETS} eq 'section') {      } elsif ($vars->{TARGETS} eq 'section') {
         my $section = $vars->{SECTION_NAME};          my $section = $vars->{SECTION_NAME};
         $result .= '<li>'.&mt('for section [_1]',"<b>$section</b>").'</li>';          $result .= '<li>'.&mt('for section [_1]',"<b>$section</b>").'</li>';
Line 3730  sub render { Line 3813  sub render {
   
     # Print value      # Print value
     if ($vars->{ACTION_TYPE} ne 'tries' && $vars->{ACTION_TYPE} ne 'weight') {      if ($vars->{ACTION_TYPE} ne 'tries' && $vars->{ACTION_TYPE} ne 'weight') {
  $result .= '<li>'.&mt('to [_1] ([_2])',"<b>".ctime($vars->{PARM_DATE})."</b>",Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE}))."</li>\n";          my $showdate = &Apache::lonlocal::locallocaltime($vars->{PARM_DATE});
    $result .= '<li>'.&mt('to [_1] ([_2])',"<b>".$showdate."</b>",Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE}))."</li>\n";
     }      }
     
     # print pres_marker      # print pres_marker

Removed from v.1.161.2.1  
changed lines
  Added in v.1.174


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>