version 1.430, 2014/12/20 15:35:40
|
version 1.431, 2015/01/19 15:36:01
|
Line 128 Inputs: 4 - (a) link and (b) target for
|
Line 128 Inputs: 4 - (a) link and (b) target for
|
(c) title for text wrapped by anchor tag in top level item. |
(c) title for text wrapped by anchor tag in top level item. |
(d) reference to array of arrays of sub-menu items. |
(d) reference to array of arrays of sub-menu items. |
|
|
|
The underlying datastructure used in (d) contains data from mydesk.tab. |
|
It consists of an array which has an array for each item appearing in |
|
the menu (e.g. [["link", "title", "condition"]] for a single-item menu). |
|
create_submenu() supports also the creation of XHTML for nested dropdown |
|
menus represented by unordered lists. This is done by replacing the |
|
scalar used for the link with an arrayreference containing the menuitems |
|
for the nested menu. This can be done recursively so that the next menu |
|
may also contain nested submenus. |
|
|
|
Example: |
|
[ # begin of datastructure |
|
["/home/", "Home", "condition1"], # 1st item of the 1st layer menu |
|
[ # 2nd item of the 1st layer menu |
|
[ # anon. array for nested menu |
|
["/path1", "Path1", undef], # 1st item of the 2nd layer menu |
|
["/path2", "Path2", undef], # 2nd item of the 2nd layer menu |
|
[ # 3rd item of the 2nd layer menu |
|
[[...], [...], ..., [...]], # containing another menu layer |
|
"Sub-Sub-Menu", # title for this container |
|
undef |
|
] |
|
], # end of array/nested menu |
|
"Sub-Menu", # title for the container item |
|
undef |
|
] # end of 2nd item of the 1st layer menu |
|
] |
|
|
=item innerregister() |
=item innerregister() |
|
|
This gets called in order to register a URL in the body of the document |
This gets called in order to register a URL in the body of the document |
Line 499 sub create_submenu {
|
Line 526 sub create_submenu {
|
'<span class="LC_fontsize_small" style="font-weight:normal;">'. |
'<span class="LC_fontsize_small" style="font-weight:normal;">'. |
' ▼</span></span></a>'. |
' ▼</span></span></a>'. |
'<ul>'; |
'<ul>'; |
|
|
|
# $link and $title are only used in the initial string written in $menu |
|
# as seen above, not needed for nested submenus |
|
$menu .= &build_submenu($target, $submenu, $translate, '1'); |
|
$menu .= '</ul></li>'; |
|
|
|
return $menu; |
|
} |
|
|
|
# helper routine for create_submenu |
|
# build the dropdown (and nested submenus) recursively |
|
# see perldoc create_submenu documentation for further information |
|
sub build_submenu { |
|
my ($target, $submenu, $translate, $first_level) = @_; |
|
if (!defined(@{$submenu})) { |
|
return ''; |
|
} |
|
|
|
my $menu = ''; |
my $count = 0; |
my $count = 0; |
my $numsub = scalar(@{$submenu}); |
my $numsub = scalar(@{$submenu}); |
foreach my $item (@{$submenu}) { |
foreach my $item (@{$submenu}) { |
$count ++; |
$count ++; |
if (ref($item) eq 'ARRAY') { |
if (ref($item) eq 'ARRAY') { |
my $href = $item->[0]; |
my $href = $item->[0]; |
if ($href =~ /(aboutme|rss\.html)$/) { |
my $bordertop; |
next unless (($env{'user.name'} ne '') && ($env{'user.domain'} ne '')); |
|
$href =~ s/\[domain\]/$env{'user.domain'}/g; |
|
$href =~ s/\[user\]/$env{'user.name'}/g; |
|
} |
|
my $borderbot; |
my $borderbot; |
if ($count == $numsub) { |
my $title; |
$borderbot = 'border-bottom:1px solid black;'; |
|
} |
|
unless (($href eq '') || ($href =~ /^\#/)) { |
|
$target = ' target="_top"'; |
|
} |
|
$menu .= '<li style="margin:0;padding:0;'. |
|
$borderbot.'"><a href="'.$href.'"'.$target.'>'; |
|
if ($translate) { |
if ($translate) { |
$menu .= &mt($item->[1]); |
$title = &mt($item->[1]); |
} else { |
} else { |
$menu .= $item->[1]; |
$title = $item->[1]; |
|
} |
|
|
|
if ($count == 1 && !$first_level) { |
|
$bordertop = 'border-top: 1px solid black;'; |
|
} |
|
if ($count == $numsub) { |
|
$borderbot = 'border-bottom: 1px solid black;'; |
|
} |
|
|
|
# href is a reference to another submenu |
|
if (ref($href) eq 'ARRAY') { |
|
$menu .= '<li style="margin:0;padding:0;'.$bordertop . $borderbot . '">'; |
|
$menu .= '<p><span class="LC_primary_menu_innertitle">' |
|
. $title . '</span><span class="LC_primary_menu_innerarrow">▶</span></p>'; |
|
$menu .= '<ul>'; |
|
$menu .= &build_submenu($target, $href, $translate); |
|
$menu .= '</ul>'; |
|
$menu .= '</li>'; |
|
} else { # href is the actual hyperlink and does not represent another submenu |
|
# for the current menu title |
|
if ($href =~ /(aboutme|rss\.html)$/) { |
|
next unless (($env{'user.name'} ne '') && ($env{'user.domain'} ne '')); |
|
$href =~ s/\[domain\]/$env{'user.domain'}/g; |
|
$href =~ s/\[user\]/$env{'user.name'}/g; |
|
} |
|
unless (($href eq '') || ($href =~ /^\#/)) { |
|
$target = ' target="_top"'; |
|
} |
|
|
|
$menu .= '<li style="margin:0;padding:0;'. $bordertop . $borderbot .'">'; |
|
$menu .= '<a href="'.$href.'"'.$target.'>' . $title . '</a>'; |
|
$menu .= '</li>'; |
} |
} |
$menu .= '</a></li>'; |
|
} |
} |
} |
} |
$menu .= '</ul></li>'; |
|
return $menu; |
return $menu; |
} |
} |
|
|
Line 752 ENDMENUITEMS
|
Line 818 ENDMENUITEMS
|
# wishlist is only available for users with access to resource-pool |
# wishlist is only available for users with access to resource-pool |
# and links can only be set for resources within the resource-pool |
# and links can only be set for resources within the resource-pool |
$menuitems .= (<<ENDMENUITEMS); |
$menuitems .= (<<ENDMENUITEMS); |
s&9&1&wishlist-link.png&Stored Links&wishlistlink[_2]&set_wishlistlink('',currentURL)&Save a link for this resource in my personal Stored Links repository&&1 |
s&9&1&wishlist-link.png&Stored Links&wishlistlink[_2]&set_wishlistlink()&Save a link for this resource in my personal Stored Links repository&&1 |
ENDMENUITEMS |
ENDMENUITEMS |
$got_wishlist = 1; |
$got_wishlist = 1; |
} |
} |
Line 803 ENDMENUITEMS
|
Line 869 ENDMENUITEMS
|
if (($env{'user.adv'}) && (!$env{'request.enc'})) { |
if (($env{'user.adv'}) && (!$env{'request.enc'})) { |
# wishlist is only available for users with access to resource-pool |
# wishlist is only available for users with access to resource-pool |
$menuitems .= (<<ENDMENUITEMS); |
$menuitems .= (<<ENDMENUITEMS); |
s&9&1&wishlist-link.png&Stored Links&wishlistlink[_2]&set_wishlistlink('',currentURL)&Save a link for this resource in your personal Stored Links repository&&1 |
s&9&1&wishlist-link.png&Stored Links&wishlistlink[_2]&set_wishlistlink()&Save a link for this resource in your personal Stored Links repository&&1 |
ENDMENUITEMS |
ENDMENUITEMS |
$got_wishlist = 1; |
$got_wishlist = 1; |
} |
} |