From af5e002d253c54c3a7f13976ec1753da57bc7001 Mon Sep 17 00:00:00 2001 From: Daniel Friesen Date: Mon, 27 Dec 2010 12:23:06 +0000 Subject: [PATCH] Commit getPersonalTools to allow personal bar generation to be simplified. --- includes/SkinTemplate.php | 32 +++++++++++++++++++++++++++++++- skins/Modern.php | 12 ++++-------- skins/MonoBook.php | 12 ++++-------- skins/Vector.php | 18 ++++-------------- 4 files changed, 43 insertions(+), 31 deletions(-) diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index 0a18bb74f3..6ef1e62541 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -1289,6 +1289,33 @@ abstract class BaseTemplate extends QuickTemplate { return $toolbox; } + /** + * Create an array of personal tools items from the data in the quicktemplate + * stored by SkinTemplate. + * The resulting array is built acording to a format intended to be passed + * through makeListItem to generate the html. + * This is in reality the same list as already stored in personal_urls + * however it is reformatted so that you can just pass the individual items + * to makeListItem instead of hardcoding the element creation boilerplate. + */ + function getPersonalTools() { + $personal_tools = array(); + foreach( $this->data['personal_urls'] as $key => $ptool ) { + # The class on a personal_urls item is meant to go on the instead + # of the
  • so we have to use a single item "links" array instead + # of using most of the personal_url's keys directly + $personal_tools[$key] = array(); + $personal_tools[$key]["links"][] = array(); + $personal_tools[$key]["links"][0]["single-id"] = $personal_tools[$key]["id"] = "pt-$key"; + $personal_tools[$key]["active"] = $ptool["active"]; + foreach ( array("href", "class", "text") as $k ) { + if ( isset($ptool[$k]) ) + $personal_tools[$key]["links"][0][$k] = $ptool[$k]; + } + } + return $personal_tools; + } + /** * Makes a link, usually used by makeListItem to generate a link for an item * in a list used in navigation lists, portlets, portals, sidebars, etc... @@ -1380,7 +1407,7 @@ abstract class BaseTemplate extends QuickTemplate { // generating tooltips and accesskeys. $link['single-id'] = $item['id']; } - $html = $this->makeLink( $key, $link ); + $html = $this->makeLink( $key, $link ); } $attrs = array(); @@ -1390,6 +1417,9 @@ abstract class BaseTemplate extends QuickTemplate { } } if ( isset( $item['active'] ) && $item['active'] ) { + if ( !isset( $attrs['class'] ) ) { + $attrs['class'] = ''; + } $attrs['class'] .= ' active'; $attrs['class'] = trim( $attrs['class'] ); } diff --git a/skins/Modern.php b/skins/Modern.php index 71ededcc1d..6cc4fc19f2 100644 --- a/skins/Modern.php +++ b/skins/Modern.php @@ -154,14 +154,10 @@ class ModernTemplate extends MonoBookTemplate {
    msg('personaltools') ?>
    diff --git a/skins/MonoBook.php b/skins/MonoBook.php index 9c7a0e1213..ec13ed0f81 100644 --- a/skins/MonoBook.php +++ b/skins/MonoBook.php @@ -129,14 +129,10 @@ class MonoBookTemplate extends BaseTemplate {
    msg('personaltools') ?>
    html('userlangattributes') ?>> -data['personal_urls'] as $key => $item) { ?> -
  • " class="active">tooltipAndAccesskey('pt-'.$key) ?> class="">
  • - +getPersonalTools() as $key => $item) { ?> + makeListItem($key, $item); ?> + + diff --git a/skins/Vector.php b/skins/Vector.php index 8b4a92adfb..0ce3991784 100644 --- a/skins/Vector.php +++ b/skins/Vector.php @@ -401,17 +401,6 @@ class VectorTemplate extends BaseTemplate { $this->data['view_urls'] = $nav['views']; $this->data['action_urls'] = $nav['actions']; $this->data['variant_urls'] = $nav['variants']; - // Build additional attributes for personal_urls - foreach ( $this->data['personal_urls'] as $key => $item) { - $this->data['personal_urls'][$key]['attributes'] = - ' id="' . Sanitizer::escapeId( "pt-$key" ) . '"'; - if ( isset( $item['active'] ) && $item['active'] ) { - $this->data['personal_urls'][$key]['attributes'] .= - ' class="active"'; - } - $this->data['personal_urls'][$key]['key'] = - $this->skin->tooltipAndAccesskey('pt-'.$key); - } // Reverse horizontally rendered navigation elements if ( $wgLang->isRTL() ) { @@ -687,9 +676,10 @@ class VectorTemplate extends BaseTemplate {
    msg('personaltools') ?>
    html('userlangattributes') ?>> - data['personal_urls'] as $item): ?> -
  • > class="">
  • - +getPersonalTools() as $key => $item) { ?> + makeListItem($key, $item); ?> + +