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

Reply via email to