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