Esanders has uploaded a new change for review.
https://gerrit.wikimedia.org/r/284679
Change subject: Create MW targets using a factory
......................................................................
Create MW targets using a factory
Move the existing static property 'name' to 'trackingName'
to make way for a real registry index.
Change-Id: Iab0d5be611ece7038234551c4847b07517b4348d
---
M modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.init.js
M modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js
M modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js
M modules/ve-mw/init/ve.init.mw.ArticleTarget.js
M modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js
M modules/ve-mw/init/ve.init.mw.Target.js
M modules/ve-mw/init/ve.init.mw.js
7 files changed, 30 insertions(+), 7 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/79/284679/1
diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.init.js
b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.init.js
index 5a23c15..d84afcd 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.init.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.init.js
@@ -139,7 +139,7 @@
// Transfer methods
ve.init.mw.DesktopArticleTarget.prototype.setupSectionEditLinks =
init.setupSectionLinks;
- target = new
ve.init.mw.DesktopArticleTarget();
+ target =
ve.init.mw.targetFactory.create( 'desktop' );
$( '#content' ).append( target.$element
);
return target;
}, function ( e ) {
diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js
b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js
index 67e085b..74b7c53 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js
@@ -103,6 +103,8 @@
/* Static Properties */
+ve.init.mw.DesktopArticleTarget.static.name = 'desktop';
+
ve.init.mw.DesktopArticleTarget.static.actionGroups = [
{ include: [ 'help', 'notices' ] },
{
@@ -651,7 +653,7 @@
this.surface.getModel().getDocument().once( 'transact', function () {
ve.track( 'mwtiming.behavior.firstTransaction', {
duration: ve.now() - surfaceReadyTime,
- targetName: target.constructor.static.name
+ targetName: target.constructor.static.trackingName
} );
} );
@@ -1451,3 +1453,7 @@
ve.init.mw.DesktopArticleTarget.prototype.resetDocumentOpacity = function () {
this.getSurface().getView().getDocument().getDocumentNode().$element.css(
'opacity', 1 );
};
+
+/* Registration */
+
+ve.init.mw.targetFactory.register( ve.init.mw.DesktopArticleTarget );
diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js
b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js
index 7643742..f3d94e2 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js
@@ -63,6 +63,8 @@
ve.init.mw.MobileArticleTarget.static.name = 'mobile';
+ve.init.mw.MobileArticleTarget.static.trackingName = 'mobile';
+
// FIXME Some of these users will be on tablets, check for this
ve.init.mw.MobileArticleTarget.static.platformType = 'phone';
@@ -224,6 +226,10 @@
this.getSurface().getView().blur();
};
+/* Registration */
+
+ve.init.mw.targetFactory.register( ve.init.mw.MobileArticleTarget );
+
/**
* Back tool
*/
diff --git a/modules/ve-mw/init/ve.init.mw.ArticleTarget.js
b/modules/ve-mw/init/ve.init.mw.ArticleTarget.js
index ea476a8..9c928ab 100644
--- a/modules/ve-mw/init/ve.init.mw.ArticleTarget.js
+++ b/modules/ve-mw/init/ve.init.mw.ArticleTarget.js
@@ -161,13 +161,13 @@
/* Static Properties */
/**
- * Name of target class. Used by ArticleTargetEvents to identify which target
we are tracking.
+ * Tracking name of target class. Used by ArticleTargetEvents to identify
which target we are tracking.
*
* @static
* @property {string}
* @inheritable
*/
-ve.init.mw.ArticleTarget.static.name = 'mwTarget';
+ve.init.mw.ArticleTarget.static.trackingName = 'mwTarget';
/**
* @inheritdoc
@@ -1679,7 +1679,7 @@
) {
windowManager.openWindow(
'welcome',
- { targetName: this.constructor.static.name }
+ { targetName:
this.constructor.static.trackingName }
)
.then( function ( opened ) {
return opened;
diff --git a/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js
b/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js
index 182a18f..fb998c2 100644
--- a/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js
+++ b/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js
@@ -50,7 +50,7 @@
* @param {Object} data Additional data describing the event, encoded as an
object
*/
ve.init.mw.ArticleTargetEvents.prototype.track = function ( topic, data ) {
- data.targetName = this.target.constructor.static.name;
+ data.targetName = this.target.constructor.static.trackingName;
ve.track( 'mwtiming.' + topic, data );
if ( topic.indexOf( 'performance.system.serializeforcache' ) === 0 ) {
diff --git a/modules/ve-mw/init/ve.init.mw.Target.js
b/modules/ve-mw/init/ve.init.mw.Target.js
index c1aac40..2976513 100644
--- a/modules/ve-mw/init/ve.init.mw.Target.js
+++ b/modules/ve-mw/init/ve.init.mw.Target.js
@@ -34,6 +34,15 @@
/* Static Properties */
+/**
+ * Symbolic name for this target class.
+ *
+ * @static
+ * @property {string}
+ * @inheritable
+ */
+ve.init.mw.Target.static.name = null;
+
ve.init.mw.Target.static.toolbarGroups = [
// History
{ include: [ 'undo', 'redo' ] },
diff --git a/modules/ve-mw/init/ve.init.mw.js b/modules/ve-mw/init/ve.init.mw.js
index c31f119..5d6fabd 100644
--- a/modules/ve-mw/init/ve.init.mw.js
+++ b/modules/ve-mw/init/ve.init.mw.js
@@ -11,4 +11,6 @@
* @class
* @singleton
*/
-ve.init.mw = {};
+ve.init.mw = {
+ targetFactory: new OO.Factory()
+};
--
To view, visit https://gerrit.wikimedia.org/r/284679
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iab0d5be611ece7038234551c4847b07517b4348d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits