Santhosh has uploaded a new change for review.
https://gerrit.wikimedia.org/r/323503
Change subject: [WIP] Use mw.widgets.TitleWidget for page selector
......................................................................
[WIP] Use mw.widgets.TitleWidget for page selector
Change-Id: I89a40152a4c93d8b78c4d7990a184ead7849acae
Depends: I81811cdd1a075
---
M extension.json
M modules/source/ext.cx.source.selector.js
A modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js
A modules/ui/widgets/mw.cx.ui.PageSelectorWidget.less
4 files changed, 124 insertions(+), 13 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ContentTranslation
refs/changes/03/323503/1
diff --git a/extension.json b/extension.json
index e73ef8a..c324583 100644
--- a/extension.json
+++ b/extension.json
@@ -349,7 +349,6 @@
"source/styles/ext.cx.source.selector.less"
],
"dependencies": [
- "ext.cx.pageselector",
"ext.cx.sitemapper",
"ext.cx.tools.validator",
"ext.cx.widgets.overlay",
@@ -358,7 +357,8 @@
"jquery.suggestions",
"jquery.throttle-debounce",
"mediawiki.storage",
- "mediawiki.ui.button"
+ "mediawiki.ui.button",
+ "mw.cx.ui.PageSelectorWidget"
],
"messages": [
"cx-sourceselector-dialog-new-translation",
@@ -1283,6 +1283,17 @@
"dependencies": [
"oojs-ui-widgets"
]
+ },
+ "mw.cx.ui.PageSelectorWidget": {
+ "scripts": [
+ "ui/widgets/mw.cx.ui.PageSelectorWidget.js"
+ ],
+ "styles": [
+ "ui/widgets/mw.cx.ui.PageSelectorWidget.less"
+ ],
+ "dependencies": [
+ "mediawiki.widgets"
+ ]
}
},
"ResourceFileModulePaths": {
diff --git a/modules/source/ext.cx.source.selector.js
b/modules/source/ext.cx.source.selector.js
index f84da9d..f9edd06 100644
--- a/modules/source/ext.cx.source.selector.js
+++ b/modules/source/ext.cx.source.selector.js
@@ -94,10 +94,6 @@
this.targetLanguageChangeHandler(
this.options.targetLanguage );
}
- if ( this.options.sourceTitle ) {
- this.$sourceTitleInput.val( this.options.sourceTitle );
- }
-
if ( this.options.targetTitle ) {
this.$targetTitleInput.val( this.options.targetTitle );
}
@@ -327,7 +323,7 @@
lang: language,
dir: $.uls.data.getDir( language )
} );
- this.$sourcePageSelector.setApi( this.siteMapper.getApi(
language ) );
+ this.sourcePageSelector.setLanguage( language );
this.check();
};
@@ -361,7 +357,7 @@
CXSourceSelector.prototype.check = function () {
var sourceLanguage = this.getSourceLanguage(),
targetLanguage = this.getTargetLanguage(),
- sourceTitle = this.$sourceTitleInput.val().trim(),
+ sourceTitle = this.sourcePageSelector.getQueryValue(),
targetTitle = this.$targetTitleInput.val().trim(),
selector = this;
@@ -629,7 +625,7 @@
siteMapper = this.siteMapper;
sourceLanguage = this.getSourceLanguage();
targetLanguage = this.getTargetLanguage();
- originalSourceTitle = this.$sourceTitleInput.val().trim();
+ originalSourceTitle = this.sourcePageSelector.getQueryValue();
targetTitle = this.$targetTitleInput.val().trim();
this.validator.isTitleExistInLanguage(
@@ -776,6 +772,21 @@
placeholder: mw.msg(
'cx-sourceselector-dialog-source-title-placeholder' )
} );
+
+ // this.$sourcePageSelector = new mw.PageSelector(
this.$sourceTitleInput, {
+ // api: this.siteMapper.getApi( this.getSourceLanguage() )
+ // } );
+ this.sourcePageSelector = new mw.cx.ui.PageSelectorWidget( {
+ language: this.getSourceLanguage(),
+ siteMapper: this.siteMapper,
+ required: true,
+ value: this.options.sourceTitle,
+ validateTitle: true,
+ placeholder: mw.msg(
'cx-sourceselector-dialog-source-title-placeholder' )
+ } );
+
+ this.sourcePageSelector.$element.prepend(
this.sourcePageSelector.$query );
+ this.$sourceTitleInput = this.sourcePageSelector.$element;
$sourceTitleInputContainer = $( '<div>' )
.addClass( 'cx-sourceselector-dialog__title' )
.append( this.$sourceTitleInput );
@@ -807,10 +818,6 @@
);
this.setDefaultLanguages();
-
- this.$sourcePageSelector = new mw.PageSelector(
this.$sourceTitleInput, {
- api: this.siteMapper.getApi( this.getSourceLanguage() )
- } );
this.$messageBar = $( '<div>' )
.addClass( 'cx-sourceselector-dialog__messagebar' );
diff --git a/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js
b/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js
new file mode 100644
index 0000000..46fe61e
--- /dev/null
+++ b/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js
@@ -0,0 +1,60 @@
+/*!
+ * Content Translation UserInterface PageSelectorWidget class.
+ *
+ * @ingroup Extensions
+ * @copyright See AUTHORS.txt
+ * @license GPL-2.0+
+ */
+
+( function ( $, mw, OO ) {
+ 'use strict';
+
+ /**
+ * Creates an mw.cx.ui.PageSelectorWidget object.
+ *
+ * @class
+ * @extends mw.cx.ui.PageSelectorWidget
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {number} [namespace] Namespace to prepend to queries. Defaults
to main namespace.
+ */
+ mw.cx.ui.PageSelectorWidget = function PageSelectorWidget( config ) {
+ config = $.extend( {}, {
+ namespace: mw.config.get( 'wgNamespaceIds' ).maiin,
+ showDescriptions: true,
+ showImages: true
+ }, config );
+
+ this.siteMapper = config.siteMapper;
+ this.language = config.language || 'en';
+ // Parent constructor
+ mw.cx.ui.PageSelectorWidget.super.call( this, config );
+ // Initialization
+ this.$element.addClass( 'mw-cx-ui-PageSelectorWidget' );
+ };
+
+ /* Inheritance */
+
+ OO.inheritClass( mw.cx.ui.PageSelectorWidget,
mw.widgets.TitleSearchWidget );
+
+ /* Methods */
+ mw.cx.ui.PageSelectorWidget.prototype.getApi = function() {
+ return this.siteMapper.getApi( this.language );
+ };
+
+ mw.cx.ui.PageSelectorWidget.prototype.setLanguage = function( language
) {
+ this.language = language;
+ };
+
+ /**
+ * Handle choose events from the result widget
+ *
+ * @param {OO.ui.OptionWidget} item Chosen item
+ */
+ mw.cx.ui.PageSelectorWidget.prototype.onTitleSearchResultsChoose =
function ( item ) {
+
mw.cx.ui.PageSelectorWidget.parent.prototype.onTitleSearchResultsChoose.call(
this, item );
+ this.results.clearItems();
+ };
+
+}( jQuery, mediaWiki, OO ) );
diff --git a/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.less
b/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.less
new file mode 100644
index 0000000..a084689
--- /dev/null
+++ b/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.less
@@ -0,0 +1,33 @@
+@import "mediawiki.mixins";
+@import "../../widgets/common/ext.cx.common";
+
+.mw-cx-ui-PageSelectorWidget {
+ &.mw-widget-titleSearchWidget {
+ position: relative;
+ min-height: 2.4em;
+
+ .oo-ui-searchWidget-query {
+ position: static;
+ padding: 0;
+ height: auto;
+ border: 0;
+
+ .oo-ui-textInputWidget {
+ margin: 0;
+ }
+ }
+ .oo-ui-searchWidget-results {
+ position: static;
+ top: 0;
+ padding: 0;
+ float: left;
+ background-color: @white;
+ width: 100%;
+ }
+ }
+
+ .mw-widget-titleWidget-menu:not( :empty ) {
+ border: 1px solid @gray-light;
+ margin-top: 0.75em;
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/323503
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I89a40152a4c93d8b78c4d7990a184ead7849acae
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ContentTranslation
Gerrit-Branch: master
Gerrit-Owner: Santhosh <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits