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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits