Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.182.4.5 and 1.199

version 1.182.4.5, 2009/08/13 16:12:51 version 1.199, 2009/01/22 14:26:04
Line 62  use Apache::lonlocal; Line 62  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
 use LONCAPA;  use LONCAPA;
   
 ##############################################  
 ##############################################  
   
 =pod  
   
 =item confirm_success  
   
 Successful completion of an operation message  
   
 =cut  
   
 sub confirm_success {  
    my ($message,$failure)=@_;  
    if ($failure) {  
       return '<span class="LC_error">'."\n"  
             .'<img src="/adm/lonIcons/navmap.wrong.gif" alt="'.&mt('Error').'" /> '."\n"  
             .$message."\n"  
             .'</span>'."\n";  
    } else {  
       return '<span class="LC_success">'."\n"  
             .'<img src="/adm/lonIcons/navmap.correct.gif" alt="'.&mt('OK').'" /> '."\n"  
             .$message."\n"  
             .'</span>'."\n";  
    }  
 }  
   
 ##############################################  ##############################################
 ##############################################  ##############################################
Line 130  sub dragmath_js { Line 105  sub dragmath_js {
     my ($popup) = @_;      my ($popup) = @_;
     return <<ENDDRAGMATHJS;      return <<ENDDRAGMATHJS;
                 <script type="text/javascript">                  <script type="text/javascript">
                 // <![CDATA[  
                   function mathedit(textarea, doc) {                    function mathedit(textarea, doc) {
                      targetEntry = textarea;                       targetEntry = textarea;
                      targetDoc   = doc;                       targetDoc   = doc;
                      newwin  = window.open("/adm/dragmath/applet/$popup.html","","width=565,height=500,resizable");                       newwin  = window.open("/adm/dragmath/applet/$popup.html","","width=565,height=500,resizable");
                   }                    }
                 // ]]>  
                 </script>                  </script>
   
 ENDDRAGMATHJS  ENDDRAGMATHJS
Line 312  sub checkbox { Line 285  sub checkbox {
         $Str .= 'value="'.$value.'"';          $Str .= 'value="'.$value.'"';
     }       } 
     if ($checked) {      if ($checked) {
         $Str .= ' checked="checked"';          $Str .= ' checked="1"';
     }      }
     $Str .= ' />';      $Str .= ' />';
     return $Str;      return $Str;
Line 334  sub radio { Line 307  sub radio {
         $Str .= 'value="'.$value.'"';          $Str .= 'value="'.$value.'"';
     }       } 
     if ($checked eq $value) {      if ($checked eq $value) {
         $Str .= ' checked="checked"';          $Str .= ' checked="1"';
     }      }
     $Str .= ' />';      $Str .= ' />';
     return $Str;      return $Str;
Line 432  sub date_setter { Line 405  sub date_setter {
     my $result = "\n<!-- $dname date setting form -->\n";      my $result = "\n<!-- $dname date setting form -->\n";
     $result .= <<ENDJS;      $result .= <<ENDJS;
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  
     function $dname\_checkday() {      function $dname\_checkday() {
         var day   = document.$formname.$dname\_day.value;          var day   = document.$formname.$dname\_day.value;
         var month = document.$formname.$dname\_month.value;          var month = document.$formname.$dname\_month.value;
Line 493  document.$formname.$dname\_year.value, Line 465  document.$formname.$dname\_year.value,
         }          }
   
     }      }
 // ]]>  
 </script>  </script>
 ENDJS  ENDJS
     $result .= '  <span style="white-space: nowrap;">';      $result .= '  <span class="LC_nobreak">';
     my $monthselector = qq{<select name="$dname\_month" $special $state onchange="javascript:$dname\_checkday()" >};      my $monthselector = qq{<select name="$dname\_month" $special $state onchange="javascript:$dname\_checkday()" >};
     # Month      # Month
     my @Months = qw/January February  March     April   May      June       my @Months = qw/January February  March     April   May      June 
Line 505  ENDJS Line 476  ENDJS
     unshift(@Months,'If you can read this an error occurred');      unshift(@Months,'If you can read this an error occurred');
     if ($includeempty) { $monthselector.="<option value=''></option>"; }      if ($includeempty) { $monthselector.="<option value=''></option>"; }
     for(my $m = 1;$m <=$#Months;$m++) {      for(my $m = 1;$m <=$#Months;$m++) {
         $monthselector .= qq{      <option value="$m"};          $monthselector .= qq{      <option value="$m" };
         $monthselector .= ' selected="selected"' if ($m-1 eq $month);          $monthselector .= "selected " if ($m-1 eq $month);
         $monthselector .= '> '.&mt($Months[$m]).' </option>'."\n";          $monthselector .= '> '.&mt($Months[$m]).' </option>';
     }      }
     $monthselector.= '  </select>';      $monthselector.= '  </select>';
     # Day      # Day
     my $dayselector = qq{<input type="text" name="$dname\_day" $state value="$mday" size="3" $special onchange="javascript:$dname\_checkday()" />};      my $dayselector = qq{<input type="text" name="$dname\_day" $state value="$mday" size="3" $special onchange="javascript:$dname\_checkday()" />};
     # Year      # Year
     my $yearselector = qq{<input type="text" name="$dname\_year" $state value="$year" size="5" $special onchange="javascript:$dname\_checkday()" />};      my $yearselector = qq{<input type="year" name="$dname\_year" $state value="$year" size="5" $special onchange="javascript:$dname\_checkday()" />};
     #      #
     my $hourselector = qq{<select name="$dname\_hour" $special $state >};      my $hourselector = qq{<select name="$dname\_hour" $special $state >};
     if ($includeempty) {       if ($includeempty) { 
         $hourselector.=qq{<option value=''></option>};          $hourselector.=qq{<option value=''></option>};
     }      }
     for (my $h = 0;$h<24;$h++) {      for (my $h = 0;$h<24;$h++) {
         $hourselector .= qq{<option value="$h"};          $hourselector .= qq{<option value="$h" };
         $hourselector .= ' selected="selected"' if (defined($hour) && $hour == $h);          $hourselector .= "selected " if (defined($hour) && $hour == $h);
         $hourselector .= ">";          $hourselector .= ">";
         my $timest='';          my $timest='';
         if ($h == 0) {          if ($h == 0) {
Line 609  Inputs: Line 580  Inputs:
   
 =item $dname  =item $dname
   
 The name passed to &date_setter, which prefixes the form elements.  The name passed to &datesetter, which prefixes the form elements.
   
 =item $defaulttime  =item $defaulttime
   
Line 979  sub Create_PrgWin { Line 950  sub Create_PrgWin {
  #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 type="text/javascript">'.   &r_print($r,'<script type="text/javascript">'.
         '// <![CDATA['.  
         "var popwin;          "var popwin;
          function openpopwin () {           function openpopwin () {
          popwin=open(\'\',\'popwin\',\'width=400,height=100\');".           popwin=open(\'\',\'popwin\',\'width=400,height=100\');".
Line 990  sub Create_PrgWin { Line 960  sub Create_PrgWin {
       &mt('Starting').'" /><\\/form>'.$end_page.        &mt('Starting').'" /><\\/form>'.$end_page.
               "\');".                "\');".
         "popwin.document.close();}".          "popwin.document.close();}".
         "\nwindow.setTimeout(openpopwin,0).          "\nwindow.setTimeout(openpopwin,0)</script>");
         '// ]]>'.  
         '</script>");  
  $prog_state{'formname'}='popremain';   $prog_state{'formname'}='popremain';
  $prog_state{'inputname'}="remaining";   $prog_state{'inputname'}="remaining";
     } elsif ($type eq 'inline') {      } elsif ($type eq 'inline') {
Line 1025  sub Create_PrgWin { Line 993  sub Create_PrgWin {
 # update progress  # update progress
 sub Update_PrgWin {  sub Update_PrgWin {
     my ($r,$prog_state,$displayString)=@_;      my ($r,$prog_state,$displayString)=@_;
     &r_print($r,'<script type="text/javascript">'.      &r_print($r,'<script type="text/javascript">'.$$prog_state{'window'}.'.document.'.
              '// <![CDATA['.  
              $$prog_state{'window'}.'.document.'.  
      $$prog_state{'formname'}.'.'.       $$prog_state{'formname'}.'.'.
      $$prog_state{'inputname'}.'.value="'.       $$prog_state{'inputname'}.'.value="'.
      $displayString.'";'.       $displayString.'";</script>');
              '// ]]>'.  
              '</script>');  
     $$prog_state{'laststart'}=&Time::HiRes::time();      $$prog_state{'laststart'}=&Time::HiRes::time();
 }  }
   
Line 1085  sub Increment_PrgWin { Line 1049  sub Increment_PrgWin {
     if ($user_browser eq 'explorer' && $user_os =~ 'mac') {      if ($user_browser eq 'explorer' && $user_os =~ 'mac') {
         $lasttime = '';          $lasttime = '';
     }      }
     &r_print($r,'<script>'.      &r_print($r,'<script>'.$$prog_state{'window'}.'.document.'.
              '// <![CDATA['.  
              $$prog_state{'window'}.'.document.'.  
      $$prog_state{'formname'}.'.'.       $$prog_state{'formname'}.'.'.
      $$prog_state{'inputname'}.'.value="'.       $$prog_state{'inputname'}.'.value="'.
      $$prog_state{'done'}.'/'.$$prog_state{'max'}.       $$prog_state{'done'}.'/'.$$prog_state{'max'}.
      ': '.$time_est.' '.&mt('remaining').' '.$lasttime.'";'.       ': '.$time_est.' '.&mt('remaining').' '.$lasttime.'";'.'</script>');
              '// ]]>'.  
              '</script>');  
     $$prog_state{'laststart'}=&Time::HiRes::time();      $$prog_state{'laststart'}=&Time::HiRes::time();
 }  }
   
Line 1101  sub Increment_PrgWin { Line 1061  sub Increment_PrgWin {
 sub Close_PrgWin {  sub Close_PrgWin {
     my ($r,$prog_state)=@_;      my ($r,$prog_state)=@_;
     if ($$prog_state{'type'} eq 'popup') {      if ($$prog_state{'type'} eq 'popup') {
  &r_print($r,'<script>'.   &r_print($r,'<script>popwin.close()</script>'."\n");
                  '// <![CDATA['.  
                  'popwin.close()'.  
                  '// ]]>'.  
                  '</script>'."\n");  
     } elsif ($$prog_state{'type'} eq 'inline') {      } elsif ($$prog_state{'type'} eq 'inline') {
  &Update_PrgWin($r,$prog_state,&mt('Done'));   &Update_PrgWin($r,$prog_state,&mt('Done'));
     }      }
Line 1186  sub spellheader { Line 1142  sub spellheader {
   
     my $nothing=&javascript_nothing();      my $nothing=&javascript_nothing();
     return (<<ENDCHECK);      return (<<ENDCHECK);
 <script type="text/javascript">  <script type="text/javascript"> 
 // <![CDATA[  
 //<!-- BEGIN LON-CAPA Internal  //<!-- BEGIN LON-CAPA Internal
 var checkwin;  var checkwin;
   
Line 1198  function spellcheckerwindow(string) { Line 1153  function spellcheckerwindow(string) {
     checkwin.document.close();      checkwin.document.close();
 }  }
 // END LON-CAPA Internal -->  // END LON-CAPA Internal -->
 // ]]>  
 </script>  </script>
 ENDCHECK  ENDCHECK
 }  }
Line 1272  sub htmlareaselectactive { Line 1226  sub htmlareaselectactive {
     my @fields=@_;      my @fields=@_;
     unless (&htmlareabrowser()) { return ''; }      unless (&htmlareabrowser()) { return ''; }
     if (&htmlareablocked()) { return '<br />'.&enablelink(@fields); }      if (&htmlareablocked()) { return '<br />'.&enablelink(@fields); }
     my $output='<script type="text/javascript" defer="1">'.      my $output='<script type="text/javascript" defer="1">';
                '// <![CDATA[';  
     my $lang = &htmlarea_lang();      my $lang = &htmlarea_lang();
     foreach my $field (@fields) {      foreach my $field (@fields) {
  $output.="   $output.="
Line 1286  sub htmlareaselectactive { Line 1239  sub htmlareaselectactive {
     oFCKeditor.Config['DefaultLanguage'] = '$lang';      oFCKeditor.Config['DefaultLanguage'] = '$lang';
 }";  }";
     }      }
     $output.="\nwindow.status='Activated Editfields';\n".      $output.="\nwindow.status='Activated Editfields';\n</script><br />".
              '// ]]>'.  
              '</script><br />'.  
  &disablelink(@fields);   &disablelink(@fields);
     return $output;      return $output;
 }  }
Line 1327  Inputs: $component (the large text on th Line 1278  Inputs: $component (the large text on th
         $menulink (boolean, controls whether to include a link to /adm/menu)          $menulink (boolean, controls whether to include a link to /adm/menu)
         $helplink (if 'nohelp' don't include the orange help link)          $helplink (if 'nohelp' don't include the orange help link)
         $css_class (optional name for the class to apply to the table for CSS)          $css_class (optional name for the class to apply to the table for CSS)
           $no_mt (optional flag, 1 if &mt() is _not_ to be applied to $component
              when including the text on the right.
 Returns a string containing breadcrumbs for the current page.  Returns a string containing breadcrumbs for the current page.
   
 =item clear_breadcrumbs  =item clear_breadcrumbs
Line 1355  returns: nothing Line 1308  returns: nothing
         my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt) = @_;          my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt) = @_;
         #          #
  $css_class ||= 'LC_breadcrumbs';   $css_class ||= 'LC_breadcrumbs';
         my $Str = "\n".'<table class="'.$css_class.'"><tr><td>';          my $Str1 = '<ol id="LC_MenuBreadcrumbs">';
           my $Str = '';
         #          #
         # Make the faq and bug data cascade          # Make the faq and bug data cascade
         my $faq = '';          my $faq = '';
         my $bug = '';          my $bug = '';
  my $help='';   my $help='';
  # Crumb Symbol   # Crumb Symbol
  my $crumbsymbol = '&raquo;&nbsp;';   my $crumbsymbol = ' &#x25b6; ';
         # The last breadcrumb does not have a link, so handle it separately.          # The last breadcrumb does not have a link, so handle it separately.
         my $last = pop(@Crumbs);          my $last = pop(@Crumbs);
         #          #
Line 1391  returns: nothing Line 1345  returns: nothing
                      $faq = $_->{'faq'} if (exists($_->{'faq'}));                       $faq = $_->{'faq'} if (exists($_->{'faq'}));
                      $bug = $_->{'bug'} if (exists($_->{'bug'}));                       $bug = $_->{'bug'} if (exists($_->{'bug'}));
                      $help = $_->{'help'} if (exists($_->{'help'}));                       $help = $_->{'help'} if (exists($_->{'help'}));
                      my $result = '<a href="'.$_->{'href'}.'" ';                       my $result = '<li><a href="'.$_->{'href'}.'" ';
                      if (defined($_->{'target'}) && $_->{'target'} ne '') {                       if (defined($_->{'target'}) && $_->{'target'} ne '') {
                          $result .= 'target="'.$_->{'target'}.'" ';                           $result .= 'target="'.$_->{'target'}.'" ';
                      }                       }
      if ($_->{'no_mt'}) {       if ($_->{'no_mt'}) {
  $result .='title="'.$_->{'title'}.'">'.   $result .='title="'.$_->{'title'}.'">'.
      $_->{'text'}.'</a>';       $_->{'text'}.'</a></li>';
      } else {       } else {
  $result .='title="'.&mt($_->{'title'}).'">'.   $result .='title="'.&mt($_->{'title'}).'">'.
      &mt($_->{'text'}).'</a>';       &mt($_->{'text'}).'</a></li>';
      }       }
                      $result;                       $result;
                      } @Crumbs                       } @Crumbs
                  );                   );
         $links .= $crumbsymbol if ($links ne '');          $links .= $crumbsymbol if ($links ne '');
  if ($last->{'no_mt'}) {   if ($last->{'no_mt'}) {
     $links .= '<b>'.$last->{'text'}.'</b>';      $links .= '<li><b>'.$last->{'text'}.'</b></li>';
  } else {   } else {
     $links .= '<b>'.&mt($last->{'text'}).'</b>';      $links .= '<li><b>'.&mt($last->{'text'}).'</b></li>';
  }   }
         #          #
         my $icons = '';          my $icons = '';
Line 1429  returns: nothing Line 1383  returns: nothing
  $faq,$bug);   $faq,$bug);
  }   }
         #          #
         $Str .= $links.'</td>';          $Str1 .= $links.'</ol>';
         #          #
         if (defined($component)) {          if (defined($component)) {
             $Str .= '<td class="'.$css_class.'_component">';              $Str .= "\n".'<table class="'.$css_class.'">'
                      .'<tr><td class="'.$css_class.'_component">';
             if ($no_mt) {              if ($no_mt) {
                 $Str .= $component;                  $Str .= $component;
             } else {              } else {
Line 1441  returns: nothing Line 1396  returns: nothing
     if ($icons ne '') {      if ($icons ne '') {
  $Str .= '&nbsp;'.$icons;   $Str .= '&nbsp;'.$icons;
     }      }
     $Str .= '</td>';      $Str .= '</td></tr></table>'."\n";
         }          }
         $Str .= '</tr></table>'."\n";  
         #          #
         # Return the @Crumbs stack to what we started with          # Return the @Crumbs stack to what we started with
         push(@Crumbs,$last);          push(@Crumbs,$last);
         shift(@Crumbs);          shift(@Crumbs);
         #          #
         return $Str;          return "$Str\n$Str1";
     }      }
   
     sub clear_breadcrumbs {      sub clear_breadcrumbs {
Line 1551  END Line 1505  END
 }  }
   
 sub row_title {  sub row_title {
     my ($title,$css_title_class,$css_value_class) = @_;  
     $row_count[0]++;      $row_count[0]++;
     my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';      my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';
       my ($title,$css_title_class,$css_value_class) = @_;
     $css_title_class ||= 'LC_pick_box_title';      $css_title_class ||= 'LC_pick_box_title';
     $css_title_class = 'class="'.$css_title_class.'"';      $css_title_class = 'class="'.$css_title_class.'"';
   
Line 1599  sub role_select_row { Line 1553  sub role_select_row {
         $output = &row_title($title,$css_class);          $output = &row_title($title,$css_class);
     }      }
     $output .= qq|      $output .= qq|
                                   <select name="roles" multiple="multiple" >\n|;                                    <select name="roles" multiple="multiple">\n|;
     foreach my $role (@$roles) {      foreach my $role (@$roles) {
         my $plrole;          my $plrole;
         if ($role eq 'ow') {          if ($role eq 'ow') {
Line 1644  sub course_selection { Line 1598  sub course_selection {
     my ($formname,$totcodes,$codetitles,$idlist,$idlist_titles) = @_;      my ($formname,$totcodes,$codetitles,$idlist,$idlist_titles) = @_;
     my $output = qq|      my $output = qq|
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  
     function coursePick (formname) {      function coursePick (formname) {
         for  (var i=0; i<formname.coursepick.length; i++) {          for  (var i=0; i<formname.coursepick.length; i++) {
             if (formname.coursepick[i].value == 'category') {              if (formname.coursepick[i].value == 'category') {
Line 1667  sub course_selection { Line 1620  sub course_selection {
             formname.courselist = '';              formname.courselist = '';
         }          }
     }      }
 // ]]>  
 </script>  </script>
     |;      |;
     my $courseform='<b>'.&Apache::loncommon::selectcourse_link      my $courseform='<b>'.&Apache::loncommon::selectcourse_link
Line 1772  sub email_default_row { Line 1724  sub email_default_row {
   
 sub submit_row {  sub submit_row {
     my ($title,$cmd,$submit_text,$css_class) = @_;      my ($title,$cmd,$submit_text,$css_class) = @_;
       $submit_text = &mt($submit_text);
     my $output = &row_title($title,$css_class,'LC_pick_box_submit');      my $output = &row_title($title,$css_class,'LC_pick_box_submit');
     $output .= qq|      $output .= qq|
              <br />               <br />
Line 1813  sub topic_bar { Line 1766  sub topic_bar {
     return '      return '
 <div class="LC_topic_bar">  <div class="LC_topic_bar">
     <img alt="'.&mt('Step [_1]',$imgnum).      <img alt="'.&mt('Step [_1]',$imgnum).
               '" src="/res/adm/pages/bl_step'.$imgnum.'.gif" />&nbsp;'.$title                '"src="/res/adm/pages/bl_step'.$imgnum.'.gif" />&nbsp;
       <span>'.$title.'</span>
 </div>  </div>
 ';  ';
 }  }
Line 2067  END Line 2021  END
     return $scripttag;      return $scripttag;
 }  }
   
   ##############################################
   ##############################################
   
   # generate_menu
   #
   # Generates html markup for a menu. 
   #
   # Inputs:
   # An array of following structure:
   #   ({ categorytitle => 'Categorytitle',
   # items => [
   #    { linktext    => 'Text to be displayed',
   # url    => 'URL the link is pointing to, i.e. /adm/site?action=dosomething',
   # permission  => 'Contains permissions as returned from lonnet::allowed(),
   # must evaluate to true in order to activate the link',
   # icon        =>  'icon filename',
   # alttext    => 'alt text for the icon',
   # help    => 'Name of the corresponding helpfile',
   # linktitle   => 'Description of the link (used for title tag)'
   #    },
   #    ...
   # ]
   #   }, 
   #   ...
   #   )
   #
   # Outputs: A scalar containing the html markup for the menu.
   
   # ---- Remove when done ----
   # This routine is part of the redesign of LON-CAPA and it's 
   # subject to change during this project.
   # Don't rely on its current functionality as it might be 
   # changed or removed.
   # TODO:
   # check for empty values
   # --------------------------
   
   sub generate_menu {
       my @menu = @_;
       my $menu_html = qq|<div class="LC_columnSection">|;
   
       foreach my $category (@menu) { #FIXME: insert appropriate classnames for styles when they're finished.
    $menu_html .='<div class="LC_ContentBoxSpecial">
    <h3 class="LC_hcell">'.mt($category->{'categorytitle'}).'</h3>
    <ul class="LC_ListStyleNormal">';
    foreach my $item ( @{ $category->{items} } ) {
       next unless $item->{'permission'};
       $menu_html .= qq|<li class="LC_menubuttons_inline_text"><a href="$item->{'url'}" title="|.mt($item->{'linktitle'}).'">';
               if($item->{'icon'}){
                   $menu_html .= qq|<img class ="LC_noBorder LC_middle" src="/res/adm/pages/$item->{'icon'}" alt="|;
    if($item->{'alttext'}){
       $menu_html .= $item->{'alttext'}.'"/></a>';
    } else { #use linktext as alt text for the icon
       $menu_html .= qq|$item->{'linktext'}"/></a>|;
                   } 
               }
       $menu_html .= qq|<a href="$item->{'url'}" title="|.mt($item->{'linktitle'}).'">';
               $menu_html .= mt($item->{'linktext'}).'</a>';
       if (exists($item->{'help'})) {
    $menu_html .= Apache::loncommon::help_open_topic($item->{'help'});
       }
       $menu_html .= '</li>';
    }
    $menu_html .= '</ul></div>';
       }
       $menu_html .= qq|</div>|;
       return $menu_html;
   }
   
   
 1;  1;

Removed from v.1.182.4.5  
changed lines
  Added in v.1.199


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