Diff for /loncom/interface/lonhelper.pm between versions 1.178 and 1.188

version 1.178, 2010/01/26 11:34:47 version 1.188, 2011/12/18 17:15:03
Line 261  sub real_handler { Line 261  sub real_handler {
     my $uri = shift;      my $uri = shift;
     if (!defined($uri)) { $uri = $r->uri(); }      if (!defined($uri)) { $uri = $r->uri(); }
     $env{'request.uri'} = $uri;      $env{'request.uri'} = $uri;
     my $filename = '/home/httpd/html' . $uri;      my $filename = $r->dir_config('lonDocRoot').$uri;
     my $fh = Apache::File->new($filename);      my $fh = Apache::File->new($filename);
     my $file;      my $file;
     read $fh, $file, 100000000;      read $fh, $file, 100000000;
Line 571  sub process { Line 571  sub process {
 # 4: Render the current state to the screen as an HTML page.  # 4: Render the current state to the screen as an HTML page.
 sub display {  sub display {
     my $self = shift;      my $self = shift;
       my $footer = shift;
     my $state = $self->{STATES}{$self->{STATE}};      my $state = $self->{STATES}{$self->{STATE}};
   
     my $result = "";      my $result = "";
Line 606  sub display { Line 606  sub display {
     # 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" action="">'; }
     if ($stateHelp) {      if ($stateHelp) {
         $stateHelp = &Apache::loncommon::help_open_topic($stateHelp);          $stateHelp = &Apache::loncommon::help_open_topic($stateHelp);
     }      }
Line 661  sub display { Line 661  sub display {
         </form>          </form>
 FOOTER  FOOTER
   
     $result .= &Apache::loncommon::end_page();      $result .= $footer.&Apache::loncommon::end_page();
     # Handle writing out the vars to the file      # Handle writing out the vars to the file
     my $file = Apache::File->new('>'.$self->{FILENAME});      my $file = Apache::File->new('>'.$self->{FILENAME});
     print $file $self->_varsInFile();      print $file $self->_varsInFile();
Line 1476  BUTTONS Line 1476  BUTTONS
             HTML::Entities::encode($choice->[1],"<>&\"'")               HTML::Entities::encode($choice->[1],"<>&\"'") 
             . "'";              . "'";
         if ($checkedChoices{$choice->[1]}) {          if ($checkedChoices{$choice->[1]}) {
             $result .= " checked='checked' ";              $result .= " checked='checked'";
         }          }
         $result .= qq{id="id$id"};          $result .= qq{ id="id$id"};
         my $choiceLabel = $choice->[0];          my $choiceLabel = $choice->[0];
         if ($choice->[3]) {  # if we need to evaluate this choice          if ($choice->[3]) {  # if we need to evaluate this choice
             $choiceLabel = "sub { my $helper = shift; my $state = shift;" .              $choiceLabel = "sub { my $helper = shift; my $state = shift;" .
Line 1486  BUTTONS Line 1486  BUTTONS
             $choiceLabel = eval($choiceLabel);              $choiceLabel = eval($choiceLabel);
             $choiceLabel = &$choiceLabel($helper, $self);              $choiceLabel = &$choiceLabel($helper, $self);
         }          }
         $result .= "/></td><td> ".qq{<label for="id$id">}.          $result .= " /></td><td> ".qq{<label for="id$id">}.
     $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="'
Line 1913  CHECK Line 1913  CHECK
  if ($anytime) {   if ($anytime) {
     $result.=' checked="checked" '      $result.=' checked="checked" '
  }   }
  $result.="name='${var}anytime'/>".&mt('Any time').'</label>'          my $anytimetext = &mt('Any time');
           if (($var eq 'startreserve') || ($var eq 'endreserve')) {
               $anytimetext = &mt('Any time before slot starts');
           } elsif (($var eq 'startunique') || ($var eq 'endunique')) {
               $anytimetext = &mt('No restriction on uniqueness');     
           }
    $result.="name='${var}anytime'/>".$anytimetext.'</label>'
     }      }
     return $result;      return $result;
   
Line 2971  BUTTONS Line 2977  BUTTONS
     }      }
   
     # Get the list of files in this directory.      # Get the list of files in this directory.
     my @fileList;      my (@fileList,$listref,$listerror);
   
     # If the subdirectory is in local CSTR space      # If the subdirectory is in local CSTR space
     my $metadir;      my $metadir;
     if ($subdir =~ m|/home/([^/]+)/public_html/(.*)|) {      my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
  my ($user,$domain)=       if ($subdir =~ m{^(?:\Q$londocroot\E)*/priv/[^/]+/[^/]+/(.*)$}) {
     &Apache::loncacc::constructaccess($subdir,          my $innerpath=$1;
      $Apache::lonnet::perlvar{'lonDefDomain'});          unless ($subdir=~m{^\Q$londocroot\E}) {
  $metadir='/res/'.$domain.'/'.$user.'/'.$2;             $subdir=$londocroot.$subdir;
         @fileList = &Apache::lonnet::dirlist($subdir,$domain,$user,undef,undef,'/');          }
     } elsif ($subdir =~ m|^~([^/]+)/(.*)$|) {  
  $subdir='/home/'.$1.'/public_html/'.$2;  
  my ($user,$domain)=    my ($user,$domain)= 
     &Apache::loncacc::constructaccess($subdir,      &Apache::loncacc::constructaccess($subdir);
      $Apache::lonnet::perlvar{'lonDefDomain'});   $metadir='/res/'.$domain.'/'.$user.'/'.$innerpath;
  $metadir='/res/'.$domain.'/'.$user.'/'.$2;          ($listref,$listerror) =
         @fileList = &Apache::lonnet::dirlist($subdir,$domain,$user,undef,undef,'/');              &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'},undef,undef,'/');          ($listref,$listerror) = 
               &Apache::lonnet::dirlist($subdir,$env{'user.domain'},$env{'user.name'},undef,undef,'/');
     }      }
   
     # Sort the fileList into order      # Sort the fileList into order
     @fileList = sort {lc($a) cmp lc($b)} @fileList;      if (ref($listref) eq 'ARRAY') {
           @fileList = sort {lc($a) cmp lc($b)} @{$listref};
       }
   
     $result .= $buttons;      $result .= $buttons;
   
Line 3089  sub fileState { Line 3096  sub fileState {
     }      }
     my $docroot = $Apache::lonnet::perlvar{'lonDocRoot'};      my $docroot = $Apache::lonnet::perlvar{'lonDocRoot'};
     my $subdirpart = $constructionSpaceDir;      my $subdirpart = $constructionSpaceDir;
     $subdirpart =~ s/^\/home\/$uname\/public_html//;      $subdirpart =~ s{^\Q$docroot/priv/$udom/$uname\E}{};
     my $resdir = $docroot . '/res/' . $udom . '/' . $uname .      my $resdir = $docroot . '/res/' . $udom . '/' . $uname .
         $subdirpart;          $subdirpart;
   
Line 3289  package Apache::lonhelper::string; Line 3296  package Apache::lonhelper::string;
 string elements provide a string entry field for the user. string elements  string elements provide a string entry field for the user. string elements
 take the usual 'variable' and 'nextstate' parameters. string elements  take the usual 'variable' and 'nextstate' parameters. string elements
 also pass through 'maxlength' and 'size' attributes to the input tag.  also pass through 'maxlength' and 'size' attributes to the input tag.
   Since you could have multiple strings in a helper state, each with its own
   validator, all but the last string should have
   noproceed='1' so that _all_ validators are evaluated before the next
   state can be reached.
   
 string honors the defaultvalue tag, if given.  string honors the defaultvalue tag, if given.
   
Line 3308  BEGIN { Line 3319  BEGIN {
   
 sub new {  sub new {
     my $ref = Apache::lonhelper::element->new();      my $ref = Apache::lonhelper::element->new();
       $ref->{'PROCEED'} = 1;      # By default postprocess goes to next state.
     bless($ref);      bless($ref);
 }  }
   
Line 3324  sub start_string { Line 3336  sub start_string {
     $paramHash->{'nextstate'} = $token->[2]{'nextstate'};      $paramHash->{'nextstate'} = $token->[2]{'nextstate'};
     $paramHash->{'maxlength'} = $token->[2]{'maxlength'};      $paramHash->{'maxlength'} = $token->[2]{'maxlength'};
     $paramHash->{'size'} = $token->[2]{'size'};      $paramHash->{'size'} = $token->[2]{'size'};
   
     return '';      return '';
 }  }
   
 sub end_string {  sub end_string {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   
   
     if ($target ne 'helper') {      if ($target ne 'helper') {
         return '';          return '';
     }      }
     Apache::lonhelper::string->new();      my $state = Apache::lonhelper::string->new();
   
   
       if(&Apache::lonxml::get_param('noproceed', $parstack, $safeeval, undef, 1)) {
    $state->noproceed();
       }
   
      
   
     return '';      return '';
 }  }
   
   sub noproceed() {
       my $self = shift;
       $self->{PROCEED}  = 0;
   }
   
 sub render {  sub render {
     my $self = shift;      my $self = shift;
     my $result = '';      my $result = '';
Line 3346  sub render { Line 3371  sub render {
         $result .= '<p><font color="#FF0000">' . $self->{ERROR_MSG} . '</font></p>';          $result .= '<p><font color="#FF0000">' . $self->{ERROR_MSG} . '</font></p>';
     }      }
   
     $result .= '<input type="string" name="' . $self->{'variable'} . '_forminput"';      $result .= '<input type="text" name="' . $self->{'variable'} . '_forminput"';
   
     if (defined($self->{'size'})) {      if (defined($self->{'size'})) {
         $result .= ' size="' . $self->{'size'} . '"';          $result .= ' size="' . $self->{'size'} . '"';
Line 3381  sub postprocess { Line 3406  sub postprocess {
  }   }
     }      }
   
     if (defined($self->{'nextstate'})) {      if (defined($self->{'nextstate'}) && $self->{PROCEED}) {
         $helper->changeState($self->{'nextstate'});          $helper->changeState($self->{'nextstate'});
     }      }
   
Line 3661  sub render { Line 3686  sub render {
     }      }
     my $previous = HTML::Entities::encode(&mt("Back"), '<>&"');      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'";  
     if ($env{'environment.remote'} eq 'off') {  $target='';  }  
     $result .= "<p>\n" .      $result .= "<p>\n" .
  "<form action='".$actionURL."' method='post' $target>\n" .   "<form action='".$actionURL."' method='post' >\n" .
  "<input type='button' onclick='history.go(-1)' value='$previous' />" .   "<input type='button' onclick='history.go(-1)' value='$previous' />" .
  "<input type='hidden' name='orgurl' value='$targetURL' />" .   "<input type='hidden' name='orgurl' value='$targetURL' />" .
  "<input type='hidden' name='selectrole' value='1' />\n" .   "<input type='hidden' name='selectrole' value='1' />\n" .

Removed from v.1.178  
changed lines
  Added in v.1.188


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