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 13: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>