Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.182.2.2 and 1.208

version 1.182.2.2, 2009/11/24 06:23:14 version 1.208, 2009/04/25 16:53:13
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)=@_;
      return '<span class="LC_success_confirm">'.
             $message.
             ' <img src="/adm/lonIcons/navmap.correct.gif" /></span>';
   }
   
 ##############################################  ##############################################
 ##############################################  ##############################################
Line 285  sub checkbox { Line 302  sub checkbox {
         $Str .= 'value="'.$value.'"';          $Str .= 'value="'.$value.'"';
     }       } 
     if ($checked) {      if ($checked) {
         $Str .= ' checked="1"';          $Str .= ' checked="checked"';
     }      }
     $Str .= ' />';      $Str .= ' />';
     return $Str;      return $Str;
Line 307  sub radio { Line 324  sub radio {
         $Str .= 'value="'.$value.'"';          $Str .= 'value="'.$value.'"';
     }       } 
     if ($checked eq $value) {      if ($checked eq $value) {
         $Str .= ' checked="1"';          $Str .= ' checked="checked"';
     }      }
     $Str .= ' />';      $Str .= ' />';
     return $Str;      return $Str;
Line 467  document.$formname.$dname\_year.value, Line 484  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 1092  sub crumbs { Line 1109  sub crumbs {
     my $output='';      my $output='';
     unless ($noformat) { $output.='<br /><tt><b>'; }      unless ($noformat) { $output.='<br /><tt><b>'; }
     $output.='<font size="'.$size.'">'.$prefix.'/';      $output.='<font size="'.$size.'">'.$prefix.'/';
     if (($env{'user.adv'}) || ($env{'user.author'})) {      if ($env{'user.adv'}) {
  my $path=$prefix.'/';   my $path=$prefix.'/';
  foreach my $dir (split('/',$uri)) {   foreach my $dir (split('/',$uri)) {
             if (! $dir) { next; }              if (! $dir) { next; }
Line 1280  Inputs: $component (the large text on th Line 1297  Inputs: $component (the large text on th
         $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          $no_mt (optional flag, 1 if &mt() is _not_ to be applied to $component
            when including the text on the right.             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 1306  returns: nothing Line 1322  returns: nothing
     my @Crumbs;      my @Crumbs;
           
     sub breadcrumbs {      sub breadcrumbs {
         my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt) = @_;          my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt, $no_realBreadcrumb) = @_;
         #          #
  $css_class ||= 'LC_breadcrumbs';   $css_class ||= 'LC_breadcrumbs';
         my $Str = "\n".'<table class="'.$css_class.'"><tr><td>';          my $Str1 = '<ol id="LC_MenuBreadcrumbs">';
   
    if($no_realBreadcrumb){
    $Str1 = '<ul class="LC_CourseBreadcrumbs">';
    }
   
           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 = ' &#x25b6; ';   my $crumbsymbol = '&raquo;&nbsp;';
         # 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 1339  returns: nothing Line 1361  returns: nothing
                     no_mt  =>$no_mt_descr,                      no_mt  =>$no_mt_descr,
                 });                  });
         }          }
         my $links .=           my $links .= '<li>'. 
             join($crumbsymbol,              join('</li><li>'.$crumbsymbol,
                  map {                   map {
                      $faq = $_->{'faq'} if (exists($_->{'faq'}));                       $faq = $_->{'faq'} if (exists($_->{'faq'}));
                      $bug = $_->{'bug'} if (exists($_->{'bug'}));                       $bug = $_->{'bug'} if (exists($_->{'bug'}));
Line 1349  returns: nothing Line 1371  returns: nothing
                      if (defined($_->{'target'}) && $_->{'target'} ne '') {                       if (defined($_->{'target'}) && $_->{'target'} ne '') {
                          $result .= 'target="'.$_->{'target'}.'" ';                           $result .= 'target="'.$_->{'target'}.'" ';
                      }                       }
    # set the possible translation for title 
      if ($_->{'no_mt'}) {       if ($_->{'no_mt'}) {
  $result .='title="'.$_->{'title'}.'">'.   $result .='title="'.$_->{'title'}.'">'.
      $_->{'text'}.'</a>';       $_->{'text'}.'</a>';
Line 1358  returns: nothing Line 1381  returns: nothing
      }       }
                      $result;                       $result;
                      } @Crumbs                       } @Crumbs
                  );                   ).'</li>';
         $links .= $crumbsymbol if ($links ne '');  #Workaround for edit course. 
    if(@Crumbs == 0 ){
    $links .= '<li>' if ($links ne '');
    } else {
    $links .= '<li>'.$crumbsymbol if ($links ne '');
    }
   #should the last Element be translated?
  if ($last->{'no_mt'}) {   if ($last->{'no_mt'}) {
     $links .= '<b>'.$last->{'text'}.'</b>';      $links .= '<b>'.$last->{'text'}.'</b>';
  } else {   } else {
     $links .= '<b>'.&mt($last->{'text'}).'</b>';      $links .= '<b>'.&mt($last->{'text'}).'</b>';
  }   }
         #   $links .= '</li>';
         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'}));
Line 1383  returns: nothing Line 1412  returns: nothing
  $faq,$bug);   $faq,$bug);
  }   }
         #          #
         $Str .= $links.'</td>';  
   
    if($no_realBreadcrumb){
           $Str1 .= $links.'</ul>';
    } else {
           $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 1395  returns: nothing Line 1431  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 a table and after that the breadcrumb's line
         return $Str;          return "$Str\n$Str1";
     }      }
   
     sub clear_breadcrumbs {      sub clear_breadcrumbs {
Line 1472  returns: nothing Line 1507  returns: nothing
 # routines, but can also be called directly to start and end rows which have   # routines, but can also be called directly to start and end rows which have 
 # needs that are not accommodated by the *_select_row() routines.      # needs that are not accommodated by the *_select_row() routines.    
   
   { # Start: row_count block for pick_box
   my @row_count;
   
 sub start_pick_box {  sub start_pick_box {
     my ($css_class) = @_;      my ($css_class) = @_;
     if (defined($css_class)) {      if (defined($css_class)) {
Line 1479  sub start_pick_box { Line 1517  sub start_pick_box {
     } else {      } else {
  $css_class= 'class="LC_pick_box"';   $css_class= 'class="LC_pick_box"';
     }      }
       unshift(@row_count,0);
     my $output = <<"END";      my $output = <<"END";
  <table $css_class>   <table $css_class>
 END  END
Line 1486  END Line 1525  END
 }  }
   
 sub end_pick_box {  sub end_pick_box {
       shift(@row_count);
     my $output = <<"END";      my $output = <<"END";
        </table>         </table>
 END  END
Line 1500  END Line 1540  END
 }  }
   
 sub row_title {  sub row_title {
       $row_count[0]++;
       my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';
     my ($title,$css_title_class,$css_value_class) = @_;      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.'"';
   
     $css_value_class ||= 'LC_pick_box_value';      $css_value_class ||= 'LC_pick_box_value';
     $css_value_class = 'class="'.$css_value_class.'"';  
   
     if ($title ne '') {      if ($title ne '') {
         $title .= ':';          $title .= ':';
Line 1515  sub row_title { Line 1556  sub row_title {
             <td $css_title_class>              <td $css_title_class>
        $title         $title
             </td>              </td>
             <td $css_value_class>              <td class="$css_value_class $css_class">
 ENDONE  ENDONE
     return $output;      return $output;
 }  }
Line 1537  ENDTWO Line 1578  ENDTWO
     return $output;      return $output;
 }  }
   
   } # End: row_count block for pick_box
   
   
 sub role_select_row {  sub role_select_row {
     my ($roles,$title,$css_class,$show_separate_custom,$cdom,$cnum) = @_;      my ($roles,$title,$css_class,$show_separate_custom,$cdom,$cnum) = @_;
     my $output;      my $output;
Line 1544  sub role_select_row { Line 1588  sub role_select_row {
         $output = &row_title($title,$css_class);          $output = &row_title($title,$css_class);
     }      }
     $output .= qq|      $output .= qq|
                                   <select name="roles" 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 1671  sub status_select_row { Line 1715  sub status_select_row {
         $output = &row_title($title,$css_class,'LC_pick_box_select');          $output = &row_title($title,$css_class,'LC_pick_box_select');
     }      }
     $output .= qq|      $output .= qq|
                                     <select name="types" multiple>\n|;                                      <select name="types" multiple="multiple">\n|;
     foreach my $status_type (sort(keys(%{$types}))) {      foreach my $status_type (sort(keys(%{$types}))) {
         $output .= '  <option value="'.$status_type.'">'.$$types{$status_type}.'</option>';          $output .= '  <option value="'.$status_type.'">'.$$types{$status_type}.'</option>';
     }      }
Line 1715  sub email_default_row { Line 1759  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 2011  END Line 2056  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.
   # --------------------------
   sub generate_menu {
       my @menu = @_;
   
       # usage: $wrap->(element, content, {attribute => value,...});
       # output: content enclosed in html conform tags
       my $wrap = sub {
           return
               qq|<$_[0]|
             . join( '', map { qq| $_="${$_[2]}{$_}"| } keys %{ $_[2] } )
             . ($_[1] ? qq|>$_[1]</$_[0]>| : qq|/>|). "\n";
       };
       
       # subs for specific html elements
       my $h3  = sub { return $wrap->( "h3",  @_ ) };
       my $div = sub { return $wrap->( "div", @_ ) };
       my $ul  = sub { return $wrap->( "ul",  @_ ) };
       my $li  = sub { return $wrap->( "li",  @_ ) };
       my $a   = sub { return $wrap->( "a",   @_ ) };
       my $img = sub { return $wrap->( "img", @_ ) };
       
       my @categories; # each element represents the entire markup for a category
      
       foreach my $category (@menu) {
           my @links;  # contains the links for the current $category
           foreach my $link (@{$$category{items}}) {
               next unless $$link{permission};
               
               # create the markup for the current $link and push it into @links.
               # each entry consists of an image and a text optionally followed 
               # by a help link.
               push @links, $li->(
                           $a->(
                               $img->("", {
                                   class => "LC_noBorder LC_middle",
                                   src   => "/res/adm/pages/$$link{icon}",
                                   alt   => mt(defined($$link{alttext}) ?
                                   $$link{alttext} : $$link{linktext})
                               }), {
                               href  => $$link{url},
                               title => mt($$link{linktitle})
                               }).
                           $a->(mt($$link{linktext}), {
                               href  => $$link{url},
                               title => mt($$link{linktitle}),
                               class => "LC_menubuttons_link"
                               }).
                            (defined($$link{help}) ? 
                            Apache::loncommon::help_open_topic($$link{help}) : ''),
                            {class => "LC_menubuttons_inline_text"});
           }
   
           # wrap categorytitle in <h3>, concatenate with 
           # joined and in <ul> tags wrapped @links
           # and wrap everything in an enclosing <div> and push it into
           # @categories
           # such that each element looks like:
           # <div><h3>title</h3><ul><li>...</li>...</ul></div>
           # the category won't be added if there aren't any links
           push @categories, 
               $div->($h3->(mt($$category{categorytitle}), {class=>"LC_hcell"}).
               $ul->(join('' ,@links),  {class =>"LC_ListStyleNormal" }),
               {class=>"LC_ContentBoxSpecial LC_400Box"}) if scalar(@links);
       }
   
       # wrap the joined @categories in another <div> (column layout)
       return $div->(join('', @categories), {class => "LC_columnSection"});
   }
   
 1;  1;
   

Removed from v.1.182.2.2  
changed lines
  Added in v.1.208


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.