User:ערן/refToolbarVe.js

try{ /** * Adds dialog for selecting citation tempalte */ (function { /************* Configuration section *******************************************/	var DialogTitle = 'Select citation template';	//Configurate the most common citation templates and their parameters here	var CitationTemplates = {	'Cite Web ': { template: {			target: {				href: 'Template:cite web',				wt: 'cite web'			},			params: {				'first': {wt: },				'last': {wt: },				'title': {wt: },				'url': {wt: },				'publisher': {wt: },				'accessdate': {wt: }			}		}	},	'Cite news': { template: {			target: {				href: 'Template:cite news',				wt: 'cite news'			},			params: {				'first': {wt: },				'last': {wt: },				'title': {wt: },				'url': {wt: },				'accessdate': {wt: },				'newspaper': {wt: }			}		}	},	'Cite book': { template: {			target: {				href: 'Template:cite book',				wt: 'cite book'			},			params: {				'first': {wt: },				'last': {wt: }, 'date': {wt: ''}, 'publisher': {wt: ''}, 'location': {wt: ''}, 'isbn': {wt: ''}, 'page': {wt: ''}, 'url': {wt: ''} }		}	},	'Cite journal ': { template: { target: { href: 'Template:cite journal', wt: 'cite journal' },				params: { 'first': {wt: ''}, 'last': {wt: ''}, 'journal': {wt: ''}, 'date': {wt: ''}, 'volume': {wt: ''}, 'series': {wt: ''}, 'issue': {wt: ''}, 'page': {wt: ''}, 'doi': {wt: ''}, 'pmid': {wt: ''}, 'url': {wt: ''}, 'accessdate': {wt: ''} }			}		}	} /*************************** end of configuration section *********************/ ve.ui.VeUiMWCiteDialog = function VeUiMWCiteDialog( surface, config ) { // Configuration initialization config = ve.extendObject( { 'size': 'medium' }, config ); // Parent constructor ve.ui.MWReferenceDialog.call( this, surface, config ); this.followTransactions = false; }; /* Inheritance */ OO.inheritClass( ve.ui.VeUiMWCiteDialog, ve.ui.MWReferenceDialog ); /* Static Properties */ ve.ui.VeUiMWCiteDialog.static.name = 'Cite'; ve.ui.VeUiMWCiteDialog.static.title = DialogTitle; ve.ui.VeUiMWCiteDialog.prototype.initialize = function { ve.ui.MWReferenceDialog.prototype.initialize.call(this); // hide reference panel this.editPanel.$element.hide this.$foot.hide; this.templatesPanel = new OO.ui.PanelLayout( {		'$': this.$, 'scrollable': true, 'padded': true	} ); this.panels.addItems( [ this.templatesPanel ] ); var buttons = []; for (var buttonName in CitationTemplates) { var button = new OO.ui.ButtonWidget( {			'$': this.$,			'label': buttonName,		} ); button.connect( this, { 'click': [ 'citeWeb', CitationTemplates[buttonName] ] } ); button.$element.css('margin', '5px'); buttons.push(button.$element); }	this.templatesPanel.$element.append(buttons).show; } ve.ui.VeUiMWCiteDialog.prototype.useReference = function ( ref ) { this.followTransactions = false; ve.ui.MWReferenceDialog.prototype.useReference.call(this, ref); } ve.ui.VeUiMWCiteDialog.prototype.citeWeb = function( emptyTemplate ){ this.referenceSurface.getSurface.getModel.getFragment.collapseRangeToEnd.insertContent([{'type': 'mwTransclusionInline','attributes': {'mw': 	{		parts: [ emptyTemplate ]	}}}]); this.followTransactions = true; this.referenceSurface.getSurface.execute('window', 'open', 'transclusion', null); var self = this; this.referenceSurface.getSurface.getDialogs.getWindow('transclusion').on(		'close',function (data){			if (data.action=='cancel')			{				self.close({ 'action': 'cancel' });			}		}); } ve.ui.VeUiMWCiteDialog.prototype.onDocumentTransact = function { if (!this.followTransactions) return; var data = this.referenceSurface.getSurface.getModel.getDocument.getFullData; for ( var j=0; j<data.length; j++ ) {		var node = data[j]; if (node.type === "mwTransclusionInline" && node.hasOwnProperty( 'attributes' ) ) {			// remove empty parameters from template var params = node.attributes.mw.parts[0].template.params; var emptyParams = []; for ( var paramName in params ) { if ( params[paramName].hasOwnProperty( 'wt' ) && params[paramName].wt.length === 0 ){ emptyParams.push(paramName); }			}			for (var i=0; i<emptyParams.length; i++) { delete params[emptyParams[i]]; }			// end of removing empty parameters this.close( { 'action': 'insert' } ); }	} }; /* Registration */ ve.ui.windowFactory.register( ve.ui.VeUiMWCiteDialog ); function CiteTool( toolGroup, config ) { OO.ui.Tool.call( this, toolGroup, config ); } OO.inheritClass( CiteTool, OO.ui.Tool ); CiteTool.static.name = 'CiteTool'; CiteTool.static.title = 'Cite' CiteTool.prototype.onSelect = function { this.toolbar.getSurface.execute('window', 'open', 'Cite', null); }; CiteTool.prototype.onUpdateState = function { this.setActive( false ); }; ve.ui.toolFactory.register( CiteTool ); }); } catch(e){ console.log('Please use built-in citation tool. '); }