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

version 1.161, 2007/07/25 23:20:38 version 1.167, 2008/12/06 12:49:18
Line 1008  sub start_message { Line 1008  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 1026  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 1488  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 1714  no strict; Line 1725  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 1775  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 1789  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 1816  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 1840  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 1895  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 1923  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 1934  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 1990  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 2030  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 2104  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 2430  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 2818  BUTTONS Line 2862  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 3589  sub render { Line 3633  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 3705  sub render { Line 3749  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 3774  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.167


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