Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.120 and 1.121

version 1.120, 2005/11/21 21:20:06 version 1.121, 2006/02/22 19:22:49
Line 1601  sub echo_form_input { Line 1601  sub echo_form_input {
 #  #
 # Intended to be called by onload event.  # Intended to be called by onload event.
 #  #
 # Input:  # Inputs:
 # Reference to hash of echoed form elements to be set.  # (a) Reference to hash of echoed form elements to be set.
 #  #
 # In the hash, keys are the form element names, and the values are the  # In the hash, keys are the form element names, and the values are the
 # element type (selectbox, radio, checkbox or text -for textbox, textarea or  # element type (selectbox, radio, checkbox or text -for textbox, textarea or
 # hidden).  # hidden).
 #   #
   # (b) Optional reference to hash of stored elements to be set.
   #
   # If the page being displayed is a page which permits modification of
   # previously stored data, e.g., the first page in a multi-page submission,
   # then if stored is supplied, form elements will be set to the last stored
   # values.  If user supplied values are also available for the same elements
   # these will replace the stored values. 
   #        
 # Output:  # Output:
 #    #  
 # javascript function - set_form_elements() which sets form elements,  # javascript function - set_form_elements() which sets form elements,
Line 1615  sub echo_form_input { Line 1623  sub echo_form_input {
 # the DOM, e.g., document.compose  # the DOM, e.g., document.compose
   
 sub set_form_elements {  sub set_form_elements {
     my ($elements) = @_;      my ($elements,$stored) = @_;
       my %values;
     my $output .= 'function setFormElements(courseForm) {      my $output .= 'function setFormElements(courseForm) {
 ';        ';
       if (defined($stored)) {
           foreach my $name (keys(%{$stored})) {
               if (exists($$elements{$name})) {
                   if (ref($$stored{$name}) eq 'ARRAY') {
                       $values{$name} = $$stored{$name};
                   } else {
                       @{$values{$name}} = ($$stored{$name});
                   }
               }
           }
       }
   
     foreach my $key (keys(%env)) {      foreach my $key (keys(%env)) {
         if ($key =~ /^form\.(.+)$/) {          if ($key =~ /^form\.(.+)$/) {
             my $name = $1;              my $name = $1;
             if (exists($$elements{$name})) {              if (exists($$elements{$name})) {
                 my @values = &Apache::loncommon::get_env_multiple($key);                  @{$values{$name}} = &Apache::loncommon::get_env_multiple($key);
                 for (my $i=0; $i<@values; $i++) {              }
                     $values[$i] = &HTML::Entities::decode($values[$i],'<>&"');          }
                     $values[$i] =~ s/([\r\n\f]+)/\\n/g;      }
                     $values[$i] =~ s/"/\\"/g;  
                 }      foreach my $name (keys(%values)) {
                 if ($$elements{$name} eq 'text') {          for (my $i=0; $i<@{$values{$name}}; $i++) {
                     my $numvalues = @values;              $values{$name}[$i] = &HTML::Entities::decode($values{$name}[$i],'<>&"');
                     if ($numvalues > 1) {              $values{$name}[$i] =~ s/([\r\n\f]+)/\\n/g;
                         my $valuestring = join('","',@values);              $values{$name}[$i] =~ s/"/\\"/g;
                         $output .= qq|          }
           if ($$elements{$name} eq 'text') {
               my $numvalues = @{$values{$name}};
               if ($numvalues > 1) {
                   my $valuestring = join('","',@{$values{$name}});
                   $output .= qq|
   var textvalues = new Array ("$valuestring");    var textvalues = new Array ("$valuestring");
   var total = courseForm.$name.length;    var total = courseForm.$name.length;
   if (total > $numvalues) {    if (total > $numvalues) {
Line 1642  sub set_form_elements { Line 1668  sub set_form_elements {
       courseForm.$name\[i].value = textvalues[i];        courseForm.$name\[i].value = textvalues[i];
   }    }
 |;  |;
                     } else {              } else {
                         $output .= qq|                  $output .= qq|
   courseForm.$name.value = "$values[0]";    courseForm.$name.value = "$values{$name}[0]";
 |;  |;
                     }              }
                 } else {          } else {
                     $output .=  qq|              $output .=  qq|
   var elementLength = courseForm.$name.length;    var elementLength = courseForm.$name.length;
   if (elementLength==undefined) {    if (elementLength==undefined) {
 |;  |;
                     foreach my $value (@values) {              foreach my $value (@{$values{$name}}) {
                         if ($$elements{$name} eq 'selectbox') {                  if ($$elements{$name} eq 'selectbox') {
                             $output .=  qq|                      $output .=  qq|
       if (courseForm.$name.options[0].value == "$value") {        if (courseForm.$name.options[0].value == "$value") {
           courseForm.$name.options[0].selected = true;            courseForm.$name.options[0].selected = true;
       }|;        }|;
                         } elsif (($$elements{$name} eq 'radio') ||                  } elsif (($$elements{$name} eq 'radio') ||
                                  ($$elements{$name} eq 'checkbox')) {                           ($$elements{$name} eq 'checkbox')) {
                             $output .= qq|                      $output .= qq|
       if (courseForm.$name.value == "$value") {        if (courseForm.$name.value == "$value") {
           courseForm.$name.checked = true;            courseForm.$name.checked = true;
       }|;        }|;
                         }                  }
                     }              }
                     $output .= qq|              $output .= qq|
   }    }
   else {    else {
       for (var i=0; i<courseForm.$name.length; i++) {        for (var i=0; i<courseForm.$name.length; i++) {
 |;  |;
                     if ($$elements{$name} eq 'selectbox') {              if ($$elements{$name} eq 'selectbox') {
                         $output .=  qq|                  $output .=  qq|
           courseForm.$name.options[i].selected = false;|;            courseForm.$name.options[i].selected = false;|;
                     } elsif (($$elements{$name} eq 'radio') ||               } elsif (($$elements{$name} eq 'radio') || 
                              ($$elements{$name} eq 'checkbox')) {                       ($$elements{$name} eq 'checkbox')) {
                         $output .= qq|                  $output .= qq|
           courseForm.$name\[i].checked = false;|;             courseForm.$name\[i].checked = false;|; 
                     }              }
                     $output .= qq|              $output .= qq|
       }        }
       for (var j=0; j<courseForm.$name.length; j++) {        for (var j=0; j<courseForm.$name.length; j++) {
 |;  |;
                     foreach my $value (@values) {              foreach my $value (@{$values{$name}}) {
                         if ($$elements{$name} eq 'selectbox') {                  if ($$elements{$name} eq 'selectbox') {
                             $output .=  qq|                      $output .=  qq|
           if (courseForm.$name.options[j].value == "$value") {            if (courseForm.$name.options[j].value == "$value") {
               courseForm.$name.options[j].selected = true;                courseForm.$name.options[j].selected = true;
           }|;            }|;
                         } elsif (($$elements{$name} eq 'radio') ||                  } elsif (($$elements{$name} eq 'radio') ||
                                  ($$elements{$name} eq 'checkbox')) {                            ($$elements{$name} eq 'checkbox')) { 
                             $output .= qq|                        $output .= qq|
           if (courseForm.$name\[j].value == "$value") {            if (courseForm.$name\[j].value == "$value") {
               courseForm.$name\[j].checked = true;                courseForm.$name\[j].checked = true;
           }|;            }|;
                         }                  }
                     }              }
                     $output .= qq|              $output .= qq|
       }        }
   }    }
 |;  |;
                 }  
             }  
         }          }
     }      }
     $output .= "      $output .= "

Removed from v.1.120  
changed lines
  Added in v.1.121


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