import rt 3.8.10
[freeside.git] / rt / html / Elements / Menu
index 963be13..48fceeb 100644 (file)
@@ -1,8 +1,14 @@
-%# BEGIN LICENSE BLOCK
+%# BEGIN BPS TAGGED BLOCK {{{
 %# 
-%# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC 
+%#                                          <jesse@bestpractical.com>
 %# 
-%# (Except where explictly superceded by other copyright notices)
+%# (Except where explicitly superseded by other copyright notices)
+%# 
+%# 
+%# LICENSE:
 %# 
 %# This work is made available to you under the terms of Version 2 of
 %# the GNU General Public License. A copy of that license should have
 %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 %# General Public License for more details.
 %# 
-%# Unless otherwise specified, all modifications, corrections or
-%# extensions to this work which alter its source code become the
-%# property of Best Practical Solutions, LLC when submitted for
-%# inclusion in the work.
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
 %# 
 %# 
-%# END LICENSE BLOCK
-%# font size depends on level
-% if ($level ge 3) {
-%   $size = $basesize-(6);
-% } elsif ($level gt 0) {
-%   $size = $basesize-($level * 2);
-%   $padding = 2;
-% }
-%  else {
-%   $size = $basesize;
-%   $padding = 5;
-% }
-<ul class="topnav" >
-% my $sep=0;
-% my $accesskey="1";
+%# CONTRIBUTION SUBMISSION POLICY:
+%# 
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%# 
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%# 
+%# END BPS TAGGED BLOCK }}}
+<ul<% !$level ? ' id="system-menu"' : ''|n %><% $menu_class ? qq[ class="$menu_class"] : ''|n %>>
+<div<% $menu_class ? qq[ class="$menu_class"] : ''|n %>><div class="wrapper">
+% my $sep         = 0;
+% my $postsep     = 0;
+% my $accesskey   = 1;
+% 
+% $count = 0;
+% $class = {};
+% 
 % foreach $tab (sort keys %{$toptabs}) {
-% my $current = $current_toptab || "";
-% my $path = $toptabs->{$tab}->{'path'} || "";
-% $path =~ s#/index.html$##gi;
-% $current =~ s#/index.html$##gi;
-% if ( $path eq $current) {
-%     $class="currenttopnav"
-% } else {
-%     $class="topnav"
-% } 
-% my $style="";
-% if ($sep) {
-% $style="border-top: solid #999 1px; padding-top: .1em; margin-top: .5em;";
-% } elsif ($level == 0 ) {
-% $style="border-bottom: solid white 1px; padding-top: .25em; padding-bottom: .5em;" ;
-% }
-% if ($toptabs->{$tab}->{'separator'}) {
-% $sep=1;
-% } else {
-% $sep=0;
-% }
-<li style="<%$style%>"><A HREF="<%$RT::WebPath%>/<%$toptabs->{$tab}->{'path'}|n%>" style="font-size: <%$size%>;" class="<%$class%>" 
-<%($class eq 'currenttopnav') ? "name='focus'" : ""|n %> 
-<% !$level && "accesskey='".$accesskey++."'" |n%>><% $toptabs->{$tab}->{'title'}%></A>
+%     $count++;
+%
+%     my $current = $current_toptab || "";
+%     my $path    = $toptabs->{$tab}->{'path'} || "";
+%     
+%     $path    =~ s#/index.html$##gi;
+%     $current =~ s#/index.html$##gi;
+%     
+%     $sep     = $toptabs->{$tab}->{'separator'} ? 1 : 0;
+%
+%     my @aclass;
+%     push @aclass, 'selected'
+%            if $path eq $current;
+%
+%     push @aclass, 'odd'
+%            if $level % 2;
+%
+%     $class->{a} = join ' ', @aclass;
+%
+%     my @li;
+%     push @li, 'first'
+%            if $count == 1;
+%
+%     push @li, 'pre-separator'
+%            if $sep;
+%
+%     push @li, 'post-separator'
+%            if $postsep;
+%
+%     $class->{li} = join ' ', @li;
+%
+%     my $url = ($toptabs->{$tab}->{'path'}||'') =~ /^https?:/i
+%         ? $toptabs->{$tab}->{'path'} || ''
+%         : $RT::WebPath . "/" . $toptabs->{$tab}->{'path'};
+%     
+  <li<% $class->{li} ? qq[ class="$class->{li}"] : ''|n %>>
+    <% $count > 1 && !$postsep && qq[<span class="bullet">&#183; </span>]|n%>
+    <a href="<% $url %>"
+    <% $class->{a} && qq[ class="$class->{a}"] |n%>
+    <% !$level && " accesskey='".$accesskey++."'" |n%>>
+    <% $toptabs->{$tab}->{'title'} || ''%></a>
 %# Second-level items
-%# if ($current_toptab eq $toptabs->{$tab}->{'path'}) {
-%# commented out by jesse on 4 jan 2003 so that tickets/search and ticket/# can
-%# both have menu items
-% if ($toptabs->{$tab}->{'subtabs'}) {
-        <& /Elements/Menu, level => $level+1, 
-                current_toptab => $toptabs->{$tab}->{'current_subtab'},
-                toptabs => $toptabs->{$tab}->{'subtabs'} &></li>
-% }
-%# }
+%     if ($toptabs->{$tab}->{'subtabs'}
+%         and keys %{$toptabs->{$tab}->{'subtabs'}})
+%     {
+          <& /Elements/Menu, level => $level+1, 
+                             current_toptab => $toptabs->{$tab}->{'current_subtab'},
+                             toptabs => $toptabs->{$tab}->{'subtabs'},
+                             last_level => $toptabs->{$tab}->{last_system_menu_level} &>
+%     }
+  </li>
+%     if ($sep) {
+  <li class="separator">&#183;&#183;&#183;</li>
+%     }
+%
+%     $postsep = $sep;
 % }
+</div></div>
 </ul>
 
 <%INIT>
-my ($tab, $subtab, $class, $size, $padding);
-my $basesize=16;
+my ($tab, $class, $count);
+
+my @ul;
+push @ul, 'last-menu-level'
+    if $last_level;
+push @ul, 'odd'
+    if $level % 2;
+my $menu_class = join ' ', @ul;
 </%INIT>
 
 <%ARGS>
 $current_toptab => ""
 $toptabs => undef
 $level => 0
+$last_level => 0
 </%ARGS>