Special:Listinterwikis
[lhc/web/wiklou.git] / includes / SkinTemplate.php
index a4238cc..ac020b7 100644 (file)
@@ -54,6 +54,7 @@ class MediaWiki_I18N {
 
                $value = wfMsg( $value );
                // interpolate variables
+               $m = array();
                while (preg_match('/\$([0-9]*?)/sm', $value, $m)) {
                        list($src, $var) = $m;
                        wfSuppressWarnings();
@@ -147,7 +148,8 @@ class SkinTemplate extends Skin {
                // adding of CSS or Javascript by extensions.
                wfRunHooks( 'BeforePageDisplay', array( &$out ) );
 
-               extract( $wgRequest->getValues( 'oldid', 'diff' ) );
+               $oldid = $wgRequest->getVal( 'oldid' );
+               $diff = $wgRequest->getVal( 'diff' );
 
                wfProfileIn( "$fname-init" );
                $this->initPage( $out );
@@ -192,16 +194,19 @@ class SkinTemplate extends Skin {
                $tpl->set( 'displaytitle', $wgOut->mPageLinkTitle );
                $tpl->set( 'pageclass', Sanitizer::escapeClass( 'page-'.$wgTitle->getPrefixedText() ) );
 
-               $nsname = @$wgCanonicalNamespaceNames[ $this->mTitle->getNamespace() ];
-               if ( $nsname === NULL ) $nsname = $this->mTitle->getNsText();
+               $nsname = isset( $wgCanonicalNamespaceNames[ $this->mTitle->getNamespace() ] ) ? 
+                         $wgCanonicalNamespaceNames[ $this->mTitle->getNamespace() ] :
+                         $this->mTitle->getNsText();
 
                $tpl->set( 'nscanonical', $nsname );
                $tpl->set( 'nsnumber', $this->mTitle->getNamespace() );
                $tpl->set( 'titleprefixeddbkey', $this->mTitle->getPrefixedDBKey() );
                $tpl->set( 'titletext', $this->mTitle->getText() );
                $tpl->set( 'articleid', $this->mTitle->getArticleId() );
+               $tpl->set( 'currevisionid', isset( $wgArticle ) ? $wgArticle->getLatest() : 0 );
+
                $tpl->set( 'isarticle', $wgOut->isArticle() );
-                               
+
                $tpl->setRef( "thispage", $this->thispage );
                $subpagestr = $this->subPageSubtitle();
                $tpl->set(
@@ -235,8 +240,11 @@ class SkinTemplate extends Skin {
                } else {
                        $tpl->set( 'feeds', false );
                }
-               if ($wgUseTrackbacks && $out->isArticleRelated())
-                       $tpl->set( 'trackbackhtml', $wgTitle->trackbackRDF());
+               if ($wgUseTrackbacks && $out->isArticleRelated()) {
+                       $tpl->set( 'trackbackhtml', $wgTitle->trackbackRDF() );
+               } else {
+                       $tpl->set( 'trackbackhtml', null );
+               }
 
                $tpl->setRef( 'mimetype', $wgMimeType );
                $tpl->setRef( 'jsmimetype', $wgJsMimeType );
@@ -344,7 +352,7 @@ class SkinTemplate extends Skin {
 
                        if ($wgPageShowWatchingUsers) {
                                $dbr =& wfGetDB( DB_SLAVE );
-                               extract( $dbr->tableNames( 'watchlist' ) );
+                               $watchlist = $dbr->tableName( 'watchlist' );
                                $sql = "SELECT COUNT(*) AS n FROM $watchlist
                                        WHERE wl_title='" . $dbr->strencode($this->mTitle->getDBKey()) .
                                        "' AND  wl_namespace=" . $this->mTitle->getNamespace() ;
@@ -509,17 +517,20 @@ class SkinTemplate extends Skin {
                                'href' => $href,
                                'active' => ( $href == $pageurl )
                        );
-                       $href = self::makeSpecialUrl( "Contributions/$this->username" );
+                       $href = self::makeSpecialUrlSubpage( 'Contributions', $this->username );
                        $personal_urls['mycontris'] = array(
                                'text' => wfMsg( 'mycontris' ),
-                               'href' => $href
-                               # FIXME #  'active' => ( $href == $pageurl . '/' . $this->username )
+                               'href' => $href,
+                               // FIXME #  'active' was disabed in r11346 with message: "disable bold link to my contributions; link was bold on all
+                               // Special:Contributions, not just current user's (fix me please!)". Until resolved, explicitly setting active to false.
+                               'active' => false # ( ( $href == $pageurl . '/' . $this->username ) 
                        );
                        $personal_urls['logout'] = array(
                                'text' => wfMsg( 'userlogout' ),
                                'href' => self::makeSpecialUrl( 'Userlogout',
                                        $wgTitle->isSpecial( 'Preferences' ) ? '' : "returnto={$this->thisurl}"
-                               )
+                               ),
+                               'active' => false
                        );
                } else {
                        if( $wgShowIPinHeader && isset(  $_COOKIE[ini_get("session.name")] ) ) {
@@ -760,9 +771,6 @@ class SkinTemplate extends Skin {
                $variants = $wgContLang->getVariants();
                if( !$wgDisableLangConversion && sizeof( $variants ) > 1 ) {
                        $preferred = $wgContLang->getPreferredVariant();
-                       $actstr = '';
-                       if( $action )
-                               $actstr = 'action=' . $action . '&';
                        $vcount=0;
                        foreach( $variants as $code ) {
                                $varname = $wgContLang->getVariantname( $code );
@@ -802,10 +810,9 @@ class SkinTemplate extends Skin {
 
                $action = $wgRequest->getText( 'action' );
                $oldid = $wgRequest->getVal( 'oldid' );
-               $diff = $wgRequest->getVal( 'diff' );
 
                $nav_urls = array();
-               $nav_urls['mainpage'] = array( 'href' => self::makeI18nUrl( 'mainpage') );
+               $nav_urls['mainpage'] = array( 'href' => self::makeMainPageUrl() );
                if( $wgEnableUploads ) {
                        if ($wgUploadNavigationUrl) {
                                $nav_urls['upload'] = array( 'href' => $wgUploadNavigationUrl );
@@ -820,7 +827,9 @@ class SkinTemplate extends Skin {
                }
                $nav_urls['specialpages'] = array( 'href' => self::makeSpecialUrl( 'Specialpages' ) );
 
-
+               // default permalink to being off, will override it as required below.
+               $nav_urls['permalink'] = false;
+               
                // A print stylesheet is attached to all pages, but nobody ever
                // figures that out. :)  Add a link...
                if( $this->iscontent && ($action == '' || $action == 'view' || $action == 'purge' ) ) {
@@ -858,6 +867,8 @@ class SkinTemplate extends Skin {
                                $nav_urls['recentchangeslinked'] = array(
                                        'href' => $rclTitle->getLocalUrl()
                                );
+                       } else {
+                               $nav_urls['recentchangeslinked'] = false;
                        }
                        if ($wgUseTrackbacks)
                                $nav_urls['trackbacklink'] = array(
@@ -875,19 +886,23 @@ class SkinTemplate extends Skin {
 
                if($id || $ip) { # both anons and non-anons have contri list
                        $nav_urls['contributions'] = array(
-                               'href' => self::makeSpecialUrl( 'Contributions/' . $this->mTitle->getText() )
+                               'href' => self::makeSpecialUrlSubpage( 'Contributions', $this->mTitle->getText() )
                        );
-                       if ( $wgUser->isAllowed( 'block' ) )
+                       if ( $wgUser->isAllowed( 'block' ) ) {
                                $nav_urls['blockip'] = array(
-                                       'href' => self::makeSpecialUrl( 'Blockip/' . $this->mTitle->getText() )
-                               );
+                                       'href' => self::makeSpecialUrlSubpage( 'Blockip', $this->mTitle->getText() )
+                               ); 
+                       } else {
+                               $nav_urls['blockip'] = false;
+                       }
                } else {
                        $nav_urls['contributions'] = false;
+                       $nav_urls['blockip'] = false;
                }
                $nav_urls['emailuser'] = false;
                if( $this->showEmailUser( $id ) ) {
                        $nav_urls['emailuser'] = array(
-                               'href' => self::makeSpecialUrl( 'Emailuser/' . $this->mTitle->getText() )
+                               'href' => self::makeSpecialUrlSubpage( 'Emailuser', $this->mTitle->getText() )
                        );
                }
                wfProfileOut( $fname );
@@ -1013,16 +1028,23 @@ class SkinTemplate extends Skin {
        }
 
        /**
-        * @public
+        * This returns MediaWiki:Common.js and MediaWiki:[Skinname].js concate-
+        * nated together.  For some bizarre reason, it does *not* return any
+        * custom user JS from subpages.  Huh?
+        *
+        * There's absolutely no reason to have separate Monobook/Common JSes.
+        * Any JS that cares can just check the skin variable generated at the
+        * top.  For now Monobook.js will be maintained, but it should be consi-
+        * dered deprecated.
+        *
+        * @return string
         */
-       function getUserJs() {
+       public function getUserJs() {
                $fname = 'SkinTemplate::getUserJs';
                wfProfileIn( $fname );
 
-               global $wgStylePath;
-               $s = '/* generated javascript */';
-               $s .= "var skin = '{$this->skinname}';\nvar stylepath = '{$wgStylePath}';";
-               $s .= '/* MediaWiki:'.ucfirst($this->skinname)." */\n";
+               $s = parent::getUserJs();
+               $s .= "\n\n/* MediaWiki:".ucfirst($this->skinname).".js (deprecated; migrate to Common.js!) */\n";
 
                // avoid inclusion of non defined user JavaScript (with custom skins only)
                // by checking for default message content
@@ -1133,7 +1155,7 @@ class QuickTemplate {
         * @private
         */
        function haveData( $str ) {
-               return $this->data[$str];
+               return isset( $this->data[$str] );
        }
 
        /**