|
|
Línea 1: |
Línea 1: |
| /**
| | function makeMyTool() { |
| * Adds dialog for selecting citation tempalte.
| |
| * Written by: [[User:ערן]] and [[User:Ravid ziv]]
| |
| */
| |
| (function () {
| |
|
| |
|
| /************* Configuration section *******************************************/ | | //Create and register command |
| | var inicio = '<span style="font-variant:small-caps">'; |
|
| |
|
| var DialogTitle = 'Select citation template'; | | ve.ui.commandRegistry.register( |
| //Configurate the most common citation templates and their parameters here
| | new ve.ui.Command( 'mycommand', 'content', 'insert', { |
| var CitationTemplates = {
| | args: [ inicio, false, true ], |
| 'Cite Web ': { template: {
| | supportedSelections: [ 'linear' ] |
| target: {
| | } ) |
| href: 'Template:cite web',
| | ); |
| wt: 'cite web'
| | |
| },
| | //Create and register wikitext command |
| params: {
| | if ( ve.ui.wikitextCommandRegistry ) { |
| 'first': {wt: ''},
| | ve.ui.wikitextCommandRegistry.register( |
| 'last': {wt: ''},
| | new ve.ui.Command( 'mycommand', 'mwWikitext', 'wrapSelection', { |
| 'title': {wt: ''},
| | args: [ '{{MyTemplate|', '}}', 'my parameter' ], |
| 'url': {wt: ''},
| | supportedSelections: [ 'linear' ] |
| '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: ''},
| |
| 'coauthors': {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 *********************/ | | //Create and register tool |
| ve.ui.VeUiMWCiteDialog = function VeUiMWCiteDialog( surface, config ) {
| | function MyTool() { |
| // Configuration initialization
| | MyTool.parent.apply( this, arguments ); |
| config = ve.extendObject( { 'size': 'medium' }, config );
| | } |
| // Parent constructor
| | OO.inheritClass( MyTool, ve.ui.MWTransclusionDialogTool ); |
| 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( { | | MyTool.static.name = 'mytool'; |
| '$': this.$, 'scrollable': true, 'padded': true
| | MyTool.static.group = 'textStyle'; |
| } );
| | MyTool.static.title = 'My tool'; |
| | | MyTool.static.commandName = 'mycommand'; |
| this.panels.addItems( [ this.templatesPanel ] ); | | ve.ui.toolFactory.register( MyTool ); |
| | |
| var buttons = [];
| |
| for (var buttonName in CitationTemplates) { | |
| var button = new OO.ui.ButtonWidget( {
| |
| '$': this.$,
| |
| 'label': buttonName,
| |
| } );
| |
| button.connect( this, { 'click': [ 'citeWeb', CitationTemplates[buttonName] ] } );
| |
| buttons.push(button.$element);
| |
| } | |
| this.templatesPanel.$element.append(buttons).show();
| |
|
| |
|
| } | | } |
|
| |
|
| ve.ui.VeUiMWCiteDialog.prototype.useReference = function ( ref ) {
| | // Initialize |
| | | mw.hook( 've.loadModules' ).add( function( addPlugin ) { |
| this.followTransactions = false;
| | addPlugin( makeMyTool ); |
| 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('dialog', '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') )
| |
| {
| |
| var params = node.attributes.mw.parts[0].template.params;
| |
| this.close( { 'action': 'insert' } );
| |
| }
| |
| }
| |
| };
| |
|
| |
| /* Registration */
| |
|
| |
| ve.ui.dialogFactory.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('dialog', 'open', 'Cite', null);
| |
| };
| |
|
| |
| CiteTool.prototype.onUpdateState = function () {
| |
| this.setActive( false );
| |
| };
| |
|
| |
| ve.ui.toolFactory.register( CiteTool );
| |
|
| |
| })(); | |