Diff for /loncom/interface/lonhelper.pm between versions 1.161 and 1.173

version 1.161, 2007/07/25 23:20:38 version 1.173, 2009/05/27 16:54:57
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 590  sub display { Line 592  sub display {
     $result .= &Apache::loncommon::start_page($self->{TITLE},      $result .= &Apache::loncommon::start_page($self->{TITLE},
       $browser_searcher_js);        $browser_searcher_js);
           
     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"), '<>&"');
     # 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 626  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 645  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 1010  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 1028  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 1477  BUTTONS Line 1490  BUTTONS
             $choiceLabel = &$choiceLabel($helper, $self);              $choiceLabel = &$choiceLabel($helper, $self);
         }          }
         $result .= "/></td><td> ".qq{<label for="id$id">}.          $result .= "/></td><td> ".qq{<label for="id$id">}.
             &mtn($choiceLabel). "</label></td>";      $choiceLabel. "</label></td>";
  if ($choice->[4]) {   if ($choice->[4]) {
     $result .='<td><input type="text" size="5" name="'      $result .='<td><input type="text" size="5" name="'
  .$choice->[4].'_forminput" value="'   .$choice->[4].'_forminput" value="'
Line 1497  sub postprocess { Line 1510  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 1730  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 1780  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 1794  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 1821  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 1845  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 1900  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 1928  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 1939  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 1995  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 2035  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 2109  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 2435  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 2451  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 2882  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 3562  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 3652  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 3667  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 3689  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 3714  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 3779  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 3804  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  
changed lines
  Added in v.1.173


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