Fomafix has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/350971 )
Change subject: Duplicate deprecated mw.user.bucket to local implementation
......................................................................
Duplicate deprecated mw.user.bucket to local implementation
mw.user.bucket will be removed in MediaWiki 1.30.
Change-Id: I3827d6dd988f41bd826bafaf478840153c711c52
---
M extension.json
M modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.js
2 files changed, 83 insertions(+), 3 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ArticleFeedbackv5
refs/changes/71/350971/1
diff --git a/extension.json b/extension.json
index 120cd68..bb78a88 100644
--- a/extension.json
+++ b/extension.json
@@ -271,6 +271,7 @@
"jquery.ui.button",
"jquery.cookie",
"jquery.placeholder",
+ "mediawiki.cookie",
"mediawiki.jqueryMsg",
"jquery.effects.highlight",
"mediawiki.Uri"
diff --git a/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.js
b/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.js
index 329128c..0d94b34 100644
--- a/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.js
+++ b/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.js
@@ -2143,6 +2143,85 @@
};
// }}}
+ // {{{ bucket
+
+ /**
+ * Get the user's bucket (place them in one if not done already)
+ *
+ * $.articleFeedbackv5.bucket( 'test', {
+ * buckets: { ignored: 50, control: 25, test: 25 },
+ * version: 1,
+ * expires: 7
+ * } );
+ *
+ * @param {string} key Name of bucket
+ * @param {Object} options Bucket configuration options
+ * @param {Object} options.buckets List of
bucket-name/relative-probability pairs (required,
+ * must have at least one pair)
+ * @param {number} [options.version=0] Version of bucket test, changing
this forces
+ * rebucketing
+ * @param {number} [options.expires=30] Length of time (in days) until
the user gets
+ * rebucketed
+ * @return {string} Bucket name - the randomly chosen key of the
`options.buckets` object
+ */
+ $.articleFeedbackv5.bucket = function ( key, options ) {
+ var cookie, parts, version, bucket,
+ range, k, rand, total;
+
+ options = $.extend( {
+ buckets: {},
+ version: 0,
+ expires: 30
+ }, options || {} );
+
+ cookie = mw.cookie.get( 'mwuser-bucket:' + key );
+
+ // Bucket information is stored as 2 integers, together as
version:bucket like: "1:2"
+ if ( typeof cookie === 'string' && cookie.length > 2 &&
cookie.indexOf( ':' ) !== -1 ) {
+ parts = cookie.split( ':' );
+ if ( parts.length > 1 && Number( parts[ 0 ] ) ===
options.version ) {
+ version = Number( parts[ 0 ] );
+ bucket = String( parts[ 1 ] );
+ }
+ }
+
+ if ( bucket === undefined ) {
+ if ( !$.isPlainObject( options.buckets ) ) {
+ throw new Error( 'Invalid bucket. Object
expected for options.buckets.' );
+ }
+
+ version = Number( options.version );
+
+ // Find range
+ range = 0;
+ for ( k in options.buckets ) {
+ range += options.buckets[ k ];
+ }
+
+ // Select random value within range
+ rand = Math.random() * range;
+
+ // Determine which bucket the value landed in
+ total = 0;
+ for ( k in options.buckets ) {
+ bucket = k;
+ total += options.buckets[ k ];
+ if ( total >= rand ) {
+ break;
+ }
+ }
+
+ mw.cookie.set(
+ 'mwuser-bucket:' + key,
+ version + ':' + bucket,
+ { expires: Number( options.expires ) * 86400 }
+ );
+ }
+
+ return bucket;
+ };
+
+ // }}}
// {{{ selectBucket
/**
@@ -2164,7 +2243,7 @@
$.articleFeedbackv5.bucketId = requested;
} else {
var key = 'ext.articleFeedbackv5@' + cfg.version +
'-form';
- $.articleFeedbackv5.bucketId = mw.user.bucket( key, cfg
);
+ $.articleFeedbackv5.bucketId =
$.articleFeedbackv5.bucket( key, cfg );
}
};
@@ -2194,7 +2273,7 @@
bucketedLink = requested;
} else {
var key = 'ext.articleFeedbackv5@' +
cfg.version + '-links';
- bucketedLink = mw.user.bucket( key, cfg
);
+ bucketedLink =
$.articleFeedbackv5.bucket( key, cfg );
}
}
}
@@ -2735,7 +2814,7 @@
$.articleFeedbackv5.ctaId = requested;
} else {
var key = 'ext.articleFeedbackv5@' + cfg.version +
'-cta';
- var requested = mw.user.bucket( key, cfg );
+ var requested = $.articleFeedbackv5.bucket( key, cfg );
if ( valid( requested ) ) {
$.articleFeedbackv5.ctaId = requested;
--
To view, visit https://gerrit.wikimedia.org/r/350971
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3827d6dd988f41bd826bafaf478840153c711c52
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ArticleFeedbackv5
Gerrit-Branch: master
Gerrit-Owner: Fomafix <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits