Added name and sessionId methods to user object - now anonymous users have an automat...
authorTrevor Parscal <tparscal@users.mediawiki.org>
Wed, 8 Dec 2010 23:18:58 +0000 (23:18 +0000)
committerTrevor Parscal <tparscal@users.mediawiki.org>
Wed, 8 Dec 2010 23:18:58 +0000 (23:18 +0000)
resources/Resources.php
resources/mediawiki/mediawiki.js

index c533da6..c889b4c 100644 (file)
@@ -326,6 +326,7 @@ return array(
        'mediawiki' => array(
                'scripts' => 'resources/mediawiki/mediawiki.js',
                'debugScripts' => 'resources/mediawiki/mediawiki.log.js',
+               'dependencies' => array( 'jquery.cookie' ),
                'debugRaw' => false
        ),
        'mediawiki.util' => array(
index 66fbedc..5974357 100644 (file)
@@ -225,7 +225,62 @@ window.mediaWiki = new ( function( $ ) {
         * User object
         */
        function User() {
+
+               /* Private Members */
+
+               var that = this;
+
+               /* Public Members */
+
                this.options = new Map();
+
+               /* Public Methods */
+
+               /*
+                * Generates a random user session ID (32 alpha-numeric characters).
+                * 
+                * This information would potentially be stored in a cookie to identify a user during a
+                * session. It's uniqueness should not be depended on.
+                * 
+                * @return string random set of 32 alpha-numeric characters
+                */
+               function generateSessionId() {
+                       var id = '';
+                       var seed = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
+                       for ( var i = 0, r; i < 32; i++ ) {
+                               r = Math.floor( Math.random() * seed.length );
+                               id += seed.substring( r, r + 1 );
+                       }
+                       return id;
+               }
+
+               /*
+                * Gets the current user's name.
+                * 
+                * @return mixed user name string or null if users is anonymous
+                */
+               this.name = function() {
+                       return mediaWiki.config.get( 'wgUserName' );
+               };
+
+               /*
+                * Gets the current user's name or a random session ID automatically generated and kept in
+                * a cookie.
+                * 
+                * @return string user name or random session ID
+                */
+               this.sessionId = function () {
+                       var name = that.name();
+                       if ( name ) {
+                               return name;
+                       }
+                       var sessionId = $.cookie( 'mediaWiki.user.sessionId' );
+                       if ( typeof sessionId == 'undefined' || sessionId == null ) {
+                               sessionId = generateSessionId();
+                               $.cookie( 'mediaWiki.user.sessionId', sessionId, { 'expires': 30, 'path': '/' } );
+                       }
+                       return sessionId;
+               };
        }
 
        /* Public Members */