jenkins-bot has submitted this change and it was merged.
Change subject: Use the preview widget in context items
......................................................................
Use the preview widget in context items
Use the newly created preview widget to render consistent previews
of references in the context items and search widget.
Depends on ve-core fix Ia7e96e048e4b
Bug: T93042
Change-Id: I3a7f6402018924a18efbb49ba61a16787c41f1f4
---
M modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js
M modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
2 files changed, 34 insertions(+), 41 deletions(-)
Approvals:
Catrope: Looks good to me, approved
Jforrester: Looks good to me, approved
jenkins-bot: Verified
diff --git a/modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js
b/modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js
index 2488125..220fbd0 100644
--- a/modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js
+++ b/modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js
@@ -18,7 +18,7 @@
ve.ui.MWReferenceContextItem = function VeMWReferenceContextItem() {
// Parent constructor
ve.ui.MWReferenceContextItem.super.apply( this, arguments );
-
+ this.view = null;
// Initialization
this.$element.addClass( 've-ui-mwReferenceContextItem' );
};
@@ -48,35 +48,13 @@
* @return {jQuery} DOM rendering of reference
*/
ve.ui.MWReferenceContextItem.prototype.getRendering = function () {
- var ref = ve.dm.MWReferenceModel.static.newFromReferenceNode(
this.model ),
- view = new ve.ce.InternalItemNode(
- this.model.getDocument().getInternalList().getItemNode(
ref.getListIndex() )
- );
-
- // HACK: PHP parser doesn't wrap single lines in a paragraph
- if ( view.$element.children().length === 1 && view.$element.children(
'p' ).length === 1 ) {
- // unwrap inner
- view.$element.children().replaceWith(
view.$element.children().contents() );
- }
-
- // Cleanup
- view.destroy();
-
- // Make all links open in a new window (sync rendering)
- view.$element.find( 'a' ).attr( 'target', '_blank' );
-
- // Make all links open in a new window (async rendering)
- ve.BranchNode.static.traverse( view, function ( node ) {
- // Duck type ve.ce.GeneratedContentNode
- if ( typeof node.generateContents === 'function' ) {
- node.once( 'rerender', function () {
- node.$element.find( 'a' ).attr( 'target',
'_blank' );
- } );
- }
- } );
+ var refModel = ve.dm.MWReferenceModel.static.newFromReferenceNode(
this.model );
+ this.view = new ve.ui.PreviewWidget(
+ refModel.getDocument().getInternalList().getItemNode(
refModel.getListIndex() )
+ );
// WARNING: The $element property may be rendered into asynchronously
- return view.$element;
+ return this.view.$element;
};
/**
@@ -93,6 +71,18 @@
this.$body.empty().append( this.getRendering() );
};
+/**
+ * @inheritdoc
+ */
+ve.ui.MWReferenceContextItem.prototype.teardown = function () {
+ if ( this.view ) {
+ this.view.destroy();
+ }
+
+ // Call parent
+ ve.ui.MWReferenceContextItem.super.prototype.teardown.call( this );
+};
+
/* Registration */
ve.ui.contextItemFactory.register( ve.ui.MWReferenceContextItem );
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
b/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
index 71b683d..cd6abc7 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
@@ -150,7 +150,7 @@
return;
}
- var i, iLen, j, jLen, ref, group, groupName, groupNames, view, text,
firstNodes, indexOrder,
+ var i, iLen, j, jLen, refModel, group, groupName, groupNames, view,
text, firstNodes, indexOrder,
refGroup, refNode, matches, name, citation,
groups = this.internalList.getNodeGroups();
@@ -169,25 +169,29 @@
group = groups[groupName];
firstNodes = group.firstNodes;
indexOrder = group.indexOrder;
+
for ( j = 0, jLen = indexOrder.length; j < jLen; j++ ) {
refNode = firstNodes[indexOrder[j]];
- ref =
ve.dm.MWReferenceModel.static.newFromReferenceNode( refNode );
- view = new ve.ce.InternalItemNode(
this.internalList.getItemNode( ref.getListIndex() ) );
+ refModel =
ve.dm.MWReferenceModel.static.newFromReferenceNode( refNode );
+ view = new ve.ui.PreviewWidget(
+
refModel.getDocument().getInternalList().getItemNode( refModel.getListIndex() )
+ );
- // HACK: PHP parser doesn't wrap single lines in a
paragraph
- if ( view.$element.children().length === 1 &&
view.$element.children( 'p' ).length === 1 ) {
- // unwrap inner
- view.$element.children().replaceWith(
view.$element.children().contents() );
- }
-
- refGroup = ref.getGroup();
+ refGroup = refModel.getGroup();
citation = ( refGroup && refGroup.length ? refGroup + '
' : '' ) + ( j + 1 );
- matches = ref.getListKey().match( /^literal\/(.*)$/ );
+ matches = refModel.getListKey().match(
/^literal\/(.*)$/ );
name = matches && matches[1] || '';
// Hide previously auto-generated reference names
if ( name.match( /^:[0-9]+$/ ) ) {
name = '';
}
+
+ // TODO: At some point we need to make sure this text
is updated in
+ // case the view node is still rendering. This
shouldn't happen because
+ // all references are supposed to be in the store and
therefore are
+ // immediately rendered, but we shouldn't trust that on
principle to
+ // account for edge cases.
+
// Make visible text, citation and reference name
searchable
text = [ view.$element.text().toLowerCase(), citation,
name ].join( ' ' );
// Make URLs searchable
@@ -196,11 +200,10 @@
this.index.push( {
$element: view.$element,
text: text,
- reference: ref,
+ reference: refModel,
citation: citation,
name: name
} );
- view.destroy();
}
}
--
To view, visit https://gerrit.wikimedia.org/r/200762
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I3a7f6402018924a18efbb49ba61a16787c41f1f4
Gerrit-PatchSet: 15
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Mooeypoo <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: Mooeypoo <[email protected]>
Gerrit-Reviewer: Trevor Parscal <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits