MediaWiki:Edittools.js
Not: Yayımladıktan sonra değişiklikleri görmek için tarayıcınızın önbelleğini temizlemeniz gerekebilir.
- Firefox / Safari: Shift tuşuna basılıyken Yeniden Yükle'ye tıklayın ya da Ctrl-F5 ya da Ctrl-R tıklayın (Mac için ⌘-R).
- Google Chrome: Ctrl-Shift-R'ye basın. (Mac için ⌘-Shift-R)
- Internet Explorer / Edge: Ctrl basılıyken Yenile'ye tıklayın ya da Ctrl-F5 yapın.
- Opera: Ctrl-F5 tıklayın.
/*!
* EditTools support
*
* Add a selector, change into true buttons, enable for all text input fields
* If enabled in preferences, the script puts the buttons into the WikiEditor Toolbar
* The special characters to insert are defined at [[MediaWiki:Edittools]].
*/
// <nowiki>
/* global mediaWiki */
( function ( $, mw ) {
'use strict';
var EditTools;
mw.loader.load( '//commons.wikimedia.org/?title=MediaWiki:Edittools.css&action=raw&ctype=text/css', 'text/css' );
window.insertTags = function ( tagOpen, tagClose, sampleText ) {
var $txtarea = EditTools.getTextArea();
if ( $txtarea.length !== 1 ) { return; }
/* Usability initiative compatibility */
if ( typeof $.fn.textSelection !== 'undefined' ) {
$txtarea.textSelection( 'encapsulateSelection', {
pre: tagOpen,
peri: sampleText,
post: tagClose
} );
return;
}
};
window.EditTools = EditTools = {
createSelector: function () {
var $sel,
$spec = $( '#specialchars' ),
$sb = $( '#specialchars p.specialbasic' );
// Only care if there is more than one
if ( !$spec.length || $sb.length <= 1 ) { return; }
$sel = $( '<select>' );
$sel.change( function () {
EditTools.chooseCharSubset();
} );
$sb.each( function ( i ) {
var id = $( this ).attr( 'id' ).replace( /.([0-9A-F][0-9A-F])/g, '%$1' ).replace( /_/g, ' ' );
$sel.append(
$( '<option value="' + i + '"></option>' ).text( decodeURIComponent( id ) )
);
} );
$spec.prepend( $sel );
this.chooseCharSubset();
},
chooseCharSubset: function () {
var $sb = $( '#specialchars p.specialbasic' ),
id = $( '#specialchars select' ).val(),
$wanted = $sb.eq( id );
this.makeButtons( $wanted );
$sb.hide();
$wanted.css( 'display', 'inline' );
},
bindOnClick: function ( $button, self ) {
var onclick = self.getAttribute( 'onclick' );
// if onclick is not a function, it's not IE7, so use setAttribute
if ( typeof onclick !== 'function' ) {
$button[ 0 ].setAttribute( 'onclick', onclick ); // for FF,IE8,Chrome
// if onclick is a function, use the IE7 method and call onclick() in the anonymous function
} else {
$button[ 0 ].onclick = function () {
onclick();
}; // for IE7
}
},
makeButtons: function ( $wanted ) {
var $links = $wanted.find( 'a' ),
self = this;
$links.each( function () {
var $button = $( '<button type="button">' );
$button.text( $( this ).text() );
self.bindOnClick( $button, this );
$( this ).replaceWith( $button );
$( this ).blur();
} );
$wanted.contents().not( 'button' ).remove();
},
makeToolbarButtons: function () {
var $section, $links,
self = this;
// Add Edittool section
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
sections: {
Edittools: {
type: 'booklet',
label: 'Edittools',
pages: {
Edittools1: {
layout: 'characters',
label: 'Edittools2'
}
}
}
}
} );
$section = $( '.page-Edittools1 div' );
$links = $( '#specialchars p.specialbasic' ).eq( 0 ).find( 'a' );
$links.each( function () {
var $button = $( '<span>' );
$button.text( $( this ).text() );
self.bindOnClick( $button, this );
$section.append( $button );
} );
$( '.mw-editTools' ).remove();
},
// eslint-disable-next-line camelcase
last_active_textfield: null,
enableForAllFields: function () {
$( 'textarea, input' ).focus( function () {
// eslint-disable-next-line camelcase
EditTools.last_active_textfield = this.id;
} );
},
getTextArea: function () {
var $txtarea = {};
if ( EditTools.last_active_textfield !== null ) { $txtarea = $( '#' + EditTools.last_active_textfield ).eq( 0 ); }
if ( $txtarea.length !== 1 ) {
$txtarea = $( '#bodyContent textarea' ).eq( 0 );
}
return $txtarea;
},
registerTextField: function ( evt ) {
var e = evt || window.event,
node = e.target || e.srcElement;
if ( !node ) { return; }
// eslint-disable-next-line camelcase
EditTools.last_active_textfield = node.id;
return true;
},
setup: function () {
// Decide whether to use the toolbar or the bottom div
if ( window.oldEdittools || mw.user.options.get( 'gadget-OldEdittools' ) === '1' || $( '#wpUploadDescription' ).length || !$.wikiEditor ) {
EditTools.createSelector();
EditTools.enableForAllFields();
} else {
EditTools.makeToolbarButtons();
EditTools.enableForAllFields();
}
}
};
$( function () {
// Don't do anything if no edittools present.
if ( !$( '#specialchars' ).length ) { return; }
mw.loader.using( 'mediawiki.user', function () {
// Check user preferences
if ( mw.user.options.get( 'usebetatoolbar' ) === 1 && mw.user.options.get( 'gadget-OldEdittools' ) !== '1' ) {
mw.loader.using( [ 'ext.wikiEditor' ], EditTools.setup );
} else {
EditTools.setup();
}
} );
} );
}( jQuery, mediaWiki ) );
// </nowiki>