quotes
[lhc/web/wiklou.git] / includes / SkinTemplate.php
index cc1676a..3289c5f 100644 (file)
@@ -229,6 +229,7 @@ class SkinTemplate extends Skin {
                $tpl->set( "helppage", wfMsg('helppage'));
                */
                $tpl->set( 'searchaction', $this->escapeSearchLink() );
+               $tpl->set( 'search', trim( $wgRequest->getVal( 'search' ) ) );
                $tpl->setRef( 'stylepath', $wgStylePath );
                $tpl->setRef( 'logopath', $wgLogo );
                $tpl->setRef( "lang", $wgContLanguageCode );
@@ -409,16 +410,14 @@ class SkinTemplate extends Skin {
                global $wgShowIPinHeader;
                $personal_urls = array();
                if ($this->loggedin) {
+                       /* Logged in users personal toolbar */
                        $personal_urls['userpage'] = array(
-                               'text' => $this->username,
-                               'href' => &$this->userpageUrlDetails['href'],
-                               'class' => $this->userpageUrlDetails['exists']?false:'new'
+                               'text' => wfMsg('mypage'),
+                               'href' => $this->makeSpecialUrl('Mypage')
                        );
-                       $usertalkUrlDetails = $this->makeTalkUrlDetails($this->userpage);
                        $personal_urls['mytalk'] = array(
                                'text' => wfMsg('mytalk'),
-                               'href' => &$usertalkUrlDetails['href'],
-                               'class' => $usertalkUrlDetails['exists']?false:'new'
+                               'href' => $this->makeSpecialUrl('Mytalk')
                        );
                        $personal_urls['preferences'] = array(
                                'text' => wfMsg('preferences'),
@@ -430,7 +429,7 @@ class SkinTemplate extends Skin {
                        );
                        $personal_urls['mycontris'] = array(
                                'text' => wfMsg('mycontris'),
-                               'href' => $this->makeSpecialUrl('Contributions','target=' . urlencode( $this->username ) )
+                               'href' => $this->makeSpecialUrl('Mycontributions')
                        );
                        $personal_urls['logout'] = array(
                                'text' => wfMsg('userlogout'),
@@ -438,23 +437,22 @@ class SkinTemplate extends Skin {
                        );
                } else {
                        if( $wgShowIPinHeader && isset(  $_COOKIE[ini_get("session.name")] ) ) {
+                               /* Anonymous with session users personal toolbar */
                                $personal_urls['anonuserpage'] = array(
-                                       'text' => $this->username,
-                                       'href' => &$this->userpageUrlDetails['href'],
-                                       'class' => $this->userpageUrlDetails['exists']?false:'new'
+                                       'text' => wfMsg('mypage'),
+                                       'href' => $this->makeSpecialUrl('Mypage')
                                );
-                               $usertalkUrlDetails = $this->makeTalkUrlDetails($this->userpage);
-                               $personal_urls['anontalk'] = array(
-                                       'text' => wfMsg('anontalk'),
-                                       'href' => &$usertalkUrlDetails['href'],
-                                       'class' => $usertalkUrlDetails['exists']?false:'new'
+                               $personal_urls['mytalk'] = array(
+                                       'text' => wfMsg('mytalk'),
+                                       'href' => $this->makeSpecialUrl('Mytalk')
                                );
+
                                $personal_urls['anonlogin'] = array(
                                        'text' => wfMsg('userlogin'),
                                        'href' => $this->makeSpecialUrl('Userlogin', 'returnto=' . $this->thisurl )
                                );
                        } else {
-
+                               /* Anonymous users personal toolbar */
                                $personal_urls['login'] = array(
                                        'text' => wfMsg('userlogin'),
                                        'href' => $this->makeSpecialUrl('Userlogin', 'returnto=' . $this->thisurl )
@@ -471,6 +469,7 @@ class SkinTemplate extends Skin {
         * @access private
         */
        function buildContentActionUrls () {
+               global $wgContLang;
                $fname = 'SkinTemplate::buildContentActionUrls';
                wfProfileIn( $fname );
                
@@ -486,9 +485,16 @@ class SkinTemplate extends Skin {
                        $nskey = $this->getNameSpaceKey();
                        $is_active = !Namespace::isTalk( $wgTitle->getNamespace()) ;
                        if ( $action == 'validate' ) $is_active = false ; # Show article tab deselected when validating
-                       $content_actions[$nskey] = array('class' => ($is_active) ? 'selected' : false,
-                       'text' => wfMsg($nskey),
-                       'href' => $this->makeArticleUrl($this->thispage));
+
+                       $subjectTitle = $wgTitle->getSubjectPage();
+                       if( $subjectTitle->getArticleId() != 0 ) {
+                               $class = ($is_active) ? 'selected' : false;
+                       } else {
+                               $class = ($is_active) ? 'selected new' : 'new';
+                       }
+                       $content_actions[$nskey] = array('class' => $class,
+                                                        'text' => wfMsg($nskey),
+                                                        'href' => $this->makeArticleUrl($this->thispage));
 
                        /* set up the classes for the talk link */
                        wfProfileIn( "$fname-talk" );
@@ -601,7 +607,7 @@ class SkinTemplate extends Skin {
                                }
                        }
                        wfProfileOut( "$fname-live" );
-                       
+
                        if ( $wgUser->getID() != 0 and $action != 'submit' ) {
                                if( !$wgTitle->userIsWatching()) {
                                        $content_actions['watch'] = array(
@@ -628,6 +634,7 @@ class SkinTemplate extends Skin {
                                        'href' => $wgTitle->getLocalUrl( 'action=validate'.$article_time)
                                );
                        }
+
                } else {
                        /* show special page tab */
 
@@ -638,6 +645,29 @@ class SkinTemplate extends Skin {
                        );
                }
 
+               /* show links to different language variants */
+               global $wgDisableLangConversion;
+               $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 );
+                               if( $varname == 'disable' )
+                                       continue;
+                               $selected = ( $code == $preferred )? 'selected' : false;
+                               $content_actions['varlang-' . $vcount] = array(
+                                               'class' => $selected,
+                                               'text' => $varname,
+                                               'href' => $wgTitle->getLocalUrl( $actstr . 'variant=' . $code )
+                                       );
+                               $vcount ++;
+                       }
+               }               
+
                wfProfileOut( $fname );
                return $content_actions;
        }
@@ -783,11 +813,11 @@ class SkinTemplate extends Skin {
                $fname = 'SkinTemplate::setupUserCss';
                wfProfileIn( $fname );
                
-               global $wgRequest, $wgTitle, $wgAllowUserCss, $wgUseSiteCss;
+               global $wgRequest, $wgTitle, $wgAllowUserCss, $wgUseSiteCss, $wgContLang, $wgSquidMaxage, $wgStylePath, $wgUser;
 
-               $sitecss = "";
-               $usercss = "";
-               $siteargs = "";
+               $sitecss = '';
+               $usercss = '';
+               $siteargs = '&maxage=' . $wgSquidMaxage;
 
                # Add user-specific code if this is a user and we allow that kind of thing
                
@@ -796,26 +826,29 @@ class SkinTemplate extends Skin {
                        
                        # if we're previewing the CSS page, use it
                        if($wgTitle->isCssSubpage() and $action == 'submit' and  $wgTitle->userCanEditCssJsSubpage()) {
-                               $siteargs .= "&smaxage=0&maxage=0";
+                               $siteargs = "&smaxage=0&maxage=0";
                                $usercss = $wgRequest->getText('wpTextbox1');
                        } else {
-                               $siteargs .= "&maxage=0";
                                $usercss = '@import "' .
                                  $this->makeUrl($this->userpage . '/'.$this->skinname.'.css',
                                                                 'action=raw&ctype=text/css') . '";' ."\n";
                        }
+
+                       $siteargs .= '&ts=' . $wgUser->mTouched;
                }
 
-               # If we use the site's dynamic CSS, throw that in, too
+               if ($wgContLang->isRTL()) $sitecss .= '@import "' . $wgStylePath . '/' . $this->stylename . '/rtl.css";' . "\n";
                
+               # If we use the site's dynamic CSS, throw that in, too
                if ( $wgUseSiteCss ) {
-                       $sitecss = '@import "'.$this->makeUrl('-','action=raw&gen=css' . $siteargs).'";'."\n";
+                       $sitecss .= '@import "' . $this->makeNSUrl(ucfirst($this->skinname) . '.css', 'action=raw&ctype=text/css&smaxage=' . $wgSquidMaxage, NS_MEDIAWIKI) . '";' . "\n";
+                       $sitecss .= '@import "' . $this->makeUrl('-','action=raw&gen=css' . $siteargs) . '";' . "\n";
                }
                
                # If we use any dynamic CSS, make a little CDATA block out of it.
                
                if ( !empty($sitecss) || !empty($usercss) ) {
-                       $this->usercss = '/*<![CDATA[*/ ' . $sitecss . ' ' . $usercss . ' /*]]>*/';
+                       $this->usercss = "/*<![CDATA[*/\n" . $sitecss . $usercss . '/*]]>*/';
                }
                wfProfileOut( $fname );
        }
@@ -849,13 +882,9 @@ class SkinTemplate extends Skin {
                $fname = 'SkinTemplate::getUserStylesheet';
                wfProfileIn( $fname );
                
-               global $wgUser, $wgRequest, $wgTitle, $wgContLang, $wgSquidMaxage, $wgStylePath;
-               $action = $wgRequest->getText('action');
-               $maxage = $wgRequest->getText('maxage');
+               global $wgUser;
                $s = "/* generated user stylesheet */\n";
-               if($wgContLang->isRTL()) $s .= '@import "'.$wgStylePath.'/'.$this->stylename.'/rtl.css";'."\n";
-               $s .= '@import "'.
-               $this->makeNSUrl(ucfirst($this->skinname).'.css', 'action=raw&ctype=text/css&smaxage='.$wgSquidMaxage, NS_MEDIAWIKI)."\";\n";
+
                if($wgUser->getID() != 0) {
                        if ( 1 == $wgUser->getOption( "underline" ) ) {
                                $s .= "a { text-decoration: underline; }\n";
@@ -894,6 +923,8 @@ class SkinTemplate extends Skin {
 /**
  * Generic wrapper for template functions, with interface
  * compatible with what we use of PHPTAL 0.7.
+ * @package MediaWiki
+ * @subpackage Skins
  */
 class QuickTemplate {
        /**
@@ -991,4 +1022,4 @@ class QuickTemplate {
 }
 
 } // end of if( defined( 'MEDIAWIKI' ) ) 
-?>
+?>
\ No newline at end of file