Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/225106

Change subject: Provide a command whitelist feature for targets
......................................................................

Provide a command whitelist feature for targets

Bug: T106061
Change-Id: I87d8aa3d37d00a266c3efd2b88e31fd697678d9a
---
M src/init/sa/ve.init.sa.Target.js
M src/init/ve.init.Target.js
M src/ui/ve.ui.Surface.js
M src/ui/widgets/ve.ui.SurfaceWidget.js
4 files changed, 15 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/06/225106/1

diff --git a/src/init/sa/ve.init.sa.Target.js b/src/init/sa/ve.init.sa.Target.js
index 382bb30..a351702 100644
--- a/src/init/sa/ve.init.sa.Target.js
+++ b/src/init/sa/ve.init.sa.Target.js
@@ -91,6 +91,7 @@
  */
 ve.init.sa.Target.prototype.createSurface = function ( dmDoc, config ) {
        config = ve.extendObject( {
+               includeCommands: this.constructor.static.includeCommands,
                excludeCommands: OO.simpleArrayUnion(
                        this.constructor.static.excludeCommands,
                        this.constructor.static.documentCommands,
diff --git a/src/init/ve.init.Target.js b/src/init/ve.init.Target.js
index 3162eb3..76e26c6 100644
--- a/src/init/ve.init.Target.js
+++ b/src/init/ve.init.Target.js
@@ -131,6 +131,15 @@
 ve.init.Target.static.targetCommands = [ 'findAndReplace', 'findNext', 
'findPrevious' ];
 
 /**
+ * List of commands to include in the target
+ *
+ * Null means all commands in the registry are used (excluding excludeCommands)
+ *
+ * @type {string[]|null} List of command names
+ */
+ve.init.Target.static.includeCommands = null;
+
+/**
  * List of commands to exclude from the target entirely
  *
  * @type {string[]} List of command names
@@ -230,6 +239,7 @@
  */
 ve.init.Target.prototype.createSurface = function ( dmDoc, config ) {
        config = ve.extendObject( {
+               includeCommands: this.constructor.static.includeCommands,
                excludeCommands: OO.simpleArrayUnion(
                        this.constructor.static.excludeCommands,
                        this.constructor.static.documentCommands,
diff --git a/src/ui/ve.ui.Surface.js b/src/ui/ve.ui.Surface.js
index 3e410d3..7d2aef1 100644
--- a/src/ui/ve.ui.Surface.js
+++ b/src/ui/ve.ui.Surface.js
@@ -15,6 +15,7 @@
  * @constructor
  * @param {HTMLDocument|Array|ve.dm.LinearData|ve.dm.Document} dataOrDoc 
Document data to edit
  * @param {Object} [config] Configuration options
+ * @cfg {string[]|null} [includeCommands] List of commands to include, null 
for all registered commands
  * @cfg {string[]} [excludeCommands] List of commands to exclude
  * @cfg {Object} [importRules] Import rules
  * @cfg {string} [placeholder] Placeholder text to display when the surface is 
empty
@@ -41,7 +42,7 @@
        this.$menus = $( '<div>' );
        this.$placeholder = $( '<div>' ).addClass( 've-ui-surface-placeholder' 
);
        this.triggerListener = new ve.TriggerListener( OO.simpleArrayDifference(
-               Object.keys( ve.ui.commandRegistry.registry ), 
config.excludeCommands || []
+               config.includeCommands || Object.keys( 
ve.ui.commandRegistry.registry ), config.excludeCommands || []
        ) );
        if ( dataOrDoc instanceof ve.dm.Document ) {
                // ve.dm.Document
diff --git a/src/ui/widgets/ve.ui.SurfaceWidget.js 
b/src/ui/widgets/ve.ui.SurfaceWidget.js
index 84473e1..599df68 100644
--- a/src/ui/widgets/ve.ui.SurfaceWidget.js
+++ b/src/ui/widgets/ve.ui.SurfaceWidget.js
@@ -15,6 +15,7 @@
  * @param {ve.dm.Document} doc Document model
  * @param {Object} [config] Configuration options
  * @cfg {Object[]} [tools] Toolbar configuration
+ * @cfg {string[]|null} [includeCommands] List of commands to include, null 
for all registered commands
  * @cfg {string[]} [excludeCommands] List of commands to exclude
  * @cfg {Object} [importRules] Import rules
  * @cfg {string} [inDialog] The name of the dialog this surface widget is in
@@ -28,6 +29,7 @@
 
        // Properties
        this.surface = ve.init.target.createSurface( doc, {
+               includeCommands: config.includeCommands,
                excludeCommands: config.excludeCommands,
                importRules: config.importRules,
                inDialog: config.inDialog

-- 
To view, visit https://gerrit.wikimedia.org/r/225106
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I87d8aa3d37d00a266c3efd2b88e31fd697678d9a
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to