* replace hard coded namespace numbers by the php define
[lhc/web/wiklou.git] / includes / Preferences.php
index 5d5362e..e076b3f 100644 (file)
@@ -11,8 +11,8 @@ class Preferences {
                if (self::$defaultPreferences)
                        return self::$defaultPreferences;
        
-               global $wgLang, $wgRCMaxAge;
-               
+               global $wgRCMaxAge;
+
                $defaultPreferences = array();
 
                self::profilePreferences( $user, $defaultPreferences );
@@ -26,9 +26,9 @@ class Preferences {
                self::watchlistPreferences( $user, $defaultPreferences );
                self::searchPreferences( $user, $defaultPreferences );
                self::miscPreferences( $user, $defaultPreferences );
-                               
+
                wfRunHooks( 'GetPreferences', array( $user, &$defaultPreferences ) );
-                               
+
                ## Prod in defaults from the user
                global $wgDefaultUserOptions;
                foreach( $defaultPreferences as $name => &$info ) {
@@ -138,11 +138,11 @@ class Preferences {
                }
                                
                // Actually changeable stuff
-               global $wgAllowRealName;
+               global $wgAllowRealName, $wgAuth;
                if ($wgAllowRealName) {
                        $defaultPreferences['realname'] =
                                        array(
-                                               'type' => 'text',
+                                               'type' => $wgAuth->allowRealNameChange() ? 'text' : 'info',
                                                'default' => $user->getRealName(),
                                                'section' => 'personal/info',
                                                'label-message' => 'yourrealname',
@@ -164,7 +164,6 @@ class Preferences {
                                        'help-message' => 'prefs-help-gender',
                                );
 
-               global $wgAuth;
                if ($wgAuth->allowPasswordChange()) {
                        global $wgUser; // For skin.
                        $link = $wgUser->getSkin()->link( SpecialPage::getTitleFor( 'ResetPass' ),
@@ -253,7 +252,7 @@ class Preferences {
                global $wgMaxSigChars;
                $defaultPreferences['nickname'] =
                                array(
-                                       'type' => 'text',
+                                       'type' => $wgAuth->allowNickChange() ? 'text' : 'info',
                                        'maxlength' => $wgMaxSigChars,
                                        'label-message' => 'yournick',
                                        'validation-callback' =>
@@ -274,7 +273,7 @@ class Preferences {
                
                $defaultPreferences['emailaddress'] =
                                array(
-                                       'type' => 'text',
+                                       'type' => $wgAuth->allowEmailChange() ? 'text' : 'info',
                                        'default' => $user->getEmail(),
                                        'section' => 'personal/email',
                                        'label-message' => 'youremail',
@@ -286,6 +285,8 @@ class Preferences {
                                
                global $wgEnableEmail, $wgEnableUserEmail, $wgEmailAuthentication;
                
+               $disableEmailPrefs = false;
+               
                if ( $wgEmailAuthentication ) {
                        if ( $user->getEmail() ) {
                                if( $user->getEmailAuthenticationTimestamp() ) {
@@ -306,6 +307,7 @@ class Preferences {
                                                        wfMsg( 'emailconfirmlink' ) ) . '<br />';
                                }
                        } else {
+                               $disableEmailPrefs = true;
                                $emailauthenticated = wfMsg( 'noemailprefs' );
                        }
                        
@@ -328,12 +330,14 @@ class Preferences {
                                                        'invert' => true,
                                                        'section' => 'personal/email',
                                                        'label-message' => 'allowemail',
+                                                       'disabled' => $disableEmailPrefs,
                                                );
                                $defaultPreferences['ccmeonemails'] =
                                                array(
                                                        'type' => 'toggle',
                                                        'section' => 'personal/email',
                                                        'label-message' => 'tog-ccmeonemails',
+                                                       'disabled' => $disableEmailPrefs,
                                                );
                        }
                        
@@ -342,24 +346,28 @@ class Preferences {
                                                'type' => 'toggle',
                                                'section' => 'personal/email',
                                                'label-message' => 'tog-enotifwatchlistpages',
+                                               'disabled' => $disableEmailPrefs,
                                        );
                        $defaultPreferences['enotifusertalkpages'] =
                                        array(
                                                'type' => 'toggle',
                                                'section' => 'personal/email',
                                                'label-message' => 'tog-enotifusertalkpages',
+                                               'disabled' => $disableEmailPrefs,
                                        );
                        $defaultPreferences['enotifminoredits'] =
                                        array(
                                                'type' => 'toggle',
                                                'section' => 'personal/email',
                                                'label-message' => 'tog-enotifminoredits',
+                                               'disabled' => $disableEmailPrefs,
                                        );
                        $defaultPreferences['enotifrevealaddr'] =
                                        array(
                                                'type' => 'toggle',
                                                'section' => 'personal/email',
-                                               'label-message' => 'tog-enotifrevealaddr'
+                                               'label-message' => 'tog-enotifrevealaddr',
+                                               'disabled' => $disableEmailPrefs,
                                        );
                }
        }
@@ -813,7 +821,16 @@ class Preferences {
                                        'label-message' => 'contextchars',
                                        'section' => 'searchoptions',
                                        'min' => 0,
-                               );
+                               );              
+               global $wgEnableMWSuggest;
+               if ($wgEnableMWSuggest) {
+                       $defaultPreferences['disablesuggest'] =
+                                       array(
+                                               'type' => 'toggle',
+                                               'label-message' => 'mwsuggest-disable',
+                                               'section' => 'searchoptions',
+                                       );
+               }               
                
                // Searchable namespaces back-compat with old format
                $searchableNamespaces = SearchEngine::searchableNamespaces();
@@ -836,16 +853,6 @@ class Preferences {
                                        'section' => 'searchoptions',
                                        'prefix' => 'searchNs',
                                );
-                               
-               global $wgEnableMWSuggest;
-               if ($wgEnableMWSuggest) {
-                       $defaultPreferences['disablesuggest'] =
-                                       array(
-                                               'type' => 'toggle',
-                                               'label-message' => 'mwsuggest-disable',
-                                               'section' => 'searchoptions',
-                                       );
-               }
        }
        
        static function miscPreferences( $user, &$defaultPreferences ) {
@@ -892,12 +899,12 @@ class Preferences {
                        global $wgAllowUserCss, $wgAllowUserJs;
                        if( $wgAllowUserCss ) {
                                $cssPage = Title::makeTitleSafe( NS_USER, $user->getName().'/'.$skinkey.'.css' );
-                               $customCSS = $sk->makeLinkObj( $cssPage, wfMsgExt('prefs-custom-css', array() ) );
+                               $customCSS = $sk->link( $cssPage, wfMsgExt( 'prefs-custom-css', array() ) );
                                $extraLinks .= " ($customCSS)";
                        }
                        if( $wgAllowUserJs ) {
                                $jsPage = Title::makeTitleSafe( NS_USER, $user->getName().'/'.$skinkey.'.js' );
-                               $customJS = $sk->makeLinkObj( $jsPage, wfMsgHtml('prefs-custom-js') );
+                               $customJS = $sk->link( $jsPage, wfMsgHtml( 'prefs-custom-js' ) );
                                $extraLinks .= " ($customJS)";
                        }
                        if( $skinkey == $wgDefaultSkin )
@@ -986,9 +993,7 @@ class Preferences {
        }
        
        static function validateEmail( $email, $alldata ) {
-               global $wgUser; // To check
-               
-               if ( $email && !$wgUser->isValidEmailAddr( $email ) ) {
+               if ( $email && !User::isValidEmailAddr( $email ) ) {
                        return wfMsgExt( 'invalidemailaddress', 'parseinline' );
                }
                
@@ -1213,6 +1218,8 @@ class PreferencesForm extends HTMLForm {
                
                $html .= "\n" . $sk->link( $t, wfMsg( 'restoreprefs' ) );
                
+               $html = Xml::tags( 'div', array( 'class' => 'mw-prefs-buttons' ), $html );
+               
                return $html;
        }