Jakob has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/363584 )

Change subject: [WIP] Make it possible to add Senses to a Lexeme.
......................................................................

[WIP] Make it possible to add Senses to a Lexeme.

Bug: T169639
Change-Id: If15ade114142a5ed4fc4b6f38b37d9b4a5d38d02
---
M extension.json
M resources/jquery.wikibase.senselistview.js
M resources/jquery.wikibase.senseview.js
M resources/lexeme.css
M resources/view/ControllerViewFactory.js
M resources/widgets/GlossWidget.js
6 files changed, 46 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseLexeme 
refs/changes/84/363584/1

diff --git a/extension.json b/extension.json
index d68d699..3b6b2ab 100644
--- a/extension.json
+++ b/extension.json
@@ -105,7 +105,7 @@
                "jquery.wikibase.senseview": {
                        "scripts": "jquery.wikibase.senseview.js",
                        "dependencies": [
-                               "jquery.ui.widget",
+                               "jquery.ui.EditableTemplatedWidget",
                                "wikibase.templates.lexeme",
                                "wikibase.lexeme.widgets.GlossWidget"
                        ],
diff --git a/resources/jquery.wikibase.senselistview.js 
b/resources/jquery.wikibase.senselistview.js
index 9236d22..18f2d7c 100644
--- a/resources/jquery.wikibase.senselistview.js
+++ b/resources/jquery.wikibase.senselistview.js
@@ -37,6 +37,7 @@
                        PARENT.prototype._create.call( this );
 
                        this._createListView();
+                       this.options.getAdder( this.enterNewItem.bind( this ), 
this.element );
                },
 
                /**
@@ -58,6 +59,10 @@
                                listItemNodeName: 'div',
                                value: this.options.value
                        }, this.element.find( '.wikibase-lexeme-senses' ) );
+               },
+
+               enterNewItem: function () {
+                       return this._listview.enterNewItem();
                }
 
        } );
diff --git a/resources/jquery.wikibase.senseview.js 
b/resources/jquery.wikibase.senseview.js
index 0dd88de..0798dc1 100644
--- a/resources/jquery.wikibase.senseview.js
+++ b/resources/jquery.wikibase.senseview.js
@@ -1,7 +1,7 @@
-( function ( $, mw ) {
+( function ( $, mw, wb ) {
        'use strict';
 
-       var PARENT = $.Widget;
+       var PARENT = $.ui.EditableTemplatedWidget;
 
        var GlossWidget = require( 'wikibase.lexeme.widgets.GlossWidget' );
 
@@ -23,11 +23,26 @@
         */
        $.widget( 'wikibase.senseview', PARENT, {
                options: {
+                       template: 'wikibase-lexeme-sense',
+                       templateParams: [
+                               function () {
+                                       return 'ID-GOES-HERE';
+                               },
+                               function () {
+                                       return $( '<div 
class="wikibase-lexeme-sense-glosses"></div>' );
+                               },
+                               function () {
+                                       return 'STATEMENTS-GO-HERE';
+                               }
+                       ],
+
                        /**
                         * @type {buildStatementGroupListView}
                         */
                        buildStatementGroupListView: null
                },
+
+               glossWidget: null,
 
                /**
                 * This method acts as a setter if it is given a Sense object.
@@ -53,11 +68,22 @@
                                $( '.wikibase-statementgrouplistview', 
this.element )
                        );
 
-                       GlossWidget.applyGlossWidget(
+                       this.glossWidget = GlossWidget.applyGlossWidget(
                                $( '.wikibase-lexeme-sense-glosses', 
this.element )[ 0 ],
                                this.value().getId(),
                                convertGlossesToGlossWidgetModel( 
this.value().getGlosses() )
                        );
+
+                       if ( !this.value().getId() ) {
+                               this._addNewSense();
+                       }
+               },
+
+               _addNewSense: function () {
+                       // TODO: generate random sense ID
+
+                       this.glossWidget.add();
+                       this.glossWidget.edit();
                },
 
                getHelpMessage: function () {
diff --git a/resources/lexeme.css b/resources/lexeme.css
index d0bad3d..f2ff901 100644
--- a/resources/lexeme.css
+++ b/resources/lexeme.css
@@ -298,6 +298,15 @@
        clear: left;
 }
 
+.wikibase-lexeme-senses-section > .wikibase-toolbar-container {
+       position: static;
+       float: left;
+}
+
+.wikibase-lexeme-sense .wikibase-edittoolbar-container {
+       display: none; /* TODO: use toolbar or vue buttons */
+}
+
 /* =========== wikibase-lexeme-sense-glosses =========== */
 
 .wikibase-lexeme-sense-glosses {
@@ -364,8 +373,4 @@
        content: "";
        display: table;
        clear: both;
-}
-
-.wikibase-lexeme-sense > .wikibase-edittoolbar-container {
-       display: none; /* FIXME: temporarily hidden until entering/editing 
glosses is possible */
 }
diff --git a/resources/view/ControllerViewFactory.js 
b/resources/view/ControllerViewFactory.js
index 9036202..60cc706 100644
--- a/resources/view/ControllerViewFactory.js
+++ b/resources/view/ControllerViewFactory.js
@@ -106,6 +106,7 @@
                        $( '.wikibase-lexeme-senses-section' ),
                        {
                                getListItemAdapter: 
this.getListItemAdapterForSenseListView.bind( this, lexeme, 
startEditingCallback, function () {} ),
+                               getAdder: this._getAdderWithStartEditing( 
startEditingCallback ),
                                value: lexeme.senses
                        }
                );
diff --git a/resources/widgets/GlossWidget.js b/resources/widgets/GlossWidget.js
index d9ad36f..419acd3 100644
--- a/resources/widgets/GlossWidget.js
+++ b/resources/widgets/GlossWidget.js
@@ -10,7 +10,7 @@
                var template = '#gloss-widget-vue-template';
 
                // eslint-disable-next-line no-new
-               new Vue( newGlossWidget( widgetElement, template, senseId, 
store ) );
+               return new Vue( newGlossWidget( widgetElement, template, 
senseId, store ) );
        }
 
        function newGlossWidget( widgetElement, template, senseId, store ) {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: If15ade114142a5ed4fc4b6f38b37d9b4a5d38d02
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: Jakob <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to