#364219 follow-up by TheRec: Fix invocations of theme_links() via Drupal's rendering API.

merge-requests/26/head
Angie Byron 2009-08-25 15:39:13 +00:00
parent b30633deee
commit 245d83cb84
4 changed files with 45 additions and 17 deletions

View File

@ -4257,7 +4257,7 @@ function drupal_common_theme() {
'arguments' => array('display' => NULL),
),
'links' => array(
'arguments' => array('links' => NULL, 'attributes' => array('class' => array('links'))),
'arguments' => array('links' => NULL, 'attributes' => array('class' => array('links')), 'heading' => array()),
),
'image' => array(
'arguments' => array('path' => NULL, 'alt' => '', 'title' => '', 'attributes' => array(), 'getsize' => TRUE),

View File

@ -1383,11 +1383,13 @@ function theme_status_messages($display = NULL) {
* - href: the link URL. If omitted, the 'title' is shown as a plain text item in the links list.
* - html: (optional) set this to TRUE if 'title' is HTML so it will be escaped.
* Array items are passed on to the l() function's $options parameter when creating the link.
* @param $attributes
* A keyed array of attributes.
* @param $heading
* An optional keyed array for a heading to precede the links:
* - text: the heading text
* - level: the heading level (e.g. 'h2', 'h3')
* - class: (optional) space-separated classes for the heading
* - class: (optional) an array of the CSS classes for the heading
* Headings should be used on navigation menus and any list of links that
* consistently appears on multiple pages. To make the heading invisible
* use class => 'element-invisible'. Do not use 'display:none', which
@ -1395,22 +1397,24 @@ function theme_status_messages($display = NULL) {
* screen-reader and keyboard only users to navigate to or skip the links.
* See http://juicystudio.com/article/screen-readers-display-none.php
* and http://www.w3.org/TR/WCAG-TECHS/H42.html for more information.
* @param $attributes
* A keyed array of attributes.
* @return
* A string containing an unordered list of links.
*/
function theme_links($links, $heading = array(), $attributes = array('class' => array('links'))) {
function theme_links($links, $attributes = array('class' => array('links')), $heading = array()) {
global $language;
$output = '';
if (count($links) > 0) {
$output = '';
// Treat the heading first if it is present to prepend it to the
// list of links.
if (!empty($heading['text']) && !empty($heading['level'])) {
$output .= '<' . $heading['level'] . (!empty($heading['class']) ?
drupal_attributes(array('class' => $heading['class'])) : '') . '>';
$output .= check_plain($heading['text']);
$output .= '</' . $heading['level'] . '>';
$output .= '<' . $heading['level'];
if (!empty($heading['class'])) {
$output .= ' ' . drupal_attributes(array('class' => $heading['class']));
}
$output .= '>' . check_plain($heading['text']) . '</' . $heading['level'] . '>';
}
$output .= '<ul' . drupal_attributes($attributes) . '>';

View File

@ -156,7 +156,7 @@
<?php if ($main_menu): ?>
<div id="navigation"><div class="section">
<?php print theme('links', $main_menu, array('text' => t('Main menu'), 'level' => 'h2'), array('id' => 'main-menu', 'class' => array('links clearfix'))); ?>
<?php print theme('links', $main_menu, array('id' => 'main-menu', 'class' => array('links', 'clearfix')), array('text' => t('Main menu'), 'level' => 'h2')); ?>
</div></div> <!-- /.section, /#navigation -->
<?php endif; ?>
@ -195,7 +195,7 @@
</div></div> <!-- /#main, /#main-wrapper -->
<div id="footer"><div class="section">
<?php print theme('links', $secondary_menu, array('text' => t('Secondary menu'), 'level' => 'h2'), array('id' => 'secondary-menu', 'class' => array('links', 'clearfix'))); ?>
<?php print theme('links', $secondary_menu, array('id' => 'secondary-menu', 'class' => array('links', 'clearfix')), array('text' => t('Secondary menu'), 'level' => 'h2')); ?>
<?php if ($footer): ?><div id="footer-region" class="region"><?php print $footer; ?></div><?php endif; ?>
</div></div> <!-- /.section, /#footer -->

View File

@ -19,12 +19,36 @@ function garland_breadcrumb($breadcrumb) {
*/
function garland_preprocess_page(&$vars) {
$vars['tabs2'] = menu_secondary_local_tasks();
$vars['primary_nav'] = isset($vars['main_menu']) ? theme('links', $vars['main_menu'], array(
'text' => t('Main menu'), 'level' => 'h2', 'class' => array('element-invisible'),
), array('class' => array('links', 'main-menu'))) : FALSE;
$vars['secondary_nav'] = isset($vars['secondary_menu']) ? theme('links', $vars['secondary_menu'], array(
'text' => t('Secondary menu'), 'level' => 'h2', 'class' => array('element-invisible'),
), array('class' => array('links', 'secondary-menu'))) : FALSE;
if (isset($vars['main_menu'])) {
$vars['primary_nav'] = theme('links', $vars['main_menu'],
array(
'class' => array('links', 'main-menu'),
),
array(
'text' => t('Main menu'),
'level' => 'h2',
'class' => array('element-invisible'),
)
);
}
else {
$vars['primary_nav'] = FALSE;
}
if (isset($vars['secondary_menu'])) {
$vars['secondary_nav'] = theme('links', $vars['secondary_menu'],
array(
'class' => array('links', 'secondary-menu'),
),
array(
'text' => t('Secondary menu'),
'level' => 'h2',
'class' => array('element-invisible'),
)
);
}
else {
$vars['secondary_nav'] = FALSE;
}
$vars['ie_styles'] = garland_get_ie_styles();
// Prepare header