Difference between revisions of "MediaWiki:Edittools"

From Securipedia
Jump to navigation Jump to search
(Created page with "// <source lang="javascript"> /* EditTools support: add a selector, change into true buttons, enable for all text input fields If enabled in preferences, the script puts t...")
 
 
(52 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<!--//<div id="mw-edittools-charinsert" class="mw-charinsert-buttons" title="Click on the wanted special character.">
// <source lang="javascript">
<p class="mw-edittools-section" data-section-title="Wiki-Syntax" style="display: none;"> -->
/*

EditTools support: add a selector, change into true buttons, enable for all text input fields
<div id="mw-edittools-charinsert" class="mw-charinsert-buttons" title="Click on the wanted special character.">
If enabled in preferences, the script puts the buttons into the WikiEditor Toolbar
<div class="mw-edittools-section" data-section-title="Category">
The special characters to insert are defined at [[MediaWiki:Edittools]].
Functions: <charinsert>[[Category:Economic]]+</charinsert>
*/
<charinsert>[[Category:Mobility]]+</charinsert>
<charinsert>[[Category:Safety]]+</charinsert>
/*jshint curly:false */
<charinsert>[[Category:Social]]+</charinsert>
/*global importStylesheetURI:false, jQuery:false, mediaWiki:false */

Issues: <charinsert>[[Category:Ethical]]+</charinsert>
(function($, mw) {
<charinsert>[[Category:Legal]]+</charinsert>
"use strict";

var EditTools, insertTags;
Measures: <charinsert>[[Category:Measure]]+</charinsert>

importStylesheetURI('//commons.wikimedia.org/?title=MediaWiki:Edittools.css&action=raw&ctype=text/css');
Threats: <charinsert>[[Category:Threat]]+</charinsert>
window.insertTags = insertTags = function(tagOpen, tagClose, sampleText) {

var $txtarea = EditTools.getTextArea();
Objects: <charinsert>[[Category:<nowiki>Urban environment</nowiki>]]+</charinsert>
if ($txtarea.length !== 1) return;
<charinsert>[[Category:<nowiki>Urban object</nowiki>]]+</charinsert>
</div>
/* Usability initiative compatibility */

if (typeof $.fn.textSelection !== 'undefined') {
<div class="mw-edittools-section" data-section-title="Relation" style="display: none;">
$txtarea.textSelection('encapsulateSelection', {
Equality: <charinsert>[[<nowiki>is synonymous to</nowiki>::+]]</charinsert>
'pre': tagOpen,
<charinsert>[[<nowiki>is the opposite of</nowiki>::+]]</charinsert>
'peri': sampleText,

'post': tagClose
Logical part of: <charinsert>[[<nowiki>comprises</nowiki>::+]]</charinsert>
});
<charinsert>[[<nowiki>belongs to</nowiki>::+]]</charinsert>
return;

}
Physical part of: <charinsert>[[<nowiki>is part of</nowiki>::+]]</charinsert>
};
<charinsert>[[<nowiki>contains</nowiki>::+]]</charinsert>
window.EditTools = EditTools = {

createSelector: function() {
Way to do: <charinsert>[[<nowiki>is a way to</nowiki>::+]]</charinsert>
var $spec = $('#specialchars');
<charinsert>[[<nowiki>can be done by</nowiki>::+]]</charinsert>
var $sb = $('#specialchars p.specialbasic');

Cause: <charinsert>[[<nowiki>causes</nowiki>::+]]</charinsert>
// Only care if there is more than one
<charinsert>[[<nowiki>is caused by</nowiki>::+]]</charinsert>
if (!$spec.length || $sb.length <= 1) return;

Related reactions: <charinsert>[[<nowiki>correlates to</nowiki>::+]]</charinsert>
var $sel = $('<select>');

Wants to: <charinsert>[[<nowiki>strives towards</nowiki>::+]]</charinsert>
$sel.change(function() {
<charinsert>[[<nowiki>is goal for</nowiki>::+]]</charinsert>
EditTools.chooseCharSubset();

});
Sub /superconcept: <charinsert>[[<nowiki>is an attribute of</nowiki>::+]]</charinsert>
<charinsert>[[<nowiki>has attribute</nowiki>::+]]</charinsert>
$sb.each(function(i) {
</div>
var id = $(this).attr('id').replace(/.([0-9A-F][0-9A-F])/g, '%$1').replace(/_/g, ' ');
</div>
$sel.append('<option value=' + i + '>' + decodeURIComponent(id) + '</option>');
});
$spec.prepend($sel);
this.chooseCharSubset();
},
chooseCharSubset: function() {
var $sb = $('#specialchars p.specialbasic');
var id = $('#specialchars select').val();
var $wanted = $sb.eq(id);
this.makeButtons($wanted);
$sb.hide();
$wanted.css('display', 'inline');
},
bindOnClick: function($button, _this) {
var onclick = _this.getAttribute("onclick");
// if onclick is not a function, it's not IE7, so use setAttribute
if ('function' !== typeof onclick) {
$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');
var _this = this;
$links.each(function() {
var $button = $('<button type="button">');
$button.text($(this).text());
_this.bindOnClick($button, this);
$(this).replaceWith($button);
$(this).blur();
});
$wanted.contents().not('button').remove();
},
makeToolbarButtons: function() {
var _this = this;
// Add Edittool section
$('#wpTextbox1').wikiEditor('addToToolbar', {
'sections': {
'Edittools': {
'type': 'booklet',
'label': 'Edittools',
'pages': {
'Edittools1': {
'layout': 'characters',
'label': 'Edittools2'
}
}
}
}
});
var $section = $('.page-Edittools1 div');
var $links = $('#specialchars p.specialbasic').eq(0).find('a');
$links.each(function() {
var $button = $('<span>');
$button.text($(this).text());
_this.bindOnClick($button, this);
$section.append($button);
});
$('.mw-editTools').remove();
},
last_active_textfield: null,
enableForAllFields: function() {
$('textarea, input').focus(function() {
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;
var node = e.target || e.srcElement;
if (!node) return;
EditTools.last_active_textfield = node.id;
return true;
},
setup: function() {
//Decide whether to use the toolbar or the bottom div
if (window.oldEdittools || "1" === mw.user.options.get('gadget-OldEdittools') || $('#wpUploadDescription').length || !$.wikiEditor || !$.wikiEditor.isSupported()) {
EditTools.createSelector();
EditTools.enableForAllFields();
} else {
EditTools.makeToolbarButtons();
EditTools.enableForAllFields();
}
}
};
$(document).ready(function() {
// Don't do anything if no edittools present.
if ($('#specialchars').length !== 1) return;
mw.loader.using('mediawiki.user', function() {
// Check user preferences
if (1 === mw.user.options.get('usebetatoolbar') && "1" !== mw.user.options.get('gadget-OldEdittools')) {
mw.loader.using(['ext.wikiEditor.toolbar', 'jquery.wikiEditor.toolbar'], EditTools.setup);
} else {
EditTools.setup();
}
});
});
// </source>
}(jQuery, mediaWiki));

Latest revision as of 11:46, 23 July 2012


Functions: <charinsert>+</charinsert> <charinsert>+</charinsert> <charinsert>+</charinsert> <charinsert>+</charinsert>

Issues: <charinsert>+</charinsert> <charinsert>+</charinsert>

Measures: <charinsert>+</charinsert>

Threats: <charinsert>+</charinsert>

Objects: <charinsert>[[Category:Urban environment]]+</charinsert> <charinsert>[[Category:Urban object]]+</charinsert>