X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=skins%2FStandard.php;h=1114e7d0a173230022ce119f46f87ce9e632b52a;hb=5343b3eb3e4e11634be5e161120d879cd80bf70c;hp=2ffa8f20af0611e77040767b45bcefee103e96bb;hpb=25477bf5d637cdb5a1a365d6f8c8359c94577bd7;p=lhc%2Fweb%2Fwiklou.git diff --git a/skins/Standard.php b/skins/Standard.php index 2ffa8f20af..1114e7d0a1 100644 --- a/skins/Standard.php +++ b/skins/Standard.php @@ -1,284 +1,279 @@ addModuleStyles( 'skins.standard' ); + + $qb = $this->qbSetting(); + $rules = array(); - $s = parent::getHeadScripts(); - if ( 3 == $this->qbSetting() ) { # Floating left - $s .= "\n"; + if ( 2 == $qb ) { # Right + $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 getUserStyles() { - global $wgStylePath; - $s = ''; - if ( 3 == $this->qbSetting() ) { # Floating left - $s .= "\n"; + function doAfterContent() { + wfProfileIn( __METHOD__ ); + wfProfileIn( __METHOD__ . '-1' ); + + $s = "\n
\n"; + $s .= "\n\n\n"; + + wfProfileOut( __METHOD__ . '-2' ); + wfProfileIn( __METHOD__ . '-3' ); + if ( $this->getSkin()->qbSetting() != 0 ) { + $s .= $this->quickBar(); } - $s .= parent::getUserStyles(); + wfProfileOut( __METHOD__ . '-3' ); + wfProfileOut( __METHOD__ ); return $s; } /** - * + * @return string */ - function doGetUserStyles() { - global $wgUser, $wgOut, $wgStylePath; + function quickBar() { + global $wgContLang; + + wfProfileIn( __METHOD__ ); + + $action = $this->getSkin()->getRequest()->getText( 'action' ); + $wpPreview = $this->getSkin()->getRequest()->getBool( 'wpPreview' ); + $title = $this->getSkin()->getTitle(); + $tns = $title->getNamespace(); + + $s = "\n
"; + $s .= "\n" . $this->getSkin()->logoText() . "\n
"; + + $sep = "\n
"; + + # Use the first heading from the Monobook sidebar as the "browse" section + $bar = $this->getSkin()->buildSidebar(); + unset( $bar['SEARCH'] ); + unset( $bar['LANGUAGES'] ); + unset( $bar['TOOLBOX'] ); + + $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; + } - $s = parent::doGetUserStyles(); - $qb = $this->qbSetting(); + $s .= "\n
"; + $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 + switch( $tns ) { + case NS_TALK: + case NS_USER_TALK: + case NS_PROJECT_TALK: + case NS_FILE_TALK: + case NS_MEDIAWIKI_TALK: + case NS_TEMPLATE_TALK: + case NS_HELP_TALK: + case NS_CATEGORY_TALK: + $text = wfMsg('viewtalkpage'); + break; + case NS_MAIN: + $text = wfMsg( 'articlepage' ); + break; + case NS_USER: + $text = wfMsg( 'userpage' ); + break; + case NS_PROJECT: + $text = wfMsg( 'projectpage' ); + break; + case NS_FILE: + $text = wfMsg( 'imagepage' ); + break; + case NS_MEDIAWIKI: + $text = wfMsg( 'mediawikipage' ); + break; + case NS_TEMPLATE: + $text = wfMsg( 'templatepage' ); + break; + case NS_HELP: + $text = wfMsg( 'viewhelppage' ); + break; + case NS_CATEGORY: + $text = wfMsg( 'categorypage' ); + break; + default: + $text = wfMsg( 'articlepage' ); + } + + $link = $title->getText(); + $nstext = $wgContLang->getNsText( $tns ); + if( $nstext ) { # add namespace if necessary + $link = $nstext . ':' . $link; + } + + $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' ) . ''; + } + } - if ( 2 == $qb ) { # Right - $s .= "#quickbar { position: absolute; top: 4px; right: 4px; " . - "border-left: 2px solid #000000; }\n" . - "#article { 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 { margin-left: 152px; margin-right: 4px; }\n"; - } - return $s; - } + # "Post a comment" link + if( ( $title->isTalkPage() || $this->getSkin()->getOutput()->showNewSectionLink() ) && $action != 'edit' && !$wpPreview ) + $s .= '
' . Linker::link( + $title, + 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 ( $this->data['loggedin'] && $articleExists ) { + if( $action != 'edit' && $action != 'submit' ) { + $s .= $sep . $this->watchThisPage(); + } + if ( $title->userCan( 'edit' ) ) + $s .= $sep . $this->moveThisPage(); + } + if ( $this->getSkin()->getUser()->isAllowed( 'delete' ) && $articleExists ) { + $s .= $sep . $this->deleteThisPage() . + $sep . $this->protectThisPage(); + } + $s .= $sep . $this->talkLink(); + if( $articleExists && $action != 'history' ) { + $s .= $sep . $this->historyLink(); + } + $s .= $sep . $this->whatLinksHere(); - /** - * - */ - function getBodyOptions() { - $a = parent::getBodyOptions(); - - if ( 3 == $this->qbSetting() ) { # Floating left - $qb = "setup(\"quickbar\")"; - if($a["onload"]) { - $a["onload"] .= ";$qb"; - } else { - $a["onload"] = $qb; + if( $this->getSkin()->getOutput()->isArticleRelated() ) { + $s .= $sep . $this->watchPageLinksLink(); + } + + if ( + NS_USER == $title->getNamespace() || + $title->getNamespace() == NS_USER_TALK + ) { + + $id = User::idFromName( $title->getText() ); + $ip = User::isIP( $title->getText() ); + + if( $id || $ip ){ + $s .= $sep . $this->userContribsLink(); + } + if( $this->getSkin()->showEmailUser( $id ) ) { + $s .= $sep . $this->emailUserLink(); + } } + $s .= "\n

"; } - return $a; - } - function doAfterContent() { - global $wgUser, $wgOut, $wgContLang; - $fname = 'SkinStandard::doAfterContent'; - wfProfileIn( $fname ); - wfProfileIn( $fname.'-1' ); - - $s = "\n

\n"; - $s .= "\n\n\n"; - - wfProfileOut( $fname.'-3' ); - wfProfileIn( $fname.'-4' ); - if ( 0 != $qb ) { $s .= $this->quickBar(); } - wfProfileOut( $fname.'-4' ); - wfProfileOut( $fname ); - return $s; - } - - function quickBar() { - global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgContLang; - global $wgDisableUploads, $wgRemoteUploads, $wgNavigationLinks; - - $fname = 'Skin::quickBar'; - wfProfileIn( $fname ); - - $action = $wgRequest->getText( 'action' ); - $wpPreview = $wgRequest->getBool( 'wpPreview' ); - $tns=$wgTitle->getNamespace(); - - $s = "\n
"; - $s .= "\n" . $this->logoText() . "\n
"; - - $sep = "\n
"; - - foreach ( $wgNavigationLinks as $link ) { - $msg = wfMsgForContent( $link['href'] ); - if ( $msg != '-' ) { - $s .= '' . - wfMsg( $link['text'] ) . '' . $sep; - } - } - - - if ($wgUser->getID()) { - $s.= $this->specialLink( 'watchlist' ) ; - $s .= $sep . $this->makeKnownLink( $wgContLang->specialPage( 'Contributions' ), - wfMsg( 'mycontris' ), 'target=' . wfUrlencode($wgUser->getName() ) ); - - } - // only show watchlist link if logged in - $s .= "\n
"; - $articleExists = $wgTitle->getArticleId(); - if ( $wgOut->isArticle() || $action =='edit' || $action =='history' || $wpPreview) { - if($wgOut->isArticle()) { - $s .= '' . $this->editThisPage() . ''; - } else { # backlink to the article in edit or history mode - if($articleExists){ # no backlink if no article - switch($tns) { - case 0: - $text = wfMsg('articlepage'); - break; - case 1: - $text = wfMsg('viewtalkpage'); - break; - case 2: - $text = wfMsg('userpage'); - break; - case 3: - $text = wfMsg('viewtalkpage'); - break; - case 4: - $text = wfMsg('wikipediapage'); - break; - case 5: - $text = wfMsg('viewtalkpage'); - break; - case 6: - $text = wfMsg('imagepage'); - break; - case 7: - $text = wfMsg('viewtalkpage'); - break; - default: - $text= wfMsg('articlepage'); - } - - $link = $wgTitle->getText(); - if ($nstext = $wgContLang->getNsText($tns) ) { # add namespace if necessary - $link = $nstext . ':' . $link ; - } - - $s .= $this->makeLink( $link, $text ); - } elseif( $wgTitle->getNamespace() != Namespace::getSpecial() ) { - # 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') . ''; - } - - } - - - if( $tns%2 && $action!='edit' && !$wpPreview) { - $s.= '
'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit§ion=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 ( 0 != $wgUser->getID() && $articleExists) { - if($action!='edit' && $action != 'submit' ) - { - $s .= $sep . $this->watchThisPage(); - } - if ( $wgTitle->userCanEdit() ) - $s .= $sep . $this->moveThisPage(); - } - if ( $wgUser->isSysop() and $articleExists ) { - $s .= $sep . $this->deleteThisPage() . - $sep . $this->protectThisPage(); - } - $s .= $sep . $this->talkLink(); - if ($articleExists && $action !='history') { - $s .= $sep . $this->historyLink(); - } - $s.=$sep . $this->whatLinksHere(); - - if($wgOut->isArticleRelated()) { - $s .= $sep . $this->watchPageLinksLink(); - } - - if ( Namespace::getUser() == $wgTitle->getNamespace() - || $wgTitle->getNamespace() == Namespace::getTalk(Namespace::getUser()) - ) { - - $id=User::idFromName($wgTitle->getText()); - $ip=User::isIP($wgTitle->getText()); - - if($id||$ip) { - $s .= $sep . $this->userContribsLink(); - } - if ( 0 != $wgUser->getID() ) { - if($id) { # can only email real users - $s .= $sep . $this->emailUserLink(); - } - } - } - $s .= "\n

"; - } - - if ( 0 != $wgUser->getID() && ( !$wgDisableUploads || $wgRemoteUploads ) ) { - $s .= $this->specialLink( 'upload' ) . $sep; - } - $s .= $this->specialLink( 'specialpages' ) - . $sep . $this->bugReportsLink(); - - global $wgSiteSupportPage; - if( $wgSiteSupportPage ) { - $s .= "\n
' . wfMsg( 'sitesupport' ) . ''; - } - - $s .= "\n
\n"; - wfProfileOut( $fname ); - return $s; - } + if( UploadBase::isEnabled() && UploadBase::isAllowed( $this->getSkin()->getUser() ) === true ) { + $s .= $this->getUploadLink() . $sep; + } + $s .= Linker::specialLink( 'Specialpages' ); -} + global $wgSiteSupportPage; + if( $wgSiteSupportPage ) { + $s .= "\n
' . wfMsg( 'sitesupport' ) . ''; + } -?> + $s .= "\n
\n"; + wfProfileOut( __METHOD__ ); + return $s; + } + +}