http://www.mediawiki.org/wiki/Special:Code/MediaWiki/73024
Revision: 73024
Author: tparscal
Date: 2010-09-14 21:47:59 +0000 (Tue, 14 Sep 2010)
Log Message:
-----------
* Added exporting of user preferences
* Renamed user.preferences to user.options
* Fixed bug that caused anonomous usernames (such as IP addresses) to be used
in user style and script requests
* Fixed user options styles not loading for anon users
Modified Paths:
--------------
trunk/phase3/includes/AutoLoader.php
trunk/phase3/includes/OutputPage.php
trunk/phase3/includes/ResourceLoaderModule.php
trunk/phase3/includes/Skin.php
Modified: trunk/phase3/includes/AutoLoader.php
===================================================================
--- trunk/phase3/includes/AutoLoader.php 2010-09-14 21:46:26 UTC (rev
73023)
+++ trunk/phase3/includes/AutoLoader.php 2010-09-14 21:47:59 UTC (rev
73024)
@@ -203,6 +203,8 @@
'ResourceLoaderWikiModule' => 'includes/ResourceLoaderModule.php',
'ResourceLoaderFileModule' => 'includes/ResourceLoaderModule.php',
'ResourceLoaderSiteModule' => 'includes/ResourceLoaderModule.php',
+ 'ResourceLoaderUserModule' => 'includes/ResourceLoaderModule.php',
+ 'ResourceLoaderUserOptionsModule' =>
'includes/ResourceLoaderModule.php',
'ResourceLoaderStartUpModule' => 'includes/ResourceLoaderModule.php',
'ReverseChronologicalPager' => 'includes/Pager.php',
'Revision' => 'includes/Revision.php',
Modified: trunk/phase3/includes/OutputPage.php
===================================================================
--- trunk/phase3/includes/OutputPage.php 2010-09-14 21:46:26 UTC (rev
73023)
+++ trunk/phase3/includes/OutputPage.php 2010-09-14 21:47:59 UTC (rev
73024)
@@ -2300,7 +2300,7 @@
sort( $modules );
$query['modules'] = implode( '|', array_unique(
(array) $modules ) );
if ( $group === 'user' ) {
- $query['user'] = $wgUser->getName();
+ $query['user'] = $wgUser->isLoggedIn()
? $wgUser->getName() : null;
}
// Users might change their stuff on-wiki like
site or user pages, or user preferences; we need to find
// the highest timestamp of these
user-changable modules so we can ensure cache misses upon change
@@ -2382,16 +2382,21 @@
);
}
- // Add user JS if enabled
- if( $this->isUserJsAllowed() && $wgUser->isLoggedIn() ) {
+ // Add user JS if enabled - trying to load user.options as a
bundle if possible
+ $userOptionsAdded = false;
+ if ( $this->isUserJsAllowed() && $wgUser->isLoggedIn() ) {
$action = $wgRequest->getVal( 'action', 'view' );
if( $this->mTitle && $this->mTitle->isJsSubpage() &&
$sk->userCanPreview( $action ) ) {
# XXX: additional security check/prompt?
$this->addInlineScript( $wgRequest->getText(
'wpTextbox1' ) );
} else {
- $scripts .= self::makeResourceLoaderLink( $sk,
'user', 'scripts' );
+ $scripts .= self::makeResourceLoaderLink( $sk,
array( 'user', 'user.options' ), 'scripts' );
+ $userOptionsAdded = true;
}
}
+ if ( !$userOptionsAdded ) {
+ $scripts .= self::makeResourceLoaderLink( $sk,
'user.options', 'scripts' );
+ }
$scripts .= "\n" . $this->mScripts;
// Add site JS if enabled
Modified: trunk/phase3/includes/ResourceLoaderModule.php
===================================================================
--- trunk/phase3/includes/ResourceLoaderModule.php 2010-09-14 21:46:26 UTC
(rev 73023)
+++ trunk/phase3/includes/ResourceLoaderModule.php 2010-09-14 21:47:59 UTC
(rev 73024)
@@ -813,7 +813,7 @@
/**
* Module for user preference customizations
*/
-class ResourceLoaderUserPreferencesModule extends ResourceLoaderModule {
+class ResourceLoaderUserOptionsModule extends ResourceLoaderModule {
/* Protected Members */
@@ -839,40 +839,44 @@
}
}
+ public function getScript( ResourceLoaderContext $context ) {
+ $user = User::newFromName( $context->getUser() );
+ $options = FormatJson::encode( $user instanceof User ?
$user->getOptions() : User::getDefaultOptions() );
+ return "mediaWiki.user.options.set( $options );";
+ }
+
public function getStyles( ResourceLoaderContext $context ) {
global $wgAllowUserCssPrefs;
if ( $wgAllowUserCssPrefs ) {
$user = User::newFromName( $context->getUser() );
- if ( $user === false ) {
- $user = User::newFromId( 0 );
- }
-
+ $options = $user instanceof User ? $user->getOptions()
: User::getDefaultOptions();
+
$rules = array();
- if ( ( $underline = $user->getOption( 'underline' ) ) <
2 ) {
- $rules[] = "a { text-decoration: " . (
$underline ? 'underline' : 'none' ) . "; }";
+ if ( $options['underline'] < 2 ) {
+ $rules[] = "a { text-decoration: " . (
$options['underline'] ? 'underline' : 'none' ) . "; }";
}
- if ( $user->getOption( 'highlightbroken' ) ) {
+ if ( $options['highlightbroken'] ) {
$rules[] = "a.new, #quickbar a.new { color:
#CC2200; }\n";
} else {
$rules[] = "a.new, #quickbar a.new, a.stub,
#quickbar a.stub { color: inherit; }";
$rules[] = "a.new:after, #quickbar a.new:after
{ content: '?'; color: #CC2200; }";
$rules[] = "a.stub:after, #quickbar
a.stub:after { content: '!'; color: #772233; }";
}
- if ( $user->getOption( 'justify' ) ) {
+ if ( $options['justify'] ) {
$rules[] = "#article, #bodyContent, #mw_content
{ text-align: justify; }\n";
}
- if ( !$user->getOption( 'showtoc' ) ) {
+ if ( !$options['showtoc'] ) {
$rules[] = "#toc { display: none; }\n";
}
- if ( !$user->getOption( 'editsection' ) ) {
+ if ( !$options['editsection'] ) {
$rules[] = ".editsection { display: none; }\n";
}
- if ( ( $fontstyle = $user->getOption( 'editfont' ) )
!== 'default' ) {
- $rules[] = "textarea { font-family: $fontstyle;
}\n";
+ if ( $options['editfont'] !== 'default' ) {
+ $rules[] = "textarea { font-family:
{$options['editfont']}; }\n";
}
return array( 'all' => implode( "\n", $rules ) );
}
- return array();
+ return array( 'all' => 'test { color: pink; }' );
}
public function getFlip( $context ) {
Modified: trunk/phase3/includes/Skin.php
===================================================================
--- trunk/phase3/includes/Skin.php 2010-09-14 21:46:26 UTC (rev 73023)
+++ trunk/phase3/includes/Skin.php 2010-09-14 21:47:59 UTC (rev 73024)
@@ -516,7 +516,7 @@
// Per-user preference styles
if ( $wgAllowUserCssPrefs ) {
- $out->addModuleStyles( 'user.preferences' );
+ $out->addModuleStyles( 'user.options' );
}
wfProfileOut( __METHOD__ );
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs