Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.71 and 1.92

version 1.71, 2004/06/02 16:41:46 version 1.92, 2004/10/12 22:55:21
Line 117  sub store_recent { Line 117  sub store_recent {
  time.'&'.&Apache::lonnet::escape($value) });   time.'&'.&Apache::lonnet::escape($value) });
 }  }
   
   sub remove_recent {
       my ($area,$names)=@_;
       my $file=&recent_filename($area);
       return &Apache::lonnet::del($file,$names);
   }
   
 sub select_recent {  sub select_recent {
     my ($area,$fieldname,$event)=@_;      my ($area,$fieldname,$event)=@_;
     my %recent=&Apache::lonnet::dump(&recent_filename($area));      my %recent=&Apache::lonnet::dump(&recent_filename($area));
Line 519  sub javascript_nothing { Line 525  sub javascript_nothing {
     return $nothing;      return $nothing;
 }  }
   
   ##############################################
   ##############################################
   sub javascript_docopen {
       # safari does not understand document.open() and loads "text/html"
       my $nothing = "''";
       my $user_browser;
       my $user_os;
       $user_browser = $ENV{'browser.type'} if (exists($ENV{'browser.type'}));
       $user_os      = $ENV{'browser.os'}   if (exists($ENV{'browser.os'}));
       if (! defined($user_browser) || ! defined($user_os)) {
           (undef,$user_browser,undef,undef,undef,$user_os) = 
                              &Apache::loncommon::decode_user_agent();
       }
       if ($user_browser eq 'safari' && $user_os =~ 'mac') {
           $nothing = "document.clear()";
       } else {
    $nothing = "document.open('text/html','replace')";
       }
       return $nothing;
   }
   
   
 ##############################################  ##############################################
 ##############################################  ##############################################
Line 772  sub Increment_PrgWin { Line 799  sub Increment_PrgWin {
         $$prog_state{'done'} *          $$prog_state{'done'} *
  ($$prog_state{'max'}-$$prog_state{'done'});   ($$prog_state{'max'}-$$prog_state{'done'});
     $time_est = int($time_est);      $time_est = int($time_est);
     if (int ($time_est/60) > 0) {      #
  my $min = int($time_est/60);      my $min = int($time_est/60);
  my $sec = $time_est % 60;      my $sec = $time_est % 60;
  $time_est = $min.' '.&mt('minutes');      # 
         if ($min < 10)  {      my $str;
             if ($sec > 1) {      if ($min == 0 && $sec > 1) {
                 $time_est.= ', '.$sec.' '.&mt('seconds');          $str = '[_2] seconds';
             } elsif ($sec > 0) {      } elsif ($min == 1 && $sec > 1) {
                 $time_est.= ', '.$sec.' '.&mt('second');          $str = '1 minute [_2] seconds';
             }      } elsif ($min == 1 && $sec < 2) {
         }          $str = '1 minute';
     } else {      } elsif ($min < 10 && $sec > 1) {
  $time_est .= ' '.&mt('seconds');          $str = '[_1] minutes, [_2] seconds';
       } elsif ($min >= 10 || $sec < 2) {
           $str = '[_1] minutes';
     }      }
       $time_est = &mt($str,$min,$sec);
       #
     my $lasttime = &Time::HiRes::time()-$$prog_state{'laststart'};      my $lasttime = &Time::HiRes::time()-$$prog_state{'laststart'};
     if ($lasttime > 9) {      if ($lasttime > 9) {
         $lasttime = int($lasttime);          $lasttime = int($lasttime);
Line 841  sub r_print { Line 872  sub r_print {
 # ------------------------------------------------------- Puts directory header  # ------------------------------------------------------- Puts directory header
   
 sub crumbs {  sub crumbs {
     my ($uri,$target,$prefix,$form,$size)=@_;      my ($uri,$target,$prefix,$form,$size,$noformat)=@_;
     if (! defined($size)) {      if (! defined($size)) {
         $size = '+2';          $size = '+2';
     }      }
     my $output='<br /><tt><b><font size="'.$size.'">'.$prefix.'/';      my $output='';
       unless ($noformat) { $output.='<br /><tt><b>'; }
       $output.='<font size="'.$size.'">'.$prefix.'/';
     if ($ENV{'user.adv'}) {      if ($ENV{'user.adv'}) {
  my $path=$prefix.'/';   my $path=$prefix.'/';
  foreach (split('/',$uri)) {   foreach (split('/',$uri)) {
Line 862  sub crumbs { Line 895  sub crumbs {
  $output.=$uri;   $output.=$uri;
     }      }
     unless ($uri=~/\/$/) { $output=~s/\/$//; }      unless ($uri=~/\/$/) { $output=~s/\/$//; }
     return $output.'</font></b></tt><br />';      return $output.'</font>'.($noformat?'':'</b></tt><br />');
   }
   
   # --------------------- A function that generates a window for the spellchecker
   
   sub spellheader {
       my $nothing = &javascript_nothing();
       return (<<ENDCHECK);
   <script type="text/javascript"> 
   //<!-- BEGIN LON-CAPA Internal
   var checkwin;
   
   function spellcheckerwindow() {
       checkwin=window.open($nothing,'spellcheckwin','height=320,width=280,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no');
       checkwin.document.writeln('<html><body bgcolor="#DDDDDD"><form name="spellcheckform" action="/adm/spellcheck" method="post"><input type="hidden" name="text" value="" /></form></body></html>');
       checkwin.document.close();
   }
   // END LON-CAPA Internal -->
   </script>
   ENDCHECK
   }
   
   # ---------------------------------- Generate link to spell checker for a field
   
   sub spelllink {
       my ($form,$field)=@_;
       my $linktext=&mt('Check Spelling');
       return (<<ENDLINK);
   <a href="javascript:if (typeof(document.$form.onsubmit)!='undefined') { document.$form.onsubmit();};spellcheckerwindow();checkwin.document.forms.spellcheckform.text.value=this.document.forms.$form.$field.value;checkwin.document.forms.spellcheckform.submit();">$linktext</a>
   ENDLINK
 }  }
   
 # ------------------------------------------------- Output headers for HTMLArea  # ------------------------------------------------- Output headers for HTMLArea
   
 sub htmlareaheaders {  sub htmlareaheaders {
     if (&htmlareablocked()) { return ''; }      if (&htmlareablocked()) { return ''; }
       unless (&htmlareabrowser()) { return ''; }
     my $lang='en';      my $lang='en';
     if (&mt('htmlarea_lang') ne 'htmlarea_lang') {      if (&mt('htmlarea_lang') ne 'htmlarea_lang') {
  $lang=&mt('htmlarea_lang');   $lang=&mt('htmlarea_lang');
     }      }
     return (<<ENDHEADERS);      return (<<ENDHEADERS);
 <script type="text/javascript">  <script type="text/javascript">
     _editor_url="/htmlarea/";  
 </script>  
 <script type="text/javascript" src="/htmlarea/htmlarea.js"></script>  
 <style type="text/javascript">  
 _editor_url='/htmlarea/';  _editor_url='/htmlarea/';
 _editor_lang='$lang';  _editor_lang='$lang';
 </style>  </script>
   <script type="text/javascript" src="/htmlarea/htmlarea.js"></script>
 ENDHEADERS  ENDHEADERS
 }  }
   
 # ---------------------------------------------------------- Script to activate  # ------------------------------------------------- Activate additional buttons
   
 sub htmlareaactive {  sub htmlareaaddbuttons {
     if (&htmlareablocked()) { return ''; }      if (&htmlareablocked()) { return ''; }
     return (<<ENDSCRIPT);      unless (&htmlareabrowser()) { return ''; }
 <script type="text/javascript" defer="1">      return (<<ENDADDBUTTON);
     HTMLArea.replaceAll();      var config=new HTMLArea.Config();
 </script>      config.registerButton('ed_math','LaTeX Inline',
 ENDSCRIPT    '/htmlarea/images/ed_math.gif',false,
       function(editor,id) {
         editor.surroundHTML('&nbsp;<m>\$','\$</m>&nbsp;');
       }
     );
       config.registerButton('ed_math_eqn','LaTeX Equation',
     '/htmlarea/images/ed_math_eqn.gif',false,
       function(editor,id) {
         editor.surroundHTML(
        '&nbsp;\\n<center><m>\\\\[','\\\\]</m></center>\\n&nbsp;');
       }
     );
       config.toolbar.push(['ed_math','ed_math_eqn']);
   ENDADDBUTTON
   }
   
   # ----------------------------------------------------------------- Preferences
   
   sub disablelink {
       my @fields=@_;
       if (defined($#fields)) {
    unless ($#fields>=0) { return ''; }
       }
       return '<a href="/adm/preferences?action=set_wysiwyg&wysiwyg=off&returnurl='.&Apache::lonnet::escape($ENV{'REQUEST_URI'}).'">'.&mt('Disable WYSIWYG Editor').'</a>';
   }
   
   sub enablelink {
       my @fields=@_;
       if (defined($#fields)) {
    unless ($#fields>=0) { return ''; }
       }
       return '<a href="/adm/preferences?action=set_wysiwyg&wysiwyg=on&returnurl='.&Apache::lonnet::escape($ENV{'REQUEST_URI'}).'">'.&mt('Enable WYSIWYG Editor').'</a>';
   }
   
   # ----------------------------------------- Script to activate only some fields
   
   sub htmlareaselectactive {
       my @fields=@_;
       unless (&htmlareabrowser()) { return ''; }
       if (&htmlareablocked()) { return '<br />'.&enablelink(@fields); }
       my $output='<script type="text/javascript" defer="1">'.
    &htmlareaaddbuttons();
       foreach(@fields) {
    $output.="\nHTMLArea.replace('$_',config);";
       }
       $output.="\nwindow.status='Activated Editfields';\n</script><br />".
    &disablelink(@fields);
       return $output;
 }  }
   
 # --------------------------------------------------------------------- Blocked  # --------------------------------------------------------------------- Blocked
   
 sub htmlareablocked {  sub htmlareablocked {
     unless (&htmlareabrowser()) { return 1; }      unless ($ENV{'environment.wysiwygeditor'} eq 'on') { return 1; }
     return 0;      return 0;
 }  }
   
Line 956  returns: nothing Line 1063  returns: nothing
     my @Crumbs;      my @Crumbs;
           
     sub breadcrumbs {      sub breadcrumbs {
         my ($color,$component,$component_help,$function,$domain,$menulink) =          my ($color,$component,$component_help,$function,$domain,$menulink,
     @_;      $helplink) = @_;
         if (! defined($color)) {          if (! defined($color)) {
             if (! defined($function)) {              if (! defined($function)) {
                 $function = &Apache::loncommon::get_users_function();                  $function = &Apache::loncommon::get_users_function();
Line 1008  returns: nothing Line 1115  returns: nothing
                      } @Crumbs                       } @Crumbs
                  );                   );
         $links .= '-&gt;' if ($links ne '');          $links .= '-&gt;' if ($links ne '');
         $links .= '<b>'.$last->{'text'}.'</b>';          $links .= '<b>'.&mt($last->{'text'}).'</b>';
         #          #
         my $icons = '';          my $icons = '';
         $faq = $last->{'faq'} if (exists($last->{'faq'}));          $faq = $last->{'faq'} if (exists($last->{'faq'}));
         $bug = $last->{'bug'} if (exists($last->{'bug'}));          $bug = $last->{'bug'} if (exists($last->{'bug'}));
         if ($faq ne '') {  #        if ($faq ne '') {
             $icons .= &Apache::loncommon::help_open_faq($faq);  #            $icons .= &Apache::loncommon::help_open_faq($faq);
         }  #        }
         if ($bug ne '') {  #        if ($bug ne '') {
             $icons .= &Apache::loncommon::help_open_bug($bug);  #            $icons .= &Apache::loncommon::help_open_bug($bug);
         }  #        }
    if ($helplink ne 'nohelp') {
       $icons .= &Apache::loncommon::help_open_menu($color,$component,$component_help,$function,$faq,$bug);
    }
         if ($icons ne '') {          if ($icons ne '') {
             $Str .= $icons.'&nbsp;';              $Str .= $icons.'&nbsp;';
         }          }
Line 1027  returns: nothing Line 1137  returns: nothing
         #          #
         if (defined($component)) {          if (defined($component)) {
             $Str .= '<td align="right" bgcolor="'.$color.'">'.              $Str .= '<td align="right" bgcolor="'.$color.'">'.
                 '<font size="+1">'.&mt($component).'</font>';                  '<font size="+1">'.&mt($component).'</font></td>';
             if (defined($component_help)) {  
                 $Str .=   
                     &Apache::loncommon::help_open_topic($component_help);  
             }  
             $Str.= '</td>';  
         }          }
         $Str .= '</tr></table>'."\n";          $Str .= '</tr></table>'."\n";
         #          #

Removed from v.1.71  
changed lines
  Added in v.1.92


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