From 389728310d2e4d84b3633db25e9958a1d205f12f Mon Sep 17 00:00:00 2001 From: MatmaRex Date: Fri, 5 Oct 2012 23:58:54 +0200 Subject: [PATCH] CologneBlue rewrite: rewrite bottomLinks() * use links already present in toolbar and navigational menus * remove all the checks that have been thus made redundant * introduce processBottomLink() * remove all the functions that became obsolete * fix up CSS * add action=info link Change-Id: I9486649e7b34f1ee33f5d529f3af5799369b3a11 --- skins/CologneBlue.php | 249 +++++++---------------------------- skins/cologneblue/screen.css | 6 +- 2 files changed, 56 insertions(+), 199 deletions(-) diff --git a/skins/CologneBlue.php b/skins/CologneBlue.php index 4a03aa09bc..81395ee655 100644 --- a/skins/CologneBlue.php +++ b/skins/CologneBlue.php @@ -122,223 +122,79 @@ class CologneBlueTemplate extends BaseTemplate { return $this->getSkin()->getLanguage()->pipeList( $s ); } - function bottomLinks() { - $sep = wfMessage( 'pipe-separator' )->escaped() . "\n"; - - $s = ''; - if ( $this->getSkin()->getOutput()->isArticleRelated() ) { - $element[] = '' . $this->editThisPage() . ''; - - if ( $this->getSkin()->getUser()->isLoggedIn() ) { - $element[] = $this->watchThisPage(); - } - - $element[] = $this->talkLink(); - $element[] = $this->historyLink(); - $element[] = $this->whatLinksHere(); - $element[] = $this->watchPageLinksLink(); - - $title = $this->getSkin()->getTitle(); - - if ( - $title->getNamespace() == NS_USER || - $title->getNamespace() == NS_USER_TALK - ) { - $id = User::idFromName( $title->getText() ); - $ip = User::isIP( $title->getText() ); - - # Both anons and non-anons have contributions list - if ( $id || $ip ) { - $element[] = $this->userContribsLink(); - } - - if ( $this->getSkin()->showEmailUser( $id ) ) { - $element[] = $this->emailUserLink(); - } - } - - $s = implode( $element, $sep ); - - if ( $title->getArticleID() ) { - $s .= "\n
"; - - // Delete/protect/move links for privileged users - if ( $this->getSkin()->getUser()->isAllowed( 'delete' ) ) { - $s .= $this->deleteThisPage(); - } - - if ( $this->getSkin()->getUser()->isAllowed( 'protect' ) ) { - $s .= $sep . $this->protectThisPage(); - } - - if ( $this->getSkin()->getUser()->isAllowed( 'move' ) ) { - $s .= $sep . $this->moveThisPage(); - } - } - - $s .= "
\n" . $this->otherLanguages(); + /** + * Used in bottomLinks() to eliminate repetitive code. + * + * @param $key string Key to be passed to makeListItem() + * @param $navlink array Navlink suitable for processNavlinkForDocument() + * @param $message string Key of the message to use in place of standard text + * + * @return string + * @fixed + */ + function processBottomLink( $key, $navlink, $message=null ) { + if ( !$navlink ) { + // Empty navlinks might be passed. + return null; } - return $s; - } - - function editThisPage() { - if ( !$this->getSkin()->getOutput()->isArticleRelated() ) { - $s = wfMessage( 'protectedpage' )->text(); - } else { - $title = $this->getSkin()->getTitle(); - if ( $title->quickUserCan( 'edit' ) && $title->exists() ) { - $t = wfMessage( 'editthispage' )->text(); - } elseif ( $title->quickUserCan( 'create' ) && !$title->exists() ) { - $t = wfMessage( 'create-this-page' )->text(); - } else { - $t = wfMessage( 'viewsource' )->text(); - } - - $s = Linker::linkKnown( - $title, - $t, - array(), - $this->getSkin()->editUrlOptions() - ); + if ( $message ) { + $navlink['text'] = wfMessage( $message )->escaped(); } - return $s; + return $this->makeListItem( $key, $this->processNavlinkForDocument( $navlink ), array( 'tag' => 'span' ) ); } - function deleteThisPage() { - $diff = $this->getSkin()->getRequest()->getVal( 'diff' ); - $title = $this->getSkin()->getTitle(); - - if ( $title->getArticleID() && ( !$diff ) && $this->getSkin()->getUser()->isAllowed( 'delete' ) ) { - $t = wfMessage( 'deletethispage' )->text(); + // @fixed + function bottomLinks() { + $toolbox = $this->getToolbox(); + $content_nav = $this->data['content_navigation']; - $s = Linker::linkKnown( - $title, - $t, - array(), - array( 'action' => 'delete' ) - ); - } else { - $s = ''; - } + $lines = array(); - return $s; - } + if ( $this->getSkin()->getOutput()->isArticleRelated() ) { + // First row. Regular actions. + $element = array(); - function protectThisPage() { - $diff = $this->getSkin()->getRequest()->getVal( 'diff' ); - $title = $this->getSkin()->getTitle(); + $editLinkMessage = $this->getSkin()->getTitle()->exists() ? 'editthispage' : 'create-this-page'; + $element[] = $this->processBottomLink( 'edit', $content_nav['views']['edit'], $editLinkMessage ); + $element[] = $this->processBottomLink( 'viewsource', $content_nav['views']['viewsource'], 'viewsource' ); - if ( $title->getArticleID() && ( ! $diff ) && $this->getSkin()->getUser()->isAllowed( 'protect' ) ) { - if ( $title->isProtected() ) { - $text = wfMessage( 'unprotectthispage' )->text(); - $query = array( 'action' => 'unprotect' ); - } else { - $text = wfMessage( 'protectthispage' )->text(); - $query = array( 'action' => 'protect' ); - } + $element[] = $this->processBottomLink( 'watch', $content_nav['actions']['watch'], 'watchthispage' ); + $element[] = $this->processBottomLink( 'unwatch', $content_nav['actions']['unwatch'], 'unwatchthispage' ); - $s = Linker::linkKnown( - $title, - $text, - array(), - $query - ); - } else { - $s = ''; - } + $element[] = $this->talkLink(); - return $s; - } + $element[] = $this->processBottomLink( 'history', $content_nav['views']['history'], 'history' ); + $element[] = $this->processBottomLink( 'info', $toolbox['info'] ); + $element[] = $this->processBottomLink( 'whatlinkshere', $toolbox['whatlinkshere'] ); + $element[] = $this->processBottomLink( 'recentchangeslinked', $toolbox['recentchangeslinked'] ); - function watchThisPage() { - // Cache - $title = $this->getSkin()->getTitle(); + $element[] = $this->processBottomLink( 'contributions', $toolbox['contributions'] ); + $element[] = $this->processBottomLink( 'emailuser', $toolbox['emailuser'] ); - if ( $this->getSkin()->getOutput()->isArticleRelated() ) { - if ( $this->getSkin()->getUser()->isWatched( $title ) ) { - $text = wfMessage( 'unwatchthispage' )->text(); - $query = array( - 'action' => 'unwatch', - 'token' => UnwatchAction::getUnwatchToken( $title, $this->getSkin()->getUser() ), - ); - $id = 'mw-unwatch-link'; - } else { - $text = wfMessage( 'watchthispage' )->text(); - $query = array( - 'action' => 'watch', - 'token' => WatchAction::getWatchToken( $title, $this->getSkin()->getUser() ), - ); - $id = 'mw-watch-link'; - } + $lines[] = $this->getSkin()->getLanguage()->pipeList( array_filter( $element ) ); - $s = Linker::linkKnown( - $title, - $text, - array( 'id' => $id ), - $query - ); - } else { - $s = wfMessage( 'notanarticle' )->text(); - } - return $s; - } + // Second row. Privileged actions. + $element = array(); - function moveThisPage() { - if ( $this->getSkin()->getTitle()->quickUserCan( 'move' ) ) { - return Linker::linkKnown( - SpecialPage::getTitleFor( 'Movepage' ), - wfMessage( 'movethispage' )->text(), - array(), - array( 'target' => $this->getSkin()->getTitle()->getPrefixedDBkey() ) - ); - } else { - // no message if page is protected - would be redundant - return ''; - } - } + $element[] = $this->processBottomLink( 'delete', $content_nav['actions']['delete'], 'deletethispage' ); + $element[] = $this->processBottomLink( 'undelete', $content_nav['actions']['undelete'], 'undeletethispage' ); - function historyLink() { - return Linker::link( - $this->getSkin()->getTitle(), - wfMessage( 'history' )->escaped(), - array( 'rel' => 'archives' ), - array( 'action' => 'history' ) - ); - } + $element[] = $this->processBottomLink( 'protect', $content_nav['actions']['protect'], 'protectthispage' ); + $element[] = $this->processBottomLink( 'unprotect', $content_nav['actions']['unprotect'], 'unprotectthispage' ); - function whatLinksHere() { - return Linker::linkKnown( - SpecialPage::getTitleFor( 'Whatlinkshere', $this->getSkin()->getTitle()->getPrefixedDBkey() ), - wfMessage( 'whatlinkshere' )->escaped() - ); - } + $element[] = $this->processBottomLink( 'move', $content_nav['actions']['move'], 'movethispage' ); - function userContribsLink() { - return Linker::linkKnown( - SpecialPage::getTitleFor( 'Contributions', $this->getSkin()->getTitle()->getDBkey() ), - wfMessage( 'contributions' )->escaped() - ); - } + $lines[] = $this->getSkin()->getLanguage()->pipeList( array_filter( $element ) ); - function emailUserLink() { - return Linker::linkKnown( - SpecialPage::getTitleFor( 'Emailuser', $this->getSkin()->getTitle()->getDBkey() ), - wfMessage( 'emailuser' )->escaped() - ); - } - function watchPageLinksLink() { - if ( !$this->getSkin()->getOutput()->isArticleRelated() ) { - return wfMessage( 'parentheses', wfMessage( 'notanarticle' )->text() )->escaped(); - } else { - return Linker::linkKnown( - SpecialPage::getTitleFor( 'Recentchangeslinked', $this->getSkin()->getTitle()->getPrefixedDBkey() ), - wfMessage( 'recentchangeslinked-toolbox' )->escaped() - ); + // Third row. Language links. + $lines[] = $this->otherLanguages(); } + + return implode( array_filter( $lines ), "
\n" ) . "
\n"; } // @fixed @@ -385,10 +241,7 @@ class CologneBlueTemplate extends BaseTemplate { // Use the regular navigational link, but replace its text. Everything else stays unmodified. $namespacesLinks = $this->data['content_navigation']['namespaces']; - $link = $this->processNavlinkForDocument( $namespacesLinks[ $key ] ); - $link['text'] = wfMessage( $message )->text(); - - return $this->makeListItem( $message, $link, array( 'tag' => 'span' ) ); + return $this->processBottomLink( $message, $namespacesLinks[$key], $message ); } /** diff --git a/skins/cologneblue/screen.css b/skins/cologneblue/screen.css index aac786d5ef..2a32df08f8 100644 --- a/skins/cologneblue/screen.css +++ b/skins/cologneblue/screen.css @@ -70,6 +70,10 @@ textarea { display: inline; } +#cb-ca-edit { + font-weight: bold; +} + #pagestats { font-family: Verdana, Arial, sans-serif; color: black; @@ -156,7 +160,7 @@ a.stub, #quickbar a.stub { text-decoration: none; } -a.new, #quickbar a.new { +a.new, #quickbar span.new a, #footer span.new a { color: #CC2200; } -- 2.20.1