X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=skins%2FStandard.php;h=7db8a68a1780882974a4eb746ff9340854408913;hb=65c6f8c19a644490523aad7276a6683817c413da;hp=f7a2435331af9dbb123b32ab8954cccb47e9ceb9;hpb=9638e2a3a84ff1da012f12a2e4c0c4369b1308a4;p=lhc%2Fweb%2Fwiklou.git diff --git a/skins/Standard.php b/skins/Standard.php index f7a2435331..7db8a68a17 100644 --- a/skins/Standard.php +++ b/skins/Standard.php @@ -6,58 +6,57 @@ * @ingroup Skins */ -if( !defined( 'MEDIAWIKI' ) ) +if( !defined( 'MEDIAWIKI' ) ) { die( -1 ); +} /** * @todo document * @ingroup Skins */ -class SkinStandard extends Skin { - /* - * OutputPage - */ - function outputPage( OutputPage $out ) { - global $wgStylePath; - parent::outputPage( $out ); - } +class SkinStandard extends SkinLegacy { + var $skinname = 'standard', $stylename = 'standard', + $template = 'StandardTemplate'; /** - * + * @param $out OutputPage */ function setupSkinUserCss( OutputPage $out ){ - if ( 3 == $this->qbSetting() ) { # Floating left - $out->addStyle( 'common/quickbar.css' ); - } else if ( 4 == $this->qbSetting() ) { # Floating right - $out->addStyle( 'common/quickbar-right.css' ); - } parent::setupSkinUserCss( $out ); - } + $out->addModuleStyles( 'skins.standard' ); - /** - * - */ - function reallyGenerateUserStylesheet() { - $s = parent::reallyGenerateUserStylesheet(); $qb = $this->qbSetting(); + $rules = array(); if ( 2 == $qb ) { # Right - $s .= "#quickbar { position: absolute; top: 4px; right: 4px; " . - "border-left: 2px solid #000000; }\n" . - "#article, #mw-data-after-content { margin-left: 4px; margin-right: 152px; }\n"; - } else if ( 1 == $qb || 3 == $qb ) { - $s .= "#quickbar { position: absolute; top: 4px; left: 4px; " . - "border-right: 1px solid gray; }\n" . - "#article, #mw-data-after-content { margin-left: 152px; margin-right: 4px; }\n"; - } else if ( 4 == $qb) { - $s .= "#quickbar { border-right: 1px solid gray; }\n" . - "#article, #mw-data-after-content { margin-right: 152px; margin-left: 4px; }\n"; + $rules[] = "/* @noflip */#quickbar { position: absolute; top: 4px; right: 4px; border-left: 2px solid #000000; }"; + $rules[] = "/* @noflip */#article, #mw-data-after-content { margin-left: 4px; margin-right: 152px; }"; + $rules[] = "/* @noflip */#topbar, #footer { margin-right: 152px; }"; + } elseif ( 1 == $qb || 3 == $qb ) { + $rules[] = "/* @noflip */#quickbar { position: absolute; top: 4px; left: 4px; border-right: 1px solid gray; }"; + $rules[] = "/* @noflip */#article, #mw-data-after-content { margin-left: 152px; margin-right: 4px; }"; + $rules[] = "/* @noflip */#topbar, #footer { margin-left: 152px; }"; + if( 3 == $qb ) { + $rules[] = "/* @noflip */#quickbar { position: fixed; padding: 4px; }"; + } + } elseif ( 4 == $qb ) { + $rules[] = "/* @noflip */#quickbar { position: fixed; right: 0; top: 0; padding: 4px; }"; + $rules[] = "/* @noflip */#quickbar { border-right: 1px solid gray; }"; + $rules[] = "/* @noflip */#article, #mw-data-after-content { margin-right: 152px; margin-left: 4px; }"; + $rules[] = "/* @noflip */#topbar, #footer { margin-right: 152px; }"; } - return $s; + $style = implode( "\n", $rules ); + $out->addInlineStyle( $style, 'flip' ); } +} + +class StandardTemplate extends LegacyTemplate { + + /** + * @return string + */ function doAfterContent() { - global $wgContLang, $wgLang; wfProfileIn( __METHOD__ ); wfProfileIn( __METHOD__ . '-1' ); @@ -67,87 +66,86 @@ class SkinStandard extends Skin { wfProfileOut( __METHOD__ . '-1' ); wfProfileIn( __METHOD__ . '-2' ); - - $qb = $this->qbSetting(); - $shove = ( $qb != 0 ); - $left = ( $qb == 1 || $qb == 3 ); - if( $wgContLang->isRTL() ) $left = !$left; - - if ( $shove && $left ) { # Left - $s .= $this->getQuickbarCompensator(); - } - wfProfileOut( __METHOD__ . '-2' ); - wfProfileIn( __METHOD__ . '-3' ); - $l = $wgContLang->alignStart(); + $l = $this->getSkin()->getLang()->alignStart(); $s .= ""; $s .= $this->bottomLinks(); - $s .= "\n
" . $wgLang->pipeList( array( - $this->mainPageLink(), - $this->aboutLink(), - $this->specialLink( 'recentchanges' ), + $s .= "\n
" . $this->getSkin()->getLang()->pipeList( array( + $this->getSkin()->mainPageLink(), + $this->getSkin()->aboutLink(), + Linker::specialLink( 'Recentchanges' ), $this->searchForm() ) ) - . '
' . $this->pageStats() . ''; + . '
' . $this->pageStats() . ''; $s .= ''; - if ( $shove && !$left ) { # Right - $s .= $this->getQuickbarCompensator(); - } $s .= "\n\n\n"; - wfProfileOut( __METHOD__ . '-3' ); - wfProfileIn( __METHOD__ . '-4' ); - if ( 0 != $qb ) { + wfProfileOut( __METHOD__ . '-2' ); + wfProfileIn( __METHOD__ . '-3' ); + if ( $this->getSkin()->qbSetting() != 0 ) { $s .= $this->quickBar(); } - wfProfileOut( __METHOD__ . '-4' ); + wfProfileOut( __METHOD__ . '-3' ); wfProfileOut( __METHOD__ ); return $s; } + /** + * @return string + */ function quickBar() { - global $wgOut, $wgUser, $wgRequest, $wgContLang; - global $wgEnableUploads, $wgRemoteUploads; + global $wgContLang; wfProfileIn( __METHOD__ ); - $action = $wgRequest->getText( 'action' ); - $wpPreview = $wgRequest->getBool( 'wpPreview' ); - $tns = $this->mTitle->getNamespace(); + $action = $this->getSkin()->getRequest()->getText( 'action' ); + $wpPreview = $this->getSkin()->getRequest()->getBool( 'wpPreview' ); + $title = $this->getSkin()->getTitle(); + $tns = $title->getNamespace(); $s = "\n
"; - $s .= "\n" . $this->logoText() . "\n
"; + $s .= "\n" . $this->getSkin()->logoText() . "\n
"; $sep = "\n
"; # Use the first heading from the Monobook sidebar as the "browse" section - $bar = $this->buildSidebar(); + $bar = $this->getSkin()->buildSidebar(); unset( $bar['SEARCH'] ); unset( $bar['LANGUAGES'] ); unset( $bar['TOOLBOX'] ); - $browseLinks = reset( $bar ); - foreach ( $browseLinks as $link ) { - if ( $link['text'] != '-' ) { - $s .= "" . - htmlspecialchars( $link['text'] ) . '' . $sep; + $barnumber = 1; + foreach ( $bar as $browseLinks ) { + if ( is_array( $browseLinks ) ) { + if ( $barnumber > 1 ) { + $s .= "\n
"; + } + foreach ( $browseLinks as $link ) { + if ( $link['text'] != '-' ) { + $s .= "" . + htmlspecialchars( $link['text'] ) . '' . $sep; + } + } } + if ( $barnumber == 1 ) { + // only show watchlist link if logged in + if( $this->data['loggedin'] ) { + $s.= Linker::specialLink( 'Watchlist' ) ; + $s .= $sep . Linker::linkKnown( + SpecialPage::getTitleFor( 'Contributions' ), + wfMsg( 'mycontris' ), + array(), + array( 'target' => $this->data['username'] ) + ); + } + } + $barnumber = $barnumber + 1; } - if( $wgUser->isLoggedIn() ) { - $s.= $this->specialLink( 'watchlist' ) ; - $s .= $sep . $this->linkKnown( - SpecialPage::getTitleFor( 'Contributions' ), - wfMsg( 'mycontris' ), - array(), - array( 'target' => $wgUser->getName() ) - ); - } - // only show watchlist link if logged in $s .= "\n
"; - $articleExists = $this->mTitle->getArticleId(); - if ( $wgOut->isArticle() || $action == 'edit' || $action == 'history' || $wpPreview ) { - if( $wgOut->isArticle() ) { + $articleExists = $title->getArticleId(); + if ( $this->data['isarticle'] || $action == 'edit' || $action == 'history' || $wpPreview ) { + if( $this->data['isarticle'] ) { $s .= '' . $this->editThisPage() . ''; } else { # backlink to the article in edit or history mode if( $articleExists ){ # no backlink if no article @@ -190,16 +188,14 @@ class SkinStandard extends Skin { $text = wfMsg( 'articlepage' ); } - $link = $this->mTitle->getText(); - if( $nstext = $wgContLang->getNsText( $tns ) ) { # add namespace if necessary + $link = $title->getText(); + $nstext = $wgContLang->getNsText( $tns ); + if( $nstext ) { # add namespace if necessary $link = $nstext . ':' . $link; } - $s .= $this->link( - Title::newFromText( $link ), - $text - ); - } elseif( $this->mTitle->getNamespace() != NS_SPECIAL ) { + $s .= Linker::link( Title::newFromText( $link ), $text ); + } elseif( $title->getNamespace() != NS_SPECIAL ) { # we just throw in a "New page" text to tell the user that he's in edit mode, # and to avoid messing with the separator that is prepended to the next item $s .= '' . wfMsg( 'newpage' ) . ''; @@ -207,36 +203,31 @@ class SkinStandard extends Skin { } # "Post a comment" link - if( ( $this->mTitle->isTalkPage() || $wgOut->showNewSectionLink() ) && $action != 'edit' && !$wpPreview ) - $s .= '
' . $this->link( - $this->mTitle, + if( ( $title->isTalkPage() || $this->getSkin()->getOutput()->showNewSectionLink() ) && $action != 'edit' && !$wpPreview ) + $s .= '
' . Linker::link( + $title, wfMsg( 'postcomment' ), array(), array( 'action' => 'edit', 'section' => 'new' - ), - array( 'known', 'noclasses' ) + ) ); - #if( $tns%2 && $action!='edit' && !$wpPreview) { - #$s.= '
'.$this->linkKnown( Title::newFromText( $wgTitle->getPrefixedText() ),wfMsg('postcomment'),array(),array('action'=>'edit','section'=>'new')); - #} - - /* - watching could cause problems in edit mode: - if user edits article, then loads "watch this article" in background and then saves - article with "Watch this article" checkbox disabled, the article is transparently - unwatched. Therefore we do not show the "Watch this page" link in edit mode - */ - if ( $wgUser->isLoggedIn() && $articleExists) { - if( $action != 'edit' && $action != 'submit' ){ + /** + * Watching could cause problems in edit mode: + * if user edits article, then loads "watch this article" in background and then saves + * article with "Watch this article" checkbox disabled, the article is transparently + * unwatched. Therefore we do not show the "Watch this page" link in edit mode. + */ + if ( $this->data['loggedin'] && $articleExists ) { + if( $action != 'edit' && $action != 'submit' ) { $s .= $sep . $this->watchThisPage(); } - if ( $this->mTitle->userCan( 'edit' ) ) + if ( $title->userCan( 'edit' ) ) $s .= $sep . $this->moveThisPage(); } - if ( $wgUser->isAllowed( 'delete' ) and $articleExists ) { + if ( $this->getSkin()->getUser()->isAllowed( 'delete' ) && $articleExists ) { $s .= $sep . $this->deleteThisPage() . $sep . $this->protectThisPage(); } @@ -244,37 +235,40 @@ class SkinStandard extends Skin { if( $articleExists && $action != 'history' ) { $s .= $sep . $this->historyLink(); } - $s.= $sep . $this->whatLinksHere(); + $s .= $sep . $this->whatLinksHere(); - if( $wgOut->isArticleRelated() ) { + if( $this->getSkin()->getOutput()->isArticleRelated() ) { $s .= $sep . $this->watchPageLinksLink(); } - if ( NS_USER == $this->mTitle->getNamespace() - || $this->mTitle->getNamespace() == NS_USER_TALK ) { + if ( + NS_USER == $title->getNamespace() || + $title->getNamespace() == NS_USER_TALK + ) { - $id = User::idFromName( $this->mTitle->getText() ); - $ip = User::isIP( $this->mTitle->getText() ); + $id = User::idFromName( $title->getText() ); + $ip = User::isIP( $title->getText() ); if( $id || $ip ){ $s .= $sep . $this->userContribsLink(); } - if( $this->showEmailUser( $id ) ) { + if( $this->getSkin()->showEmailUser( $id ) ) { $s .= $sep . $this->emailUserLink(); } } $s .= "\n

"; } - if ( $wgUser->isLoggedIn() && ( $wgEnableUploads || $wgRemoteUploads ) ) { - $s .= $this->specialLink( 'upload' ) . $sep; + if( UploadBase::isEnabled() && UploadBase::isAllowed( $this->getSkin()->getUser() ) === true ) { + $s .= $this->getUploadLink() . $sep; } - $s .= $this->specialLink( 'specialpages' ); + + $s .= Linker::specialLink( 'Specialpages' ); global $wgSiteSupportPage; if( $wgSiteSupportPage ) { $s .= "\n
' . wfMsg( 'sitesupport' ) . ''; + '" class="internal">' . wfMsg( 'sitesupport' ) . ''; } $s .= "\n
\n";