Draft/MediaWiki:Common.js
/* Any JavaScript here will be loaded for all users on every page load. */ mw.loader.load( '/dev/index.php?title=MediaWiki:Common.js/BootstrapMultiselect.js&action=raw&ctype=text/javascript' );
function setupCollapseToggle() {
$('.collapse-toggle').click(function(){ $(this).toggleClass('fa-chevron-down'); $(this).toggleClass('fa-chevron-up'); $(this).parent().find(".collapse").collapse('toggle'); });
}
function setupCodeMirrorXML() {
$.getScript("/dev/extensions/CodeMirror/resources/lib/codemirror/mode/javascript/javascript.js"), $.getScript("/dev/extensions/CodeMirror/resources/lib/codemirror/mode/xml/xml.js").done(function() {
var codeMirror = $(".CodeMirrorXML")[0]; var editor = CodeMirror.fromTextArea(codeMirror, { lineNumbers: true, mode: "xml", autoCloseTags: true, lineWrapping:true });
});
}
/**/ function readMoreOverflowControl() { var getElements = document.querySelectorAll('.collapse-text'); Array.from(getElements).forEach(function(element) { if (element.scrollHeight >= 100 ) { // Do Nothing } else { $(element).next().find(".collapse-btn").hide(); } }); }
/* Lazy loading */ var callback = function(entries, observer) {
entries.forEach(function(entry){ if (entry.isIntersecting) { var tofetch = entry.target.getAttribute('data-fetch'); var params = { action: 'parse', text: tofetch, contentmodel: 'wikitext', format: 'json' }, api = new mw.Api(); api.post( params ).done( function ( data ) { console.log(data.parse.text['*']); entry.target.innerHTML = data.parse.text['*']; observer.unobserve(entry.target); } ) .fail( function (data){ console.log('fail', data); entry.target.innerHTML = data+' error'; }); } });
};
var options = {
root: document, rootMargin: '0px', threshold: 1.0
};
var observer = new IntersectionObserver(callback, options); $('document').ready(function(){
document.querySelectorAll('[data-fetch]').forEach(function(target){ observer.observe(target); });
});
/***** WSForm: loading Select2 ****/
if ($('select[data-inputtype="ws-select2"]')[0]) { mw.loader.load('/dev/extensions/WSForm/select2.min.css', 'text/css'); $.getScript('/dev/extensions/WSForm/select2.min.js').done(function() { $('select[data-inputtype="ws-select2"]').each(function() { var selectid = $(this).attr('id'); var selectoptionsid = 'select2options-' + selectid; var select2config = $("input#" + selectoptionsid).val(); var F = new Function(select2config); return (F()); }); }); }
/* Enable Select2 for WSForm
$(function() { setSelect2(); }); window.setSelect2 = function() { // Select2 if ($('select[data-inputtype="ws-select2"]')[0]) {
mw.loader.using('ws.wsform.select2').then(function(script, textStatus) { $('select[data-inputtype="ws-select2"]').each(function() { var selectid = $(this).attr('id'); var selectoptionsid = 'select2options-' + selectid; var select2config = $("input#" + selectoptionsid).val(); var F = new Function(select2config); return (F()); }); }); }
};
- /
/* compare function attachTokens() { if ($('select[data-inputtype="ws-select2"]')[0]) { mw.loader.load('/dev/extensions/WSForm/select2.min.css', 'text/css'); $.getScript('/dev/extensions/WSForm/select2.min.js').done(function() { $('select[data-inputtype="ws-select2"]').each(function() { var selectid = $(this).attr('id'); var selectoptionsid = 'select2options-' + selectid; var select2config = $("input#" + selectoptionsid).val(); var F = new Function(select2config); return (F()); }); }); } }
- /
function setupContentEditable() { $('[contenteditable]').on('paste', function(e) { var $self = $(this); setTimeout(function() { $self.html($self.text()); }, 0); }).on('keypress', function(e) { return e.which != 13; }); }
/* */ $(document).ready(function() {
if ($("select.multiselect")[0]) { $.when( mw.loader.load( '/dev/index.php?title=MediaWiki:Common.js/BootstrapMultiselect.js&action=raw&ctype=text/javascript' ) ).done(function() { setupBootstrapMultiselect(); }); }
/* if ($(".CodeMirrorXML")[0]) { $.when( $.getScript("https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"), $.getScript("https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"), mw.loader.load( 'https://www.vanhamel.nl/dev/extensions/CodeMirror/resources/lib/codemirror/lib/codemirror.css', 'text/css' ), $.getScript("https://www.vanhamel.nl/dev/extensions/CodeMirror/resources/lib/codemirror/lib/codemirror.js") ).then(function() { setupCodeMirrorXML(); }, function(e) { mw.notify( 'Whoops!' ); mw.log.error( e.message ); } ); } */
setupContentEditable();
if ($(".collapse-text")[0]) { readMoreOverflowControl(); }
if ($(".collapse-toggle")[0]) { setupCollapseToggle(); }
/* if ($("#cropper-image")[0]) {
setupCropper();
} */
});