jenkins-bot has submitted this change and it was merged.
Change subject: VE integration: Provide a combobox for language input
......................................................................
VE integration: Provide a combobox for language input
Bug: T103756
Change-Id: Ic84c5afb1cf83cce6fa521a99f5fee242bc610b1
---
M extension.json
M i18n/en.json
M i18n/qqq.json
M modules/VisualEditor/ve.dm.MWSyntaxHighlightNode.js
M modules/VisualEditor/ve.ui.MWSyntaxHighlightInspector.js
5 files changed, 60 insertions(+), 24 deletions(-)
Approvals:
Esanders: Looks good to me, approved
jenkins-bot: Verified
diff --git a/extension.json b/extension.json
index ed0d936..4aec63a 100644
--- a/extension.json
+++ b/extension.json
@@ -60,6 +60,7 @@
"messages": [
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-code",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-language",
+
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-none",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-showlines",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-title"
],
diff --git a/i18n/en.json b/i18n/en.json
index 81c7dab..170cb6c 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -10,6 +10,7 @@
"syntaxhighlight-error-category-desc": "There was an error when attempting
to highlight code included on the page.",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-code": "Code",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-language":
"Language",
+ "syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-none": "(None)",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-showlines": "Show
line numbers",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-title": "Code
block",
"syntaxhighlight-error-pygments-invocation-failure": "Failed to invoke
Pygments",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 11cede6..e5c5ada 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -15,6 +15,7 @@
"syntaxhighlight-error-category-desc": "Description on
[[Special:TrackingCategories]] for the
{{msg-mw|syntaxhighlight-error-category}} tracking category.",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-code": "Label
for the code input field\n{{Identical|Code}}",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-language":
"Label for the language field\n{{Identical|Language}}",
+ "syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-none": "Label
of the 'None' option in the language dropdown field",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-showlines":
"Label for the checkbox to show line numbers",
"syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-title": "Title
for the VisualEditor syntax highlighter inspector, above the text area for the
code",
"syntaxhighlight-error-pygments-invocation-failure": "Error message
shown when the syntax highlighting library failed with an unspecified error",
diff --git a/modules/VisualEditor/ve.dm.MWSyntaxHighlightNode.js
b/modules/VisualEditor/ve.dm.MWSyntaxHighlightNode.js
index 81a6b2a..e8abb0d 100644
--- a/modules/VisualEditor/ve.dm.MWSyntaxHighlightNode.js
+++ b/modules/VisualEditor/ve.dm.MWSyntaxHighlightNode.js
@@ -58,6 +58,15 @@
ve.dm.MWSyntaxHighlightNode.static.isLanguageSupported = function (
language ) {
return supportedLanguages.indexOf( language ) !== -1;
};
+
+ /**
+ * Get an array of all languages
+ *
+ * @return {Array} All currently supported languages
+ */
+ ve.dm.MWSyntaxHighlightNode.static.getLanguages = function () {
+ return supportedLanguages.slice();
+ };
}() );
/* Methods */
diff --git a/modules/VisualEditor/ve.ui.MWSyntaxHighlightInspector.js
b/modules/VisualEditor/ve.ui.MWSyntaxHighlightInspector.js
index ae9da16..e9cca19 100644
--- a/modules/VisualEditor/ve.ui.MWSyntaxHighlightInspector.js
+++ b/modules/VisualEditor/ve.ui.MWSyntaxHighlightInspector.js
@@ -43,29 +43,42 @@
* @inheritdoc
*/
ve.ui.MWSyntaxHighlightInspector.prototype.initialize = function () {
+ var languageField, codeField, showLinesField,
+ noneMsg = ve.msg(
'syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-none' );
// Parent method
ve.ui.MWSyntaxHighlightInspector.super.prototype.initialize.call( this
);
- this.language = new OO.ui.TextInputWidget( {
- validate: function ( value ) {
- return
ve.dm.MWSyntaxHighlightNode.static.isLanguageSupported( value );
- }
+ this.language = new OO.ui.ComboBoxWidget( {
+ menu: { filterFromInput: true },
+ input: { validate: function ( input ) {
+ return input === '' ||
ve.dm.MWSyntaxHighlightNode.static.isLanguageSupported( input );
+ } }
} );
+ this.language.getInput().connect( this, { change:
'onLanguageInputChange' } );
+ this.language.getMenu()
+ .clearItems()
+ .addItems(
+ [ new OO.ui.MenuOptionWidget( { data: '', label:
noneMsg } ) ].concat(
+ $.map(
ve.dm.MWSyntaxHighlightNode.static.getLanguages(), function ( lang ) {
+ return new OO.ui.MenuOptionWidget( {
data: lang, label: lang } );
+ } )
+ )
+ );
this.showLinesCheckbox = new OO.ui.CheckboxInputWidget();
- var languageField = new OO.ui.FieldLayout( this.language, {
- align: 'top',
- label: ve.msg(
'syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-language' )
- } ),
- codeField = new OO.ui.FieldLayout( this.input, {
- align: 'top',
- label: ve.msg(
'syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-code' )
- } ),
- showLinesField = new OO.ui.FieldLayout( this.showLinesCheckbox,
{
- align: 'inline',
- label: ve.msg(
'syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-showlines' )
- } );
+ languageField = new OO.ui.FieldLayout( this.language, {
+ align: 'top',
+ label: ve.msg(
'syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-language' )
+ } );
+ codeField = new OO.ui.FieldLayout( this.input, {
+ align: 'top',
+ label: ve.msg(
'syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-code' )
+ } );
+ showLinesField = new OO.ui.FieldLayout( this.showLinesCheckbox, {
+ align: 'inline',
+ label: ve.msg(
'syntaxhighlight-visualeditor-mwsyntaxhighlightinspector-showlines' )
+ } );
// Initialization
this.$content.addClass( 've-ui-mwSyntaxHighlightInspector-content' );
@@ -77,15 +90,27 @@
};
/**
+ * Handle input change events
+ *
+ * @param {string} value New value
+ */
+ve.ui.MWSyntaxHighlightInspector.prototype.onLanguageInputChange = function ()
{
+ var inspector = this;
+ this.language.getInput().isValid().done( function ( valid ) {
+ inspector.getActions().setAbilities( { done: valid } );
+ } );
+};
+
+/**
* @inheritdoc
*/
ve.ui.MWSyntaxHighlightInspector.prototype.getReadyProcess = function ( data )
{
return
ve.ui.MWSyntaxHighlightInspector.super.prototype.getReadyProcess.call( this,
data )
.next( function () {
- if ( this.language.getValue() ) {
+ if ( this.language.input.getValue() ) {
this.input.focus();
} else {
- this.language.focus();
+ this.language.getMenu().toggle( true );
}
}, this );
};
@@ -100,11 +125,10 @@
language = attrs.lang || '',
showLines = attrs.line !== undefined;
- this.language.setValue( language );
- if ( !language ) {
- this.language.setValidityFlag( true );
+ if (
ve.dm.MWSyntaxHighlightNode.static.isLanguageSupported( language ) ) {
+ this.language.input.setValue( language );
}
- this.language.on( 'change', this.onChangeHandler );
+ this.language.input.on( 'change', this.onChangeHandler
);
this.showLinesCheckbox.setSelected( showLines );
this.showLinesCheckbox.on( 'change',
this.onChangeHandler );
@@ -117,7 +141,7 @@
ve.ui.MWSyntaxHighlightInspector.prototype.getTeardownProcess = function (
data ) {
return
ve.ui.MWSyntaxHighlightInspector.super.prototype.getTeardownProcess.call( this,
data )
.first( function () {
- this.language.off( 'change', this.onChangeHandler );
+ this.language.input.off( 'change', this.onChangeHandler
);
this.showLinesCheckbox.off( 'change',
this.onChangeHandler );
}, this );
};
@@ -129,7 +153,7 @@
// Parent method
ve.ui.MWSyntaxHighlightInspector.super.prototype.updateMwData.call(
this, mwData );
- var language = this.language.getValue(),
+ var language = this.language.input.getValue(),
showLines = this.showLinesCheckbox.isSelected();
mwData.attrs.lang = language || undefined;
--
To view, visit https://gerrit.wikimedia.org/r/220977
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic84c5afb1cf83cce6fa521a99f5fee242bc610b1
Gerrit-PatchSet: 14
Gerrit-Project: mediawiki/extensions/SyntaxHighlight_GeSHi
Gerrit-Branch: master
Gerrit-Owner: Alex Monk <[email protected]>
Gerrit-Reviewer: Alex Monk <[email protected]>
Gerrit-Reviewer: Bartosz DziewoĆski <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits