Diff for /loncom/homework/inputtags.pm between versions 1.309 and 1.315

version 1.309, 2012/09/14 11:23:58 version 1.315, 2013/04/11 14:59:40
Line 125  sub initialize_inputtags { Line 125  sub initialize_inputtags {
     %Apache::inputtags::submission_display=();      %Apache::inputtags::submission_display=();
 }  }
   
   #
   #  provides the onblur binding for spellchecking.  This could be an
   #  empty string if spellchecking was not enabled.
   #  Jquery selector binding is done rather than setting an onblur
   #  attribute because we'll need to set the element's spellcheck language
   #  option dynamically so we need $(this) to be defined.
   #
   # @param id   - The element id to bind.
   # @param lang - Language in which spellchecking is desired.
   #               if undef, nothing is generated.  
   # @return string - onblur specification to do the requested spellchecking.
   #
   sub spellcheck_onblur {
       my ($id, $lang) = @_;
       my $result = '';
       if ($lang) {
   
    $result = <<JAVASCRIPT;
   <script type="text/javascript">
   \$('\#$id').blur(function() {
       doSpellcheck('\#$id', '$lang');
    });
   </script>
   
   JAVASCRIPT
   
   
       }
       return $result;
   }
   
 sub check_for_duplicate_ids {  sub check_for_duplicate_ids {
     my %check;      my %check;
     foreach my $id (@Apache::inputtags::partlist,      foreach my $id (@Apache::inputtags::partlist,
Line 194  sub start_textfield { Line 225  sub start_textfield {
     if ( $rows eq '') { $rows = 16; }      if ( $rows eq '') { $rows = 16; }
     my $addchars=&Apache::lonxml::get_param('addchars',$parstack,$safeeval);      my $addchars=&Apache::lonxml::get_param('addchars',$parstack,$safeeval);
     $result='';      $result='';
       my $tagident = 'HWVAL_' . $resid;
     if ($addchars) {      if ($addchars) {
  $result.=&addchars('HWVAL_'.$resid,$addchars);   $result.=&addchars($tagident, $addchars);
     }      }
             my $textareaclass = 'class="LC_richDetectHtml spellchecked"';              my $textareaclass = 'class="LC_richDetectHtml spellchecked"';
     $result.= '<textarea wrap="hard" name="HWVAL_'.$resid.'" id="HWVAL_'.$resid.'" ' .      $result.= '<textarea wrap="hard" name="'.$tagident.'" id="'.$tagident.'" ' .
       'rows="'.$rows.'" cols="'.$cols.'" '.$textareaclass        'rows="'.$rows.'" cols="'.$cols.'" '.$textareaclass
       . "onblur='\$(this).spellchecker(\"check\")'"  
       .'>'.        .'>'.
                       &HTML::Entities::encode($oldresponse,'<>&"');                        &HTML::Entities::encode($oldresponse,'<>&"');
     if ($oldresponse ne '') {      if ($oldresponse ne '') {
Line 235  sub start_textfield { Line 266  sub start_textfield {
  my $bodytext=&Apache::lonxml::get_all_text("/textfield",$parser,   my $bodytext=&Apache::lonxml::get_all_text("/textfield",$parser,
    $style);     $style);
  $result.=&Apache::edit::editfield($token->[1],$bodytext,'Text you want to appear by default:',80,2);   $result.=&Apache::edit::editfield($token->[1],$bodytext,'Text you want to appear by default:',80,2);
           my $spell_langs = &spelling_languages();
    $result .= &Apache::edit::select_arg('Spellcheck for:', 'spellcheck',
        $spell_langs, $token);
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my $constructtag=&Apache::edit::get_new_args($token,$parstack,   my $constructtag=&Apache::edit::get_new_args($token,$parstack,
      $safeeval,'rows','cols',       $safeeval,'rows','cols',
      'addchars');       'addchars', 'spellcheck');
  if ($constructtag) {   if ($constructtag) {
     $result = &Apache::edit::rebuild_tag($token);      $result = &Apache::edit::rebuild_tag($token);
  } else {   } else {
Line 253  sub start_textfield { Line 287  sub start_textfield {
     for (my $i=0;$i<int $number_of_lines*2;$i++) {$result.='\strut \\\\ ';}      for (my $i=0;$i<int $number_of_lines*2;$i++) {$result.='\strut \\\\ ';}
     $result.='\strut \\\\\strut \\\\\strut \\\\\strut \\\\}}}';      $result.='\strut \\\\\strut \\\\\strut \\\\\strut \\\\}}}';
  } else {   } else {
     my $fieldname = $env{'request.symb'}.              if ($env{'form.pdfFormFields'} eq 'yes') {
                     '&part_'. $Apache::inputtags::part.                  my $fieldname = $env{'request.symb'}.
                     '&textresponse'.                                  '&part_'. $Apache::inputtags::part.
                     '&HWVAL_' . $Apache::inputtags::response['-1'];                                  '&textresponse'.
             $result.='\TextField[name='.$fieldname.',multiline=true,height=6\baselineskip,width=270,borderwidth=0,backgroundcolor={.85                                  '&HWVAL_' . $Apache::inputtags::response['-1'];
                 .85 .85}]\\';                  $result.='\TextField[name='.$fieldname.',multiline=true,height=6\baselineskip,width=270,borderwidth=0,backgroundcolor={.85 .85 .85}]\\';
               } else {
                   my $TeXwidth=$width_of_box/80;
                   $result = '\vskip 1 mm \fbox{\fbox{\parbox{'.$TeXwidth.'\textwidth-5mm}{';
                   for (my $i=0;$i<int $number_of_lines*2;$i++) {$result.='\strut \\\\ ';}
                   $result.='}}}\vskip 2 mm ';
               }
  }   }
     }      }
     return $result;      return $result;
Line 268  sub end_textfield { Line 308  sub end_textfield {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result;      my $result;
     if ($target eq 'web') {      if ($target eq 'web') {
    my $spellcheck = &Apache::lonxml::get_param('spellcheck', $parstack, $safeeval);
  $Apache::lonxml::evaluate++;   $Apache::lonxml::evaluate++;
  if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {   if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
     return "</textarea>";      my $resid = $Apache::inputtags::response[-1];
       my $tagident = 'HWVAL_' . $resid;
       my $result =  "</textarea>";
       $result .= &spellcheck_onblur($tagident, $spellcheck);
       return $result;
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result=&Apache::edit::end_table();   $result=&Apache::edit::end_table();
Line 334  sub start_textline { Line 379  sub start_textline {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result = "";      my $result = "";
     my $input_id = &start_input($parstack,$safeeval);      my $input_id = &start_input($parstack,$safeeval);
   
       # The spellcheck attribute 
       # 1. enables spellchecking.
       # 2. Provides the language code in which the spellchecking will be performed.
   
       my $spellcheck = &Apache::lonxml::get_param('spellcheck', $parstack, $safeeval);
     if ($target eq 'web') {      if ($target eq 'web') {
  $Apache::lonxml::evaluate--;   $Apache::lonxml::evaluate--;
  my $partid=$Apache::inputtags::part;   my $partid=$Apache::inputtags::part;
Line 384  sub start_textline { Line 435  sub start_textline {
  if ($Apache::inputtags::status[-1] eq 'CANNOT_ANSWER') {   if ($Apache::inputtags::status[-1] eq 'CANNOT_ANSWER') {
     $name = "none";      $name = "none";
  }   }
  $result.= '<input onkeydown="javascript:setSubmittedPart(\''.$partid.'\');" type="text" '.$readonly.' name="'.$name.'" value="'.   $result.= '<input onkeydown="javascript:setSubmittedPart(\''.$partid.'\');"'
     $oldresponse.'" class="spellchecked"  size="'.$size.'"'.$maxlength.'       . ' type="text" '
                     onblur=' . "'\$(this).spellchecker(\"check\")'"  . '/>';       . $readonly.' name="'. $name . '"'
        . ' id="' . $name . '"'
        . ' value="'.  $oldresponse.'"'
        . ' class="spellchecked"  size="'.$size.'"'.$maxlength
        . '/>';
   
    $result .= &spellcheck_onblur($name, $spellcheck);
     }      }
     if ($Apache::lonhomework::type eq 'exam'      if ($Apache::lonhomework::type eq 'exam'
  && &needs_exam_box($tagstack)) {   && &needs_exam_box($tagstack)) {
Line 405  sub start_textline { Line 462  sub start_textline {
     'addchars',$token,10);      'addchars',$token,10);
         $result.=&Apache::edit::select_arg('Readonly:','readonly',          $result.=&Apache::edit::select_arg('Readonly:','readonly',
    ['no','yes'],$token);     ['no','yes'],$token);
           my $spell_langs = &spelling_languages();
    $result.=&Apache::edit::select_arg("Spellcheck for: ", 'spellcheck',
      $spell_langs, $token);
  $result.=&Apache::edit::end_row();   $result.=&Apache::edit::end_row();
  $result.=&Apache::edit::end_table();   $result.=&Apache::edit::end_table();
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my $constructtag=&Apache::edit::get_new_args($token,$parstack,   my $constructtag=&Apache::edit::get_new_args($token,$parstack,
      $safeeval,'size',       $safeeval,'size',
      'addchars','readonly');       'addchars','readonly', 'spellcheck');
  if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }   if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }
     } elsif ($target eq 'tex'       } elsif ($target eq 'tex' 
      && $Apache::lonhomework::type ne 'exam') {       && $Apache::lonhomework::type ne 'exam') {
Line 1018  sub decideoutput { Line 1078  sub decideoutput {
         } else {          } else {
             $message .= '<br />';              $message .= '<br />';
         }          }
         $message .= &mt('Please use a different file name.');          $message .= &mt('Please use a different filename.');
         $css_class=$possible_class{'not_charged_try'};          $css_class=$possible_class{'not_charged_try'};
         $button=1;          $button=1;
     } elsif ($award eq 'INVALID_FILETYPE') {      } elsif ($award eq 'INVALID_FILETYPE') {
Line 1697  sub get_tries_text { Line 1757  sub get_tries_text {
     return $tries_text;      return $tries_text;
 }  }
   
   sub spelling_languages {
       my %langchoices;
       foreach my $id (&Apache::loncommon::languageids()) {
           my $code = &Apache::loncommon::supportedlanguagecode($id);
           if ($code ne '') {
               $langchoices{$code} =  &Apache::loncommon::plainlanguagedescription($id);
           }
       }
       my @spelllangs = ('none');
       foreach my $code ('en','de','he','es','fr','pt','tr') {
           push(@spelllangs,[$code,$langchoices{$code}]);
       }
       return \@spelllangs;
   }
   
 1;  1;
 __END__  __END__
   

Removed from v.1.309  
changed lines
  Added in v.1.315


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