Trevor Parscal has uploaded a new change for review.
https://gerrit.wikimedia.org/r/67465
Change subject: Insert Reference (WIP, thou shalt not merge)
......................................................................
Insert Reference (WIP, thou shalt not merge)
Objective:
* Allow opening reference dialog with arbitrary selection
* Auto-insert reference when selection is not a reference node
Changes:
ve.init.mw.ViewPageTarget.js
* Added reference button to toolbar
ve.ui.MWReferenceDialog.js
* Stop storing referenceNode (not needed)
* Only store internalItem on open if there's a focused node that's a reference
* Use empty document when creating a new reference
TODO:
Someone (Ed or Roan) should finish this commit for me.
Change-Id: I839ae165c299248484ce93d4ab087318a95fbb94
---
M modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js
M modules/ve/ui/dialogs/ve.ui.MWReferenceDialog.js
2 files changed, 31 insertions(+), 22 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/65/67465/1
diff --git a/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js
b/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js
index cab71c5..8eabb88 100644
--- a/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js
+++ b/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js
@@ -169,7 +169,7 @@
ve.init.mw.ViewPageTarget.static.toolbarTools = [
{ 'items': ['undo', 'redo'] },
{ 'items': ['mwFormat'] },
- { 'items': ['bold', 'italic', 'mwLink', 'clear', 'mwMediaInsert'] },
+ { 'items': ['bold', 'italic', 'mwLink', 'clear', 'mwMediaInsert',
'mwReference'] },
{ 'items': ['number', 'bullet', 'outdent', 'indent'] }
];
diff --git a/modules/ve/ui/dialogs/ve.ui.MWReferenceDialog.js
b/modules/ve/ui/dialogs/ve.ui.MWReferenceDialog.js
index 99db37d..8705826 100644
--- a/modules/ve/ui/dialogs/ve.ui.MWReferenceDialog.js
+++ b/modules/ve/ui/dialogs/ve.ui.MWReferenceDialog.js
@@ -20,7 +20,6 @@
ve.ui.Dialog.call( this, surface, config );
// Properties
- this.referenceNode = null;
this.internalItem = null;
};
@@ -57,25 +56,26 @@
* @method
*/
ve.ui.MWReferenceDialog.prototype.onOpen = function () {
- var doc = this.surface.getModel().getDocument();
+ var focusedNode, doc, data;
// Parent method
ve.ui.Dialog.prototype.onOpen.call( this );
- this.referenceNode = this.surface.getView().getFocusedNode();
- this.internalItem = this.referenceNode.getModel().getInternalItem();
+ // Get data from selection
+ focusedNode = this.surface.getView().getFocusedNode();
+ if ( focusedNode instanceof ve.ce.MWReferenceNode ) {
+ this.internalItem = focusedNode.getModel().getInternalItem();
+ doc = this.surface.getModel().getDocument();
+ data = doc.getStore(), doc.getData(
this.internalItem.getRange(), true );
+ } else {
+ data = [];
+ }
// Properties
this.referenceSurface = new ve.ui.Surface(
- // TODO: Move these details into something like
ve.dm.SurfaceFragment
- new ve.dm.ElementLinearData(
- doc.getStore(), doc.getData(
this.internalItem.getRange(), true )
- ),
- { '$$': this.frame.$$ }
+ new ve.dm.ElementLinearData( data ), { '$$': this.frame.$$ }
);
- this.referenceToolbar = new ve.ui.Toolbar(
- this.referenceSurface, { '$$': this.frame.$$ }
- );
+ this.referenceToolbar = new ve.ui.Toolbar( this.referenceSurface, {
'$$': this.frame.$$ } );
// Initialization
this.referenceToolbar.$.addClass( 've-ui-mwReferenceDialog-toolbar' );
@@ -92,23 +92,32 @@
* @param {string} action Action that caused the window to be closed
*/
ve.ui.MWReferenceDialog.prototype.onClose = function ( action ) {
- var tx,
- doc = this.surface.getModel().getDocument();
+ var data, doc,
+ txs = [];
// Parent method
ve.ui.Dialog.prototype.onOpen.call( this );
- // TODO: Make this actually work
+ // Save changes
if ( action === 'apply' ) {
- tx = ve.dm.Transaction.newFromNodeReplacement(
- doc,
- this.internalItem.getRange(),
- this.referenceSurface.getModel().getDocument().getData()
- );
- this.surface.getModel().change( tx );
+ data = this.referenceSurface.getModel().getDocument().getData();
+ doc = this.surface.getModel().getDocument();
+ if ( this.internalItem ) {
+ txs.push(
+ ve.dm.Transaction.newFromNodeReplacement(
+ doc, this.internalItem.getRange(), data
+ )
+ );
+ } else {
+ // TODO: Implement
+ // Insert new reference internal item at the end of the
current selection
+ // Insert new reference node that uses internal item
+ }
+ this.surface.getModel().change( txs );
}
// Cleanup
+ this.internalItem = null;
this.referenceSurface.destroy();
this.referenceToolbar.destroy();
};
--
To view, visit https://gerrit.wikimedia.org/r/67465
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I839ae165c299248484ce93d4ab087318a95fbb94
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Trevor Parscal <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits