Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.119 and 1.129

version 1.119, 2005/11/15 21:08:47 version 1.129, 2006/05/29 16:01:22
Line 178  sub get_recent { Line 178  sub get_recent {
 sub textbox {  sub textbox {
     my ($name,$value,$size,$special) = @_;      my ($name,$value,$size,$special) = @_;
     $size = 40 if (! defined($size));      $size = 40 if (! defined($size));
       $value = &HTML::Entities::encode($value,'<>&"');
     my $Str = '<input type="text" name="'.$name.'" size="'.$size.'" '.      my $Str = '<input type="text" name="'.$name.'" size="'.$size.'" '.
         'value="'.$value.'" '.$special.' />';          'value="'.$value.'" '.$special.' />';
     return $Str;      return $Str;
Line 207  sub checkbox { Line 208  sub checkbox {
     return $Str;      return $Str;
 }  }
   
   
   =pod
   
   =item radiobutton
   
   =cut
   
   ##############################################
   ##############################################
   sub radio {
       my ($name,$checked,$value) = @_;
       my $Str = '<input type="radio" name="'.$name.'" ';
       if (defined($value)) {
           $Str .= 'value="'.$value.'"';
       } 
       if ($checked eq $value) {
           $Str .= ' checked="1"';
       }
       $Str .= ' />';
       return $Str;
   }
   
 ##############################################  ##############################################
 ##############################################  ##############################################
   
Line 502  sub get_date_from_form { Line 525  sub get_date_from_form {
     if (($year<70) || ($year>137)) { return undef; }      if (($year<70) || ($year>137)) { return undef; }
     if (defined($sec) && defined($min)   && defined($hour) &&      if (defined($sec) && defined($min)   && defined($hour) &&
         defined($day) && defined($month) && defined($year) &&          defined($day) && defined($month) && defined($year) &&
         eval(&timelocal($sec,$min,$hour,$day,$month,$year))) {          eval('&timelocal($sec,$min,$hour,$day,$month,$year)')) {
         return &timelocal($sec,$min,$hour,$day,$month,$year);          return &timelocal($sec,$min,$hour,$day,$month,$year);
     } else {      } else {
         return undef;          return undef;
Line 781  sub Create_PrgWin { Line 804  sub Create_PrgWin {
     $prog_state{'type'}=$type;      $prog_state{'type'}=$type;
     if ($type eq 'popup') {      if ($type eq 'popup') {
  $prog_state{'window'}='popwin';   $prog_state{'window'}='popwin';
  my $html=&Apache::lonxml::xmlbegin();   my $start_page =
       &Apache::loncommon::start_page($title,undef,
      {'only_body' => 1,
       'bgcolor'   => '#88DDFF',
       'js_ready'  => 1});
    my $end_page = &Apache::loncommon::end_page({'js_ready'  => 1});
   
  #the whole function called through timeout is due to issues   #the whole function called through timeout is due to issues
  #in mozilla Read BUG #2665 if you want to know the whole story   #in mozilla Read BUG #2665 if you want to know the whole story
  &r_print($r,'<script>'.   &r_print($r,'<script type="text/javascript">'.
         "var popwin;          "var popwin;
          function openpopwin () {           function openpopwin () {
          popwin=open(\'\',\'popwin\',\'width=400,height=100\');".           popwin=open(\'\',\'popwin\',\'width=400,height=100\');".
         "popwin.document.writeln(\'".$html."<head><title>$title</title></head>".          "popwin.document.writeln(\'".$start_page.
       "<body bgcolor=\"#88DDFF\">".  
               "<h4>$heading</h4>".                "<h4>$heading</h4>".
               "<form name=popremain>".                "<form name=popremain>".
               '<input type="text" size="'.$width.'" name="remaining" value="'.                '<input type="text" size="'.$width.'" name="remaining" value="'.
       &mt('Starting').'"></form>'.        &mt('Starting').'"></form>'.$end_page.
               "</body></html>\');".                "\');".
         "popwin.document.close();}".          "popwin.document.close();}".
         "\nwindow.setTimeout(openpopwin,0)</script>");          "\nwindow.setTimeout(openpopwin,0)</script>");
  $prog_state{'formname'}='popremain';   $prog_state{'formname'}='popremain';
Line 952  sub crumbs { Line 980  sub crumbs {
 # --------------------- A function that generates a window for the spellchecker  # --------------------- A function that generates a window for the spellchecker
   
 sub spellheader {  sub spellheader {
     my $html=&Apache::lonxml::xmlbegin();      my $start_page=
    &Apache::loncommon::start_page('Speller Suggestions',undef,
          {'only_body' => 1,
    'js_ready'  => 1,
    'bgcolor'   => '#DDDDDD',});
       my $end_page=
    &Apache::loncommon::end_page({'js_ready'  => 1}); 
   
     my $nothing=&javascript_nothing();      my $nothing=&javascript_nothing();
     return (<<ENDCHECK);      return (<<ENDCHECK);
 <script type="text/javascript">   <script type="text/javascript"> 
Line 961  var checkwin; Line 996  var checkwin;
   
 function spellcheckerwindow() {  function spellcheckerwindow() {
     checkwin=window.open($nothing,'spellcheckwin','height=320,width=280,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no');      checkwin=window.open($nothing,'spellcheckwin','height=320,width=280,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no');
     checkwin.document.writeln('$html<head></head><body bgcolor="#DDDDDD"><form name="spellcheckform" action="/adm/spellcheck" method="post"><input type="hidden" name="text" value="" /></form></body></html>');      checkwin.document.writeln('$start_page<form name="spellcheckform" action="/adm/spellcheck" method="post"><input type="hidden" name="text" value="" /></form>$end_page');
     checkwin.document.close();      checkwin.document.close();
 }  }
 // END LON-CAPA Internal -->  // END LON-CAPA Internal -->
Line 981  ENDLINK Line 1016  ENDLINK
   
 # ------------------------------------------------- Output headers for HTMLArea  # ------------------------------------------------- Output headers for HTMLArea
   
   {
       my @htmlareafields;
       sub init_htmlareafields {
    undef(@htmlareafields);
       }
       
       sub add_htmlareafields {
    my (@newfields) = @_;
    push(@htmlareafields,@newfields);
       }
   
       sub get_htmlareafields {
    return @htmlareafields;
       }
   }
   
 sub htmlareaheaders {  sub htmlareaheaders {
     if (&htmlareablocked()) { return ''; }      if (&htmlareablocked()) { return ''; }
     unless (&htmlareabrowser()) { return ''; }      unless (&htmlareabrowser()) { return ''; }
Line 1115  returns: nothing Line 1166  returns: nothing
     my @Crumbs;      my @Crumbs;
           
     sub breadcrumbs {      sub breadcrumbs {
         my ($color,$component,$component_help,$function,$domain,$menulink,          my ($component,$component_help,$menulink,$helplink) = @_;
     $helplink) = @_;  
         if (! defined($color)) {  
             if (! defined($function)) {  
                 $function = &Apache::loncommon::get_users_function();  
             }  
             $color = &Apache::loncommon::designparm($function.'.tabbg',  
                                                     $domain);  
         }  
         #          #
         my $Str = "\n".          my $Str = "\n".'<table id="LC_breadcrumbs"><tr><td>';
             '<table width="100%" border="0" cellpadding="0" cellspacing="0">'.  
             '<tr><td bgcolor="'.$color.'">'.  
             '<font size="-1">';  
         #          #
         # Make the faq and bug data cascade          # Make the faq and bug data cascade
         my $faq = '';          my $faq = '';
Line 1183  returns: nothing Line 1223  returns: nothing
 #            $icons .= &Apache::loncommon::help_open_bug($bug);  #            $icons .= &Apache::loncommon::help_open_bug($bug);
 #        }  #        }
  if ($helplink ne 'nohelp') {   if ($helplink ne 'nohelp') {
     $icons .= &Apache::loncommon::help_open_menu($color,$component,$component_help,$function,$faq,$bug);      $icons .= &Apache::loncommon::help_open_menu(undef,$component,
    $component_help,
    undef,$faq,$bug);
  }   }
         if ($icons ne '') {          if ($icons ne '') {
             $Str .= $icons.'&nbsp;';              $Str .= $icons.'&nbsp;';
         }          }
         #          #
         $Str .= $links.'</font></td>';          $Str .= $links.'</td>';
         #          #
         if (defined($component)) {          if (defined($component)) {
             $Str .= '<td align="right" bgcolor="'.$color.'">'.              $Str .= '<td class="LC_breadcrumb_component">'.
                 '<font size="+1">'.&mt($component).'</font></td>';                  &mt($component).'</td>';
         }          }
         $Str .= '</tr></table>'."\n";          $Str .= '</tr></table>'."\n";
         #          #
Line 1388  sub course_select_row { Line 1430  sub course_select_row {
     |;      |;
     my $courseform='<b>'.&Apache::loncommon::selectcourse_link      my $courseform='<b>'.&Apache::loncommon::selectcourse_link
                      ($formname,'pickcourse','pickdomain','coursedesc','',1).'</b>';                       ($formname,'pickcourse','pickdomain','coursedesc','',1).'</b>';
           $output .= '<input type="radio" name="coursepick" value="all" onclick="coursePick(this.form)" />'.&mt('All courses').'<br />';
     if ($totcodes > 0) {      if ($totcodes > 0) {
         $output .= '<input type="radio" name="coursepick" value="all" onclick="coursePick(this.form)" />'.&mt('All courses');  
         my $numtitles = @$codetitles;          my $numtitles = @$codetitles;
         if ($numtitles > 0) {          if ($numtitles > 0) {
             $output .= '<br /><input type="radio" name="coursepick" value="category" onclick="coursePick(this.form);alert('."'".&mt('Choose categories, from left to right')."'".')" />'.&mt('Pick courses by category:').' <br />';              $output .= '<input type="radio" name="coursepick" value="category" onclick="coursePick(this.form);alert('."'".&mt('Choose categories, from left to right')."'".')" />'.&mt('Pick courses by category:').' <br />';
             $output .= '<table><tr><td>'.$$codetitles[0].'<br />'."\n".              $output .= '<table><tr><td>'.$$codetitles[0].'<br />'."\n".
                '<select name="'.$$codetitles[0].                 '<select name="'.$$codetitles[0].
                '" onChange="setPick(this.form);courseSet('."'$$codetitles[0]'".')">'."\n".                 '" onChange="setPick(this.form);courseSet('."'$$codetitles[0]'".')">'."\n".
Line 1579  sub echo_form_input { Line 1621  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 1593  sub echo_form_input { Line 1643  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 1620  sub set_form_elements { Line 1688  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.119  
changed lines
  Added in v.1.129


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