Diferencia entre revisiones de «MediaWiki:Gadget-Versalitas.js»

De EIFA - Estudios Interdisciplinares de las Fuentes Avilistas
Etiqueta: Revertido
Línea 7: Línea 7:
var model = surface.getModel(),
var model = surface.getModel(),
fragment = model.getFragment(),
fragment = model.getFragment(),
doc = model.getDocument(),
range = fragment.getSelection().getRange();
range = fragment.getSelection().getRange();


// Obtener el contenido seleccionado
// Si no hay selección, no hacer nada
var selectedContent = doc.getData( range );
if ( range.isCollapsed() ) {
return;
// Crear el contenido para {{versal}}
}
var versalStart = [
 
// Insertar {{versal}} al inicio
fragment.collapseToStart().insertContent([
{
{
type: 'mwTransclusionInline',
type: 'mwTransclusionInline',
Línea 34: Línea 35:
type: '/mwTransclusionInline'
type: '/mwTransclusionInline'
}
}
];
]);


// Crear el contenido para {{fin}}
// Moverse al final de la selección original (ahora desplazada) e insertar {{fin}}
var versalEnd = [
var newRange = fragment.getSelection().getRange();
var endOffset = newRange.end + (range.end - range.start);
fragment.select( new ve.Range( endOffset, endOffset ) ).insertContent([
{
{
type: 'mwTransclusionInline',
type: 'mwTransclusionInline',
Línea 57: Línea 61:
type: '/mwTransclusionInline'
type: '/mwTransclusionInline'
}
}
];
]);
 
// Combinar todo: {{versal}} + contenido seleccionado + {{fin}}
var newContent = versalStart.concat( selectedContent ).concat( versalEnd );
 
// Reemplazar el contenido seleccionado
fragment.insertContent( newContent );
};
};



Revisión del 19:27 29 jun 2025

ve.ui.VersalitasCommand = function VeUiVersalitasCommand() {
	ve.ui.VersalitasCommand.super.call(	this, 'Versalitas' );
};
OO.inheritClass( ve.ui.VersalitasCommand, ve.ui.Command );

ve.ui.VersalitasCommand.prototype.execute = function ( surface ) {
	var model = surface.getModel(),
		fragment = model.getFragment(),
		range = fragment.getSelection().getRange();

	// Si no hay selección, no hacer nada
	if ( range.isCollapsed() ) {
		return;
	}

	// Insertar {{versal}} al inicio
	fragment.collapseToStart().insertContent([
		{
			type: 'mwTransclusionInline',
			attributes: {
				mw: {
					parts: [{
						template: {
							target: {
								href: 'Template:Versal',
								wt: 'versal'
							},
							params: {}
						}
					}]
				}
			}
		},
		{
			type: '/mwTransclusionInline'
		}
	]);

	// Moverse al final de la selección original (ahora desplazada) e insertar {{fin}}
	var newRange = fragment.getSelection().getRange();
	var endOffset = newRange.end + (range.end - range.start);
	
	fragment.select( new ve.Range( endOffset, endOffset ) ).insertContent([
		{
			type: 'mwTransclusionInline',
			attributes: {
				mw: {
					parts: [{
						template: {
							target: {
								href: 'Template:Fin',
								wt: 'fin'
							},
							params: {}
						}
					}]
				}
			}
		},
		{
			type: '/mwTransclusionInline'
		}
	]);
};

ve.ui.commandRegistry.register( new ve.ui.VersalitasCommand() );

ve.ui.VersalitasTool = function VeUiVersalitasTool() {
	ve.ui.VersalitasTool.super.apply( this, arguments );
};
OO.inheritClass( ve.ui.VersalitasTool, ve.ui.Tool );
ve.ui.VersalitasTool.static.name = 'Versalitas';
ve.ui.VersalitasTool.static.group = 'textStyle';
ve.ui.VersalitasTool.static.icon = 'largerText';
ve.ui.VersalitasTool.static.title = 'Versalitas';
ve.ui.VersalitasTool.static.commandName = 'Versalitas';
ve.ui.toolFactory.register( ve.ui.VersalitasTool );